From 3e2dc4bcb6feabbd45130eab8685c990743879a0 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Tue, 4 Nov 2025 16:37:24 +0800 Subject: [PATCH 01/47] 1 --- CustomKeyboard/View/KBFullAccessGuideView.m | 14 ++---- CustomKeyboard/View/KBFunctionView.m | 21 +++------ CustomKeyboard/View/KBKeyboardView.m | 49 +++++++++++++++++++++ CustomKeyboard/View/KBResponderUtils.h | 28 ++++++++++++ keyBoard.xcodeproj/project.pbxproj | 2 + keyBoard/keyBoard.entitlements | 4 ++ 6 files changed, 92 insertions(+), 26 deletions(-) create mode 100644 CustomKeyboard/View/KBResponderUtils.h diff --git a/CustomKeyboard/View/KBFullAccessGuideView.m b/CustomKeyboard/View/KBFullAccessGuideView.m index 6b7b49e..4ad0c5a 100644 --- a/CustomKeyboard/View/KBFullAccessGuideView.m +++ b/CustomKeyboard/View/KBFullAccessGuideView.m @@ -5,6 +5,7 @@ #import "KBFullAccessGuideView.h" #import "Masonry.h" +#import "KBResponderUtils.h" // 统一查找 UIInputViewController 的工具 @interface KBFullAccessGuideView () @property (nonatomic, strong) UIControl *backdrop; @@ -146,21 +147,12 @@ #pragma mark - Actions -- (UIInputViewController *)kb_findInputController { - UIResponder *res = self; - while (res) { - if ([res isKindOfClass:[UIInputViewController class]]) { - return (UIInputViewController *)res; - } - res = res.nextResponder; - } - return nil; -} +// 工具方法已提取到 KBResponderUtils.h - (void)onTapGoEnable { // 在扩展中无法使用 UIApplication。改为委托宿主打开链接: // 方案:优先拉起主 App 并由主 App 打开设置页,避免宿主拦截。 - UIInputViewController *ivc = [self kb_findInputController]; + UIInputViewController *ivc = KBFindInputViewController(self); if (!ivc) { [self dismiss]; return; } // 先尝试 Universal Link(如未配置可改为你的域名),失败再用自定义 scheme。 diff --git a/CustomKeyboard/View/KBFunctionView.m b/CustomKeyboard/View/KBFunctionView.m index 08c11f1..520ba9c 100644 --- a/CustomKeyboard/View/KBFunctionView.m +++ b/CustomKeyboard/View/KBFunctionView.m @@ -6,6 +6,7 @@ // #import "KBFunctionView.h" +#import "KBResponderUtils.h" // 统一查找 UIInputViewController 的工具 #import "KBFunctionBarView.h" #import "KBFunctionPasteView.h" #import "KBFunctionTagCell.h" @@ -169,7 +170,7 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; [KBHUD showInfo:@"处理中…"]; // return; - UIInputViewController *ivc = [self findInputViewController]; + UIInputViewController *ivc = KBFindInputViewController(self); if (!ivc) return; NSString *title = (indexPath.item < self.itemsInternal.count) ? self.itemsInternal[indexPath.item] : @""; @@ -268,14 +269,14 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; } - (void)onTapDelete { NSLog(@"点击:删除"); - UIInputViewController *ivc = [self findInputViewController]; + UIInputViewController *ivc = KBFindInputViewController(self); id proxy = ivc.textDocumentProxy; [proxy deleteBackward]; } - (void)onTapClear { NSLog(@"点击:清空"); // 连续删除:仅清空光标之前的输入(不改动 pasteView 的内容) - UIInputViewController *ivc = [self findInputViewController]; + UIInputViewController *ivc = KBFindInputViewController(self); id proxy = ivc.textDocumentProxy; // 逐批读取 documentContextBeforeInput 并删除,避免 50 字符窗口限制带来的残留 NSInteger guard = 0; // 上限保护,避免极端情况下长时间阻塞 @@ -292,7 +293,7 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; - (void)onTapSend { NSLog(@"点击:发送"); // 发送:插入换行。大多数聊天类 App 会把回车视为“发送” - UIInputViewController *ivc = [self findInputViewController]; + UIInputViewController *ivc = KBFindInputViewController(self); id proxy = ivc.textDocumentProxy; [proxy insertText:@"\n"]; } @@ -417,16 +418,6 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; #pragma mark - Find Owner Controller -// 在视图的响应链中查找宿主 UIInputViewController(KeyboardViewController) -- (UIInputViewController *)findInputViewController { - UIResponder *responder = self; - while (responder) { - if ([responder isKindOfClass:[UIInputViewController class]]) { - return (UIInputViewController *)responder; - } - responder = responder.nextResponder; - } - return nil; -} +// 工具方法已提取到 KBResponderUtils.h @end diff --git a/CustomKeyboard/View/KBKeyboardView.m b/CustomKeyboard/View/KBKeyboardView.m index 3ab30ec..bc1c48f 100644 --- a/CustomKeyboard/View/KBKeyboardView.m +++ b/CustomKeyboard/View/KBKeyboardView.m @@ -6,6 +6,7 @@ #import "KBKeyboardView.h" #import "KBKeyButton.h" #import "KBKey.h" +#import "KBResponderUtils.h" // 封装的响应链工具 @interface KBKeyboardView () @property (nonatomic, strong) UIView *row1; @@ -13,6 +14,8 @@ @property (nonatomic, strong) UIView *row3; @property (nonatomic, strong) UIView *row4; @property (nonatomic, strong) NSArray *> *keysForRows; +// 长按退格的一次次删除控制标记(不使用 NSTimer,仅用 GCD 递归调度) +@property (nonatomic, assign) BOOL backspaceHoldActive; @end @implementation KBKeyboardView @@ -196,6 +199,16 @@ [btn addTarget:self action:@selector(onKeyTapped:) forControlEvents:UIControlEventTouchUpInside]; [row addSubview:btn]; + // ⌫ 长按:开始连续逐个删除(无需 NSTimer)。使用 UILongPressGestureRecognizer 识别长按, + // 在开始态触发递归的轻量调度,每次删除 1 个字符,直到松手或无内容。 + if (key.type == KBKeyTypeBackspace) { + UILongPressGestureRecognizer *lp = [[UILongPressGestureRecognizer alloc] initWithTarget:self action:@selector(onBackspaceLongPress:)]; + // 稍短的判定时间,提升响应(默认约 0.5s)。 + lp.minimumPressDuration = 0.35; + lp.cancelsTouchesInView = YES; // 被识别为长按时,取消普通点击 + [btn addGestureRecognizer:lp]; + } + // Shift 按钮选中态随大小写状态变化 if (key.type == KBKeyTypeShift) { btn.selected = self.shiftOn; @@ -293,6 +306,42 @@ } } +// 长按退格:按住时以小间隔逐个删除;松手停止。(不使用 NSTimer/DisplayLink) +- (void)onBackspaceLongPress:(UILongPressGestureRecognizer *)gr { + switch (gr.state) { + case UIGestureRecognizerStateBegan: { + self.backspaceHoldActive = YES; + [self kb_backspaceStep]; + } break; + case UIGestureRecognizerStateEnded: + case UIGestureRecognizerStateCancelled: + case UIGestureRecognizerStateFailed: { + self.backspaceHoldActive = NO; + } break; + default: break; + } +} + +#pragma mark - Helpers + +// 单步删除并在需要时安排下一次,直到松手或无内容 +- (void)kb_backspaceStep { + if (!self.backspaceHoldActive) { return; } + UIInputViewController *ivc = KBFindInputViewController(self); + if (!ivc) { self.backspaceHoldActive = NO; return; } + id proxy = ivc.textDocumentProxy; + NSString *before = proxy.documentContextBeforeInput ?: @""; + if (before.length <= 0) { self.backspaceHoldActive = NO; return; } + [proxy deleteBackward]; // 每次仅删 1 个 + + // 轻量递归调度下一次;不使用 NSTimer,避免复杂状态管理 + __weak typeof(self) weakSelf = self; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(0.06 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + __strong typeof(weakSelf) selfStrong = weakSelf; + [selfStrong kb_backspaceStep]; + }); +} + #pragma mark - Lazy - (UIView *)row1 { if (!_row1) _row1 = [UIView new]; return _row1; } diff --git a/CustomKeyboard/View/KBResponderUtils.h b/CustomKeyboard/View/KBResponderUtils.h new file mode 100644 index 0000000..802b1b2 --- /dev/null +++ b/CustomKeyboard/View/KBResponderUtils.h @@ -0,0 +1,28 @@ +// +// KBResponderUtils.h +// CustomKeyboard +// +// 统一封装:从任意 UIView/UIResponder 起,向响应链上查找 UIInputViewController。 +// 作为 header‑only 的工具,便于多处直接引入使用。 +// + +#import + +#ifndef KBResponderUtils_h +#define KBResponderUtils_h + +/// 从给定 responder 开始,沿响应链查找宿主 UIInputViewController。 +/// 用法:UIInputViewController *ivc = KBFindInputViewController(self); +static inline UIInputViewController *KBFindInputViewController(UIResponder *start) { + UIResponder *responder = start; + while (responder) { + if ([responder isKindOfClass:[UIInputViewController class]]) { + return (UIInputViewController *)responder; + } + responder = responder.nextResponder; + } + return nil; +} + +#endif /* KBResponderUtils_h */ + diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 3cd45b9..71ca812 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -87,6 +87,7 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; 04A9FE142EB873C80020DB6D /* UIViewController+Extension.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIViewController+Extension.h"; sourceTree = ""; }; @@ -266,6 +267,7 @@ children = ( 04C6EADB2EAF8CEB0089C901 /* KBToolBar.h */, 04C6EADC2EAF8CEB0089C901 /* KBToolBar.m */, + 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */, 04FC95682EB05497007BD342 /* KBKeyButton.h */, 04FC95692EB05497007BD342 /* KBKeyButton.m */, 04FC956B2EB054B7007BD342 /* KBKeyboardView.h */, diff --git a/keyBoard/keyBoard.entitlements b/keyBoard/keyBoard.entitlements index 34d0a44..eabbbc8 100644 --- a/keyBoard/keyBoard.entitlements +++ b/keyBoard/keyBoard.entitlements @@ -6,6 +6,10 @@ Default + com.apple.developer.associated-domains + + applinks:app.tknb.net + keychain-access-groups $(AppIdentifierPrefix)com.loveKey.nyx.shared From f43f94b94dca0615d5b86c23abd9e990e66b0237 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Tue, 4 Nov 2025 21:01:46 +0800 Subject: [PATCH 02/47] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E9=94=AE=E7=9B=98?= =?UTF-8?q?=E8=83=8C=E6=99=AF?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CustomKeyboard/KeyboardViewController.m | 49 ++++++ CustomKeyboard/View/KBFunctionView.h | 3 + CustomKeyboard/View/KBFunctionView.m | 14 +- CustomKeyboard/View/KBKeyBoardMainView.h | 3 + CustomKeyboard/View/KBKeyBoardMainView.m | 19 +- CustomKeyboard/View/KBKeyButton.m | 15 +- CustomKeyboard/View/KBKeyboardView.m | 3 +- Shared/KBSkinManager.h | 58 ++++++ Shared/KBSkinManager.m | 214 +++++++++++++++++++++++ keyBoard.xcodeproj/project.pbxproj | 14 ++ keyBoard/Class/Home/VC/HomeVC.m | 8 +- keyBoard/Class/Home/VC/KBSkinCenterVC.h | 11 ++ keyBoard/Class/Home/VC/KBSkinCenterVC.m | 132 ++++++++++++++ 13 files changed, 528 insertions(+), 15 deletions(-) create mode 100644 Shared/KBSkinManager.h create mode 100644 Shared/KBSkinManager.m create mode 100644 keyBoard/Class/Home/VC/KBSkinCenterVC.h create mode 100644 keyBoard/Class/Home/VC/KBSkinCenterVC.m diff --git a/CustomKeyboard/KeyboardViewController.m b/CustomKeyboard/KeyboardViewController.m index 320d2bf..aa3670d 100644 --- a/CustomKeyboard/KeyboardViewController.m +++ b/CustomKeyboard/KeyboardViewController.m @@ -14,6 +14,7 @@ #import "Masonry.h" #import "KBAuthManager.h" #import "KBFullAccessManager.h" +#import "KBSkinManager.h" static CGFloat KEYBOARDHEIGHT = 256 + 20; @@ -22,6 +23,7 @@ static CGFloat KEYBOARDHEIGHT = 256 + 20; @property (nonatomic, strong) KBKeyBoardMainView *keyBoardMainView; // 功能面板视图(点击工具栏第0个时显示) @property (nonatomic, strong) KBFunctionView *functionView; // 功能面板视图(点击工具栏第0个时显示) @property (nonatomic, strong) KBSettingView *settingView; // 设置页 +@property (nonatomic, strong) UIImageView *bgImageView; // 背景图(在底层) @end @implementation KeyboardViewController @@ -40,12 +42,23 @@ static CGFloat KEYBOARDHEIGHT = 256 + 20; __unused id token = [[NSNotificationCenter defaultCenter] addObserverForName:KBFullAccessChangedNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(__unused NSNotification * _Nonnull note) { // 如需,可在此刷新与完全访问相关的 UI }]; + + // 皮肤变化时,立即应用 + __unused id token2 = [[NSNotificationCenter defaultCenter] addObserverForName:KBSkinDidChangeNotification object:nil queue:[NSOperationQueue mainQueue] usingBlock:^(__unused NSNotification * _Nonnull note) { + [self kb_applyTheme]; + }]; + [self kb_applyTheme]; } - (void)setupUI { // 固定键盘整体高度 [self.view.heightAnchor constraintEqualToConstant:KEYBOARDHEIGHT].active = YES; + // 背景图铺底 + [self.view addSubview:self.bgImageView]; + [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; // 预置功能面板(默认隐藏),与键盘区域共享相同布局 self.functionView.hidden = YES; [self.view addSubview:self.functionView]; @@ -217,4 +230,40 @@ static CGFloat KEYBOARDHEIGHT = 256 + 20; __unused typeof(weakSelf) selfStrong = weakSelf; }]; } + +#pragma mark - Theme + +- (void)kb_applyTheme { + KBSkinTheme *t = [KBSkinManager shared].current; + UIImage *img = [[KBSkinManager shared] currentBackgroundImage]; + self.bgImageView.image = img; + BOOL hasImg = (img != nil); + self.view.backgroundColor = hasImg ? [UIColor clearColor] : t.keyboardBackground; + self.keyBoardMainView.backgroundColor = hasImg ? [UIColor clearColor] : t.keyboardBackground; + // 触发键区按主题重绘 + if ([self.keyBoardMainView respondsToSelector:@selector(kb_applyTheme)]) { + // method declared in KBKeyBoardMainView.h + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Warc-performSelector-leaks" + [self.keyBoardMainView performSelector:@selector(kb_applyTheme)]; + #pragma clang diagnostic pop + } + if ([self.functionView respondsToSelector:@selector(kb_applyTheme)]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + [self.functionView performSelector:@selector(kb_applyTheme)]; +#pragma clang diagnostic pop + } +} + +#pragma mark - Lazy + +- (UIImageView *)bgImageView { + if (!_bgImageView) { + _bgImageView = [[UIImageView alloc] init]; + _bgImageView.contentMode = UIViewContentModeScaleAspectFill; + _bgImageView.clipsToBounds = YES; + } + return _bgImageView; +} @end diff --git a/CustomKeyboard/View/KBFunctionView.h b/CustomKeyboard/View/KBFunctionView.h index ebe7247..958461a 100644 --- a/CustomKeyboard/View/KBFunctionView.h +++ b/CustomKeyboard/View/KBFunctionView.h @@ -33,6 +33,9 @@ NS_ASSUME_NONNULL_BEGIN @property (nonatomic, strong, readonly) UIButton *clearButton; // 右侧-清空 @property (nonatomic, strong, readonly) UIButton *sendButton; // 右侧-发送 +/// 应用当前皮肤(更新背景/强调色) +- (void)kb_applyTheme; + @end NS_ASSUME_NONNULL_END diff --git a/CustomKeyboard/View/KBFunctionView.m b/CustomKeyboard/View/KBFunctionView.m index 520ba9c..547b9db 100644 --- a/CustomKeyboard/View/KBFunctionView.m +++ b/CustomKeyboard/View/KBFunctionView.m @@ -14,6 +14,7 @@ #import #import "KBFullAccessGuideView.h" #import "KBFullAccessManager.h" +#import "KBSkinManager.h" static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; @@ -40,8 +41,8 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { - // 整体绿色背景(接近截图效果,项目可自行替换素材) - self.backgroundColor = [UIColor colorWithRed:0.77 green:0.93 blue:0.82 alpha:1.0]; + // 背景使用当前主题强调色 + [self kb_applyTheme]; [self setupUI]; [self reloadDemoData]; @@ -52,6 +53,15 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; return self; } +#pragma mark - Theme + +- (void)kb_applyTheme { + KBSkinManager *mgr = [KBSkinManager shared]; + UIColor *accent = mgr.current.accentColor ?: [UIColor colorWithRed:0.77 green:0.93 blue:0.82 alpha:1.0]; + BOOL hasImg = ([mgr currentBackgroundImage] != nil); + self.backgroundColor = hasImg ? [accent colorWithAlphaComponent:0.65] : accent; +} + - (void)dealloc { [self stopPasteboardMonitor]; } diff --git a/CustomKeyboard/View/KBKeyBoardMainView.h b/CustomKeyboard/View/KBKeyBoardMainView.h index 9f50800..3ff4f46 100644 --- a/CustomKeyboard/View/KBKeyBoardMainView.h +++ b/CustomKeyboard/View/KBKeyBoardMainView.h @@ -28,6 +28,9 @@ NS_ASSUME_NONNULL_BEGIN @interface KBKeyBoardMainView : UIView @property (nonatomic, weak) id delegate; +/// 应用当前皮肤(会触发键区重载以应用按键颜色) +- (void)kb_applyTheme; + @end NS_ASSUME_NONNULL_END diff --git a/CustomKeyboard/View/KBKeyBoardMainView.m b/CustomKeyboard/View/KBKeyBoardMainView.m index fb41669..40acc9c 100644 --- a/CustomKeyboard/View/KBKeyBoardMainView.m +++ b/CustomKeyboard/View/KBKeyBoardMainView.m @@ -11,6 +11,7 @@ #import "KBFunctionView.h" #import "KBKey.h" #import "Masonry.h" +#import "KBSkinManager.h" @interface KBKeyBoardMainView () @property (nonatomic, strong) KBToolBar *topBar; @@ -21,7 +22,7 @@ - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { - self.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1.0]; + self.backgroundColor = [KBSkinManager shared].current.keyboardBackground; // 顶部栏 self.topBar = [[KBToolBar alloc] init]; self.topBar.delegate = self; @@ -31,7 +32,7 @@ make.top.equalTo(self.mas_top).offset(6); make.height.mas_equalTo(40); }]; - + // 键盘区域 self.keyboardView = [[KBKeyboardView alloc] init]; self.keyboardView.delegate = self; @@ -41,9 +42,9 @@ make.top.equalTo(self.topBar.mas_bottom).offset(4); make.bottom.equalTo(self.mas_bottom).offset(-4); }]; - + // 功能面板切换交由外部控制器处理;此处不直接创建/管理 - + } return self; } @@ -114,5 +115,15 @@ // 切换功能面板交由外部控制器处理(此处不再实现) // 设置页展示改由 KeyboardViewController 统一处理 +#pragma mark - Theme + +- (void)kb_applyTheme { + KBSkinManager *mgr = [KBSkinManager shared]; + BOOL hasImg = ([mgr currentBackgroundImage] != nil); + UIColor *bg = mgr.current.keyboardBackground; + self.backgroundColor = hasImg ? [UIColor clearColor] : bg; + self.keyboardView.backgroundColor = hasImg ? [UIColor clearColor] : bg; + [self.keyboardView reloadKeys]; +} @end diff --git a/CustomKeyboard/View/KBKeyButton.m b/CustomKeyboard/View/KBKeyButton.m index 085d3eb..4de0114 100644 --- a/CustomKeyboard/View/KBKeyButton.m +++ b/CustomKeyboard/View/KBKeyButton.m @@ -5,6 +5,7 @@ #import "KBKeyButton.h" #import "KBKey.h" +#import "KBSkinManager.h" @implementation KBKeyButton @@ -16,10 +17,11 @@ } - (void)applyDefaultStyle { - self.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; // 字体样式 - [self setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; - [self setTitleColor:[UIColor blackColor] forState:UIControlStateHighlighted]; - self.backgroundColor = [UIColor whiteColor]; + self.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + KBSkinTheme *t = [KBSkinManager shared].current; + [self setTitleColor:t.keyTextColor forState:UIControlStateNormal]; + [self setTitleColor:t.keyTextColor forState:UIControlStateHighlighted]; + self.backgroundColor = t.keyBackground; self.layer.cornerRadius = 6.0; // 圆角 self.layer.masksToBounds = NO; self.layer.shadowColor = [UIColor colorWithWhite:0 alpha:0.1].CGColor; // 阴影效果 @@ -46,10 +48,11 @@ - (void)refreshStateAppearance { // 选中态用于 Shift/CapsLock 等特殊按键的高亮显示 + KBSkinTheme *t = [KBSkinManager shared].current; if (self.isSelected) { - self.backgroundColor = [UIColor colorWithWhite:0.85 alpha:1.0]; + self.backgroundColor = t.keyHighlightBackground ?: t.keyBackground; } else { - self.backgroundColor = [UIColor whiteColor]; + self.backgroundColor = t.keyBackground; } } diff --git a/CustomKeyboard/View/KBKeyboardView.m b/CustomKeyboard/View/KBKeyboardView.m index bc1c48f..7fd0593 100644 --- a/CustomKeyboard/View/KBKeyboardView.m +++ b/CustomKeyboard/View/KBKeyboardView.m @@ -7,6 +7,7 @@ #import "KBKeyButton.h" #import "KBKey.h" #import "KBResponderUtils.h" // 封装的响应链工具 +#import "KBSkinManager.h" @interface KBKeyboardView () @property (nonatomic, strong) UIView *row1; @@ -22,7 +23,7 @@ - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { - self.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1.0]; + self.backgroundColor = [KBSkinManager shared].current.keyboardBackground; _layoutStyle = KBKeyboardLayoutStyleLetters; // 默认小写:与需求一致,初始不开启 Shift _shiftOn = NO; diff --git a/Shared/KBSkinManager.h b/Shared/KBSkinManager.h new file mode 100644 index 0000000..b82350a --- /dev/null +++ b/Shared/KBSkinManager.h @@ -0,0 +1,58 @@ +// +// KBSkinManager.h +// App & Keyboard Extension shared skin/theme manager. +// +// Stores a lightweight theme (colors, identifiers) to shared keychain so +// both targets see the same current skin. Cross-process updates are delivered +// via Darwin notification. Intended for immediate reflection in extension. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +extern NSString * const KBSkinDidChangeNotification; // in-process +extern NSString * const KBDarwinSkinChanged; // cross-process + +/// Simple theme model (colors only; assets can be added later via App Group) +@interface KBSkinTheme : NSObject +@property (nonatomic, copy) NSString *skinId; // e.g. "mint" +@property (nonatomic, copy) NSString *name; // display name +@property (nonatomic, strong) UIColor *keyboardBackground; +@property (nonatomic, strong) UIColor *keyBackground; +@property (nonatomic, strong) UIColor *keyTextColor; +@property (nonatomic, strong) UIColor *keyHighlightBackground; // selected/highlighted +@property (nonatomic, strong) UIColor *accentColor; // function view accents +/// 可选:键盘背景图片的 PNG/JPEG 数据(若存在,优先显示图片) +@property (nonatomic, strong, nullable) NSData *backgroundImageData; +@end + +/// Shared skin manager (Keychain Sharing based) +@interface KBSkinManager : NSObject + ++ (instancetype)shared; + +@property (atomic, strong, readonly) KBSkinTheme *current; // never nil (fallback to default) + +/// Save theme from JSON dictionary (keys: id, name, background, key_bg, key_text, key_highlight, accent) +- (BOOL)applyThemeFromJSON:(NSDictionary *)json; + +/// Save explicit theme +- (BOOL)applyTheme:(KBSkinTheme *)theme; + +/// Reset to default theme +- (void)resetToDefault; + +/// 直接应用图片皮肤(使用 JPEG/PNG 数据)。建议大小 < 512KB。 +- (BOOL)applyImageSkinWithData:(NSData *)imageData skinId:(NSString *)skinId name:(NSString *)name; + +/// 当前背景图片(若存在) +- (nullable UIImage *)currentBackgroundImage; + +/// Parse a hex color string like "#RRGGBB"/"#RRGGBBAA" ++ (UIColor *)colorFromHexString:(NSString *)hex defaultColor:(UIColor *)fallback; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Shared/KBSkinManager.m b/Shared/KBSkinManager.m new file mode 100644 index 0000000..6497ff4 --- /dev/null +++ b/Shared/KBSkinManager.m @@ -0,0 +1,214 @@ +// +// KBSkinManager.m +// + +#import "KBSkinManager.h" +#import +#import "KBConfig.h" + +NSString * const KBSkinDidChangeNotification = @"KBSkinDidChangeNotification"; +NSString * const KBDarwinSkinChanged = @"com.loveKey.nyx.skin.changed"; + +static NSString * const kKBSkinService = @"com.loveKey.nyx.skin"; // Keychain service +static NSString * const kKBSkinAccount = @"current"; // Keychain account + +@implementation KBSkinTheme + ++ (BOOL)supportsSecureCoding { return YES; } + +- (void)encodeWithCoder:(NSCoder *)coder { + [coder encodeObject:self.skinId forKey:@"skinId"]; + [coder encodeObject:self.name forKey:@"name"]; + [coder encodeObject:self.keyboardBackground forKey:@"keyboardBackground"]; + [coder encodeObject:self.keyBackground forKey:@"keyBackground"]; + [coder encodeObject:self.keyTextColor forKey:@"keyTextColor"]; + [coder encodeObject:self.keyHighlightBackground forKey:@"keyHighlightBackground"]; + [coder encodeObject:self.accentColor forKey:@"accentColor"]; + if (self.backgroundImageData) { + [coder encodeObject:self.backgroundImageData forKey:@"backgroundImageData"]; + } +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + if (self = [super init]) { + _skinId = [coder decodeObjectOfClass:NSString.class forKey:@"skinId"] ?: @"default"; + _name = [coder decodeObjectOfClass:NSString.class forKey:@"name"] ?: @"Default"; + _keyboardBackground = [coder decodeObjectOfClass:UIColor.class forKey:@"keyboardBackground"] ?: [UIColor colorWithWhite:0.95 alpha:1.0]; + _keyBackground = [coder decodeObjectOfClass:UIColor.class forKey:@"keyBackground"] ?: UIColor.whiteColor; + _keyTextColor = [coder decodeObjectOfClass:UIColor.class forKey:@"keyTextColor"] ?: UIColor.blackColor; + _keyHighlightBackground = [coder decodeObjectOfClass:UIColor.class forKey:@"keyHighlightBackground"] ?: [UIColor colorWithWhite:0.85 alpha:1.0]; + _accentColor = [coder decodeObjectOfClass:UIColor.class forKey:@"accentColor"] ?: [UIColor colorWithRed:0.77 green:0.93 blue:0.82 alpha:1.0]; + _backgroundImageData = [coder decodeObjectOfClass:NSData.class forKey:@"backgroundImageData"]; + } + return self; +} + +@end + +@interface KBSkinManager () +@property (atomic, strong, readwrite) KBSkinTheme *current; +@end + +@implementation KBSkinManager + ++ (instancetype)shared { + static KBSkinManager *m; static dispatch_once_t onceToken; dispatch_once(&onceToken, ^{ m = [KBSkinManager new]; }); + return m; +} + +- (instancetype)init { + if (self = [super init]) { + _current = [self p_loadFromKeychain] ?: [self.class defaultTheme]; + // Observe Darwin notification for cross-process updates + CFNotificationCenterAddObserver(CFNotificationCenterGetDarwinNotifyCenter(), + (__bridge const void *)(self), + KBSkinDarwinCallback, + (__bridge CFStringRef)KBDarwinSkinChanged, + NULL, + CFNotificationSuspensionBehaviorDeliverImmediately); + } + return self; +} + +static void KBSkinDarwinCallback(CFNotificationCenterRef center, void *observer, CFStringRef name, const void *object, CFDictionaryRef userInfo) { + KBSkinManager *self = (__bridge KBSkinManager *)observer; + [self p_reloadFromKeychainAndBroadcast:YES]; +} + +- (void)dealloc { + CFNotificationCenterRemoveObserver(CFNotificationCenterGetDarwinNotifyCenter(), (__bridge const void *)(self), (__bridge CFStringRef)KBDarwinSkinChanged, NULL); +} + +#pragma mark - Public + +- (BOOL)applyThemeFromJSON:(NSDictionary *)json { + if (json.count == 0) return NO; + KBSkinTheme *t = [KBSkinTheme new]; + t.skinId = [json[@"id"] isKindOfClass:NSString.class] ? json[@"id"] : @"custom"; + t.name = [json[@"name"] isKindOfClass:NSString.class] ? json[@"name"] : t.skinId; + t.keyboardBackground = [self.class colorFromHexString:json[@"background"] defaultColor:[self.class defaultTheme].keyboardBackground]; + t.keyBackground = [self.class colorFromHexString:json[@"key_bg"] defaultColor:[self.class defaultTheme].keyBackground]; + t.keyTextColor = [self.class colorFromHexString:json[@"key_text"] defaultColor:[self.class defaultTheme].keyTextColor]; + t.keyHighlightBackground = [self.class colorFromHexString:json[@"key_highlight"] defaultColor:[self.class defaultTheme].keyHighlightBackground]; + t.accentColor = [self.class colorFromHexString:json[@"accent"] defaultColor:[self.class defaultTheme].accentColor]; + return [self applyTheme:t]; +} + +- (BOOL)applyTheme:(KBSkinTheme *)theme { + if (!theme) return NO; + if ([self p_saveToKeychain:theme]) { + self.current = theme; + [[NSNotificationCenter defaultCenter] postNotificationName:KBSkinDidChangeNotification object:nil]; + CFNotificationCenterPostNotification(CFNotificationCenterGetDarwinNotifyCenter(), (__bridge CFStringRef)KBDarwinSkinChanged, NULL, NULL, true); + return YES; + } + return NO; +} + +- (void)resetToDefault { + [self applyTheme:[self.class defaultTheme]]; +} + +- (BOOL)applyImageSkinWithData:(NSData *)imageData skinId:(NSString *)skinId name:(NSString *)name { + if (imageData.length == 0) return NO; + // 构造新主题,继承当前配色作为按键/强调色的默认值 + KBSkinTheme *base = self.current ?: [self.class defaultTheme]; + KBSkinTheme *t = [KBSkinTheme new]; + t.skinId = skinId ?: @"image"; + t.name = name ?: t.skinId; + t.keyboardBackground = base.keyboardBackground ?: [self.class defaultTheme].keyboardBackground; + t.keyBackground = base.keyBackground ?: [self.class defaultTheme].keyBackground; + t.keyTextColor = base.keyTextColor ?: [self.class defaultTheme].keyTextColor; + t.keyHighlightBackground = base.keyHighlightBackground ?: [self.class defaultTheme].keyHighlightBackground; + t.accentColor = base.accentColor ?: [self.class defaultTheme].accentColor; + t.backgroundImageData = imageData; + return [self applyTheme:t]; +} + +- (UIImage *)currentBackgroundImage { + NSData *d = self.current.backgroundImageData; + if (d.length == 0) return nil; + return [UIImage imageWithData:d scale:[UIScreen mainScreen].scale] ?: nil; +} + ++ (UIColor *)colorFromHexString:(NSString *)hex defaultColor:(UIColor *)fallback { + if (![hex isKindOfClass:NSString.class] || hex.length == 0) return fallback; + NSString *s = [[hex stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]] lowercaseString]; + if ([s hasPrefix:@"#"]) s = [s substringFromIndex:1]; + unsigned long long v = 0; NSScanner *scanner = [NSScanner scannerWithString:s]; + if (![scanner scanHexLongLong:&v]) return fallback; + if (s.length == 6) { // RRGGBB + CGFloat r = ((v >> 16) & 0xFF) / 255.0; + CGFloat g = ((v >> 8) & 0xFF) / 255.0; + CGFloat b = (v & 0xFF) / 255.0; + return [UIColor colorWithRed:r green:g blue:b alpha:1.0]; + } else if (s.length == 8) { // RRGGBBAA + CGFloat r = ((v >> 24) & 0xFF) / 255.0; + CGFloat g = ((v >> 16) & 0xFF) / 255.0; + CGFloat b = ((v >> 8) & 0xFF) / 255.0; + CGFloat a = (v & 0xFF) / 255.0; + return [UIColor colorWithRed:r green:g blue:b alpha:a]; + } + return fallback; +} + +#pragma mark - Defaults + ++ (KBSkinTheme *)defaultTheme { + KBSkinTheme *t = [KBSkinTheme new]; + t.skinId = @"default"; + t.name = @"Default"; + t.keyboardBackground = [UIColor colorWithWhite:0.95 alpha:1.0]; + t.keyBackground = UIColor.whiteColor; + t.keyTextColor = UIColor.blackColor; + t.keyHighlightBackground = [UIColor colorWithWhite:0.85 alpha:1.0]; + t.accentColor = [UIColor colorWithRed:0.77 green:0.93 blue:0.82 alpha:1.0]; + t.backgroundImageData = nil; + return t; +} + +#pragma mark - Keychain + +- (NSMutableDictionary *)baseKCQuery { + NSMutableDictionary *q = [@{ (__bridge id)kSecClass: (__bridge id)kSecClassGenericPassword, + (__bridge id)kSecAttrService: kKBSkinService, + (__bridge id)kSecAttrAccount: kKBSkinAccount } mutableCopy]; + q[(__bridge id)kSecAttrAccessGroup] = KB_KEYCHAIN_ACCESS_GROUP; + return q; +} + +- (BOOL)p_saveToKeychain:(KBSkinTheme *)theme { + NSError *err = nil; + NSData *data = [NSKeyedArchiver archivedDataWithRootObject:theme requiringSecureCoding:YES error:&err]; + if (err || data.length == 0) return NO; + NSMutableDictionary *q = [self baseKCQuery]; + SecItemDelete((__bridge CFDictionaryRef)q); + q[(__bridge id)kSecValueData] = data; + q[(__bridge id)kSecAttrAccessible] = (__bridge id)kSecAttrAccessibleAfterFirstUnlockThisDeviceOnly; + OSStatus st = SecItemAdd((__bridge CFDictionaryRef)q, NULL); + return (st == errSecSuccess); +} + +- (KBSkinTheme *)p_loadFromKeychain { + NSMutableDictionary *q = [self baseKCQuery]; + q[(__bridge id)kSecReturnData] = @YES; + q[(__bridge id)kSecMatchLimit] = (__bridge id)kSecMatchLimitOne; + CFTypeRef dataRef = NULL; OSStatus st = SecItemCopyMatching((__bridge CFDictionaryRef)q, &dataRef); + if (st != errSecSuccess || !dataRef) return nil; + NSData *data = (__bridge_transfer NSData *)dataRef; + if (data.length == 0) return nil; + @try { + KBSkinTheme *t = [NSKeyedUnarchiver unarchivedObjectOfClass:KBSkinTheme.class fromData:data error:NULL]; + return t; + } @catch (__unused NSException *e) { return nil; } +} + +- (void)p_reloadFromKeychainAndBroadcast:(BOOL)broadcast { + KBSkinTheme *t = [self p_loadFromKeychain] ?: [self.class defaultTheme]; + self.current = t; + if (broadcast) { + [[NSNotificationCenter defaultCenter] postNotificationName:KBSkinDidChangeNotification object:nil]; + } +} + +@end diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 71ca812..3cd1f21 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -8,6 +8,9 @@ /* Begin PBXBuildFile section */ 043FBCD22EAF97630036AFE1 /* KBPermissionViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 04C6EAE12EAF940F0089C901 /* KBPermissionViewController.m */; }; + 0459D1B42EBA284C00F2D189 /* KBSkinCenterVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */; }; + 0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B62EBA287900F2D189 /* KBSkinManager.m */; }; + 0459D1B82EBA287900F2D189 /* KBSkinManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B62EBA287900F2D189 /* KBSkinManager.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -87,6 +90,10 @@ /* End PBXCopyFilesBuildPhase section */ /* Begin PBXFileReference section */ + 0459D1B22EBA284C00F2D189 /* KBSkinCenterVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinCenterVC.h; sourceTree = ""; }; + 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinCenterVC.m; sourceTree = ""; }; + 0459D1B52EBA287900F2D189 /* KBSkinManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinManager.h; sourceTree = ""; }; + 0459D1B62EBA287900F2D189 /* KBSkinManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinManager.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -329,6 +336,8 @@ 04FC95CE2EB1E7A1007BD342 /* HomeVC.m */, A1B2D7002EB8C00100000001 /* KBLangTestVC.h */, A1B2D7012EB8C00100000001 /* KBLangTestVC.m */, + 0459D1B22EBA284C00F2D189 /* KBSkinCenterVC.h */, + 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */, ); path = VC; sourceTree = ""; @@ -582,6 +591,8 @@ A1B2C4222EB4B7A100000001 /* KBKeyboardPermissionManager.m */, 04A9FE182EB892460020DB6D /* KBLocalizationManager.h */, 04A9FE192EB892460020DB6D /* KBLocalizationManager.m */, + 0459D1B52EBA287900F2D189 /* KBSkinManager.h */, + 0459D1B62EBA287900F2D189 /* KBSkinManager.m */, ); path = Shared; sourceTree = ""; @@ -817,6 +828,7 @@ 04FC95792EB09BC8007BD342 /* KBKeyBoardMainView.m in Sources */, 04FC95732EB09570007BD342 /* KBFunctionBarView.m in Sources */, 04C6EAD82EAF870B0089C901 /* KeyboardViewController.m in Sources */, + 0459D1B82EBA287900F2D189 /* KBSkinManager.m in Sources */, 04FC95762EB095DE007BD342 /* KBFunctionPasteView.m in Sources */, A1B2C3D42EB0A0A100000001 /* KBFunctionTagCell.m in Sources */, 04A9FE1A2EB892460020DB6D /* KBLocalizationManager.m in Sources */, @@ -860,10 +872,12 @@ A1B2D7022EB8C00100000001 /* KBLangTestVC.m in Sources */, 04C6EABF2EAF86530089C901 /* main.m in Sources */, 04FC95CC2EB1E780007BD342 /* BaseTabBarController.m in Sources */, + 0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */, 04FC95F42EB339C1007BD342 /* AppleSignInManager.m in Sources */, 04C6EAC12EAF86530089C901 /* ViewController.m in Sources */, A1B2C4002EB4A0A100000004 /* KBAuthManager.m in Sources */, A1B2C4212EB4B7A100000001 /* KBKeyboardPermissionManager.m in Sources */, + 0459D1B42EBA284C00F2D189 /* KBSkinCenterVC.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/keyBoard/Class/Home/VC/HomeVC.m b/keyBoard/Class/Home/VC/HomeVC.m index 346f4b4..b3b0812 100644 --- a/keyBoard/Class/Home/VC/HomeVC.m +++ b/keyBoard/Class/Home/VC/HomeVC.m @@ -38,7 +38,7 @@ self.tableView.tableHeaderView = header; [self.view addSubview:self.tableView]; - self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission") ]; + self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission"), @"皮肤中心" ]; dispatch_async(dispatch_get_main_queue(), ^{ [self.textView becomeFirstResponder]; }); @@ -50,7 +50,7 @@ - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; self.title = KBLocalized(@"home_title"); - self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission") ]; + self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission"), @"皮肤中心" ]; [self.tableView reloadData]; } @@ -85,6 +85,10 @@ // 键盘权限引导页 KBGuideVC *vc = [KBGuideVC new]; [self.navigationController pushViewController:vc animated:YES]; + } else if (indexPath.row == 2) { + // 皮肤中心 + UIViewController *vc = [NSClassFromString(@"KBSkinCenterVC") new]; + if (vc) { [self.navigationController pushViewController:vc animated:YES]; } } } diff --git a/keyBoard/Class/Home/VC/KBSkinCenterVC.h b/keyBoard/Class/Home/VC/KBSkinCenterVC.h new file mode 100644 index 0000000..6c8ecc2 --- /dev/null +++ b/keyBoard/Class/Home/VC/KBSkinCenterVC.h @@ -0,0 +1,11 @@ +// +// KBSkinCenterVC.h +// 简单的皮肤中心:展示两款示例皮肤,点击“下载并应用”后立即同步到键盘扩展。 +// + +#import + +@interface KBSkinCenterVC : UIViewController + +@end + diff --git a/keyBoard/Class/Home/VC/KBSkinCenterVC.m b/keyBoard/Class/Home/VC/KBSkinCenterVC.m new file mode 100644 index 0000000..5a097bd --- /dev/null +++ b/keyBoard/Class/Home/VC/KBSkinCenterVC.m @@ -0,0 +1,132 @@ +// +// KBSkinCenterVC.m +// + +#import "KBSkinCenterVC.h" +#import "Masonry.h" +#import "KBNetworkManager.h" +#import "KBSkinManager.h" +#import "KBHUD.h" + +@interface KBSkinCell : UITableViewCell +@property (nonatomic, strong) UIButton *applyBtn; +@end + +@implementation KBSkinCell +- (instancetype)initWithStyle:(UITableViewCellStyle)style reuseIdentifier:(NSString *)reuseIdentifier { + if (self = [super initWithStyle:style reuseIdentifier:reuseIdentifier]) { + self.selectionStyle = UITableViewCellSelectionStyleNone; + _applyBtn = [UIButton buttonWithType:UIButtonTypeSystem]; + [_applyBtn setTitle:@"下载并应用" forState:UIControlStateNormal]; + _applyBtn.layer.cornerRadius = 6; _applyBtn.layer.borderWidth = 1; + _applyBtn.layer.borderColor = [UIColor colorWithWhite:0.85 alpha:1].CGColor; + [self.contentView addSubview:_applyBtn]; + [_applyBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self.contentView).offset(-16); + make.centerY.equalTo(self.contentView); + make.width.mas_equalTo(110); + make.height.mas_equalTo(34); + }]; + } + return self; +} +@end + +@interface KBSkinCenterVC () +@property (nonatomic, strong) UITableView *tableView; +@property (nonatomic, copy) NSArray *skins; // id, name, img(url relative to KB_BASE_URL) +@end + +@implementation KBSkinCenterVC + +- (void)viewDidLoad { + [super viewDidLoad]; + self.title = @"皮肤中心"; + self.view.backgroundColor = [UIColor whiteColor]; + // 绝对 URL 的测试皮肤图片(无需 KB_BASE_URL)。 + // 说明:使用 picsum.photos 的固定 id,稳定可直接访问。 + self.skins = @[ + @{ @"id": @"aurora", @"name": @"极光", @"img": @"https://picsum.photos/id/1018/1600/900.jpg" }, + @{ @"id": @"alps", @"name": @"雪山", @"img": @"https://picsum.photos/id/1016/1600/900.jpg" }, + @{ @"id": @"lake", @"name": @"湖面", @"img": @"https://picsum.photos/id/1039/1600/900.jpg" }, + ]; + + self.tableView = [[UITableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleInsetGrouped]; + self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + self.tableView.delegate = self; self.tableView.dataSource = self; + [self.view addSubview:self.tableView]; +} + +#pragma mark - UITableView + +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.skins.count; } + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *cid = @"skin.cell"; + KBSkinCell *cell = [tableView dequeueReusableCellWithIdentifier:cid]; + if (!cell) { cell = [[KBSkinCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:cid]; } + NSDictionary *skin = self.skins[indexPath.row]; + cell.textLabel.text = skin[@"name"]; cell.detailTextLabel.text = skin[@"id"]; + [cell.applyBtn removeTarget:nil action:NULL forControlEvents:UIControlEventTouchUpInside]; + [cell.applyBtn addTarget:self action:@selector(onApplyBtn:) forControlEvents:UIControlEventTouchUpInside]; + cell.applyBtn.tag = indexPath.row; + return cell; +} + +- (void)onApplyBtn:(UIButton *)sender { + NSInteger idx = sender.tag; + if (idx < 0 || idx >= self.skins.count) return; + NSDictionary *skin = self.skins[idx]; + NSString *path = skin[@"img"] ?: @""; // 相对 KB_BASE_URL + + // 下载图片数据(非 JSON 将以 NSData 返回) + [[KBNetworkManager shared] GET:path parameters:nil headers:nil completion:^(id jsonOrData, NSURLResponse *response, NSError *error) { + NSData *data = ([jsonOrData isKindOfClass:NSData.class] ? (NSData *)jsonOrData : nil); + // 尝试压缩尺寸,避免 Keychain 过大:将宽度限制到 1500px + if (data && data.length > 0) { + UIImage *img = [UIImage imageWithData:data]; + if (img) { + CGFloat maxW = 1500.0; + if (img.size.width > maxW) { + CGFloat scale = maxW / img.size.width; + CGSize newSize = CGSizeMake(maxW, floor(img.size.height * scale)); + UIGraphicsBeginImageContextWithOptions(newSize, YES, 1.0); + [img drawInRect:CGRectMake(0, 0, newSize.width, newSize.height)]; + UIImage *resized = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + img = resized ?: img; + } + data = UIImageJPEGRepresentation(img, 0.85) ?: data; // 压成 JPEG + } + } + dispatch_async(dispatch_get_main_queue(), ^{ + NSData *payload = data; + if (payload.length == 0) { + // 兜底:生成一张简单渐变图片 + CGSize size = CGSizeMake(1200, 600); + UIGraphicsBeginImageContextWithOptions(size, YES, 1.0); + CGContextRef ctx = UIGraphicsGetCurrentContext(); + UIColor *c1 = [UIColor colorWithRed:0.76 green:0.91 blue:0.86 alpha:1]; + UIColor *c2 = [UIColor colorWithRed:0.93 green:0.97 blue:0.91 alpha:1]; + if ([skin[@"id"] hasPrefix:@"dark"]) { + c1 = [UIColor colorWithRed:0.1 green:0.12 blue:0.16 alpha:1]; + c2 = [UIColor colorWithRed:0.22 green:0.24 blue:0.28 alpha:1]; + } + CGColorSpaceRef space = CGColorSpaceCreateDeviceRGB(); + NSArray *colors = @[(__bridge id)c1.CGColor, (__bridge id)c2.CGColor]; + CGFloat locs[] = {0,1}; + CGGradientRef grad = CGGradientCreateWithColors(space, (__bridge CFArrayRef)colors, locs); + CGContextDrawLinearGradient(ctx, grad, CGPointZero, CGPointMake(size.width, size.height), 0); + CGGradientRelease(grad); CGColorSpaceRelease(space); + UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + payload = UIImageJPEGRepresentation(img, 0.9); + } + BOOL ok = (payload.length > 0) ? [[KBSkinManager shared] applyImageSkinWithData:payload skinId:skin[@"id"] name:skin[@"name"]] : NO; + [KBHUD showInfo:(ok ? @"已应用,切到键盘查看" : @"应用失败")]; + }); + }]; +} + +@end From 7a1b17d0601526f75171b850cf033bcde9045239 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Wed, 5 Nov 2025 18:10:56 +0800 Subject: [PATCH 03/47] =?UTF-8?q?=E5=A4=84=E7=90=86=E9=94=AE=E7=9B=98?= =?UTF-8?q?=E4=B8=8D=E8=83=BD=E6=8B=89=E8=B5=B7=E4=B8=BBapp=E7=9A=84?= =?UTF-8?q?=E9=97=AE=E9=A2=98?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CustomKeyboard/Info.plist | 4 + CustomKeyboard/KeyboardViewController.m | 16 +++- CustomKeyboard/PrefixHeader.pch | 8 +- CustomKeyboard/Utils/KBURLOpenBridge.h | 30 ++++++ CustomKeyboard/Utils/KBURLOpenBridge.m | 46 ++++++++++ CustomKeyboard/View/KBFullAccessGuideView.m | 92 +++++++++++++++---- CustomKeyboard/View/KBFunctionView.m | 61 ++++++++---- CustomKeyboard/View/KBKeyboardView.m | 3 + Shared/KBConfig.h | 10 +- keyBoard.xcodeproj/project.pbxproj | 18 +++- .../xcshareddata/xcschemes/keyBoard.xcscheme | 11 +-- keyBoard/AppDelegate.m | 17 +++- keyBoard/Info.plist | 4 +- keyBoard/KeyBoardPrefixHeader.pch | 2 +- 14 files changed, 270 insertions(+), 52 deletions(-) create mode 100644 CustomKeyboard/Utils/KBURLOpenBridge.h create mode 100644 CustomKeyboard/Utils/KBURLOpenBridge.m diff --git a/CustomKeyboard/Info.plist b/CustomKeyboard/Info.plist index c25c1ec..6b0b101 100644 --- a/CustomKeyboard/Info.plist +++ b/CustomKeyboard/Info.plist @@ -2,6 +2,10 @@ + LSApplicationQueriesSchemes + + kbkeyboardAppExtension + NSExtension NSExtensionAttributes diff --git a/CustomKeyboard/KeyboardViewController.m b/CustomKeyboard/KeyboardViewController.m index aa3670d..e27dcff 100644 --- a/CustomKeyboard/KeyboardViewController.m +++ b/CustomKeyboard/KeyboardViewController.m @@ -52,8 +52,17 @@ static CGFloat KEYBOARDHEIGHT = 256 + 20; - (void)setupUI { - // 固定键盘整体高度 - [self.view.heightAnchor constraintEqualToConstant:KEYBOARDHEIGHT].active = YES; + // 固定键盘整体高度;为减少与系统自调整高度产生的告警,将优先级设置为 High + NSLayoutConstraint *h = [self.view.heightAnchor constraintEqualToConstant:KEYBOARDHEIGHT]; + h.priority = UILayoutPriorityDefaultHigh; // 750 + h.active = YES; + // 关闭 UIInputView 自适应(某些系统版本会尝试放大为全屏高度导致冲突) + if ([self.view isKindOfClass:[UIInputView class]]) { + UIInputView *iv = (UIInputView *)self.view; + if ([iv respondsToSelector:@selector(setAllowsSelfSizing:)]) { + iv.allowsSelfSizing = NO; + } + } // 背景图铺底 [self.view addSubview:self.bgImageView]; [self.bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { @@ -222,7 +231,8 @@ static CGFloat KEYBOARDHEIGHT = 256 + 20; } - (void)kb_tryOpenContainerForLoginIfNeeded { - NSURL *url = [NSURL URLWithString:@"kbkeyboard://login?src=keyboard"]; + // 使用与主 App 一致的自定义 Scheme + NSURL *url = [NSURL URLWithString:[NSString stringWithFormat:@"%@@//login?src=keyboard", KB_APP_SCHEME]]; if (!url) return; __weak typeof(self) weakSelf = self; [self.extensionContext openURL:url completionHandler:^(__unused BOOL success) { diff --git a/CustomKeyboard/PrefixHeader.pch b/CustomKeyboard/PrefixHeader.pch index 5d96a48..4623ba0 100644 --- a/CustomKeyboard/PrefixHeader.pch +++ b/CustomKeyboard/PrefixHeader.pch @@ -23,9 +23,15 @@ // 通用链接(Universal Links)统一配置 // 配置好 AASA 与 Associated Domains 后,只需修改这里即可切换域名/path。 -#define KB_UL_BASE @"https://your.domain/ul" // 替换为你的真实域名与前缀路径 +#define KB_UL_BASE @"https://app.tknb.net/ul" // 与 Associated Domains 一致 #define KB_UL_LOGIN KB_UL_BASE @"/login" #define KB_UL_SETTINGS KB_UL_BASE @"/settings" +// 在扩展内,启用 URL Bridge(仅在显式的用户点击动作中使用) +// 这样即便宿主 App(如备忘录)拒绝 extensionContext 的 openURL,仍可通过响应链兜底拉起容器 App。 +#ifndef KB_URL_BRIDGE_ENABLE +#define KB_URL_BRIDGE_ENABLE 1 +#endif + #endif /* PrefixHeader_pch */ diff --git a/CustomKeyboard/Utils/KBURLOpenBridge.h b/CustomKeyboard/Utils/KBURLOpenBridge.h new file mode 100644 index 0000000..9237c7b --- /dev/null +++ b/CustomKeyboard/Utils/KBURLOpenBridge.h @@ -0,0 +1,30 @@ +// +// KBURLOpenBridge.h +// 非公开:通过响应链查找 `openURL:` 选择器,尝试在扩展环境中打开自定义 scheme。 +// 警告:存在审核风险。默认仅 Debug 启用(见 KB_URL_BRIDGE_ENABLE)。 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +#ifndef KB_URL_BRIDGE_ENABLE +#if DEBUG +#define KB_URL_BRIDGE_ENABLE 1 +#else +#define KB_URL_BRIDGE_ENABLE 0 +#endif +#endif + +@interface KBURLOpenBridge : NSObject + +/// 尝试通过响应链调用 openURL:(仅在 KB_URL_BRIDGE_ENABLE 为 1 时执行)。 +/// @param url 自定义 scheme,如 kbkeyboard://settings +/// @param start 起始 responder(传 self 或任意视图) +/// @return 是否看起来已发起打开动作(不保证一定成功) ++ (BOOL)openURLViaResponder:(NSURL *)url from:(UIResponder *)start; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/CustomKeyboard/Utils/KBURLOpenBridge.m b/CustomKeyboard/Utils/KBURLOpenBridge.m new file mode 100644 index 0000000..84aaaed --- /dev/null +++ b/CustomKeyboard/Utils/KBURLOpenBridge.m @@ -0,0 +1,46 @@ +// +// KBURLOpenBridge.m +// + +#import "KBURLOpenBridge.h" +#import + +@implementation KBURLOpenBridge + ++ (BOOL)openURLViaResponder:(NSURL *)url from:(UIResponder *)start { +#if KB_URL_BRIDGE_ENABLE + if (!url || !start) return NO; + SEL sel = NSSelectorFromString(@"openURL:"); + UIResponder *responder = start; + while (responder) { + @try { + if ([responder respondsToSelector:sel]) { + // 尽量按签名调用;若失败则回退 performSelector + BOOL handled = NO; + // 尝试 (BOOL)openURL:(NSURL *) + BOOL (*funcBool)(id, SEL, NSURL *) = (BOOL (*)(id, SEL, NSURL *))objc_msgSend; + if (funcBool) { + handled = funcBool(responder, sel, url); + } else { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Warc-performSelector-leaks" + [responder performSelector:sel withObject:url]; + handled = YES; +#pragma clang diagnostic pop + } + return handled; + } + } @catch (__unused NSException *e) { + // ignore and continue + } + responder = responder.nextResponder; + } + return NO; +#else + (void)url; (void)start; + return NO; +#endif +} + +@end + diff --git a/CustomKeyboard/View/KBFullAccessGuideView.m b/CustomKeyboard/View/KBFullAccessGuideView.m index 4ad0c5a..248641d 100644 --- a/CustomKeyboard/View/KBFullAccessGuideView.m +++ b/CustomKeyboard/View/KBFullAccessGuideView.m @@ -6,10 +6,14 @@ #import "KBFullAccessGuideView.h" #import "Masonry.h" #import "KBResponderUtils.h" // 统一查找 UIInputViewController 的工具 +#import "KBHUD.h" +#import "KBURLOpenBridge.h" @interface KBFullAccessGuideView () @property (nonatomic, strong) UIControl *backdrop; @property (nonatomic, strong) UIView *card; +// 预先保存当前键盘控制器,避免运行时通过响应链找不到 +@property (nonatomic, weak) UIInputViewController *ivc; @end @implementation KBFullAccessGuideView @@ -110,7 +114,8 @@ } - (void)presentIn:(UIView *)parent { - UIView *container = parent.window ?: parent; + if (!parent) return; + UIView *container = parent; // 关键:加到键盘视图树中,而不是 window self.frame = container.bounds; self.alpha = 0; [container addSubview:self]; @@ -126,15 +131,19 @@ + (void)showInView:(UIView *)parent { if (!parent) return; - // 避免重复 - for (UIView *v in (parent.window ?: parent).subviews) { + // 避免重复(仅在 parent 层级检查) + for (UIView *v in parent.subviews) { if ([v isKindOfClass:[KBFullAccessGuideView class]]) return; } - [[KBFullAccessGuideView build] presentIn:parent]; + KBFullAccessGuideView *view = [KBFullAccessGuideView build]; + // 预取 ivc + view.ivc = KBFindInputViewController(parent); + [view presentIn:parent]; } + (void)dismissFromView:(UIView *)parent { - UIView *container = parent.window ?: parent; + UIView *container = parent; + if (!container) return; for (UIView *v in container.subviews) { if ([v isKindOfClass:[KBFullAccessGuideView class]]) { [(KBFullAccessGuideView *)v dismiss]; @@ -148,30 +157,73 @@ #pragma mark - Actions // 工具方法已提取到 KBResponderUtils.h - +// 打开主 App,引导用户去系统设置开启完全访问:优先 Scheme,失败再试 UL;仍失败则提示手动路径。 - (void)onTapGoEnable { - // 在扩展中无法使用 UIApplication。改为委托宿主打开链接: - // 方案:优先拉起主 App 并由主 App 打开设置页,避免宿主拦截。 UIInputViewController *ivc = KBFindInputViewController(self); if (!ivc) { [self dismiss]; return; } - - // 先尝试 Universal Link(如未配置可改为你的域名),失败再用自定义 scheme。 + + // 自定义 Scheme(App 里在 openURL 中转到设置页) + // 统一使用主 App 的自定义 Scheme + NSURL *scheme = [NSURL URLWithString:[NSString stringWithFormat:@"%@@//settings?src=kb_extension", KB_APP_SCHEME]]; + // Universal Link(需 AASA/Associated Domains 配置且 KB_UL_BASE 与域名一致) NSURL *ul = [NSURL URLWithString:[NSString stringWithFormat:@"%@?src=kb_extension", KB_UL_SETTINGS]]; - void (^fallback)(void) = ^{ - NSURL *scheme = [NSURL URLWithString:@"kbkeyboard://settings?src=kb_extension"]; // 主App在 openURL 中处理 - [ivc.extensionContext openURL:scheme completionHandler:^(__unused BOOL ok2) { - // 无论成功与否,都收起当前提示层,避免遮挡 - [self dismiss]; - }]; + + void (^finish)(BOOL) = ^(BOOL ok){ + if (ok) { [self dismiss]; } + else { + [KBHUD showInfo:@"无法自动打开,请按路径:设置→通用→键盘→键盘→恋爱键盘→允许完全访问"]; // 失败兜底提示 + } }; - + + // 先试 Scheme(更可能被宿主允许直接拉起 App) + if (scheme) { + [ivc.extensionContext openURL:scheme completionHandler:^(BOOL ok) { + if (ok) { finish(YES); return; } + if (ul) { + [ivc.extensionContext openURL:ul completionHandler:^(BOOL ok2) { + if (ok2) { finish(YES); return; } + // 兜底:在用户点击触发的场景下,尝试通过响应链调用 openURL: + BOOL bridged = NO; + @try { + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wunguarded-availability" + bridged = [KBURLOpenBridge openURLViaResponder:scheme from:self]; + if (!bridged && ul) { + bridged = [KBURLOpenBridge openURLViaResponder:ul from:self]; + } + #pragma clang diagnostic pop + } @catch (__unused NSException *e) { bridged = NO; } + finish(bridged); + }]; + } else { + // 没有 UL,则直接尝试桥接 Scheme + BOOL bridged = NO; + @try { + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wunguarded-availability" + bridged = [KBURLOpenBridge openURLViaResponder:scheme from:self]; + #pragma clang diagnostic pop + } @catch (__unused NSException *e) { bridged = NO; } + finish(bridged); + } + }]; + return; + } + // 无 scheme 时,直接尝试 UL if (ul) { [ivc.extensionContext openURL:ul completionHandler:^(BOOL ok) { - if (ok) { [self dismiss]; } - else { fallback(); } + if (ok) { finish(YES); return; } + BOOL bridged = NO; + @try { + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wunguarded-availability" + bridged = [KBURLOpenBridge openURLViaResponder:ul from:self]; + #pragma clang diagnostic pop + } @catch (__unused NSException *e) { bridged = NO; } + finish(bridged); }]; } else { - fallback(); + finish(NO); } } @end diff --git a/CustomKeyboard/View/KBFunctionView.m b/CustomKeyboard/View/KBFunctionView.m index 547b9db..5612ba7 100644 --- a/CustomKeyboard/View/KBFunctionView.m +++ b/CustomKeyboard/View/KBFunctionView.m @@ -15,6 +15,7 @@ #import "KBFullAccessGuideView.h" #import "KBFullAccessManager.h" #import "KBSkinManager.h" +#import "KBURLOpenBridge.h" // 兜底从扩展侧直接尝试 openURL: static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; @@ -49,6 +50,9 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; // 初始化剪贴板监控状态 _lastHandledPBCount = [UIPasteboard generalPasteboard].changeCount; + + // 监听“完全访问”状态变化,动态启停剪贴板监控,避免在未开完全访问时触发 TCC/XPC 错误日志 + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(kb_fullAccessChanged) name:KBFullAccessChangedNotification object:nil]; } return self; } @@ -64,6 +68,7 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; - (void)dealloc { [self stopPasteboardMonitor]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; } #pragma mark - UI @@ -92,10 +97,11 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; [self.rightButtonContainer addSubview:self.clearButtonInternal]; [self.rightButtonContainer addSubview:self.sendButtonInternal]; - // 竖向排布:粘贴、删除、清空为等高,发送略高 + // 竖向排布:粘贴、删除、清空为等高;发送优先更高,但允许在空间不足时压缩 CGFloat smallH = 44; CGFloat bigH = 56; - CGFloat vSpace = 10; + // 原 10 在键盘总高度 276 下容易超出容器,改为 8 以避免 AutoLayout 冲突 + CGFloat vSpace = 8; [self.pasteButtonInternal mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.rightButtonContainer.mas_top); make.left.right.equalTo(self.rightButtonContainer); @@ -114,8 +120,10 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; [self.sendButtonInternal mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.clearButtonInternal.mas_bottom).offset(vSpace); make.left.right.equalTo(self.rightButtonContainer); - make.height.mas_equalTo(bigH); - make.bottom.lessThanOrEqualTo(self.rightButtonContainer.mas_bottom); // 底部可伸缩 + // 允许在空间不足时缩短到 smallH,避免产生约束冲突 + make.height.greaterThanOrEqualTo(@(smallH)); + make.height.lessThanOrEqualTo(@(bigH)); + make.bottom.lessThanOrEqualTo(self.rightButtonContainer.mas_bottom); }]; // 2. 粘贴区(位于右侧按钮左侧) @@ -193,9 +201,22 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; [ivc.extensionContext openURL:ul completionHandler:^(BOOL ok) { if (ok) return; // Universal Link 成功 - NSURL *scheme = [NSURL URLWithString:[NSString stringWithFormat:@"kbkeyboard://login?src=functionView&index=%ld&title=%@", (long)indexPath.item, encodedTitle]]; + // 统一使用主 App 注册的自定义 Scheme + NSURL *scheme = [NSURL URLWithString:[NSString stringWithFormat:@"%@@//login?src=functionView&index=%ld&title=%@", KB_APP_SCHEME, (long)indexPath.item, encodedTitle]]; [ivc.extensionContext openURL:scheme completionHandler:^(BOOL ok2) { - if (!ok2) { + if (ok2) return; + + // 兜底:在用户点击触发的场景下,尝试通过响应链调用 openURL: + // 以提升在“备忘录”等宿主中的成功率。 + BOOL bridged = NO; + @try { + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Wunguarded-availability" + bridged = [KBURLOpenBridge openURLViaResponder:scheme from:self]; + #pragma clang diagnostic pop + } @catch (__unused NSException *e) { bridged = NO; } + + if (!bridged) { // 两条路都失败:大概率未开完全访问或宿主拦截。统一交由 Manager 引导。 dispatch_async(dispatch_get_main_queue(), ^{ [[KBFullAccessManager shared] ensureFullAccessOrGuideInView:self]; }); } @@ -235,6 +256,8 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; // - 无论允许/拒绝,都把本次 changeCount 记为已处理,避免一直重复询问。 - (void)startPasteboardMonitor { + // 未开启“完全访问”时不做自动读取,避免宿主/系统拒绝并刷错误日志 + if (![[KBFullAccessManager shared] hasFullAccess]) return; if (self.pasteboardTimer) return; __weak typeof(self) weakSelf = self; self.pasteboardTimer = [NSTimer scheduledTimerWithTimeInterval:0.5 repeats:YES block:^(NSTimer * _Nonnull timer) { @@ -259,24 +282,30 @@ static NSString * const kKBFunctionTagCellId = @"KBFunctionTagCellId"; - (void)didMoveToWindow { [super didMoveToWindow]; - if (self.window && !self.isHidden) { - [self startPasteboardMonitor]; - } else { - [self stopPasteboardMonitor]; - } + [self kb_refreshPasteboardMonitor]; } - (void)setHidden:(BOOL)hidden { BOOL wasHidden = self.isHidden; [super setHidden:hidden]; if (wasHidden != hidden) { - if (!hidden && self.window) { - [self startPasteboardMonitor]; - } else { - [self stopPasteboardMonitor]; - } + [self kb_refreshPasteboardMonitor]; } } + +// 根据窗口可见性与完全访问状态,统一启停粘贴板监控 +- (void)kb_refreshPasteboardMonitor { + BOOL visible = (self.window && !self.isHidden); + if (visible && [[KBFullAccessManager shared] hasFullAccess]) { + [self startPasteboardMonitor]; + } else { + [self stopPasteboardMonitor]; + } +} + +- (void)kb_fullAccessChanged { + dispatch_async(dispatch_get_main_queue(), ^{ [self kb_refreshPasteboardMonitor]; }); +} - (void)onTapDelete { NSLog(@"点击:删除"); UIInputViewController *ivc = KBFindInputViewController(self); diff --git a/CustomKeyboard/View/KBKeyboardView.m b/CustomKeyboard/View/KBKeyboardView.m index 7fd0593..8c3fce9 100644 --- a/CustomKeyboard/View/KBKeyboardView.m +++ b/CustomKeyboard/View/KBKeyboardView.m @@ -264,6 +264,9 @@ if (firstChar) { for (KBKeyButton *b in row.subviews) { if (![b isKindOfClass:[KBKeyButton class]]) continue; + // 当本行没有字符键时,firstChar 可能是一个“特殊键”, + // 避免对基准按钮自身添加 self == self * k 的无效约束 + if (b == firstChar) continue; if (b.key.type == KBKeyTypeCharacter) continue; CGFloat multiplier = 1.5; if (b.key.type == KBKeyTypeSpace) multiplier = 4.0; diff --git a/Shared/KBConfig.h b/Shared/KBConfig.h index 8a79c94..d4e343d 100644 --- a/Shared/KBConfig.h +++ b/Shared/KBConfig.h @@ -15,7 +15,7 @@ // Universal Links 通用链接 #ifndef KB_UL_BASE -#define KB_UL_BASE @"https://your.domain/ul" +#define KB_UL_BASE @"https://app.tknb.net/ul" #endif #define KB_UL_LOGIN KB_UL_BASE @"/login" @@ -37,6 +37,14 @@ #define KB_KEYBOARD_EXTENSION_BUNDLE_ID @"com.loveKey.nyx.CustomKeyboard" #endif +// --- 应用自定义 Scheme --- +// 主 App 在 Info.plist 中注册的 URL Scheme,用于从键盘扩展唤起容器 App。 +// 注意:AppDelegate 中对 scheme 做了小写化比较(kbkeyboardappextension),iOS 对大小写不敏感; +// 这里统一通过宏引用,避免出现与 App 端不一致的字符串。 +#ifndef KB_APP_SCHEME +#define KB_APP_SCHEME @"kbkeyboardAppExtension" +#endif + // --- 常用宏 --- // 弱引用 self(在 block 中避免循环引用):使用处直接写 KBWeakSelf; #ifndef KBWeakSelf diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 3cd1f21..25d3975 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -11,6 +11,7 @@ 0459D1B42EBA284C00F2D189 /* KBSkinCenterVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */; }; 0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B62EBA287900F2D189 /* KBSkinManager.m */; }; 0459D1B82EBA287900F2D189 /* KBSkinManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B62EBA287900F2D189 /* KBSkinManager.m */; }; + 0477BD952EBAFF4E0055D639 /* KBURLOpenBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BD932EBAFF4E0055D639 /* KBURLOpenBridge.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -94,6 +95,8 @@ 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinCenterVC.m; sourceTree = ""; }; 0459D1B52EBA287900F2D189 /* KBSkinManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinManager.h; sourceTree = ""; }; 0459D1B62EBA287900F2D189 /* KBSkinManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinManager.m; sourceTree = ""; }; + 0477BD922EBAFF4E0055D639 /* KBURLOpenBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBURLOpenBridge.h; sourceTree = ""; }; + 0477BD932EBAFF4E0055D639 /* KBURLOpenBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBURLOpenBridge.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -217,6 +220,15 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ + 0477BD942EBAFF4E0055D639 /* Utils */ = { + isa = PBXGroup; + children = ( + 0477BD922EBAFF4E0055D639 /* KBURLOpenBridge.h */, + 0477BD932EBAFF4E0055D639 /* KBURLOpenBridge.m */, + ); + path = Utils; + sourceTree = ""; + }; 04A9FE122EB4D0D20020DB6D /* Manager */ = { isa = PBXGroup; children = ( @@ -257,6 +269,7 @@ 04C6EAD72EAF870B0089C901 /* CustomKeyboard */ = { isa = PBXGroup; children = ( + 0477BD942EBAFF4E0055D639 /* Utils */, 04A9FE122EB4D0D20020DB6D /* Manager */, 04FC95662EB0546C007BD342 /* Model */, 04C6EADA2EAF8C7B0089C901 /* View */, @@ -842,6 +855,7 @@ A1B2C4002EB4A0A100000003 /* KBAuthManager.m in Sources */, 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */, A1B2C4202EB4B7A100000001 /* KBKeyboardPermissionManager.m in Sources */, + 0477BD952EBAFF4E0055D639 /* KBURLOpenBridge.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1005,7 +1019,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = keyBoard/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "YOLO输入法"; - INFOPLIST_KEY_CFBundleURLTypes = "{\n CFBundleURLName = \"com.loveKey.nyx.keyboard\";\n CFBundleURLSchemes = (\n kbkeyboard\n );\n}"; + INFOPLIST_KEY_CFBundleURLTypes = "{\n CFBundleURLName = \"com.loveKey.nyx.keyboard\";\n CFBundleURLSchemes = (\n kbkeyboardAppExtension\n );\n}"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; @@ -1044,7 +1058,7 @@ GENERATE_INFOPLIST_FILE = YES; INFOPLIST_FILE = keyBoard/Info.plist; INFOPLIST_KEY_CFBundleDisplayName = "YOLO输入法"; - INFOPLIST_KEY_CFBundleURLTypes = "{\n CFBundleURLName = \"com.loveKey.nyx.keyboard\";\n CFBundleURLSchemes = (\n kbkeyboard\n );\n}"; + INFOPLIST_KEY_CFBundleURLTypes = "{\n CFBundleURLName = \"com.loveKey.nyx.keyboard\";\n CFBundleURLSchemes = (\n kbkeyboardAppExtension\n );\n}"; INFOPLIST_KEY_UIApplicationSupportsIndirectInputEvents = YES; INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; diff --git a/keyBoard.xcodeproj/xcshareddata/xcschemes/keyBoard.xcscheme b/keyBoard.xcodeproj/xcshareddata/xcschemes/keyBoard.xcscheme index 4b87720..5988250 100644 --- a/keyBoard.xcodeproj/xcshareddata/xcschemes/keyBoard.xcscheme +++ b/keyBoard.xcodeproj/xcshareddata/xcschemes/keyBoard.xcscheme @@ -1,7 +1,7 @@ + version = "1.3"> @@ -27,8 +27,6 @@ selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB" selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB" shouldUseLaunchSchemeArgsEnv = "YES"> - - + + @@ -87,4 +87,3 @@ revealArchiveInOrganizer = "YES"> - diff --git a/keyBoard/AppDelegate.m b/keyBoard/AppDelegate.m index 31b7514..1d9511b 100644 --- a/keyBoard/AppDelegate.m +++ b/keyBoard/AppDelegate.m @@ -61,10 +61,25 @@ static NSString * const kKBKeyboardExtensionBundleId = @"com.loveKey.nyx.CustomK #pragma mark - Deep Link +- (BOOL)application:(UIApplication *)application continueUserActivity:(NSUserActivity *)userActivity restorationHandler:(void (^)(NSArray * _Nullable))restorationHandler { + if ([userActivity.activityType isEqualToString:NSUserActivityTypeBrowsingWeb]) { + NSURL *url = userActivity.webpageURL; + if (!url) return NO; + NSString *host = url.host.lowercaseString ?: @""; + if ([host hasSuffix:@"app.tknb.net"]) { + NSString *path = url.path.lowercaseString ?: @""; + if ([path hasPrefix:@"/ul/settings"]) { [self kb_openAppSettings]; return YES; } + if ([path hasPrefix:@"/ul/login"]) { [self kb_presentLoginSheetIfNeeded]; return YES; } + } + } + return NO; +} + // iOS 9+ - (BOOL)application:(UIApplication *)app openURL:(NSURL *)url options:(NSDictionary *)options { if (!url) return NO; - if ([[url.scheme lowercaseString] isEqualToString:@"kbkeyboard"]) { + // 注意:已对 scheme 做了小写化,比较值也应为小写 + if ([[url.scheme lowercaseString] isEqualToString:@"kbkeyboardappextension"]) { NSString *urlHost = url.host ?: @""; NSString *host = [urlHost lowercaseString]; if ([host isEqualToString:@"login"]) { // kbkeyboard://login diff --git a/keyBoard/Info.plist b/keyBoard/Info.plist index 0bbab3d..c798311 100644 --- a/keyBoard/Info.plist +++ b/keyBoard/Info.plist @@ -5,11 +5,13 @@ CFBundleURLTypes + CFBundleTypeRole + Editor CFBundleURLName com.loveKey.nyx.keyboard CFBundleURLSchemes - kbkeyboard + kbkeyboardAppExtension diff --git a/keyBoard/KeyBoardPrefixHeader.pch b/keyBoard/KeyBoardPrefixHeader.pch index b8caeb7..f229331 100644 --- a/keyBoard/KeyBoardPrefixHeader.pch +++ b/keyBoard/KeyBoardPrefixHeader.pch @@ -35,7 +35,7 @@ //-----------------------------------------------宏定义全局----------------------------------------------------------/ // 通用链接(Universal Links)统一配置 // 仅需修改这里的域名/前缀,工程内所有使用 UL 的地方都会同步。 -#define KB_UL_BASE @"https://your.domain/ul" // 替换为你的真实域名与前缀路径 +#define KB_UL_BASE @"https://app.tknb.net/ul" // 与 Associated Domains 一致 #define KB_UL_LOGIN KB_UL_BASE @"/login" #define KB_UL_SETTINGS KB_UL_BASE @"/settings" From efdcf60ed1126ba6b731a25aeb3df4473a55396a Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Wed, 5 Nov 2025 20:11:10 +0800 Subject: [PATCH 04/47] =?UTF-8?q?=E5=9C=A8=E9=9D=9E=E5=88=98=E6=B5=B7?= =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E5=9C=B0=E7=90=83?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CustomKeyboard/View/KBFunctionBarView.m | 67 ++++++++++++++++++++++- CustomKeyboard/View/KBToolBar.m | 70 ++++++++++++++++++++++++- 2 files changed, 135 insertions(+), 2 deletions(-) diff --git a/CustomKeyboard/View/KBFunctionBarView.m b/CustomKeyboard/View/KBFunctionBarView.m index cc8aca9..1121e45 100644 --- a/CustomKeyboard/View/KBFunctionBarView.m +++ b/CustomKeyboard/View/KBFunctionBarView.m @@ -7,12 +7,14 @@ #import "KBFunctionBarView.h" #import "Masonry.h" +#import "KBResponderUtils.h" // 查找 UIInputViewController,用于系统切换输入法 @interface KBFunctionBarView () @property (nonatomic, strong) UIView *leftContainer; // 左侧按钮容器 @property (nonatomic, strong) UIView *rightContainer; // 右侧按钮容器 @property (nonatomic, strong) NSArray *leftButtonsInternal; @property (nonatomic, strong) NSArray *rightButtonsInternal; +@property (nonatomic, strong) UIButton *globeButtonInternal; // 可选:系统“切换输入法”键 @end @implementation KBFunctionBarView @@ -38,6 +40,7 @@ - (void)buildUI { // 左右两个容器,方便分别布局 [self addSubview:self.leftContainer]; + [self addSubview:self.globeButtonInternal]; [self addSubview:self.rightContainer]; [self.rightContainer mas_makeConstraints:^(MASConstraintMaker *make) { @@ -46,8 +49,15 @@ make.height.mas_equalTo(36); }]; - [self.leftContainer mas_makeConstraints:^(MASConstraintMaker *make) { + // 左侧地球键(按需显示) + [self.globeButtonInternal mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.mas_left).offset(12); + make.centerY.equalTo(self.mas_centerY); + make.width.height.mas_equalTo(32); + }]; + + [self.leftContainer mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.globeButtonInternal.mas_right).offset(8); make.right.equalTo(self.rightContainer.mas_left).offset(-12); make.centerY.equalTo(self.mas_centerY); make.height.mas_equalTo(36); @@ -113,6 +123,9 @@ } self.rightButtonsInternal = rightBtns.copy; + + // 初始刷新地球键可见性与事件绑定 + [self kb_refreshGlobeVisibility]; } #pragma mark - Actions @@ -158,4 +171,56 @@ return _rightContainer; } +- (UIButton *)globeButtonInternal { + if (!_globeButtonInternal) { + _globeButtonInternal = [UIButton buttonWithType:UIButtonTypeSystem]; + _globeButtonInternal.layer.cornerRadius = 16; + _globeButtonInternal.layer.masksToBounds = YES; + _globeButtonInternal.backgroundColor = [UIColor colorWithWhite:1 alpha:0.9]; + [_globeButtonInternal setTitle:@"🌐" forState:UIControlStateNormal]; + [_globeButtonInternal setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; + } + return _globeButtonInternal; +} + +#pragma mark - Globe (Input Mode Switch) + +- (void)kb_refreshGlobeVisibility { + UIInputViewController *ivc = KBFindInputViewController(self); + BOOL needSwitchKey = YES; + if (ivc && [ivc respondsToSelector:@selector(needsInputModeSwitchKey)]) { + needSwitchKey = ivc.needsInputModeSwitchKey; + } + + self.globeButtonInternal.hidden = !needSwitchKey; + + // 左容器左约束:根据是否显示地球键动态调整 + [self.leftContainer mas_remakeConstraints:^(MASConstraintMaker *make) { + if (needSwitchKey) { + make.left.equalTo(self.globeButtonInternal.mas_right).offset(8); + } else { + make.left.equalTo(self.mas_left).offset(12); + } + make.right.equalTo(self.rightContainer.mas_left).offset(-12); + make.centerY.equalTo(self.mas_centerY); + make.height.mas_equalTo(36); + }]; + + // 绑定系统输入法切换事件 + [self.globeButtonInternal removeTarget:nil action:NULL forControlEvents:UIControlEventAllEvents]; + if (needSwitchKey && ivc) { + SEL sel = NSSelectorFromString(@"handleInputModeListFromView:withEvent:"); + if ([ivc respondsToSelector:sel]) { + [self.globeButtonInternal addTarget:ivc action:sel forControlEvents:UIControlEventAllTouchEvents]; + } else { + [self.globeButtonInternal addTarget:ivc action:@selector(advanceToNextInputMode) forControlEvents:UIControlEventTouchUpInside]; + } + } +} + +- (void)didMoveToWindow { + [super didMoveToWindow]; + [self kb_refreshGlobeVisibility]; +} + @end diff --git a/CustomKeyboard/View/KBToolBar.m b/CustomKeyboard/View/KBToolBar.m index ab1a602..9158f2e 100644 --- a/CustomKeyboard/View/KBToolBar.m +++ b/CustomKeyboard/View/KBToolBar.m @@ -6,11 +6,13 @@ // #import "KBToolBar.h" +#import "KBResponderUtils.h" // 查找 UIInputViewController,用于系统切换输入法 @interface KBToolBar () @property (nonatomic, strong) UIView *leftContainer; @property (nonatomic, strong) NSArray *leftButtonsInternal; @property (nonatomic, strong) UIButton *settingsButtonInternal; +@property (nonatomic, strong) UIButton *globeButtonInternal; // 可选:系统“切换输入法”键 @end @implementation KBToolBar @@ -50,6 +52,7 @@ - (void)setupUI { [self addSubview:self.leftContainer]; [self addSubview:self.settingsButtonInternal]; + [self addSubview:self.globeButtonInternal]; // 右侧设置按钮 [self.settingsButtonInternal mas_makeConstraints:^(MASConstraintMaker *make) { @@ -58,9 +61,16 @@ make.width.height.mas_equalTo(32); }]; + // 左侧地球键(按需显示) + [self.globeButtonInternal mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.mas_left).offset(12); + make.centerY.equalTo(self.mas_centerY); + make.width.height.mas_equalTo(32); + }]; + // 左侧容器占用剩余空间 [self.leftContainer mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.equalTo(self.mas_left).offset(12); + make.left.equalTo(self.globeButtonInternal.mas_right).offset(8); make.right.equalTo(self.settingsButtonInternal.mas_left).offset(-12); make.centerY.equalTo(self.mas_centerY); make.height.mas_equalTo(32); @@ -89,6 +99,9 @@ make.right.equalTo(self.leftContainer.mas_right); }]; self.leftButtonsInternal = buttons.copy; + + // 初始刷新地球键的可见性与事件绑定 + [self kb_refreshGlobeVisibility]; } - (UIButton *)buildActionButtonAtIndex:(NSInteger)idx { @@ -142,4 +155,59 @@ return _settingsButtonInternal; } +- (UIButton *)globeButtonInternal { + if (!_globeButtonInternal) { + _globeButtonInternal = [UIButton buttonWithType:UIButtonTypeSystem]; + _globeButtonInternal.layer.cornerRadius = 16; + _globeButtonInternal.layer.masksToBounds = YES; + _globeButtonInternal.backgroundColor = [UIColor colorWithWhite:1 alpha:0.9]; + [_globeButtonInternal setTitle:@"🌐" forState:UIControlStateNormal]; + [_globeButtonInternal setTitleColor:[UIColor blackColor] forState:UIControlStateNormal]; + } + return _globeButtonInternal; +} + +#pragma mark - Globe (Input Mode Switch) + +// 根据宿主是否已提供系统切换键,决定是否显示地球按钮;并绑定系统事件。 +- (void)kb_refreshGlobeVisibility { + UIInputViewController *ivc = KBFindInputViewController(self); + BOOL needSwitchKey = YES; + if (ivc && [ivc respondsToSelector:@selector(needsInputModeSwitchKey)]) { + needSwitchKey = ivc.needsInputModeSwitchKey; // YES 表示自定义键盘需要提供切换键 + } + + self.globeButtonInternal.hidden = !needSwitchKey; + + // 重新调整 leftContainer 的左约束:若不需要地球键,则贴左边距 12 + [self.leftContainer mas_remakeConstraints:^(MASConstraintMaker *make) { + if (needSwitchKey) { + make.left.equalTo(self.globeButtonInternal.mas_right).offset(8); + } else { + make.left.equalTo(self.mas_left).offset(12); + } + make.right.equalTo(self.settingsButtonInternal.mas_left).offset(-12); + make.centerY.equalTo(self.mas_centerY); + make.height.mas_equalTo(32); + }]; + + // 绑定系统提供的输入法切换处理(点按切换、长按弹出列表) + // 仅在需要时绑定,避免多余的事件转发 + [self.globeButtonInternal removeTarget:nil action:NULL forControlEvents:UIControlEventAllEvents]; + if (needSwitchKey && ivc) { + SEL sel = NSSelectorFromString(@"handleInputModeListFromView:withEvent:"); + if ([ivc respondsToSelector:sel]) { + [self.globeButtonInternal addTarget:ivc action:sel forControlEvents:UIControlEventAllTouchEvents]; + } else { + // 回退:至少在点按时切换 + [self.globeButtonInternal addTarget:ivc action:@selector(advanceToNextInputMode) forControlEvents:UIControlEventTouchUpInside]; + } + } +} + +- (void)didMoveToWindow { + [super didMoveToWindow]; + [self kb_refreshGlobeVisibility]; +} + @end From abf32e8457bf6445947833715d588c02651cd7a4 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Wed, 5 Nov 2025 22:04:56 +0800 Subject: [PATCH 05/47] =?UTF-8?q?=E6=B7=BB=E5=8A=A0HWPanModal=E5=92=8CFLAn?= =?UTF-8?q?imatedImage?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Podfile | 2 + Podfile.lock | 10 +- .../FLAnimatedImage/FLAnimatedImage.m | 820 +++ .../FLAnimatedImage/FLAnimatedImageView.m | 460 ++ .../FLAnimatedImage/include/FLAnimatedImage.h | 83 + .../include/FLAnimatedImageView.h | 36 + Pods/FLAnimatedImage/LICENSE | 21 + Pods/FLAnimatedImage/README.md | 122 + Pods/HWPanModal/LICENSE | 21 + Pods/HWPanModal/README-CN.md | 330 ++ .../Sources/Animator/HWPanModalAnimator.h | 27 + .../Sources/Animator/HWPanModalAnimator.m | 40 + .../Animator/HWPanModalInteractiveAnimator.h | 17 + .../Animator/HWPanModalInteractiveAnimator.m | 16 + .../Animator/HWPanModalPresentationAnimator.h | 28 + .../Animator/HWPanModalPresentationAnimator.m | 314 ++ .../HWPresentingVCAnimatedTransitioning.h | 51 + .../HWPageSheetPresentingAnimation.h | 17 + .../HWPageSheetPresentingAnimation.m | 29 + .../HWShoppingCartPresentingAnimation.h | 17 + .../HWShoppingCartPresentingAnimation.m | 39 + .../Sources/Category/UIScrollView+Helper.h | 18 + .../Sources/Category/UIScrollView+Helper.m | 16 + .../Sources/Category/UIView+HW_Frame.h | 28 + .../Sources/Category/UIView+HW_Frame.m | 109 + .../HWPanModalPresentationController.h | 32 + .../HWPanModalPresentationController.m | 599 +++ .../Delegate/HWPanModalPresentationDelegate.h | 29 + .../Delegate/HWPanModalPresentationDelegate.m | 66 + Pods/HWPanModal/Sources/HWPanModal.h | 36 + .../HWPanModal/Sources/KVO/KeyValueObserver.h | 52 + .../HWPanModal/Sources/KVO/KeyValueObserver.m | 85 + .../Mediator/HWPanModalPresentableHandler.h | 102 + .../Mediator/HWPanModalPresentableHandler.m | 769 +++ .../Sources/Presentable/HWPanModalHeight.h | 48 + .../HWPanModalPanGestureDelegate.h | 31 + .../Presentable/HWPanModalPresentable.h | 451 ++ .../HWPanModalPresentationUpdateProtocol.h | 63 + .../UIViewController+LayoutHelper.h | 38 + .../UIViewController+LayoutHelper.m | 130 + .../UIViewController+PanModalDefault.h | 18 + .../UIViewController+PanModalDefault.m | 253 + .../UIViewController+Presentation.h | 21 + .../UIViewController+Presentation.m | 70 + .../Presenter/HWPanModalPresenterProtocol.h | 47 + .../UIViewController+PanModalPresenter.h | 17 + .../UIViewController+PanModalPresenter.m | 64 + .../Sources/View/HWBackgroundConfig.h | 37 + .../Sources/View/HWBackgroundConfig.m | 57 + Pods/HWPanModal/Sources/View/HWDimmedView.h | 41 + Pods/HWPanModal/Sources/View/HWDimmedView.m | 202 + .../Sources/View/HWPanContainerView.h | 34 + .../Sources/View/HWPanContainerView.m | 60 + .../Sources/View/HWPanIndicatorView.h | 19 + .../Sources/View/HWPanIndicatorView.m | 114 + .../View/HWPanModalIndicatorProtocol.h | 36 + .../Sources/View/HWPanModalShadow.h | 26 + .../Sources/View/HWPanModalShadow.m | 28 + .../Sources/View/HWVisualEffectView.h | 39 + .../Sources/View/HWVisualEffectView.m | 111 + .../View/PanModal/HWPanModalContainerView.h | 39 + .../View/PanModal/HWPanModalContainerView.m | 546 ++ .../View/PanModal/HWPanModalContentView.h | 36 + .../View/PanModal/HWPanModalContentView.m | 414 ++ Pods/Manifest.lock | 10 +- Pods/Pods.xcodeproj/project.pbxproj | 4660 ++++++++++------- .../xcschemes/FLAnimatedImage.xcscheme | 58 + .../xcschemes/HWPanModal.xcscheme | 58 + .../FLAnimatedImage-Info.plist | 26 + .../FLAnimatedImage/FLAnimatedImage-dummy.m | 5 + .../FLAnimatedImage-prefix.pch | 12 + .../FLAnimatedImage-umbrella.h | 18 + .../FLAnimatedImage.debug.xcconfig | 13 + .../FLAnimatedImage/FLAnimatedImage.modulemap | 6 + .../FLAnimatedImage.release.xcconfig | 13 + .../HWPanModal/HWPanModal-Info.plist | 26 + .../HWPanModal/HWPanModal-dummy.m | 5 + .../HWPanModal/HWPanModal-prefix.pch | 12 + .../HWPanModal/HWPanModal-umbrella.h | 47 + .../HWPanModal/HWPanModal.debug.xcconfig | 12 + .../HWPanModal/HWPanModal.modulemap | 6 + .../HWPanModal/HWPanModal.release.xcconfig | 12 + .../Pods-keyBoard-acknowledgements.markdown | 50 + .../Pods-keyBoard-acknowledgements.plist | 62 + ...rd-frameworks-Debug-input-files.xcfilelist | 2 + ...d-frameworks-Debug-output-files.xcfilelist | 2 + ...-frameworks-Release-input-files.xcfilelist | 2 + ...frameworks-Release-output-files.xcfilelist | 2 + .../Pods-keyBoard/Pods-keyBoard-frameworks.sh | 4 + .../Pods-keyBoard.debug.xcconfig | 8 +- .../Pods-keyBoard.release.xcconfig | 8 +- keyBoard.xcodeproj/project.pbxproj | 16 +- .../Class/Home/V/KBDirectionIndicatorView.h | 17 + .../Class/Home/V/KBDirectionIndicatorView.m | 66 + keyBoard/Class/Home/VC/HomeSheetVC.h | 18 + keyBoard/Class/Home/VC/HomeSheetVC.m | 73 + keyBoard/Class/Home/VC/HomeVC.m | 60 +- 97 files changed, 10853 insertions(+), 2067 deletions(-) create mode 100755 Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.m create mode 100755 Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.m create mode 100644 Pods/FLAnimatedImage/FLAnimatedImage/include/FLAnimatedImage.h create mode 100644 Pods/FLAnimatedImage/FLAnimatedImage/include/FLAnimatedImageView.h create mode 100644 Pods/FLAnimatedImage/LICENSE create mode 100644 Pods/FLAnimatedImage/README.md create mode 100644 Pods/HWPanModal/LICENSE create mode 100644 Pods/HWPanModal/README-CN.md create mode 100644 Pods/HWPanModal/Sources/Animator/HWPanModalAnimator.h create mode 100644 Pods/HWPanModal/Sources/Animator/HWPanModalAnimator.m create mode 100644 Pods/HWPanModal/Sources/Animator/HWPanModalInteractiveAnimator.h create mode 100644 Pods/HWPanModal/Sources/Animator/HWPanModalInteractiveAnimator.m create mode 100644 Pods/HWPanModal/Sources/Animator/HWPanModalPresentationAnimator.h create mode 100644 Pods/HWPanModal/Sources/Animator/HWPanModalPresentationAnimator.m create mode 100644 Pods/HWPanModal/Sources/Animator/HWPresentingVCAnimatedTransitioning.h create mode 100644 Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h create mode 100644 Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m create mode 100644 Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h create mode 100644 Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m create mode 100644 Pods/HWPanModal/Sources/Category/UIScrollView+Helper.h create mode 100644 Pods/HWPanModal/Sources/Category/UIScrollView+Helper.m create mode 100644 Pods/HWPanModal/Sources/Category/UIView+HW_Frame.h create mode 100644 Pods/HWPanModal/Sources/Category/UIView+HW_Frame.m create mode 100644 Pods/HWPanModal/Sources/Controller/HWPanModalPresentationController.h create mode 100644 Pods/HWPanModal/Sources/Controller/HWPanModalPresentationController.m create mode 100644 Pods/HWPanModal/Sources/Delegate/HWPanModalPresentationDelegate.h create mode 100644 Pods/HWPanModal/Sources/Delegate/HWPanModalPresentationDelegate.m create mode 100644 Pods/HWPanModal/Sources/HWPanModal.h create mode 100644 Pods/HWPanModal/Sources/KVO/KeyValueObserver.h create mode 100644 Pods/HWPanModal/Sources/KVO/KeyValueObserver.m create mode 100644 Pods/HWPanModal/Sources/Mediator/HWPanModalPresentableHandler.h create mode 100644 Pods/HWPanModal/Sources/Mediator/HWPanModalPresentableHandler.m create mode 100644 Pods/HWPanModal/Sources/Presentable/HWPanModalHeight.h create mode 100644 Pods/HWPanModal/Sources/Presentable/HWPanModalPanGestureDelegate.h create mode 100644 Pods/HWPanModal/Sources/Presentable/HWPanModalPresentable.h create mode 100644 Pods/HWPanModal/Sources/Presentable/HWPanModalPresentationUpdateProtocol.h create mode 100644 Pods/HWPanModal/Sources/Presentable/UIViewController+LayoutHelper.h create mode 100644 Pods/HWPanModal/Sources/Presentable/UIViewController+LayoutHelper.m create mode 100644 Pods/HWPanModal/Sources/Presentable/UIViewController+PanModalDefault.h create mode 100644 Pods/HWPanModal/Sources/Presentable/UIViewController+PanModalDefault.m create mode 100644 Pods/HWPanModal/Sources/Presentable/UIViewController+Presentation.h create mode 100644 Pods/HWPanModal/Sources/Presentable/UIViewController+Presentation.m create mode 100644 Pods/HWPanModal/Sources/Presenter/HWPanModalPresenterProtocol.h create mode 100644 Pods/HWPanModal/Sources/Presenter/UIViewController+PanModalPresenter.h create mode 100644 Pods/HWPanModal/Sources/Presenter/UIViewController+PanModalPresenter.m create mode 100644 Pods/HWPanModal/Sources/View/HWBackgroundConfig.h create mode 100644 Pods/HWPanModal/Sources/View/HWBackgroundConfig.m create mode 100644 Pods/HWPanModal/Sources/View/HWDimmedView.h create mode 100644 Pods/HWPanModal/Sources/View/HWDimmedView.m create mode 100644 Pods/HWPanModal/Sources/View/HWPanContainerView.h create mode 100644 Pods/HWPanModal/Sources/View/HWPanContainerView.m create mode 100644 Pods/HWPanModal/Sources/View/HWPanIndicatorView.h create mode 100644 Pods/HWPanModal/Sources/View/HWPanIndicatorView.m create mode 100644 Pods/HWPanModal/Sources/View/HWPanModalIndicatorProtocol.h create mode 100644 Pods/HWPanModal/Sources/View/HWPanModalShadow.h create mode 100644 Pods/HWPanModal/Sources/View/HWPanModalShadow.m create mode 100644 Pods/HWPanModal/Sources/View/HWVisualEffectView.h create mode 100644 Pods/HWPanModal/Sources/View/HWVisualEffectView.m create mode 100644 Pods/HWPanModal/Sources/View/PanModal/HWPanModalContainerView.h create mode 100644 Pods/HWPanModal/Sources/View/PanModal/HWPanModalContainerView.m create mode 100644 Pods/HWPanModal/Sources/View/PanModal/HWPanModalContentView.h create mode 100644 Pods/HWPanModal/Sources/View/PanModal/HWPanModalContentView.m create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/FLAnimatedImage.xcscheme create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/HWPanModal.xcscheme create mode 100644 Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-Info.plist create mode 100644 Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-dummy.m create mode 100644 Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch create mode 100644 Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-umbrella.h create mode 100644 Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.debug.xcconfig create mode 100644 Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.modulemap create mode 100644 Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.release.xcconfig create mode 100644 Pods/Target Support Files/HWPanModal/HWPanModal-Info.plist create mode 100644 Pods/Target Support Files/HWPanModal/HWPanModal-dummy.m create mode 100644 Pods/Target Support Files/HWPanModal/HWPanModal-prefix.pch create mode 100644 Pods/Target Support Files/HWPanModal/HWPanModal-umbrella.h create mode 100644 Pods/Target Support Files/HWPanModal/HWPanModal.debug.xcconfig create mode 100644 Pods/Target Support Files/HWPanModal/HWPanModal.modulemap create mode 100644 Pods/Target Support Files/HWPanModal/HWPanModal.release.xcconfig create mode 100644 keyBoard/Class/Home/V/KBDirectionIndicatorView.h create mode 100644 keyBoard/Class/Home/V/KBDirectionIndicatorView.m create mode 100644 keyBoard/Class/Home/VC/HomeSheetVC.h create mode 100644 keyBoard/Class/Home/VC/HomeSheetVC.m diff --git a/Podfile b/Podfile index 11a5b61..8c81940 100644 --- a/Podfile +++ b/Podfile @@ -14,6 +14,8 @@ target 'keyBoard' do pod 'MJRefresh', '3.7.9' pod 'SDWebImage', '5.21.1' pod 'DZNEmptyDataSet', '1.8.1' + pod 'HWPanModal', '~> 0.9.9' + pod 'FLAnimatedImage', '~> 1.0.17' pod 'LookinServer', :configurations => ['Debug'] end diff --git a/Podfile.lock b/Podfile.lock index f68bbab..7544f3a 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -16,6 +16,8 @@ PODS: - AFNetworking/NSURLSession - Bugly (2.6.1) - DZNEmptyDataSet (1.8.1) + - FLAnimatedImage (1.0.17) + - HWPanModal (0.9.9) - LookinServer (1.2.8): - LookinServer/Core (= 1.2.8) - LookinServer/Core (1.2.8) @@ -31,6 +33,8 @@ DEPENDENCIES: - AFNetworking (= 4.0.1) - Bugly - DZNEmptyDataSet (= 1.8.1) + - FLAnimatedImage (~> 1.0.17) + - HWPanModal (~> 0.9.9) - LookinServer - Masonry (= 1.1.0) - MBProgressHUD (= 1.2.0) @@ -43,6 +47,8 @@ SPEC REPOS: - AFNetworking - Bugly - DZNEmptyDataSet + - FLAnimatedImage + - HWPanModal - LookinServer - Masonry - MBProgressHUD @@ -54,6 +60,8 @@ SPEC CHECKSUMS: AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58 Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31 DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 + FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b + HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2 LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 @@ -61,6 +69,6 @@ SPEC CHECKSUMS: MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: e80851eaead44de926040a227bf16809774cc3d2 +PODFILE CHECKSUM: c407e365492f78edcfea5c78b0fb36d8bf0e447d COCOAPODS: 1.16.2 diff --git a/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.m b/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.m new file mode 100755 index 0000000..45754bc --- /dev/null +++ b/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImage.m @@ -0,0 +1,820 @@ +// +// FLAnimatedImage.m +// Flipboard +// +// Created by Raphael Schaad on 7/8/13. +// Copyright (c) Flipboard. All rights reserved. +// + + +#import "FLAnimatedImage.h" +#import +#if __has_include() +#import +#else +#import +#endif + + +// From vm_param.h, define for iOS 8.0 or higher to build on device. +#ifndef BYTE_SIZE + #define BYTE_SIZE 8 // byte size in bits +#endif + +#define MEGABYTE (1024 * 1024) + +// This is how the fastest browsers do it as per 2012: http://nullsleep.tumblr.com/post/16524517190/animated-gif-minimum-frame-delay-browser-compatibility +const NSTimeInterval kFLAnimatedImageDelayTimeIntervalMinimum = 0.02; + +// An animated image's data size (dimensions * frameCount) category; its value is the max allowed memory (in MB). +// E.g.: A 100x200px GIF with 30 frames is ~2.3MB in our pixel format and would fall into the `FLAnimatedImageDataSizeCategoryAll` category. +typedef NS_ENUM(NSUInteger, FLAnimatedImageDataSizeCategory) { + FLAnimatedImageDataSizeCategoryAll = 10, // All frames permanently in memory (be nice to the CPU) + FLAnimatedImageDataSizeCategoryDefault = 75, // A frame cache of default size in memory (usually real-time performance and keeping low memory profile) + FLAnimatedImageDataSizeCategoryOnDemand = 250, // Only keep one frame at the time in memory (easier on memory, slowest performance) + FLAnimatedImageDataSizeCategoryUnsupported // Even for one frame too large, computer says no. +}; + +typedef NS_ENUM(NSUInteger, FLAnimatedImageFrameCacheSize) { + FLAnimatedImageFrameCacheSizeNoLimit = 0, // 0 means no specific limit + FLAnimatedImageFrameCacheSizeLowMemory = 1, // The minimum frame cache size; this will produce frames on-demand. + FLAnimatedImageFrameCacheSizeGrowAfterMemoryWarning = 2, // If we can produce the frames faster than we consume, one frame ahead will already result in a stutter-free playback. + FLAnimatedImageFrameCacheSizeDefault = 5 // Build up a comfy buffer window to cope with CPU hiccups etc. +}; + + +#if defined(DEBUG) && DEBUG +@protocol FLAnimatedImageDebugDelegate +@optional +- (void)debug_animatedImage:(FLAnimatedImage *)animatedImage didUpdateCachedFrames:(NSIndexSet *)indexesOfFramesInCache; +- (void)debug_animatedImage:(FLAnimatedImage *)animatedImage didRequestCachedFrame:(NSUInteger)index; +- (CGFloat)debug_animatedImagePredrawingSlowdownFactor:(FLAnimatedImage *)animatedImage; +@end +#endif + + +@interface FLAnimatedImage () + +@property (nonatomic, assign, readonly) NSUInteger frameCacheSizeOptimal; // The optimal number of frames to cache based on image size & number of frames; never changes +@property (nonatomic, assign, readonly, getter=isPredrawingEnabled) BOOL predrawingEnabled; // Enables predrawing of images to improve performance. +@property (nonatomic, assign) NSUInteger frameCacheSizeMaxInternal; // Allow to cap the cache size e.g. when memory warnings occur; 0 means no specific limit (default) +@property (nonatomic, assign) NSUInteger requestedFrameIndex; // Most recently requested frame index +@property (nonatomic, assign, readonly) NSUInteger posterImageFrameIndex; // Index of non-purgable poster image; never changes +@property (nonatomic, strong, readonly) NSMutableDictionary *cachedFramesForIndexes; +@property (nonatomic, strong, readonly) NSMutableIndexSet *cachedFrameIndexes; // Indexes of cached frames +@property (nonatomic, strong, readonly) NSMutableIndexSet *requestedFrameIndexes; // Indexes of frames that are currently produced in the background +@property (nonatomic, strong, readonly) NSIndexSet *allFramesIndexSet; // Default index set with the full range of indexes; never changes +@property (nonatomic, assign) NSUInteger memoryWarningCount; +@property (nonatomic, strong, readonly) dispatch_queue_t serialQueue; +@property (nonatomic, strong, readonly) __attribute__((NSObject)) CGImageSourceRef imageSource; + +// The weak proxy is used to break retain cycles with delayed actions from memory warnings. +// We are lying about the actual type here to gain static type checking and eliminate casts. +// The actual type of the object is `FLWeakProxy`. +@property (nonatomic, strong, readonly) FLAnimatedImage *weakProxy; + +#if defined(DEBUG) && DEBUG +@property (nonatomic, weak) id debug_delegate; +#endif + +@end + + +// For custom dispatching of memory warnings to avoid deallocation races since NSNotificationCenter doesn't retain objects it is notifying. +static NSHashTable *allAnimatedImagesWeak; + +@implementation FLAnimatedImage + +#pragma mark - Accessors +#pragma mark Public + +// This is the definite value the frame cache needs to size itself to. +- (NSUInteger)frameCacheSizeCurrent +{ + NSUInteger frameCacheSizeCurrent = self.frameCacheSizeOptimal; + + // If set, respect the caps. + if (self.frameCacheSizeMax > FLAnimatedImageFrameCacheSizeNoLimit) { + frameCacheSizeCurrent = MIN(frameCacheSizeCurrent, self.frameCacheSizeMax); + } + + if (self.frameCacheSizeMaxInternal > FLAnimatedImageFrameCacheSizeNoLimit) { + frameCacheSizeCurrent = MIN(frameCacheSizeCurrent, self.frameCacheSizeMaxInternal); + } + + return frameCacheSizeCurrent; +} + + +- (void)setFrameCacheSizeMax:(NSUInteger)frameCacheSizeMax +{ + if (_frameCacheSizeMax != frameCacheSizeMax) { + + // Remember whether the new cap will cause the current cache size to shrink; then we'll make sure to purge from the cache if needed. + const BOOL willFrameCacheSizeShrink = (frameCacheSizeMax < self.frameCacheSizeCurrent); + + // Update the value + _frameCacheSizeMax = frameCacheSizeMax; + + if (willFrameCacheSizeShrink) { + [self purgeFrameCacheIfNeeded]; + } + } +} + + +#pragma mark Private + +- (void)setFrameCacheSizeMaxInternal:(NSUInteger)frameCacheSizeMaxInternal +{ + if (_frameCacheSizeMaxInternal != frameCacheSizeMaxInternal) { + + // Remember whether the new cap will cause the current cache size to shrink; then we'll make sure to purge from the cache if needed. + BOOL willFrameCacheSizeShrink = (frameCacheSizeMaxInternal < self.frameCacheSizeCurrent); + + // Update the value + _frameCacheSizeMaxInternal = frameCacheSizeMaxInternal; + + if (willFrameCacheSizeShrink) { + [self purgeFrameCacheIfNeeded]; + } + } +} + + +#pragma mark - Life Cycle + ++ (void)initialize +{ + if (self == [FLAnimatedImage class]) { + // UIKit memory warning notification handler shared by all of the instances + allAnimatedImagesWeak = [NSHashTable weakObjectsHashTable]; + + [[NSNotificationCenter defaultCenter] addObserverForName:UIApplicationDidReceiveMemoryWarningNotification object:nil queue:nil usingBlock:^(NSNotification *note) { + // UIKit notifications are posted on the main thread. didReceiveMemoryWarning: is expecting the main run loop, and we don't lock on allAnimatedImagesWeak + NSAssert([NSThread isMainThread], @"Received memory warning on non-main thread"); + // Get a strong reference to all of the images. If an instance is returned in this array, it is still live and has not entered dealloc. + // Note that FLAnimatedImages can be created on any thread, so the hash table must be locked. + NSArray *images = nil; + @synchronized(allAnimatedImagesWeak) { + images = [[allAnimatedImagesWeak allObjects] copy]; + } + // Now issue notifications to all of the images while holding a strong reference to them + [images makeObjectsPerformSelector:@selector(didReceiveMemoryWarning:) withObject:note]; + }]; + } +} + + +- (instancetype)init +{ + FLAnimatedImage *_Nullable const animatedImage = [self initWithAnimatedGIFData:nil]; + if (!animatedImage) { + FLLog(FLLogLevelError, @"Use `-initWithAnimatedGIFData:` and supply the animated GIF data as an argument to initialize an object of type `FLAnimatedImage`."); + } + return animatedImage; +} + + +- (instancetype)initWithAnimatedGIFData:(NSData *)data +{ + return [self initWithAnimatedGIFData:data optimalFrameCacheSize:0 predrawingEnabled:YES]; +} + +- (instancetype)initWithAnimatedGIFData:(NSData *)data optimalFrameCacheSize:(NSUInteger)optimalFrameCacheSize predrawingEnabled:(BOOL)isPredrawingEnabled +{ + // Early return if no data supplied! + const BOOL hasData = (data.length > 0); + if (!hasData) { + FLLog(FLLogLevelError, @"No animated GIF data supplied."); + return nil; + } + + self = [super init]; + if (self) { + // Do one-time initializations of `readonly` properties directly to ivar to prevent implicit actions and avoid need for private `readwrite` property overrides. + + // Keep a strong reference to `data` and expose it read-only publicly. + // However, we will use the `_imageSource` as handler to the image data throughout our life cycle. + _data = data; + _predrawingEnabled = isPredrawingEnabled; + + // Initialize internal data structures + _cachedFramesForIndexes = [[NSMutableDictionary alloc] init]; + _cachedFrameIndexes = [[NSMutableIndexSet alloc] init]; + _requestedFrameIndexes = [[NSMutableIndexSet alloc] init]; + + // Note: We could leverage `CGImageSourceCreateWithURL` too to add a second initializer `-initWithAnimatedGIFContentsOfURL:`. + _imageSource = CGImageSourceCreateWithData((__bridge CFDataRef)data, + (__bridge CFDictionaryRef)@{(NSString *)kCGImageSourceShouldCache: @NO}); + // Early return on failure! + if (!_imageSource) { + FLLog(FLLogLevelError, @"Failed to `CGImageSourceCreateWithData` for animated GIF data %@", data); + return nil; + } + + // Early return if not GIF! + const CFStringRef _Nullable imageSourceContainerType = CGImageSourceGetType(_imageSource); + const BOOL isGIFData = imageSourceContainerType ? UTTypeConformsTo(imageSourceContainerType, kUTTypeGIF) : NO; + if (!isGIFData) { + FLLog(FLLogLevelError, @"Supplied data is of type %@ and doesn't seem to be GIF data %@", imageSourceContainerType, data); + return nil; + } + + // Get `LoopCount` + // Note: 0 means repeating the animation indefinitely. + // Image properties example: + // { + // FileSize = 314446; + // "{GIF}" = { + // HasGlobalColorMap = 1; + // LoopCount = 0; + // }; + // } + NSDictionary *_Nullable const imageProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyProperties(_imageSource, NULL); + _loopCount = [[[imageProperties objectForKey:(id)kCGImagePropertyGIFDictionary] objectForKey:(id)kCGImagePropertyGIFLoopCount] unsignedIntegerValue]; + + // Iterate through frame images + const size_t imageCount = CGImageSourceGetCount(_imageSource); + NSUInteger skippedFrameCount = 0; + NSMutableDictionary *const delayTimesForIndexesMutable = [NSMutableDictionary dictionaryWithCapacity:imageCount]; + for (size_t i = 0; i < imageCount; i++) { + @autoreleasepool { + const CGImageRef _Nullable frameImageRef = CGImageSourceCreateImageAtIndex(_imageSource, i, NULL); + if (frameImageRef) { + UIImage *frameImage = [UIImage imageWithCGImage:frameImageRef]; + // Check for valid `frameImage` before parsing its properties as frames can be corrupted (and `frameImage` even `nil` when `frameImageRef` was valid). + if (frameImage) { + // Set poster image + if (!self.posterImage) { + _posterImage = frameImage; + // Set its size to proxy our size. + _size = _posterImage.size; + // Remember index of poster image so we never purge it; also add it to the cache. + _posterImageFrameIndex = i; + [self.cachedFramesForIndexes setObject:self.posterImage forKey:@(self.posterImageFrameIndex)]; + [self.cachedFrameIndexes addIndex:self.posterImageFrameIndex]; + } + + // Get `DelayTime` + // Note: It's not in (1/100) of a second like still falsely described in the documentation as per iOS 8 (rdar://19507384) but in seconds stored as `kCFNumberFloat32Type`. + // Frame properties example: + // { + // ColorModel = RGB; + // Depth = 8; + // PixelHeight = 960; + // PixelWidth = 640; + // "{GIF}" = { + // DelayTime = "0.4"; + // UnclampedDelayTime = "0.4"; + // }; + // } + + NSDictionary *_Nullable const frameProperties = (__bridge_transfer NSDictionary *)CGImageSourceCopyPropertiesAtIndex(_imageSource, i, NULL); + NSDictionary *_Nullable const framePropertiesGIF = [frameProperties objectForKey:(id)kCGImagePropertyGIFDictionary]; + + // Try to use the unclamped delay time; fall back to the normal delay time. + NSNumber *_Nullable delayTime = [framePropertiesGIF objectForKey:(id)kCGImagePropertyGIFUnclampedDelayTime]; + if (delayTime == nil) { + delayTime = [framePropertiesGIF objectForKey:(id)kCGImagePropertyGIFDelayTime]; + } + // If we don't get a delay time from the properties, fall back to `kDelayTimeIntervalDefault` or carry over the preceding frame's value. + const NSTimeInterval kDelayTimeIntervalDefault = 0.1; + if (delayTime == nil) { + if (i == 0) { + FLLog(FLLogLevelInfo, @"Falling back to default delay time for first frame %@ because none found in GIF properties %@", frameImage, frameProperties); + delayTime = @(kDelayTimeIntervalDefault); + } else { + FLLog(FLLogLevelInfo, @"Falling back to preceding delay time for frame %zu %@ because none found in GIF properties %@", i, frameImage, frameProperties); + delayTime = delayTimesForIndexesMutable[@(i - 1)]; + } + } + // Support frame delays as low as `kFLAnimatedImageDelayTimeIntervalMinimum`, with anything below being rounded up to `kDelayTimeIntervalDefault` for legacy compatibility. + // To support the minimum even when rounding errors occur, use an epsilon when comparing. We downcast to float because that's what we get for delayTime from ImageIO. + if ([delayTime floatValue] < ((float)kFLAnimatedImageDelayTimeIntervalMinimum - FLT_EPSILON)) { + FLLog(FLLogLevelInfo, @"Rounding frame %zu's `delayTime` from %f up to default %f (minimum supported: %f).", i, [delayTime floatValue], kDelayTimeIntervalDefault, kFLAnimatedImageDelayTimeIntervalMinimum); + delayTime = @(kDelayTimeIntervalDefault); + } + delayTimesForIndexesMutable[@(i)] = delayTime; + } else { + skippedFrameCount++; + FLLog(FLLogLevelInfo, @"Dropping frame %zu because valid `CGImageRef` %@ did result in `nil`-`UIImage`.", i, frameImageRef); + } + CFRelease(frameImageRef); + } else { + skippedFrameCount++; + FLLog(FLLogLevelInfo, @"Dropping frame %zu because failed to `CGImageSourceCreateImageAtIndex` with image source %@", i, self->_imageSource); + } + } + } + _delayTimesForIndexes = [delayTimesForIndexesMutable copy]; + _frameCount = imageCount; + + if (self.frameCount == 0) { + FLLog(FLLogLevelInfo, @"Failed to create any valid frames for GIF with properties %@", imageProperties); + return nil; + } else if (self.frameCount == 1) { + // Warn when we only have a single frame but return a valid GIF. + FLLog(FLLogLevelInfo, @"Created valid GIF but with only a single frame. Image properties: %@", imageProperties); + } else { + // We have multiple frames, rock on! + } + + // If no value is provided, select a default based on the GIF. + if (optimalFrameCacheSize == 0) { + // Calculate the optimal frame cache size: try choosing a larger buffer window depending on the predicted image size. + // It's only dependent on the image size & number of frames and never changes. + const CGFloat animatedImageDataSize = (CGFloat)CGImageGetBytesPerRow(self.posterImage.CGImage) * self.size.height * (CGFloat)(self.frameCount - skippedFrameCount) / (CGFloat)MEGABYTE; + if (animatedImageDataSize <= FLAnimatedImageDataSizeCategoryAll) { + _frameCacheSizeOptimal = self.frameCount; + } else if (animatedImageDataSize <= FLAnimatedImageDataSizeCategoryDefault) { + // This value doesn't depend on device memory much because if we're not keeping all frames in memory we will always be decoding 1 frame up ahead per 1 frame that gets played and at this point we might as well just keep a small buffer just large enough to keep from running out of frames. + _frameCacheSizeOptimal = FLAnimatedImageFrameCacheSizeDefault; + } else { + // The predicted size exceeds the limits to build up a cache and we go into low memory mode from the beginning. + _frameCacheSizeOptimal = FLAnimatedImageFrameCacheSizeLowMemory; + } + } else { + // Use the provided value. + _frameCacheSizeOptimal = optimalFrameCacheSize; + } + // In any case, cap the optimal cache size at the frame count. + _frameCacheSizeOptimal = MIN(_frameCacheSizeOptimal, self.frameCount); + + // Convenience/minor performance optimization; keep an index set handy with the full range to return in `-frameIndexesToCache`. + _allFramesIndexSet = [[NSIndexSet alloc] initWithIndexesInRange:NSMakeRange(0, self.frameCount)]; + + // See the property declarations for descriptions. + _weakProxy = (id)[FLWeakProxy weakProxyForObject:self]; + + // Register this instance in the weak table for memory notifications. The NSHashTable will clean up after itself when we're gone. + // Note that FLAnimatedImages can be created on any thread, so the hash table must be locked. + @synchronized(allAnimatedImagesWeak) { + [allAnimatedImagesWeak addObject:self]; + } + } + return self; +} + + ++ (instancetype)animatedImageWithGIFData:(NSData *)data +{ + FLAnimatedImage *const animatedImage = [[FLAnimatedImage alloc] initWithAnimatedGIFData:data]; + return animatedImage; +} + + +- (void)dealloc +{ + if (_weakProxy) { + [NSObject cancelPreviousPerformRequestsWithTarget:_weakProxy]; + } + + if (_imageSource) { + CFRelease(_imageSource); + } +} + + +#pragma mark - Public Methods + +// See header for more details. +// Note: both consumer and producer are throttled: consumer by frame timings and producer by the available memory (max buffer window size). +- (UIImage *)imageLazilyCachedAtIndex:(NSUInteger)index +{ + // Early return if the requested index is beyond bounds. + // Note: We're comparing an index with a count and need to bail on greater than or equal to. + if (index >= self.frameCount) { + FLLog(FLLogLevelWarn, @"Skipping requested frame %lu beyond bounds (total frame count: %lu) for animated image: %@", (unsigned long)index, (unsigned long)self.frameCount, self); + return nil; + } + + // Remember requested frame index, this influences what we should cache next. + self.requestedFrameIndex = index; +#if defined(DEBUG) && DEBUG + if ([self.debug_delegate respondsToSelector:@selector(debug_animatedImage:didRequestCachedFrame:)]) { + [self.debug_delegate debug_animatedImage:self didRequestCachedFrame:index]; + } +#endif + + // Quick check to avoid doing any work if we already have all possible frames cached, a common case. + if ([self.cachedFrameIndexes count] < self.frameCount) { + // If we have frames that should be cached but aren't and aren't requested yet, request them. + // Exclude existing cached frames, frames already requested, and specially cached poster image. + NSMutableIndexSet *frameIndexesToAddToCacheMutable = [self frameIndexesToCache]; + [frameIndexesToAddToCacheMutable removeIndexes:self.cachedFrameIndexes]; + [frameIndexesToAddToCacheMutable removeIndexes:self.requestedFrameIndexes]; + [frameIndexesToAddToCacheMutable removeIndex:self.posterImageFrameIndex]; + NSIndexSet *frameIndexesToAddToCache = [frameIndexesToAddToCacheMutable copy]; + + // Asynchronously add frames to our cache. + if ([frameIndexesToAddToCache count] > 0) { + [self addFrameIndexesToCache:frameIndexesToAddToCache]; + } + } + + // Get the specified image. + UIImage *const image = self.cachedFramesForIndexes[@(index)]; + + // Purge if needed based on the current playhead position. + [self purgeFrameCacheIfNeeded]; + + return image; +} + + +// Only called once from `-imageLazilyCachedAtIndex` but factored into its own method for logical grouping. +- (void)addFrameIndexesToCache:(NSIndexSet *)frameIndexesToAddToCache +{ + // Order matters. First, iterate over the indexes starting from the requested frame index. + // Then, if there are any indexes before the requested frame index, do those. + const NSRange firstRange = NSMakeRange(self.requestedFrameIndex, self.frameCount - self.requestedFrameIndex); + const NSRange secondRange = NSMakeRange(0, self.requestedFrameIndex); + if (firstRange.length + secondRange.length != self.frameCount) { + FLLog(FLLogLevelWarn, @"Two-part frame cache range doesn't equal full range."); + } + + // Add to the requested list before we actually kick them off, so they don't get into the queue twice. + [self.requestedFrameIndexes addIndexes:frameIndexesToAddToCache]; + + // Lazily create dedicated isolation queue. + if (!self.serialQueue) { + _serialQueue = dispatch_queue_create("com.flipboard.framecachingqueue", DISPATCH_QUEUE_SERIAL); + } + + // Start streaming requested frames in the background into the cache. + // Avoid capturing self in the block as there's no reason to keep doing work if the animated image went away. + __weak __typeof(self) weakSelf = self; + dispatch_async(self.serialQueue, ^{ + // Produce and cache next needed frame. + void (^frameRangeBlock)(NSRange, BOOL *) = ^(NSRange range, BOOL *stop) { + // Iterate through contiguous indexes; can be faster than `enumerateIndexesInRange:options:usingBlock:`. + for (NSUInteger i = range.location; i < NSMaxRange(range); i++) { +#if defined(DEBUG) && DEBUG + const CFTimeInterval predrawBeginTime = CACurrentMediaTime(); +#endif + UIImage *const image = [weakSelf imageAtIndex:i]; +#if defined(DEBUG) && DEBUG + const CFTimeInterval predrawDuration = CACurrentMediaTime() - predrawBeginTime; + CFTimeInterval slowdownDuration = 0.0; + if ([self.debug_delegate respondsToSelector:@selector(debug_animatedImagePredrawingSlowdownFactor:)]) { + CGFloat predrawingSlowdownFactor = [self.debug_delegate debug_animatedImagePredrawingSlowdownFactor:self]; + slowdownDuration = predrawDuration * predrawingSlowdownFactor - predrawDuration; + [NSThread sleepForTimeInterval:slowdownDuration]; + } + FLLog(FLLogLevelVerbose, @"Predrew frame %lu in %f ms for animated image: %@", (unsigned long)i, (predrawDuration + slowdownDuration) * 1000, self); +#endif + // The results get returned one by one as soon as they're ready (and not in batch). + // The benefits of having the first frames as quick as possible outweigh building up a buffer to cope with potential hiccups when the CPU suddenly gets busy. + if (image && weakSelf) { + dispatch_async(dispatch_get_main_queue(), ^{ + weakSelf.cachedFramesForIndexes[@(i)] = image; + [weakSelf.cachedFrameIndexes addIndex:i]; + [weakSelf.requestedFrameIndexes removeIndex:i]; +#if defined(DEBUG) && DEBUG + if ([weakSelf.debug_delegate respondsToSelector:@selector(debug_animatedImage:didUpdateCachedFrames:)]) { + [weakSelf.debug_delegate debug_animatedImage:weakSelf didUpdateCachedFrames:weakSelf.cachedFrameIndexes]; + } +#endif + }); + } + } + }; + + [frameIndexesToAddToCache enumerateRangesInRange:firstRange options:0 usingBlock:frameRangeBlock]; + [frameIndexesToAddToCache enumerateRangesInRange:secondRange options:0 usingBlock:frameRangeBlock]; + }); +} + + ++ (CGSize)sizeForImage:(id)image +{ + CGSize imageSize = CGSizeZero; + + // Early return for nil + if (!image) { + return imageSize; + } + + if ([image isKindOfClass:[UIImage class]]) { + UIImage *const uiImage = (UIImage *)image; + imageSize = uiImage.size; + } else if ([image isKindOfClass:[FLAnimatedImage class]]) { + FLAnimatedImage *const animatedImage = (FLAnimatedImage *)image; + imageSize = animatedImage.size; + } else { + // Bear trap to capture bad images; we have seen crashers cropping up on iOS 7. + FLLog(FLLogLevelError, @"`image` isn't of expected types `UIImage` or `FLAnimatedImage`: %@", image); + } + + return imageSize; +} + + +#pragma mark - Private Methods +#pragma mark Frame Loading + +- (UIImage *)imageAtIndex:(NSUInteger)index +{ + // It's very important to use the cached `_imageSource` since the random access to a frame with `CGImageSourceCreateImageAtIndex` turns from an O(1) into an O(n) operation when re-initializing the image source every time. + const CGImageRef _Nullable imageRef = CGImageSourceCreateImageAtIndex(_imageSource, index, NULL); + + // Early return for nil + if (!imageRef) { + return nil; + } + + UIImage *image = [UIImage imageWithCGImage:imageRef]; + CFRelease(imageRef); + + // Loading in the image object is only half the work, the displaying image view would still have to synchronosly wait and decode the image, so we go ahead and do that here on the background thread. + if (self.isPredrawingEnabled) { + image = [[self class] predrawnImageFromImage:image]; + } + + return image; +} + + +#pragma mark Frame Caching + +- (NSMutableIndexSet *)frameIndexesToCache +{ + NSMutableIndexSet *indexesToCache = nil; + // Quick check to avoid building the index set if the number of frames to cache equals the total frame count. + if (self.frameCacheSizeCurrent == self.frameCount) { + indexesToCache = [self.allFramesIndexSet mutableCopy]; + } else { + indexesToCache = [[NSMutableIndexSet alloc] init]; + + // Add indexes to the set in two separate blocks- the first starting from the requested frame index, up to the limit or the end. + // The second, if needed, the remaining number of frames beginning at index zero. + const NSUInteger firstLength = MIN(self.frameCacheSizeCurrent, self.frameCount - self.requestedFrameIndex); + const NSRange firstRange = NSMakeRange(self.requestedFrameIndex, firstLength); + [indexesToCache addIndexesInRange:firstRange]; + const NSUInteger secondLength = self.frameCacheSizeCurrent - firstLength; + if (secondLength > 0) { + NSRange secondRange = NSMakeRange(0, secondLength); + [indexesToCache addIndexesInRange:secondRange]; + } + // Double check our math, before we add the poster image index which may increase it by one. + if ([indexesToCache count] != self.frameCacheSizeCurrent) { + FLLog(FLLogLevelWarn, @"Number of frames to cache doesn't equal expected cache size."); + } + + [indexesToCache addIndex:self.posterImageFrameIndex]; + } + + return indexesToCache; +} + + +- (void)purgeFrameCacheIfNeeded +{ + // Purge frames that are currently cached but don't need to be. + // But not if we're still under the number of frames to cache. + // This way, if all frames are allowed to be cached (the common case), we can skip all the `NSIndexSet` math below. + if ([self.cachedFrameIndexes count] > self.frameCacheSizeCurrent) { + NSMutableIndexSet *indexesToPurge = [self.cachedFrameIndexes mutableCopy]; + [indexesToPurge removeIndexes:[self frameIndexesToCache]]; + [indexesToPurge enumerateRangesUsingBlock:^(NSRange range, BOOL *stop) { + // Iterate through contiguous indexes; can be faster than `enumerateIndexesInRange:options:usingBlock:`. + for (NSUInteger i = range.location; i < NSMaxRange(range); i++) { + [self.cachedFrameIndexes removeIndex:i]; + [self.cachedFramesForIndexes removeObjectForKey:@(i)]; + // Note: Don't `CGImageSourceRemoveCacheAtIndex` on the image source for frames that we don't want cached any longer to maintain O(1) time access. +#if defined(DEBUG) && DEBUG + if ([self.debug_delegate respondsToSelector:@selector(debug_animatedImage:didUpdateCachedFrames:)]) { + dispatch_async(dispatch_get_main_queue(), ^{ + [self.debug_delegate debug_animatedImage:self didUpdateCachedFrames:self.cachedFrameIndexes]; + }); + } +#endif + } + }]; + } +} + + +- (void)growFrameCacheSizeAfterMemoryWarning:(NSNumber *)frameCacheSize +{ + self.frameCacheSizeMaxInternal = [frameCacheSize unsignedIntegerValue]; + FLLog(FLLogLevelDebug, @"Grew frame cache size max to %lu after memory warning for animated image: %@", (unsigned long)self.frameCacheSizeMaxInternal, self); + + // Schedule resetting the frame cache size max completely after a while. + const NSTimeInterval kResetDelay = 3.0; + [self.weakProxy performSelector:@selector(resetFrameCacheSizeMaxInternal) withObject:nil afterDelay:kResetDelay]; +} + + +- (void)resetFrameCacheSizeMaxInternal +{ + self.frameCacheSizeMaxInternal = FLAnimatedImageFrameCacheSizeNoLimit; + FLLog(FLLogLevelDebug, @"Reset frame cache size max (current frame cache size: %lu) for animated image: %@", (unsigned long)self.frameCacheSizeCurrent, self); +} + + +#pragma mark System Memory Warnings Notification Handler + +- (void)didReceiveMemoryWarning:(NSNotification *)notification +{ + self.memoryWarningCount++; + + // If we were about to grow larger, but got rapped on our knuckles by the system again, cancel. + [NSObject cancelPreviousPerformRequestsWithTarget:self.weakProxy selector:@selector(growFrameCacheSizeAfterMemoryWarning:) object:@(FLAnimatedImageFrameCacheSizeGrowAfterMemoryWarning)]; + [NSObject cancelPreviousPerformRequestsWithTarget:self.weakProxy selector:@selector(resetFrameCacheSizeMaxInternal) object:nil]; + + // Go down to the minimum and by that implicitly immediately purge from the cache if needed to not get jettisoned by the system and start producing frames on-demand. + FLLog(FLLogLevelDebug, @"Attempt setting frame cache size max to %lu (previous was %lu) after memory warning #%lu for animated image: %@", (unsigned long)FLAnimatedImageFrameCacheSizeLowMemory, (unsigned long)self.frameCacheSizeMaxInternal, (unsigned long)self.memoryWarningCount, self); + self.frameCacheSizeMaxInternal = FLAnimatedImageFrameCacheSizeLowMemory; + + // Schedule growing larger again after a while, but cap our attempts to prevent a periodic sawtooth wave (ramps upward and then sharply drops) of memory usage. + // + // [mem]^ (2) (5) (6) 1) Loading frames for the first time + // (*)| , , , 2) Mem warning #1; purge cache + // | /| (4)/| /| 3) Grow cache size a bit after a while, if no mem warning occurs + // | / | _/ | _/ | 4) Try to grow cache size back to optimum after a while, if no mem warning occurs + // |(1)/ |_/ |/ |__(7) 5) Mem warning #2; purge cache + // |__/ (3) 6) After repetition of (3) and (4), mem warning #3; purge cache + // +----------------------> 7) After 3 mem warnings, stay at minimum cache size + // [t] + // *) The mem high water mark before we get warned might change for every cycle. + // + const NSUInteger kGrowAttemptsMax = 2; + const NSTimeInterval kGrowDelay = 2.0; + if ((self.memoryWarningCount - 1) <= kGrowAttemptsMax) { + [self.weakProxy performSelector:@selector(growFrameCacheSizeAfterMemoryWarning:) withObject:@(FLAnimatedImageFrameCacheSizeGrowAfterMemoryWarning) afterDelay:kGrowDelay]; + } + + // Note: It's not possible to get the level of a memory warning with a public API: http://stackoverflow.com/questions/2915247/iphone-os-memory-warnings-what-do-the-different-levels-mean/2915477#2915477 +} + + +#pragma mark Image Decoding + +// Decodes the image's data and draws it off-screen fully in memory; it's thread-safe and hence can be called on a background thread. +// On success, the returned object is a new `UIImage` instance with the same content as the one passed in. +// On failure, the returned object is the unchanged passed in one; the data will not be predrawn in memory though and an error will be logged. +// First inspired by & good Karma to: https://gist.github.com/steipete/1144242 ++ (UIImage *)predrawnImageFromImage:(UIImage *)imageToPredraw +{ + // Always use a device RGB color space for simplicity and predictability what will be going on. + const CGColorSpaceRef _Nullable colorSpaceDeviceRGBRef = CGColorSpaceCreateDeviceRGB(); + // Early return on failure! + if (!colorSpaceDeviceRGBRef) { + FLLog(FLLogLevelError, @"Failed to `CGColorSpaceCreateDeviceRGB` for image %@", imageToPredraw); + return imageToPredraw; + } + + // Even when the image doesn't have transparency, we have to add the extra channel because Quartz doesn't support other pixel formats than 32 bpp/8 bpc for RGB: + // kCGImageAlphaNoneSkipFirst, kCGImageAlphaNoneSkipLast, kCGImageAlphaPremultipliedFirst, kCGImageAlphaPremultipliedLast + // (source: docs "Quartz 2D Programming Guide > Graphics Contexts > Table 2-1 Pixel formats supported for bitmap graphics contexts") + const size_t numberOfComponents = CGColorSpaceGetNumberOfComponents(colorSpaceDeviceRGBRef) + 1; // 4: RGB + A + + // "In iOS 4.0 and later, and OS X v10.6 and later, you can pass NULL if you want Quartz to allocate memory for the bitmap." (source: docs) + void *_Nullable data = NULL; + const size_t width = imageToPredraw.size.width; + const size_t height = imageToPredraw.size.height; + const size_t bitsPerComponent = CHAR_BIT; + + const size_t bitsPerPixel = (bitsPerComponent * numberOfComponents); + const size_t bytesPerPixel = (bitsPerPixel / BYTE_SIZE); + const size_t bytesPerRow = (bytesPerPixel * width); + + CGBitmapInfo bitmapInfo = kCGBitmapByteOrderDefault; + + CGImageAlphaInfo alphaInfo = CGImageGetAlphaInfo(imageToPredraw.CGImage); + // If the alpha info doesn't match to one of the supported formats (see above), pick a reasonable supported one. + // "For bitmaps created in iOS 3.2 and later, the drawing environment uses the premultiplied ARGB format to store the bitmap data." (source: docs) + if (alphaInfo == kCGImageAlphaNone || alphaInfo == kCGImageAlphaOnly) { + alphaInfo = kCGImageAlphaNoneSkipFirst; + } else if (alphaInfo == kCGImageAlphaFirst) { + alphaInfo = kCGImageAlphaPremultipliedFirst; + } else if (alphaInfo == kCGImageAlphaLast) { + alphaInfo = kCGImageAlphaPremultipliedLast; + } + // "The constants for specifying the alpha channel information are declared with the `CGImageAlphaInfo` type but can be passed to this parameter safely." (source: docs) + bitmapInfo |= alphaInfo; + + // Create our own graphics context to draw to; `UIGraphicsGetCurrentContext`/`UIGraphicsBeginImageContextWithOptions` doesn't create a new context but returns the current one which isn't thread-safe (e.g. main thread could use it at the same time). + // Note: It's not worth caching the bitmap context for multiple frames ("unique key" would be `width`, `height` and `hasAlpha`), it's ~50% slower. Time spent in libRIP's `CGSBlendBGRA8888toARGB8888` suddenly shoots up -- not sure why. + const CGContextRef _Nullable bitmapContextRef = CGBitmapContextCreate(data, width, height, bitsPerComponent, bytesPerRow, colorSpaceDeviceRGBRef, bitmapInfo); + CGColorSpaceRelease(colorSpaceDeviceRGBRef); + // Early return on failure! + if (!bitmapContextRef) { + FLLog(FLLogLevelError, @"Failed to `CGBitmapContextCreate` with color space %@ and parameters (width: %zu height: %zu bitsPerComponent: %zu bytesPerRow: %zu) for image %@", colorSpaceDeviceRGBRef, width, height, bitsPerComponent, bytesPerRow, imageToPredraw); + return imageToPredraw; + } + + // Draw image in bitmap context and create image by preserving receiver's properties. + CGContextDrawImage(bitmapContextRef, CGRectMake(0.0, 0.0, imageToPredraw.size.width, imageToPredraw.size.height), imageToPredraw.CGImage); + const CGImageRef _Nullable predrawnImageRef = CGBitmapContextCreateImage(bitmapContextRef); + UIImage *_Nullable predrawnImage = predrawnImageRef ? [UIImage imageWithCGImage:predrawnImageRef scale:imageToPredraw.scale orientation:imageToPredraw.imageOrientation] : nil; + CGImageRelease(predrawnImageRef); + CGContextRelease(bitmapContextRef); + + // Early return on failure! + if (!predrawnImage) { + FLLog(FLLogLevelError, @"Failed to `imageWithCGImage:scale:orientation:` with image ref %@ created with color space %@ and bitmap context %@ and properties and properties (scale: %f orientation: %ld) for image %@", predrawnImageRef, colorSpaceDeviceRGBRef, bitmapContextRef, imageToPredraw.scale, (long)imageToPredraw.imageOrientation, imageToPredraw); + return imageToPredraw; + } + + return predrawnImage; +} + + +#pragma mark - Description + +- (NSString *)description +{ + NSString *description = [super description]; + + description = [description stringByAppendingFormat:@" size=%@", NSStringFromCGSize(self.size)]; + description = [description stringByAppendingFormat:@" frameCount=%lu", (unsigned long)self.frameCount]; + + return description; +} + + +@end + +#pragma mark - Logging + +@implementation FLAnimatedImage (Logging) + +static void (^_logBlock)(NSString *logString, FLLogLevel logLevel) = nil; +static FLLogLevel _logLevel; + ++ (void)setLogBlock:(void (^_Nullable)(NSString *logString, FLLogLevel logLevel))logBlock logLevel:(FLLogLevel)logLevel +{ + _logBlock = [logBlock copy]; + _logLevel = logLevel; +} + ++ (void)logStringFromBlock:(NSString *(^_Nullable)(void))stringBlock withLevel:(FLLogLevel)level +{ + if (level <= _logLevel && _logBlock && stringBlock) { + _logBlock(stringBlock(), level); + } +} + +@end + + +#pragma mark - FLWeakProxy + +@interface FLWeakProxy () + +@property (nonatomic, weak) id target; + +@end + + +@implementation FLWeakProxy + +#pragma mark Life Cycle + +// This is the designated creation method of an `FLWeakProxy` and +// as a subclass of `NSProxy` it doesn't respond to or need `-init`. ++ (instancetype)weakProxyForObject:(id)targetObject +{ + FLWeakProxy *weakProxy = [FLWeakProxy alloc]; + weakProxy.target = targetObject; + return weakProxy; +} + + +#pragma mark Forwarding Messages + +- (id)forwardingTargetForSelector:(SEL)selector +{ + // Keep it lightweight: access the ivar directly + return _target; +} + + +#pragma mark - NSWeakProxy Method Overrides +#pragma mark Handling Unimplemented Methods + +- (void)forwardInvocation:(NSInvocation *)invocation +{ + // Fallback for when target is nil. Don't do anything, just return 0/NULL/nil. + // The method signature we've received to get here is just a dummy to keep `doesNotRecognizeSelector:` from firing. + // We can't really handle struct return types here because we don't know the length. + void *_Nullable nullPointer = NULL; + [invocation setReturnValue:&nullPointer]; +} + + +- (NSMethodSignature *)methodSignatureForSelector:(SEL)selector +{ + // We only get here if `forwardingTargetForSelector:` returns nil. + // In that case, our weak target has been reclaimed. Return a dummy method signature to keep `doesNotRecognizeSelector:` from firing. + // We'll emulate the Obj-c messaging nil behavior by setting the return value to nil in `forwardInvocation:`, but we'll assume that the return value is `sizeof(void *)`. + // Other libraries handle this situation by making use of a global method signature cache, but that seems heavier than necessary and has issues as well. + // See https://www.mikeash.com/pyblog/friday-qa-2010-02-26-futures.html and https://github.com/steipete/PSTDelegateProxy/issues/1 for examples of using a method signature cache. + return [NSObject instanceMethodSignatureForSelector:@selector(init)]; +} + + +@end diff --git a/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.m b/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.m new file mode 100755 index 0000000..34178ef --- /dev/null +++ b/Pods/FLAnimatedImage/FLAnimatedImage/FLAnimatedImageView.m @@ -0,0 +1,460 @@ +// +// FLAnimatedImageView.h +// Flipboard +// +// Created by Raphael Schaad on 7/8/13. +// Copyright (c) Flipboard. All rights reserved. +// + + +#import "FLAnimatedImageView.h" +#import "FLAnimatedImage.h" +#import + + +#if defined(DEBUG) && DEBUG +@protocol FLAnimatedImageViewDebugDelegate +@optional +- (void)debug_animatedImageView:(FLAnimatedImageView *)animatedImageView waitingForFrame:(NSUInteger)index duration:(NSTimeInterval)duration; +@end +#endif + + +@interface FLAnimatedImageView () + +// Override of public `readonly` properties as private `readwrite` +@property (nonatomic, strong, readwrite) UIImage *currentFrame; +@property (nonatomic, assign, readwrite) NSUInteger currentFrameIndex; + +@property (nonatomic, assign) NSUInteger loopCountdown; +@property (nonatomic, assign) NSTimeInterval accumulator; +@property (nonatomic, strong) CADisplayLink *displayLink; + +@property (nonatomic, assign) BOOL shouldAnimate; // Before checking this value, call `-updateShouldAnimate` whenever the animated image or visibility (window, superview, hidden, alpha) has changed. +@property (nonatomic, assign) BOOL needsDisplayWhenImageBecomesAvailable; + +#if defined(DEBUG) && DEBUG +@property (nonatomic, weak) id debug_delegate; +#endif + +@end + + +@implementation FLAnimatedImageView +@synthesize runLoopMode = _runLoopMode; + +#pragma mark - Initializers + +// -initWithImage: isn't documented as a designated initializer of UIImageView, but it actually seems to be. +// Using -initWithImage: doesn't call any of the other designated initializers. +- (instancetype)initWithImage:(UIImage *)image +{ + self = [super initWithImage:image]; + if (self) { + [self commonInit]; + } + return self; +} + +// -initWithImage:highlightedImage: also isn't documented as a designated initializer of UIImageView, but it doesn't call any other designated initializers. +- (instancetype)initWithImage:(UIImage *)image highlightedImage:(UIImage *)highlightedImage +{ + self = [super initWithImage:image highlightedImage:highlightedImage]; + if (self) { + [self commonInit]; + } + return self; +} + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [self commonInit]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)aDecoder +{ + self = [super initWithCoder:aDecoder]; + if (self) { + [self commonInit]; + } + return self; +} + +- (void)commonInit +{ + self.runLoopMode = [[self class] defaultRunLoopMode]; + + if (@available(iOS 11.0, *)) { + self.accessibilityIgnoresInvertColors = YES; + } +} + + +#pragma mark - Accessors +#pragma mark Public + +- (void)setAnimatedImage:(FLAnimatedImage *)animatedImage +{ + if (![_animatedImage isEqual:animatedImage]) { + if (animatedImage) { + if (super.image) { + // UIImageView's `setImage:` will internally call its layer's `setContentsTransform:` based on the `image.imageOrientation`. + // The `contentsTransform` will affect layer rendering rotation because the CGImage's bitmap buffer does not actually take rotation. + // However, when calling `setImage:nil`, this `contentsTransform` will not be reset to identity. + // Further animation frame will be rendered as rotated. So we must set it to the poster image to clear the previous state. + // See more here: https://github.com/Flipboard/FLAnimatedImage/issues/100 + super.image = animatedImage.posterImage; + // Clear out the image. + super.image = nil; + } + // Ensure disabled highlighting; it's not supported (see `-setHighlighted:`). + super.highlighted = NO; + // UIImageView seems to bypass some accessors when calculating its intrinsic content size, so this ensures its intrinsic content size comes from the animated image. + [self invalidateIntrinsicContentSize]; + } else { + // Stop animating before the animated image gets cleared out. + [self stopAnimating]; + } + + _animatedImage = animatedImage; + + self.currentFrame = animatedImage.posterImage; + self.currentFrameIndex = 0; + if (animatedImage.loopCount > 0) { + self.loopCountdown = animatedImage.loopCount; + } else { + self.loopCountdown = NSUIntegerMax; + } + self.accumulator = 0.0; + + // Start animating after the new animated image has been set. + [self updateShouldAnimate]; + if (self.shouldAnimate) { + [self startAnimating]; + } + + [self.layer setNeedsDisplay]; + } +} + + +#pragma mark - Life Cycle + +- (void)dealloc +{ + // Removes the display link from all run loop modes. + [_displayLink invalidate]; +} + + +#pragma mark - UIView Method Overrides +#pragma mark Observing View-Related Changes + +- (void)didMoveToSuperview +{ + [super didMoveToSuperview]; + + [self updateShouldAnimate]; + if (self.shouldAnimate) { + [self startAnimating]; + } else { + [self stopAnimating]; + } +} + + +- (void)didMoveToWindow +{ + [super didMoveToWindow]; + + [self updateShouldAnimate]; + if (self.shouldAnimate) { + [self startAnimating]; + } else { + [self stopAnimating]; + } +} + +- (void)setAlpha:(CGFloat)alpha +{ + [super setAlpha:alpha]; + + [self updateShouldAnimate]; + if (self.shouldAnimate) { + [self startAnimating]; + } else { + [self stopAnimating]; + } +} + +- (void)setHidden:(BOOL)hidden +{ + [super setHidden:hidden]; + + [self updateShouldAnimate]; + if (self.shouldAnimate) { + [self startAnimating]; + } else { + [self stopAnimating]; + } +} + + +#pragma mark Auto Layout + +- (CGSize)intrinsicContentSize +{ + // Default to let UIImageView handle the sizing of its image, and anything else it might consider. + CGSize intrinsicContentSize = [super intrinsicContentSize]; + + // If we have have an animated image, use its image size. + // UIImageView's intrinsic content size seems to be the size of its image. The obvious approach, simply calling `-invalidateIntrinsicContentSize` when setting an animated image, results in UIImageView steadfastly returning `{UIViewNoIntrinsicMetric, UIViewNoIntrinsicMetric}` for its intrinsicContentSize. + // (Perhaps UIImageView bypasses its `-image` getter in its implementation of `-intrinsicContentSize`, as `-image` is not called after calling `-invalidateIntrinsicContentSize`.) + if (self.animatedImage) { + intrinsicContentSize = self.image.size; + } + + return intrinsicContentSize; +} + + +#pragma mark - UIImageView Method Overrides +#pragma mark Image Data + +- (UIImage *)image +{ + UIImage *image = nil; + if (self.animatedImage) { + // Initially set to the poster image. + image = self.currentFrame; + } else { + image = super.image; + } + return image; +} + + +- (void)setImage:(UIImage *)image +{ + if (image) { + // Clear out the animated image and implicitly pause animation playback. + self.animatedImage = nil; + } + + super.image = image; +} + + +#pragma mark Animating Images + +- (NSTimeInterval)frameDelayGreatestCommonDivisor +{ + // Presision is set to half of the `kFLAnimatedImageDelayTimeIntervalMinimum` in order to minimize frame dropping. + const NSTimeInterval kGreatestCommonDivisorPrecision = 2.0 / kFLAnimatedImageDelayTimeIntervalMinimum; + + NSArray *const delays = self.animatedImage.delayTimesForIndexes.allValues; + + // Scales the frame delays by `kGreatestCommonDivisorPrecision` + // then converts it to an UInteger for in order to calculate the GCD. + NSUInteger scaledGCD = lrint([delays.firstObject floatValue] * kGreatestCommonDivisorPrecision); + for (NSNumber *value in delays) { + scaledGCD = gcd(lrint([value floatValue] * kGreatestCommonDivisorPrecision), scaledGCD); + } + + // Reverse to scale to get the value back into seconds. + return (double)scaledGCD / kGreatestCommonDivisorPrecision; +} + + +static NSUInteger gcd(NSUInteger a, NSUInteger b) +{ + // http://en.wikipedia.org/wiki/Greatest_common_divisor + if (a < b) { + return gcd(b, a); + } else if (a == b) { + return b; + } + + while (true) { + const NSUInteger remainder = a % b; + if (remainder == 0) { + return b; + } + a = b; + b = remainder; + } +} + + +- (void)startAnimating +{ + if (self.animatedImage) { + // Lazily create the display link. + if (!self.displayLink) { + // It is important to note the use of a weak proxy here to avoid a retain cycle. `-displayLinkWithTarget:selector:` + // will retain its target until it is invalidated. We use a weak proxy so that the image view will get deallocated + // independent of the display link's lifetime. Upon image view deallocation, we invalidate the display + // link which will lead to the deallocation of both the display link and the weak proxy. + FLWeakProxy *weakProxy = [FLWeakProxy weakProxyForObject:self]; + self.displayLink = [CADisplayLink displayLinkWithTarget:weakProxy selector:@selector(displayDidRefresh:)]; + + [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:self.runLoopMode]; + } + + if (@available(iOS 10, *)) { + // Adjusting preferredFramesPerSecond allows us to skip unnecessary calls to displayDidRefresh: when showing GIFs + // that don't animate quickly. Use ceil to err on the side of too many FPS so we don't miss a frame transition moment. + self.displayLink.preferredFramesPerSecond = ceil(1.0 / [self frameDelayGreatestCommonDivisor]); + } else { + const NSTimeInterval kDisplayRefreshRate = 60.0; // 60Hz + self.displayLink.frameInterval = MAX([self frameDelayGreatestCommonDivisor] * kDisplayRefreshRate, 1); + } + self.displayLink.paused = NO; + } else { + [super startAnimating]; + } +} + +- (void)setRunLoopMode:(NSRunLoopMode)runLoopMode +{ + if (![@[NSDefaultRunLoopMode, NSRunLoopCommonModes] containsObject:runLoopMode]) { + NSAssert(NO, @"Invalid run loop mode: %@", runLoopMode); + _runLoopMode = [[self class] defaultRunLoopMode]; + } else { + _runLoopMode = runLoopMode; + } +} + +- (void)stopAnimating +{ + if (self.animatedImage) { + self.displayLink.paused = YES; + } else { + [super stopAnimating]; + } +} + + +- (BOOL)isAnimating +{ + BOOL isAnimating = NO; + if (self.animatedImage) { + isAnimating = self.displayLink && !self.displayLink.isPaused; + } else { + isAnimating = [super isAnimating]; + } + return isAnimating; +} + + +#pragma mark Highlighted Image Unsupport + +- (void)setHighlighted:(BOOL)highlighted +{ + // Highlighted image is unsupported for animated images, but implementing it breaks the image view when embedded in a UICollectionViewCell. + if (!self.animatedImage) { + [super setHighlighted:highlighted]; + } +} + + +#pragma mark - Private Methods +#pragma mark Animation + +// Don't repeatedly check our window & superview in `-displayDidRefresh:` for performance reasons. +// Just update our cached value whenever the animated image or visibility (window, superview, hidden, alpha) is changed. +- (void)updateShouldAnimate +{ + const BOOL isVisible = self.window && self.superview && ![self isHidden] && self.alpha > 0.0; + self.shouldAnimate = self.animatedImage && isVisible; +} + + +- (void)displayDidRefresh:(CADisplayLink *)displayLink +{ + // If for some reason a wild call makes it through when we shouldn't be animating, bail. + // Early return! + if (!self.shouldAnimate) { + FLLog(FLLogLevelWarn, @"Trying to animate image when we shouldn't: %@", self); + return; + } + + NSNumber *_Nullable const delayTimeNumber = [self.animatedImage.delayTimesForIndexes objectForKey:@(self.currentFrameIndex)]; + // If we don't have a frame delay (e.g. corrupt frame), don't update the view but skip the playhead to the next frame (in else-block). + if (delayTimeNumber != nil) { + const NSTimeInterval delayTime = [delayTimeNumber floatValue]; + // If we have a nil image (e.g. waiting for frame), don't update the view nor playhead. + UIImage *_Nullable const image = [self.animatedImage imageLazilyCachedAtIndex:self.currentFrameIndex]; + if (image) { + FLLog(FLLogLevelVerbose, @"Showing frame %lu for animated image: %@", (unsigned long)self.currentFrameIndex, self.animatedImage); + self.currentFrame = image; + if (self.needsDisplayWhenImageBecomesAvailable) { + [self.layer setNeedsDisplay]; + self.needsDisplayWhenImageBecomesAvailable = NO; + } + + if (@available(iOS 10, *)) { + self.accumulator += displayLink.targetTimestamp - CACurrentMediaTime(); + } else { + self.accumulator += displayLink.duration * (NSTimeInterval)displayLink.frameInterval; + } + + // While-loop first inspired by & good Karma to: https://github.com/ondalabs/OLImageView/blob/master/OLImageView.m + while (self.accumulator >= delayTime) { + self.accumulator -= delayTime; + self.currentFrameIndex++; + if (self.currentFrameIndex >= self.animatedImage.frameCount) { + // If we've looped the number of times that this animated image describes, stop looping. + self.loopCountdown--; + if (self.loopCompletionBlock) { + self.loopCompletionBlock(self.loopCountdown); + } + + if (self.loopCountdown == 0) { + [self stopAnimating]; + return; + } + self.currentFrameIndex = 0; + } + // Calling `-setNeedsDisplay` will just paint the current frame, not the new frame that we may have moved to. + // Instead, set `needsDisplayWhenImageBecomesAvailable` to `YES` -- this will paint the new image once loaded. + self.needsDisplayWhenImageBecomesAvailable = YES; + } + } else { + FLLog(FLLogLevelDebug, @"Waiting for frame %lu for animated image: %@", (unsigned long)self.currentFrameIndex, self.animatedImage); +#if defined(DEBUG) && DEBUG + if ([self.debug_delegate respondsToSelector:@selector(debug_animatedImageView:waitingForFrame:duration:)]) { + if (@available(iOS 10, *)) { + [self.debug_delegate debug_animatedImageView:self waitingForFrame:self.currentFrameIndex duration:displayLink.targetTimestamp - CACurrentMediaTime()]; + } else { + [self.debug_delegate debug_animatedImageView:self waitingForFrame:self.currentFrameIndex duration:displayLink.duration * (NSTimeInterval)displayLink.frameInterval]; + } + } +#endif + } + } else { + self.currentFrameIndex++; + } +} + ++ (NSRunLoopMode)defaultRunLoopMode +{ + // Key off `activeProcessorCount` (as opposed to `processorCount`) since the system could shut down cores in certain situations. + return [NSProcessInfo processInfo].activeProcessorCount > 1 ? NSRunLoopCommonModes : NSDefaultRunLoopMode; +} + + +#pragma mark - CALayerDelegate (Informal) +#pragma mark Providing the Layer's Content + +- (void)displayLayer:(CALayer *)layer +{ + layer.contents = (__bridge id)self.image.CGImage; +} + + +@end diff --git a/Pods/FLAnimatedImage/FLAnimatedImage/include/FLAnimatedImage.h b/Pods/FLAnimatedImage/FLAnimatedImage/include/FLAnimatedImage.h new file mode 100644 index 0000000..0dd731c --- /dev/null +++ b/Pods/FLAnimatedImage/FLAnimatedImage/include/FLAnimatedImage.h @@ -0,0 +1,83 @@ +// +// FLAnimatedImage.h +// Flipboard +// +// Created by Raphael Schaad on 7/8/13. +// Copyright (c) Flipboard. All rights reserved. +// + + +#import + +// Allow user classes conveniently just importing one header. +#import "FLAnimatedImageView.h" + +#ifndef NS_DESIGNATED_INITIALIZER + #if __has_attribute(objc_designated_initializer) + #define NS_DESIGNATED_INITIALIZER __attribute((objc_designated_initializer)) + #else + #define NS_DESIGNATED_INITIALIZER + #endif +#endif + +extern const NSTimeInterval kFLAnimatedImageDelayTimeIntervalMinimum; + +// +// An `FLAnimatedImage`'s job is to deliver frames in a highly performant way and works in conjunction with `FLAnimatedImageView`. +// It subclasses `NSObject` and not `UIImage` because it's only an "image" in the sense that a sea lion is a lion. +// It tries to intelligently choose the frame cache size depending on the image and memory situation with the goal to lower CPU usage for smaller ones, lower memory usage for larger ones and always deliver frames for high performant play-back. +// Note: `posterImage`, `size`, `loopCount`, `delayTimes` and `frameCount` don't change after successful initialization. +// +@interface FLAnimatedImage : NSObject + +@property (nonatomic, strong, readonly) UIImage *posterImage; // Guaranteed to be loaded; usually equivalent to `-imageLazilyCachedAtIndex:0` +@property (nonatomic, assign, readonly) CGSize size; // The `.posterImage`'s `.size` + +@property (nonatomic, assign, readonly) NSUInteger loopCount; // "The number of times to repeat an animated sequence." according to ImageIO (note the slightly different definition to Netscape 2.0 Loop Extension); 0 means repeating the animation forever +@property (nonatomic, strong, readonly) NSDictionary *delayTimesForIndexes; // Of type `NSTimeInterval` boxed in `NSNumber`s +@property (nonatomic, assign, readonly) NSUInteger frameCount; // Number of valid frames; equal to `[.delayTimes count]` + +@property (nonatomic, assign, readonly) NSUInteger frameCacheSizeCurrent; // Current size of intelligently chosen buffer window; can range in the interval [1..frameCount] +@property (nonatomic, assign) NSUInteger frameCacheSizeMax; // Allow to cap the cache size; 0 means no specific limit (default) + +// Intended to be called from main thread synchronously; will return immediately. +// If the result isn't cached, will return `nil`; the caller should then pause playback, not increment frame counter and keep polling. +// After an initial loading time, depending on `frameCacheSize`, frames should be available immediately from the cache. +- (UIImage *)imageLazilyCachedAtIndex:(NSUInteger)index; + +// Pass either a `UIImage` or an `FLAnimatedImage` and get back its size ++ (CGSize)sizeForImage:(id)image; + +// On success, the initializers return an `FLAnimatedImage` with all fields initialized, on failure they return `nil` and an error will be logged. +- (instancetype)initWithAnimatedGIFData:(NSData *)data; +// Pass 0 for optimalFrameCacheSize to get the default, predrawing is enabled by default. +- (instancetype)initWithAnimatedGIFData:(NSData *)data optimalFrameCacheSize:(NSUInteger)optimalFrameCacheSize predrawingEnabled:(BOOL)isPredrawingEnabled NS_DESIGNATED_INITIALIZER; ++ (instancetype)animatedImageWithGIFData:(NSData *)data; + +@property (nonatomic, strong, readonly) NSData *data; // The data the receiver was initialized with; read-only + +@end + +typedef NS_ENUM(NSUInteger, FLLogLevel) { + FLLogLevelNone = 0, + FLLogLevelError, + FLLogLevelWarn, + FLLogLevelInfo, + FLLogLevelDebug, + FLLogLevelVerbose +}; + +@interface FLAnimatedImage (Logging) + ++ (void)setLogBlock:(void (^)(NSString *logString, FLLogLevel logLevel))logBlock logLevel:(FLLogLevel)logLevel; ++ (void)logStringFromBlock:(NSString *(^)(void))stringBlock withLevel:(FLLogLevel)level; + +@end + +#define FLLog(logLevel, format, ...) [FLAnimatedImage logStringFromBlock:^NSString *{ return [NSString stringWithFormat:(format), ## __VA_ARGS__]; } withLevel:(logLevel)] + +@interface FLWeakProxy : NSProxy + ++ (instancetype)weakProxyForObject:(id)targetObject; + +@end diff --git a/Pods/FLAnimatedImage/FLAnimatedImage/include/FLAnimatedImageView.h b/Pods/FLAnimatedImage/FLAnimatedImage/include/FLAnimatedImageView.h new file mode 100644 index 0000000..8884e53 --- /dev/null +++ b/Pods/FLAnimatedImage/FLAnimatedImage/include/FLAnimatedImageView.h @@ -0,0 +1,36 @@ +// +// FLAnimatedImageView.h +// Flipboard +// +// Created by Raphael Schaad on 7/8/13. +// Copyright (c) Flipboard. All rights reserved. +// + + +#import + +@class FLAnimatedImage; +@protocol FLAnimatedImageViewDebugDelegate; + + +// +// An `FLAnimatedImageView` can take an `FLAnimatedImage` and plays it automatically when in view hierarchy and stops when removed. +// The animation can also be controlled with the `UIImageView` methods `-start/stop/isAnimating`. +// It is a fully compatible `UIImageView` subclass and can be used as a drop-in component to work with existing code paths expecting to display a `UIImage`. +// Under the hood it uses a `CADisplayLink` for playback, which can be inspected with `currentFrame` & `currentFrameIndex`. +// +@interface FLAnimatedImageView : UIImageView + +// Setting `[UIImageView.image]` to a non-`nil` value clears out existing `animatedImage`. +// And vice versa, setting `animatedImage` will initially populate the `[UIImageView.image]` to its `posterImage` and then start animating and hold `currentFrame`. +@property (nonatomic, strong) FLAnimatedImage *animatedImage; +@property (nonatomic, copy) void(^loopCompletionBlock)(NSUInteger loopCountRemaining); + +@property (nonatomic, strong, readonly) UIImage *currentFrame; +@property (nonatomic, assign, readonly) NSUInteger currentFrameIndex; + +// The animation runloop mode. Enables playback during scrolling by allowing timer events (i.e. animation) with NSRunLoopCommonModes. +// To keep scrolling smooth on single-core devices such as iPhone 3GS/4 and iPod Touch 4th gen, the default run loop mode is NSDefaultRunLoopMode. Otherwise, the default is NSDefaultRunLoopMode. +@property (nonatomic, copy) NSRunLoopMode runLoopMode; + +@end diff --git a/Pods/FLAnimatedImage/LICENSE b/Pods/FLAnimatedImage/LICENSE new file mode 100644 index 0000000..632653f --- /dev/null +++ b/Pods/FLAnimatedImage/LICENSE @@ -0,0 +1,21 @@ +The MIT License (MIT) + +Copyright (c) 2014-2016 Flipboard + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Pods/FLAnimatedImage/README.md b/Pods/FLAnimatedImage/README.md new file mode 100644 index 0000000..79c1d85 --- /dev/null +++ b/Pods/FLAnimatedImage/README.md @@ -0,0 +1,122 @@ +# [FLAnimatedImage](https://github.com/Flipboard/FLAnimatedImage) · [![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/Flipboard/FLAnimatedImage/blob/master/LICENSE) [![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg)](https://github.com/Flipboard/FLAnimatedImage/pulls) + +FLAnimatedImage is a performant animated GIF engine for iOS: + +- Plays multiple GIFs simultaneously with a playback speed comparable to desktop browsers +- Honors variable frame delays +- Behaves gracefully under memory pressure +- Eliminates delays or blocking during the first playback loop +- Interprets the frame delays of fast GIFs the same way modern browsers do + +It's a well-tested [component that powers all GIFs in Flipboard](http://engineering.flipboard.com/2014/05/animated-gif). To understand its behavior it comes with an interactive demo: + +![Flipboard playing multiple GIFs](https://github.com/Flipboard/FLAnimatedImage/raw/master/images/flanimatedimage-demo-player.gif) + +## Who is this for? + +- Apps that don't support animated GIFs yet +- Apps that already support animated GIFs but want a higher performance solution +- People who want to tinker with the code ([the corresponding blog post](http://engineering.flipboard.com/2014/05/animated-gif/) is a great place to start; also see the *To Do* section below) + +## Installation & Usage + +FLAnimatedImage is a well-encapsulated drop-in component. Simply replace your `UIImageView` instances with instances of `FLAnimatedImageView` to get animated GIF support. There is no central cache or state to manage. + +If using CocoaPods, the quickest way to try it out is to type this on the command line: + +```shell +$ pod try FLAnimatedImage +``` + +To add it to your app, copy the two classes `FLAnimatedImage.h/.m` and `FLAnimatedImageView.h/.m` into your Xcode project or add via [CocoaPods](http://cocoapods.org) by adding this to your Podfile: + +```ruby +pod 'FLAnimatedImage', '~> 1.0' +``` + +If using [Carthage](https://github.com/Carthage/Carthage), add the following line into your `Cartfile` + +``` +github "Flipboard/FLAnimatedImage" +``` + +If using [Swift Package Manager](https://github.com/apple/swift-package-manager), add the following to your `Package.swift` or add via XCode: + +```swift +dependencies: [ + .package(url: "https://github.com/Flipboard/FLAnimatedImage.git", .upToNextMajor(from: "1.0.16")) +], +targets: [ + .target(name: "TestProject", dependencies: ["FLAnimatedImage""]) +] +``` + +In your code, `#import "FLAnimatedImage.h"`, create an image from an animated GIF, and setup the image view to display it: + +```objective-c +FLAnimatedImage *image = [FLAnimatedImage animatedImageWithGIFData:[NSData dataWithContentsOfURL:[NSURL URLWithString:@"https://upload.wikimedia.org/wikipedia/commons/2/2c/Rotating_earth_%28large%29.gif"]]]; +FLAnimatedImageView *imageView = [[FLAnimatedImageView alloc] init]; +imageView.animatedImage = image; +imageView.frame = CGRectMake(0.0, 0.0, 100.0, 100.0); +[self.view addSubview:imageView]; +``` + +It's flexible to integrate in your custom image loading stack and backwards compatible to iOS 9. + +It uses ARC and the Apple frameworks `QuartzCore`, `ImageIO`, `MobileCoreServices`, and `CoreGraphics`. + +It is capable of fine-grained logging. A block can be set on `FLAnimatedImage` that's invoked when logging occurs with various log levels via the `+setLogBlock:logLevel:` method. For example: + +```objective-c +// Set up FLAnimatedImage logging. +[FLAnimatedImage setLogBlock:^(NSString *logString, FLLogLevel logLevel) { + // Using NSLog + NSLog(@"%@", logString); + + // ...or CocoaLumberjackLogger only logging warnings and errors + if (logLevel == FLLogLevelError) { + DDLogError(@"%@", logString); + } else if (logLevel == FLLogLevelWarn) { + DDLogWarn(@"%@", logString); + } +} logLevel:FLLogLevelWarn]; +``` + +Since FLAnimatedImage is licensed under MIT, it's compatible with the terms of using it for any app on the App Store. + +## Release process +1. Bump version in `FLAnimatedImage.podspec`, update CHANGES, and commit. +2. Tag commit with `> git tag -a -m ""` and `> git push --tags`. +3. [Submit Podspec to Trunk with](https://guides.cocoapods.org/making/specs-and-specs-repo.html#how-do-i-update-an-existing-pod) `> pod trunk push FLAnimatedImage.podspec` ([ensure you're auth'ed](https://guides.cocoapods.org/making/getting-setup-with-trunk.html#getting-started)). +## To Do +- Support other animated image formats such as APNG or WebP (WebP support implemented [here](https://github.com/Flipboard/FLAnimatedImage/pull/86)) +- Integration into network libraries and image caches +- Investigate whether `FLAnimatedImage` should become a `UIImage` subclass +- Smarter buffering +- Bring demo app to iPhone + +This code has successfully shipped to many people as is, but please do come with your questions, issues and pull requests! + +## Select apps using FLAnimatedImage +(alphabetically) + +- [Close-up](http://closeu.pe) +- [Design Shots](https://itunes.apple.com/app/id792517951) +- [Dropbox](https://www.dropbox.com) +- [Dumpert](http://dumpert.nl) +- [Ello](https://ello.co/) +- [Facebook](https://facebook.com) +- [Flipboard](https://flipboard.com) +- [getGIF](https://itunes.apple.com/app/id964784701) +- [Gifalicious](https://itunes.apple.com/us/app/gifalicious-see-your-gifs/id965346708?mt=8) +- [HashPhotos](https://itunes.apple.com/app/id685784609) +- [Instagram](https://www.instagram.com/) +- [LiveBooth](http://www.liveboothapp.com) +- [lWlVl Festival](http://lwlvl.com) +- [Medium](https://medium.com) +- [Pinterest](https://pinterest.com) +- [Slack](https://slack.com/) +- [Telegram](https://telegram.org/) +- [Zip Code Finder](https://itunes.apple.com/app/id893031254) + +If you're using FLAnimatedImage in your app, please open a PR to add it to this list! diff --git a/Pods/HWPanModal/LICENSE b/Pods/HWPanModal/LICENSE new file mode 100644 index 0000000..2d7cb4e --- /dev/null +++ b/Pods/HWPanModal/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2019 Heath Wang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Pods/HWPanModal/README-CN.md b/Pods/HWPanModal/README-CN.md new file mode 100644 index 0000000..e44e914 --- /dev/null +++ b/Pods/HWPanModal/README-CN.md @@ -0,0 +1,330 @@ + +# HWPanModal 👍 +

+ + + + + + + + + + + + + + + + + codebeat badge + +

+ + +HWPanModal 用于从底部弹出控制器(UIViewController),并用拖拽手势来关闭控制器。提供了自定义视图大小和位置,高度自定义弹出视图的各个属性。 + +APP中常见的从底部弹出视图,可以通过该框架快速实现,只需专注于相应的视图编写。常规热门app的UI示例: +1. 知乎APP的查看评论 +2. 抖音的评论查看 +3. 微信,网易音乐等app弹出分享 +4. 嘀嗒出行行程进行页(地图上的浮层view效果) +5. iOS13 默认模态(present)效果 +6. And more... + +## 特别感谢 + +Special Thanks to JetBrains! I use AppCode IDE to develop my open source project. +

+ + + +

+ +## 截图 + +
+ + + + + + + + + + + + + +
BasicBlur backgroundKeyboard handleApp demo
+ + + + + + + +
+
+ +## 功能 +1. 支持任意类型的 `UIViewController` +2. 支持继承自 `HWPanModalContentView` 的view +3. 平滑的转场动画 +4. 支持2种类型的手势dismiss视图 + 1. 上下方向拖动关闭视图。 + 2. 侧滑关闭视图,支持全屏侧滑。 +5. 支持为presenting VC编写自定义动画。 +6. 支持配置动画时间,动画options,弹性spring值 +7. 支持配置背景alpha,或者高斯模糊背景。注意:动态调整模糊效果仅工作于iOS9.0+。 +8. 支持显示隐藏指示器,修改圆角 +9. 自动处理键盘弹出消失事件。 +10. 自定义指示器indicator view。 +11. 事件可以穿透到下层presenting VC。 +12. 可配置presented content 阴影。 + +更多配置信息请参阅 [_HWPanModalPresentable.h_](https://github.com/HeathWang/HWPanModal/blob/master/Sources/Presentable/HWPanModalPresentable.h) 声明。 + +## 特别注意 + +1. 任何情况下,内部嵌套scrollable(UIScrollView,UITableView,UIWebView,UICollectionView),如果scrollable的contentSize变化了,务必调用`- (void)hw_panModalSetNeedsLayoutUpdate`刷新UI!!! +2. 如果需要弹出浮层后push到下一层,使用`HWPanModalContentView`或者present vc用navigation 包一层。 +3. 请仔细阅读md,编译run示例代码,95%的功能在示例中都有展示,不要什么都不看就来问问题!!! + + +### 支持UIViewController和继承自HWPanModalContentView弹出视图 + +从0.6.0版本后, 该框架支持使用 `HWPanModalContentView` 从底部弹出视图, 即实现了present ViewController同样的交互和动画。 + +不同点是 `HWPanModalContentView` 只是一个view视图, 通过添加一些动画实现了原本的功能。不像present ViewController的模式,你可以获得controller的整个生命周期,并且可以使用navigation栈来push VC。 + +`HWPanModalContentView` 目前的限制: +* 不支持转屏。 +* 不支持屏幕边缘横向拖拽来dismiss。 +* 不支持自定义presenting VC动画。(因为是view,没有presenting VC) + + +## 适配 +**iOS 8.0+**, support Objective-C & Swift. + +## 安装 + +### [CocoaPods](https://guides.cocoapods.org/using/using-cocoapods.html) + +```ruby +pod 'HWPanModal', '~> 0.9.4' +``` + +## 如何使用 + +### 如何从底部弹出控制器 +只需要视图控制器适配 `HWPanModalPresentable` 协议即可. 默认情况下,不用重写适配的各个方法,如果需要自定义,请实现协议方法。 + +更多的自定义UI配置,请参见`HWPanModalPresentable`协议中每个方法的说明。 + +```Objective-C +#import +@interface HWBaseViewController () + +@end + +@implementation HWBaseViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +#pragma mark - HWPanModalPresentable +- (PanModalHeight)longFormHeight { + return PanModalHeightMake(PanModalHeightTypeMaxTopInset, 44); +} +@end +``` + +弹出控制器: + +```Objective-C +#import +[self presentPanModal:[HWBaseViewController new]]; +``` + +就是这么简单。 + +### 如何主动更新控制器UI +请查阅 `UIViewController+Presentation.h`,里面有详细说明。 +* Change the state between short and long form. call `- (void)hw_panModalTransitionTo:(PresentationState)state;` +* Change ScrollView ContentOffset. call `- (void)hw_panModalSetContentOffset:(CGPoint)offset;` +* Reload layout. call `- (void)hw_panModalSetNeedsLayoutUpdate;` + * 注意:如果scrollable view的contentSize改变了,你必须调用改reload方法来更新UI。 + +### 自定义presenting VC动画编写 + +1. Create object conforms `HWPresentingViewControllerAnimatedTransitioning` . + + ```Objective-C + + @interface HWMyCustomAnimation : NSObject + + @end + + @implementation HWMyCustomAnimation + + + - (void)presentAnimateTransition:(id)transitionContext { + NSTimeInterval duration = [transitionContext transitionDuration]; + UIViewController *fromVC = [transitionContext viewControllerForKey:UITransitionContextFromViewControllerKey]; + // replace it. + [UIView animateWithDuration:duration delay:0 usingSpringWithDamping:0.8 initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ + fromVC.view.transform = CGAffineTransformMakeScale(0.95, 0.95); + } completion:^(BOOL finished) { + + }]; + } + + - (void)dismissAnimateTransition:(id)transitionContext { + NSTimeInterval duration = [transitionContext transitionDuration]; + UIViewController *toVC = [transitionContext viewControllerForKey:UITransitionContextToViewControllerKey]; + // replace it. + [UIView animateWithDuration:duration animations:^{ + toVC.view.transform = CGAffineTransformIdentity; + }]; + } + + @end + ``` +1. Overwrite below two method. + + ```Objective-C + - (PresentingViewControllerAnimationStyle)presentingVCAnimationStyle { + return PresentingViewControllerAnimationStyleCustom; + } + + - (id)customPresentingVCAnimation { + return self.customAnimation; + } + + - (HWMyCustomAnimation *)customAnimation { + if (!_customAnimation) { + _customAnimation = [HWMyCustomAnimation new]; + } + return _customAnimation; + } + ``` + +### 自定义指示器indicator view + +You just need to create your own UIView, then adopt `HWPanModalIndicatorProtocol`. + +In your presented controller, return it: + +```Objective-C +- (nullable UIView *)customIndicatorView { + HWTextIndicatorView *textIndicatorView = [HWTextIndicatorView new]; + return textIndicatorView; +} +``` + +Here is `HWTextIndicatorView` code: + +```Objective-C +@interface HWTextIndicatorView : UIView + +@end + +@interface HWTextIndicatorView () +@property (nonatomic, strong) UILabel *stateLabel; +@end + +@implementation HWTextIndicatorView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + // init the _stateLabel + [self addSubview:_stateLabel]; + } + return self; +} + + +- (void)didChangeToState:(HWIndicatorState)state { + switch (state) { + case HWIndicatorStateNormal: { + self.stateLabel.text = @"Please pull down to dismiss"; + self.stateLabel.textColor = [UIColor whiteColor]; + } + break; + case HWIndicatorStatePullDown: { + self.stateLabel.text = @"Keep pull down to dismiss"; + self.stateLabel.textColor = [UIColor colorWithRed:1.000 green:0.200 blue:0.000 alpha:1.00]; + } + break; + } +} + +- (CGSize)indicatorSize { + return CGSizeMake(200, 18); +} + +- (void)setupSubviews { + self.stateLabel.frame = self.bounds; +} + +@end + +``` + +### 如何使用HWPanModalContentView + +你必须继承自 `HWPanModalContentView`. `HWPanModalContentView` 适配 `HWPanModalPresentable` 协议,就像你可用该协议来present一样。 + +```Objective-C +@interface HWSimplePanModalView : HWPanModalContentView + +@end + +@implementation HWSimplePanModalView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + // add view and layout. + } + + return self; +} + +// present it. +HWSimplePanModalView *simplePanModalView = [HWSimplePanModalView new]; +[simplePanModalView presentInView:nil]; +``` + + +## 例子 + +1. 克隆项目 +2. 然后执行 `pod install` +3. 打开 HWPanModal.xcworkspace, 选择OC或者Swift项目运行 + +###### 我分别编写了纯`Objective-C` & `Swift`例子,基本涵盖了该framework的所有API使用。 + +## 联系我 + +Heath Wang +yishu.jay@gmail.com + +## WX + +

+ + + +

+ +## License + +HWPanModal is released under a MIT License. See LICENSE file for details. + + diff --git a/Pods/HWPanModal/Sources/Animator/HWPanModalAnimator.h b/Pods/HWPanModal/Sources/Animator/HWPanModalAnimator.h new file mode 100644 index 0000000..e80d3f5 --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/HWPanModalAnimator.h @@ -0,0 +1,27 @@ +// +// HWPanModalAnimator.h +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^AnimationBlockType)(void); +typedef void(^AnimationCompletionType)(BOOL completion); + +static NSTimeInterval kTransitionDuration = 0.5; + +@interface HWPanModalAnimator : NSObject + ++ (void)animate:(AnimationBlockType)animations config:(nullable id )config completion:(nullable AnimationCompletionType)completion; + ++ (void)dismissAnimate:(AnimationBlockType)animations config:(nullable id )config completion:(AnimationCompletionType)completion; + ++ (void)smoothAnimate:(AnimationBlockType)animations duration:(NSTimeInterval)duration completion:(nullable AnimationCompletionType)completion; +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Animator/HWPanModalAnimator.m b/Pods/HWPanModal/Sources/Animator/HWPanModalAnimator.m new file mode 100644 index 0000000..37dc498 --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/HWPanModalAnimator.m @@ -0,0 +1,40 @@ +// +// HWPanModalAnimator.m +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import "HWPanModalAnimator.h" + +@implementation HWPanModalAnimator + ++ (void)animate:(AnimationBlockType)animations config:(nullable id)config completion:(AnimationCompletionType)completion { + [HWPanModalAnimator animate:animations config:config startingFromPercent:1 isPresentation:YES completion:completion]; +} + ++ (void)dismissAnimate:(AnimationBlockType)animations config:(nullable id)config completion:(AnimationCompletionType)completion { + [HWPanModalAnimator animate:animations config:config startingFromPercent:1 isPresentation:NO completion:completion]; +} + ++ (void)animate:(AnimationBlockType)animations config:(nullable id )config startingFromPercent:(CGFloat)animationPercent isPresentation:(BOOL)flag completion:(AnimationCompletionType)completion { + + NSTimeInterval duration; + if (flag) { + duration = config ? [config transitionDuration] : kTransitionDuration; + } else { + duration = config ? [config dismissalDuration] : kTransitionDuration; + } + + duration = duration * MAX(animationPercent, 0); + CGFloat springDamping = config ? [config springDamping] : 1.0; + UIViewAnimationOptions options = config ? [config transitionAnimationOptions] : UIViewAnimationOptionPreferredFramesPerSecondDefault; + + [UIView animateWithDuration:duration delay:0 usingSpringWithDamping:springDamping initialSpringVelocity:0 options:options animations:animations completion:completion]; +} + ++ (void)smoothAnimate:(AnimationBlockType)animations duration:(NSTimeInterval)duration completion:(nullable AnimationCompletionType)completion { + [UIView animateWithDuration:duration delay:0 options:UIViewAnimationOptionCurveLinear animations:animations completion:completion]; +} + +@end diff --git a/Pods/HWPanModal/Sources/Animator/HWPanModalInteractiveAnimator.h b/Pods/HWPanModal/Sources/Animator/HWPanModalInteractiveAnimator.h new file mode 100644 index 0000000..f31a1b0 --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/HWPanModalInteractiveAnimator.h @@ -0,0 +1,17 @@ +// +// HWPanModalInteractiveAnimator.h +// HWPanModal +// +// Created by heath wang on 2019/5/14. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HWPanModalInteractiveAnimator : UIPercentDrivenInteractiveTransition + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Animator/HWPanModalInteractiveAnimator.m b/Pods/HWPanModal/Sources/Animator/HWPanModalInteractiveAnimator.m new file mode 100644 index 0000000..f5c4bf5 --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/HWPanModalInteractiveAnimator.m @@ -0,0 +1,16 @@ +// +// HWPanModalInteractiveAnimator.m +// HWPanModal +// +// Created by heath wang on 2019/5/14. +// + +#import "HWPanModalInteractiveAnimator.h" + +@implementation HWPanModalInteractiveAnimator + +- (CGFloat)completionSpeed { + return 0.618; +} + +@end diff --git a/Pods/HWPanModal/Sources/Animator/HWPanModalPresentationAnimator.h b/Pods/HWPanModal/Sources/Animator/HWPanModalPresentationAnimator.h new file mode 100644 index 0000000..d98398d --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/HWPanModalPresentationAnimator.h @@ -0,0 +1,28 @@ +// +// HWPanModalPresentationAnimator.h +// HWPanModal +// +// Created by heath wang on 2019/4/29. +// + +#import +#import +#import "HWPanModalPresentationDelegate.h" + +typedef NS_ENUM(NSInteger, TransitionStyle) { + TransitionStylePresentation, + TransitionStyleDismissal, +}; + +NS_ASSUME_NONNULL_BEGIN + +@interface HWPanModalPresentationAnimator : NSObject + +- (instancetype)initWithTransitionStyle:(TransitionStyle)transitionStyle interactiveMode:(PanModalInteractiveMode)mode; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)new NS_UNAVAILABLE; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Animator/HWPanModalPresentationAnimator.m b/Pods/HWPanModal/Sources/Animator/HWPanModalPresentationAnimator.m new file mode 100644 index 0000000..522141b --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/HWPanModalPresentationAnimator.m @@ -0,0 +1,314 @@ +// +// HWPanModalPresentationAnimator.m +// HWPanModal +// +// Created by heath wang on 2019/4/29. +// + +#import "HWPanModalPresentationAnimator.h" +#import "HWPanModalAnimator.h" +#import "UIViewController+LayoutHelper.h" +#import "HWPanContainerView.h" +#import "UIView+HW_Frame.h" +#import "HWPageSheetPresentingAnimation.h" +#import "HWShoppingCartPresentingAnimation.h" + +@interface HWPresentingVCTransitionContext : NSObject + +@property (nonatomic, weak) UIViewController *fromVC; +@property (nonatomic, weak) UIViewController *toVC; +@property (nonatomic, assign) NSTimeInterval duration; +@property (nonatomic, strong) UIView *containerView; + +- (instancetype)initWithFromVC:(UIViewController *)fromVC toVC:(UIViewController *)toVC duration:(NSTimeInterval)duration containerView:(UIView *)containerView; + +@end + +@interface HWPanModalPresentationAnimator () + +@property (nonatomic, assign) TransitionStyle transitionStyle; + +@property (nullable, nonatomic, strong) UISelectionFeedbackGenerator *feedbackGenerator API_AVAILABLE(ios(10.0)); +@property (nonatomic, strong) HWPresentingVCTransitionContext *presentingVCTransitionContext; +@property (nonatomic, assign) PanModalInteractiveMode interactiveMode; + +@end + +@implementation HWPanModalPresentationAnimator + +- (instancetype)initWithTransitionStyle:(TransitionStyle)transitionStyle interactiveMode:(PanModalInteractiveMode)mode { + self = [super init]; + if (self) { + _transitionStyle = transitionStyle; + _interactiveMode = mode; + if (transitionStyle == TransitionStylePresentation) { + if (@available(iOS 10.0, *)) { + _feedbackGenerator = [UISelectionFeedbackGenerator new]; + [_feedbackGenerator prepare]; + } else { + // Fallback on earlier versions + } + } + } + + return self; +} + +/** + * 弹出controller动画 + */ +- (void)animatePresentation:(id)context { + + UIViewController *toVC = [context viewControllerForKey:UITransitionContextToViewControllerKey]; + UIViewController *fromVC = [context viewControllerForKey:UITransitionContextFromViewControllerKey]; + if (!toVC && !fromVC) + return; + + UIViewController *presentable = [self panModalViewController:context]; + + if ([presentable shouldEnableAppearanceTransition]) { + // If you are implementing a custom container controller, use this method to tell the child that its views are about to appear or disappear. + [fromVC beginAppearanceTransition:NO animated:YES]; + [self beginAppearanceTransitionForController:toVC isAppearing:YES animated:YES]; + } + + + CGFloat yPos = presentable.shortFormYPos; + if ([presentable originPresentationState] == PresentationStateLong) { + yPos = presentable.longFormYPos; + } else if ([presentable originPresentationState] == PresentationStateMedium) { + yPos = presentable.mediumFormYPos; + } + + UIView *panView = context.containerView.panContainerView ?: toVC.view; + panView.frame = [context finalFrameForViewController:toVC]; + panView.hw_top = context.containerView.frame.size.height; + + if ([presentable isHapticFeedbackEnabled]) { + if (@available(iOS 10.0, *)) { + [self.feedbackGenerator selectionChanged]; + } + } + + [HWPanModalAnimator animate:^{ + panView.hw_top = yPos; + } config:presentable completion:^(BOOL completion) { + + if ([presentable shouldEnableAppearanceTransition]) { + [fromVC endAppearanceTransition]; + [self endAppearanceTransitionForController:toVC]; + } + + if (@available(iOS 10.0, *)) { + self.feedbackGenerator = nil; + } + + [context completeTransition:completion]; + }]; + + self.presentingVCTransitionContext = [[HWPresentingVCTransitionContext alloc] initWithFromVC:fromVC toVC:toVC duration:[presentable transitionDuration] containerView:context.containerView]; + [self presentAnimationForPresentingVC:presentable]; +} + +/** + * 使弹出controller消失动画 + */ +- (void)animateDismissal:(id)context { + + UIViewController *fromVC = [context viewControllerForKey:UITransitionContextFromViewControllerKey]; + UIViewController *toVC = [context viewControllerForKey:UITransitionContextToViewControllerKey]; + if (!fromVC && !toVC) + return; + + UIViewController *presentable = [self panModalViewController:context]; + + + if ([presentable shouldEnableAppearanceTransition]) { + [self beginAppearanceTransitionForController:fromVC isAppearing:NO animated:YES]; + [toVC beginAppearanceTransition:YES animated:YES]; + } + + UIView *panView = context.containerView.panContainerView ?: fromVC.view; + self.presentingVCTransitionContext = [[HWPresentingVCTransitionContext alloc] initWithFromVC:fromVC toVC:toVC duration:[presentable transitionDuration] containerView:context.containerView]; + + // user toggle pan gesture to dismiss. + if ([context isInteractive]) { + [self interactionDismiss:context fromVC:fromVC toVC:toVC presentable:presentable panView:panView]; + } else { + [self springDismiss:context fromVC:fromVC toVC:toVC presentable:presentable panView:panView]; + } +} + +- (void)springDismiss:(id )context fromVC:(UIViewController *)fromVC toVC:(UIViewController *)toVC presentable:(UIViewController *)presentable panView:(UIView *)panView { + CGFloat offsetY = 0; + HWPanModalShadow *shadowConfig = [presentable contentShadow]; + if (shadowConfig.shadowColor) { + // we should make the panView move further to hide the shadow effect. + offsetY = offsetY + shadowConfig.shadowRadius + shadowConfig.shadowOffset.height; + if ([presentable showDragIndicator]) { + offsetY += [presentable customIndicatorView] ? [presentable customIndicatorView].indicatorSize.height : 13; + } + } + + [HWPanModalAnimator dismissAnimate:^{ + [self dismissAnimationForPresentingVC:presentable]; + panView.hw_top = (context.containerView.frame.size.height + offsetY); + } config:presentable completion:^(BOOL completion) { + [fromVC.view removeFromSuperview]; + + if ([presentable shouldEnableAppearanceTransition]) { + [self endAppearanceTransitionForController:fromVC]; + [toVC endAppearanceTransition]; + } + + [context completeTransition:completion]; + }]; +} + +- (void)interactionDismiss:(id )context fromVC:(UIViewController *)fromVC toVC:(UIViewController *)toVC presentable:(UIViewController *)presentable panView:(UIView *)panView { + [HWPanModalAnimator smoothAnimate:^{ + if (self.interactiveMode == PanModalInteractiveModeSideslip) { + panView.hw_left = panView.hw_width; + } + + [self dismissAnimationForPresentingVC:presentable]; + } duration:[presentable dismissalDuration] completion:^(BOOL completion) { + // 因为会有手势交互,所以需要判断transitions是否cancel + BOOL finished = ![context transitionWasCancelled]; + + if (finished) { + [fromVC.view removeFromSuperview]; + + if ([presentable shouldEnableAppearanceTransition]) { + [self endAppearanceTransitionForController:fromVC]; + [toVC endAppearanceTransition]; + } + + context.containerView.userInteractionEnabled = YES; + } + [context completeTransition:finished]; + }]; +} + +#pragma mark - presenting VC animation + +- (void)presentAnimationForPresentingVC:(UIViewController *)presentable { + id presentingAnimation = [self presentingVCAnimation:presentable]; + if (presentingAnimation) { + [presentingAnimation presentAnimateTransition:self.presentingVCTransitionContext]; + } +} + +- (void)dismissAnimationForPresentingVC:(UIViewController *)presentable { + id presentingAnimation = [self presentingVCAnimation:presentable]; + if (presentingAnimation) { + [presentingAnimation dismissAnimateTransition:self.presentingVCTransitionContext]; + } +} + +- (UIViewController *)panModalViewController:(id )context { + switch (self.transitionStyle) { + case TransitionStylePresentation: { + UIViewController *controller = [context viewControllerForKey:UITransitionContextToViewControllerKey]; + if ([controller conformsToProtocol:@protocol(HWPanModalPresentable)]) { + return (UIViewController *) controller; + } else { + return nil; + } + } + case TransitionStyleDismissal: { + UIViewController *controller = [context viewControllerForKey:UITransitionContextFromViewControllerKey]; + if ([controller conformsToProtocol:@protocol(HWPanModalPresentable)]) { + return (UIViewController *) controller; + } else { + return nil; + } + } + } +} + +#pragma mark - UIViewControllerAnimatedTransitioning + +- (void)animateTransition:(nonnull id)transitionContext { + switch (self.transitionStyle) { + case TransitionStylePresentation: { + [self animatePresentation:transitionContext]; + } + break; + case TransitionStyleDismissal: { + [self animateDismissal:transitionContext]; + } + default: + break; + } +} + +- (NSTimeInterval)transitionDuration:(nullable id)transitionContext { + if (transitionContext && [self panModalViewController:transitionContext]) { + UIViewController *controller = [self panModalViewController:transitionContext]; + return [controller transitionDuration]; + } + return kTransitionDuration; +} + +#pragma mark - presenting animated transition + +- (id)presentingVCAnimation:(UIViewController *)presentable { + switch ([presentable presentingVCAnimationStyle]) { + case PresentingViewControllerAnimationStylePageSheet: + return [HWPageSheetPresentingAnimation new]; + case PresentingViewControllerAnimationStyleShoppingCart: + return [HWShoppingCartPresentingAnimation new]; + case PresentingViewControllerAnimationStyleCustom: + return [presentable customPresentingVCAnimation]; + default: + return nil; + } +} + +#pragma mark - private method + +- (void)beginAppearanceTransitionForController:(UIViewController *)viewController isAppearing:(BOOL)isAppearing animated:(BOOL)animated { + // Fix `The unbalanced calls to begin/end appearance transitions` warning. + if (![viewController isKindOfClass:UINavigationController.class]) { + [viewController beginAppearanceTransition:isAppearing animated:animated]; + } +} + +- (void)endAppearanceTransitionForController:(UIViewController *)viewController { + if (![viewController isKindOfClass:UINavigationController.class]) { + [viewController endAppearanceTransition]; + } +} + +@end + +@implementation HWPresentingVCTransitionContext + +- (instancetype)initWithFromVC:(UIViewController *)fromVC toVC:(UIViewController *)toVC duration:(NSTimeInterval)duration containerView:(UIView *)containerView { + self = [super init]; + if (self) { + _fromVC = fromVC; + _toVC = toVC; + _duration = duration; + _containerView = containerView; + } + + return self; +} + + +- (__kindof UIViewController *)viewControllerForKey:(UITransitionContextViewControllerKey)key { + if ([key isEqualToString:UITransitionContextFromViewControllerKey]) { + return self.fromVC; + } else if ([key isEqualToString:UITransitionContextToViewControllerKey]) { + return self.toVC; + } + return nil; +} + +- (NSTimeInterval)transitionDuration { + return self.duration; +} + +@end diff --git a/Pods/HWPanModal/Sources/Animator/HWPresentingVCAnimatedTransitioning.h b/Pods/HWPanModal/Sources/Animator/HWPresentingVCAnimatedTransitioning.h new file mode 100644 index 0000000..e726688 --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/HWPresentingVCAnimatedTransitioning.h @@ -0,0 +1,51 @@ +// +// HWCustomPresentingVCAnimatedTransitioning.h +// HWPanModal +// +// Created by heath wang on 2019/6/12. +// + +#ifndef HWCustomPresentingVCAnimatedTransitioning_h +#define HWCustomPresentingVCAnimatedTransitioning_h + +NS_SWIFT_NAME(PanModalPresentingViewControllerContextTransitioning) +@protocol HWPresentingViewControllerContextTransitioning + +/** + * Returns a view controller involved in the transition. + * @return The view controller object for the specified key or nil if the view controller could not be found. + */ +- (__kindof UIViewController * _Nullable )viewControllerForKey:(nonnull UITransitionContextViewControllerKey)key; + +/** + * The Animation duration gets from ViewController which conforms HWPanModalPresentable + * - (NSTimeInterval)transitionDuration; + */ +- (NSTimeInterval)transitionDuration; + +/** + * Transition container, from UIViewControllerContextTransitioning protocol + */ +@property(nonnull, nonatomic, readonly) UIView *containerView; + +@end + +NS_SWIFT_NAME(PanModalPresentingViewControllerAnimatedTransitioning) +@protocol HWPresentingViewControllerAnimatedTransitioning + +/** + * Write you custom animation when present. + */ +- (void)presentAnimateTransition:(nonnull id)context NS_SWIFT_NAME(presentTransition(context:)); +/** + * Write you custom animation when dismiss. + */ +- (void)dismissAnimateTransition:(nonnull id)context NS_SWIFT_NAME(dismissTransition(context:)); + +@end + + +#endif /* HWCustomPresentingVCAnimatedTransitioning_h */ + + + diff --git a/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h b/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h new file mode 100644 index 0000000..da90548 --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h @@ -0,0 +1,17 @@ +// +// HWPageSheetPresentingAnimation.h +// HWPanModal-iOS10.0 +// +// Created by heath wang on 2019/9/5. +// + +#import +#import "HWPresentingVCAnimatedTransitioning.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface HWPageSheetPresentingAnimation : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m b/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m new file mode 100644 index 0000000..82bbd1e --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m @@ -0,0 +1,29 @@ +// +// HWPageSheetPresentingAnimation.m +// HWPanModal-iOS10.0 +// +// Created by heath wang on 2019/9/5. +// + +#import "HWPageSheetPresentingAnimation.h" + +@implementation HWPageSheetPresentingAnimation + +- (void)presentAnimateTransition:(nonnull id )context { + NSTimeInterval duration = [context transitionDuration]; + UIViewController *fromVC = [context viewControllerForKey:UITransitionContextFromViewControllerKey]; + [UIView animateWithDuration:duration delay:0 usingSpringWithDamping:0.9 initialSpringVelocity:0 options:UIViewAnimationOptionCurveEaseInOut animations:^{ + CGFloat statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height; + CGFloat scale = 1 - statusBarHeight * 2 / CGRectGetHeight(fromVC.view.bounds); + fromVC.view.transform = CGAffineTransformMakeScale(scale, scale); + } completion:^(BOOL finished) { + + }]; +} + +- (void)dismissAnimateTransition:(nonnull id )context { + UIViewController *toVC = [context viewControllerForKey:UITransitionContextToViewControllerKey]; + toVC.view.transform = CGAffineTransformIdentity; +} + +@end diff --git a/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h b/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h new file mode 100644 index 0000000..373a8a0 --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h @@ -0,0 +1,17 @@ +// +// HWShoppingCartPresentingAnimation.h +// HWPanModal-iOS10.0 +// +// Created by heath wang on 2019/9/5. +// + +#import +#import "HWPresentingVCAnimatedTransitioning.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface HWShoppingCartPresentingAnimation : NSObject + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m b/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m new file mode 100644 index 0000000..228d9b5 --- /dev/null +++ b/Pods/HWPanModal/Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m @@ -0,0 +1,39 @@ +// +// HWShoppingCartPresentingAnimation.m +// HWPanModal-iOS10.0 +// +// Created by heath wang on 2019/9/5. +// + +#import "HWShoppingCartPresentingAnimation.h" + +@implementation HWShoppingCartPresentingAnimation + +- (void)presentAnimateTransition:(nonnull id )context { + + NSTimeInterval duration = [context transitionDuration]; + UIViewController *fromVC = [context viewControllerForKey:UITransitionContextFromViewControllerKey]; + CGFloat statusBarHeight = [UIApplication sharedApplication].statusBarFrame.size.height; + CGFloat scale = 1 - statusBarHeight * 2 / CGRectGetHeight(fromVC.view.bounds); + [UIView animateWithDuration:duration * 0.4 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ + CATransform3D tran = CATransform3DIdentity; + tran.m34 = -1 / 1000.0f; + tran = CATransform3DRotate(tran, M_PI / 16, 1, 0, 0); + tran = CATransform3DTranslate(tran, 0, 0, -100); + fromVC.view.layer.transform = tran; + } completion:^(BOOL finished) { + + [UIView animateWithDuration:duration * 0.6 delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ + fromVC.view.layer.transform = CATransform3DMakeScale(scale, scale, 1); + } completion:^(BOOL finished) { + + }]; + }]; +} + +- (void)dismissAnimateTransition:(nonnull id )context { + UIViewController *toVC = [context viewControllerForKey:UITransitionContextToViewControllerKey]; + toVC.view.layer.transform = CATransform3DIdentity; +} + +@end diff --git a/Pods/HWPanModal/Sources/Category/UIScrollView+Helper.h b/Pods/HWPanModal/Sources/Category/UIScrollView+Helper.h new file mode 100644 index 0000000..73b8c8e --- /dev/null +++ b/Pods/HWPanModal/Sources/Category/UIScrollView+Helper.h @@ -0,0 +1,18 @@ +// +// UIScrollView+Helper.h +// Pods +// +// Created by heath wang on 2019/10/15. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIScrollView (Helper) + +@property (nonatomic, assign, readonly) BOOL isScrolling; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Category/UIScrollView+Helper.m b/Pods/HWPanModal/Sources/Category/UIScrollView+Helper.m new file mode 100644 index 0000000..fa9214c --- /dev/null +++ b/Pods/HWPanModal/Sources/Category/UIScrollView+Helper.m @@ -0,0 +1,16 @@ +// +// UIScrollView+Helper.m +// Pods +// +// Created by heath wang on 2019/10/15. +// + +#import "UIScrollView+Helper.h" + +@implementation UIScrollView (Helper) + +- (BOOL)isScrolling { + return (self.isDragging && !self.isDecelerating) || self.isTracking; +} + +@end diff --git a/Pods/HWPanModal/Sources/Category/UIView+HW_Frame.h b/Pods/HWPanModal/Sources/Category/UIView+HW_Frame.h new file mode 100644 index 0000000..9c81d2b --- /dev/null +++ b/Pods/HWPanModal/Sources/Category/UIView+HW_Frame.h @@ -0,0 +1,28 @@ +// +// UIView+HW_Frame.h +// HWPanModal +// +// Created by heath wang on 2019/5/20. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIView (HW_Frame) + +@property (nonatomic, assign) CGFloat hw_left; ///< Shortcut for frame.origin.x. +@property (nonatomic, assign) CGFloat hw_top; ///< Shortcut for frame.origin.y +@property (nonatomic, assign) CGFloat hw_right; ///< Shortcut for frame.origin.x + frame.size.width +@property (nonatomic, assign) CGFloat hw_bottom; ///< Shortcut for frame.origin.y + frame.size.height +@property (nonatomic, assign) CGFloat hw_width; ///< Shortcut for frame.size.width. +@property (nonatomic, assign) CGFloat hw_height; ///< Shortcut for frame.size.height. +@property (nonatomic, assign) CGFloat hw_centerX; ///< Shortcut for center.x +@property (nonatomic, assign) CGFloat hw_centerY; ///< Shortcut for center.y +@property (nonatomic, assign) CGPoint hw_origin; ///< Shortcut for frame.origin. +@property (nonatomic, assign) CGSize hw_size; ///< Shortcut for frame.size. + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Category/UIView+HW_Frame.m b/Pods/HWPanModal/Sources/Category/UIView+HW_Frame.m new file mode 100644 index 0000000..6cea736 --- /dev/null +++ b/Pods/HWPanModal/Sources/Category/UIView+HW_Frame.m @@ -0,0 +1,109 @@ +// +// UIView+HW_Frame.m +// HWPanModal +// +// Created by heath wang on 2019/5/20. +// + +#import "UIView+HW_Frame.h" + +@implementation UIView (HW_Frame) + +- (CGFloat)hw_left { + return self.frame.origin.x; +} + +- (void)setHw_left:(CGFloat)hwLeft { + CGRect frame = self.frame; + frame.origin.x = hwLeft; + self.frame = frame; +} + +- (CGFloat)hw_top { + return self.frame.origin.y; +} + +- (void)setHw_top:(CGFloat)hwTop { + CGRect frame = self.frame; + frame.origin.y = hwTop; + self.frame = frame; +} + +- (CGFloat)hw_right { + return self.frame.origin.x + self.frame.size.width; +} + +- (void)setHw_right:(CGFloat)hwRight { + CGRect frame = self.frame; + frame.origin.x = hwRight - self.frame.size.width; + self.frame = frame; +} + +- (CGFloat)hw_bottom { + return self.frame.origin.y + self.frame.size.height; +} + +- (void)setHw_bottom:(CGFloat)hwBottom { + CGRect frame = self.frame; + frame.origin.y = hwBottom - self.frame.size.height; + self.frame = frame; +} + +- (CGFloat)hw_width { + return self.frame.size.width; +} + +- (void)setHw_width:(CGFloat)hwWidth { + CGRect frame = self.frame; + frame.size.width = hwWidth; + self.frame = frame; +} + +- (CGFloat)hw_height { + return self.frame.size.height; +} + +- (void)setHw_height:(CGFloat)hwHeight { + CGRect frame = self.frame; + frame.size.height = hwHeight; + self.frame = frame; +} + +- (CGFloat)hw_centerX { + return self.center.x; +} + +- (void)setHw_centerX:(CGFloat)hwCenterX { + self.center = CGPointMake(hwCenterX, self.center.y); +} + +- (CGFloat)hw_centerY { + return self.center.y; +} + +- (void)setHw_centerY:(CGFloat)hwCenterY { + self.center = CGPointMake(self.center.x, hwCenterY); +} + +- (CGPoint)hw_origin { + return self.frame.origin; +} + +- (void)setHw_origin:(CGPoint)hwOrigin { + CGRect frame = self.frame; + frame.origin = hwOrigin; + self.frame = frame; +} + +- (CGSize)hw_size { + return self.frame.size; +} + +- (void)setHw_size:(CGSize)hwSize { + CGRect frame = self.frame; + frame.size = hwSize; + self.frame = frame; +} + + +@end diff --git a/Pods/HWPanModal/Sources/Controller/HWPanModalPresentationController.h b/Pods/HWPanModal/Sources/Controller/HWPanModalPresentationController.h new file mode 100644 index 0000000..d25a430 --- /dev/null +++ b/Pods/HWPanModal/Sources/Controller/HWPanModalPresentationController.h @@ -0,0 +1,32 @@ +// +// HWPanModalPresentationController.h +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import +#import +@class HWDimmedView; + +NS_ASSUME_NONNULL_BEGIN + + +@interface HWPanModalPresentationController : UIPresentationController + +@property (nonatomic, readonly) HWDimmedView *backgroundView; +@property (nonatomic, readonly) PresentationState currentPresentationState; + +- (void)setNeedsLayoutUpdate; + +- (void)updateUserHitBehavior; + +- (void)transitionToState:(PresentationState)state animated:(BOOL)animated; + +- (void)setScrollableContentOffset:(CGPoint)offset animated:(BOOL)animated; + +- (void)dismissAnimated:(BOOL)animated completion:(void (^)(void))completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Controller/HWPanModalPresentationController.m b/Pods/HWPanModal/Sources/Controller/HWPanModalPresentationController.m new file mode 100644 index 0000000..338cfb4 --- /dev/null +++ b/Pods/HWPanModal/Sources/Controller/HWPanModalPresentationController.m @@ -0,0 +1,599 @@ +// +// HWPanModalPresentationController.m +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import "HWPanModalPresentationController.h" +#import "HWDimmedView.h" +#import "HWPanContainerView.h" +#import "UIViewController+LayoutHelper.h" +#import "HWPanModalAnimator.h" +#import "HWPanModalInteractiveAnimator.h" +#import "HWPanModalPresentationDelegate.h" +#import "UIViewController+PanModalPresenter.h" +#import "HWPanIndicatorView.h" +#import "UIView+HW_Frame.h" +#import "HWPanModalPresentableHandler.h" + +@interface HWPanModalPresentationController () + +// 判断弹出的view是否在做动画 +@property (nonatomic, assign) BOOL isPresentedViewAnimating; +@property (nonatomic, assign) PresentationState currentPresentationState; + +@property (nonatomic, strong) id presentable; + +// view +@property (nonatomic, strong) HWDimmedView *backgroundView; +@property (nonatomic, strong) HWPanContainerView *panContainerView; +@property (nonatomic, strong) UIView *dragIndicatorView; + +@property (nonatomic, strong) HWPanModalPresentableHandler *handler; + +@end + +@implementation HWPanModalPresentationController + +- (instancetype)initWithPresentedViewController:(UIViewController *)presentedViewController presentingViewController:(nullable UIViewController *)presentingViewController { + self = [super initWithPresentedViewController:presentedViewController presentingViewController:presentingViewController]; + if (self) { + _handler = [[HWPanModalPresentableHandler alloc] initWithPresentable:[self presentable]]; + _handler.delegate = self; + _handler.dataSource = self; + } + + return self; +} + +#pragma mark - overridden + +- (UIView *)presentedView { + return self.panContainerView; +} + +- (void)containerViewWillLayoutSubviews { + [super containerViewWillLayoutSubviews]; + [self configureViewLayout]; +} + +#pragma mark - Tracking the Transition Start and End + +- (void)presentationTransitionWillBegin { + [[self presentable] panModalTransitionWillBegin]; + + if (!self.containerView) + return; + + [self layoutBackgroundView:self.containerView]; + + if ([[self presentable] originPresentationState] == PresentationStateLong) { + self.currentPresentationState = PresentationStateLong; + } else if ([[self presentable] originPresentationState] == PresentationStateMedium) { + self.currentPresentationState = PresentationStateMedium; + } + + [self layoutPresentedView:self.containerView]; + [self.handler configureScrollViewInsets]; + + if (!self.presentedViewController.transitionCoordinator) { + self.backgroundView.dimState = DimStateMax; + return; + } + + __weak typeof(self) wkSelf = self; + __block BOOL isAnimated = NO; + [self.presentedViewController.transitionCoordinator animateAlongsideTransition:^(id context) { + wkSelf.backgroundView.dimState = DimStateMax; + [wkSelf.presentedViewController setNeedsStatusBarAppearanceUpdate]; + isAnimated = YES; + } completion:^(id _Nonnull context) { + if (!isAnimated) { + /// In some cases, for example, present a `hw` when a navigation controller is pushing a new vc, `animateAlongsideTransition` will not call. + /// If not called, call it here. + wkSelf.backgroundView.dimState = DimStateMax; + [wkSelf.presentedViewController setNeedsStatusBarAppearanceUpdate]; + } + if ([[wkSelf presentable] allowsTouchEventsPassingThroughTransitionView]) { + // hack TransitionView + [wkSelf.containerView setValue:@(YES) forKey:@"ignoreDirectTouchEvents"]; + } + }]; + +} + +- (void)presentationTransitionDidEnd:(BOOL)completed { + [[self presentable] panModalTransitionDidFinish]; + if (completed) + return; + + [self.backgroundView removeFromSuperview]; + [self.presentedView endEditing:YES]; +} + +- (void)dismissalTransitionWillBegin { + id transitionCoordinator = self.presentedViewController.transitionCoordinator; + if (!transitionCoordinator) { + self.backgroundView.dimState = DimStateOff; + return; + } + + __weak typeof(self) wkSelf = self; + [transitionCoordinator animateAlongsideTransition:^(id context) { + wkSelf.dragIndicatorView.alpha = 0; + wkSelf.backgroundView.dimState = DimStateOff; + [wkSelf.presentedViewController setNeedsStatusBarAppearanceUpdate]; + } completion:^(id context) { + + }]; +} + +- (void)dismissalTransitionDidEnd:(BOOL)completed { + if (completed) { + // break the delegate + self.delegate = nil; + } +} + +#pragma mark - UIContentContainer protocol + +- (void)viewWillTransitionToSize:(CGSize)size withTransitionCoordinator:(id )coordinator { + [super viewWillTransitionToSize:size withTransitionCoordinator:coordinator]; + + [coordinator animateAlongsideTransition:^(id context) { + if (self && [self presentable]) { + [self adjustPresentedViewFrame]; + + if ([self.presentable shouldRoundTopCorners]) { + [self addRoundedCornersToView:self.panContainerView.contentView]; + } + [self updateDragIndicatorView]; + } + } completion:^(id context) { + [self transitionToState:self.currentPresentationState animated:NO]; + }]; +} + +#pragma mark - public method + +- (void)setNeedsLayoutUpdate { + [self configureViewLayout]; + [self adjustPresentedViewFrame]; + + [self updateBackgroundColor]; + [self updateContainerViewShadow]; + [self updateDragIndicatorView]; + [self updateRoundedCorners]; + + [self.handler observeScrollable]; + [self.handler configureScrollViewInsets]; + [self checkEdgeInteractive]; +} + +- (void)transitionToState:(PresentationState)state animated:(BOOL)animated { + + if (![self.presentable shouldTransitionToState:state]) + return; + + [self.dragIndicatorView didChangeToState:HWIndicatorStateNormal]; + [self.presentable willTransitionToState:state]; + + switch (state) { + case PresentationStateLong: { + [self snapToYPos:self.handler.longFormYPosition animated:animated]; + } + break; + case PresentationStateMedium: { + [self snapToYPos:self.handler.mediumFormYPosition animated:animated]; + } + break; + case PresentationStateShort: { + [self snapToYPos:self.handler.shortFormYPosition animated:animated]; + } + break; + } + self.currentPresentationState = state; + [[self presentable] didChangeTransitionToState:state]; +} + +- (void)setScrollableContentOffset:(CGPoint)offset animated:(BOOL)animated { + [self.handler setScrollableContentOffset:offset animated:animated]; +} + +- (void)updateUserHitBehavior { + [self checkVCContainerEventPass]; + [self checkBackgroundViewEventPass]; +} + +#pragma mark - layout + +- (void)adjustPresentedViewFrame { + + if (!self.containerView) + return; + + CGRect frame = self.containerView.frame; + CGSize size = CGSizeMake(CGRectGetWidth(frame), CGRectGetHeight(frame) - self.handler.anchoredYPosition); + + self.presentedView.hw_size = frame.size; + self.panContainerView.contentView.frame = CGRectMake(0, 0, size.width, size.height); + self.presentedViewController.view.frame = self.panContainerView.contentView.bounds; + [self.presentedViewController.view setNeedsLayout]; + [self.presentedViewController.view layoutIfNeeded]; +} + +/** + * add backGroundView并设置约束 + */ +- (void)layoutBackgroundView:(UIView *)containerView { + [containerView addSubview:self.backgroundView]; + [self updateBackgroundColor]; + self.backgroundView.translatesAutoresizingMaskIntoConstraints = NO; + + NSArray *hCons = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[backgroundView]|" options:0 metrics:nil views:@{@"backgroundView": self.backgroundView}]; + NSArray *vCons = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[backgroundView]|" options:0 metrics:nil views:@{@"backgroundView": self.backgroundView}]; + [NSLayoutConstraint activateConstraints:hCons]; + [NSLayoutConstraint activateConstraints:vCons]; +} + +- (void)updateBackgroundColor { + self.backgroundView.blurTintColor = [self.presentable backgroundConfig].blurTintColor; +} + +- (void)layoutPresentedView:(UIView *)containerView { + if (!self.presentable) + return; + + self.handler.presentedView = self.presentedView; + + [containerView addSubview:self.presentedView]; + [containerView addGestureRecognizer:self.handler.panGestureRecognizer]; + + if ([self.presentable allowScreenEdgeInteractive]) { + [containerView addGestureRecognizer:self.handler.screenEdgeGestureRecognizer]; + [self.handler.screenEdgeGestureRecognizer addTarget:self action:@selector(screenEdgeInteractiveAction:)]; + } + + [self setNeedsLayoutUpdate]; + [self adjustPanContainerBackgroundColor]; + + [[self presentable] presentedViewDidMoveToSuperView]; +} + +- (void)adjustPanContainerBackgroundColor { + self.panContainerView.contentView.backgroundColor = self.presentedViewController.view.backgroundColor ? : [self.presentable panScrollable].backgroundColor; +} + +- (void)updateDragIndicatorView { + if ([self.presentable showDragIndicator]) { + [self addDragIndicatorViewToView:self.panContainerView]; + } else { + self.dragIndicatorView.hidden = YES; + } +} + +- (void)addDragIndicatorViewToView:(UIView *)view { + // if has been add, won't update it. + self.dragIndicatorView.hidden = NO; + + CGSize indicatorSize = [self.dragIndicatorView indicatorSize]; + + if (self.dragIndicatorView.superview == view) { + self.dragIndicatorView.frame = CGRectMake((view.hw_width - indicatorSize.width) / 2, -kIndicatorYOffset - indicatorSize.height, indicatorSize.width, indicatorSize.height); + [self.dragIndicatorView didChangeToState:HWIndicatorStateNormal]; + return; + } + + self.handler.dragIndicatorView = self.dragIndicatorView; + [view addSubview:self.dragIndicatorView]; + + self.dragIndicatorView.frame = CGRectMake((view.hw_width - indicatorSize.width) / 2, -kIndicatorYOffset - indicatorSize.height, indicatorSize.width, indicatorSize.height); + [self.dragIndicatorView setupSubviews]; + [self.dragIndicatorView didChangeToState:HWIndicatorStateNormal]; +} + +- (void)updateRoundedCorners { + if ([self.presentable shouldRoundTopCorners]) { + [self addRoundedCornersToView:self.panContainerView.contentView]; + } else { + [self resetRoundedCornersToView:self.panContainerView.contentView]; + } +} + +- (void)addRoundedCornersToView:(UIView *)view { + CGFloat radius = [self.presentable cornerRadius]; + + UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:UIRectCornerTopRight | UIRectCornerTopLeft cornerRadii:CGSizeMake(radius, radius)]; + + CAShapeLayer *mask = [CAShapeLayer new]; + mask.path = bezierPath.CGPath; + view.layer.mask = mask; + + // 提高性能 + view.layer.shouldRasterize = YES; + view.layer.rasterizationScale = [UIScreen mainScreen].scale; +} + +- (void)resetRoundedCornersToView:(UIView *)view { + view.layer.mask = nil; + view.layer.shouldRasterize = NO; +} + +- (void)updateContainerViewShadow { + HWPanModalShadow *shadow = [[self presentable] contentShadow]; + if (shadow.shadowColor) { + [self.panContainerView updateShadow:shadow.shadowColor shadowRadius:shadow.shadowRadius shadowOffset:shadow.shadowOffset shadowOpacity:shadow.shadowOpacity]; + } else { + [self.panContainerView clearShadow]; + } +} + + +/** + * Calculates & stores the layout anchor points & options + */ +- (void)configureViewLayout { + + [self.handler configureViewLayout]; + self.containerView.userInteractionEnabled = [[self presentable] isUserInteractionEnabled]; +} + +#pragma mark - event passing through + +- (void)checkVCContainerEventPass { + BOOL eventPassValue = [[self presentable] allowsTouchEventsPassingThroughTransitionView]; + // hack TransitionView + [self.containerView setValue:@(eventPassValue) forKey:@"ignoreDirectTouchEvents"]; +} + +- (void)checkBackgroundViewEventPass { + if ([[self presentable] allowsTouchEventsPassingThroughTransitionView]) { + self.backgroundView.userInteractionEnabled = NO; + self.backgroundView.tapBlock = nil; + } else { + self.backgroundView.userInteractionEnabled = YES; + __weak typeof(self) wkSelf = self; + self.backgroundView.tapBlock = ^(UITapGestureRecognizer *recognizer) { + if ([[wkSelf presentable] allowsTapBackgroundToDismiss]) { + [wkSelf dismiss:NO mode:PanModalInteractiveModeNone]; + } + }; + } +} + +#pragma mark - y position update + +- (void)snapToYPos:(CGFloat)yPos animated:(BOOL)animated { + + if (animated) { + [HWPanModalAnimator animate:^{ + self.isPresentedViewAnimating = YES; + [self adjustToYPos:yPos]; + } config:self.presentable completion:^(BOOL completion) { + self.isPresentedViewAnimating = NO; + }]; + } else { + [self adjustToYPos:yPos]; + } +} + +- (void)adjustToYPos:(CGFloat)yPos { + self.presentedView.hw_top = MAX(yPos, self.handler.anchoredYPosition); + + // change dim background starting from shortFormYPosition. + if (self.presentedView.frame.origin.y >= self.handler.shortFormYPosition) { + + CGFloat yDistanceFromShortForm = self.presentedView.frame.origin.y - self.handler.shortFormYPosition; + CGFloat bottomHeight = self.containerView.hw_height - self.handler.shortFormYPosition; + CGFloat percent = yDistanceFromShortForm / bottomHeight; + self.backgroundView.dimState = DimStatePercent; + self.backgroundView.percent = 1 - percent; + + [self.presentable panModalGestureRecognizer:self.handler.panGestureRecognizer dismissPercent:MIN(percent, 1)]; + if (self.presentedViewController.isBeingDismissed) { + [[self interactiveAnimator] updateInteractiveTransition:MIN(percent, 1)]; + } + } else { + self.backgroundView.dimState = DimStateMax; + } +} + +#pragma mark - HWPanModalPresentableHandlerDelegate + +- (void)adjustPresentableYPos:(CGFloat)yPos { + [self adjustToYPos:yPos]; +} + +- (void)dismiss:(BOOL)isInteractive mode:(PanModalInteractiveMode)mode { + [self dismiss:isInteractive mode:mode animated:YES completion:nil]; +} + +- (void)dismiss:(BOOL)isInteractive mode:(PanModalInteractiveMode)mode animated:(BOOL)animated completion:(void (^)(void))completion { + self.presentedViewController.hw_panModalPresentationDelegate.interactive = isInteractive; + self.presentedViewController.hw_panModalPresentationDelegate.interactiveMode = mode; + [self.presentable panModalWillDismiss]; + [self.presentedViewController dismissViewControllerAnimated:animated completion:^{ + if (completion) completion(); + [self.presentable panModalDidDismissed]; + }]; +} + +- (void)dismissAnimated:(BOOL)animated completion:(nonnull void (^)(void))completion { + [self dismiss:NO mode:PanModalInteractiveModeNone animated:animated completion:completion]; +} + +- (void)presentableTransitionToState:(PresentationState)state { + [self transitionToState:state animated:YES]; +} + +- (PresentationState)getCurrentPresentationState { + return self.currentPresentationState; +} + +#pragma mark - interactive handle + +- (void)finishInteractiveTransition { + if (self.presentedViewController.isBeingDismissed) { + // make the containerView can not response event action. + self.containerView.userInteractionEnabled = NO; + [[self interactiveAnimator] finishInteractiveTransition]; + + if (self.presentedViewController.hw_panModalPresentationDelegate.interactiveMode != PanModalInteractiveModeDragDown) + return; + + if ([[self presentable] presentingVCAnimationStyle] > PresentingViewControllerAnimationStyleNone) { + [HWPanModalAnimator animate:^{ + [self presentedView].hw_top = self.containerView.frame.size.height; + self.dragIndicatorView.alpha = 0; + self.backgroundView.dimState = DimStateOff; + } config:[self presentable] completion:^(BOOL completion) { + + }]; + } + } +} + +- (void)cancelInteractiveTransition { + if (self.presentedViewController.isBeingDismissed) { + [[self interactiveAnimator] cancelInteractiveTransition]; + self.presentedViewController.hw_panModalPresentationDelegate.interactiveMode = PanModalInteractiveModeNone; + self.presentedViewController.hw_panModalPresentationDelegate.interactive = NO; + } +} + +#pragma mark - HWPanModalPresentableHandlerDataSource + +- (CGSize)containerSize { + return self.containerView.bounds.size; +} + +- (BOOL)isBeingDismissed { + return self.presentedViewController.isBeingDismissed; +} + +- (BOOL)isBeingPresented { + return self.presentedViewController.isBeingPresented; +} + +- (BOOL)isPresentedViewAnchored { + + if (![[self presentable] shouldRespondToPanModalGestureRecognizer:self.handler.panGestureRecognizer]) { + return YES; + } + + if (!self.isPresentedViewAnimating && self.handler.extendsPanScrolling && (CGRectGetMinY(self.presentedView.frame) <= self.handler.anchoredYPosition || HW_TWO_FLOAT_IS_EQUAL(CGRectGetMinY(self.presentedView.frame), self.handler.anchoredYPosition))) { + return YES; + } + return NO; +} + +- (BOOL)isPresentedControllerInteractive { + return self.presentedViewController.hw_panModalPresentationDelegate.interactive; +} + +- (BOOL)isFormPositionAnimating { + return self.isPresentedViewAnimating; +} + +#pragma mark - Screen Gesture enevt + +- (void)screenEdgeInteractiveAction:(UIPanGestureRecognizer *)recognizer { + CGPoint translation = [recognizer translationInView:recognizer.view]; + CGFloat percent = translation.x / CGRectGetWidth(recognizer.view.bounds); + CGPoint velocity = [recognizer velocityInView:recognizer.view]; + + switch (recognizer.state) { + case UIGestureRecognizerStateBegan: { + [self dismiss:YES mode:PanModalInteractiveModeSideslip]; + } + break; + case UIGestureRecognizerStateCancelled: + case UIGestureRecognizerStateEnded: { + if (percent > 0.5 || velocity.x >= [[self presentable] minHorizontalVelocityToTriggerScreenEdgeDismiss]) { + [self finishInteractiveTransition]; + } else { + [self cancelInteractiveTransition]; + } + + } + break; + case UIGestureRecognizerStateChanged: { + + [[self interactiveAnimator] updateInteractiveTransition:percent]; + } + break; + default: + break; + } +} + +- (void)checkEdgeInteractive { + //TODO: changed the user interactive, if someone else has different requirements, change it. + self.handler.screenEdgeGestureRecognizer.enabled = [[self presentable] allowScreenEdgeInteractive]; +} + +#pragma mark - Getter + +- (id )presentable { + if ([self.presentedViewController conformsToProtocol:@protocol(HWPanModalPresentable)]) { + return (id ) self.presentedViewController; + } + return nil; +} + +- (HWPanModalInteractiveAnimator *)interactiveAnimator { + HWPanModalPresentationDelegate *presentationDelegate = self.presentedViewController.hw_panModalPresentationDelegate; + return presentationDelegate.interactiveDismissalAnimator; +} + +- (HWDimmedView *)backgroundView { + if (!_backgroundView) { + if (self.presentable) { + _backgroundView = [[HWDimmedView alloc] initWithBackgroundConfig:[self.presentable backgroundConfig]]; + } else { + _backgroundView = [[HWDimmedView alloc] init]; + } + + if ([[self presentable] allowsTouchEventsPassingThroughTransitionView]) { + _backgroundView.userInteractionEnabled = NO; + } else { + __weak typeof(self) wkSelf = self; + _backgroundView.tapBlock = ^(UITapGestureRecognizer *recognizer) { + if ([[wkSelf presentable] allowsTapBackgroundToDismiss]) { + [wkSelf dismiss:NO mode:PanModalInteractiveModeNone]; + } + }; + } + + } + + return _backgroundView; +} + +- (HWPanContainerView *)panContainerView { + if (!_panContainerView) { + _panContainerView = [[HWPanContainerView alloc] initWithPresentedView:self.presentedViewController.view frame:self.containerView.frame]; + } + + return _panContainerView; +} + +- (UIView *)dragIndicatorView { + + if (!_dragIndicatorView) { + if ([self presentable] && + [[self presentable] respondsToSelector:@selector(customIndicatorView)] && + [[self presentable] customIndicatorView] != nil) { + _dragIndicatorView = [[self presentable] customIndicatorView]; + // set the indicator size first in case `setupSubviews` can Not get the right size. + _dragIndicatorView.hw_size = [[[self presentable] customIndicatorView] indicatorSize]; + } else { + _dragIndicatorView = [HWPanIndicatorView new]; + } + } + + return _dragIndicatorView; +} + +@end diff --git a/Pods/HWPanModal/Sources/Delegate/HWPanModalPresentationDelegate.h b/Pods/HWPanModal/Sources/Delegate/HWPanModalPresentationDelegate.h new file mode 100644 index 0000000..ea12ce9 --- /dev/null +++ b/Pods/HWPanModal/Sources/Delegate/HWPanModalPresentationDelegate.h @@ -0,0 +1,29 @@ +// +// HWPanModalPresentationDelegate.h +// HWPanModal +// +// Created by heath wang on 2019/4/29. +// + +#import +#import + +@class HWPanModalInteractiveAnimator; + +typedef NS_ENUM(NSInteger, PanModalInteractiveMode) { + PanModalInteractiveModeNone, + PanModalInteractiveModeSideslip, // 侧滑返回 + PanModalInteractiveModeDragDown, // 向下拖拽返回 +}; + +NS_ASSUME_NONNULL_BEGIN + +@interface HWPanModalPresentationDelegate : NSObject + +@property (nonatomic, assign) BOOL interactive; +@property (nonatomic, assign) PanModalInteractiveMode interactiveMode; +@property (nonnull, nonatomic, strong, readonly) HWPanModalInteractiveAnimator *interactiveDismissalAnimator; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Delegate/HWPanModalPresentationDelegate.m b/Pods/HWPanModal/Sources/Delegate/HWPanModalPresentationDelegate.m new file mode 100644 index 0000000..d2f5037 --- /dev/null +++ b/Pods/HWPanModal/Sources/Delegate/HWPanModalPresentationDelegate.m @@ -0,0 +1,66 @@ +// +// HWPanModalPresentationDelegate.m +// HWPanModal +// +// Created by heath wang on 2019/4/29. +// + +#import "HWPanModalPresentationDelegate.h" +#import "HWPanModalPresentationAnimator.h" +#import "HWPanModalPresentationController.h" +#import "HWPanModalInteractiveAnimator.h" + +@interface HWPanModalPresentationDelegate () + +@property (nonatomic, strong) HWPanModalInteractiveAnimator *interactiveDismissalAnimator; + +@end + +@implementation HWPanModalPresentationDelegate + +- (nullable id )animationControllerForPresentedController:(UIViewController *)presented presentingController:(UIViewController *)presenting sourceController:(UIViewController *)source { + return [[HWPanModalPresentationAnimator alloc] initWithTransitionStyle:TransitionStylePresentation interactiveMode:PanModalInteractiveModeNone]; +} + +- (nullable id )animationControllerForDismissedController:(UIViewController *)dismissed { + return [[HWPanModalPresentationAnimator alloc] initWithTransitionStyle:TransitionStyleDismissal interactiveMode:self.interactiveMode]; +} + +- (nullable id )interactionControllerForDismissal:(id )animator { + if (self.interactive) { + return self.interactiveDismissalAnimator; + } + + return nil; +} + +- (nullable UIPresentationController *)presentationControllerForPresentedViewController:(UIViewController *)presented presentingViewController:(nullable UIViewController *)presenting sourceViewController:(UIViewController *)source { + UIPresentationController *controller = [[HWPanModalPresentationController alloc] initWithPresentedViewController:presented presentingViewController:presenting]; + controller.delegate = self; + return controller; +} + +#pragma mark - UIAdaptivePresentationControllerDelegate + +- (UIModalPresentationStyle)adaptivePresentationStyleForPresentationController:(UIPresentationController *)controller traitCollection:(UITraitCollection *)traitCollection { + return UIModalPresentationNone; +} + +#pragma mark - Getter + +- (HWPanModalInteractiveAnimator *)interactiveDismissalAnimator { + if (!_interactiveDismissalAnimator) { + _interactiveDismissalAnimator = [[HWPanModalInteractiveAnimator alloc] init]; + } + return _interactiveDismissalAnimator; +} + +#ifdef DEBUG + +- (void)dealloc { + NSLog(@"%s", __PRETTY_FUNCTION__); +} + +#endif + +@end diff --git a/Pods/HWPanModal/Sources/HWPanModal.h b/Pods/HWPanModal/Sources/HWPanModal.h new file mode 100644 index 0000000..c02c81d --- /dev/null +++ b/Pods/HWPanModal/Sources/HWPanModal.h @@ -0,0 +1,36 @@ +// +// HWPanModal.h +// Pods +// +// Created by heath wang on 2019/4/30. +// +#import + +//! Project version number for HWPanModal. +FOUNDATION_EXPORT double HWPanModalVersionNumber; + +//! Project version string for JYHitchModule. +FOUNDATION_EXPORT const unsigned char HWPanModalVersionString[]; + +// protocol +#import +#import +#import + +#import + +// category +#import +#import +#import + +// custom animation +#import + +// view +#import +#import +#import + +// panModal view +#import diff --git a/Pods/HWPanModal/Sources/KVO/KeyValueObserver.h b/Pods/HWPanModal/Sources/KVO/KeyValueObserver.h new file mode 100644 index 0000000..d2280ca --- /dev/null +++ b/Pods/HWPanModal/Sources/KVO/KeyValueObserver.h @@ -0,0 +1,52 @@ +// +// KeyValueObserver.h +// Lab Color Space Explorer +// +// Created by Daniel Eggert on 01/12/2013. +// Copyright (c) 2013 objc.io. All rights reserved. +// + +#import + + + +@interface KeyValueObserver : NSObject + +@property (nonatomic, weak) id target; +@property (nonatomic) SEL selector; + +/// Create a Key-Value Observing helper object. +/// +/// As long as the returned token object is retained, the KVO notifications of the @c object +/// and @c keyPath will cause the given @c selector to be called on @c target. +/// @a object and @a target are weak references. +/// Once the token object gets dealloc'ed, the observer gets removed. +/// +/// The @c selector should conform to +/// @code +/// - (void)nameDidChange:(NSDictionary *)change; +/// @endcode +/// The passed in dictionary is the KVO change dictionary (c.f. @c NSKeyValueChangeKindKey, @c NSKeyValueChangeNewKey etc.) +/// +/// @returns the opaque token object to be stored in a property +/// +/// Example: +/// +/// @code +/// self.nameObserveToken = [KeyValueObserver observeObject:user +/// keyPath:@"name" +/// target:self +/// selector:@selector(nameDidChange:)]; +/// @endcode ++ (NSObject *)observeObject:(id)object keyPath:(NSString*)keyPath target:(id)target selector:(SEL)selector __attribute__((warn_unused_result)); + +/// Create a key-value-observer with the given KVO options ++ (NSObject *)observeObject:(id)object keyPath:(NSString*)keyPath target:(id)target selector:(SEL)selector options:(NSKeyValueObservingOptions)options __attribute__((warn_unused_result)); + +/** + * When you call this method, observer will not work. + * Please call observer method again. + */ +- (void)unObserver; + +@end diff --git a/Pods/HWPanModal/Sources/KVO/KeyValueObserver.m b/Pods/HWPanModal/Sources/KVO/KeyValueObserver.m new file mode 100644 index 0000000..7d2d8c5 --- /dev/null +++ b/Pods/HWPanModal/Sources/KVO/KeyValueObserver.m @@ -0,0 +1,85 @@ +// +// KeyValueObserver.m +// Lab Color Space Explorer +// +// Created by Daniel Eggert on 01/12/2013. +// Copyright (c) 2013 objc.io. All rights reserved. +// + +#import "KeyValueObserver.h" + +// +// Created by chris on 7/24/13. +// + +#import "KeyValueObserver.h" + +@interface KeyValueObserver () +@property (nonatomic, weak) id observedObject; +@property (nonatomic, copy) NSString* keyPath; +@property (nonatomic, assign) BOOL shouldObserver; +@end + +@implementation KeyValueObserver + +- (id)initWithObject:(id)object keyPath:(NSString*)keyPath target:(id)target selector:(SEL)selector options:(NSKeyValueObservingOptions)options; +{ + if (object == nil) { + return nil; + } + NSParameterAssert(target != nil); + NSParameterAssert([target respondsToSelector:selector]); + self = [super init]; + if (self) { + _shouldObserver = YES; + self.target = target; + self.selector = selector; + self.observedObject = object; + self.keyPath = keyPath; + [object addObserver:self forKeyPath:keyPath options:options context:(__bridge void *)(self)]; + } + return self; +} + ++ (NSObject *)observeObject:(id)object keyPath:(NSString*)keyPath target:(id)target selector:(SEL)selector __attribute__((warn_unused_result)); +{ + return [self observeObject:object keyPath:keyPath target:target selector:selector options:0]; +} + ++ (NSObject *)observeObject:(id)object keyPath:(NSString*)keyPath target:(id)target selector:(SEL)selector options:(NSKeyValueObservingOptions)options __attribute__((warn_unused_result)); +{ + return [[self alloc] initWithObject:object keyPath:keyPath target:target selector:selector options:options]; +} + +- (void)observeValueForKeyPath:(NSString*)keyPath ofObject:(id)object change:(NSDictionary*)change context:(void*)context +{ + if (context == (__bridge void *)(self)) { + [self didChange:change]; + } +} + +- (void)didChange:(NSDictionary *)change { + + if (!self.shouldObserver) { + return; + } + + id strongTarget = self.target; + + if ([strongTarget respondsToSelector:self.selector]) { + #pragma clang diagnostic push + #pragma clang diagnostic ignored "-Warc-performSelector-leaks" + [strongTarget performSelector:self.selector withObject:change]; + #pragma clang diagnostic pop + } +} + +- (void)dealloc { + [self.observedObject removeObserver:self forKeyPath:self.keyPath]; +} + +- (void)unObserver { + self.shouldObserver = NO; +} + +@end diff --git a/Pods/HWPanModal/Sources/Mediator/HWPanModalPresentableHandler.h b/Pods/HWPanModal/Sources/Mediator/HWPanModalPresentableHandler.h new file mode 100644 index 0000000..a06d062 --- /dev/null +++ b/Pods/HWPanModal/Sources/Mediator/HWPanModalPresentableHandler.h @@ -0,0 +1,102 @@ +// +// HWPanModalPresentableHandler.h +// HWPanModal +// +// Created by heath wang on 2019/10/15. +// Copyright © 2019 Heath Wang. All rights reserved. +// + +#import +#import +#import +#import "HWPanModalPresentationDelegate.h" + +typedef NS_ENUM(NSUInteger, HWPanModalPresentableHandlerMode) { + HWPanModalPresentableHandlerModeViewController, // used for UIViewController + HWPanModalPresentableHandlerModeView, // used for view +}; + +NS_ASSUME_NONNULL_BEGIN + +@protocol HWPanModalPresentableHandlerDelegate + +/** + * tell the delegate the presentable is about to update origin y + */ +- (void)adjustPresentableYPos:(CGFloat)yPos; + +/** + * tell the delegate presentable is about to change the form state + * @param state short,medium, long + */ +- (void)presentableTransitionToState:(PresentationState)state; + + +/** +* get current CurrentPresentationState of the delegate +*/ +- (PresentationState)getCurrentPresentationState; + +/** + * dismiss Controller/UIView + * @param isInteractive only for UIViewController, pop view will ignore it. + * @param mode only for UIViewController, pop view will ignore it. + */ +- (void)dismiss:(BOOL)isInteractive mode:(PanModalInteractiveMode)mode; + +@optional +- (void)cancelInteractiveTransition; +- (void)finishInteractiveTransition; + +@end + +@protocol HWPanModalPresentableHandlerDataSource + +- (CGSize)containerSize; +- (BOOL)isBeingDismissed; +- (BOOL)isBeingPresented; +- (BOOL)isFormPositionAnimating; + +@optional +- (BOOL)isPresentedViewAnchored; +- (BOOL)isPresentedControllerInteractive; + +@end + +@interface HWPanModalPresentableHandler : NSObject + +@property (nonatomic, assign, readonly) CGFloat shortFormYPosition; +@property (nonatomic, assign, readonly) CGFloat mediumFormYPosition; +@property (nonatomic, assign, readonly) CGFloat longFormYPosition; +@property (nonatomic, assign, readonly) BOOL extendsPanScrolling; +@property (nonatomic, assign, readonly) BOOL anchorModalToLongForm; +@property (nonatomic, assign, readonly) CGFloat anchoredYPosition; + +@property (nonatomic, strong, readonly) UIPanGestureRecognizer *panGestureRecognizer; +// make controller or view to deal with the gesture action +@property (nonatomic, strong, readonly) UIPanGestureRecognizer *screenEdgeGestureRecognizer; + +@property (nonatomic, assign) HWPanModalPresentableHandlerMode mode; +@property (nonatomic, weak) UIView *dragIndicatorView; +@property (nonatomic, weak) UIView *presentedView; // which used to present. + +@property(nonatomic, weak) id delegate; +@property(nonatomic, weak) id dataSource; + +- (instancetype)initWithPresentable:(id )presentable; ++ (instancetype)handlerWithPresentable:(id )presentable; + ++ (instancetype)new NS_UNAVAILABLE; +- (instancetype)init NS_UNAVAILABLE; + +- (void)observeScrollable; + +- (void)configureScrollViewInsets; + +- (void)setScrollableContentOffset:(CGPoint)offset animated:(BOOL)animated; + +- (void)configureViewLayout; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Mediator/HWPanModalPresentableHandler.m b/Pods/HWPanModal/Sources/Mediator/HWPanModalPresentableHandler.m new file mode 100644 index 0000000..648c63a --- /dev/null +++ b/Pods/HWPanModal/Sources/Mediator/HWPanModalPresentableHandler.m @@ -0,0 +1,769 @@ +// +// HWPanModalPresentableHandler.m +// HWPanModal +// +// Created by heath wang on 2019/10/15. +// Copyright © 2019 Heath Wang. All rights reserved. +// + +#import "HWPanModalPresentableHandler.h" +#import "UIScrollView+Helper.h" +#import "UIViewController+LayoutHelper.h" +#import "UIView+HW_Frame.h" +#import "KeyValueObserver.h" +#import "HWPanModalContentView.h" + +static NSString *const kScrollViewKVOContentOffsetKey = @"contentOffset"; + +@interface HWPanModalPresentableHandler () + +@property (nonatomic, assign) CGFloat shortFormYPosition; + +@property (nonatomic, assign) CGFloat mediumFormYPosition; + +@property (nonatomic, assign) CGFloat longFormYPosition; + +@property (nonatomic, assign) BOOL extendsPanScrolling; + +@property (nonatomic, assign) BOOL anchorModalToLongForm; + +@property (nonatomic, assign) CGFloat anchoredYPosition; + +@property (nonatomic, strong) id presentable; + +// keyboard handle +@property (nonatomic, copy) NSDictionary *keyboardInfo; + +@property (nonatomic, strong) UIPanGestureRecognizer *panGestureRecognizer; +@property (nonatomic, strong) UIPanGestureRecognizer *screenEdgeGestureRecognizer; + +// kvo +@property (nonatomic, strong) id observerToken; +@property (nonatomic, assign) CGFloat scrollViewYOffset; + +@end + +@implementation HWPanModalPresentableHandler + +- (instancetype)initWithPresentable:(id )presentable { + self = [super init]; + if (self) { + _presentable = presentable; + _extendsPanScrolling = YES; + _anchorModalToLongForm = YES; + [self addKeyboardObserver]; + } + + return self; +} + ++ (instancetype)handlerWithPresentable:(id )presentable { + return [[self alloc] initWithPresentable:presentable]; +} + +#pragma mark - Pan Gesture Event Handler + +- (void)didPanOnView:(UIPanGestureRecognizer *)panGestureRecognizer { + + if ([self shouldResponseToPanGestureRecognizer:panGestureRecognizer] && !self.keyboardInfo) { + + switch (panGestureRecognizer.state) { + + case UIGestureRecognizerStateBegan: + case UIGestureRecognizerStateChanged: { + [self handlePanGestureBeginOrChanged:panGestureRecognizer]; + } + break; + case UIGestureRecognizerStateEnded: + case UIGestureRecognizerStateCancelled: + case UIGestureRecognizerStateFailed: { + [self handlePanGestureEnded:panGestureRecognizer]; + } + break; + default: break; + } + } else { + [self handlePanGestureDidNotResponse:panGestureRecognizer]; + } + [self.presentable didRespondToPanModalGestureRecognizer:panGestureRecognizer]; +} + +- (BOOL)shouldResponseToPanGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + if ([self.presentable shouldRespondToPanModalGestureRecognizer:panGestureRecognizer] || + !(panGestureRecognizer.state == UIGestureRecognizerStateBegan || panGestureRecognizer.state == UIGestureRecognizerStateCancelled)) { + + return ![self shouldFailPanGestureRecognizer:panGestureRecognizer]; + } else { + // stop pan gesture working. + panGestureRecognizer.enabled = NO; + panGestureRecognizer.enabled = YES; + return NO; + } +} + +- (BOOL)shouldFailPanGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + + if ([self shouldPrioritizePanGestureRecognizer:panGestureRecognizer]) { + // high priority than scroll view gesture, disable scrollView gesture. + [self.presentable panScrollable].panGestureRecognizer.enabled = NO; + [self.presentable panScrollable].panGestureRecognizer.enabled = YES; + return NO; + } + + if ([self shouldHandleShortStatePullDownWithRecognizer:panGestureRecognizer]) { +// panGestureRecognizer.enabled = NO; +// panGestureRecognizer.enabled = YES; + return YES; + } + + BOOL shouldFail = NO; + UIScrollView *scrollView = [self.presentable panScrollable]; + if (scrollView) { + shouldFail = scrollView.contentOffset.y > -MAX(scrollView.contentInset.top, 0); + + // we want scroll the panScrollable, not the presentedView + if (self.isPresentedViewAnchored && shouldFail) { + CGPoint location = [panGestureRecognizer locationInView:self.presentedView]; + BOOL flag = CGRectContainsPoint(scrollView.frame, location) || scrollView.isScrolling; + if (flag) { + [self.dragIndicatorView didChangeToState:HWIndicatorStateNormal]; + } + return flag; + } else { + return NO; + } + + } else { + return NO; + } + +} + +- (BOOL)shouldHandleShortStatePullDownWithRecognizer:(UIPanGestureRecognizer *)recognizer { + if ([self.presentable allowsPullDownWhenShortState]) return NO; + + CGPoint location = [recognizer translationInView:self.presentedView]; + if ([self.delegate getCurrentPresentationState] == PresentationStateShort && recognizer.state == UIGestureRecognizerStateBegan) { + return YES; + } + + if ((self.presentedView.frame.origin.y >= self.shortFormYPosition || HW_TWO_FLOAT_IS_EQUAL(self.presentedView.frame.origin.y, self.shortFormYPosition)) && location.y > 0) { + return YES; + } + + return NO; +} + +- (BOOL)shouldPrioritizePanGestureRecognizer:(UIPanGestureRecognizer *)recognizer { + return recognizer.state == UIGestureRecognizerStateBegan && [[self presentable] shouldPrioritizePanModalGestureRecognizer:recognizer]; +} + +- (void)respondToPanGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + [self.presentable willRespondToPanModalGestureRecognizer:panGestureRecognizer]; + + CGFloat yDisplacement = [panGestureRecognizer translationInView:self.presentedView].y; + + if (self.presentedView.frame.origin.y < self.longFormYPosition) { + yDisplacement = yDisplacement / 2; + } + + id delegate = self.delegate; + if ([delegate respondsToSelector:@selector(adjustPresentableYPos:)]) { + [delegate adjustPresentableYPos:self.presentedView.frame.origin.y + yDisplacement]; + } + + [panGestureRecognizer setTranslation:CGPointZero inView:self.presentedView]; +} + +- (BOOL)isVelocityWithinSensitivityRange:(CGFloat)velocity { + return (fabs(velocity) - [self.presentable minVerticalVelocityToTriggerDismiss]) > 0; +} + +- (CGFloat)nearestDistance:(CGFloat)position inDistances:(NSArray *)distances { + + if (distances.count <= 0) { + return position; + } + + // TODO: need refine this sort code. + NSMutableArray *tmpArr = [NSMutableArray arrayWithCapacity:distances.count]; + NSMutableDictionary *tmpDict = [NSMutableDictionary dictionaryWithCapacity:distances.count]; + + [distances enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) { + NSNumber *number = obj; + NSNumber *absValue = @(fabs(number.floatValue - position)); + [tmpArr addObject:absValue]; + tmpDict[absValue] = number; + + }]; + + [tmpArr sortUsingSelector:@selector(compare:)]; + + NSNumber *result = tmpDict[tmpArr.firstObject]; + return result.floatValue; +} + +- (void)screenEdgeInteractiveAction:(UIPanGestureRecognizer *)gestureRecognizer { + // +} + +#pragma mark - handle did Pan gesture events + +- (void)handlePanGestureDidNotResponse:(UIPanGestureRecognizer *)panGestureRecognizer { + switch (panGestureRecognizer.state) { + case UIGestureRecognizerStateEnded: + case UIGestureRecognizerStateCancelled: + case UIGestureRecognizerStateFailed: { + [self.dragIndicatorView didChangeToState:HWIndicatorStateNormal]; + [self cancelInteractiveTransition]; + } + break; + default: + break; + } + [panGestureRecognizer setTranslation:CGPointZero inView:panGestureRecognizer.view]; +} + +- (void)handlePanGestureBeginOrChanged:(UIPanGestureRecognizer *)panGestureRecognizer { + CGPoint velocity = [panGestureRecognizer velocityInView:self.presentedView]; + [self respondToPanGestureRecognizer:panGestureRecognizer]; + + if (panGestureRecognizer.state == UIGestureRecognizerStateBegan) { + // check if toggle dismiss action + if ([[self presentable] presentingVCAnimationStyle] > PresentingViewControllerAnimationStyleNone && + velocity.y > 0 && + (self.presentedView.frame.origin.y > self.shortFormYPosition || HW_TWO_FLOAT_IS_EQUAL(self.presentedView.frame.origin.y, self.shortFormYPosition))) { + [self dismissPresentable:YES mode:PanModalInteractiveModeDragDown]; + } + } + + if (HW_TWO_FLOAT_IS_EQUAL(self.presentedView.frame.origin.y, self.anchoredYPosition) && self.extendsPanScrolling) { + [self.presentable willTransitionToState:PresentationStateLong]; + } + + // update drag indicator + if (panGestureRecognizer.state == UIGestureRecognizerStateChanged) { + if (velocity.y > 0) { + [self.dragIndicatorView didChangeToState:HWIndicatorStatePullDown]; + } else if (velocity.y < 0 && self.presentedView.frame.origin.y <= self.anchoredYPosition && !self.extendsPanScrolling) { + [self.dragIndicatorView didChangeToState:HWIndicatorStateNormal]; + } + } +} + +- (void)handlePanGestureEnded:(UIPanGestureRecognizer *)panGestureRecognizer { + CGPoint velocity = [panGestureRecognizer velocityInView:self.presentedView]; + /** + * pan recognizer结束 + * 根据velocity(速度),当velocity.y < 0,说明用户在向上拖拽view;当velocity.y > 0,向下拖拽 + * 根据拖拽的速度,处理不同的情况: + * 1.超过拖拽速度阈值时并且向下拖拽,dismiss controller + * 2.向上拖拽永远不会dismiss,回弹至相应的状态 + */ + + if ([self isVelocityWithinSensitivityRange:velocity.y]) { + + id delegate = self.delegate; + PresentationState currentState = [delegate getCurrentPresentationState]; + + if (velocity.y < 0) { + [self handleDragUpState:currentState]; + } else { + [self handleDragDownState:currentState]; + } + } else { + CGFloat position = [self nearestDistance:CGRectGetMinY(self.presentedView.frame) inDistances:@[@([self containerSize].height), @(self.shortFormYPosition), @(self.longFormYPosition), @(self.mediumFormYPosition)]]; + if (HW_TWO_FLOAT_IS_EQUAL(position, self.longFormYPosition)) { + [self transitionToState:PresentationStateLong]; + [self cancelInteractiveTransition]; + } else if (HW_TWO_FLOAT_IS_EQUAL(position, self.mediumFormYPosition)) { + [self transitionToState:PresentationStateMedium]; + [self cancelInteractiveTransition]; + } else if (HW_TWO_FLOAT_IS_EQUAL(position, self.shortFormYPosition) || ![self.presentable allowsDragToDismiss]) { + [self transitionToState:PresentationStateShort]; + [self cancelInteractiveTransition]; + } else { + if ([self isBeingDismissed]) { + [self finishInteractiveTransition]; + } else { + [self dismissPresentable:NO mode:PanModalInteractiveModeNone]; + } + } + } + [self.presentable didEndRespondToPanModalGestureRecognizer:panGestureRecognizer]; +} + +- (void)handleDragUpState:(PresentationState)state { + switch (state) { + case PresentationStateLong: + [self transitionToState:PresentationStateLong]; + [self cancelInteractiveTransition]; + break; + case PresentationStateMedium: + [self transitionToState:PresentationStateLong]; + [self cancelInteractiveTransition]; + break; + case PresentationStateShort: + [self transitionToState:PresentationStateMedium]; + [self cancelInteractiveTransition]; + break; + default: + break; + } +} + +- (void)handleDragDownState:(PresentationState)state { + switch (state) { + case PresentationStateLong: + [self transitionToState:PresentationStateMedium]; + [self cancelInteractiveTransition]; + break; + case PresentationStateMedium: + [self transitionToState:PresentationStateShort]; + [self cancelInteractiveTransition]; + break; + case PresentationStateShort: + if (![self.presentable allowsDragToDismiss]) { + [self transitionToState:PresentationStateShort]; + [self cancelInteractiveTransition]; + } else { + if ([self isBeingDismissed]) { + [self finishInteractiveTransition]; + } else { + [self dismissPresentable:NO mode:PanModalInteractiveModeNone]; + } + } + break; + default: + break; + } +} + +#pragma mark - UIScrollView kvo + +- (void)observeScrollable { + UIScrollView *scrollView = [[self presentable] panScrollable]; + if (!scrollView) { + // force set observerToken to nil, make sure to callback. + self.observerToken = nil; + return; + } + + self.scrollViewYOffset = MAX(scrollView.contentOffset.y, -(MAX(scrollView.contentInset.top, 0))); + self.observerToken = [KeyValueObserver observeObject:scrollView keyPath:kScrollViewKVOContentOffsetKey target:self selector:@selector(didPanOnScrollViewChanged:) options:NSKeyValueObservingOptionOld]; +} + +/** + As the user scrolls, track & save the scroll view y offset. + This helps halt scrolling when we want to hold the scroll view in place. +*/ +- (void)trackScrolling:(UIScrollView *)scrollView { + self.scrollViewYOffset = MAX(scrollView.contentOffset.y, -(MAX(scrollView.contentInset.top, 0))); + scrollView.showsVerticalScrollIndicator = [[self presentable] showsScrollableVerticalScrollIndicator]; +} + +/** + * Halts the scroll of a given scroll view & anchors it at the `scrollViewYOffset` + */ +- (void)haltScrolling:(UIScrollView *)scrollView { + + // + // Fix bug: the app will crash after the table view reloads data via calling [tableView reloadData] if the user scrolls to the bottom. + // + // We remove some element and reload data, for example, [self.dataSource removeLastObject], the previous saved scrollViewYOffset value + // will be great than or equal to the current actual offset(i.e. scrollView.contentOffset.y). At this time, if the method + // [scrollView setContentOffset:CGPointMake(0, self.scrollViewYOffset) animated:NO] is called, which will trigger KVO recursively. + // So scrollViewYOffset must be less than or equal to the actual offset here. + // See issues: https://github.com/HeathWang/HWPanModal/issues/107 and https://github.com/HeathWang/HWPanModal/issues/103 + + if (scrollView.contentOffset.y <= 0 || self.scrollViewYOffset <= scrollView.contentOffset.y) { + [scrollView setContentOffset:CGPointMake(0, self.scrollViewYOffset) animated:NO]; + scrollView.showsVerticalScrollIndicator = NO; + } +} + +- (void)didPanOnScrollViewChanged:(NSDictionary *)change { + + UIScrollView *scrollView = [[self presentable] panScrollable]; + if (!scrollView) return; + + if ((![self isBeingDismissed] && ![self isBeingPresented]) || + ([self isBeingDismissed] && [self isPresentedViewControllerInteractive])) { + + if (![self isPresentedViewAnchored] && scrollView.contentOffset.y > 0) { + [self haltScrolling:scrollView]; + } else if ([scrollView isScrolling] || [self isPresentedViewAnimating]) { + + // While we're scrolling upwards on the scrollView, store the last content offset position + if ([self isPresentedViewAnchored]) { + [self trackScrolling:scrollView]; + } else { + /** + * Keep scroll view in place while we're panning on main view + */ + [self haltScrolling:scrollView]; + } + } else { + [self trackScrolling:scrollView]; + } + + } else { + /** + * 当present Controller,而且动画没有结束的时候,用户可能会对scrollView设置contentOffset + * 首次用户滑动scrollView时,会因为scrollViewYOffset = 0而出现错位 + */ + if ([self isBeingPresented]) { + [self setScrollableContentOffset:scrollView.contentOffset animated:YES]; + } + } +} + +#pragma mark - UIScrollView update + +- (void)configureScrollViewInsets { + + // when scrolling, return + if ([self.presentable panScrollable] && ![self.presentable panScrollable].isScrolling) { + UIScrollView *scrollView = [self.presentable panScrollable]; + // 禁用scrollView indicator除非用户开始滑动scrollView + scrollView.showsVerticalScrollIndicator = [self.presentable showsScrollableVerticalScrollIndicator]; + scrollView.scrollEnabled = [self.presentable isPanScrollEnabled]; + scrollView.scrollIndicatorInsets = [self.presentable scrollIndicatorInsets]; + + if (![self.presentable shouldAutoSetPanScrollContentInset]) return; + + UIEdgeInsets insets1 = scrollView.contentInset; + CGFloat bottomLayoutOffset = [UIApplication sharedApplication].keyWindow.rootViewController.bottomLayoutGuide.length; + /* + * If scrollView has been set contentInset, and bottom is NOT zero, we won't change it. + * If contentInset.bottom is zero, set bottom = bottomLayoutOffset + * If scrollView has been set contentInset, BUT the bottom < bottomLayoutOffset, set bottom = bottomLayoutOffset + */ + if (HW_FLOAT_IS_ZERO(insets1.bottom) || insets1.bottom < bottomLayoutOffset) { + + insets1.bottom = bottomLayoutOffset; + scrollView.contentInset = insets1; + } + + if (@available(iOS 11.0, *)) { + scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } else { + // Fallback on earlier versions + } + } +} + +- (void)setScrollableContentOffset:(CGPoint)offset animated:(BOOL)animated { + if (![self.presentable panScrollable]) return; + + UIScrollView *scrollView = [self.presentable panScrollable]; + [self.observerToken unObserver]; + + [scrollView setContentOffset:offset animated:animated]; + // wait for animation finished. + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t) ((animated ? 0.30 : 0.1) * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + + [self trackScrolling:scrollView]; + [self observeScrollable]; + }); + +} + +#pragma mark - layout + +- (void)configureViewLayout { + + if ([self.presentable isKindOfClass:UIViewController.class]) { + UIViewController *layoutPresentable = (UIViewController *) self.presentable; + self.shortFormYPosition = layoutPresentable.shortFormYPos; + self.mediumFormYPosition = layoutPresentable.mediumFormYPos; + self.longFormYPosition = layoutPresentable.longFormYPos; + self.anchorModalToLongForm = [layoutPresentable anchorModalToLongForm]; + self.extendsPanScrolling = [layoutPresentable allowsExtendedPanScrolling]; + } else if ([self.presentable isKindOfClass:HWPanModalContentView.class]) { + HWPanModalContentView *layoutPresentable = (HWPanModalContentView *) self.presentable; + self.shortFormYPosition = layoutPresentable.shortFormYPos; + self.mediumFormYPosition = layoutPresentable.mediumFormYPos; + self.longFormYPosition = layoutPresentable.longFormYPos; + self.anchorModalToLongForm = [layoutPresentable anchorModalToLongForm]; + self.extendsPanScrolling = [layoutPresentable allowsExtendedPanScrolling]; + } + +} + +#pragma mark - UIGestureRecognizerDelegate + +/** + * ONLY When otherGestureRecognizer is panGestureRecognizer, and target gestureRecognizer is panGestureRecognizer, return YES. + */ +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + + if ([self.presentable respondsToSelector:@selector(hw_gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:)]) { + return [self.presentable hw_gestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer]; + } + + if ([gestureRecognizer isKindOfClass:UIPanGestureRecognizer.class]) { + return [otherGestureRecognizer isKindOfClass:UIPanGestureRecognizer.class]; + } + return NO; +} + +/** + * 当前手势为screenGestureRecognizer时,其他pan recognizer都应该fail + */ +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + + if ([self.presentable respondsToSelector:@selector(hw_gestureRecognizer:shouldBeRequiredToFailByGestureRecognizer:)]) { + return [self.presentable hw_gestureRecognizer:gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:otherGestureRecognizer]; + } + + + if (gestureRecognizer == self.screenEdgeGestureRecognizer && [otherGestureRecognizer isKindOfClass:UIPanGestureRecognizer.class]) { + return YES; + } + return NO; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + if ([self.presentable respondsToSelector:@selector(hw_gestureRecognizer:shouldRequireFailureOfGestureRecognizer:)]) { + return [self.presentable hw_gestureRecognizer:gestureRecognizer shouldRequireFailureOfGestureRecognizer:otherGestureRecognizer]; + } + + return NO; +} + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + + if ([self.presentable respondsToSelector:@selector(hw_gestureRecognizerShouldBegin:)]) { + return [self.presentable hw_gestureRecognizerShouldBegin:gestureRecognizer]; + } + + if (gestureRecognizer == self.screenEdgeGestureRecognizer) { + CGPoint velocity = [self.screenEdgeGestureRecognizer velocityInView:self.screenEdgeGestureRecognizer.view]; + + if (velocity.x <= 0 || HW_TWO_FLOAT_IS_EQUAL(velocity.x, 0)) { + return NO; + } + + // check the distance to left edge + CGPoint location = [self.screenEdgeGestureRecognizer locationInView:self.screenEdgeGestureRecognizer.view]; + CGFloat thresholdDistance = [[self presentable] maxAllowedDistanceToLeftScreenEdgeForPanInteraction]; + if (thresholdDistance > 0 && location.x > thresholdDistance) { + return NO; + } + + if (velocity.x > 0 && HW_TWO_FLOAT_IS_EQUAL(velocity.y, 0)) { + return YES; + } + + //TODO: this logic can be updated later. + if (velocity.x > 0 && velocity.x / fabs(velocity.y) > 2) { + return YES; + } + return NO; + } + + return YES; +} + +#pragma mark - UIKeyboard Handle + +- (void)addKeyboardObserver { + if ([self.presentable isAutoHandleKeyboardEnabled]) { + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillShow:) name:UIKeyboardWillShowNotification object:nil]; + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(keyboardWillHide:) name:UIKeyboardWillHideNotification object:nil]; + } +} + +- (void)removeKeyboardObserver { + [[NSNotificationCenter defaultCenter] removeObserver:self]; +} + +- (void)keyboardWillShow:(NSNotification *)notification { + UIView *currentInput = [self findCurrentTextInputInView:self.presentedView]; + + if (!currentInput) + return; + + self.keyboardInfo = notification.userInfo; + [self updatePanContainerFrameForKeyboard]; +} + +- (void)keyboardWillHide:(NSNotification *)notification { + self.keyboardInfo = nil; + + NSTimeInterval duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + UIViewAnimationCurve curve = (UIViewAnimationCurve) [notification.userInfo[UIKeyboardAnimationCurveUserInfoKey] integerValue]; + + [UIView beginAnimations:nil context:nil]; + [UIView setAnimationBeginsFromCurrentState:YES]; + [UIView setAnimationCurve:curve]; + [UIView setAnimationDuration:duration]; + + self.presentedView.transform = CGAffineTransformIdentity; + + [UIView commitAnimations]; +} + +- (void)updatePanContainerFrameForKeyboard { + if (!self.keyboardInfo) + return; + + UIView *textInput = [self findCurrentTextInputInView:self.presentedView]; + if (!textInput) + return; + + CGAffineTransform lastTransform = self.presentedView.transform; + self.presentedView.transform = CGAffineTransformIdentity; + + CGFloat textViewBottomY = [textInput convertRect:textInput.bounds toView:self.presentedView].origin.y + textInput.hw_height; + CGFloat keyboardHeight = [self.keyboardInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue].size.height; + + CGFloat offsetY = 0; + CGFloat top = [self.presentable keyboardOffsetFromInputView]; + offsetY = self.presentedView.hw_height - (keyboardHeight + top + textViewBottomY + self.presentedView.hw_top); + + NSTimeInterval duration = [self.keyboardInfo[UIKeyboardAnimationDurationUserInfoKey] doubleValue]; + UIViewAnimationCurve curve = (UIViewAnimationCurve) [self.keyboardInfo[UIKeyboardAnimationCurveUserInfoKey] intValue]; + + self.presentedView.transform = lastTransform; + [UIView beginAnimations:nil context:NULL]; + [UIView setAnimationBeginsFromCurrentState:YES]; + [UIView setAnimationCurve:curve]; + [UIView setAnimationDuration:duration]; + + self.presentedView.transform = CGAffineTransformMakeTranslation(0, offsetY); + + [UIView commitAnimations]; +} + +- (UIView *)findCurrentTextInputInView:(UIView *)view { + if ([view conformsToProtocol:@protocol(UIKeyInput)] && view.isFirstResponder) { + // Quick fix for web view issue + if ([view isKindOfClass:NSClassFromString(@"UIWebBrowserView")] || [view isKindOfClass:NSClassFromString(@"WKContentView")]) { + return nil; + } + return (UIView *) view; + } + + for (UIView *subview in view.subviews) { + UIView *inputInView = [self findCurrentTextInputInView:subview]; + if (inputInView) { + return inputInView; + } + } + return nil; +} + +#pragma mark - delegate throw + +- (void)transitionToState:(PresentationState)state { + + id delegate = self.delegate; + if ([delegate respondsToSelector:@selector(presentableTransitionToState:)]) { + [delegate presentableTransitionToState:state]; + } +} + +- (void)cancelInteractiveTransition { + id delegate = self.delegate; + if ([delegate respondsToSelector:@selector(cancelInteractiveTransition)]) { + [delegate cancelInteractiveTransition]; + } +} + +- (void)finishInteractiveTransition { + id delegate = self.delegate; + if ([delegate respondsToSelector:@selector(finishInteractiveTransition)]) { + [delegate finishInteractiveTransition]; + } +} + +- (void)dismissPresentable:(BOOL)isInteractive mode:(PanModalInteractiveMode)mode { + id delegate = self.delegate; + if ([delegate respondsToSelector:@selector(dismiss:mode:)]) { + [delegate dismiss:isInteractive mode:mode]; + } +} + +#pragma mark - dataSource handle + +- (BOOL)isPresentedViewAnchored { + if (self.dataSource && [self.dataSource respondsToSelector:@selector(isPresentedViewAnchored)]) { + return [self.dataSource isPresentedViewAnchored]; + } + + return NO; +} + +- (BOOL)isBeingDismissed { + if (self.dataSource && [self.dataSource respondsToSelector:@selector(isBeingDismissed)]) { + return [self.dataSource isBeingDismissed]; + } + return NO; +} + +- (BOOL)isBeingPresented { + if (self.dataSource && [self.dataSource respondsToSelector:@selector(isBeingPresented)]) { + return [self.dataSource isBeingPresented]; + } + return NO; +} + +- (BOOL)isPresentedViewControllerInteractive { + if (self.dataSource && [self.dataSource respondsToSelector:@selector(isPresentedControllerInteractive)]) { + return [self.dataSource isPresentedControllerInteractive]; + } + return NO; +} + +- (BOOL)isPresentedViewAnimating { + if (self.dataSource && [self.dataSource respondsToSelector:@selector(isFormPositionAnimating)]) { + [self.dataSource isFormPositionAnimating]; + } + return NO; +} + +- (CGSize)containerSize { + if (self.dataSource && [self.dataSource respondsToSelector:@selector(containerSize)]) { + return [self.dataSource containerSize]; + } + + return CGSizeZero; +} + +#pragma mark - Getter + +- (UIPanGestureRecognizer *)panGestureRecognizer { + if (!_panGestureRecognizer) { + _panGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(didPanOnView:)]; + _panGestureRecognizer.minimumNumberOfTouches = 1; + _panGestureRecognizer.maximumNumberOfTouches = 1; + _panGestureRecognizer.delegate = self; + } + return _panGestureRecognizer; +} + +- (UIPanGestureRecognizer *)screenEdgeGestureRecognizer { + if (!_screenEdgeGestureRecognizer) { + _screenEdgeGestureRecognizer = [[UIPanGestureRecognizer alloc] initWithTarget:self action:@selector(screenEdgeInteractiveAction:)]; + _screenEdgeGestureRecognizer.minimumNumberOfTouches = 1; + _screenEdgeGestureRecognizer.maximumNumberOfTouches = 1; + _screenEdgeGestureRecognizer.delegate = self; + } + + return _screenEdgeGestureRecognizer; +} + +- (CGFloat)anchoredYPosition { + CGFloat defaultTopOffset = [self.presentable topOffset]; + return self.anchorModalToLongForm ? self.longFormYPosition : defaultTopOffset; +} + +#pragma mark - Dealloc + +- (void)dealloc { + [self removeKeyboardObserver]; +} + +@end diff --git a/Pods/HWPanModal/Sources/Presentable/HWPanModalHeight.h b/Pods/HWPanModal/Sources/Presentable/HWPanModalHeight.h new file mode 100644 index 0000000..998b8d9 --- /dev/null +++ b/Pods/HWPanModal/Sources/Presentable/HWPanModalHeight.h @@ -0,0 +1,48 @@ +// +// HWPanModalHeight.h +// Pods +// +// Created by heath wang on 2019/4/26. +// + +#import +#import + +typedef NS_ENUM(NSInteger, PanModalHeightType) { + PanModalHeightTypeMax NS_SWIFT_NAME(max), // from top max + PanModalHeightTypeMaxTopInset NS_SWIFT_NAME(topInset), // from top offset + PanModalHeightTypeContent NS_SWIFT_NAME(content), // from bottom + PanModalHeightTypeContentIgnoringSafeArea NS_SWIFT_NAME(contentIgnoringSafeArea), // from bottom ignore safeArea + PanModalHeightTypeIntrinsic NS_SWIFT_NAME(intrinsic), // auto get size, There is something wrong, DO NOT recommend to use. +}; + +struct PanModalHeight { + PanModalHeightType heightType NS_SWIFT_NAME(type); + CGFloat height; +}; + +typedef struct PanModalHeight PanModalHeight; + +/** + * When heightType is PanModalHeightTypeMax, PanModalHeightTypeIntrinsic, the height value will be ignored. + */ +CG_INLINE PanModalHeight PanModalHeightMake(PanModalHeightType heightType, CGFloat height) { + PanModalHeight modalHeight; + modalHeight.heightType = heightType; + modalHeight.height = height; + return modalHeight; +} + +static inline BOOL HW_FLOAT_IS_ZERO(CGFloat value) { + return (value > -FLT_EPSILON) && (value < FLT_EPSILON); +} + +static inline BOOL HW_TWO_FLOAT_IS_EQUAL(CGFloat x, CGFloat y) { + CGFloat minusValue = fabs(x - y); + CGFloat criticalValue = 0.0001; + if (minusValue < criticalValue || minusValue < FLT_MIN) { + return YES; + } + return NO; +} + diff --git a/Pods/HWPanModal/Sources/Presentable/HWPanModalPanGestureDelegate.h b/Pods/HWPanModal/Sources/Presentable/HWPanModalPanGestureDelegate.h new file mode 100644 index 0000000..908cbdb --- /dev/null +++ b/Pods/HWPanModal/Sources/Presentable/HWPanModalPanGestureDelegate.h @@ -0,0 +1,31 @@ +// +// HWPanModalPanGestureDelegate.h +// Pods +// +// Created by heath wang on 2022/8/1. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * In this framewok, we use UIPanGestureRecognizer to control user drags behavior. + * The internal logic, there are two panGestureRecognizers delegate will response below delegate: the main panGesture used to control darg down, another panGesture used to control screen edge dismiss. + * Implement this delegate and custom user drag behavior. + * WARNING: BE CAREFUL, AND KNOW WHAT YOU ARE DOING! + */ +@protocol HWPanModalPanGestureDelegate + +- (BOOL)hw_gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer; +- (BOOL)hw_gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; + +- (BOOL)hw_gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRequireFailureOfGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; +- (BOOL)hw_gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldBeRequiredToFailByGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; + + +@end + +NS_ASSUME_NONNULL_END + diff --git a/Pods/HWPanModal/Sources/Presentable/HWPanModalPresentable.h b/Pods/HWPanModal/Sources/Presentable/HWPanModalPresentable.h new file mode 100644 index 0000000..2e9bc85 --- /dev/null +++ b/Pods/HWPanModal/Sources/Presentable/HWPanModalPresentable.h @@ -0,0 +1,451 @@ +// +// HWPanModalPresentable.h +// Pods +// +// Created by heath wang on 2019/4/26. +// + +#import +#import +#import +#import +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, PresentationState) { + PresentationStateShort NS_SWIFT_NAME(short), + PresentationStateMedium NS_SWIFT_NAME(medium), + PresentationStateLong NS_SWIFT_NAME(long), +}; + +typedef NS_ENUM(NSInteger, PresentingViewControllerAnimationStyle) { + // no animation for presentingVC + PresentingViewControllerAnimationStyleNone NS_SWIFT_NAME(none), + // page sheet animation, like iOS13 default modalPresentation style + PresentingViewControllerAnimationStylePageSheet NS_SWIFT_NAME(pageSheet), + // shopping cart animation, like jd/taobao shopping cart animation + PresentingViewControllerAnimationStyleShoppingCart NS_SWIFT_NAME(shoppingCart), + // make your own custom animation + PresentingViewControllerAnimationStyleCustom NS_SWIFT_NAME(custom), +}; + +/** + * HWPanModalPresentable为present配置协议 + * 默认情况下无需实现,只需Controller/View适配该协议 + * 通过category来默认实现以下所有方法,避免继承类 + * + * This Protocol is the core of HWPanModal, we use it to config presentation. + * Default, you don't need to conform all of these methods, just implement what you want to customize. + * All the config has default value, we use a `UIViewController` category to conform `HWPanModalPresentable` protocol. + */ +@protocol HWPanModalPresentable + +#pragma mark - ScrollView Config + +/** + * 支持同步拖拽的scrollView + * 如果ViewController中包含scrollView并且你想scrollView滑动和拖拽手势同时存在,请返回此scrollView + * + * If your ViewController has a scrollable view(UIScrollView and subclass), and you want pan gesture and scrollable both work, return it. + */ +- (nullable UIScrollView *)panScrollable; + +/** + * determine ScrollView scrollEnabled + * default is YES + */ +- (BOOL)isPanScrollEnabled; + +/** + * scrollView指示器insets + * Use `panModalSetNeedsLayoutUpdate()` when updating insets. + */ +- (UIEdgeInsets)scrollIndicatorInsets; + +/** + * A Boolean value that controls whether the scrollable vertical scroll indicator is visible. + * default is YES. + */ +- (BOOL)showsScrollableVerticalScrollIndicator; + +/** + * default is YES. + */ +- (BOOL)shouldAutoSetPanScrollContentInset; + +/** + * 是否允许拖动额外拖动,如果panScrollable存在,且scrollView contentSize > (size + bottomLayoutOffset),返回YES + * 其余情况返回NO + * + * If panScrollable exists, and scrollView contentSize > (size + bottomLayoutOffset), auto return YES, otherwise return NO. + * You can make your own logic if you want, and you know what you are doing. + */ +- (BOOL)allowsExtendedPanScrolling; + +#pragma mark - Offset/position + +/** + * Screen top offset from presented viewController + * Default is topLayoutGuide.length + 21.0. + */ +- (CGFloat)topOffset; + +/** + * 当pan状态为short时候的高度 + * default: shortFormHeight = longFormHeight + */ +- (PanModalHeight)shortFormHeight; + +/** + * default: mediumFormHeight = longFormHeight + */ +- (PanModalHeight)mediumFormHeight; + +/** + * 当pan状态为long的高度 + */ +- (PanModalHeight)longFormHeight; + +/** + * 初始弹出高度状态,默认为`shortFormHeight` + * + * Origin presentation height state, if you have special requirement, change it. + * Default is `shortFormHeight` + */ +- (PresentationState)originPresentationState; + +#pragma mark - Animation config + +/** + * spring弹性动画数值 + * Default is 0.9 + */ +- (CGFloat)springDamping; + +/** + * 转场动画时间 + * Default is 0.5 second + */ +- (NSTimeInterval)transitionDuration; + +/** + * starting from version 0.6.5, Only works when dismiss + * Default is same as `- (NSTimeInterval)transitionDuration;` + */ +- (NSTimeInterval)dismissalDuration; + +/** + * 转场动画options + * Default is UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState + */ +- (UIViewAnimationOptions)transitionAnimationOptions; + +#pragma mark - AppearanceTransition + +/** + * If enabled, the presenting VC will invoke viewWillAppear:, viewWillDisappear: + * Default is YES + */ +- (BOOL)shouldEnableAppearanceTransition; + +#pragma mark - Background config + +/** + * use this object to config background alpha or blur effect + * @return background config object + */ +- (HWBackgroundConfig *)backgroundConfig; + +#pragma mark - User Interaction + +/** + * 该bool值控制当pan View状态为long的情况下,是否可以继续拖拽到PanModalHeight = MAX的情况 + * 默认为YES,即当已经拖拽到long的情况下不能再继续拖动 + */ +- (BOOL)anchorModalToLongForm; + +/** + * 是否允许点击背景处dismiss presented Controller + * 默认为YES + */ +- (BOOL)allowsTapBackgroundToDismiss; + + +/** + * 是否允许drag操作dismiss presented Controller + * Default is YES + */ +- (BOOL)allowsDragToDismiss; + +/// Default is YES, When return NO, and you did set shortForm, user CAN NOT pull down the view. +- (BOOL)allowsPullDownWhenShortState; + +/** + min Velocity from Vertical direction that trigger dismiss action. + Default is 300.0 + */ +- (CGFloat)minVerticalVelocityToTriggerDismiss; + +/** + * 是否允许用户操作 + * Default is YES + */ +- (BOOL)isUserInteractionEnabled; + +/** + * 是否允许触觉反馈 + * Default is YES + */ +- (BOOL)isHapticFeedbackEnabled; + +/** + * 是否允许触摸事件透传到presenting ViewController/View。如果你有特殊需求的话(比如弹出一个底部视图,但是你想操作弹出视图下面的view,即presenting VC/View),可开启此功能 + * + * Whether allows touch events passing through the transition container view. + * In some situations, you present the bottom VC/View, and you want to operate the presenting VC/View(mapView, scrollView and etc), enable this func. + * + * Note: You SHOULD MUST dismiss the presented VC in the right time. + */ +- (BOOL)allowsTouchEventsPassingThroughTransitionView; + +#pragma mark - Screen left egde interaction + +/** + * 是否允许屏幕边缘侧滑手势 + * Default is NO,not allowed this user interaction. + * + * Note: Currently only works on UIViewController. + */ +- (BOOL)allowScreenEdgeInteractive; + +/** + * Max allowed distance to screen left edge when you want to make screen edge pan interaction + * Default is 0, means it will ignore this limit, full screen left edge pan will work. + * @return distance to left screen edge + */ +- (CGFloat)maxAllowedDistanceToLeftScreenEdgeForPanInteraction; + +/** + * When you enabled `- (BOOL)allowScreenEdgeInteractive`, this can work. + * min horizontal velocity to trigger screen edge dismiss if the drag didn't reach 0.5 screen width. + * Default is 500 + */ +- (CGFloat)minHorizontalVelocityToTriggerScreenEdgeDismiss; + +#pragma mark - Customize presentingViewController animation + +/** + * Config presentingViewController animation style, this animations will work for present & dismiss. + * Default is `PresentingViewControllerAnimationStyleNone`. + * @return The animation style. + */ +- (PresentingViewControllerAnimationStyle)presentingVCAnimationStyle; + +/** + * 自定义presenting ViewController转场动画,默认为nil + * 注意:如果实现该方法并返回非空示例,要使该方法生效,`- (PresentingViewControllerAnimationStyle)presentingVCAnimationStyle`必须返回PresentingViewControllerAnimationStyleCustom + * + * custom presenting ViewController transition animation, default is nil + * Note: If you implement this method and return non nil value, You must implement `- (PresentingViewControllerAnimationStyle) + * presentingVCAnimationStyle` and return PresentingViewControllerAnimationStyleCustom + */ +- (nullable id)customPresentingVCAnimation; + +#pragma mark - Content UI config + +/** + * 是否顶部圆角 + * Default is YES + */ +- (BOOL)shouldRoundTopCorners; + +/** + * 顶部圆角数值 + * Default is 8.0 + */ +- (CGFloat)cornerRadius; + +/** +* presented content shadow +* Default is None config +*/ +- (HWPanModalShadow *)contentShadow; + +#pragma mark - Indicator config + +/** + * 是否显示drag指示view + * Default is YES,Default this method depend on `- (BOOL)shouldRoundTopCorners` + */ +- (BOOL)showDragIndicator; + +/** + * You can make the indicator customized. Just adopt `HWPanModalIndicatorProtocol` + * Default this method return nil, Then the default indicator will be used. + */ +- (__kindof UIView * _Nullable)customIndicatorView; + +#pragma mark - Keyboard handle + +/** + * When there is text input view exists and becomeFirstResponder, will auto handle keyboard height. + * Default is YES. You can disable it, handle it by yourself. + */ +- (BOOL)isAutoHandleKeyboardEnabled; + +/** + The offset that keyboard show from input view's bottom. It works when + `isAutoHandleKeyboardEnabled` return YES. + + @return offset, default is 5. + */ +- (CGFloat)keyboardOffsetFromInputView; + +#pragma mark - Delegate + +#pragma mark - Pan Gesture delegate + +/** + * 询问delegate是否需要使拖拽手势生效 + * 若返回NO,则禁用拖拽手势操作,即不能拖拽dismiss + * 默认为YES + */ +- (BOOL)shouldRespondToPanModalGestureRecognizer:(nonnull UIPanGestureRecognizer *)panGestureRecognizer; + +/** + * 当pan recognizer状态为begin/changed时,通知delegate回调。 + * 当拖动presented View时,该方法会持续的回调 + * 默认实现为空 + */ +- (void)willRespondToPanModalGestureRecognizer:(nonnull UIPanGestureRecognizer *)panGestureRecognizer; + +/** + * 内部处理完成拖动操作后触发此回调,此时view frame可能已经变化。 + * Framework has did finish logic for GestureRecognizer delegate. It will call many times when you darg. + */ +- (void)didRespondToPanModalGestureRecognizer:(nonnull UIPanGestureRecognizer *)panGestureRecognizer; + +/** + * 内部处理完成拖动操作后触发此回调,此时view frame可能已经变化。 + * Framework has did finish logic for GestureRecognizer delegate. It will call many times when you darg. + */ +- (void)didEndRespondToPanModalGestureRecognizer:(nonnull UIPanGestureRecognizer *)panGestureRecognizer; + +/** + * 是否优先执行dismiss拖拽手势,当存在panScrollable的情况下,如果此方法返回YES,则 + * dismiss手势生效,scrollView本身的滑动则不再生效。也就是说可以拖动Controller view,而scrollView没法拖动了。 + * + * 例子:controller view上添加一个TableView,并铺满全屏,然后在controller view 顶部添加一个一定大小的viewA, + * 这个时候会发现viewA有时候无法拖动,可以实现此delegate方法来解决 + ``` + - (BOOL)shouldPrioritizePanModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + CGPoint loc = [panGestureRecognizer locationInView:self.view]; + // check whether user pan action in viewA + if (CGRectContainsPoint(self.viewA.frame, loc)) { + return YES; + } + + return NO; +} + ``` + * 默认为NO + * + * This delegate is useful when you want panGestureRecognizer has a high prioritize and + * make scrollable does NOT scroll. + * Example: You controller add a full size tableView, then add viewA on top of your controller view. + * Now you find you can not drag the viewA, use this delegate to resolve problem. + * Please refer to code above this comment. + * + * Default is NO + */ +- (BOOL)shouldPrioritizePanModalGestureRecognizer:(nonnull UIPanGestureRecognizer *)panGestureRecognizer; + +/** + * When you pan present controller to dismiss, and the view's y <= shortFormYPos, + * this delegate method will be called. + * @param percent 0 ~ 1, 1 means has dismissed + */ +- (void)panModalGestureRecognizer:(nonnull UIPanGestureRecognizer *)panGestureRecognizer dismissPercent:(CGFloat)percent; + +#pragma mark - PresentationState change delegate +/** + * 是否应该变更panModal状态 + */ +- (BOOL)shouldTransitionToState:(PresentationState)state; + +/** + * called when the Transition State will change. + * 通知回调即将变更状态 + */ +- (void)willTransitionToState:(PresentationState)state; + +/** + * PresentationState did change callback + */ +- (void)didChangeTransitionToState:(PresentationState)state; + +#pragma mark - present delegate + +/** + * call when present transition will begin. + */ +- (void)panModalTransitionWillBegin; + +/** + * call when present transition did finish. + */ +- (void)panModalTransitionDidFinish; + +/** + * call when your custom presented vc has been added to the presentation container. + */ +- (void)presentedViewDidMoveToSuperView; + +#pragma mark - Dismiss delegate +/** + * will dismiss + */ +- (void)panModalWillDismiss; + +/** + * Did finish dismissing + */ +- (void)panModalDidDismissed; + +#pragma mark - DEPRECATED DECLARE + +/** + * 是否对presentingViewController做动画效果,默认该效果类似淘宝/京东购物车凹陷效果 + * 默认为NO + */ +- (BOOL)shouldAnimatePresentingVC DEPRECATED_MSG_ATTRIBUTE("This api has been marked as DEPRECATED on version 0.3.6, please use `- (PresentingViewControllerAnimationStyle)presentingVCAnimationStyle` replaced."); + +/** + * 背景透明度 + * Default is 0.7 + */ +- (CGFloat)backgroundAlpha DEPRECATED_MSG_ATTRIBUTE("This api has been marked as DEPRECATED on version 0.7.0, please use `- (HWBackgroundConfig *)backgroundConfig` replaced."); + +/** + * Blur background + * This function can NOT coexist with backgroundAlpha + * Default use backgroundAlpha, Once you set backgroundBlurRadius > 0, blur will work. + * Recommend set the value 10 ~ 20. + * @return blur radius + */ +- (CGFloat)backgroundBlurRadius DEPRECATED_MSG_ATTRIBUTE("This api has been marked as DEPRECATED on version 0.7.0, please use `- (HWBackgroundConfig *)backgroundConfig` replaced."); + +/** + * blur background color + * @return color, default is White Color. + */ +- (nonnull UIColor *)backgroundBlurColor DEPRECATED_MSG_ATTRIBUTE("This api has been marked as DEPRECATED on version 0.7.0, please use `- (HWBackgroundConfig *)backgroundConfig` replaced."); + +@end + + +NS_ASSUME_NONNULL_END + diff --git a/Pods/HWPanModal/Sources/Presentable/HWPanModalPresentationUpdateProtocol.h b/Pods/HWPanModal/Sources/Presentable/HWPanModalPresentationUpdateProtocol.h new file mode 100644 index 0000000..809f74f --- /dev/null +++ b/Pods/HWPanModal/Sources/Presentable/HWPanModalPresentationUpdateProtocol.h @@ -0,0 +1,63 @@ +// +// HWPanModalPresentationUpdateProtocol.h +// Pods +// +// Created by heath wang on 2019/10/17. +// + +#import +@class HWDimmedView; + +@protocol HWPanModalPresentationUpdateProtocol +/// background view, you can call `reloadConfig:` to update the UI. +@property (nonatomic, readonly) HWDimmedView *hw_dimmedView; +/// the root container which your custom VC's view to be added. +@property (nonatomic, readonly) UIView *hw_rootContainerView; +/// which view that your presented viewController's view has been added. +@property (nonatomic, readonly) UIView *hw_contentView; +/// current presentation State +@property (nonatomic, readonly) PresentationState hw_presentationState; +/** + * force update pan modal State, short/long + */ +- (void)hw_panModalTransitionTo:(PresentationState)state NS_SWIFT_NAME(panModalTransitionTo(state:)); + +/** + * force update pan modal State, short/long + * @param state transition state + * @param animated whether animate when set state + */ +- (void)hw_panModalTransitionTo:(PresentationState)state animated:(BOOL)animated NS_SWIFT_NAME(panModalTransitionTo(state:animated:)); + +/** + * When presented ViewController has a UIScrollView, Use This method to update UIScrollView contentOffset + * Default it has animation + */ +- (void)hw_panModalSetContentOffset:(CGPoint)offset NS_SWIFT_NAME(panModalSetContentOffset(offset:)); + +/** + * When presented ViewController has a UIScrollView, Use This method to update UIScrollView contentOffset + * @param offset scrollView offset value + * @param animated whether animate + */ +- (void)hw_panModalSetContentOffset:(CGPoint)offset animated:(BOOL)animated NS_SWIFT_NAME(panModalSetContentOffset(offset:animated:)); + +/** + * Note:if we present a NavigationController, and we want to pan screen edge to dismiss. + * We MUST call this method when we PUSH/POP viewController. + * + */ +- (void)hw_panModalSetNeedsLayoutUpdate NS_SWIFT_NAME(panModalSetNeedsLayoutUpdate()); + +/** + * When you change the user touch event, like `allowsTouchEventsPassingThroughTransitionView`, you should call this method to make it work. + * 更新用户行为,比如事件穿透 + */ +- (void)hw_panModalUpdateUserHitBehavior NS_SWIFT_NAME(panModalUpdateUserHitBehavior()); + +/** + * call this method to dismiss your presented VC directly + */ +- (void)hw_dismissAnimated:(BOOL)animated completion:(void (^)(void))completion NS_SWIFT_NAME(panModalDismissAnimated(animated:completion:)); + +@end diff --git a/Pods/HWPanModal/Sources/Presentable/UIViewController+LayoutHelper.h b/Pods/HWPanModal/Sources/Presentable/UIViewController+LayoutHelper.h new file mode 100644 index 0000000..cc64c3b --- /dev/null +++ b/Pods/HWPanModal/Sources/Presentable/UIViewController+LayoutHelper.h @@ -0,0 +1,38 @@ +// +// UIViewController+LayoutHelper.h +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import +@class HWPanModalPresentationController; + +NS_ASSUME_NONNULL_BEGIN + +@protocol HWPanModalPresentableLayoutProtocol + +@property (nonatomic, assign, readonly) CGFloat topLayoutOffset; + +@property (nonatomic, assign, readonly) CGFloat bottomLayoutOffset; + +@property (nonatomic, assign, readonly) CGFloat shortFormYPos; + +@property (nonatomic, assign, readonly) CGFloat mediumFormYPos; + +@property (nonatomic, assign, readonly) CGFloat longFormYPos; + +@property (nonatomic, assign, readonly) CGFloat bottomYPos; + +@end + +/** + * Help presentedViewController/presented View to layout. + */ +@interface UIViewController (LayoutHelper) + +@property (nullable, nonatomic, strong, readonly) HWPanModalPresentationController *hw_presentedVC; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Presentable/UIViewController+LayoutHelper.m b/Pods/HWPanModal/Sources/Presentable/UIViewController+LayoutHelper.m new file mode 100644 index 0000000..0208fda --- /dev/null +++ b/Pods/HWPanModal/Sources/Presentable/UIViewController+LayoutHelper.m @@ -0,0 +1,130 @@ +// +// UIViewController+LayoutHelper.m +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import "UIViewController+LayoutHelper.h" +#import "HWPanModalPresentationController.h" +#import "UIViewController+PanModalDefault.h" + +@implementation UIViewController (LayoutHelper) + +- (CGFloat)topLayoutOffset { + if (@available(iOS 11, *)) { + return [UIApplication sharedApplication].keyWindow.safeAreaInsets.top; + } else { + return [UIApplication sharedApplication].keyWindow.rootViewController.topLayoutGuide.length; + } + +} + +- (CGFloat)bottomLayoutOffset { + if (@available(iOS 11, *)) { + return [UIApplication sharedApplication].keyWindow.safeAreaInsets.bottom; + } else { + return [UIApplication sharedApplication].keyWindow.rootViewController.bottomLayoutGuide.length; + } +} + +- (HWPanModalPresentationController *)hw_presentedVC { + /* + * Fix iOS13 bug: if we access presentationController before present VC, this will lead `modalPresentationStyle` not working. + * refer to: https://github.com/HeathWang/HWPanModal/issues/27 + * Apple Doc: If you have not yet presented the current view controller, accessing this property creates a presentation controller based on the current value in the modalPresentationStyle property. + */ + + /** + * fix bug: https://github.com/HeathWang/HWPanModal/issues/37 + */ + if (self.presentingViewController) { + return [self hw_getPanModalPresentationController]; + } else { + return nil; + } +} + +- (HWPanModalPresentationController *)hw_getPanModalPresentationController { + UIViewController *ancestorsVC; + + // seeking for the root presentation VC. + if (self.splitViewController) { + ancestorsVC = self.splitViewController; + } else if (self.navigationController) { + ancestorsVC = self.navigationController; + } else if (self.tabBarController) { + ancestorsVC = self.tabBarController; + } else { + ancestorsVC = self; + } + + if ([ancestorsVC.presentationController isMemberOfClass:HWPanModalPresentationController.class]) { + return (HWPanModalPresentationController *) ancestorsVC.presentationController; + } + return nil; +} + +/** + Returns the short form Y postion + + - Note: If voiceover is on, the `longFormYPos` is returned. + We do not support short form when voiceover is on as it would make it difficult for user to navigate. +*/ +- (CGFloat)shortFormYPos { + if (UIAccessibilityIsVoiceOverRunning()) { + return self.longFormYPos; + } else { + CGFloat shortFormYPos = [self topMarginFromPanModalHeight:[self shortFormHeight]] + [self topOffset]; + return MAX(shortFormYPos, self.longFormYPos); + } +} + +- (CGFloat)mediumFormYPos { + if (UIAccessibilityIsVoiceOverRunning()) { + return self.longFormYPos; + } else { + CGFloat mediumFormYPos = [self topMarginFromPanModalHeight:[self mediumFormHeight]] + [self topOffset]; + return MAX(mediumFormYPos, self.longFormYPos); + } +} + +- (CGFloat)longFormYPos { + return MAX([self topMarginFromPanModalHeight:[self longFormHeight]], [self topMarginFromPanModalHeight:PanModalHeightMake(PanModalHeightTypeMax, 0)]) + [self topOffset]; +} + +/** + * Use the container view for relative positioning as this view's frame + is adjusted in PanModalPresentationController + */ +- (CGFloat)bottomYPos { + if (self.hw_presentedVC.containerView) { + return self.hw_presentedVC.containerView.bounds.size.height - [self topOffset]; + } + return self.view.bounds.size.height; +} + +- (CGFloat)topMarginFromPanModalHeight:(PanModalHeight)panModalHeight { + switch (panModalHeight.heightType) { + case PanModalHeightTypeMax: + return 0.0f; + case PanModalHeightTypeMaxTopInset: + return panModalHeight.height; + case PanModalHeightTypeContent: + return self.bottomYPos - (panModalHeight.height + self.bottomLayoutOffset); + case PanModalHeightTypeContentIgnoringSafeArea: + return self.bottomYPos - panModalHeight.height; + case PanModalHeightTypeIntrinsic: + { + [self.view layoutIfNeeded]; + + CGSize targetSize = CGSizeMake(self.hw_presentedVC.containerView ? self.hw_presentedVC.containerView.bounds.size.width : [UIScreen mainScreen].bounds.size.width, UILayoutFittingCompressedSize.height); + CGFloat intrinsicHeight = [self.view systemLayoutSizeFittingSize:targetSize].height; + return self.bottomYPos - (intrinsicHeight + self.bottomLayoutOffset); + } + default: + return 0; + } +} + +@end diff --git a/Pods/HWPanModal/Sources/Presentable/UIViewController+PanModalDefault.h b/Pods/HWPanModal/Sources/Presentable/UIViewController+PanModalDefault.h new file mode 100644 index 0000000..bef8afe --- /dev/null +++ b/Pods/HWPanModal/Sources/Presentable/UIViewController+PanModalDefault.h @@ -0,0 +1,18 @@ +// +// UIViewController+PanModalDefault.h +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIViewController (PanModalDefault) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Presentable/UIViewController+PanModalDefault.m b/Pods/HWPanModal/Sources/Presentable/UIViewController+PanModalDefault.m new file mode 100644 index 0000000..04d33bd --- /dev/null +++ b/Pods/HWPanModal/Sources/Presentable/UIViewController+PanModalDefault.m @@ -0,0 +1,253 @@ +// +// UIViewController+PanModalDefault.m +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import "UIViewController+PanModalDefault.h" +#import "UIViewController+LayoutHelper.h" + +@implementation UIViewController (PanModalDefault) + +- (UIScrollView *)panScrollable { + return nil; +} + +- (CGFloat)topOffset { + return self.topLayoutOffset + 21.f; +} + +- (PanModalHeight)shortFormHeight { + return [self longFormHeight]; +} + +- (PanModalHeight)mediumFormHeight { + return [self longFormHeight]; +} + +- (PanModalHeight)longFormHeight { + if ([self panScrollable]) { + [[self panScrollable] layoutIfNeeded]; + return PanModalHeightMake(PanModalHeightTypeContent, MAX([self panScrollable].contentSize.height, [self panScrollable].bounds.size.height)); + } else { + return PanModalHeightMake(PanModalHeightTypeMax, 0); + } +} + +- (PresentationState)originPresentationState { + return PresentationStateShort; +} + +- (CGFloat)springDamping { + return 0.8; +} + +- (NSTimeInterval)transitionDuration { + return 0.5; +} + +- (NSTimeInterval)dismissalDuration { + return [self transitionDuration]; +} + +- (UIViewAnimationOptions)transitionAnimationOptions { + return UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState; +} + +- (CGFloat)backgroundAlpha { + return 0.7; +} + +- (CGFloat)backgroundBlurRadius { + return 0; +} + +- (nonnull UIColor *)backgroundBlurColor { + return [UIColor whiteColor]; +} + +- (HWBackgroundConfig *)backgroundConfig { + return [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; +} + +- (UIEdgeInsets)scrollIndicatorInsets { + CGFloat top = [self shouldRoundTopCorners] ? [self cornerRadius] : 0; + return UIEdgeInsetsMake(top, 0, self.bottomLayoutOffset, 0); +} + +- (BOOL)showsScrollableVerticalScrollIndicator { + return YES; +} + +- (BOOL)shouldAutoSetPanScrollContentInset { + return YES; +} + +- (BOOL)anchorModalToLongForm { + return YES; +} + +- (BOOL)allowsExtendedPanScrolling { + if ([self panScrollable]) { + UIScrollView *scrollable = [self panScrollable]; + + /* + [TableView] Warning once only: UITableView was told to layout its visible cells and other contents without being in the view hierarchy (the table view or one of its superviews has not been added to a window). This may cause bugs by forcing views inside the table view to load and perform layout without accurate information (e.g. table view bounds, trait collection, layout margins, safe area insets, etc), and will also cause unnecessary performance overhead due to extra layout passes. Make a symbolic breakpoint at UITableViewAlertForLayoutOutsideViewHierarchy to catch this in the debugger and see what caused this to occur, so you can avoid this action altogether if possible, or defer it until the table view has been added to a window. + */ + if (!scrollable.superview || !scrollable.window) return NO; + + [scrollable layoutIfNeeded]; + return scrollable.contentSize.height > (scrollable.frame.size.height - self.bottomLayoutOffset); + } + + return NO; +} + +- (BOOL)allowsDragToDismiss { + return YES; +} + +- (CGFloat)minVerticalVelocityToTriggerDismiss { + return 300; +} + +- (BOOL)allowsTapBackgroundToDismiss { + return YES; +} + +- (BOOL)allowScreenEdgeInteractive { + return NO; +} + +- (CGFloat)maxAllowedDistanceToLeftScreenEdgeForPanInteraction { + return 0; +} + +- (CGFloat)minHorizontalVelocityToTriggerScreenEdgeDismiss { + return 500; +} + +- (PresentingViewControllerAnimationStyle)presentingVCAnimationStyle { + return PresentingViewControllerAnimationStyleNone; +} + +- (BOOL)shouldEnableAppearanceTransition { + return YES; +} + +- (BOOL)shouldAnimatePresentingVC { + return NO; +} + +- (id )customPresentingVCAnimation { + return nil; +} + +- (BOOL)isPanScrollEnabled { + return YES; +} + +- (BOOL)isUserInteractionEnabled { + return YES; +} + +- (BOOL)allowsPullDownWhenShortState { + return YES; +} + +- (BOOL)isHapticFeedbackEnabled { + return YES; +} + +- (BOOL)allowsTouchEventsPassingThroughTransitionView { + return NO; +} + +- (BOOL)shouldRoundTopCorners { + return YES; +} + +- (CGFloat)cornerRadius { + return 8; +} + +- (HWPanModalShadow *)contentShadow { + return [HWPanModalShadow panModalShadowNil]; +} + +- (BOOL)showDragIndicator { + if ([self allowsTouchEventsPassingThroughTransitionView]) { + return NO; + } + return YES; +} + +- (nullable UIView *)customIndicatorView { + return nil; +} + +- (BOOL)isAutoHandleKeyboardEnabled { + return YES; +} + +- (CGFloat)keyboardOffsetFromInputView { + return 5; +} + +- (BOOL)shouldRespondToPanModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + return YES; +} + +- (void)willRespondToPanModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + +} + +- (void)didRespondToPanModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + +} + +- (void)didEndRespondToPanModalGestureRecognizer:(nonnull UIPanGestureRecognizer *)panGestureRecognizer { + +} + +- (BOOL)shouldPrioritizePanModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + return NO; +} + +- (BOOL)shouldTransitionToState:(PresentationState)state { + return YES; +} + +- (void)willTransitionToState:(PresentationState)state { +} + +- (void)didChangeTransitionToState:(PresentationState)state { +} + +- (void)panModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer dismissPercent:(CGFloat)percent { + +} + +- (void)panModalWillDismiss { + +} + +- (void)panModalDidDismissed { + +} + +- (void)panModalTransitionWillBegin { + +} + +- (void)panModalTransitionDidFinish { + +} + +- (void)presentedViewDidMoveToSuperView { + +} + +@end + diff --git a/Pods/HWPanModal/Sources/Presentable/UIViewController+Presentation.h b/Pods/HWPanModal/Sources/Presentable/UIViewController+Presentation.h new file mode 100644 index 0000000..671fc21 --- /dev/null +++ b/Pods/HWPanModal/Sources/Presentable/UIViewController+Presentation.h @@ -0,0 +1,21 @@ +// +// UIViewController+Presentation.h +// HWPanModal +// +// Created by heath wang on 2019/4/29. +// + +#import +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +/** + * The presented Controller can use the category to update UIPresentationController container. + */ +@interface UIViewController (Presentation) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Presentable/UIViewController+Presentation.m b/Pods/HWPanModal/Sources/Presentable/UIViewController+Presentation.m new file mode 100644 index 0000000..bcbf3d4 --- /dev/null +++ b/Pods/HWPanModal/Sources/Presentable/UIViewController+Presentation.m @@ -0,0 +1,70 @@ +// +// UIViewController+Presentation.m +// HWPanModal +// +// Created by heath wang on 2019/4/29. +// + +#import "UIViewController+Presentation.h" +#import "UIViewController+LayoutHelper.h" +#import "HWPanModalPresentationController.h" + +@interface UIViewController () + +@end + +@implementation UIViewController (Presentation) + +- (void)hw_panModalTransitionTo:(PresentationState)state { + if (!self.hw_presentedVC) return; + [self.hw_presentedVC transitionToState:state animated:YES]; +} + +- (void)hw_panModalTransitionTo:(PresentationState)state animated:(BOOL)animated { + if (!self.hw_presentedVC) return; + [self.hw_presentedVC transitionToState:state animated:animated]; +} + +- (void)hw_panModalSetContentOffset:(CGPoint)offset animated:(BOOL)animated { + if (!self.hw_presentedVC) return; + [self.hw_presentedVC setScrollableContentOffset:offset animated:animated]; +} + + +- (void)hw_panModalSetContentOffset:(CGPoint)offset { + if (!self.hw_presentedVC) return; + [self.hw_presentedVC setScrollableContentOffset:offset animated:YES]; +} + +- (void)hw_panModalSetNeedsLayoutUpdate { + if (!self.hw_presentedVC) return; + [self.hw_presentedVC setNeedsLayoutUpdate]; +} + +- (void)hw_panModalUpdateUserHitBehavior { + if (!self.hw_presentedVC) return; + [self.hw_presentedVC updateUserHitBehavior]; +} + +- (void)hw_dismissAnimated:(BOOL)animated completion:(void (^)(void))completion{ + if (!self.hw_presentedVC) return; + [self.hw_presentedVC dismissAnimated:animated completion:completion]; +} + +- (HWDimmedView *)hw_dimmedView { + return self.hw_presentedVC.backgroundView; +} + +- (UIView *)hw_rootContainerView { + return self.hw_presentedVC.containerView; +} + +- (UIView *)hw_contentView { + return self.hw_presentedVC.presentedView; +} + +- (PresentationState)hw_presentationState { + return self.hw_presentedVC.currentPresentationState; +} + +@end diff --git a/Pods/HWPanModal/Sources/Presenter/HWPanModalPresenterProtocol.h b/Pods/HWPanModal/Sources/Presenter/HWPanModalPresenterProtocol.h new file mode 100644 index 0000000..386f004 --- /dev/null +++ b/Pods/HWPanModal/Sources/Presenter/HWPanModalPresenterProtocol.h @@ -0,0 +1,47 @@ +// +// HWPanModalPresenterProtocol.h +// Pods +// +// Created by heath wang on 2019/4/29. +// + +#import +#import +#import +@class HWPanModalPresentationDelegate; + +NS_ASSUME_NONNULL_BEGIN + +@protocol HWPanModalPresenter + +@property (nonatomic, assign, readonly) BOOL isPanModalPresented; +/** + * 这里我们将实现UIViewControllerTransitioningDelegate协议的delegate通过runtime存入到viewControllerToPresent中。 + * use runtime to store this prop to hw_presentedVC + */ +@property (nonnull, nonatomic, strong) HWPanModalPresentationDelegate *hw_panModalPresentationDelegate; + +/** + * Note: This method ONLY for iPad, like UIPopoverPresentationController. + */ +- (void)presentPanModal:(UIViewController *)viewControllerToPresent + sourceView:(nullable UIView *)sourceView + sourceRect:(CGRect)rect; + +- (void)presentPanModal:(UIViewController *)viewControllerToPresent + sourceView:(nullable UIView *)sourceView + sourceRect:(CGRect)rect + completion:(void (^ __nullable)(void))completion; + +/** + * Present the Controller from bottom. + */ +- (void)presentPanModal:(UIViewController *)viewControllerToPresent; + +- (void)presentPanModal:(UIViewController *)viewControllerToPresent + completion:(void (^ __nullable)(void))completion; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/Pods/HWPanModal/Sources/Presenter/UIViewController+PanModalPresenter.h b/Pods/HWPanModal/Sources/Presenter/UIViewController+PanModalPresenter.h new file mode 100644 index 0000000..ce13542 --- /dev/null +++ b/Pods/HWPanModal/Sources/Presenter/UIViewController+PanModalPresenter.h @@ -0,0 +1,17 @@ +// +// UIViewController+PanModalPresenter.h +// HWPanModal +// +// Created by heath wang on 2019/4/29. +// + +#import +#import "HWPanModalPresenterProtocol.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface UIViewController (PanModalPresenter) + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/Presenter/UIViewController+PanModalPresenter.m b/Pods/HWPanModal/Sources/Presenter/UIViewController+PanModalPresenter.m new file mode 100644 index 0000000..9b41b9e --- /dev/null +++ b/Pods/HWPanModal/Sources/Presenter/UIViewController+PanModalPresenter.m @@ -0,0 +1,64 @@ +// +// UIViewController+PanModalPresenter.m +// HWPanModal +// +// Created by heath wang on 2019/4/29. +// + +#import "UIViewController+PanModalPresenter.h" +#import "HWPanModalPresentationDelegate.h" +#import + +@implementation UIViewController (PanModalPresenter) + +- (BOOL)isPanModalPresented { + return [self.transitioningDelegate isKindOfClass:HWPanModalPresentationDelegate.class]; +} + +- (void)presentPanModal:(UIViewController *)viewControllerToPresent sourceView:(UIView *)sourceView sourceRect:(CGRect)rect completion:(void (^)(void))completion { + + HWPanModalPresentationDelegate *delegate = [HWPanModalPresentationDelegate new]; + viewControllerToPresent.hw_panModalPresentationDelegate = delegate; + + if ([[UIDevice currentDevice] userInterfaceIdiom] == UIUserInterfaceIdiomPad && + (sourceView && !CGRectEqualToRect(rect, CGRectZero))) { + viewControllerToPresent.modalPresentationStyle = UIModalPresentationPopover; + viewControllerToPresent.popoverPresentationController.sourceRect = rect; + viewControllerToPresent.popoverPresentationController.sourceView = sourceView; + viewControllerToPresent.popoverPresentationController.delegate = delegate; + } else { + + viewControllerToPresent.modalPresentationStyle = UIModalPresentationCustom; + viewControllerToPresent.modalPresentationCapturesStatusBarAppearance = YES; + viewControllerToPresent.transitioningDelegate = delegate; + } + + // fix for iOS 8 issue: the present action will delay. + dispatch_async(dispatch_get_main_queue(), ^{ + [self presentViewController:viewControllerToPresent animated:YES completion:completion]; + }); +} + +- (void)presentPanModal:(UIViewController *)viewControllerToPresent sourceView:(nullable UIView *)sourceView sourceRect:(CGRect)rect { + [self presentPanModal:viewControllerToPresent sourceView:sourceView sourceRect:rect completion:nil]; + +} + +- (void)presentPanModal:(UIViewController *)viewControllerToPresent { + [self presentPanModal:viewControllerToPresent sourceView:nil sourceRect:CGRectZero]; +} + +- (void)presentPanModal:(UIViewController *)viewControllerToPresent completion:(void (^)(void))completion { + [self presentPanModal:viewControllerToPresent sourceView:nil sourceRect:CGRectZero completion:completion]; +} + +- (HWPanModalPresentationDelegate *)hw_panModalPresentationDelegate { + return objc_getAssociatedObject(self, _cmd); +} + +- (void)setHw_panModalPresentationDelegate:(HWPanModalPresentationDelegate *)hw_panModalPresentationDelegate { + objc_setAssociatedObject(self, @selector(hw_panModalPresentationDelegate), hw_panModalPresentationDelegate, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + + +@end diff --git a/Pods/HWPanModal/Sources/View/HWBackgroundConfig.h b/Pods/HWPanModal/Sources/View/HWBackgroundConfig.h new file mode 100644 index 0000000..7bce565 --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWBackgroundConfig.h @@ -0,0 +1,37 @@ +// +// HWBackgroundConfig.h +// Pods +// +// Created by heath wang on 2020/4/17. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSUInteger, HWBackgroundBehavior) { + HWBackgroundBehaviorDefault, // use background alpha + HWBackgroundBehaviorSystemVisualEffect, // use system UIVisualEffect object + HWBackgroundBehaviorCustomBlurEffect, // use custom blur +}; + +@interface HWBackgroundConfig : NSObject + +@property (nonatomic, assign) HWBackgroundBehavior backgroundBehavior; +// ONLY works for backgroundBehavior = HWBackgroundBehaviorDefault +@property (nonatomic, assign) CGFloat backgroundAlpha; // default is 0.7 +// ONLY works for backgroundBehavior = HWBackgroundBehaviorSystemVisualEffect +@property (nonatomic, strong) UIVisualEffect *visualEffect; // default is UIBlurEffectStyleLight + +// ONLY works for backgroundBehavior = HWBackgroundBehaviorCustomBlurEffect +@property (nonatomic, strong) UIColor *blurTintColor; // default is white color +@property (nonatomic, assign) CGFloat backgroundBlurRadius; // default is 10 + +- (instancetype)initWithBehavior:(HWBackgroundBehavior)backgroundBehavior; + ++ (instancetype)configWithBehavior:(HWBackgroundBehavior)backgroundBehavior; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/View/HWBackgroundConfig.m b/Pods/HWPanModal/Sources/View/HWBackgroundConfig.m new file mode 100644 index 0000000..7ea6ac5 --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWBackgroundConfig.m @@ -0,0 +1,57 @@ +// +// HWBackgroundConfig.m +// Pods +// +// Created by heath wang on 2020/4/17. +// + +#import "HWBackgroundConfig.h" + +@implementation HWBackgroundConfig + +- (instancetype)init { + self = [super init]; + if (self) { + self.backgroundBehavior = HWBackgroundBehaviorDefault; + } + + return self; +} + +- (instancetype)initWithBehavior:(HWBackgroundBehavior)backgroundBehavior { + self = [super init]; + if (self) { + self.backgroundBehavior = backgroundBehavior; + } + + return self; +} + ++ (instancetype)configWithBehavior:(HWBackgroundBehavior)backgroundBehavior { + return [[self alloc] initWithBehavior:backgroundBehavior]; +} + +#pragma mark - Setter + +- (void)setBackgroundBehavior:(HWBackgroundBehavior)backgroundBehavior { + _backgroundBehavior = backgroundBehavior; + + switch (backgroundBehavior) { + case HWBackgroundBehaviorSystemVisualEffect: { + self.visualEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; + } + break; + case HWBackgroundBehaviorCustomBlurEffect: { + self.backgroundBlurRadius = 10; + self.blurTintColor = [UIColor whiteColor]; + } + break; + default: { + self.backgroundAlpha = 0.7; + } + break; + } +} + + +@end diff --git a/Pods/HWPanModal/Sources/View/HWDimmedView.h b/Pods/HWPanModal/Sources/View/HWDimmedView.h new file mode 100644 index 0000000..1f2d3db --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWDimmedView.h @@ -0,0 +1,41 @@ +// +// HWDimmedView.h +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import +@class HWBackgroundConfig; + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, DimState) { + DimStateMax, + DimStateOff, + DimStatePercent, +}; + +typedef void(^didTap)(UITapGestureRecognizer *recognizer); + +@interface HWDimmedView : UIView + +@property (nonatomic, assign) DimState dimState; +@property (nonatomic, assign) CGFloat percent; +@property (nullable, nonatomic, copy) didTap tapBlock; +@property (nullable, nonatomic, strong) UIColor *blurTintColor; + +@property (nonatomic, readonly) HWBackgroundConfig *backgroundConfig; + +/** + * init with the max dim alpha & max blur radius. + */ +- (instancetype)initWithDimAlpha:(CGFloat)dimAlpha blurRadius:(CGFloat)blurRadius; + +- (instancetype)initWithBackgroundConfig:(HWBackgroundConfig *)backgroundConfig; + +- (void)reloadConfig:(HWBackgroundConfig *)backgroundConfig; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/View/HWDimmedView.m b/Pods/HWPanModal/Sources/View/HWDimmedView.m new file mode 100644 index 0000000..099214d --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWDimmedView.m @@ -0,0 +1,202 @@ +// +// HWDimmedView.m +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import "HWDimmedView.h" +#import "HWVisualEffectView.h" +#import "HWBackgroundConfig.h" + +@interface HWDimmedView () + +@property (nonatomic, strong) UIView *backgroundView; +@property (nonatomic, strong) HWVisualEffectView *blurView; +@property (nonatomic, strong) HWBackgroundConfig *backgroundConfig; + +@property (nonatomic, assign) CGFloat maxDimAlpha; +@property (nonatomic, assign) CGFloat maxBlurRadius; +@property (nonatomic, assign) CGFloat maxBlurTintAlpha; +@property (nonatomic, strong) UITapGestureRecognizer *tapGestureRecognizer; +@property (nonatomic, assign) BOOL isBlurMode; + +@end + +@implementation HWDimmedView + +- (instancetype)initWithDimAlpha:(CGFloat)dimAlpha blurRadius:(CGFloat)blurRadius { + self = [super initWithFrame:CGRectZero]; + if (self) { + _maxBlurRadius = blurRadius; + _maxDimAlpha = dimAlpha; + [self commonInit]; + } + + return self; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + _maxDimAlpha = 0.7; + [self commonInit]; + } + + return self; +} + +- (instancetype)initWithBackgroundConfig:(HWBackgroundConfig *)backgroundConfig { + self = [super initWithFrame:CGRectZero]; + if (self) { + self.backgroundConfig = backgroundConfig; + _maxDimAlpha = backgroundConfig.backgroundAlpha; + _maxBlurRadius = backgroundConfig.backgroundBlurRadius; + _blurTintColor = backgroundConfig.blurTintColor; + + [self commonInit]; + } + + return self; +} + +- (void)commonInit { + _dimState = DimStateOff; + _maxBlurTintAlpha = 0.5; + // default, max alpha. + _percent = 1; + _tapGestureRecognizer = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(didTapView)]; + [self addGestureRecognizer:_tapGestureRecognizer]; + + [self setupView]; +} + +- (void)setupView { + self.isBlurMode = self.maxBlurRadius > 0 || self.backgroundConfig.visualEffect; + if (self.isBlurMode) { + [self addSubview:self.blurView]; + [self configBlurView]; + } else { + [self addSubview:self.backgroundView]; + } +} + +#pragma mark - layout + +- (void)layoutSubviews { + [super layoutSubviews]; + + // not call getter. + _blurView.frame = self.bounds; + _backgroundView.frame = self.bounds; +} + +#pragma mark - touch action + +- (void)didTapView { + self.tapBlock ? self.tapBlock(self.tapGestureRecognizer) : nil; +} + +#pragma mark - public method + +- (void)reloadConfig:(HWBackgroundConfig *)backgroundConfig { + + for (UIView *view in self.subviews) { + [view removeFromSuperview]; + } + + self.backgroundConfig = backgroundConfig; + _maxDimAlpha = backgroundConfig.backgroundAlpha; + _maxBlurRadius = backgroundConfig.backgroundBlurRadius; + _blurTintColor = backgroundConfig.blurTintColor; + + [self setupView]; + + DimState state = self.dimState; + self.dimState = state; +} + +#pragma mark - private method + +- (void)updateAlpha { + CGFloat alpha = 0; + CGFloat blurRadius = 0; + CGFloat blurTintAlpha = 0; + + switch (self.dimState) { + case DimStateMax:{ + alpha = self.maxDimAlpha; + blurRadius = self.maxBlurRadius; + blurTintAlpha = self.maxBlurTintAlpha; + } + break; + case DimStatePercent: { + CGFloat percent = MAX(0, MIN(1.0f, self.percent)); + alpha = self.maxDimAlpha * percent; + blurRadius = self.maxBlurRadius * percent; + blurTintAlpha = self.maxBlurTintAlpha * percent; + } + default: + break; + } + + if (self.isBlurMode) { + if (self.backgroundConfig.visualEffect) return; + + self.blurView.blurRadius = blurRadius; + self.blurView.colorTintAlpha = blurTintAlpha; + } else { + self.backgroundView.alpha = alpha; + } +} + +- (void)configBlurView { + if (self.backgroundConfig.visualEffect) { + [_blurView updateBlurEffect:self.backgroundConfig.visualEffect]; + } else { + _blurView.colorTint = [UIColor whiteColor]; + _blurView.colorTintAlpha = self.maxBlurTintAlpha; + _blurView.userInteractionEnabled = NO; + } +} + +#pragma mark - Setter + +- (void)setDimState:(DimState)dimState { + _dimState = dimState; + [self updateAlpha]; +} + +- (void)setPercent:(CGFloat)percent { + _percent = percent; + [self updateAlpha]; +} + +#pragma mark - Getter + +- (UIView *)backgroundView { + if (!_backgroundView) { + _backgroundView = [UIView new]; + _backgroundView.userInteractionEnabled = NO; + _backgroundView.alpha = 0; + _backgroundView.backgroundColor = [UIColor blackColor]; + } + return _backgroundView; +} + +- (HWVisualEffectView *)blurView { + if (!_blurView) { + _blurView = [HWVisualEffectView new]; + } + return _blurView; +} + +#pragma mark - Setter + +- (void)setBlurTintColor:(UIColor *)blurTintColor { + _blurTintColor = blurTintColor; + _blurView.colorTint = _blurTintColor; +} + + +@end diff --git a/Pods/HWPanModal/Sources/View/HWPanContainerView.h b/Pods/HWPanModal/Sources/View/HWPanContainerView.h new file mode 100644 index 0000000..82937d1 --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWPanContainerView.h @@ -0,0 +1,34 @@ +// +// HWPanContainerView.h +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HWPanContainerView : UIView + +/// the presented view should add to the content view. +@property (nonatomic, strong, readonly) UIView *contentView; + +- (instancetype)initWithPresentedView:(UIView *)presentedView frame:(CGRect)frame; + +- (void)updateShadow:(UIColor *)shadowColor + shadowRadius:(CGFloat)shadowRadius + shadowOffset:(CGSize)shadowOffset + shadowOpacity:(float)shadowOpacity; + +- (void)clearShadow; + +@end + +@interface UIView (PanContainer) + +@property (nullable, nonatomic, strong, readonly) HWPanContainerView *panContainerView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/View/HWPanContainerView.m b/Pods/HWPanModal/Sources/View/HWPanContainerView.m new file mode 100644 index 0000000..fadf43f --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWPanContainerView.m @@ -0,0 +1,60 @@ +// +// HWPanContainerView.m +// HWPanModal +// +// Created by heath wang on 2019/4/26. +// + +#import "HWPanContainerView.h" + +@interface HWPanContainerView () + +@property (nonatomic, strong) UIView *contentView; + +@end + +@implementation HWPanContainerView + +- (instancetype)initWithPresentedView:(UIView *)presentedView frame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + _contentView = [UIView new]; + + _contentView.frame = self.bounds; + [self addSubview:_contentView]; + [_contentView addSubview:presentedView]; + } + + return self; +} + +- (void)updateShadow:(UIColor *)shadowColor shadowRadius:(CGFloat)shadowRadius shadowOffset:(CGSize)shadowOffset shadowOpacity:(float)shadowOpacity { + + self.layer.shadowColor = shadowColor.CGColor; + self.layer.shadowRadius = shadowRadius; + self.layer.shadowOffset = shadowOffset; + self.layer.shadowOpacity = shadowOpacity; +} + +- (void)clearShadow { + self.layer.shadowColor = nil; + self.layer.shadowRadius = 3.0; + self.layer.shadowOffset = CGSizeZero; + self.layer.shadowOpacity = 0.0; +} + +@end + +@implementation UIView (PanContainer) + +- (HWPanContainerView *)panContainerView { + for (UIView *subview in self.subviews) { + if ([subview isKindOfClass:HWPanContainerView.class]) { + return (HWPanContainerView *) subview; + } + } + return nil; +} + + +@end diff --git a/Pods/HWPanModal/Sources/View/HWPanIndicatorView.h b/Pods/HWPanModal/Sources/View/HWPanIndicatorView.h new file mode 100644 index 0000000..0fb8638 --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWPanIndicatorView.h @@ -0,0 +1,19 @@ +// +// HWPanIndicatorView.h +// HWPanModal +// +// Created by heath wang on 2019/5/16. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HWPanIndicatorView : UIView + +@property (nonnull, nonatomic, strong) UIColor *indicatorColor; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/View/HWPanIndicatorView.m b/Pods/HWPanModal/Sources/View/HWPanIndicatorView.m new file mode 100644 index 0000000..9ce5fb8 --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWPanIndicatorView.m @@ -0,0 +1,114 @@ +// +// HWPanIndicatorView.m +// HWPanModal +// +// Created by heath wang on 2019/5/16. +// + +#import "UIView+HW_Frame.h" +#import + +@interface HWPanIndicatorView () + +@property (nonatomic, strong) UIView *leftView; +@property (nonatomic, strong) UIView *rightView; + +@property (nonatomic, assign) HWIndicatorState state; + +@end + +@implementation HWPanIndicatorView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:CGRectZero]; + if (self) { + self.backgroundColor = [UIColor clearColor]; + [self addSubview:self.leftView]; + [self addSubview:self.rightView]; + self.indicatorColor = [UIColor colorWithRed:0.792 green:0.788 blue:0.812 alpha:1.00]; + } + + return self; +} + +- (void)animate:(void (^)(void))animations { + [UIView animateWithDuration:0.5 delay:0 usingSpringWithDamping:1 initialSpringVelocity:1 options:UIViewAnimationOptionBeginFromCurrentState | UIViewAnimationOptionCurveEaseOut animations:animations completion:^(BOOL finished) { + + }]; +} + +#pragma mark - HWPanModalIndicatorProtocol + +- (void)didChangeToState:(HWIndicatorState)state { + self.state = state; +} + +- (CGSize)indicatorSize { + return CGSizeMake(34, 13); +} + +- (void)setupSubviews { + CGSize size = [self indicatorSize]; + self.frame = CGRectMake(self.frame.origin.x, self.frame.origin.y, size.width, size.height); + CGFloat height = 5; + CGFloat correction = height / 2; + + self.leftView.frame = CGRectMake(0, 0, CGRectGetWidth(self.frame) / 2 + correction, height); + self.leftView.hw_centerY = self.hw_height / 2; + self.leftView.layer.cornerRadius = MIN(self.leftView.hw_width, self.leftView.hw_height) / 2; + + self.rightView.frame = CGRectMake(CGRectGetWidth(self.frame) / 2 - correction, 0, CGRectGetWidth(self.frame) / 2 + correction, height); + self.rightView.hw_centerY = self.hw_height / 2; + self.rightView.layer.cornerRadius = MIN(self.rightView.hw_width, self.rightView.hw_height) / 2; + +} + +#pragma mark - Getter + +- (UIView *)leftView { + if (!_leftView) { + _leftView = [UIView new]; + } + return _leftView; +} + +- (UIView *)rightView { + if (!_rightView) { + _rightView = [UIView new]; + } + return _rightView; +} + + +#pragma mark - Setter + +- (void)setIndicatorColor:(UIColor *)indicatorColor { + _indicatorColor = indicatorColor; + self.leftView.backgroundColor = indicatorColor; + self.rightView.backgroundColor = indicatorColor; +} + +- (void)setState:(HWIndicatorState)state { + + _state = state; + + switch (state) { + case HWIndicatorStateNormal: { + CGFloat angle = 20 * M_PI / 180; + [self animate:^{ + self.leftView.transform = CGAffineTransformMakeRotation(angle); + self.rightView.transform = CGAffineTransformMakeRotation(-angle); + }]; + } + break; + case HWIndicatorStatePullDown: { + [self animate:^{ + self.leftView.transform = CGAffineTransformIdentity; + self.rightView.transform = CGAffineTransformIdentity; + }]; + } + break; + } +} + +@end diff --git a/Pods/HWPanModal/Sources/View/HWPanModalIndicatorProtocol.h b/Pods/HWPanModal/Sources/View/HWPanModalIndicatorProtocol.h new file mode 100644 index 0000000..67a5a29 --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWPanModalIndicatorProtocol.h @@ -0,0 +1,36 @@ +// +// HWPanModalIndicatorProtocol.h +// HWPanModal +// +// Created by heath wang on 2019/8/9. +// + +typedef NS_ENUM(NSUInteger, HWIndicatorState) { + HWIndicatorStateNormal NS_SWIFT_NAME(normal), // origin state + HWIndicatorStatePullDown NS_SWIFT_NAME(pull), // drag down state +}; + +static CGFloat const kIndicatorYOffset = 5; + +@protocol HWPanModalIndicatorProtocol + +/** + * When user drags, the state will change. + * You can change your UI here. + * @param state The state when drag changed. + */ +- (void)didChangeToState:(HWIndicatorState)state; + +/** + * Tell the size of the indicator. + */ +- (CGSize)indicatorSize; + +/** + * You can layout your UI here if you need. + * This method called when indicator added to super view + */ +- (void)setupSubviews; + +@end + diff --git a/Pods/HWPanModal/Sources/View/HWPanModalShadow.h b/Pods/HWPanModal/Sources/View/HWPanModalShadow.h new file mode 100644 index 0000000..ab5604c --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWPanModalShadow.h @@ -0,0 +1,26 @@ +// +// HWPanModalShadow.h +// Pods +// +// Created by hb on 2023/8/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HWPanModalShadow : NSObject + +@property (nonatomic, strong) UIColor *shadowColor; +@property (nonatomic, assign) CGFloat shadowRadius; +@property (nonatomic, assign) CGSize shadowOffset; +@property (nonatomic, assign) CGFloat shadowOpacity; + +- (instancetype)initWithColor:(UIColor *)shadowColor shadowRadius:(CGFloat)shadowRadius shadowOffset:(CGSize)shadowOffset shadowOpacity:(CGFloat)shadowOpacity; + ++ (instancetype)panModalShadowNil; + + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/View/HWPanModalShadow.m b/Pods/HWPanModal/Sources/View/HWPanModalShadow.m new file mode 100644 index 0000000..efbbbd8 --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWPanModalShadow.m @@ -0,0 +1,28 @@ +// +// HWPanModalShadow.m +// Pods +// +// Created by hb on 2023/8/3. +// + +#import "HWPanModalShadow.h" + +@implementation HWPanModalShadow + +- (instancetype)initWithColor:(UIColor *)shadowColor shadowRadius:(CGFloat)shadowRadius shadowOffset:(CGSize)shadowOffset shadowOpacity:(CGFloat)shadowOpacity { + self = [super init]; + if (self) { + _shadowColor = shadowColor; + _shadowRadius = shadowRadius; + _shadowOffset = shadowOffset; + _shadowOpacity = shadowOpacity; + } + + return self; +} + ++ (instancetype)panModalShadowNil { + return [[HWPanModalShadow alloc] initWithColor:[UIColor clearColor] shadowRadius:0 shadowOffset:CGSizeZero shadowOpacity:0]; +} + +@end diff --git a/Pods/HWPanModal/Sources/View/HWVisualEffectView.h b/Pods/HWPanModal/Sources/View/HWVisualEffectView.h new file mode 100644 index 0000000..b730ae4 --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWVisualEffectView.h @@ -0,0 +1,39 @@ +// +// HWVisualEffectView.h +// HWPanModal +// +// Created by heath wang on 2019/6/14. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HWVisualEffectView : UIVisualEffectView + +/** + * tint color + * default is nil + */ +@property (nullable, nonatomic, strong) UIColor *colorTint; +/** + * tint color alpha + * default is 0.0 + */ +@property (nonatomic, assign) CGFloat colorTintAlpha; +/** + * blur radius, change it to make blur affect + * default is 0.0 + */ +@property (nonatomic, assign) CGFloat blurRadius; +/** + * scale factor. + * default is 1.0 + */ +@property (nonatomic, assign) CGFloat scale; + +- (void)updateBlurEffect:(UIVisualEffect *)effect; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/View/HWVisualEffectView.m b/Pods/HWPanModal/Sources/View/HWVisualEffectView.m new file mode 100644 index 0000000..2e9473d --- /dev/null +++ b/Pods/HWPanModal/Sources/View/HWVisualEffectView.m @@ -0,0 +1,111 @@ +// +// HWVisualEffectView.m +// HWPanModal +// +// Created by heath wang on 2019/6/14. +// + +#import "HWVisualEffectView.h" + +NSString * const kInternalCustomBlurEffect = @"_UICustomBlurEffect"; +NSString * const kHWBlurEffectColorTintKey = @"colorTint"; +NSString * const kHWBlurEffectColorTintAlphaKey = @"colorTintAlpha"; +NSString * const kHWBlurEffectBlurRadiusKey = @"blurRadius"; +NSString * const kHWBlurEffectScaleKey = @"scale"; + +@interface HWVisualEffectView () + +@property (nonatomic, strong) UIVisualEffect *blurEffect; + +@end + +@implementation HWVisualEffectView + +@synthesize colorTint = _colorTint; +@synthesize colorTintAlpha = _colorTintAlpha; +@synthesize blurRadius = _blurRadius; +@synthesize scale = _scale; + +#pragma mark - init + +- (instancetype)initWithEffect:(UIVisualEffect *)effect { + self = [super initWithEffect:effect]; + if (self) { + self.scale = 1; + } + return self; +} + +#pragma mark - public method + +- (void)updateBlurEffect:(UIVisualEffect *)effect { + self.blurEffect = effect; + self.effect = self.blurEffect; +} + +#pragma mark - private method + +- (nullable id)__valueForKey:(NSString *)key { + if (![NSStringFromClass(self.blurEffect.class) isEqualToString:kInternalCustomBlurEffect]) { + return @(0); + } + return [self.blurEffect valueForKey:key]; +} + +- (void)__setValue:(id)value forKey:(NSString *)key { + if (![NSStringFromClass(self.blurEffect.class) isEqualToString:kInternalCustomBlurEffect]) { + self.effect = self.blurEffect; + return; + } + [self.blurEffect setValue:value forKey:key]; + self.effect = self.blurEffect; +} + +#pragma mark - Getter & Setter + +- (UIVisualEffect *)blurEffect { + if (!_blurEffect) { + if (NSClassFromString(kInternalCustomBlurEffect)) { + _blurEffect = (UIBlurEffect *)[NSClassFromString(@"_UICustomBlurEffect") new]; + } else { + _blurEffect = [UIBlurEffect effectWithStyle:UIBlurEffectStyleLight]; + } + } + + return _blurEffect; +} + +- (UIColor *)colorTint { + return [self __valueForKey:kHWBlurEffectColorTintKey]; +} + +- (void)setColorTint:(UIColor *)colorTint { + [self __setValue:colorTint forKey:kHWBlurEffectColorTintKey]; +} + +- (CGFloat)colorTintAlpha { + return ((NSNumber *)[self __valueForKey:kHWBlurEffectColorTintAlphaKey]).floatValue; +} + +- (void)setColorTintAlpha:(CGFloat)colorTintAlpha { + [self __setValue:@(colorTintAlpha) forKey:kHWBlurEffectColorTintAlphaKey]; +} + +- (CGFloat)blurRadius { + return ((NSNumber *)[self __valueForKey:kHWBlurEffectBlurRadiusKey]).floatValue; +} + +- (void)setBlurRadius:(CGFloat)blurRadius { + [self __setValue:@(blurRadius) forKey:kHWBlurEffectBlurRadiusKey]; +} + +- (CGFloat)scale { + return ((NSNumber *)[self __valueForKey:kHWBlurEffectScaleKey]).floatValue; +} + +- (void)setScale:(CGFloat)scale { + [self __setValue:@(scale) forKey:kHWBlurEffectScaleKey]; +} + + +@end diff --git a/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContainerView.h b/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContainerView.h new file mode 100644 index 0000000..312097f --- /dev/null +++ b/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContainerView.h @@ -0,0 +1,39 @@ +// +// HWPanModalContainerView.h +// Pods +// +// Created by heath wang on 2019/10/17. +// + +#import +#import + +@class HWPanModalContentView; +@class HWDimmedView; +@class HWPanContainerView; + +NS_ASSUME_NONNULL_BEGIN + +@interface HWPanModalContainerView : UIView + +@property (nonatomic, readonly) HWDimmedView *backgroundView; +@property (readonly) HWPanContainerView *panContainerView; +@property (nonatomic, readonly) PresentationState currentPresentationState; + +- (instancetype)initWithPresentingView:(UIView *)presentingView contentView:(HWPanModalContentView *)contentView; + +- (void)show; + +- (void)dismissAnimated:(BOOL)flag completion:(void (^)(void))completion; + +- (void)setNeedsLayoutUpdate; + +- (void)updateUserHitBehavior; + +- (void)transitionToState:(PresentationState)state animated:(BOOL)animated; + +- (void)setScrollableContentOffset:(CGPoint)offset animated:(BOOL)animated; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContainerView.m b/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContainerView.m new file mode 100644 index 0000000..7fda9df --- /dev/null +++ b/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContainerView.m @@ -0,0 +1,546 @@ +// +// HWPanModalContainerView.m +// Pods +// +// Created by heath wang on 2019/10/17. +// + +#import "HWPanModalContainerView.h" +#import "HWPanModalContentView.h" +#import "HWPanModalPresentableHandler.h" +#import "HWDimmedView.h" +#import "HWPanContainerView.h" +#import "UIView+HW_Frame.h" +#import "HWPanIndicatorView.h" +#import "HWPanModalAnimator.h" + +@interface HWPanModalContainerView () + +@property (nonatomic, strong) HWPanModalContentView *contentView; +@property (nonatomic, weak) UIView *presentingView; + +@property (nonatomic, strong) HWPanModalPresentableHandler *handler; + +// 判断弹出的view是否在做动画 +@property (nonatomic, assign) BOOL isPresentedViewAnimating; +@property (nonatomic, assign) PresentationState currentPresentationState; +@property (nonatomic, assign) BOOL isPresenting; +@property (nonatomic, assign) BOOL isDismissing; + +// view +@property (nonatomic, strong) HWDimmedView *backgroundView; +@property (nonatomic, strong) HWPanContainerView *panContainerView; +@property (nonatomic, strong) UIView *dragIndicatorView; + +@property (nonatomic, copy) void(^animationBlock)(void); + +@property (nullable, nonatomic, strong) UISelectionFeedbackGenerator *feedbackGenerator API_AVAILABLE(ios(10.0)); + +@end + +@implementation HWPanModalContainerView + +- (instancetype)initWithPresentingView:(UIView *)presentingView contentView:(HWPanModalContentView *)contentView { + self = [super init]; + if (self) { + _presentingView = presentingView; + _contentView = contentView; + } + + return self; +} + +- (void)show { + [self prepare]; + [self presentAnimationWillBegin]; + [self beginPresentAnimation]; +} + +- (void)dismissAnimated:(BOOL)flag completion:(void (^)(void))completion { + if (flag) { + self.animationBlock = completion; + [self dismiss:NO mode:PanModalInteractiveModeNone]; + } else { + self.isDismissing = YES; + [[self presentable] panModalWillDismiss]; + [self removeFromSuperview]; + [[self presentable] panModalDidDismissed]; + + completion ? completion() : nil; + self.isDismissing = NO; + } +} + +- (void)prepare { + [self.presentingView addSubview:self]; + self.frame = self.presentingView.bounds; + + _handler = [[HWPanModalPresentableHandler alloc] initWithPresentable:self.contentView]; + _handler.delegate = self; + _handler.dataSource = self; + + if (@available(iOS 10.0, *)) { + _feedbackGenerator = [UISelectionFeedbackGenerator new]; + [_feedbackGenerator prepare]; + } else { + // Fallback on earlier versions + } +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + [super willMoveToSuperview:newSuperview]; + if (UIDevice.currentDevice.userInterfaceIdiom == UIUserInterfaceIdiomPad) { + [self.superview removeObserver:self forKeyPath:@"frame"]; + [newSuperview addObserver:self forKeyPath:@"frame" options:NSKeyValueObservingOptionNew context:nil]; + } +} + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if (object == self.presentingView && [keyPath isEqualToString:@"frame"]) { + self.frame = self.presentingView.bounds; + [self setNeedsLayoutUpdate]; + [self updateDragIndicatorViewFrame]; + [self.contentView hw_panModalTransitionTo:self.contentView.hw_presentationState animated:NO]; + } else { + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } +} + +- (void)presentAnimationWillBegin { + [[self presentable] panModalTransitionWillBegin]; + [self layoutBackgroundView]; + + if ([[self presentable] originPresentationState] == PresentationStateLong) { + self.currentPresentationState = PresentationStateLong; + } else if ([[self presentable] originPresentationState] == PresentationStateMedium) { + self.currentPresentationState = PresentationStateMedium; + } + + [self addSubview:self.panContainerView]; + [self layoutPresentedView]; + + [self.handler configureScrollViewInsets]; + [[self presentable] presentedViewDidMoveToSuperView]; +} + +- (void)beginPresentAnimation { + self.isPresenting = YES; + CGFloat yPos = self.contentView.shortFormYPos; + if ([[self presentable] originPresentationState] == PresentationStateLong) { + yPos = self.contentView.longFormYPos; + } else if ([[self presentable] originPresentationState] == PresentationStateMedium) { + yPos = self.contentView.mediumFormYPos; + } + + // refresh layout + [self configureViewLayout]; + [self adjustPresentedViewFrame]; + + self.panContainerView.hw_top = self.hw_height; + + if ([[self presentable] isHapticFeedbackEnabled]) { + if (@available(iOS 10.0, *)) { + [self.feedbackGenerator selectionChanged]; + } + } + + [HWPanModalAnimator animate:^{ + self.panContainerView.hw_top = yPos; + self.backgroundView.dimState = DimStateMax; + } config:[self presentable] completion:^(BOOL completion) { + self.isPresenting = NO; + [[self presentable] panModalTransitionDidFinish]; + + if (@available(iOS 10.0, *)) { + self.feedbackGenerator = nil; + } + }]; + +} + +- (void)layoutSubviews { + [super layoutSubviews]; + [self configureViewLayout]; +} + +#pragma mark - public method + +- (void)setNeedsLayoutUpdate { + + [self configureViewLayout]; + [self updateBackgroundColor]; + [self.handler observeScrollable]; + [self adjustPresentedViewFrame]; + [self.handler configureScrollViewInsets]; + + [self updateContainerViewShadow]; + [self updateDragIndicatorView]; + [self updateRoundedCorners]; +} + +- (void)updateUserHitBehavior { + [self checkBackgroundViewEventPass]; + [self checkPanGestureRecognizer]; +} + +- (void)transitionToState:(PresentationState)state animated:(BOOL)animated { + + if (![self.presentable shouldTransitionToState:state]) return; + + [self.dragIndicatorView didChangeToState:HWIndicatorStateNormal]; + [self.presentable willTransitionToState:state]; + + switch (state) { + case PresentationStateLong: { + [self snapToYPos:self.handler.longFormYPosition animated:animated]; + } + break; + case PresentationStateMedium: { + [self snapToYPos:self.handler.mediumFormYPosition animated:animated]; + } + break; + case PresentationStateShort: { + [self snapToYPos:self.handler.shortFormYPosition animated:animated]; + } + break; + default: + break; + } + self.currentPresentationState = state; + [[self presentable] didChangeTransitionToState:state]; +} + +- (void)setScrollableContentOffset:(CGPoint)offset animated:(BOOL)animated { + [self.handler setScrollableContentOffset:offset animated:animated]; +} + +#pragma mark - layout + +- (void)adjustPresentedViewFrame { + CGRect frame = self.frame; + CGSize size = CGSizeMake(CGRectGetWidth(frame), CGRectGetHeight(frame) - self.handler.anchoredYPosition); + + self.panContainerView.hw_size = frame.size; + self.panContainerView.contentView.frame = CGRectMake(0, 0, size.width, size.height); + self.contentView.frame = self.panContainerView.contentView.bounds; + [self.contentView setNeedsLayout]; + [self.contentView layoutIfNeeded]; +} + +- (void)configureViewLayout { + + [self.handler configureViewLayout]; + self.userInteractionEnabled = [[self presentable] isUserInteractionEnabled]; +} + +- (void)layoutBackgroundView { + [self addSubview:self.backgroundView]; + [self updateBackgroundColor]; + self.backgroundView.translatesAutoresizingMaskIntoConstraints = NO; + + NSArray *hCons = [NSLayoutConstraint constraintsWithVisualFormat:@"H:|[backgroundView]|" options:0 metrics:nil views:@{@"backgroundView": self.backgroundView}]; + NSArray *vCons = [NSLayoutConstraint constraintsWithVisualFormat:@"V:|[backgroundView]|" options:0 metrics:nil views:@{@"backgroundView": self.backgroundView}]; + [NSLayoutConstraint activateConstraints:hCons]; + [NSLayoutConstraint activateConstraints:vCons]; +} + +- (void)updateBackgroundColor { + self.backgroundView.blurTintColor = [self.presentable backgroundConfig].blurTintColor; +} + +- (void)layoutPresentedView { + if (!self.presentable) + return; + + self.handler.presentedView = self.panContainerView; + + if ([[self presentable] allowsTouchEventsPassingThroughTransitionView]) { + [self.panContainerView addGestureRecognizer:self.handler.panGestureRecognizer]; + } else { + [self addGestureRecognizer:self.handler.panGestureRecognizer]; + } + + [self setNeedsLayoutUpdate]; + [self adjustPanContainerBackgroundColor]; +} + +- (void)adjustPanContainerBackgroundColor { + self.panContainerView.contentView.backgroundColor = self.contentView.backgroundColor ? : [self.presentable panScrollable].backgroundColor; +} + +- (void)updateDragIndicatorView { + if ([self.presentable showDragIndicator]) { + [self addDragIndicatorView]; + } else { + self.dragIndicatorView.hidden = YES; + } +} + +- (void)addDragIndicatorView { + // if has been add, won't update it. + self.dragIndicatorView.hidden = NO; + + if (self.dragIndicatorView.superview == self.panContainerView) { + [self updateDragIndicatorViewFrame]; + [self.dragIndicatorView didChangeToState:HWIndicatorStateNormal]; + return; + } + + self.handler.dragIndicatorView = self.dragIndicatorView; + [self.panContainerView addSubview:self.dragIndicatorView]; + [self updateDragIndicatorViewFrame]; + + [self.dragIndicatorView setupSubviews]; + [self.dragIndicatorView didChangeToState:HWIndicatorStateNormal]; +} + +- (void)updateDragIndicatorViewFrame { + CGSize indicatorSize = [self.dragIndicatorView indicatorSize]; + self.dragIndicatorView.frame = CGRectMake((self.panContainerView.hw_width - indicatorSize.width) / 2, -kIndicatorYOffset - indicatorSize.height, indicatorSize.width, indicatorSize.height); +} + +- (void)updateContainerViewShadow { + HWPanModalShadow *shadow = [[self presentable] contentShadow]; + if (shadow.shadowColor) { + [self.panContainerView updateShadow:shadow.shadowColor shadowRadius:shadow.shadowRadius shadowOffset:shadow.shadowOffset shadowOpacity:shadow.shadowOpacity]; + } else { + [self.panContainerView clearShadow]; + } +} + +- (void)updateRoundedCorners { + if ([self.presentable shouldRoundTopCorners]) { + [self addRoundedCornersToView:self.panContainerView.contentView]; + } else { + [self resetRoundedCornersToView:self.panContainerView.contentView]; + } +} + +- (void)addRoundedCornersToView:(UIView *)view { + CGFloat radius = [self.presentable cornerRadius]; + + UIBezierPath *bezierPath = [UIBezierPath bezierPathWithRoundedRect:view.bounds byRoundingCorners:UIRectCornerTopRight | UIRectCornerTopLeft cornerRadii:CGSizeMake(radius, radius)]; + + CAShapeLayer *mask = [CAShapeLayer new]; + mask.path = bezierPath.CGPath; + view.layer.mask = mask; + + // 提高性能 + view.layer.shouldRasterize = YES; + view.layer.rasterizationScale = [UIScreen mainScreen].scale; +} + +- (void)resetRoundedCornersToView:(UIView *)view { + view.layer.mask = nil; + view.layer.shouldRasterize = NO; +} + +- (void)snapToYPos:(CGFloat)yPos animated:(BOOL)animated { + + if (animated) { + [HWPanModalAnimator animate:^{ + self.isPresentedViewAnimating = YES; + [self adjustToYPos:yPos]; + } config:self.presentable completion:^(BOOL completion) { + self.isPresentedViewAnimating = NO; + }]; + } else { + [self adjustToYPos:yPos]; + } + +} + +- (void)adjustToYPos:(CGFloat)yPos { + self.panContainerView.hw_top = MAX(yPos, self.handler.anchoredYPosition); + + // change dim background starting from shortFormYPosition. + if (self.panContainerView.frame.origin.y >= self.handler.shortFormYPosition) { + + CGFloat yDistanceFromShortForm = self.panContainerView.frame.origin.y - self.handler.shortFormYPosition; + CGFloat bottomHeight = self.hw_height - self.handler.shortFormYPosition; + CGFloat percent = yDistanceFromShortForm / bottomHeight; + self.backgroundView.dimState = DimStatePercent; + self.backgroundView.percent = 1 - percent; + + [self.presentable panModalGestureRecognizer:self.handler.panGestureRecognizer dismissPercent:MIN(percent, 1)]; + + } else { + self.backgroundView.dimState = DimStateMax; + } +} + +#pragma mark - HWPanModalPresentableHandlerDelegate + +- (void)adjustPresentableYPos:(CGFloat)yPos { + [self adjustToYPos:yPos]; +} + +- (void)presentableTransitionToState:(PresentationState)state { + [self transitionToState:state animated:YES]; +} + +- (PresentationState)getCurrentPresentationState { + return self.currentPresentationState; +} + +- (void)dismiss:(BOOL)isInteractive mode:(PanModalInteractiveMode)mode { + self.handler.panGestureRecognizer.enabled = NO; + self.isDismissing = YES; + + [[self presentable] panModalWillDismiss]; + + [HWPanModalAnimator animate:^{ + self.panContainerView.hw_top = CGRectGetHeight(self.bounds); + self.backgroundView.dimState = DimStateOff; + self.dragIndicatorView.alpha = 0; + } config:[self presentable] completion:^(BOOL completion) { + [self removeFromSuperview]; + [[self presentable] panModalDidDismissed]; + self.animationBlock ? self.animationBlock() : nil; + self.isDismissing = NO; + }]; + +} + +#pragma mark - HWPanModalPresentableHandlerDataSource + +- (CGSize)containerSize { + return self.presentingView.bounds.size; +} + +- (BOOL)isBeingDismissed { + return self.isDismissing; +} + +- (BOOL)isBeingPresented { + return self.isPresenting; +} + +- (BOOL)isFormPositionAnimating { + return self.isPresentedViewAnimating; +} + +- (BOOL)isPresentedViewAnchored { + + if (![[self presentable] shouldRespondToPanModalGestureRecognizer:self.handler.panGestureRecognizer]) { + return YES; + } + + if (!self.isPresentedViewAnimating && self.handler.extendsPanScrolling && (CGRectGetMinY(self.panContainerView.frame) <= self.handler.anchoredYPosition || HW_TWO_FLOAT_IS_EQUAL(CGRectGetMinY(self.panContainerView.frame), self.handler.anchoredYPosition))) { + return YES; + } + return NO; +} + +#pragma mark - event handle + +- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { + + if (!self.userInteractionEnabled || self.hidden || self.alpha < 0.01) { + return nil; + } + + if (![self pointInside:point withEvent:event]) { + return nil; + } + + BOOL eventThrough = [[self presentable] allowsTouchEventsPassingThroughTransitionView]; + if (eventThrough) { + CGPoint convertedPoint = [self.panContainerView convertPoint:point fromView:self]; + if (CGRectGetWidth(self.panContainerView.frame) >= convertedPoint.x && + convertedPoint.x > 0 && + CGRectGetHeight(self.panContainerView.frame) >= convertedPoint.y && + convertedPoint.y > 0) { + return [super hitTest:point withEvent:event]; + } else { + return nil; + } + } else { + return [super hitTest:point withEvent:event]; + } +} + +- (void)checkBackgroundViewEventPass { + if ([[self presentable] allowsTouchEventsPassingThroughTransitionView]) { + self.backgroundView.userInteractionEnabled = NO; + self.backgroundView.tapBlock = nil; + } else { + self.backgroundView.userInteractionEnabled = YES; + __weak typeof(self) wkSelf = self; + self.backgroundView.tapBlock = ^(UITapGestureRecognizer *recognizer) { + if ([[wkSelf presentable] allowsTapBackgroundToDismiss]) { + [wkSelf dismiss:NO mode:PanModalInteractiveModeNone]; + } + }; + } +} + +- (void)checkPanGestureRecognizer { + if ([[self presentable] allowsTouchEventsPassingThroughTransitionView]) { + [self removeGestureRecognizer:self.handler.panGestureRecognizer]; + [self.panContainerView addGestureRecognizer:self.handler.panGestureRecognizer]; + } else { + [self.panContainerView removeGestureRecognizer:self.handler.panGestureRecognizer]; + [self addGestureRecognizer:self.handler.panGestureRecognizer]; + } +} + +#pragma mark - getter + +- (id)presentable { + if ([self.contentView conformsToProtocol:@protocol(HWPanModalPresentable)]) { + return self.contentView; + } + return nil; +} + +- (HWDimmedView *)backgroundView { + if (!_backgroundView) { + if (self.presentable) { + _backgroundView = [[HWDimmedView alloc] initWithBackgroundConfig:[self.presentable backgroundConfig]]; + } else { + _backgroundView = [[HWDimmedView alloc] init]; + } + + if ([[self presentable] allowsTouchEventsPassingThroughTransitionView]) { + _backgroundView.userInteractionEnabled = NO; + } else { + __weak typeof(self) wkSelf = self; + _backgroundView.tapBlock = ^(UITapGestureRecognizer *recognizer) { + if ([[wkSelf presentable] allowsTapBackgroundToDismiss]) { + [wkSelf dismiss:NO mode:PanModalInteractiveModeNone]; + } + }; + } + + } + + return _backgroundView; +} + +- (HWPanContainerView *)panContainerView { + if (!_panContainerView) { + _panContainerView = [[HWPanContainerView alloc] initWithPresentedView:self.contentView frame:self.bounds]; + } + + return _panContainerView; +} + +- (UIView *)dragIndicatorView { + + if (!_dragIndicatorView) { + if ([self presentable] && + [[self presentable] respondsToSelector:@selector(customIndicatorView)] && + [[self presentable] customIndicatorView] != nil) { + _dragIndicatorView = [[self presentable] customIndicatorView]; + // set the indicator size first in case `setupSubviews` can Not get the right size. + _dragIndicatorView.hw_size = [[[self presentable] customIndicatorView] indicatorSize]; + } else { + _dragIndicatorView = [HWPanIndicatorView new]; + } + } + + return _dragIndicatorView; +} + +@end diff --git a/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContentView.h b/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContentView.h new file mode 100644 index 0000000..be4fafe --- /dev/null +++ b/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContentView.h @@ -0,0 +1,36 @@ +// +// HWPanModalContentView.h +// Pods +// +// Created by heath wang on 2019/10/17. +// + +#import +#import +#import +#import +#import + +@class HWPanModalContainerView; + +NS_ASSUME_NONNULL_BEGIN + +/// when use `HWPanModalContentView`, you should take care of the safe area by yourself. +@interface HWPanModalContentView : UIView + +/** + * present in the target view + * @param view The view which present to. If the view is nil, will use UIWindow's keyWindow. + */ +- (void)presentInView:(nullable UIView *)view; + +/** + * call this method to dismiss contentView directly. + * @param flag should animate flag + * @param completion dismiss completion block + */ +- (void)dismissAnimated:(BOOL)flag completion:(void (^)(void))completion; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContentView.m b/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContentView.m new file mode 100644 index 0000000..89200eb --- /dev/null +++ b/Pods/HWPanModal/Sources/View/PanModal/HWPanModalContentView.m @@ -0,0 +1,414 @@ +// +// HWPanModalContentView.m +// Pods +// +// Created by heath wang on 2019/10/17. +// + +#import "HWPanModalContentView.h" +#import "HWPanModalContainerView.h" + +@interface HWPanModalContentView () + +@property (nonatomic, weak) HWPanModalContainerView *containerView; + +@end + +@implementation HWPanModalContentView + +#pragma mark - public method + +- (void)presentInView:(UIView *)view { + if (!view) { + view = [self findKeyWindow]; + } + HWPanModalContainerView *containerView = [[HWPanModalContainerView alloc] initWithPresentingView:view contentView:self]; + [containerView show]; +} + +- (void)dismissAnimated:(BOOL)flag completion:(void (^)(void))completion { + [self.containerView dismissAnimated:flag completion:completion]; +} + +#pragma mark - HWPanModalPresentationUpdateProtocol + +- (void)hw_panModalTransitionTo:(PresentationState)state { + [self.containerView transitionToState:state animated:YES]; +} + +- (void)hw_panModalSetContentOffset:(CGPoint)offset { + [self.containerView setScrollableContentOffset:offset animated:YES]; +} + +- (void)hw_panModalSetNeedsLayoutUpdate { + [self.containerView setNeedsLayoutUpdate]; +} + +- (void)hw_panModalUpdateUserHitBehavior { + [self.containerView updateUserHitBehavior]; +} + +- (void)hw_panModalTransitionTo:(PresentationState)state animated:(BOOL)animated { + [self.containerView transitionToState:state animated:animated]; +} + +- (void)hw_panModalSetContentOffset:(CGPoint)offset animated:(BOOL)animated { + [self.containerView setScrollableContentOffset:offset animated:animated]; +} + +- (void)hw_dismissAnimated:(BOOL)animated completion:(void (^)(void))completion { + [self dismissAnimated:animated completion:completion]; +} + +- (HWDimmedView *)hw_dimmedView { + return self.containerView.backgroundView; +} + +- (UIView *)hw_rootContainerView { + return self.containerView; +} + +- (UIView *)hw_contentView { + return (UIView *)self.containerView.panContainerView; +} + +- (PresentationState)hw_presentationState { + return self.containerView.currentPresentationState; +} + +#pragma mark - HWPanModalPresentable + +- (UIScrollView *)panScrollable { + return nil; +} + +- (CGFloat)topOffset { + return self.topLayoutOffset + 21.f; +} + +- (PanModalHeight)shortFormHeight { + return [self longFormHeight]; +} + +- (PanModalHeight)mediumFormHeight { + return [self longFormHeight]; +} + +- (PanModalHeight)longFormHeight { + if ([self panScrollable]) { + [[self panScrollable] layoutIfNeeded]; + return PanModalHeightMake(PanModalHeightTypeContent, MAX([self panScrollable].contentSize.height, [self panScrollable].bounds.size.height)); + } else { + return PanModalHeightMake(PanModalHeightTypeMax, 0); + } +} + +- (PresentationState)originPresentationState { + return PresentationStateShort; +} + +- (CGFloat)springDamping { + return 0.8; +} + +- (NSTimeInterval)transitionDuration { + return 0.5; +} + +- (NSTimeInterval)dismissalDuration { + return [self transitionDuration]; +} + +- (UIViewAnimationOptions)transitionAnimationOptions { + return UIViewAnimationOptionCurveEaseInOut | UIViewAnimationOptionAllowUserInteraction | UIViewAnimationOptionBeginFromCurrentState; +} + +- (CGFloat)backgroundAlpha { + return 0.7; +} + +- (CGFloat)backgroundBlurRadius { + return 0; +} + +- (nonnull UIColor *)backgroundBlurColor { + return [UIColor whiteColor]; +} + +- (HWBackgroundConfig *)backgroundConfig { + return [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; +} + +- (UIEdgeInsets)scrollIndicatorInsets { + CGFloat top = [self shouldRoundTopCorners] ? [self cornerRadius] : 0; + return UIEdgeInsetsMake(top, 0, self.bottomLayoutOffset, 0); +} + +- (BOOL)showsScrollableVerticalScrollIndicator { + return YES; +} + +- (BOOL)shouldAutoSetPanScrollContentInset { + return YES; +} + +- (BOOL)anchorModalToLongForm { + return YES; +} + +- (BOOL)allowsExtendedPanScrolling { + if ([self panScrollable]) { + UIScrollView *scrollable = [self panScrollable]; + [scrollable layoutIfNeeded]; + return scrollable.contentSize.height > (scrollable.frame.size.height - self.bottomLayoutOffset); + } else { + return NO; + } +} + +- (BOOL)allowsDragToDismiss { + return YES; +} + +- (CGFloat)minVerticalVelocityToTriggerDismiss { + return 300; +} + +- (BOOL)allowsTapBackgroundToDismiss { + return YES; +} + +- (BOOL)allowsPullDownWhenShortState { + return YES; +} + +- (BOOL)allowScreenEdgeInteractive { + return NO; +} + +- (CGFloat)maxAllowedDistanceToLeftScreenEdgeForPanInteraction { + return 0; +} + +- (CGFloat)minHorizontalVelocityToTriggerScreenEdgeDismiss { + return 500; +} + +- (PresentingViewControllerAnimationStyle)presentingVCAnimationStyle { + return PresentingViewControllerAnimationStyleNone; +} + +- (BOOL)shouldAnimatePresentingVC { + return NO; +} + +- (id )customPresentingVCAnimation { + return nil; +} + +- (BOOL)isPanScrollEnabled { + return YES; +} + +- (BOOL)isUserInteractionEnabled { + return YES; +} + +- (BOOL)isHapticFeedbackEnabled { + return YES; +} + +- (BOOL)allowsTouchEventsPassingThroughTransitionView { + return NO; +} + +- (BOOL)shouldRoundTopCorners { + return YES; +} + +- (CGFloat)cornerRadius { + return 8; +} + +- (HWPanModalShadow *)contentShadow { + return [HWPanModalShadow panModalShadowNil]; +} + +- (BOOL)showDragIndicator { + if ([self allowsTouchEventsPassingThroughTransitionView]) { + return NO; + } + return [self shouldRoundTopCorners]; +} + +- (nullable UIView *)customIndicatorView { + return nil; +} + +- (BOOL)isAutoHandleKeyboardEnabled { + return YES; +} + +- (CGFloat)keyboardOffsetFromInputView { + return 5; +} + +- (BOOL)shouldRespondToPanModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + return YES; +} + +- (void)willRespondToPanModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + +} + +- (void)didRespondToPanModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + +} + +- (void)didEndRespondToPanModalGestureRecognizer:(nonnull UIPanGestureRecognizer *)panGestureRecognizer { + +} + +- (BOOL)shouldPrioritizePanModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer { + return NO; +} + +- (BOOL)shouldTransitionToState:(PresentationState)state { + return YES; +} + +- (void)willTransitionToState:(PresentationState)state { + +} + +- (void)didChangeTransitionToState:(PresentationState)state { + +} + +- (void)panModalGestureRecognizer:(UIPanGestureRecognizer *)panGestureRecognizer dismissPercent:(CGFloat)percent { + +} + +- (void)panModalWillDismiss { + +} + +- (void)panModalDidDismissed { + +} + +- (void)panModalTransitionWillBegin { + +} + +- (void)panModalTransitionDidFinish { + +} + +- (void)presentedViewDidMoveToSuperView { + +} + +- (BOOL)shouldEnableAppearanceTransition { + return YES; +} + +#pragma mark - HWPanModalPresentableLayoutProtocol + +- (CGFloat)topLayoutOffset { + return 0; +} + +- (CGFloat)bottomLayoutOffset { + return 0; +} + +- (CGFloat)shortFormYPos { + CGFloat shortFormYPos = [self topMarginFromPanModalHeight:[self shortFormHeight]] + [self topOffset]; + return MAX(shortFormYPos, self.longFormYPos); +} + +- (CGFloat)mediumFormYPos { + CGFloat mediumFormYPos = [self topMarginFromPanModalHeight:[self mediumFormHeight]] + [self topOffset]; + return MAX(mediumFormYPos, self.longFormYPos); +} + +- (CGFloat)longFormYPos { + CGFloat longFrom = MAX([self topMarginFromPanModalHeight:[self longFormHeight]], [self topMarginFromPanModalHeight:PanModalHeightMake(PanModalHeightTypeMax, 0)]) + [self topOffset]; + return longFrom; +} + +- (CGFloat)bottomYPos { + if (self.containerView) { + return self.containerView.bounds.size.height - [self topOffset]; + } + return self.bounds.size.height; +} + +- (CGFloat)topMarginFromPanModalHeight:(PanModalHeight)panModalHeight { + switch (panModalHeight.heightType) { + case PanModalHeightTypeMax: + return 0.0f; + case PanModalHeightTypeMaxTopInset: + return panModalHeight.height; + case PanModalHeightTypeContent: + return self.bottomYPos - (panModalHeight.height + self.bottomLayoutOffset); + case PanModalHeightTypeContentIgnoringSafeArea: + return self.bottomYPos - panModalHeight.height; + case PanModalHeightTypeIntrinsic: { + [self layoutIfNeeded]; + + CGSize targetSize = CGSizeMake(self.containerView ? self.containerView.bounds.size.width : [UIScreen mainScreen].bounds.size.width, UILayoutFittingCompressedSize.height); + CGFloat intrinsicHeight = [self systemLayoutSizeFittingSize:targetSize].height; + return self.bottomYPos - (intrinsicHeight + self.bottomLayoutOffset); + } + default: + return 0; + } +} + +#pragma mark - Getter + +- (HWPanModalContainerView *)containerView { + // we assume the container view will not change after we got it. + if (!_containerView) { + UIView *fatherView = self.superview; + while (fatherView) { + if ([fatherView isKindOfClass:HWPanModalContainerView.class]) { + _containerView = (HWPanModalContainerView *) fatherView; + break; + } + fatherView = fatherView.superview; + } + } + + return _containerView; +} + +- (UIView *)findKeyWindow { + + if (@available(iOS 13.0, *)) { + NSSet *connectedScenes = [UIApplication sharedApplication].connectedScenes; + for (UIScene *scene in connectedScenes) { + if ([scene isKindOfClass:UIWindowScene.class]) { + UIWindowScene *windowScene = (UIWindowScene *)scene; + for (UIWindow *tmpWindow in windowScene.windows) { + if ([tmpWindow isKeyWindow]) { + return tmpWindow; + } + } + } + } + + } else { + NSArray *windows = [UIApplication sharedApplication].windows; + for (UIWindow *window in windows) { + if ([window isKeyWindow]) { + return window; + } + } + } + return nil; +} + +@end diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index f68bbab..7544f3a 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -16,6 +16,8 @@ PODS: - AFNetworking/NSURLSession - Bugly (2.6.1) - DZNEmptyDataSet (1.8.1) + - FLAnimatedImage (1.0.17) + - HWPanModal (0.9.9) - LookinServer (1.2.8): - LookinServer/Core (= 1.2.8) - LookinServer/Core (1.2.8) @@ -31,6 +33,8 @@ DEPENDENCIES: - AFNetworking (= 4.0.1) - Bugly - DZNEmptyDataSet (= 1.8.1) + - FLAnimatedImage (~> 1.0.17) + - HWPanModal (~> 0.9.9) - LookinServer - Masonry (= 1.1.0) - MBProgressHUD (= 1.2.0) @@ -43,6 +47,8 @@ SPEC REPOS: - AFNetworking - Bugly - DZNEmptyDataSet + - FLAnimatedImage + - HWPanModal - LookinServer - Masonry - MBProgressHUD @@ -54,6 +60,8 @@ SPEC CHECKSUMS: AFNetworking: 3bd23d814e976cd148d7d44c3ab78017b744cd58 Bugly: 217ac2ce5f0f2626d43dbaa4f70764c953a26a31 DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 + FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b + HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2 LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 @@ -61,6 +69,6 @@ SPEC CHECKSUMS: MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: e80851eaead44de926040a227bf16809774cc3d2 +PODFILE CHECKSUM: c407e365492f78edcfea5c78b0fb36d8bf0e447d COCOAPODS: 1.16.2 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index ca6e5f9..0c1b76d 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -19,1110 +19,1265 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 00DAE48C9A4FBCD1FCAA922CA57B45F9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 2AEE1DAEE2CD1BAB6DBCBC50916263A4 /* SDWebImageDownloaderRequestModifier.m */; }; - 021ACCD4343D154E4782A5ECE222A8DF /* LookinIvarTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = E05CD820CF8075CB902341061803D784 /* LookinIvarTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 042D40751BD2F51FBE9FECD4707CBBE9 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F4DCF85783AA9A1B3A613F5BAC3C0FEC /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0453019EC6578A67B82CF569EC765546 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 599EA7E2BEEE9D88C43DF182C6A874D1 /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 05E2B7C1DB7528A0BBEA1521BE0DBAF1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = EA5E2A6BFD8D228A6FF7C7C749D642DB /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 06C4E233E7977DB81A24482E69B2D7D7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = DD9F495B1E192CA5A7EA012DC8524457 /* UIImage+Transform.m */; }; - 0845A6CB7AE77A99CC475BD14101FE87 /* LookinAttrType.h in Headers */ = {isa = PBXBuildFile; fileRef = B12DF9FA146221C01FCE0D22DDBDC890 /* LookinAttrType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08719ABCE689ED74FE7486B1E49DAA6C /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 58AA57BAA26D8C03E401EEFD3C78271F /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 089F3C4BAA46A37EC5763DD312771021 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = BF86BA22A3F81C27DE4346E22477D2CD /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08D50C5AC969A3701B6F9137CF3A10F1 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = BB09D1C81119E88D019FD33037BC5587 /* UIImage+ForceDecode.m */; }; - 09A2ACBC8CE1761652EAA20886AEFE10 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FE87671299E95720DB52DD3375B566E /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B0E6CECDF516BC83756C1D5515A725B /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E70D2DE5FE013503515AE432AE16071A /* SDAsyncBlockOperation.m */; }; - 0B449236AF25C6C11B0DE3D6D0E4A19B /* LookinEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = F746B8A0D89C293CD78D1EE71CD25FF1 /* LookinEventHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BE3B8DB6034364E7CF3AE9D01C7C0B4 /* CALayer+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BBF905BC343AA0D52B6BC0B1E5B22E9 /* CALayer+Lookin.m */; }; - 0C79142D1349DD9A969F47A0A8AAA0CB /* Lookin_PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 84E9E0A3D552DFF9EC45D14794237342 /* Lookin_PTProtocol.m */; }; - 0EF10747EF2A02413E84BD5EF7C87A4B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 854F1B8C164960BB0D2721562BD6E7E5 /* MJRefreshNormalHeader.m */; }; - 0F1D0F5DCC8C94A4C684DF846D14F436 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = CDE77633CA7FA3526B2AA79AB5F21A42 /* SDWebImagePrefetcher.m */; }; - 0FF9F459ED16719292443A4C99B52B20 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D6CF72BA8B7618D0238AD641B57FE35 /* SDImageCache.m */; }; - 10017B43AC38C3A89D7AC1376C6E7066 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9964200935BD2352FD5DAD8C2AC9FE07 /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 104D9196010D2A8C52C0C19E9C9D52E8 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 16C85770D72E9770C476992A31B3655F /* MBProgressHUD-dummy.m */; }; - 117F4B6F653A8DA2637C5C93B4993884 /* Peertalk.h in Headers */ = {isa = PBXBuildFile; fileRef = ED81CDC30BE2F7BBA09422B3CD1BDF85 /* Peertalk.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 11C929E6BFB46F981685446F26DCE605 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = D404BDF65C17843DC41C1611EAAA22EB /* MJRefreshAutoFooter.m */; }; - 11D4DC1FCE5647EEA8484AA4A880AF8F /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A6D5DE8BC7E18B47355B8494A426209 /* MBProgressHUD.m */; }; - 126496714AD564062A8C10787CC01B8B /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 47E596E1EB48CB4E8DE37CC0D5122787 /* MJFoundation.m */; }; - 14943D0EE97A4966510A86F5C3FC66A5 /* MJExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 808621872AB88E6448666731EB043018 /* MJExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14CA284AC4FF1EED75E785641EE98034 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F43D293502C6A280429EF2DEFA6C0E6 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 150116E888969E8304BA3E2BB6529461 /* LookinHierarchyFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DAD9E82D42212E9D52E28737BC21479 /* LookinHierarchyFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 15B27182B591769C57B55544260DC886 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */; }; - 165F1C9CBD621828C788A3018D0426C5 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = BF679E0482D915265B5050368ABBB701 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0005259AEE76604A26E43EA994475B68 /* HWShoppingCartPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F53205FC53C4FCB1F1D5089D62F9DFC /* HWShoppingCartPresentingAnimation.m */; }; + 00DAE48C9A4FBCD1FCAA922CA57B45F9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = C5D4B0A2DB8E7128A6DA546DA4C7CEB7 /* SDWebImageDownloaderRequestModifier.m */; }; + 01D2F1D0ABE13AAB2CDC0C25E378E964 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CD6AE0C7A2E208FF93567A99374869B /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 01F66DF95199AFA87E9B4C3B00A4A471 /* Pods-keyBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 021ACCD4343D154E4782A5ECE222A8DF /* LookinIvarTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 018E89B3130206293240B03D8960F18B /* LookinIvarTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 03623FBDBE9F6B422E9A5C6EAD321A58 /* HWPanModalPresenterProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = BBD303CA2BE52A14A7809A2F458FE949 /* HWPanModalPresenterProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 042D40751BD2F51FBE9FECD4707CBBE9 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F351B59999F041F80A0949DA207118B /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0453019EC6578A67B82CF569EC765546 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = EAA52787EF7666BD721984EDA694AE9B /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 05E2B7C1DB7528A0BBEA1521BE0DBAF1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 144086F1366328F4F927C4F459E44619 /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 06C4E233E7977DB81A24482E69B2D7D7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = A77B70C25747C0E7AE67F784B287D211 /* UIImage+Transform.m */; }; + 0845A6CB7AE77A99CC475BD14101FE87 /* LookinAttrType.h in Headers */ = {isa = PBXBuildFile; fileRef = CC16AC12627C17F0E12860526E93F8EF /* LookinAttrType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08719ABCE689ED74FE7486B1E49DAA6C /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = F9A2F41CFB36F97D9E0F592411A2F9F1 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 089F3C4BAA46A37EC5763DD312771021 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 58FC58CFC6A48F6752D249D83F67DD94 /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08D50C5AC969A3701B6F9137CF3A10F1 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1527F49078C26F2BAB6E17A11F0AC9A9 /* UIImage+ForceDecode.m */; }; + 09A2ACBC8CE1761652EAA20886AEFE10 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6124AD77C854511265D90EDC5EE36657 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A7342FACEBA0077F1B06178940883DB /* HWPanModal.h in Headers */ = {isa = PBXBuildFile; fileRef = DC656082CB5200E5E1AF1B4BE99048B3 /* HWPanModal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0B0E6CECDF516BC83756C1D5515A725B /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 839B9E61EAA7FC6A8B571EAB1077DBCF /* SDAsyncBlockOperation.m */; }; + 0B449236AF25C6C11B0DE3D6D0E4A19B /* LookinEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 3759EC9B1F622ABF5524C464D429D774 /* LookinEventHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0BE3B8DB6034364E7CF3AE9D01C7C0B4 /* CALayer+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F7E17F4510167B68511D3E34E380ED7 /* CALayer+Lookin.m */; }; + 0C79142D1349DD9A969F47A0A8AAA0CB /* Lookin_PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 78DE1BDAC4037EF5EF5085D7F97C5896 /* Lookin_PTProtocol.m */; }; + 0EF10747EF2A02413E84BD5EF7C87A4B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3421F5C836952B09AC7AF130FB3D09FC /* MJRefreshNormalHeader.m */; }; + 0F1D0F5DCC8C94A4C684DF846D14F436 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CE706B82C8002B7608E049B83BF0A12 /* SDWebImagePrefetcher.m */; }; + 0FF9F459ED16719292443A4C99B52B20 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = BAF92A34DD29AD318C11B5807644B670 /* SDImageCache.m */; }; + 10017B43AC38C3A89D7AC1376C6E7066 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 070F9E5A12CC270070B53AA6E4DE380D /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 104D9196010D2A8C52C0C19E9C9D52E8 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AABD4B7A1454CA80B386AD36AEFEB5A7 /* MBProgressHUD-dummy.m */; }; + 117F4B6F653A8DA2637C5C93B4993884 /* Peertalk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BD99371527F7C150CF7C859DEE75697 /* Peertalk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11C929E6BFB46F981685446F26DCE605 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F13ED159399F9081ED4E0855D985B3B /* MJRefreshAutoFooter.m */; }; + 11D4DC1FCE5647EEA8484AA4A880AF8F /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = A143D09B35BD8CC84D08FB36C49D2099 /* MBProgressHUD.m */; }; + 126496714AD564062A8C10787CC01B8B /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 92A1420483F3DAE0607CA7ECEA495C73 /* MJFoundation.m */; }; + 12EC136F97CCCDD8C3765925FABA52CD /* HWPanModalHeight.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E2233B3F4E54A10BBB04EA668A8B0BC /* HWPanModalHeight.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14943D0EE97A4966510A86F5C3FC66A5 /* MJExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B979B6198848283DB66503E656A49837 /* MJExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14CA284AC4FF1EED75E785641EE98034 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B5AC2B0569CA6232E5088BF6FBCD84 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 150116E888969E8304BA3E2BB6529461 /* LookinHierarchyFile.h in Headers */ = {isa = PBXBuildFile; fileRef = F86370D27A7E43E20C85C3106B69C57D /* LookinHierarchyFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 15B27182B591769C57B55544260DC886 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 165F1C9CBD621828C788A3018D0426C5 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5746A23477BAEA4BBB127E9D35DF678C /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16D7DCB7CC985C33EEC41B371C029C84 /* SDWebImage-SDWebImage in Resources */ = {isa = PBXBuildFile; fileRef = CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */; }; - 1708C1D28B421C4AD310426D1695CE77 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CD27E7A66F8B685B7056B181A0D4D46 /* SDAnimatedImage.m */; }; - 1754DD5511A7BF462B116F70B0D4006A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = EFBFF769FFEA0B2F71A0E5EDE7DCDDF3 /* SDWebImageOperation.m */; }; - 1830558A4D2D63C8E76BC3136D8213F9 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B54AFD2BD6CA59B1C3B03B1146FE77F /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 18660FA595DBE133BB784E813A7122A8 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D9C32EDDDB1CA2666760FDE90B64590 /* SDImageHEICCoder.m */; }; - 186B573F1BEB8A23419A02814A7741DB /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = A4E4BD7B01B4DA8E6A41CD86E6AB6B44 /* MJRefreshFooter.m */; }; - 18AD90784D549657DF51BC8377DA3085 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = F6B25A4160A5D48C609C6C2B58E46DE9 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B52E938D7999FC0CDA2AA22674948EB /* LookinAttributesGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 1948F2AFCD4F7087CA46FB78E5A05ABD /* LookinAttributesGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B6CE67196EE181E6B56788EFC7E00D3 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F0FAF8AA7D9999CB7B6AC14DC9F613F /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1BC44E2FDD197D5210A23C9CCF1A906B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 299CDB086FE0568EE14EAB79D7B74437 /* SDWebImageCompat.m */; }; - 1C5CCB87E5B9C500F07A8244D7906295 /* LookinAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F6981AC25702BE9417B498391042242 /* LookinAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C8B70C74291A3076746C3B18781568E /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = AB362641176A92218B886FD83548F6C2 /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C9BCDBD08949F0C3053B9F87567E0B2 /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = E785CD9E03330FEEAB8EA2F65DA92853 /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = CC6EC6E349C4E8476F9617E9150D43FE /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EC3AEA15AE416A53357261B37C622BD /* LKS_TraceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 46771EF8828C8A7519CEFD7A8DF062BE /* LKS_TraceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1ECC5F320AEFB120081358B4FFB7442F /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = A3A3B77B219A105E2636BBFACE42D7A8 /* NSString+MJExtension.m */; }; - 1EDC6F899051F0E858270F7556AF2F12 /* UIVisualEffectView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 2731C084E8B9BB6A54629DDFEBD14EA1 /* UIVisualEffectView+LookinServer.m */; }; - 1EDF5F5B68D4A76CE59D5B6CC7B6C469 /* LookinAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = F74FD66E160DEA3B30F3C017DE8ED1BA /* LookinAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EE04FF3866D1CDDBEFEBA7F795824AD /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */; }; - 1FD36A180D43C773D95D8E5BF719494C /* LookinDisplayItemDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = A1BB512E1904C9AC07E6CEBA4DE525DB /* LookinDisplayItemDetail.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FDEA3FFA45F29C1331723E9579D66A5 /* LookinAutoLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 528C15198BF77FCE909FB6A717EA8C53 /* LookinAutoLayoutConstraint.m */; }; - 2055774CD703B52DABFB1CC588394A94 /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A7BA44CD5FDF42B32263B5F4259A024 /* MJExtension-dummy.m */; }; - 20D618EF3EA5E3BE96DA24D36E3CA9EF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = BDD492D9CC4757F16B776F8B08A1A49F /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 20E738E52B4712385489A62374C74C7F /* Lookin_PTUSBHub.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C8E3573AF9C6E24E9DFBDDB57A91B44 /* Lookin_PTUSBHub.m */; }; - 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = B640B3AD2FE955C7A51E5B1F84A61189 /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = E9FADEFBF123E3EB09754AA63F0510E1 /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2460C08042AF8B7D0492A062F755986E /* NSString+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3ED91326A0371ACE08A353BC67F60F6B /* NSString+Lookin.m */; }; - 24E8E4ED0B5D988E3346E6638619F4E4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = B6F3F601094A8014DC41447620116D80 /* SDImageFrame.m */; }; - 24E963C1D6245F98BAC8A0ACCB7DE987 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E6B85BD26EE974026A447B476B2932B /* NSBundle+MJRefresh.m */; }; - 2567FE276DB76481DEFC7DDFE7D775CC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */; }; - 261C31F4038EC00D5961218C97905E21 /* LookinConnectionResponseAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BF2F8A5A2E35CC31448E86BCF471F49 /* LookinConnectionResponseAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 27212D06F5EDE3BB10264D93075B2275 /* LookinDashboardBlueprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 713E37659AD7D79DA6664C3D3ECF01F7 /* LookinDashboardBlueprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2759D8D4FCE58812ADECB348E369C6F0 /* LKS_MultiplatformAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 31C69A4489CC7299F114CDEAFBE0DE3C /* LKS_MultiplatformAdapter.m */; }; - 27CC45A4ABE5B40723D35310D05CD146 /* LKS_EventHandlerMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CB82C5681E372AE74735E8F3B7211E5 /* LKS_EventHandlerMaker.m */; }; - 288CD3416B265CAC1300D7938167AE66 /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = D197698AA79A94AD39EC006BBB9D3481 /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 288D796F3F7B9F42690E24A3B1018B2C /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C0CAD4F0394CDAF40054888E02EB093 /* SDImageIOAnimatedCoder.m */; }; - 28BA9702905AA2B4C1E9E4878032D4E4 /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = B9E85A8129A4E7BFE16B2262D78F1DCC /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 29F7F0E98FD26A96364DBACD7D5F237A /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6609EE1C9372D5E3C70AF9861CE95D /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2A24F241D7D74FF6DEA953F9DD49391C /* LKS_EventHandlerMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = DE6C055C722C44DA0E562F93906DCD34 /* LKS_EventHandlerMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2CDC7B9EAD356E35FEAF526EEA6A8E91 /* LookinWeakContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = F9B85917A028A675DFE95B885791EDFC /* LookinWeakContainer.m */; }; - 2DC44A09A6C9D6DC7D1BDA2DFCF99EE3 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C9BF32317317006604613DB6B7E6531 /* MJRefreshConfig.m */; }; - 2DDA5F044BC698BC5D48A7CFDDBF71E3 /* LookinAttributeModification.m in Sources */ = {isa = PBXBuildFile; fileRef = FD1216744C111B10EA2988454A525213 /* LookinAttributeModification.m */; }; - 2DDD48230ED9E8068C7E439D79B99A8E /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F715C3F41E2D739BCA20A8ED2E487A1 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2E86A7C77E43AEA4697979F1F848E68D /* LKS_RequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E4000AF0B9EEE3F891ADD766B1967BD3 /* LKS_RequestHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EFF1EFA2FF0D2F1AE44A9DDBB932425 /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = D6E369F88941EA9A46AF58BC88CC0720 /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2F6D9BEA582A2DBB70A6C3B2FC2DB91E /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 15D08EB14955AB2B841A5E9E16D8D4AE /* SDWebImageDownloaderResponseModifier.m */; }; - 2FEE980BEE23B8E0C7EBB70445EC8C9A /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = F320516E3A699EEF56C411E9C2DA9C29 /* PrivacyInfo.xcprivacy */; }; - 3187FF0C251D1B78BE87F64F6F6E944A /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = 4819E2A59EFDCF27B3C3DDB40C7B2D13 /* SDWebImageTransition.m */; }; - 31DC2EC78AD1F8241AE6051EF9E73B0A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 0370FDB753906B18C1B9AFB8BE7D213C /* SDWebImageDefine.m */; }; - 320DE42AF3CFE11FF785FEB1A7E6547B /* SDImageFramePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 131863AC3A27979CE5BF1B35EB9C1CED /* SDImageFramePool.m */; }; - 321F87DA34863DC5C977323BAEDB2B55 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 45F43707DFF3E5A8EFA1404F7259F5DF /* NSObject+MJCoding.m */; }; - 325CA20B9271F3E008234E1518B79061 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2065E7BBA3909607E34531E7D59623FF /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1708C1D28B421C4AD310426D1695CE77 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C764F0D3B98816426D5D1C448686870 /* SDAnimatedImage.m */; }; + 1754DD5511A7BF462B116F70B0D4006A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A61CDBD69057C3674739778A8D7E4BE /* SDWebImageOperation.m */; }; + 1830558A4D2D63C8E76BC3136D8213F9 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F409E94556DE38FF80361104AA14B1C /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 18660FA595DBE133BB784E813A7122A8 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D08373F9471B6FE81CFE350A61D7EEC0 /* SDImageHEICCoder.m */; }; + 186B573F1BEB8A23419A02814A7741DB /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 294EA02B3DDDD7B2B6A77AAC9B06FAE2 /* MJRefreshFooter.m */; }; + 18AD90784D549657DF51BC8377DA3085 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8759D0306E45E19CBC456FD3486DDE02 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B52E938D7999FC0CDA2AA22674948EB /* LookinAttributesGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 217542724C26BE53C452010CBD9B0823 /* LookinAttributesGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B6CE67196EE181E6B56788EFC7E00D3 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = E876347288A6DCD527E822BBFB6C5774 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1BC44E2FDD197D5210A23C9CCF1A906B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 902DE3B37054D9EE3A5EE281287AD148 /* SDWebImageCompat.m */; }; + 1C5CCB87E5B9C500F07A8244D7906295 /* LookinAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C190447F019E6407D44584A4FDF8F21A /* LookinAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C8B70C74291A3076746C3B18781568E /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C0E09B2B757F6365152258D76B3D2A39 /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CBA39C705DBB9802B534C4BDD3664538 /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 92EF1461B8302AC228343F85048D3888 /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = FCEC0D919F385E28169E6FC7B6EAE42C /* HWPanModalPresentationController.m */; }; + 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AF449E5E9E00FFF6BD1DD6F39E654AC /* HWPanModalPresentableHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A5852584225D29AAB47BA31F0AC9415 /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EC3AEA15AE416A53357261B37C622BD /* LKS_TraceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EFAF27B6DC3AA50C96B99E41F9E769E4 /* LKS_TraceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1ECC5F320AEFB120081358B4FFB7442F /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = D2A792CB950AB99663B25C1BE2C0853A /* NSString+MJExtension.m */; }; + 1EDC6F899051F0E858270F7556AF2F12 /* UIVisualEffectView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = BEB8AC93A851C5DFA93D44CFAD39856D /* UIVisualEffectView+LookinServer.m */; }; + 1EDF5F5B68D4A76CE59D5B6CC7B6C469 /* LookinAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D286FE677CDEE60930A656882947FD7 /* LookinAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FD36A180D43C773D95D8E5BF719494C /* LookinDisplayItemDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = AF44575A66631B8B3E9F4F79EAF68A2D /* LookinDisplayItemDetail.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FDEA3FFA45F29C1331723E9579D66A5 /* LookinAutoLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = A4846194BA854C70246DB41D70440D2B /* LookinAutoLayoutConstraint.m */; }; + 2055774CD703B52DABFB1CC588394A94 /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 317BBB3797CCCBC8D9201446D3C35C11 /* MJExtension-dummy.m */; }; + 20D618EF3EA5E3BE96DA24D36E3CA9EF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B9FDD5A40301D416EBF36F170E33FC /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 20E738E52B4712385489A62374C74C7F /* Lookin_PTUSBHub.m in Sources */ = {isa = PBXBuildFile; fileRef = 2259A09BA5C4F4B9CD4809BBD03235D0 /* Lookin_PTUSBHub.m */; }; + 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FA20784164A5FF07C29C2829918C6B8 /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EE35BE199AAA2D6723052ADC7573E04 /* UIViewController+LayoutHelper.m */; }; + 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B985DB20BDEDC3C065B3A50F078016B /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2460C08042AF8B7D0492A062F755986E /* NSString+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = AC56B56B105B16D1EF0458AD870F4405 /* NSString+Lookin.m */; }; + 24E8E4ED0B5D988E3346E6638619F4E4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = FED67045FD441EBB05D6A0040A0A1D7B /* SDImageFrame.m */; }; + 24E963C1D6245F98BAC8A0ACCB7DE987 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = C0E3D0083F73A4B9E51802D71E12B6D5 /* NSBundle+MJRefresh.m */; }; + 2567FE276DB76481DEFC7DDFE7D775CC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 261C31F4038EC00D5961218C97905E21 /* LookinConnectionResponseAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F1F4A5570DD3146B2E2BD55F75D53BF /* LookinConnectionResponseAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27212D06F5EDE3BB10264D93075B2275 /* LookinDashboardBlueprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 185D7C79C92B324E08CCA23E8410B9BB /* LookinDashboardBlueprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2759D8D4FCE58812ADECB348E369C6F0 /* LKS_MultiplatformAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2D3B9B39A830458FD28DCEC306D8E /* LKS_MultiplatformAdapter.m */; }; + 27CC45A4ABE5B40723D35310D05CD146 /* LKS_EventHandlerMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B6B370AE543A3A33C4D570C3B8366E3 /* LKS_EventHandlerMaker.m */; }; + 288CD3416B265CAC1300D7938167AE66 /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 145C211EEEAD63D4C0AE8467C821D14F /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 288D796F3F7B9F42690E24A3B1018B2C /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 931F2EC345E0B4F7BD3F617F883DF4E2 /* SDImageIOAnimatedCoder.m */; }; + 28BA9702905AA2B4C1E9E4878032D4E4 /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 87404200573C5C261B9C829573DF05E9 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 29F7F0E98FD26A96364DBACD7D5F237A /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 492F2C7BD5804A777BF8699BEBDE9706 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2A24F241D7D74FF6DEA953F9DD49391C /* LKS_EventHandlerMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 954815F2E3C8D1F819EF2344830A2160 /* LKS_EventHandlerMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2CDC7B9EAD356E35FEAF526EEA6A8E91 /* LookinWeakContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 66F3FF05384C9441A8FAFFE1E267822E /* LookinWeakContainer.m */; }; + 2D0E2E3CDCB12399497B4F31D4C20E3E /* HWShoppingCartPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 62F129163AC40C289B2AEA5C7DEBE679 /* HWShoppingCartPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2DC44A09A6C9D6DC7D1BDA2DFCF99EE3 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = C247A1884F6D32D3F8E2A80759806E33 /* MJRefreshConfig.m */; }; + 2DDA5F044BC698BC5D48A7CFDDBF71E3 /* LookinAttributeModification.m in Sources */ = {isa = PBXBuildFile; fileRef = B08DC7A1A58E4347C875EE7C77258D67 /* LookinAttributeModification.m */; }; + 2DDD48230ED9E8068C7E439D79B99A8E /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8705B9A2A16D5B2796A9B11E1C3D074C /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2E86A7C77E43AEA4697979F1F848E68D /* LKS_RequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E58431618F9B14FA189C6C896394334D /* LKS_RequestHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EC1750C894F036194B90CFD26072B0C /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 172CDF64113E561EE805F3B18B58DE98 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EFF1EFA2FF0D2F1AE44A9DDBB932425 /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C07FA22445AE442F8F429DC97AD5226D /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2F6D9BEA582A2DBB70A6C3B2FC2DB91E /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = FACA69FE6DA578D469CD1F044903A1FD /* SDWebImageDownloaderResponseModifier.m */; }; + 2FF9F5DCB10C6393065EB61DB7441155 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 62640F732378D5BF961D278A8E714FEC /* PrivacyInfo.xcprivacy */; }; + 3127F22BF0A5465D472669272D586BDC /* HWPanModalIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F4A1DCA414FF4A5C14BDB494A4BCE4 /* HWPanModalIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3187FF0C251D1B78BE87F64F6F6E944A /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = CEED0C5BB9E7BD10174D1CAE5F34FE15 /* SDWebImageTransition.m */; }; + 31DC2EC78AD1F8241AE6051EF9E73B0A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = BF63871F7CF3667516551ED65E16445F /* SDWebImageDefine.m */; }; + 320DE42AF3CFE11FF785FEB1A7E6547B /* SDImageFramePool.m in Sources */ = {isa = PBXBuildFile; fileRef = D62C4FB56F8536A4E96AFCADDF2C0945 /* SDImageFramePool.m */; }; + 321F87DA34863DC5C977323BAEDB2B55 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B07F3D2B3B3299BF5A32A4ED4D06683 /* NSObject+MJCoding.m */; }; + 325CA20B9271F3E008234E1518B79061 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F30BDD15914FC15F21B063466E4635E6 /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 327BA3DDA513422E632D3DA4A8FC60EC /* MJRefresh-MJRefresh.Privacy in Resources */ = {isa = PBXBuildFile; fileRef = 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */; }; - 32ACEDCEBE0507A82D6323114A1C74F1 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DFECBD4586BE9AE288AFFA5027A9A24 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32F2B91621A2F8F9AD7C8E2B224D73F6 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = F226E8137EFBE0F2C4ADF98335CAA02A /* SDWebImageDownloaderDecryptor.m */; }; - 32FF240AE9443A1D2CFE27F50B55F591 /* LKS_MultiplatformAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 0075507DF323DF510CA1115DE2B33C98 /* LKS_MultiplatformAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 332F2099D726E75CEFAF1F734104A066 /* LookinWeakContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 785DDFE2F3C7BA8AEDE2278087F506EB /* LookinWeakContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3331A013D48A5063B483A51B7E9068ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A6A924083322C61BD2DC82A438F46687 /* AFURLSessionManager.m */; }; - 33D3587AF629B2FA21554DA002D6ACB8 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A3CC467742888B5DE59CC393D50BA540 /* SDImageCachesManager.m */; }; - 34B28D4F0168194B6EFAC0520EB7A7F4 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = CC47954DDA2CCCD6E92132955A0DE728 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35D42759A562C482EA5DF574F75CF3B8 /* NSArray+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = FEE404F0AEA8371C4FCFE3F576AA5835 /* NSArray+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36F4B09E7C71DCC5CEC6057814033C37 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 98B6A3897B6D415F51E7F65FD9A20296 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3777CD89D444CBBB48AE323B303F3FC7 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = CFBDDF0554D720E199E1094AAEC3D171 /* ImageIO.framework */; }; - 37B890ABDC7DD441E6AA662325D412E6 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = B36A499BB6A9A389E077337779129B95 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3800EA1B83FDE869FB2E4B049F519962 /* UIViewController+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2567115C715DFD2B942FF9386C729778 /* UIViewController+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 38938E604A7D708E6378A44063EF3512 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = FA1B344071044AFFAABF1077219DEC22 /* UIImageView+WebCache.m */; }; - 392F62298E0D8C669229E132D791BBF5 /* UIImageView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = A6B89FBB0AA4A7BD7E16AFF20A519DC2 /* UIImageView+LookinServer.m */; }; - 3A1AD84C0DC3C256418CC46739024E96 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 79462E533AFF776B12B799A128AA5EE8 /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3A2FCB914F6EADED828FF05F7E9132AE /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 61AA277CF1084D31AAA460D8C1A9BE4E /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B1C72DC480AB19BD55B6275750D62FE /* NSSet+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = FA2246CD5BC5C3E37CEC58BCA4848181 /* NSSet+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B8EDFF69A68ABD3735E0C6931CA5C95 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 35618C07738616EC64E35AB9084E01C6 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3BB69CB142D744367868F834912993CB /* UITextField+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = CEC88A03608F444860F81FB5EB689938 /* UITextField+LookinServer.m */; }; - 3C7815EEC599DD7D42FDEF19B2FF1563 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = C0AED8CDD333F60946EF309E2D789249 /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C7EAECB8C573E714C818BA04EB33773 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = C59B65D3E951B3FDACD866C4564C0214 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C8F2F868D0C361CAF43E53CDB8EB631 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 794882B4F91B9E9B55DD3DF40E04DA22 /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3D0BBFEC1921CE71BC240DC18D8BE540 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = DF57705B90AB01302C42302B6BB038DD /* SDImageTransformer.m */; }; - 3E3D09700A62280A9EB8D65B97335ED8 /* LKS_CustomDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = C08BFCAD6B6021A9C9686DA64A6CF1AE /* LKS_CustomDisplayItemsMaker.m */; }; - 3FF7252DD60182221BB1E5A167C41A07 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D3B8DD288273B0C3AFDD2F366BB894B /* UIProgressView+AFNetworking.m */; }; - 40AD5D0AB3ABF7F3A5A4A98BC5B84419 /* LookinAttributesSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 40B6DD67F49B0103232B5D6B727392FA /* LookinAttributesSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 416DA8B2997381F954DBA6E6A53DA4A2 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 17422A39378973466DCE06FB6ADA832E /* NSData+ImageContentType.m */; }; - 41A4AAE7E6024E7AAB83DD22FB42D34D /* UIColor+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D4236904A41DC2950754F5BE583BD4A /* UIColor+LookinServer.m */; }; - 425C9EA28FBEB7F7FC09A3F4A88C5955 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = CE89275D8F89A11FB2761E0461236313 /* SDWebImageError.m */; }; - 442F468E261A1106C291BF52BDBF9DB7 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = D5509360DE46CF0B8D64058FE9FD45E8 /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 447BBB1BCA8E0F2D23634888BED6DA81 /* LookinDashboardBlueprint.m in Sources */ = {isa = PBXBuildFile; fileRef = 290A1387E4C301A25D8613FBB0DCEC6A /* LookinDashboardBlueprint.m */; }; - 44CD842019B1CEA681F820F37A30B7C4 /* SDImageFramePool.h in Headers */ = {isa = PBXBuildFile; fileRef = 148FDB67C55B5854E979447E82AFD54E /* SDImageFramePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 452C940762F65B125C216F73B369F583 /* MJRefreshStateTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A2C339DB0F9EF94544BE6FCDA59F50F /* MJRefreshStateTrailer.m */; }; - 4571A0EA37DC84F39E3830D38A1531AB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1DF8BF780A4AD9606856AB857CA1D86 /* UIKit.framework */; }; - 45E1583D7EF53489B82C4CA2AD1AD0CF /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = FDD0D2A5CBDCDA5BDF9600C731F95B24 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 464A0100327C8531D86BDC31737CCF75 /* LookinAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = DE5E3242D0D245F39B1349B5C4819144 /* LookinAppInfo.m */; }; - 4688743B7B845309486559EB7BD5D147 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = CBCBBB0099A9339A1A8ABBEDF291AF92 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 475B4F3E71C293065AAFDB1888696CF6 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CC603030F93055E51FF99944B356CB6 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 48916DE9521F627589300512ECC2D4A5 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 613A0EC29C46AFB409483355C45FE1C7 /* NSButton+WebCache.m */; }; - 4A15ABB502D625EBE3E63100664AB822 /* LookinCodingValueType.h in Headers */ = {isa = PBXBuildFile; fileRef = A7178BC144BA120067B45EC042E2D156 /* LookinCodingValueType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4A2D7878579537881DD3859B3359F702 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 86A260983254EF2D214865E91D3787B2 /* CoreGraphics.framework */; }; - 4B2C2AE16AE3DDA7417AFCF7952588F1 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E0CFDE214ACE5F071E4BEEF63BDDCD6 /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4D2C79AB2D24CFEC864F08D913CE7692 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 97041A2525062E71B923CEBB11179389 /* SDImageCodersManager.m */; }; - 4DA2C6099343CD55160ECB3EBDDFE1DF /* NSObject+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F2C6DE995A9BCF5E418479898442088 /* NSObject+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DCA75BFE1558CE59DFC56607E49B3D2 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = B985D3DA018E1C8C3AC44ADE702B404B /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E91E93486D40A052515660F00B079B5A /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 220B8AB16FBD2158AB55D35E9376D13A /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = 80FED7368916E2D1EE8E2B7F26A2618F /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50096BAC0F3270FB111E76D32714E579 /* Image+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 19CD19C5B1822DA77E4C7C9F454FD5D5 /* Image+Lookin.m */; }; - 506FC58999564A737C745F2590E9B4D5 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A3DF7C8B0CA95D284475EF487EC6944 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5111A0A0934551CD2B9DDB1A1CA79FA7 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A299BC446CAAFD89DBF55F51B07F0F4 /* SDAnimatedImageRep.m */; }; - 512B9661FC34235E0EEB3A6D3E319B88 /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = D15A23E7684648249EA4D7C312BACC22 /* MJPropertyType.m */; }; - 5163FC6D715F6881B1FA1AB13DCEF870 /* UICollectionViewLayout+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = EE4B0CFE38831013E2F465F169783700 /* UICollectionViewLayout+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5174DD2019966DFDC21B8864453ED3DE /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = 049541DC9203D75878CAF900D458CC34 /* NSObject+MJClass.m */; }; - 523235228A1C021C67F2E3776A922DC5 /* MJRefreshTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = E603FC069FE0FF9249D8A7348F6E7795 /* MJRefreshTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 526485EF6D2B62B24DB59122FB94BD42 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D2D491E6C287C5C66C4EF6B165E85BD /* SDDeviceHelper.m */; }; - 5308E660E723C11E7691D311FD59C459 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = F14968FDB67455000B5A2C9A77C64B07 /* SDDisplayLink.m */; }; - 53433003112C4FE271EC985803862B61 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = DF2FF7F81EC1FE20B9F8B3879085D4FA /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 53C1722650FCAB2637867D0DC31FC3CB /* Lookin_PTUSBHub.h in Headers */ = {isa = PBXBuildFile; fileRef = 4211A99A6EE6255E875FA46E987F2128 /* Lookin_PTUSBHub.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5490C03887ACF6C4EAC25ADFBB509CE5 /* NSSet+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E5219BC7E7BF5C405E48CC237D2EDC2 /* NSSet+Lookin.m */; }; - 54E268C32915CF908E7AA776909B45EB /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 9324A882B3ED55B3EF9D92D946555583 /* MJRefreshConst.m */; }; - 55F7C7F055A18044497F8C88CAE34118 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B6FEE442B47E03714BC3FB94670DCC /* SDImageCachesManagerOperation.m */; }; - 561420A20DC0A84258A902E9EB69A15A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A417B5FC83ECB57A121FCD14A6DD23D3 /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 564714D075CF51356D3D8437846AA6EB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C457050D64C2C7287BDFC768D33C9AE /* AFURLRequestSerialization.m */; }; - 56D8A7EAE4D72FF6C23421CAB6F21504 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = 04549DFA210F3D3C27211535994000B3 /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56E800EB3B2BE8AE0BA45A30974D7920 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E321D3F90B0E3A7E45F64EB551639098 /* Masonry-dummy.m */; }; - 56F1B543BC54204336CB5E50B60F719F /* Color+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 4FD8426A1028406F5A9C4E27D5C9E76C /* Color+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5735091665AC18FAD028EB68786A85AE /* LKS_CustomAttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D58792A3DBAB3667630D1FF53DDFB8D /* LKS_CustomAttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 58F7CE37BB4CB3BE806B68A502E6E1A7 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = EF15AFFA76ECFCE490107F1DEB31BD62 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 596180E0EC9F46D12BA840DC4AA62659 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = F66C529D67E3A61B55DFF40E581048ED /* UIImage+MemoryCacheCost.m */; }; - 597E390C0BBB75B8045B651C487C2034 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AF433E9D2C6355E77FFBE3AC3CB5B3A /* SDImageAWebPCoder.m */; }; - 5A6D3BE92C77ED70C397567996DFAEB9 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CABC6887E9E2AF4A62642A0C780B4B3 /* AFHTTPSessionManager.m */; }; - 5A8BC91257FF6B36237BF09A7A6EADF6 /* LookinObject.m in Sources */ = {isa = PBXBuildFile; fileRef = A3048EE57AEE9C3B5FDB98C9E7DF4BB9 /* LookinObject.m */; }; - 5AF22814CD055B553AD9D78BE54B94E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 219886C4AF0E20C3CD4D4061CAAE8767 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5B08596E856E4CC2F34A8A2372F9F764 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A054792401E8F9F7BEA8441F9C1DA7C7 /* NSArray+MASAdditions.m */; }; - 5BB6B99986FD7111B3AEBE931C7F507B /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 80F9F8B5249F11798A805DF46C09F2CA /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5BD5D9B8F61C124A62C75D9AC36A07BD /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = ABCA85AD5553CAA4C58A12223211E18E /* MJRefreshTrailer.m */; }; - 5C8279C226EB028B044C5A0F4AC5A91A /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = B9EF838DEDDB795D85E2F065BD697452 /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5D0DEC179A7B4143769C663082E2662A /* LKS_ExportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = DECAD058B2FE8CD24CC1022B0A1523AB /* LKS_ExportManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DCBA14510E091D6A1CE499B08B794B5 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = E614E7E1FA6658E0B9CF44C05D4E6811 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DFCBADAC7D0FAC82C84A6C8E7BF1DA6 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E0E79E8251323154CB271295CCD93D0A /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E10328A83E05D0015D7459FAAEF121D /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E7FA66C9DDB6507631DF1F179557C4A /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F45735DF355530CC955066D3C007E19 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FD6A0DEDE4E0A17B8A614C8D15158DD /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F5426608460A8B17C1AE5C2351BAA19 /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C3AD08A39781246EBAC23F5B8A9BDD3 /* UIScrollView+EmptyDataSet.m */; }; - 5FDC4239F7B651092BF582D0F460BAD4 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 45DC3F40C3A1FA5B5920DED3DF89557C /* UIView+MJExtension.m */; }; - 6002CB94684D7C786700D2A294146AEC /* Color+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 9278559A57D46FAC97B2480A76E574BE /* Color+Lookin.m */; }; - 61461B0D9D7B81C3F8D24066D9A19DCE /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = E7FE66EE9C43A4BD03E9F354FADF7098 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61507E402F1F7C58BF119995A0479A22 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E1C46B6B074DF2D170E6F2ACB5E8C8BA /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 616A8338C42FB01748DF1BDDA944858D /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = FAA44D6FF1A44EB319965DB5E0CC5F73 /* UIView+WebCache.m */; }; - 61857C821395B868C65A8FFE4DA1B4E3 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = B486D1944AF55BFAF5E8F8CDE6F8EB79 /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61EAFBCDC83B2C603918B3C9D9A73A18 /* LookinConnectionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 5212AF1887982114A494FF962BEF5A35 /* LookinConnectionAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 62FE895DF9D65A2955A275D909ECBE18 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B21CBEE99C5014F0E0F66C420497FCD /* SDAnimatedImageView.m */; }; - 6525ECE1CAFC1259F9E6E5FDDE6CF218 /* UIVisualEffectView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 594925FC6BBDEA3002D153F167630F93 /* UIVisualEffectView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 659D38386A3E09422812283BF27D71D1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */; }; - 67178A8153B1A2F1D0D544B8093E23C5 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 48A9A2DE85C1D87BCD354418BAF78749 /* SDAnimatedImageView+WebCache.m */; }; - 676775CB29378BB6CA3CA5992E9C6A99 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9662C23EC2FEA41BE91046E19A928D8C /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 67FCC0F9B42B1C20A66E99A3D56BED18 /* LookinStaticAsyncUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = D23D41020809113858D4CA46059797CF /* LookinStaticAsyncUpdateTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 683D708C157C95ADB467BDD2230BD4E3 /* UITextField+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = AB70C7432DDB8346C9DB4A27C7C7AEEB /* UITextField+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 68C3E98F8B9D6035962F29AE025DA891 /* UIImage+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F2087695EC0958A50E2C65A5D2E03159 /* UIImage+LookinServer.m */; }; - 69345CBCB31076EBF8A2C5885AF973AB /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 383AEE356898B114D8DD079C51566FF2 /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 694B8697854A776E32032999B2EF1FEA /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FD3FF7FA5E997D3DDAB5C272F8734A6 /* UIImage+Metadata.m */; }; - 6960FF2C4D61A09722930B33B1C7135D /* LKS_ObjectRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 30361FA11468C74A598363E37D30E56C /* LKS_ObjectRegistry.m */; }; - 69A06A02F52EB26259FAD1DF6B121BE1 /* SDCallbackQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 13D448A155C957ECCF95DC54FBE28569 /* SDCallbackQueue.m */; }; - 69AB6A513D5F36D7360FEF4FDA1D60D0 /* UIView+WebCacheState.h in Headers */ = {isa = PBXBuildFile; fileRef = 832592FA01CF620F64F9CED4966CEA99 /* UIView+WebCacheState.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69E353C99C6EEA3C93CCF2E526460B9D /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = AEB9B57AEEA7BDF0C696120F4B110F33 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69F6E66A089C40FB1063DE15499BCFDE /* LKS_Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 371FD070C447028E0DC76F07BB442FC4 /* LKS_Helper.m */; }; - 6A19379E3B0370EDA447743C9B1A1379 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 3996B697C00897DAFE1DFD73DAA4E114 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6B0978C9398336656EE309E62060AEAB /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CA256AA8704AE9F135214714BAFF153 /* SDImageAssetManager.m */; }; - 6B5C3592B5E911E833D067D0BC785B1A /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FC42F03931384EE2605E5C1FF575608 /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6BC2A615678C8BAE9F34ABA68BFDEF78 /* LKS_AttrModificationPatchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 79EEB00E9ED2C742987150EA5E0B1341 /* LKS_AttrModificationPatchHandler.m */; }; - 6C57809DCEA4B6C0CA79918A69FD75DE /* LKS_ConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5ABD1279233951A8EAE905C43AD033A4 /* LKS_ConnectionManager.m */; }; - 6C85CA8D99E50C137D056B6057DAC58A /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 9228BFB339DE3C8FD5163C974AB7DE89 /* UIRefreshControl+AFNetworking.m */; }; - 6CA0B4A9E7B2957063163BC673F355CD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C0293D25B82D4CCF17D52B025BDDA03 /* AFAutoPurgingImageCache.m */; }; - 6CE8701D161A4BC0860FAF3951762A34 /* LookinHierarchyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = EFD8B43671F8A160934DA73D3C45B4C0 /* LookinHierarchyFile.m */; }; - 6DE6C7F0FA965828E4FCE687BF75FBBE /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 79E1EEF42DE5E1954630A63B8A5E02B6 /* MJRefreshAutoNormalFooter.m */; }; - 6E66305665DBCFBCF5B2480BF705D500 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BF9DE6E63B2A31CC1EADA84D3E42E7A /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EFC0630CB2761A2B1FC47176CCD62D1 /* LookinCustomDisplayItemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = D4D2347D4EFB2E5610773AF965AA8399 /* LookinCustomDisplayItemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EFEEE3AE22E97DCEC4F5A3B88F56FC7 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2254BB0E1CAB331C712E8819CE1CEBA9 /* SDImageLoader.m */; }; - 6F3637EE643EABB1DE9212EA68649A64 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = F299DB132C67105BBC5A78FBCB87FCF2 /* UIColor+SDHexString.m */; }; - 7074EA7FCC90B4967A437F5C43496828 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = 25AADAD73C32FC4E150A4A19780980C4 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 711D32EF4A9901567A488291603BF906 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 5248A2EBBCEB19A0BBFA557B594E2DEA /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 71538A1D21015F459964BA625D5EE90A /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 96163189CC5AFA5E4E23D6B0B3EADFF7 /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 717F76926C7BCB5B10C3037AD9239084 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = E1E6BDC6A27A05429814F2520B890A63 /* SDImageIOCoder.m */; }; - 71BEB1D9532900291A5A24B1C038516F /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = D6A9452B8FC36F44EC5608AB04827703 /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 71F2B8CBB99087F348C472230200586F /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9843F03B02D2521214C5C5583A9BBDA3 /* SDGraphicsImageRenderer.m */; }; - 723D1925C39764631641D0DBFDF6833B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */; }; - 724991CA89C46BAFBC08264D94D86484 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = CA67A34B63E36E76FF453D2ABD613A39 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 74ABF19BACB99F862DB62AA14508AFA0 /* LookinAttributesGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 594BEBF4113035634E37CC4FC2A11D62 /* LookinAttributesGroup.m */; }; - 74C474676C69A80BEC29B0F55FDF4D19 /* UIView+WebCacheState.m in Sources */ = {isa = PBXBuildFile; fileRef = 96D5456A17DF66E262562E8208ADEFF0 /* UIView+WebCacheState.m */; }; - 74E069F8C9E22C0E37F261A5AB03A613 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A5A249D6ED704F9FEE1FFBC9B61426F /* SDWebImageDownloaderConfig.m */; }; - 752822FE3F5092322D18FEC4533B79A9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 94E4D004CAC99A7D4B7144E86418C29C /* SDWebImageDownloader.m */; }; - 75771A97B77FA30A0175A81B480F80EF /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A67F3F63FB3C05544B8F66F7ED89E74 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 772CF8E9CD02ECA4275B6173E2110E80 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 31E7ED25B098BFBF30E180BFC0E2174B /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32ACEDCEBE0507A82D6323114A1C74F1 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 115D9A38E828733E2521BA1DFE025D50 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32F2B91621A2F8F9AD7C8E2B224D73F6 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = D51913F3FF9E3373AE2497E7D98225CF /* SDWebImageDownloaderDecryptor.m */; }; + 32FF240AE9443A1D2CFE27F50B55F591 /* LKS_MultiplatformAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 652780DECBCF733E1CBAA8309FADE953 /* LKS_MultiplatformAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 332F2099D726E75CEFAF1F734104A066 /* LookinWeakContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 40D9E69F0A1E9D4219601AFE0D6257DD /* LookinWeakContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3331A013D48A5063B483A51B7E9068ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 913734C0E85A7287F025E327629CA7FC /* AFURLSessionManager.m */; }; + 33D3587AF629B2FA21554DA002D6ACB8 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F70E3892FF24472DB0CDEFABFBA36F91 /* SDImageCachesManager.m */; }; + 34B28D4F0168194B6EFAC0520EB7A7F4 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE9F0CF9D1C205F5B167BDFCF6C838A /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 353C1D03325B8F3E65F985DA29245F18 /* UIViewController+LayoutHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 819AF2C3BB9CCBDC0A03029D56096EA4 /* UIViewController+LayoutHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 35D42759A562C482EA5DF574F75CF3B8 /* NSArray+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B8E94E7EAABFAC34A3D61FF43E02355 /* NSArray+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3679603CE8336E00A0BFAA39E10A92D0 /* HWPanModalShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D7BBE0F835610A258CF510E00DC847F /* HWPanModalShadow.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36B3F095DFFC8D2AF2C0A8C523173927 /* HWPanModalContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 52AC10A81E2C53178BFD809330041A7E /* HWPanModalContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36F4B09E7C71DCC5CEC6057814033C37 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 06BB1170E7630AD9AB926EE90BE5F730 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3777CD89D444CBBB48AE323B303F3FC7 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */; }; + 37B890ABDC7DD441E6AA662325D412E6 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = F4187BCD5B0BEB79E4E3553B6413AF27 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3800EA1B83FDE869FB2E4B049F519962 /* UIViewController+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F7CF2DFE487DFC9C10016B1FDAECDD95 /* UIViewController+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 381E0DBE152CA0D9C66310CB77A20A83 /* HWPanModalInteractiveAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = F825F22155AA272C7B94795CFB508AE6 /* HWPanModalInteractiveAnimator.m */; }; + 38938E604A7D708E6378A44063EF3512 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 32635BBD805EC978CC3BB3BC4CF3B7E3 /* UIImageView+WebCache.m */; }; + 392F62298E0D8C669229E132D791BBF5 /* UIImageView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 164010F68ED1F6E6A182B7EA3554A43D /* UIImageView+LookinServer.m */; }; + 3A1AD84C0DC3C256418CC46739024E96 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = FB1ACE3587FC03054A397CA0A1E76CDC /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3A2FCB914F6EADED828FF05F7E9132AE /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A2B32A1AC63C6D1AF5B5467A6CEC75F /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B1C72DC480AB19BD55B6275750D62FE /* NSSet+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = AB7963F3AA45763DF399A396845DDF33 /* NSSet+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B8EDFF69A68ABD3735E0C6931CA5C95 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B8FA55B1E865165B6CFF4ADBBDE19C4 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BB69CB142D744367868F834912993CB /* UITextField+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3AD2DC617E8094624655175273C7AB8 /* UITextField+LookinServer.m */; }; + 3BD85ED8999015326D93D8EEADCCF910 /* HWPanModalPresentationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C917ABB653A9CB7D7518FCE9F40F2F2D /* HWPanModalPresentationDelegate.m */; }; + 3C7815EEC599DD7D42FDEF19B2FF1563 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 269EFD14AB222FEFEC686C63F58F74FF /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C7EAECB8C573E714C818BA04EB33773 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AB541F4715AB2A0DE59B23A5696D448 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C8F2F868D0C361CAF43E53CDB8EB631 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D55CD73335546425BAD6A91CB9C4CE4 /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CA9E838F014DC32CFCF6AD36F5D7E58 /* HWPanModalInteractiveAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 87FB553A3CC72081333DBA02B2136CF8 /* HWPanModalInteractiveAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D0BBFEC1921CE71BC240DC18D8BE540 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = B78E312E7E63BF84B4DD4072BAB4A551 /* SDImageTransformer.m */; }; + 3E3D09700A62280A9EB8D65B97335ED8 /* LKS_CustomDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BF7200D05201E490C12951549D2240D /* LKS_CustomDisplayItemsMaker.m */; }; + 3FF7252DD60182221BB1E5A167C41A07 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B52C0333B4CADD3A0F9EB411374E73E /* UIProgressView+AFNetworking.m */; }; + 40AD5D0AB3ABF7F3A5A4A98BC5B84419 /* LookinAttributesSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 54C035FC92D730EBEC46CF8E21ADFF7F /* LookinAttributesSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 416DA8B2997381F954DBA6E6A53DA4A2 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B28468BF62D31A9D25D492AAF6D25B0 /* NSData+ImageContentType.m */; }; + 41A4AAE7E6024E7AAB83DD22FB42D34D /* UIColor+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CB57DCB4F28061C4A199F8768E4F7C7 /* UIColor+LookinServer.m */; }; + 425C9EA28FBEB7F7FC09A3F4A88C5955 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = E68A775E5721AFBDB649BB9442D57178 /* SDWebImageError.m */; }; + 4334CCEA5B7EA16A4EF26702D287CB07 /* UIScrollView+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = E634ACC2034218ADC26B5D4109F49AA9 /* UIScrollView+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 442F468E261A1106C291BF52BDBF9DB7 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF616B9EC8DE21E9AA84880DC51A9CA /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 447BBB1BCA8E0F2D23634888BED6DA81 /* LookinDashboardBlueprint.m in Sources */ = {isa = PBXBuildFile; fileRef = C078A2E8B42103FA232855A1D6A0D7F7 /* LookinDashboardBlueprint.m */; }; + 44CD842019B1CEA681F820F37A30B7C4 /* SDImageFramePool.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6F555000ECA771E3EEE30C0BCA8211 /* SDImageFramePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4503182D5F8EF2F02609862026D2D455 /* HWVisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = 40BFEDE02CC0E566BBDC5A631AF4AF85 /* HWVisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 452C940762F65B125C216F73B369F583 /* MJRefreshStateTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = E089B74E2F4B50357B63BC6069272B9D /* MJRefreshStateTrailer.m */; }; + 4571A0EA37DC84F39E3830D38A1531AB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; + 45E1583D7EF53489B82C4CA2AD1AD0CF /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EABFACBAFD45BC8FA955F5004A0F3F6 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 464A0100327C8531D86BDC31737CCF75 /* LookinAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = D66A82F8BDB185549FF0B573D7E52F8B /* LookinAppInfo.m */; }; + 4688743B7B845309486559EB7BD5D147 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 6470D20217BE1E46F63251367F8A9EB0 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 475B4F3E71C293065AAFDB1888696CF6 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4199B5EF9E6D97F0A19FE7422D28A2C6 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 48916DE9521F627589300512ECC2D4A5 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0746C9ECCE5759599C9E24C14B8E12DA /* NSButton+WebCache.m */; }; + 4A15ABB502D625EBE3E63100664AB822 /* LookinCodingValueType.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E9B018C9C3042CA28F92204D9CA3368 /* LookinCodingValueType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4A2D7878579537881DD3859B3359F702 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */; }; + 4ACC15DF96D179E48E4276AE3C540C7C /* KeyValueObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = A97B23EA4BC5A09E3AB9062612C11DE8 /* KeyValueObserver.m */; }; + 4B2C2AE16AE3DDA7417AFCF7952588F1 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AFF73BDD48D8B44AFC6A61B1B0B3B57B /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4D2C79AB2D24CFEC864F08D913CE7692 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A1A68076B57D7DD2B4FCC592ECD4E990 /* SDImageCodersManager.m */; }; + 4DA2C6099343CD55160ECB3EBDDFE1DF /* NSObject+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = DF5F6CA83FCCE26A8EBAB9D62A793D12 /* NSObject+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DCA75BFE1558CE59DFC56607E49B3D2 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D16809394CD346845FFB0C9977242B2 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = F39EC289147F8732DE9E200AEBD42C99 /* HWPanModalContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C10DDC7CAD74F9FB6286DBA8F45E0A9 /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 41BB24C7B81FDF4942C58FB649399EB7 /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = A12EE00E77DE8A43E7CE64F69D345190 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50096BAC0F3270FB111E76D32714E579 /* Image+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = C5F9910D6ED5B2A16EE7819D62912F64 /* Image+Lookin.m */; }; + 506FC58999564A737C745F2590E9B4D5 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 80F7F70AB42196BE2ECAE3F75289F5CC /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5106193FDEA44A08AAAAB9B8A227CBE9 /* HWPanModalPanGestureDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 944C193267D20C3EDAC9F40BC95BA365 /* HWPanModalPanGestureDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5111A0A0934551CD2B9DDB1A1CA79FA7 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = E59399382497BDA8D62E5C39784B00B5 /* SDAnimatedImageRep.m */; }; + 512B9661FC34235E0EEB3A6D3E319B88 /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = C02274A03EA3977CCD31F6436223F923 /* MJPropertyType.m */; }; + 5163FC6D715F6881B1FA1AB13DCEF870 /* UICollectionViewLayout+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 2867F87918EED9920AE77DAD4BD451AB /* UICollectionViewLayout+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5174DD2019966DFDC21B8864453ED3DE /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BA81BE20AFB7AAED21EEC5D091FF489 /* NSObject+MJClass.m */; }; + 523235228A1C021C67F2E3776A922DC5 /* MJRefreshTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = D1B006E7B08941CF8A2C5843A8B9C99A /* MJRefreshTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 526485EF6D2B62B24DB59122FB94BD42 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = A0641CF016316B36ABD820BBE52AD19F /* SDDeviceHelper.m */; }; + 5308E660E723C11E7691D311FD59C459 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 59E5B7C96027CDC6B5D70E2AD9AC0EFD /* SDDisplayLink.m */; }; + 53433003112C4FE271EC985803862B61 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1657973127018C3379A034BF182EF686 /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 53C1722650FCAB2637867D0DC31FC3CB /* Lookin_PTUSBHub.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AB04D07CCC6BB644C691A1B75189B56 /* Lookin_PTUSBHub.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 541AD3B0F5EA216EE730ECC6E8B84C31 /* HWPanModalPresentationAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DF0E590DEA8DD03BE15CBF72CDCBE8B /* HWPanModalPresentationAnimator.m */; }; + 5490C03887ACF6C4EAC25ADFBB509CE5 /* NSSet+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E4761AF00D5D97F0E6876C0F021A970 /* NSSet+Lookin.m */; }; + 54E268C32915CF908E7AA776909B45EB /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A121A2B21BED90763E2301622A040E4 /* MJRefreshConst.m */; }; + 55F7C7F055A18044497F8C88CAE34118 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C0C71B23FD64F957CD7F6E8EBE92F99 /* SDImageCachesManagerOperation.m */; }; + 561420A20DC0A84258A902E9EB69A15A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 04473A3692FBECA15A32A1C477843F8E /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 564714D075CF51356D3D8437846AA6EB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AF87BA87F8CBB4575826A086C4B0871 /* AFURLRequestSerialization.m */; }; + 56D8A7EAE4D72FF6C23421CAB6F21504 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = 72E3A740C48B1DF278C345CEB59A5C99 /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56E800EB3B2BE8AE0BA45A30974D7920 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 105C0E572020BAFC2F3F07702779A020 /* Masonry-dummy.m */; }; + 56F1B543BC54204336CB5E50B60F719F /* Color+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FB6D9FCFB10D58A02282FBABE87FB43 /* Color+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5735091665AC18FAD028EB68786A85AE /* LKS_CustomAttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = DB34B51460BF162B997045D2CF3D0488 /* LKS_CustomAttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 58F7CE37BB4CB3BE806B68A502E6E1A7 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6013BED1D4465B355233E90F5236D454 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 596180E0EC9F46D12BA840DC4AA62659 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F23B5AA329AF2C38E62E7CBE5F5D136 /* UIImage+MemoryCacheCost.m */; }; + 597E390C0BBB75B8045B651C487C2034 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BE8047ED813191B4BC46FA8C5334ABC /* SDImageAWebPCoder.m */; }; + 5A6D3BE92C77ED70C397567996DFAEB9 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CE31F60CA05A2FFF39BB47897CB17219 /* AFHTTPSessionManager.m */; }; + 5A8BC91257FF6B36237BF09A7A6EADF6 /* LookinObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 68F6F33E73474357B9E7885C4414C917 /* LookinObject.m */; }; + 5AF22814CD055B553AD9D78BE54B94E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = A137B039D2A317E540FA6772AEB9D840 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B08596E856E4CC2F34A8A2372F9F764 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EC3BDE6337E9995ACF80D1DE71F506A /* NSArray+MASAdditions.m */; }; + 5BB6B99986FD7111B3AEBE931C7F507B /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = D74882C4484074AC8872B2A5E438246B /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BD5D9B8F61C124A62C75D9AC36A07BD /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = AE579277DE642E9E1019F6392CE1755F /* MJRefreshTrailer.m */; }; + 5C8279C226EB028B044C5A0F4AC5A91A /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 07A233E548536FE36D9750CB427DC711 /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5D0DEC179A7B4143769C663082E2662A /* LKS_ExportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C0FC0E2910D71C68F70A7CBBD2130D87 /* LKS_ExportManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DCBA14510E091D6A1CE499B08B794B5 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 3353CA39B2D60213971EFFABDAE02625 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DFCBADAC7D0FAC82C84A6C8E7BF1DA6 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = CDBA0F660CF6947CF53C5863681817AB /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E10328A83E05D0015D7459FAAEF121D /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 58623A3EED3B4D5125F83B78B865E033 /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E3FCC0716521D80D2E6419CD0EB5A98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 5F45735DF355530CC955066D3C007E19 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = DBC5FB408D1CC34D172A8CECF2AE6860 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F5426608460A8B17C1AE5C2351BAA19 /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FB5EB648C2339F0632D8DD464412282 /* UIScrollView+EmptyDataSet.m */; }; + 5FDC4239F7B651092BF582D0F460BAD4 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C9A4D4BA6E0F5E50F5993BD82CF6E6 /* UIView+MJExtension.m */; }; + 6002CB94684D7C786700D2A294146AEC /* Color+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F3CFDDCD2AEFF399B69D429BD035229 /* Color+Lookin.m */; }; + 61461B0D9D7B81C3F8D24066D9A19DCE /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C7C888B99007AD057195C9956BE40388 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61507E402F1F7C58BF119995A0479A22 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 737E319C87B4A4FA348810E15675B757 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 616A8338C42FB01748DF1BDDA944858D /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B72774F6480A029A3A2441E9DF82096D /* UIView+WebCache.m */; }; + 61857C821395B868C65A8FFE4DA1B4E3 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FE7A440D01806C72477C1AA0213B946 /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61EAFBCDC83B2C603918B3C9D9A73A18 /* LookinConnectionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = A1502F82ADC41A5C2CBCFBB8BE2DBA1E /* LookinConnectionAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 62FE895DF9D65A2955A275D909ECBE18 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED817696CA9C5336FFC07568FC62502 /* SDAnimatedImageView.m */; }; + 6525ECE1CAFC1259F9E6E5FDDE6CF218 /* UIVisualEffectView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F03C6F51BDA9A5E5F9395D9F199C54FF /* UIVisualEffectView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 659D38386A3E09422812283BF27D71D1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 67178A8153B1A2F1D0D544B8093E23C5 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = C656F7688A2DB9FEA22520878F9A2055 /* SDAnimatedImageView+WebCache.m */; }; + 676775CB29378BB6CA3CA5992E9C6A99 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 596D5BD427C685CFFE0E474F1355C0BB /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 67FCC0F9B42B1C20A66E99A3D56BED18 /* LookinStaticAsyncUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AA35B4909D9783E7A851FD1AD821334 /* LookinStaticAsyncUpdateTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 683D708C157C95ADB467BDD2230BD4E3 /* UITextField+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = CCE0180ACC796145628AC2F013D66C45 /* UITextField+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 68C3E98F8B9D6035962F29AE025DA891 /* UIImage+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F31C98ACB27D00FB2C83BBFA9C3DB2FB /* UIImage+LookinServer.m */; }; + 69345CBCB31076EBF8A2C5885AF973AB /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = F23E87D1922F53403D673679FAA023CF /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694B8697854A776E32032999B2EF1FEA /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 38DC37E61EA03D85A44EDCFC75EB6238 /* UIImage+Metadata.m */; }; + 6960FF2C4D61A09722930B33B1C7135D /* LKS_ObjectRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = C931ABFE9D27B32AD8D6C893AD979117 /* LKS_ObjectRegistry.m */; }; + 69A06A02F52EB26259FAD1DF6B121BE1 /* SDCallbackQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C8A4B9A7186C1EC704A8F7181A8B4C /* SDCallbackQueue.m */; }; + 69AB6A513D5F36D7360FEF4FDA1D60D0 /* UIView+WebCacheState.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A7ED5F60A6E593BE4319E09C2FD0BE2 /* UIView+WebCacheState.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69E353C99C6EEA3C93CCF2E526460B9D /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = F1ED191A53A707D9518B3082C0464066 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69F6E66A089C40FB1063DE15499BCFDE /* LKS_Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 02BD81280735E95FA2620927041EAC86 /* LKS_Helper.m */; }; + 6A19379E3B0370EDA447743C9B1A1379 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FFBA60DA7BFD0D987C4E683037FDDB0 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B0978C9398336656EE309E62060AEAB /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 95F6534573C96B51C375B48F710A1253 /* SDImageAssetManager.m */; }; + 6B5C3592B5E911E833D067D0BC785B1A /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = A48C905BEA42A4AA5B76B664D12914C8 /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6BC2A615678C8BAE9F34ABA68BFDEF78 /* LKS_AttrModificationPatchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A13200BEAF87753F31130AD74C5CE5B /* LKS_AttrModificationPatchHandler.m */; }; + 6C57809DCEA4B6C0CA79918A69FD75DE /* LKS_ConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 66852803923AC12381D91011BC62422E /* LKS_ConnectionManager.m */; }; + 6C85CA8D99E50C137D056B6057DAC58A /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 316C4F93113E10BD19E7CE1F7E80F60B /* UIRefreshControl+AFNetworking.m */; }; + 6CA0B4A9E7B2957063163BC673F355CD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A691E14C36224248BF2A3ECF785CAD95 /* AFAutoPurgingImageCache.m */; }; + 6CE8701D161A4BC0860FAF3951762A34 /* LookinHierarchyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 1225A7D188B98E6C6CFDCC9B804BAE8D /* LookinHierarchyFile.m */; }; + 6D637D02F5EE50D21C8548061956C898 /* UIViewController+Presentation.h in Headers */ = {isa = PBXBuildFile; fileRef = E2238DC60FAF777CC267A61F86DC909F /* UIViewController+Presentation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6DE6C7F0FA965828E4FCE687BF75FBBE /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = D78DFC477962A207938C611AE0ACA069 /* MJRefreshAutoNormalFooter.m */; }; + 6E4DE8085E69AD1DDB49B059DCE286DB /* HWBackgroundConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E1C83957751BACAB22569AE64250554 /* HWBackgroundConfig.m */; }; + 6E66305665DBCFBCF5B2480BF705D500 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C84A9BCB275444D2358F473D9B5160 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EFC0630CB2761A2B1FC47176CCD62D1 /* LookinCustomDisplayItemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = B4B06DC6899A1F01C7834AFAF5E0FFDF /* LookinCustomDisplayItemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EFEEE3AE22E97DCEC4F5A3B88F56FC7 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B25E0E8867C9D8FE8A69D2C8BD251D9 /* SDImageLoader.m */; }; + 6F3637EE643EABB1DE9212EA68649A64 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = D93DC4D1234F76EDC574EBA1402310C2 /* UIColor+SDHexString.m */; }; + 7053A9EB6335BEAC9EFDF2D5320E6E2A /* UIView+HW_Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = 33A93A838A9C0189A366EF1F2D8FC9A5 /* UIView+HW_Frame.m */; }; + 7074EA7FCC90B4967A437F5C43496828 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = D5303ED4D5AB235B98FBA4B0FDED5DF7 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 711D32EF4A9901567A488291603BF906 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = EB627434D926A06008809F0DE57949FF /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 71538A1D21015F459964BA625D5EE90A /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC84A9FA2E5E086A3FCA8C9200491EA /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 717F76926C7BCB5B10C3037AD9239084 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = CD41EB00FCD1D9A736384800AABD1E30 /* SDImageIOCoder.m */; }; + 71BEB1D9532900291A5A24B1C038516F /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D1C2865819BCF073FD84E9A5B8816AB /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 71F2B8CBB99087F348C472230200586F /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 234CA385D849480382A37D00B41DE872 /* SDGraphicsImageRenderer.m */; }; + 723D1925C39764631641D0DBFDF6833B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 724991CA89C46BAFBC08264D94D86484 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = D8682D5ED4B7C56D720AFBA44BC3BC76 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7276688DEA6FB95D4DEB7F3D019C3958 /* HWPageSheetPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = C53E65DBE6C4798EE75818796AEE4D8C /* HWPageSheetPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 728107C8D8479AADE986F4EC23233DC3 /* UIScrollView+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = C46FC528BD8EF754DE7F229CABF54A73 /* UIScrollView+Helper.m */; }; + 73B19D03C7B7DF1C944544165F742D82 /* HWPanModalContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C8E106F1C7C00CCE5C4691E7DFD2859 /* HWPanModalContainerView.m */; }; + 74ABF19BACB99F862DB62AA14508AFA0 /* LookinAttributesGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = F10A37229A6845649A237D864C061793 /* LookinAttributesGroup.m */; }; + 74C474676C69A80BEC29B0F55FDF4D19 /* UIView+WebCacheState.m in Sources */ = {isa = PBXBuildFile; fileRef = A941317B46DF5E4325D43DAC931923A5 /* UIView+WebCacheState.m */; }; + 74E069F8C9E22C0E37F261A5AB03A613 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = ECBB46360F809A2F94F7C900E07EB3E3 /* SDWebImageDownloaderConfig.m */; }; + 752822FE3F5092322D18FEC4533B79A9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 445DB8E68C4622DC598EF2623547120D /* SDWebImageDownloader.m */; }; + 75771A97B77FA30A0175A81B480F80EF /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0270B966F6AC049BFD4D076AB8B56F /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76019F9FDD44B8F79261AD55C8728164 /* UIView+HW_Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 01DAF6FB6694A07703202991DBBEA497 /* UIView+HW_Frame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76C8C631DF9AC2F667369EEA0CE46522 /* HWDimmedView.h in Headers */ = {isa = PBXBuildFile; fileRef = EE48BDF616ED4BAED9CAABA06281EC92 /* HWDimmedView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 772CF8E9CD02ECA4275B6173E2110E80 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 18F1A2756FCB9AE94DFF016BE720ED41 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7873F2F89CD0A435FAB776BC27BFB56A /* MJExtension-MJExtension in Resources */ = {isa = PBXBuildFile; fileRef = 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */; }; - 78A3C3994AFFC6A2D4970AEB6D797CE5 /* LKS_HierarchyDetailsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 94310BE9068195ADA7842BD0A9A7F782 /* LKS_HierarchyDetailsHandler.m */; }; - 7902D28FC9EF5AFEB452F508C7F266B1 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = FAF1C0B2DCF27A6785AA511B6C9290B9 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7989A6E79BFA78440C39F568D972305C /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = A53791C99F3E8789C928D8471E4310AC /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A4EB9ED5D4E03170FFE61FCB299687B /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D30CE312289056E4C5788AB47438FED /* SDAnimatedImagePlayer.m */; }; - 7C45DBA62EE045C4922404182F6393B8 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = EE96F8DD901EEB1A8375B055EDF7DBBE /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C53FB6BBB0CBAA879F1603B0FEDB80B /* LookinAttributesSection.m in Sources */ = {isa = PBXBuildFile; fileRef = EF6193F470BF021CAED5E3E0DC4F602E /* LookinAttributesSection.m */; }; - 7C5505A2D3F2A697A5F324787061F4B7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BA0DD426F8305DA317D708459ABA12F /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C8782A3078662BC2EF639A9608A2C82 /* LKS_InbuiltAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 37559870F51779045F8C7A57C1303E2D /* LKS_InbuiltAttrModificationHandler.m */; }; - 7D736CE5AD0A987D2A7D2FD72E31BF41 /* CALayer+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = A99D2B8B886EDA66D95608FD72CE97AF /* CALayer+LookinServer.m */; }; - 7E4F0978B25350B2B28678A0BE7B3785 /* LKS_HierarchyDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 52FBF3084E82AF80B1B017FB5240AF4F /* LKS_HierarchyDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E8A564A958AF81E5F63F34B8E550E58 /* LookinAttributeModification.h in Headers */ = {isa = PBXBuildFile; fileRef = 06660480BC631DCE06583A85704487AB /* LookinAttributeModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 0426BF3118E242E4EA8BB1145A2A6F60 /* WKWebView+AFNetworking.m */; }; - 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 32556CF656ADFF88DE99F135C7BE2EB7 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 2EEEDD3CF0530751FD80AFB402DAB153 /* NSObject+MJKeyValue.m */; }; - 7FF8A56511E71D6FEC966BF9FEE135B5 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 245FCAB926AF197B8F4E931DD8477D4A /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 810C8D7902163BBA0185A4A112B2DFD6 /* LKS_TraceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A3868E0511721B009DE0A628C978E4AF /* LKS_TraceManager.m */; }; - 813BE4C96A6D39C13EC50C6CD164F0AF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 63B2D397715E1B3990E46DFCAE0A73D5 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 81A5635CEA2AD9623E30CAE9AFC3BF65 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E12075C58652877783AAD26D8A6ED78 /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 821FF6B43F7ADAB6B60459D2966B33CB /* CALayer+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = E857EC016B703D1261AC73360907C980 /* CALayer+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83530BF68848CD2C4A79A1FD69B304A5 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = E5514D264E4855320B70B7010325576C /* SDImageGIFCoder.m */; }; - 83A4F2816C1B3F072E1A26A34C3BC4AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */; }; - 8414CFEEB64ACA817EB88D2FEADDA3B3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */; }; - 854807558DCB972EDDFC1D00032BA6E4 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 99418F0A943BD9FF46795740F7385472 /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 85AB23275E9D19394969235E5DC2300E /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5989AAAB35D0B7EF697456F3897FACEC /* MJRefreshHeader.m */; }; - 85BB8B4B5C29C5EEC52282F33A4CAF23 /* LookinCustomAttrModification.m in Sources */ = {isa = PBXBuildFile; fileRef = 4730B0C65CA50BE6D828887D7CC8EB9F /* LookinCustomAttrModification.m */; }; - 85C0B4EE334B9972299E62DE61A4BB56 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = D601D33EE8BB8396FF4AED582379432E /* SDImageLoadersManager.m */; }; - 860CB3A5D2E13B946CD2EFB7F749C4CF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = F53768EF8D38709F253FC1C181B05162 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 864972FB0DF4B464B1B505AA5F788E91 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = DE9EB519F0B4BF7D539877F733F7BCAF /* SDInternalMacros.m */; }; - 88473AE7C22F952DACB39FA0758D1624 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 24998A1052F45827E4FFAFAF7FA1542E /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8872BEB0954C0254A792469F4DBC9891 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 9450EAE5D947C741A2403ADD203E1875 /* MJRefreshAutoStateFooter.m */; }; - 88A23DF6F5638AC66C28C4102824E8B5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B993C5AF69BCC11CB58D180BE7475BE /* NSImage+Compatibility.m */; }; - 891AB9476B659A3490DCE45A52A8D132 /* Pods-keyBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 89B88FAD396608AAA9F935E471BB3CB9 /* LKS_HierarchyDetailsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E355B215CED31C4C6EF33EEB9E95B38 /* LKS_HierarchyDetailsHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 89EAB8D0452D0E2114ED971B10D98CC3 /* LKS_HierarchyDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E2B86406A2B5383183DAE9ABBBB3893 /* LKS_HierarchyDisplayItemsMaker.m */; }; - 8A256CA266FB314BBD4DB2287DAEF247 /* LookinAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 7FCB45CBC3B45614560DA456506F73F1 /* LookinAttribute.m */; }; - 8AF38EDB1E9BF0D334AEB23C488870B8 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DBD5C23623A08CDD875999AA28A1F8D /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B4D76F7EB1CE870804724BC071C5ACB3 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = AA8F3F4E9CF14305D8C83582492FEA87 /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 78A3C3994AFFC6A2D4970AEB6D797CE5 /* LKS_HierarchyDetailsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0702AAD171A65EE6A8D28E93A9B62802 /* LKS_HierarchyDetailsHandler.m */; }; + 7902D28FC9EF5AFEB452F508C7F266B1 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 61AF436FD61695046BC4D5C853E7CA45 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 79534562F85AA71041043B395DE14AD0 /* HWPanModalContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 121C303DCF5199C717010EF66462BD05 /* HWPanModalContentView.m */; }; + 7989A6E79BFA78440C39F568D972305C /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = CD81B3BC38825A465F08F0A7FF6B6D56 /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7A4EB9ED5D4E03170FFE61FCB299687B /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = A5CA1B7FAF078CBFE367ED67421BD56D /* SDAnimatedImagePlayer.m */; }; + 7C45DBA62EE045C4922404182F6393B8 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = F12C01BF0CB50E72493E6AAC23806030 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C53FB6BBB0CBAA879F1603B0FEDB80B /* LookinAttributesSection.m in Sources */ = {isa = PBXBuildFile; fileRef = EA0DFE57597F1E609ADFB79857FE435B /* LookinAttributesSection.m */; }; + 7C5505A2D3F2A697A5F324787061F4B7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A37D9FEABB61A71285A73CDE4C5E9EE /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C8782A3078662BC2EF639A9608A2C82 /* LKS_InbuiltAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B347673A4B4C29BEEEA0DACA4FDE025 /* LKS_InbuiltAttrModificationHandler.m */; }; + 7D736CE5AD0A987D2A7D2FD72E31BF41 /* CALayer+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D37279B6C85F4CF9A24280C077B23F5 /* CALayer+LookinServer.m */; }; + 7E4F0978B25350B2B28678A0BE7B3785 /* LKS_HierarchyDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = B95D50B779E63B23E1786D6F6CCABD4A /* LKS_HierarchyDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E8A564A958AF81E5F63F34B8E550E58 /* LookinAttributeModification.h in Headers */ = {isa = PBXBuildFile; fileRef = F64D7DC2CC24410532CA313B436B5E7B /* LookinAttributeModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = DF251712BA063E8344D1B1CDB785B3C8 /* WKWebView+AFNetworking.m */; }; + 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = EAAB3A74BE098DF24548F19631ED1ECA /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 581D45C2162C5967784E2A106C696662 /* UIViewController+PanModalPresenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D9966C1D90F995E284375B1712E8FB /* NSObject+MJKeyValue.m */; }; + 7FF8A56511E71D6FEC966BF9FEE135B5 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 921FDF9A7596A9183FFD281EEBC18B9D /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80EBFDD01E84CE4E8AE5BAE9CB3C7C1D /* HWPanModalAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C5640AE0C2091C5FC7A8CFD27229CC3 /* HWPanModalAnimator.m */; }; + 810C8D7902163BBA0185A4A112B2DFD6 /* LKS_TraceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 32C400A3F91177BBA34B1046DAFF260F /* LKS_TraceManager.m */; }; + 813BE4C96A6D39C13EC50C6CD164F0AF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 32809A6CFD5412906D97C8C7FCB8E331 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 81A5635CEA2AD9623E30CAE9AFC3BF65 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 43C608DEC890D79C4A758B248B1B7D6E /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 821FF6B43F7ADAB6B60459D2966B33CB /* CALayer+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 973BF123337556FEF831ECD7EF288DE8 /* CALayer+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 83530BF68848CD2C4A79A1FD69B304A5 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = ED79370B32C9C754D3E34A13A2B7A516 /* SDImageGIFCoder.m */; }; + 83A4F2816C1B3F072E1A26A34C3BC4AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 8414CFEEB64ACA817EB88D2FEADDA3B3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 854807558DCB972EDDFC1D00032BA6E4 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = B2E58999C4BBC169E871AD7F5DC6CC54 /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 85AB23275E9D19394969235E5DC2300E /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = DF05C447154DF7BE7ECB7AE07BF863D4 /* MJRefreshHeader.m */; }; + 85BB8B4B5C29C5EEC52282F33A4CAF23 /* LookinCustomAttrModification.m in Sources */ = {isa = PBXBuildFile; fileRef = EF19B866A3DB2F79FCE73ADCD2FA06C3 /* LookinCustomAttrModification.m */; }; + 85C0B4EE334B9972299E62DE61A4BB56 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CD3C473E82665733BD9E2D23A688894 /* SDImageLoadersManager.m */; }; + 860CB3A5D2E13B946CD2EFB7F749C4CF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = FE0FBCD7807A33AEB43D358FAF90A586 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 864972FB0DF4B464B1B505AA5F788E91 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6A58C100D7D0C95F73174D108F1F16 /* SDInternalMacros.m */; }; + 88473AE7C22F952DACB39FA0758D1624 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 19C0CBEB4A5292C9975C224EC1464049 /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8872BEB0954C0254A792469F4DBC9891 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = A2B45634336BCC349F04126A0EE780B0 /* MJRefreshAutoStateFooter.m */; }; + 88A23DF6F5638AC66C28C4102824E8B5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 86C67D3928970843AA374752207E9260 /* NSImage+Compatibility.m */; }; + 89B88FAD396608AAA9F935E471BB3CB9 /* LKS_HierarchyDetailsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E9D7DC7A47992FD77E5A1BF86254454 /* LKS_HierarchyDetailsHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 89EAB8D0452D0E2114ED971B10D98CC3 /* LKS_HierarchyDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 46CCF3A43BEE5F3B0490729F74E3F205 /* LKS_HierarchyDisplayItemsMaker.m */; }; + 8A256CA266FB314BBD4DB2287DAEF247 /* LookinAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 3828D32AF578BCBF238F4F3C9F25FE9D /* LookinAttribute.m */; }; + 8AF38EDB1E9BF0D334AEB23C488870B8 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B2EB2A264CA58715D67B113A8AEC381 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 47A1CD68D6C47087933E20DA80B1E693 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8D2CBEBF5F1DA6766A833CCD0BF02B5B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */; }; + 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B7BDA9563EB39641E0A578B77FD4FAA /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8F30C8026F48C60D5B2CAE9CFC166004 /* Pods-CustomKeyboard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */; }; - 8FF7B6477BFA6E6ABA168E1417291D5F /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = ABFE70D35403EBB3D3B8E84170698E30 /* MASCompositeConstraint.m */; }; - 906DCE66CD5BD236081D468616199BB7 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = AE4708C50A24F74BB9721BF97FDD4782 /* SDWebImageOptionsProcessor.m */; }; - 91AAF555B286FBF53E4F98D092B406BD /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E3D65B846C5EFBA9201404CD8BDC1DA /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 91E8B94F8E02ABF5197DF5AE7D0B3934 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 15EEB72FE94B15511A9B077601BFC002 /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928371B066E1211CE87089668D5BCB4C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F52BB443191BF5EA87C6419E4BAFFD5 /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928A1ED0692DF0229F66A87135F93F2A /* LKS_CustomAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = FB260AFEB0CD406D8CDEDE623A1369CF /* LKS_CustomAttrModificationHandler.m */; }; - 9345137ED10358B60E37D05FB6165759 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4223ACF818570B18B88D6B2884075BF1 /* SDFileAttributeHelper.m */; }; - 9358FC6C6DA728AEE250D8E7DD236946 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = BB20479CEB729CCB614B58BD2EFB3BB7 /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 93E8C78EAE0B7613201813966B8E04E2 /* Image+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 2039E8AAF8AAC77E31E425C61871263D /* Image+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 955B87902E039163281C4F47C95DB851 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 426AEC2F7F358DEDB66C3F2D15F925A4 /* MJRefreshBackNormalFooter.m */; }; - 96E97174F4614FFA0649085022CB4AFE /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EA4BA3056A1FE6B47E97AA549D4B9423 /* SDWebImage-dummy.m */; }; - 97235408E59E16C18B6BDA1D29E1CB26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 036896A95CE28AB066292A03BAD2BFFA /* SDWebImageManager.m */; }; - 97385A64CA020489951EF769392C6DCF /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8AE06F501FB1F02940458122AC396D62 /* UIView+WebCacheOperation.m */; }; - 9887678D7D6BC165694560D92AF2C31A /* LookinConnectionResponseAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B6B095661E36C4E8A066559D4D5AF33 /* LookinConnectionResponseAttachment.m */; }; - 98AB6B8EB7FF096BCE87488C5AB3DF1C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */; }; - 9A7FB1E975A5955C896E6B195C521804 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = B70FF2E3C927A22C388C16FE8C3F56DB /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A89C16038149623A1DF06D47E7F953A /* LookinStaticAsyncUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DDE67F73A61A7328413374AFFA92E85 /* LookinStaticAsyncUpdateTask.m */; }; - 9B06400877E40C173F5A1C9761F288CB /* UITextView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = D54A6D034409C4B729B7DBA2D502B89D /* UITextView+LookinServer.m */; }; - 9B1EF09A8A473D92C1258B00791BF5F0 /* UIView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E3ADFF983A9B025AF718C3D24404E480 /* UIView+LookinServer.m */; }; - 9B3420DEB8A0CCB9E1241A669AEFCA8E /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BA061B3651D9243CBD96694626B95C1 /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9B9343E8599EE5196BA75E842DCB48B7 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = F2817892F9F21CF8BF9F8F35D58385AD /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9CE425B89294BE2C13E70A86E75B15CF /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D6C233C8BB873C737FFE3E1DFBC2A186 /* SDDiskCache.m */; }; - 9D422527A25BAE6A207DEFE11958ABBC /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = E5F4E4918198D7216ABDC0BE4C9BFCE9 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DDDCFC08B54A61C519DA78F94464E6B /* LookinHierarchyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A3EB69345768D61D52161327AE66C8 /* LookinHierarchyInfo.m */; }; - 9DE398BDF0CD7F38181F2F751AC18CB2 /* Pods-keyBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */; }; - 9DF446F8CA5BC4D4098766EC9063012C /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BF41BBB1EBC1FE4F91BE320D947ED64 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFFD4780CA32B8E53D9F4FBC8B3F5AC /* LookinAttrIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 94CD4DB147D9FC14A9FB75335D8AAAF6 /* LookinAttrIdentifiers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E3C5CB1C97B2ED16218956999BFF7AC /* LookinTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = D03549B19B7C1700178CF12088FCE44C /* LookinTuple.m */; }; - 9E6B00AF2ECE462D4D3C42AFC02F2AD7 /* LookinEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 189A631A2ED6331F0A226846AD73B1E4 /* LookinEventHandler.m */; }; - 9EBA682DA814406E9E5EF300587AF341 /* LookinAutoLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 0301A3F865A2919DCD43EE9D0DC363A5 /* LookinAutoLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F89DCAA4092F3897E43E89842069A26 /* LKS_AttrModificationPatchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 477B43B19C3181419CE0D39929320355 /* LKS_AttrModificationPatchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9FB234EB4D8B5BCC699DB491E204594F /* LKS_GestureTargetActionsSearcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E82EAB687527F885E79D9835727B3F8 /* LKS_GestureTargetActionsSearcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A078A275FFFA48D620074790DA3CA6CE /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D3A9927A87E21A8976D18DC44FE50014 /* MJRefreshStateHeader.m */; }; - A0E0DC76F51300E7EB1EBA5492DE854D /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D125D803F381B689272DFC8613DDA9A /* UIImageView+AFNetworking.m */; }; - A1560247914C760D9EE5F7A2392CC06C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DFD54923DA02EA135A1A1E2F56CBDE1 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1A1266FD70CEB545FD7602CC33F2F7B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = D673941813D9CA4EFFC6C32109054DC5 /* QuartzCore.framework */; }; - A1ACD509069144C27542774A41FE0243 /* UITableView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = CAE0A8B09C0AF83117C6BC9602D5D41F /* UITableView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1DC9EFDF50DF0EAF24D9D7C219AD2C1 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 364231170128CA2CD3F9589FE34C2FAE /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1E44277704AD68E867FD7C955A6632D /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 948E1E3EDCE53B021791B9169CCC28BD /* MJRefreshBackGifFooter.m */; }; - A324722BA42F21E98F158EA6C133D715 /* LookinServerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = FEBDC1C9F54DE3E90674A96F19B3458A /* LookinServerDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A3EA39A13714B3103B82F4066A642F53 /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = C342060C11E55E0DDCC3A84C8C1FBC35 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6728DA26A7C457B78A7A3CCFA9D9A10 /* UILabel+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = ECA6154AE35962F20A086F5A3633C0CC /* UILabel+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6B2B022993BBC55550CFBB0A0C78209 /* LookinConnectionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = A6EB4E3885146B9E8EBACA05C540E733 /* LookinConnectionAttachment.m */; }; - A6FCF74348D1907891FBDE3F2E331136 /* DZNEmptyDataSet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE4C2596FA0518DD6CED29332B75B5B /* DZNEmptyDataSet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A839428F403C52D8AA3466B65E20C27A /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 1110127348EF0DD2FF03A68A13D86895 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A86CC1AFDFDD692DC4EE66F57C0F39E6 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 0236FAD4E41045C8223B36E40BDEDF2C /* UIScrollView+MJRefresh.m */; }; - A8AD2AE9695630E93DE504211EBAFBF1 /* LKS_CustomDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F10AABF341F29547C8D1C780B3F8861 /* LKS_CustomDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A92AB5E65CA85947368E46E6627F1BFB /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = FC8B5F084763484BB92BA1D312960E45 /* UIButton+WebCache.m */; }; - A93BA1C5A4FFEF3ACF371690485A2703 /* NSObject+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 87D20D63606C6DC8B53F345069126C44 /* NSObject+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9609EEBDD5FD40292925E80ED84D5DF /* LookinServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C4BB81E05861A9C00B09F3A39D27B164 /* LookinServer-dummy.m */; }; - A9A49E4A3BE8882F60DF32BAF39DE191 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C7AE763582816CA9E57C0D78A7D1A49 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9BEDE2ADF9D1E0D0D1A241806A1A486 /* LKSConfigManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B2A98ADD6BF259F1E366B570C576632 /* LKSConfigManager.m */; }; - AA1EA8F0F0470F1596B1FFA58ABF3375 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C5C306F08907FB9E1301EA07220C6EB /* SDWebImageDownloaderOperation.m */; }; - ABCB80C4813C849FC93D57676820C907 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CA1F0AA7C906C09D35E1B3B781EB6E0 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC14E56ECA7A4980A8E1CA68E800B12C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E83988FA8D9C00FAEEA94EE0633C2C5 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC710813CB6A1DAEEE45914402F864D2 /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = DF383723C6CD6F7B6FCFE6C752DF50AF /* MJProperty.m */; }; - AE69A3B75BEEB9E2C54168BF0C502BC6 /* LKS_RequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 68C023D8DAEB5C5E7F36F7020DDBFE63 /* LKS_RequestHandler.m */; }; - AE7B02645B8F769CA5F215EE8F7CC5B0 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6289794567935CA3DC8B5C49AEA74043 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF185CDCA462AD6450543676951C82F9 /* LKS_ObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = FF266D90F27C22E50821C68FB0B959D8 /* LKS_ObjectRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AFD1D411A9387DCEC6F0034653E23787 /* DZNEmptyDataSet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 52CE89D1B7CAF7D6D1E509FE1267800A /* DZNEmptyDataSet-dummy.m */; }; - AFDC0B8255B2F3CED8E609F8A3BD1CDB /* LKS_AttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = EA281F7D07872BD2CB3C821E84CCC544 /* LKS_AttrGroupsMaker.m */; }; - B030B558BE97E0225652EFB8C8FA431F /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A565D25677F6FEEAD298666682CDA4B2 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B09F08548ACA8379445F6525011EE219 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E24EFDE111F674B782A0DB6E26DA6D2 /* MJRefreshBackStateFooter.m */; }; - B2704AFFC5CC053154839DB44924D255 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = A57C810A36EA495CAFAEDAD83C19A651 /* SDImageCoderHelper.m */; }; - B2B5444DFE63D2835A7561C1D64C9344 /* LKS_CustomAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 834B6D6A1ACFBDDF049322F2ED0C17DE /* LKS_CustomAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B2BC43DEC8DE2B9234693FE3782AB76C /* LKSConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FD83C0A67C6DD93C76CB6563151D889 /* LKSConfigManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B331CE2D3DEB461E738B886086A365F9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 89485243816A18F41367AE862167C061 /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B48A975992E58328254C494F133DE467 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 336D23D3AF9B2B8FD356A62D7B4A2A05 /* NSObject+MJProperty.m */; }; - B4F231C5CBAB3D4A184699D0066E0E83 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 93FB055BA93E62482AD7154A938F761A /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B565C08CE947CF591B1D3582272D5E1D /* LKS_CustomAttrSetterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D74E044AA7CFE331B6C3B53D98B1022 /* LKS_CustomAttrSetterManager.m */; }; - B59E60FBC9665FC1061B88B8E6FD9FAF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C3AFC445B760812F9E6924ABB9CC15 /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5AF87C11A465F666473F6191D173905 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C9154FA9EFF76FE4C993ADDBEB9A5EE4 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5C521FFB8E09DFE348238E21556842F /* UILabel+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = C23D52958B18447DC5C865BB12951C58 /* UILabel+LookinServer.m */; }; - B66356D4E7E43B3D15324569AA7EBB05 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 929BD46DB08827C3FD713BC0E928C239 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B680C2604BD8BC9644AE7C67BC46B9BB /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 82B53F06F74B4F928AF69994EDA63D71 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B741DBE2A466E6211F879EF997D9322D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 89023F2C23C8826F172885D263CC29D2 /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B79864F972C51037B350802D8CD48024 /* LKS_GestureTargetActionsSearcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F1EE18C1314EB74EEB6B6392E8EFB08 /* LKS_GestureTargetActionsSearcher.m */; }; - B81566F19789EBD9BE2714E2A6059D36 /* LookinDisplayItem.m in Sources */ = {isa = PBXBuildFile; fileRef = E9ED096883562D4C47E188D0E5CB3065 /* LookinDisplayItem.m */; }; - B95C63A039D9D08896421291DEBD3AEB /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 960792D55E0D95EDBE31A27683F9FEEF /* SDWebImageCacheKeyFilter.m */; }; - BA904ABA8ED36CC4E5EB2B2004CA1F18 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = F68B2B4FABAF7DB3BFD45E81B3302EEE /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BACAA91A92F35CD7E7795232A83F21D1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DD65B80E7AA07416BB8F502F3C3A438 /* AFNetworkActivityIndicatorManager.m */; }; - BADA31750A2136D073EDA4461DBE1EEA /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 615CFF22184D20B3B6107165A49D6FEF /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBA61EF31BFDFA6FCA34DC4EBE6E1D9A /* NSString+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 52EF359F996014A062F3A2945F10438A /* NSString+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBD85F9E0E25710317253841091C391F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = A6057C23DD0D9C9A5559F8F0DC47A97D /* PrivacyInfo.xcprivacy */; }; - BBF5FDA7D647517E2F904FE8E5596D96 /* LKS_AttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = FAB9874FA4C241C24657D3A825C00C66 /* LKS_AttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC2F9B1D6986FEB23B4FB1288B512538 /* MJRefreshNormalTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E1E4CE0CD5AF60097B9523ED2201F8 /* MJRefreshNormalTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC5458210A973BC7A29D1F45D458A14B /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 0696D0619ACA95D8E9E7EFDC0CD595D2 /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC7A1933CCF40C3C5E2E4A70AD2D0657 /* LookinDisplayItemDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = DC3E4B841669D08E886FD8D7A86C654E /* LookinDisplayItemDetail.m */; }; - BCDC1E1D46DD124B5726A064D2EE66A3 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CBB9E2731CD9B8F896AD9F7398CD3F6 /* UIImage+MultiFormat.m */; }; - BCEFDE57BB0E0B36731C8D39FFA1BE2C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = ED216C76AB8BA24D783B6A22E1E01C97 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD30193C1E3D7B1F17B1B1F3F08BE655 /* UICollectionViewLayout+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = B7D4D5B8A3207BDAE71FAE9F1B443CBF /* UICollectionViewLayout+MJRefresh.m */; }; - BDBE494BAC544843982C3CA96A6C41DD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A522D0661C437F2B97B12A18A3478A1 /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF0C3D2782FE1425C2F1F8827132A94B /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = D9B1F5912311585292CF1DB19B5FF418 /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF22D137EF6324675FA50080C5D93C00 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D45408149C7FF7C3CD91B6DDBFB7448 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BFAC671767912906E90060B0F4BED5FB /* LookinCustomAttrModification.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F154763B55BC95D1F3E0C64970B8D48 /* LookinCustomAttrModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C0D7926E41A294ACA98D7B033B283919 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E466B1532DEF5F8A8FE002C3882E69E /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C1D9802BE2A6410FFDFB1650FB9BA317 /* LookinDisplayItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 7597119135479FEF90DC7CA9DDBF03A6 /* LookinDisplayItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C1DD8C6A64F948E4C53560C76B995DA4 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = DB89640D4CA100127D613D0379809B5A /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2033A68F13923BF9B3EE19F39FC1411 /* UIColor+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F81A89C6E769F9B774524A9FE4BA70B5 /* UIColor+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2068AEACC2D9C7F1FFE41AA25B12A68 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 21628153BCD0325102EB502FB5AEDF0F /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2840BF1950FF7EE2DCD6D55F768A49C /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D64DD7369F8D81EDC16FC3539F46D73 /* UIImage+GIF.m */; }; + 8FF7B6477BFA6E6ABA168E1417291D5F /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = D52F3A758237EAA29F8DFF3603985B94 /* MASCompositeConstraint.m */; }; + 906DCE66CD5BD236081D468616199BB7 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 75D5D4CBB473106CD017A60A4F0284B5 /* SDWebImageOptionsProcessor.m */; }; + 91AAF555B286FBF53E4F98D092B406BD /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E8FF2BF379FE508F46CAD249E158559 /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 91E8B94F8E02ABF5197DF5AE7D0B3934 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F498FCFBEA5766BBF0C258824B66B52 /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 928371B066E1211CE87089668D5BCB4C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 24AF188A90B7DB8463BE14A968AB6A8F /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 928A1ED0692DF0229F66A87135F93F2A /* LKS_CustomAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 054A388C6D56EE31CFBD5161B49B08DF /* LKS_CustomAttrModificationHandler.m */; }; + 9345137ED10358B60E37D05FB6165759 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = C6C930D163128CBE864CF933994F470B /* SDFileAttributeHelper.m */; }; + 9358FC6C6DA728AEE250D8E7DD236946 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E79B2B03D4382C825BD72257BE4101 /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 93E8C78EAE0B7613201813966B8E04E2 /* Image+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 48DF6A3F73D15BB7711D4C401A2A800F /* Image+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 955B87902E039163281C4F47C95DB851 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = DC6B018BDEA17A60716B1E4180015BC9 /* MJRefreshBackNormalFooter.m */; }; + 96E97174F4614FFA0649085022CB4AFE /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 94EC9A7C408C26C1E3959F02360523F7 /* SDWebImage-dummy.m */; }; + 97235408E59E16C18B6BDA1D29E1CB26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 08732566CBDE3EB293493BCD102835A7 /* SDWebImageManager.m */; }; + 97385A64CA020489951EF769392C6DCF /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B69A17E7FED839334E49FA3104B7F83 /* UIView+WebCacheOperation.m */; }; + 9887678D7D6BC165694560D92AF2C31A /* LookinConnectionResponseAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 64110DA477609C9760A9CEEABA26DFFB /* LookinConnectionResponseAttachment.m */; }; + 98AB6B8EB7FF096BCE87488C5AB3DF1C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 9A7FB1E975A5955C896E6B195C521804 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89406A9E055C08A7A24CF01C851841 /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9A89C16038149623A1DF06D47E7F953A /* LookinStaticAsyncUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 694CDF3CA0E35A901F2C7D0364CD013C /* LookinStaticAsyncUpdateTask.m */; }; + 9B06400877E40C173F5A1C9761F288CB /* UITextView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D640B445F4284F72C568FEB8607AA99 /* UITextView+LookinServer.m */; }; + 9B1EF09A8A473D92C1258B00791BF5F0 /* UIView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 110654C4ECBD914896546F497CDC625F /* UIView+LookinServer.m */; }; + 9B3420DEB8A0CCB9E1241A669AEFCA8E /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = E4FA0289B9B02BEC5BD44CA92580B1E1 /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B9343E8599EE5196BA75E842DCB48B7 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 625CF3BFC134394EF547BF079507A5D1 /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9BBBDC6BB6583BCAA75242231B62B530 /* HWPanModalPresentationUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 163946A4F251CC5F8129585DD75C0870 /* HWPanModalPresentationUpdateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CE425B89294BE2C13E70A86E75B15CF /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B41358A1C10AD0D29F1770C04A5F0CAF /* SDDiskCache.m */; }; + 9D422527A25BAE6A207DEFE11958ABBC /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 666595C8EDD80B06B88241CFA60BC1D4 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D859B99561C389C0F494428F66F1871 /* HWDimmedView.m in Sources */ = {isa = PBXBuildFile; fileRef = D576F2E6ED4261CAADE09C891ED19EEF /* HWDimmedView.m */; }; + 9DDDCFC08B54A61C519DA78F94464E6B /* LookinHierarchyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 1651052462F8B04B5877450A1292E16B /* LookinHierarchyInfo.m */; }; + 9DF446F8CA5BC4D4098766EC9063012C /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C249B920F34D0D69C69CA43351E52EE /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9DFFD4780CA32B8E53D9F4FBC8B3F5AC /* LookinAttrIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 611F335AF3AB948359952D972579333C /* LookinAttrIdentifiers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9E3C5CB1C97B2ED16218956999BFF7AC /* LookinTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 61194FA2A41C9D734CCA119C5F329CE1 /* LookinTuple.m */; }; + 9E6B00AF2ECE462D4D3C42AFC02F2AD7 /* LookinEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = ADCA2BD1C88A86EE8E2A5D4E3461378D /* LookinEventHandler.m */; }; + 9EBA682DA814406E9E5EF300587AF341 /* LookinAutoLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 70CF34CA376C8F25403FA62C8A27356C /* LookinAutoLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F89DCAA4092F3897E43E89842069A26 /* LKS_AttrModificationPatchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C4A1569A2FA3521F9130DA7EA649CE07 /* LKS_AttrModificationPatchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9FB234EB4D8B5BCC699DB491E204594F /* LKS_GestureTargetActionsSearcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 52587370E20625EC0ADF9ECB81F06C80 /* LKS_GestureTargetActionsSearcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A078A275FFFA48D620074790DA3CA6CE /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D9713BA6BE14577AE57300E3DD702FD7 /* MJRefreshStateHeader.m */; }; + A0E0DC76F51300E7EB1EBA5492DE854D /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E66397BB19318C841897657B7D33195C /* UIImageView+AFNetworking.m */; }; + A1560247914C760D9EE5F7A2392CC06C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 397ABB0739D14AE30A56100FCE880DEF /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1A1266FD70CEB545FD7602CC33F2F7B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */; }; + A1ACD509069144C27542774A41FE0243 /* UITableView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFBCDC70260B861EA38352626CC2393C /* UITableView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1DC9EFDF50DF0EAF24D9D7C219AD2C1 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 92E26B1FB2A3B34BF0C4C43A02D2EB58 /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1E44277704AD68E867FD7C955A6632D /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED81178D3D980B0132BE071541BDB51 /* MJRefreshBackGifFooter.m */; }; + A324722BA42F21E98F158EA6C133D715 /* LookinServerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 27CFD14754D1E3BFCBFECB5DD71A5359 /* LookinServerDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A3EA39A13714B3103B82F4066A642F53 /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = AC49732B3E41F8772AD10362943A8A97 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6728DA26A7C457B78A7A3CCFA9D9A10 /* UILabel+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A29706814F99AC9B476BC26B8CCC39 /* UILabel+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6B2B022993BBC55550CFBB0A0C78209 /* LookinConnectionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = B239AD8AAB2A61B7AE6B39D6B7F1F9D5 /* LookinConnectionAttachment.m */; }; + A6FCF74348D1907891FBDE3F2E331136 /* DZNEmptyDataSet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C5805469F7E93E743A134E4EEC762665 /* DZNEmptyDataSet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A760FF1452F08B787F0997D91F4A2C98 /* HWPageSheetPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = D1AB74F96045D59C6D2386964814DA47 /* HWPageSheetPresentingAnimation.m */; }; + A839428F403C52D8AA3466B65E20C27A /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DC0E4313E6BF0284C12011FF5FD9B8A9 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A86CC1AFDFDD692DC4EE66F57C0F39E6 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E66BF426F9E82A8E7F4F5630A42386 /* UIScrollView+MJRefresh.m */; }; + A8AD2AE9695630E93DE504211EBAFBF1 /* LKS_CustomDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = BEEC82A223FE289DDC2C165B2D2E03CA /* LKS_CustomDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A8C001E34C77D81FAF5FE55956A8293F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 99C1A927375BA228B8AD38FDB36211B8 /* PrivacyInfo.xcprivacy */; }; + A92AB5E65CA85947368E46E6627F1BFB /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = C12D160C6063D462EE97C5CD6A35994E /* UIButton+WebCache.m */; }; + A93BA1C5A4FFEF3ACF371690485A2703 /* NSObject+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50A13B682D86AE92E1941A6C08E557BB /* NSObject+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9609EEBDD5FD40292925E80ED84D5DF /* LookinServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 701BFF6738F7EE5632E59657442BD101 /* LookinServer-dummy.m */; }; + A9A49E4A3BE8882F60DF32BAF39DE191 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D6F2CCB5C719F8790027213B6CF0ED8A /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9BEDE2ADF9D1E0D0D1A241806A1A486 /* LKSConfigManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A3FD8D5295BC5DADF9B48122C08A03D /* LKSConfigManager.m */; }; + AA1EA8F0F0470F1596B1FFA58ABF3375 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = BBB5022209600659D8A4792A6FD748CE /* SDWebImageDownloaderOperation.m */; }; + ABCB80C4813C849FC93D57676820C907 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 93ED7AE2B94BDF71B19043408EA5D0F3 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC14E56ECA7A4980A8E1CA68E800B12C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA74E651256F04C8514F0A05679D217 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC710813CB6A1DAEEE45914402F864D2 /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F66416F5FCB58B94BA9CC403B8A778A /* MJProperty.m */; }; + AD01931D200C49153984E27CBCEFE9D1 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = E1A7A8B90EB2B4D833CF1D550EC9FB29 /* FLAnimatedImage.m */; }; + AE69A3B75BEEB9E2C54168BF0C502BC6 /* LKS_RequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A762DB0AD39D18CF911533AF4D3D3B1 /* LKS_RequestHandler.m */; }; + AE7B02645B8F769CA5F215EE8F7CC5B0 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B71B6DD998C6C529D683056C8285BE11 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF185CDCA462AD6450543676951C82F9 /* LKS_ObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = A658C45B08CED2701138D5375C27CCEE /* LKS_ObjectRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AFD1D411A9387DCEC6F0034653E23787 /* DZNEmptyDataSet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FA5982BFE2863F2A7591EEA5A3374FB5 /* DZNEmptyDataSet-dummy.m */; }; + AFDC0B8255B2F3CED8E609F8A3BD1CDB /* LKS_AttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = A68429174A7738F07E1A8AA359028DFE /* LKS_AttrGroupsMaker.m */; }; + B01F27CEAE1971DEC56A8811FE669EB6 /* UIViewController+Presentation.m in Sources */ = {isa = PBXBuildFile; fileRef = CFCADA560B6CBB7BCDE9CD39CDBE90F2 /* UIViewController+Presentation.m */; }; + B030B558BE97E0225652EFB8C8FA431F /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BF0595213FCD9D5150FF374A286E2BC6 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B09F08548ACA8379445F6525011EE219 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = E0854CBF8370AAF7A642A9BE65EA9C79 /* MJRefreshBackStateFooter.m */; }; + B2704AFFC5CC053154839DB44924D255 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = DBE8F778D2F44195988D4A515D7F4B42 /* SDImageCoderHelper.m */; }; + B2B5444DFE63D2835A7561C1D64C9344 /* LKS_CustomAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2676F11A3670B2480D40E37CECD806F7 /* LKS_CustomAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2BC43DEC8DE2B9234693FE3782AB76C /* LKSConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E80165A2B20491F0E71E9BCFA72510B9 /* LKSConfigManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B331CE2D3DEB461E738B886086A365F9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA81838534E80C5870459AD0441D08C /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B48A975992E58328254C494F133DE467 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 85703DD6475DDAF90847B3E1C0DC9738 /* NSObject+MJProperty.m */; }; + B4F231C5CBAB3D4A184699D0066E0E83 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 92C723F3A1F71486F75D6E7CA7E480E6 /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B565C08CE947CF591B1D3582272D5E1D /* LKS_CustomAttrSetterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 64EE6EBE156E6757C2B16DC6C01D0328 /* LKS_CustomAttrSetterManager.m */; }; + B59E60FBC9665FC1061B88B8E6FD9FAF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 66EB6235F828F12999A13D8BD6C02127 /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5AF87C11A465F666473F6191D173905 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F590A160BC28ED1F8AD774E3E9DE5 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5C521FFB8E09DFE348238E21556842F /* UILabel+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = CC1CE35F4EE179193CCCEA428E5FF90F /* UILabel+LookinServer.m */; }; + B66356D4E7E43B3D15324569AA7EBB05 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = AC119D7F0D47E7F00738CC762CB0D90B /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B680C2604BD8BC9644AE7C67BC46B9BB /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B7AF4A837E5E99D79B146178585C2C3 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B741DBE2A466E6211F879EF997D9322D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 89CAE6642460316AFEB27B5A5CD2778E /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B79864F972C51037B350802D8CD48024 /* LKS_GestureTargetActionsSearcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E03CFEECACD6D99D415C06808FF1A46 /* LKS_GestureTargetActionsSearcher.m */; }; + B81566F19789EBD9BE2714E2A6059D36 /* LookinDisplayItem.m in Sources */ = {isa = PBXBuildFile; fileRef = DB2EC5EF47D2A84B9FD85A1FB0124FD2 /* LookinDisplayItem.m */; }; + B8CA1F338C44C633916650FD85DA5A30 /* HWPanModalPresentationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 464FA74F22BA11120A125593D04ECC10 /* HWPanModalPresentationController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B95C63A039D9D08896421291DEBD3AEB /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 69120AA1162D453113865A302140EFB0 /* SDWebImageCacheKeyFilter.m */; }; + B987864019E987FE32AB26A9CF2C8E12 /* UIViewController+PanModalDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A65EE54330746267B5EE5B6873635DA /* UIViewController+PanModalDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BA904ABA8ED36CC4E5EB2B2004CA1F18 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 33B1E0CA964F32623BB6975D9AC53C26 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BACAA91A92F35CD7E7795232A83F21D1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 543E7F5FC6CF2C3049F7A173BFB53AFD /* AFNetworkActivityIndicatorManager.m */; }; + BADA31750A2136D073EDA4461DBE1EEA /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EE75894CA44B250BFEA11B25F54F149 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BBA61EF31BFDFA6FCA34DC4EBE6E1D9A /* NSString+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 4307F1F1718ED3798F45B2184C30063E /* NSString+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BBF5FDA7D647517E2F904FE8E5596D96 /* LKS_AttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = FFDB78F13861619F1E601806B170EB3F /* LKS_AttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC2F9B1D6986FEB23B4FB1288B512538 /* MJRefreshNormalTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6259B042D1D6480734439FF381E14C2B /* MJRefreshNormalTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC5458210A973BC7A29D1F45D458A14B /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 52498B1644296C61B2FE7621C339AC58 /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC7A1933CCF40C3C5E2E4A70AD2D0657 /* LookinDisplayItemDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = CA563C1C8CD02A20BF55A818576D82EE /* LookinDisplayItemDetail.m */; }; + BCDC1E1D46DD124B5726A064D2EE66A3 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BA9B1ACD0A1EB747C6936E484D5208B /* UIImage+MultiFormat.m */; }; + BCEFDE57BB0E0B36731C8D39FFA1BE2C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 5916EA119280E5419D6269E5A435A1A0 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD2F6B06ADB5136DA881D1B918367125 /* UIViewController+PanModalPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 041476A9D72BD942940B39097904435C /* UIViewController+PanModalPresenter.m */; }; + BD30193C1E3D7B1F17B1B1F3F08BE655 /* UICollectionViewLayout+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 140C8B875FF37FDF9A95CB04C9916AF9 /* UICollectionViewLayout+MJRefresh.m */; }; + BDBE494BAC544843982C3CA96A6C41DD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5222D695CCB33DFD24FA0E6B7CE34154 /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BF0C3D2782FE1425C2F1F8827132A94B /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 857DB28ACD58B6F0687A1A566D8C2BF1 /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BF22D137EF6324675FA50080C5D93C00 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 587CB6117FEDC0DADE247998FA290F62 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BFAC671767912906E90060B0F4BED5FB /* LookinCustomAttrModification.h in Headers */ = {isa = PBXBuildFile; fileRef = D5BC11645051F0690160018A0FDF87B2 /* LookinCustomAttrModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C04D578067F77AAB6717D32712CC39A2 /* HWPanModal-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A16552B472D24C41550970F7A20D2306 /* HWPanModal-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C0D7926E41A294ACA98D7B033B283919 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 35BFDB837A13ECB08D0555099C8AE732 /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C16483526F6C6287240A75EDCB7E2F2F /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB715803528E46AB9661E7F8A956D85 /* FLAnimatedImage-dummy.m */; }; + C1D9802BE2A6410FFDFB1650FB9BA317 /* LookinDisplayItem.h in Headers */ = {isa = PBXBuildFile; fileRef = E115A6217BE4FADE37437C87CB0A7B59 /* LookinDisplayItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C1DD8C6A64F948E4C53560C76B995DA4 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC9A26415E30724897A7A975AB7B73E /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2033A68F13923BF9B3EE19F39FC1411 /* UIColor+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = C9465AFC6C48C65FF4158D542A5001CD /* UIColor+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2068AEACC2D9C7F1FFE41AA25B12A68 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 14121BAD9B9FA92863D1125B50D54DF4 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2840BF1950FF7EE2DCD6D55F768A49C /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5F7FF14062807BDEB2A6D6E4A6DE95 /* UIImage+GIF.m */; }; C2F8C43CFD4C890405F217DA7E00C839 /* Pods-CustomKeyboard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2FE60A10C792613E45031AE6E851ECB /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC10C6127599FC7CD74CA6E613C44DB /* MASViewConstraint.m */; }; - C4CC01ED368863C6E3220988FBC6CEFB /* LKS_CustomAttrSetterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = F98B3E6FF4A7A436AEB00C4FE95820A2 /* LKS_CustomAttrSetterManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C60DB44F719853DE3B7157960DAF9270 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = EF2661A0DF69E1828AB8D83F666F4FBC /* MJRefreshComponent.m */; }; - C6A100159974349FEAAC99B82BE0F872 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 97003D4D841CDDF5214C70A6CC7425DF /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6FEC1088121FEA7DDC3384B7ECF3B44 /* LKS_Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 567AA7AB9514E985494C554A1802C03B /* LKS_Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C71935C30C1AEDF32B96670BD8FA64CE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1DF8BF780A4AD9606856AB857CA1D86 /* UIKit.framework */; }; - C857B8D2D0BAA5A8A764F9E1C4B85807 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 904AEE3BB6B326E7E1CFD8B0A34306AB /* ViewController+MASAdditions.m */; }; - C8771885BEA9EA0BD2E2C474587325E2 /* LKS_ExportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A306B5D1B1BD0232E2121BA1E0EA27F9 /* LKS_ExportManager.m */; }; - C8EC35DFB0945DBE2F2FF9ECFE6D9711 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 96E64D1052C3FD60EB6BBB8A95EE1349 /* NSLayoutConstraint+MASDebugAdditions.m */; }; - C93E972E75F84674690300123984EC43 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D7966DEA2CA0101B9FC2C01A1A2909B /* SDAssociatedObject.m */; }; - C992A335399F942237E754EE65C40CA5 /* LookinObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E70A8D54BBD1266CC7CAFB4BD5CE317B /* LookinObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C993A4D0CFA51E567F458CA65C1298AA /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D219431FF998A6D0FA270965A4CDE56D /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9B63C6ED2ED691EA83D3EE65939444B /* Lookin_PTProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 1550F0B5EA5360BFA35606256AB6EF51 /* Lookin_PTProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9E19D164C26414115CC969ED9A303C1 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AE5F5B6D6DAD0B45FC2D30EE6FBEE81 /* MASLayoutConstraint.m */; }; - C9E8C9372C2DA29D302B058BE3AE9877 /* CALayer+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 26476CAEC54A4CE04264494F816DFD2C /* CALayer+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA1E0DCDF679EA2DE2ED0915426E1D04 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = FFD58163B84A00F8FD88E21AE9F6DF12 /* SDWeakProxy.m */; }; - CA56274BE7CBB3E759E0364785DF9799 /* Lookin_PTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 341D877992B274AC6FD93AB03542E561 /* Lookin_PTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CE86196C00DC1D658B6CB7D47A0233AA /* LKS_ConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 613D22FE29FDFD98F1BA3415B19FB040 /* LKS_ConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CFF8D1A5E4C2097EF05E1021FE112886 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 54354678DA42B275327F1EABDD57F9BD /* SDWebImageIndicator.m */; }; - D06BB547D59D183FD1DDD84DEBAC9EE8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 42189E436FCC0F9F0BAA536F3BF84910 /* SDWebImageCacheSerializer.m */; }; - D091F05269EE0566B665B00C7D912F8E /* Lookin_PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 93AFD572FFECC065D5DF0E8764C35B66 /* Lookin_PTChannel.m */; }; - D1230E19DD1507E6370B80DF6653AC2A /* NSArray+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 49A24CBDEFCE6B22E2D355C6D04AC9B4 /* NSArray+Lookin.m */; }; - D2AF9A7FD73B95960FDA4FD06C4BED08 /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 5210B0534D834B2EF86FDFCE90B73F2D /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2CD8848F856EC9942A76610AAE66F0A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B00A278D1C0A05DD872C02CEFE3B53AC /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D559CC4D0695CEE05F3B4C1C06475044 /* UIImageView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6CAEA0BC49D62C0D220FA986A5391EEC /* UIImageView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D5C046C46961BE465293625D6B870620 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 83A4CDCDF549B87D4E437ED8A4615D91 /* AFNetworking-dummy.m */; }; - D62A672EEB252581BD972DDA862BE1DD /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 037A3F50C10BD2A3B9D2C3743608A737 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D662C83ECE8BEDA5FFB52F3575CA3E1A /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 34206822AA40B77DF3E1B3B5D326158F /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D663837F4347AF58660EE6F7FD426ECE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */; }; - D788BA4B9E8186271BA75CA52B30502C /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 59AE847A100A8834951E42690C982455 /* View+MASAdditions.m */; }; - D7B3E8948DB04BD8FB6748419DA03EA9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 241065D9A03A30BC61C328A01C40E560 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D89C7D5455E3E8E2D7EC6B880253BD9B /* LookinIvarTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 872090FEDB94946E441D4F936A1357C0 /* LookinIvarTrace.m */; }; - D90607B4E56247B19B14462E487BA86E /* MJRefreshNormalTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = E25013592494E49EB3F378AA4A68FB7A /* MJRefreshNormalTrailer.m */; }; - D90DED0F5638B1C44F4B6C62D600D240 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 120B89B8756AC54266917A34CDCADBB2 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D90DF1376DF5E2EA644313BCD2E03058 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 352F463EFB3454F98E285A844376EC28 /* MJRefresh.bundle */; }; - D968461E31E8FF3FF6BA1DC621B0433B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = E1DF8BF780A4AD9606856AB857CA1D86 /* UIKit.framework */; }; - DBA9500CBBA5FF6FCBBA115AE4D12152 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A62C9B59CFA9D74EE95F526BE485EC8 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DBD9152526A180771BF7D7CD209B957E /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F61B84FD6B8249C85FCBF56257E34C6 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD7F63D4E4640C7386877BB787740272 /* LookinServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B1A8FD671105727BDE389DF6E59E7187 /* LookinServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDA16FB9C21AD941442357DAE6939530 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = E727648E6DB0C84B6B5C85D16CF9D6AC /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DE5A78F116018E2AC54714238276574D /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 15E423D2DE3EB3895273EDB5BC21FDE9 /* UIActivityIndicatorView+AFNetworking.m */; }; - DE98ECCCA7106A4EA575EF34830D41FF /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D47A5312A106ED050240FD5A4E84CE4 /* MJRefresh-dummy.m */; }; - DEA09692CF813A23899CD4949A9B6801 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 33E548EC20D55A1581EF030D8F590720 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DED9ADFC8CC65243FC54E008A853742C /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F39E9FDE611BCC2A514A77F1EB63E8B /* MJPropertyKey.m */; }; - DF2B15402CE105F5A8CE48BBDCFFD5DD /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = F57A932DBB8EE96EEDB42899B11A3E40 /* MASConstraint.m */; }; - DF525E5405FAD3B98B0C2D966EB2DD95 /* UIViewController+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5AF7E49BBE304E0327E319036BE5671B /* UIViewController+LookinServer.m */; }; - E0B48B9D5D45AF3500FC718459D66E6C /* LookinDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E6089EEBB83334AD3EFA96BE408F86D /* LookinDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E0BCF21E9FA59F638C13ECCECC4D9690 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 59D0E9B54F4868B1B1BDE17140B78250 /* SDMemoryCache.m */; }; - E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 743C4A42055B7373FB20F646193D0919 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = F61E20013C3B1EBDF05023CF2525C38C /* UIScrollView+MJExtension.m */; }; - E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 35182E600B80DDDFBA4A4B90FAA71EFD /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4F1B478580D6D7328BC29607BDE46F6 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BB52034FF7403843EE79E4975D6D70 /* UIImage+ExtendedCacheData.m */; }; - E50613C67DD02AF6EA825DA0B31EFFAD /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = ED6C24AA261BA4AFA4E02DA1EFA44065 /* SDImageGraphics.m */; }; - E55B3151D86660E28CEABC3CDE6B1508 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D93B5DFF8656FC20174F5CDCB325540 /* UIButton+AFNetworking.m */; }; - E5B057BC87284367918B2DB9CA084B4E /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E49D88BA109001AA94CB4B1CBCC6353 /* MJRefreshAutoGifFooter.m */; }; - E76969F9B01139118427505B18F9CD21 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 67A65AF14731E6A6CF631892AB163C2D /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E7FEAB9F421F7EBAF021F792D8E9C4D6 /* LookinCustomDisplayItemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C5B4FB13625B33C4ABB17DDEF05C782 /* LookinCustomDisplayItemInfo.m */; }; - E82964ED7092CDCDAD08BC596A57B43A /* UIImage+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 241D729CBB4E30C3E09474F7F34CB9FA /* UIImage+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E8AB529B9E0B4C23921344F6C4ABFEA4 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 12F12865FFC70E396EDFB92C4A7F13D7 /* SDImageCoder.m */; }; - E930A5612DC6D120BE040AD17C6D1BCD /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 07F0D69559BBD9895C4D0BD66F33AC55 /* MASViewAttribute.m */; }; - EA82B6D97C9C5D0558047AF552D63203 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 01E24F0E64AEC0E54DBDB063CE89097A /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EABCB60A26B06BF576E50BBD2F89A385 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */; }; - EB3DF628891F7D6AB114718AF760CB2A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 319E8C485C3E5DB2BFBF15AA61E5ABA9 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB646114ABEA7A4D6C2A724404778670 /* LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 30A10CFE082F8338A031688B47CDED17 /* LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EBC9AA5D4A55F79BB5CBF6CC92719FAF /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B9232C2E4F4A27C4FBD3F8EA3E351AF5 /* PrivacyInfo.xcprivacy */; }; - EC8E84A8FFADDCA562A8608D141D9027 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = C79FFC2722DEE9A1F54D8DBDD3CB2A2C /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC9B34262AED632D7EFB49804337648E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = B069597AD0812CBF01ACDD3CE4B6F843 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECE64B732F9FA7C402DDEEC58DCB9D98 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F6908A3C9CC8A527E2C3CB20A2C51560 /* SDImageAPNGCoder.m */; }; - ED8991A8AE7C04362C2BED3875DC1656 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 05D83C1EC3DD8D27EE1C07CFDE18D72E /* AFURLResponseSerialization.m */; }; - ED8F64FF98CFAE0B12CF60A1B0E6BAF8 /* SDCallbackQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 19F3928D9276C0125AA1EBDB31A470E1 /* SDCallbackQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE6E8FE636D2C02E3D2FC1E8555B4612 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5932D997195DFCB258D366D038A56978 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EED016DE8173CD38CC01D88CD2628984 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = AF4D3A8A4AF29616DFF2E40A94DA00AE /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EF6A6C725598F572A70C5FCEE328C184 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = BD3AE781F5CE5DD3063848F6F78DD40B /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F1D845E22D5B8FC6AFC3C2E41DA1B6DF /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 62E02B7B42A91CD6887912774FAE6528 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2AD91050B1FE3C8BC78567F1FDE3ED5 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = F3D6C729EB2C2561DF46F90B1EE029B4 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2C9F9038FBEFD951516694AE873A2B9 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D069519EE909290F7C452231691CA88 /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3263D294D688533EB974E37C61F1E24 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = BCE109BED042388EE5FB3949ADA18281 /* MJExtensionConst.m */; }; - F3AECEF6D3BB919B3E7392942E1BC58B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = AB22EEA7E251269666B0DD8D3FCD0892 /* MJRefreshBackFooter.m */; }; - F3F4A6309BD95DFAA4DCC60A4E07C515 /* UITableView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7584B9C7664B986D7C6582FD3280C473 /* UITableView+LookinServer.m */; }; - F49CB22863CCFEC7817D259F27F91C57 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = B6D81E3EC47029DCA820DF6AA652C734 /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F53BE4449AE5896F76325E4DCB6D0B13 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 99F9CF6DCFC4C32DE7AC87FA68FD05DA /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F60F90EAF35CFF40DF1C33557965787D /* MJRefreshStateTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DDB2F652BC38BC05396DCC9F34040CD /* MJRefreshStateTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F62B0711DA506CCB3DF79F65134566C7 /* Lookin_PTPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D703CF356A8E2B3B3665722366223A5 /* Lookin_PTPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F68889CD481716EE5D6B75EBD8FD53A6 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = FF5518BA3449B11DB02406C2A9A9AA75 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A0D6EA1B5DC3FE04DC4A1B0A914121 /* UIView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 12119FD9C09B77E5C8A003238C89E88A /* UIView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A2DEEA8E8B92D365AFDDBD5E8C1218 /* NSObject+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = BA48F14A970C2FE9AE9B9A3F4EF27D84 /* NSObject+Lookin.m */; }; - F6D1C960368EB1E067ABD0BFF707FC56 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D891833337A0E2AFA0DBB31899C747F /* MASConstraintMaker.m */; }; - F7623E7C314AA5010D8D0BD6ED4AAAD4 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = A67D546CB537E231FE83AA071A555BB7 /* AFImageDownloader.m */; }; - F8616FAFEE1124368CB96473CE20CDB4 /* LookinAttrIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = 75E99E8BA24E841D85C9E942E3654D62 /* LookinAttrIdentifiers.m */; }; - F8F1B1196CAA5114BA9A95AA7E6D6AEB /* UIBlurEffect+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = D950E8533947A1D8B1CABC80463AFF52 /* UIBlurEffect+LookinServer.m */; }; - F9789D86D3279D71B398B550F27C3EFF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 34294BB6B51E74AFE5298D85D957E2F6 /* AFSecurityPolicy.m */; }; - FA3021DED76B9B182CC9195A60EB1209 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BAD239072CC7DFB1FD50FE4374085D1 /* NSBezierPath+SDRoundedCorners.m */; }; - FA6DA93357E2E9E9AADDFB3E39DEB6C2 /* NSObject+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E66FFAE76E02A3342AF857261F059F70 /* NSObject+LookinServer.m */; }; - FCDEC6A53CF5517E1AF5B331FD65F6D9 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 4770EEEC71445F1C55A5C71E32517009 /* SDImageCacheConfig.m */; }; - FCEE5BD645E95FF55468C4AB6D17CFDA /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F0BE45EAE3F2E6B703C484173BD9CDAD /* UIImageView+HighlightedWebCache.m */; }; - FDACBA49610EA6F39CABB7FE44B137D1 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = D3C9902E0E2D0A78C2A349E20322FC80 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FE07C069C2E3543002CEB5D751ABA9AC /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D18C326A9F4C285AD294832344E63FF /* AFNetworkReachabilityManager.m */; }; - FEA8BA4F82CCBD1D28DCC7EF39FB4096 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = C839ECCA7B6B8EF19AFC3658241117C8 /* SDImageCacheDefine.m */; }; - FEE883575278D5BE8F185437AB5DB3BB /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F0234E8EBBDCA694F549267CF8444C2 /* MJRefreshGifHeader.m */; }; - FFC6D50089FA32FD7AAF25747E56EA60 /* LKS_CustomAttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 667106A3B29FC2624F444E79272C8235 /* LKS_CustomAttrGroupsMaker.m */; }; + C2FE60A10C792613E45031AE6E851ECB /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 8862727C1E338311DF7340BC59FC7388 /* MASViewConstraint.m */; }; + C4CC01ED368863C6E3220988FBC6CEFB /* LKS_CustomAttrSetterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE5FEBB56FEC34482A95BC768401167 /* LKS_CustomAttrSetterManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C60DB44F719853DE3B7157960DAF9270 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = C20D9185B54011BBE67FAA2FE147DA10 /* MJRefreshComponent.m */; }; + C6A100159974349FEAAC99B82BE0F872 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = FF065544B74A17D64308801DEE489EEA /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6FEC1088121FEA7DDC3384B7ECF3B44 /* LKS_Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 005101F7C4901700207336B75CF59476 /* LKS_Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C71935C30C1AEDF32B96670BD8FA64CE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; + C857B8D2D0BAA5A8A764F9E1C4B85807 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 099894DB44BB1249366F618379B45D6F /* ViewController+MASAdditions.m */; }; + C8771885BEA9EA0BD2E2C474587325E2 /* LKS_ExportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1724C6EB60601A5723C7A0972AA8DB97 /* LKS_ExportManager.m */; }; + C8EC35DFB0945DBE2F2FF9ECFE6D9711 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6C86B0A2BE58730A7EC5C60F201E0CC /* NSLayoutConstraint+MASDebugAdditions.m */; }; + C93E972E75F84674690300123984EC43 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B289F862BC27A4B0060A4CFBD40E1E1 /* SDAssociatedObject.m */; }; + C992A335399F942237E754EE65C40CA5 /* LookinObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E8B33995F7416B51F3DB4DF1B8C1C079 /* LookinObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C993A4D0CFA51E567F458CA65C1298AA /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EB1751B89D4AAC72FB84E06877E9092A /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9A72F0A93329C42B77395B0F6CEA26C /* HWPanModalPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C180A1C6E6C287310FABCB81CBEEB07 /* HWPanModalPresentable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9B63C6ED2ED691EA83D3EE65939444B /* Lookin_PTProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 549961902064EB911C7C58433F18CB5C /* Lookin_PTProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9E19D164C26414115CC969ED9A303C1 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 90219DE322B8BCFE6BF680852EBEF4F5 /* MASLayoutConstraint.m */; }; + C9E8C9372C2DA29D302B058BE3AE9877 /* CALayer+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 198BCFF4D9AF651D5B86774921D624E2 /* CALayer+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA1E0DCDF679EA2DE2ED0915426E1D04 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 72A78D12318A2A4F704BC2BC743AD9DF /* SDWeakProxy.m */; }; + CA56274BE7CBB3E759E0364785DF9799 /* Lookin_PTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 318AFD96872C2F4B15208D88E9CD4764 /* Lookin_PTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CDCDFA7775C6B23ACD5CFB66663214CF /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = DA7CF72060C622DB6A61C9EB8ED621EC /* PrivacyInfo.xcprivacy */; }; + CE86196C00DC1D658B6CB7D47A0233AA /* LKS_ConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B52F950306B0C5B7D2782308290581C /* LKS_ConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CF7005F2C42AC2E2DD6D437D52C7048B /* HWPresentingVCAnimatedTransitioning.h in Headers */ = {isa = PBXBuildFile; fileRef = 845117372901F4A5A3D286F10A26B6EC /* HWPresentingVCAnimatedTransitioning.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CFF8D1A5E4C2097EF05E1021FE112886 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 3227970589E62371501C4D8C28DD4B1C /* SDWebImageIndicator.m */; }; + D06BB547D59D183FD1DDD84DEBAC9EE8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A5FE34535D0AF62304F84F18B3E5293 /* SDWebImageCacheSerializer.m */; }; + D091F05269EE0566B665B00C7D912F8E /* Lookin_PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DC2990A90A71D269C5024BA61CF0B19 /* Lookin_PTChannel.m */; }; + D1230E19DD1507E6370B80DF6653AC2A /* NSArray+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 92134100C010678B361F36A55263F8A4 /* NSArray+Lookin.m */; }; + D2AF9A7FD73B95960FDA4FD06C4BED08 /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = F7095CB50DC7675B616D3B2DAB4F0188 /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2CD8848F856EC9942A76610AAE66F0A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B7E0100E260F97D53E9D7FCB8CAAFCB /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D3615499AFE4D2A8EC2E773F4D8A82B2 /* KeyValueObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C462ACDAC6DCEE65350D4BC510A2E99 /* KeyValueObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D559CC4D0695CEE05F3B4C1C06475044 /* UIImageView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A7FD6EBF394380EFF340D6443E444582 /* UIImageView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D5C046C46961BE465293625D6B870620 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B00C7E369E9AC7974F4EC937246BBA4 /* AFNetworking-dummy.m */; }; + D62A672EEB252581BD972DDA862BE1DD /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D8BA408618D220AA3B9C6EE5D3745E21 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D662C83ECE8BEDA5FFB52F3575CA3E1A /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 91D3E5E505EB6AAA766EB09E461868F7 /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D663837F4347AF58660EE6F7FD426ECE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + D737D93725B0E072027AB6DA9C4DDDEC /* HWPanModalAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BF03DA63A4A2F42BE9BA070226F0116 /* HWPanModalAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D788BA4B9E8186271BA75CA52B30502C /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D5E9D7932C124D684E6F1F2A2ECE7D /* View+MASAdditions.m */; }; + D7B3E8948DB04BD8FB6748419DA03EA9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 015AD0623578CAD25A9859FBC263FF7D /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D89C7D5455E3E8E2D7EC6B880253BD9B /* LookinIvarTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D6FD1A2FA6EEC892A2DD294E5A7454 /* LookinIvarTrace.m */; }; + D90607B4E56247B19B14462E487BA86E /* MJRefreshNormalTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 82D7BEE16249F72113581170F4B17105 /* MJRefreshNormalTrailer.m */; }; + D90DED0F5638B1C44F4B6C62D600D240 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F23CA3052D23EB11B0A898DB4A6E40 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D90DF1376DF5E2EA644313BCD2E03058 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = B0FB288C5320DA98E827641B6E277307 /* MJRefresh.bundle */; }; + D968461E31E8FF3FF6BA1DC621B0433B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; + DBA9500CBBA5FF6FCBBA115AE4D12152 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 59AF70C47DF0209B5D93F81A25EFB8EC /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBB7D12AC159E50D059772E4B6CF1D2F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + DBD9152526A180771BF7D7CD209B957E /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 441DC5BA33205114F293CCFD73DE308D /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBF03AD94698149E54474A5EAD083E11 /* Pods-keyBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */; }; + DCCBFE0D3914D33369C19AC135AB54AA /* HWBackgroundConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BD9DB001526EC0DE681E63675B8318 /* HWBackgroundConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD7F63D4E4640C7386877BB787740272 /* LookinServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D1EC76CFF0744C55D60E83B26DB4807B /* LookinServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDA16FB9C21AD941442357DAE6939530 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E5ECA77AE05E0692E3C292A2212CC73 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DE5A78F116018E2AC54714238276574D /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D9BBE6A2F399A988F5BC26DB0D0BF68C /* UIActivityIndicatorView+AFNetworking.m */; }; + DE98ECCCA7106A4EA575EF34830D41FF /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FB8AAFEE45EE16BDE3F3360F400C9BF9 /* MJRefresh-dummy.m */; }; + DEA09692CF813A23899CD4949A9B6801 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 20E6DD81C23D61767D03656C92BA491A /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DED9ADFC8CC65243FC54E008A853742C /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 0371541F4560714A85B237456DEF997B /* MJPropertyKey.m */; }; + DF2B15402CE105F5A8CE48BBDCFFD5DD /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EDF4F1BB23D4262A7612DC313B361ED /* MASConstraint.m */; }; + DF525E5405FAD3B98B0C2D966EB2DD95 /* UIViewController+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 30CEF95FB390697B4C1ABB26A12E9B7E /* UIViewController+LookinServer.m */; }; + E0B48B9D5D45AF3500FC718459D66E6C /* LookinDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = C4282EA0E02DB360DBEA169BDB76A24E /* LookinDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E0BCF21E9FA59F638C13ECCECC4D9690 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EF1B5176604A62648603F6832B989AC /* SDMemoryCache.m */; }; + E1B4145C5201DB66B65520B36849067C /* HWPanModal-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A94D2984C9A5BA88F4AA771F38B8314 /* HWPanModal-dummy.m */; }; + E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = E69955CA9C7B2AA324E3704014745EDF /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = B32295E122B71520322E84A41C7EE15B /* UIScrollView+MJExtension.m */; }; + E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = F46251B17D3526E25AB9571283064201 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4773572BED239AA7D618F1C05BAF51E /* HWPanModalPresentationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BA698A47BE0BCA54FA1B10EF6CD2196 /* HWPanModalPresentationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4F1B478580D6D7328BC29607BDE46F6 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A0744C22449018296AB633E5BC2C275 /* UIImage+ExtendedCacheData.m */; }; + E50613C67DD02AF6EA825DA0B31EFFAD /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = D6E12F6D8FA9D6FBA8E91CEC32AD4F92 /* SDImageGraphics.m */; }; + E55B3151D86660E28CEABC3CDE6B1508 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E448066D92C481C253D5FA5FC624A0D8 /* UIButton+AFNetworking.m */; }; + E5B057BC87284367918B2DB9CA084B4E /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = DF51D23D1444310275D4BB68151F1F60 /* MJRefreshAutoGifFooter.m */; }; + E7520DAA65004368C61453B8A2740295 /* HWPanModalShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 29982B3E12912C7BE794585B2B7F77CC /* HWPanModalShadow.m */; }; + E76969F9B01139118427505B18F9CD21 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EAAEC40E00FD2D67C7E5C46D561E1B8 /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7FEAB9F421F7EBAF021F792D8E9C4D6 /* LookinCustomDisplayItemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 978791EF867BB9DF203262274A262783 /* LookinCustomDisplayItemInfo.m */; }; + E82964ED7092CDCDAD08BC596A57B43A /* UIImage+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = BAE82C8EA8816156B60A19B5AAA61D2B /* UIImage+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E8AB529B9E0B4C23921344F6C4ABFEA4 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 999C87FA7C5AA189886B4A2D58358BA9 /* SDImageCoder.m */; }; + E930A5612DC6D120BE040AD17C6D1BCD /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = CCFCCA3349FCD1D6463769CF4AAFD75C /* MASViewAttribute.m */; }; + E97B2C62D3EE772504A939BEE7D6B459 /* HWPanModalPresentationAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = B1272B72DEF143341E0CC0451AF17506 /* HWPanModalPresentationAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA82B6D97C9C5D0558047AF552D63203 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = E031D032167FCBE18305712D789891F0 /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EABCB60A26B06BF576E50BBD2F89A385 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + EB3DF628891F7D6AB114718AF760CB2A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = A79588184FF24FC5EB3FA3987629C30B /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB646114ABEA7A4D6C2A724404778670 /* LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7070EAE3CD21654B5DD5A9531D12AF /* LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC8E84A8FFADDCA562A8608D141D9027 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = C0271A933F5E2DB9D6CC456E988103D1 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC9B34262AED632D7EFB49804337648E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = F56A3D2CEFC20C7B8AF2EDF3674BEE77 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ECE64B732F9FA7C402DDEEC58DCB9D98 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 07FE3729A86CE6B36944299B52BB3BBE /* SDImageAPNGCoder.m */; }; + ED8991A8AE7C04362C2BED3875DC1656 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = D62A25339DF2EED2DFE6F9001320C81F /* AFURLResponseSerialization.m */; }; + ED8F64FF98CFAE0B12CF60A1B0E6BAF8 /* SDCallbackQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C495E6705380977CFF34DEFD621BF49 /* SDCallbackQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDB9E11998290348E4DFB5140D678942 /* HWPanContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = F50930AF985486436650C129CC8670FF /* HWPanContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE6E8FE636D2C02E3D2FC1E8555B4612 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 64C4273F666802A12C990C543C5413E3 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EED016DE8173CD38CC01D88CD2628984 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = A60394A4E8FFC5CBCC2FD14258C5085A /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EF6A6C725598F572A70C5FCEE328C184 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FE4E0AF6CE972936C63A285E8C573B7 /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F1A04C26FAF235FD6B0AF30E7ACD5DD5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + F1D845E22D5B8FC6AFC3C2E41DA1B6DF /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D881DD0CA33CD1E3EFE0136A615F1F65 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2AD91050B1FE3C8BC78567F1FDE3ED5 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A687EF38913970F24032AD57F99A10 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2C9F9038FBEFD951516694AE873A2B9 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = 7020F5FD7E08D02DFB263422BBB5EBCE /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3263D294D688533EB974E37C61F1E24 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 790F5BF1A1AB8405DB8FFB5F37D2BA39 /* MJExtensionConst.m */; }; + F3AECEF6D3BB919B3E7392942E1BC58B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 464A4EBDD6079658F375B8BE36A1D224 /* MJRefreshBackFooter.m */; }; + F3DA1005917E252B306712DAAA287FB0 /* UIViewController+PanModalDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 99AE60DF16539817ECDA464B8C0BF588 /* UIViewController+PanModalDefault.m */; }; + F3F4A6309BD95DFAA4DCC60A4E07C515 /* UITableView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 952745F4CCA16F79D572D39513608DA3 /* UITableView+LookinServer.m */; }; + F47EBDD360E642A0499A767BC7C17B4B /* HWPanIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B685B44F3C08EAECD172ACBC891B15 /* HWPanIndicatorView.m */; }; + F49CB22863CCFEC7817D259F27F91C57 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D17878F639EAB83DF1DC258E92939A6 /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F53BE4449AE5896F76325E4DCB6D0B13 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A43BA63699738F29455B4DD47483A5A /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F600BB873FD4764BAA9E02826F804486 /* FLAnimatedImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 058E0E64069CAF10E824026FF1D35605 /* FLAnimatedImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F60F90EAF35CFF40DF1C33557965787D /* MJRefreshStateTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A4EE28576256BE0B9CC54DFE985D554 /* MJRefreshStateTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F62B0711DA506CCB3DF79F65134566C7 /* Lookin_PTPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B7824533FC35957318C6FAF5ECA425E7 /* Lookin_PTPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F68889CD481716EE5D6B75EBD8FD53A6 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E0853FDC6EA439AD5D1AA134CD117B /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A0D6EA1B5DC3FE04DC4A1B0A914121 /* UIView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F258393A5F61F1A41DB0116A1995DB1 /* UIView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A2DEEA8E8B92D365AFDDBD5E8C1218 /* NSObject+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 20B8751D1FBB7C171FFFD79AABA096D9 /* NSObject+Lookin.m */; }; + F6A34F74BE7FE816114D7F3902296AF2 /* HWVisualEffectView.m in Sources */ = {isa = PBXBuildFile; fileRef = B466F948757742572AAEA4DF218BD987 /* HWVisualEffectView.m */; }; + F6D1C960368EB1E067ABD0BFF707FC56 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = E3ED3F5FB825F25AD8EB19CE0AC86B77 /* MASConstraintMaker.m */; }; + F7623E7C314AA5010D8D0BD6ED4AAAD4 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBA537DA26B64728CA51AC60E7A2FB3 /* AFImageDownloader.m */; }; + F8616FAFEE1124368CB96473CE20CDB4 /* LookinAttrIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BB291C0467B8A072E8C1CE10A701CA2 /* LookinAttrIdentifiers.m */; }; + F8F1B1196CAA5114BA9A95AA7E6D6AEB /* UIBlurEffect+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 124DF602FD739DD4C0E67F1917B46C09 /* UIBlurEffect+LookinServer.m */; }; + F9789D86D3279D71B398B550F27C3EFF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = C93CA5E20848AEFCB61E12D54CCA6ADF /* AFSecurityPolicy.m */; }; + FA3021DED76B9B182CC9195A60EB1209 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 10F69E78EAD8ECCB195A68616180404D /* NSBezierPath+SDRoundedCorners.m */; }; + FA6DA93357E2E9E9AADDFB3E39DEB6C2 /* NSObject+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EDACBF252622C1F7696222AA5BA40 /* NSObject+LookinServer.m */; }; + FB6E014B34F33B89E5060DA1F00168A5 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */; }; + FC32143CA2A916F032F2B569313315AA /* HWPanContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A148033E0AD112C21B19DC7D700C287 /* HWPanContainerView.m */; }; + FCDEC6A53CF5517E1AF5B331FD65F6D9 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A9880E3C5631DD575998A17C1EAAFFE /* SDImageCacheConfig.m */; }; + FCEE5BD645E95FF55468C4AB6D17CFDA /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 64FC3145438669B612415058A5D1C68B /* UIImageView+HighlightedWebCache.m */; }; + FD3AF10F8723DABEE406D25592B5F562 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A049DB74A9BEE7FA98C208416BBDD60 /* FLAnimatedImageView.m */; }; + FDACBA49610EA6F39CABB7FE44B137D1 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 96090B4F5197A5FD0B3684BBF9CE7D69 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FDD4C4D4F03502D5CB0B8763009A0948 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */; }; + FE07C069C2E3543002CEB5D751ABA9AC /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D4E5D74AB2CB580743562EDDD74A4B /* AFNetworkReachabilityManager.m */; }; + FEA8BA4F82CCBD1D28DCC7EF39FB4096 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 24B77E5B834F553CB4EB67CF38D1658B /* SDImageCacheDefine.m */; }; + FEE3D901B4A4638F9E00935144E982B3 /* HWPanModalPresentableHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 50AB72625252A5E15E31076E002BFCDA /* HWPanModalPresentableHandler.m */; }; + FEE883575278D5BE8F185437AB5DB3BB /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 168B21798FA2C6BC6767C95E619EFE04 /* MJRefreshGifHeader.m */; }; + FF106518AFECA24E74B1D649E4F9AC70 /* HWPanIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 99D142261C81911E0D8BD4684EC87BB5 /* HWPanIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FFC6D50089FA32FD7AAF25747E56EA60 /* LKS_CustomAttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AD7CA2EC862D2306679B92B10C85B4D /* LKS_CustomAttrGroupsMaker.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 17A6BBBD906DDCB7334A02B16B07B4DB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; - remoteInfo = MJExtension; - }; - 17AC289E8A24B84DB147B7977008DB53 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; - }; - 1CC061C6A0CA52E13056E44543CDE4BD /* PBXContainerItemProxy */ = { + 16A3AE428B6730C115D886BB1D093565 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; remoteInfo = Masonry; }; - 551922F754B651AFCAAB56605458A1A4 /* PBXContainerItemProxy */ = { + 2A844DF7EB83D82BDFB8EBD48D398A77 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; + remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; + remoteInfo = DZNEmptyDataSet; }; - 6610EBAD645971628D6E656F2A7FB551 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; - remoteInfo = MJRefresh; - }; - 7D22DC5F48A287865357EE41131C6668 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; - remoteInfo = LookinServer; - }; - 8C2E663FC9840B2B7BABEF079AD58862 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 94CFBA7D633ECA58DF85C327B035E6A3; - remoteInfo = "SDWebImage-SDWebImage"; - }; - A311284721E0C3165FAA791C3EE6961E /* PBXContainerItemProxy */ = { + 3D4D160BA53FFAEBFA15602EF206AF18 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; remoteInfo = MBProgressHUD; }; - AD74DB90134D3DB33FAC2C873C0764E9 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; - remoteInfo = MJExtension; - }; - B0F47C29852712CF2F2C1E658ECD1809 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; - remoteInfo = DZNEmptyDataSet; - }; - BBBA8C59A31486B3AE2F16C6A4AAAB66 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B26054DF1DEA11585A231AF6D1D80D5E; - remoteInfo = "MJRefresh-MJRefresh.Privacy"; - }; - C85024A705A5032AA3907BF36C187CEA /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4A68CFD979D413A619DF631BB121D98F; - remoteInfo = Bugly; - }; - D8B3BBDA3C526A079F33D20BFE81FDA0 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; - remoteInfo = DZNEmptyDataSet; - }; - F295793354A8BF65125212DAE1C81DF5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; - remoteInfo = SDWebImage; - }; - F34B1D580EA71604D4CC7C4C5807E366 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; - }; - F4000FEC7CADA56B75E5CC31E64EC891 /* PBXContainerItemProxy */ = { + 3DADDD414405E1608F5E53FA546F0683 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = B32AF3F43989CBA171BB1FB3957A4509; remoteInfo = "MJExtension-MJExtension"; }; - F9524D7CD6D352CCF289944EBCA3B3FB /* PBXContainerItemProxy */ = { + 48A3998D02E8C6CE503B67AEF4201A9E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; remoteInfo = MBProgressHUD; }; + 53436DF6632E3EA7570FFCAF0043D337 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4A8E8992707D01510894596DB9BCCA00; + remoteInfo = FLAnimatedImage; + }; + 637C06B2D3FCA697F91C75E07050A564 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B26054DF1DEA11585A231AF6D1D80D5E; + remoteInfo = "MJRefresh-MJRefresh.Privacy"; + }; + 8A15E01E24CFF0D6326188BC70ED8D54 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; + remoteInfo = SDWebImage; + }; + 9C7907B511C5E05A0898367B21C98132 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4A68CFD979D413A619DF631BB121D98F; + remoteInfo = Bugly; + }; + A6418FEFA13B0CC9A6A43072F418FF50 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 31DCABABCA873FBA7A92FEB47D71ED8E; + remoteInfo = HWPanModal; + }; + AB5F78A9F2AF013979DDC5609581D438 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; + remoteInfo = LookinServer; + }; + AB7581572FF4E1AD0E3EAF6948CD6FDB /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; + remoteInfo = DZNEmptyDataSet; + }; + B3DE694415E78DB7C365C1C1AFA7DAC6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; + remoteInfo = MJExtension; + }; + B6CB86E5B6D367721C43659AE5015027 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; + }; + B7E9478012E785A9A105D255A83783E4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + DE04810BEAD33737F5D80FEF4299D57D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 94CFBA7D633ECA58DF85C327B035E6A3; + remoteInfo = "SDWebImage-SDWebImage"; + }; + E706D6D60256E57E5FB469EB7708C200 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + EE2CA5E8D8591CAB500C01C15555AC6F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; + remoteInfo = MJExtension; + }; + F862CA9AADBD981FC5FBB9541050A76D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; + remoteInfo = MJRefresh; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0075507DF323DF510CA1115DE2B33C98 /* LKS_MultiplatformAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_MultiplatformAdapter.h; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.h; sourceTree = ""; }; - 00E5C0F46BD576A82A38738DB780C7D9 /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; - 01E24F0E64AEC0E54DBDB063CE89097A /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; - 0236FAD4E41045C8223B36E40BDEDF2C /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; - 0301A3F865A2919DCD43EE9D0DC363A5 /* LookinAutoLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAutoLayoutConstraint.h; path = Src/Main/Shared/LookinAutoLayoutConstraint.h; sourceTree = ""; }; - 036896A95CE28AB066292A03BAD2BFFA /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; - 0370FDB753906B18C1B9AFB8BE7D213C /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; - 037A3F50C10BD2A3B9D2C3743608A737 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; - 0426BF3118E242E4EA8BB1145A2A6F60 /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; - 04549DFA210F3D3C27211535994000B3 /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; - 049541DC9203D75878CAF900D458CC34 /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; - 05D83C1EC3DD8D27EE1C07CFDE18D72E /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; - 06660480BC631DCE06583A85704487AB /* LookinAttributeModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributeModification.h; path = Src/Main/Shared/LookinAttributeModification.h; sourceTree = ""; }; - 0696D0619ACA95D8E9E7EFDC0CD595D2 /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; - 07F0D69559BBD9895C4D0BD66F33AC55 /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; - 0AC3ECEAAABFC0FEDCE3E1B814F1A7E5 /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJRefresh.modulemap; sourceTree = ""; }; - 0AF433E9D2C6355E77FFBE3AC3CB5B3A /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; + 005101F7C4901700207336B75CF59476 /* LKS_Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_Helper.h; path = Src/Main/Server/Others/LKS_Helper.h; sourceTree = ""; }; + 0148667426C0D159DF2496AD2E147C13 /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; + 015AD0623578CAD25A9859FBC263FF7D /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; + 018E89B3130206293240B03D8960F18B /* LookinIvarTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinIvarTrace.h; path = Src/Base/LookinIvarTrace.h; sourceTree = ""; }; + 01DAF6FB6694A07703202991DBBEA497 /* UIView+HW_Frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+HW_Frame.h"; path = "Sources/Category/UIView+HW_Frame.h"; sourceTree = ""; }; + 02BD81280735E95FA2620927041EAC86 /* LKS_Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_Helper.m; path = Src/Main/Server/Others/LKS_Helper.m; sourceTree = ""; }; + 0371541F4560714A85B237456DEF997B /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; + 041476A9D72BD942940B39097904435C /* UIViewController+PanModalPresenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalPresenter.m"; path = "Sources/Presenter/UIViewController+PanModalPresenter.m"; sourceTree = ""; }; + 04473A3692FBECA15A32A1C477843F8E /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; + 054A388C6D56EE31CFBD5161B49B08DF /* LKS_CustomAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.m; sourceTree = ""; }; + 058E0E64069CAF10E824026FF1D35605 /* FLAnimatedImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-umbrella.h"; sourceTree = ""; }; + 0638217979CCFF20B7C6FAFF407CC6B6 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; sourceTree = ""; }; + 06BB1170E7630AD9AB926EE90BE5F730 /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; + 0702AAD171A65EE6A8D28E93A9B62802 /* LKS_HierarchyDetailsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDetailsHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.m; sourceTree = ""; }; + 070F9E5A12CC270070B53AA6E4DE380D /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; + 0746C9ECCE5759599C9E24C14B8E12DA /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; + 07A233E548536FE36D9750CB427DC711 /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; + 07B9FDD5A40301D416EBF36F170E33FC /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; + 07FE3729A86CE6B36944299B52BB3BBE /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; + 08732566CBDE3EB293493BCD102835A7 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; + 08CEA16AAD05A8A9CB6FB2E2306DD5A9 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SDWebImage-SDWebImage-Info.plist"; sourceTree = ""; }; + 099894DB44BB1249366F618379B45D6F /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; + 0A13200BEAF87753F31130AD74C5CE5B /* LKS_AttrModificationPatchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrModificationPatchHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.m; sourceTree = ""; }; + 0A148033E0AD112C21B19DC7D700C287 /* HWPanContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanContainerView.m; path = Sources/View/HWPanContainerView.m; sourceTree = ""; }; + 0A7EA19F3D14069449EA7F1B04E206C1 /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; + 0A9880E3C5631DD575998A17C1EAAFFE /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; + 0AB04D07CCC6BB644C691A1B75189B56 /* Lookin_PTUSBHub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTUSBHub.h; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.h; sourceTree = ""; }; + 0AD7CA2EC862D2306679B92B10C85B4D /* LKS_CustomAttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.m; sourceTree = ""; }; + 0B1027E2DC84E88E6F5E35A21EB804D5 /* MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJExtension-Info.plist"; sourceTree = ""; }; 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-CustomKeyboard"; path = Pods_CustomKeyboard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BDAABEB54032920AAEBA43908724F60 /* ResourceBundle-MJExtension-MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJExtension-MJExtension-Info.plist"; sourceTree = ""; }; - 0BF41BBB1EBC1FE4F91BE320D947ED64 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; - 0C31E11F6B40D55EB650013FAC1B59C0 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; + 0B52C0333B4CADD3A0F9EB411374E73E /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; + 0BB10D586B41516BBFB3A82A983FB648 /* DZNEmptyDataSet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DZNEmptyDataSet-Info.plist"; sourceTree = ""; }; + 0BD99371527F7C150CF7C859DEE75697 /* Peertalk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Peertalk.h; path = Src/Main/Shared/Peertalk/Peertalk.h; sourceTree = ""; }; + 0C180A1C6E6C287310FABCB81CBEEB07 /* HWPanModalPresentable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentable.h; path = Sources/Presentable/HWPanModalPresentable.h; sourceTree = ""; }; 0C4AE62ED97252893F28F670D61AFB24 /* Pods-keyBoard-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-keyBoard-Info.plist"; sourceTree = ""; }; - 0C5C306F08907FB9E1301EA07220C6EB /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; - 0CE9804DA47B24CF925450C7924EF999 /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Masonry.modulemap; sourceTree = ""; }; - 0D18C326A9F4C285AD294832344E63FF /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CustomKeyboard.debug.xcconfig"; sourceTree = ""; }; - 0D703CF356A8E2B3B3665722366223A5 /* Lookin_PTPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTPrivate.h; path = Src/Main/Shared/Peertalk/Lookin_PTPrivate.h; sourceTree = ""; }; - 0E24EFDE111F674B782A0DB6E26DA6D2 /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; 0E732C0D026ACBC7DBD039DC3BDC2BCE /* Pods-keyBoard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-keyBoard.modulemap"; sourceTree = ""; }; - 0F0234E8EBBDCA694F549267CF8444C2 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; - 0FD3FF7FA5E997D3DDAB5C272F8734A6 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; - 107E924936A407875330C174B34260AC /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; - 1110127348EF0DD2FF03A68A13D86895 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; - 120B89B8756AC54266917A34CDCADBB2 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; - 12119FD9C09B77E5C8A003238C89E88A /* UIView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LookinServer.h"; path = "Src/Main/Server/Category/UIView+LookinServer.h"; sourceTree = ""; }; - 12F12865FFC70E396EDFB92C4A7F13D7 /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; - 131863AC3A27979CE5BF1B35EB9C1CED /* SDImageFramePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFramePool.m; path = SDWebImage/Private/SDImageFramePool.m; sourceTree = ""; }; - 13D448A155C957ECCF95DC54FBE28569 /* SDCallbackQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDCallbackQueue.m; path = SDWebImage/Core/SDCallbackQueue.m; sourceTree = ""; }; - 148FDB67C55B5854E979447E82AFD54E /* SDImageFramePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFramePool.h; path = SDWebImage/Private/SDImageFramePool.h; sourceTree = ""; }; - 1550F0B5EA5360BFA35606256AB6EF51 /* Lookin_PTProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTProtocol.h; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.h; sourceTree = ""; }; - 15D08EB14955AB2B841A5E9E16D8D4AE /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; - 15E423D2DE3EB3895273EDB5BC21FDE9 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; - 15EEB72FE94B15511A9B077601BFC002 /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; - 16C85770D72E9770C476992A31B3655F /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; - 17422A39378973466DCE06FB6ADA832E /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; - 189A631A2ED6331F0A226846AD73B1E4 /* LookinEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinEventHandler.m; path = Src/Main/Shared/LookinEventHandler.m; sourceTree = ""; }; - 18DB01964CBE026F2E6511875E1A98E2 /* Bugly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.debug.xcconfig; sourceTree = ""; }; - 1948F2AFCD4F7087CA46FB78E5A05ABD /* LookinAttributesGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesGroup.h; path = Src/Main/Shared/LookinAttributesGroup.h; sourceTree = ""; }; - 19CD19C5B1822DA77E4C7C9F454FD5D5 /* Image+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Image+Lookin.m"; path = "Src/Main/Shared/Category/Image+Lookin.m"; sourceTree = ""; }; - 19F3928D9276C0125AA1EBDB31A470E1 /* SDCallbackQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDCallbackQueue.h; path = SDWebImage/Core/SDCallbackQueue.h; sourceTree = ""; }; - 1A62C9B59CFA9D74EE95F526BE485EC8 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; - 1C3AD08A39781246EBAC23F5B8A9BDD3 /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; - 1C5B4FB13625B33C4ABB17DDEF05C782 /* LookinCustomDisplayItemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomDisplayItemInfo.m; path = Src/Main/Shared/LookinCustomDisplayItemInfo.m; sourceTree = ""; }; - 1CA256AA8704AE9F135214714BAFF153 /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; - 1D4236904A41DC2950754F5BE583BD4A /* UIColor+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+LookinServer.m"; path = "Src/Main/Server/Category/UIColor+LookinServer.m"; sourceTree = ""; }; - 1D74E044AA7CFE331B6C3B53D98B1022 /* LKS_CustomAttrSetterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrSetterManager.m; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.m; sourceTree = ""; }; + 0EC3BDE6337E9995ACF80D1DE71F506A /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; + 0EDF4F1BB23D4262A7612DC313B361ED /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; + 0F3CFDDCD2AEFF399B69D429BD035229 /* Color+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Color+Lookin.m"; path = "Src/Main/Shared/Category/Color+Lookin.m"; sourceTree = ""; }; + 0F498FCFBEA5766BBF0C258824B66B52 /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; + 105C0E572020BAFC2F3F07702779A020 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; + 10BE44D639650FFA77A358DCD2603F89 /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; + 10F69E78EAD8ECCB195A68616180404D /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; + 110654C4ECBD914896546F497CDC625F /* UIView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LookinServer.m"; path = "Src/Main/Server/Category/UIView+LookinServer.m"; sourceTree = ""; }; + 115D9A38E828733E2521BA1DFE025D50 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; + 121C303DCF5199C717010EF66462BD05 /* HWPanModalContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContentView.m; path = Sources/View/PanModal/HWPanModalContentView.m; sourceTree = ""; }; + 1225A7D188B98E6C6CFDCC9B804BAE8D /* LookinHierarchyFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyFile.m; path = Src/Main/Shared/LookinHierarchyFile.m; sourceTree = ""; }; + 124DF602FD739DD4C0E67F1917B46C09 /* UIBlurEffect+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBlurEffect+LookinServer.m"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.m"; sourceTree = ""; }; + 140C8B875FF37FDF9A95CB04C9916AF9 /* UICollectionViewLayout+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+MJRefresh.m"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.m"; sourceTree = ""; }; + 14121BAD9B9FA92863D1125B50D54DF4 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; + 144086F1366328F4F927C4F459E44619 /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; + 145C211EEEAD63D4C0AE8467C821D14F /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; + 1527F49078C26F2BAB6E17A11F0AC9A9 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; + 163946A4F251CC5F8129585DD75C0870 /* HWPanModalPresentationUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationUpdateProtocol.h; path = Sources/Presentable/HWPanModalPresentationUpdateProtocol.h; sourceTree = ""; }; + 164010F68ED1F6E6A182B7EA3554A43D /* UIImageView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+LookinServer.m"; path = "Src/Main/Server/Category/UIImageView+LookinServer.m"; sourceTree = ""; }; + 1651052462F8B04B5877450A1292E16B /* LookinHierarchyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyInfo.m; path = Src/Main/Shared/LookinHierarchyInfo.m; sourceTree = ""; }; + 1657973127018C3379A034BF182EF686 /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; + 168B21798FA2C6BC6767C95E619EFE04 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; + 1724C6EB60601A5723C7A0972AA8DB97 /* LKS_ExportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ExportManager.m; path = Src/Main/Server/Others/LKS_ExportManager.m; sourceTree = ""; }; + 172CDF64113E561EE805F3B18B58DE98 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/include/FLAnimatedImage.h; sourceTree = ""; }; + 185D7C79C92B324E08CCA23E8410B9BB /* LookinDashboardBlueprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDashboardBlueprint.h; path = Src/Main/Shared/LookinDashboardBlueprint.h; sourceTree = ""; }; + 18F1A2756FCB9AE94DFF016BE720ED41 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; + 198BCFF4D9AF651D5B86774921D624E2 /* CALayer+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+LookinServer.h"; path = "Src/Main/Server/Category/CALayer+LookinServer.h"; sourceTree = ""; }; + 19C0CBEB4A5292C9975C224EC1464049 /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; + 1A3FD8D5295BC5DADF9B48122C08A03D /* LKSConfigManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKSConfigManager.m; path = Src/Main/Server/Others/LKSConfigManager.m; sourceTree = ""; }; + 1AF87BA87F8CBB4575826A086C4B0871 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; + 1B289F862BC27A4B0060A4CFBD40E1E1 /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; + 1BA698A47BE0BCA54FA1B10EF6CD2196 /* HWPanModalPresentationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationDelegate.h; path = Sources/Delegate/HWPanModalPresentationDelegate.h; sourceTree = ""; }; + 1BF03DA63A4A2F42BE9BA070226F0116 /* HWPanModalAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalAnimator.h; path = Sources/Animator/HWPanModalAnimator.h; sourceTree = ""; }; + 1BF7200D05201E490C12951549D2240D /* LKS_CustomDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.m; sourceTree = ""; }; + 1D640B445F4284F72C568FEB8607AA99 /* UITextView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+LookinServer.m"; path = "Src/Main/Server/Category/UITextView+LookinServer.m"; sourceTree = ""; }; 1D774D8146EBC82B4A77204A273761B8 /* Pods-CustomKeyboard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CustomKeyboard.release.xcconfig"; sourceTree = ""; }; - 1E12075C58652877783AAD26D8A6ED78 /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; - 1F43D293502C6A280429EF2DEFA6C0E6 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; - 1FC42F03931384EE2605E5C1FF575608 /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; + 1D7BBE0F835610A258CF510E00DC847F /* HWPanModalShadow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalShadow.h; path = Sources/View/HWPanModalShadow.h; sourceTree = ""; }; + 1E9B018C9C3042CA28F92204D9CA3368 /* LookinCodingValueType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCodingValueType.h; path = Src/Main/Shared/LookinCodingValueType.h; sourceTree = ""; }; 1FFED36A657123030ABB700256D73F15 /* Masonry */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Masonry; path = Masonry.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2039E8AAF8AAC77E31E425C61871263D /* Image+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Image+Lookin.h"; path = "Src/Main/Shared/Category/Image+Lookin.h"; sourceTree = ""; }; - 2065E7BBA3909607E34531E7D59623FF /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = ""; }; - 20C240076DD8D1DC14E751DAFAE98662 /* DZNEmptyDataSet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DZNEmptyDataSet-Info.plist"; sourceTree = ""; }; - 21628153BCD0325102EB502FB5AEDF0F /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; - 219886C4AF0E20C3CD4D4061CAAE8767 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; - 220B8AB16FBD2158AB55D35E9376D13A /* UIBlurEffect+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBlurEffect+LookinServer.h"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.h"; sourceTree = ""; }; - 2254BB0E1CAB331C712E8819CE1CEBA9 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; - 23D7D1DC3E63FD87D87BE6C2EB198360 /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; - 241065D9A03A30BC61C328A01C40E560 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; - 241D729CBB4E30C3E09474F7F34CB9FA /* UIImage+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+LookinServer.h"; path = "Src/Main/Server/Category/UIImage+LookinServer.h"; sourceTree = ""; }; - 245FCAB926AF197B8F4E931DD8477D4A /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; - 24998A1052F45827E4FFAFAF7FA1542E /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; - 25391D44BC144DD932559C9E9069347F /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + 20B8751D1FBB7C171FFFD79AABA096D9 /* NSObject+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Lookin.m"; path = "Src/Main/Shared/Category/NSObject+Lookin.m"; sourceTree = ""; }; + 20E6DD81C23D61767D03656C92BA491A /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; + 217542724C26BE53C452010CBD9B0823 /* LookinAttributesGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesGroup.h; path = Src/Main/Shared/LookinAttributesGroup.h; sourceTree = ""; }; + 221F590A160BC28ED1F8AD774E3E9DE5 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; + 2259A09BA5C4F4B9CD4809BBD03235D0 /* Lookin_PTUSBHub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTUSBHub.m; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.m; sourceTree = ""; }; + 234CA385D849480382A37D00B41DE872 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; + 24AF188A90B7DB8463BE14A968AB6A8F /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; + 24B77E5B834F553CB4EB67CF38D1658B /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LookinServer; path = LookinServer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2567115C715DFD2B942FF9386C729778 /* UIViewController+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LookinServer.h"; path = "Src/Main/Server/Category/UIViewController+LookinServer.h"; sourceTree = ""; }; - 25AADAD73C32FC4E150A4A19780980C4 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; - 2625A6F485FAAFFDD766C135FDF8F796 /* DZNEmptyDataSet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DZNEmptyDataSet.modulemap; sourceTree = ""; }; - 26476CAEC54A4CE04264494F816DFD2C /* CALayer+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+LookinServer.h"; path = "Src/Main/Server/Category/CALayer+LookinServer.h"; sourceTree = ""; }; - 26E9B5584E3E3AA9E7AF8978192DF06B /* DZNEmptyDataSet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-prefix.pch"; sourceTree = ""; }; - 2731C084E8B9BB6A54629DDFEBD14EA1 /* UIVisualEffectView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIVisualEffectView+LookinServer.m"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.m"; sourceTree = ""; }; + 2676F11A3670B2480D40E37CECD806F7 /* LKS_CustomAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.h; sourceTree = ""; }; + 269EFD14AB222FEFEC686C63F58F74FF /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; + 26F9036CA269CB4FF5BD96290F567C79 /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; + 27CFD14754D1E3BFCBFECB5DD71A5359 /* LookinServerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServerDefines.h; path = Src/Main/Server/Others/LookinServerDefines.h; sourceTree = ""; }; + 27D20C78C9DF6C2E5537332D5CBE55ED /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; 281686F4C9CC2C718B45E1DEB7E63948 /* Pods-CustomKeyboard-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CustomKeyboard-acknowledgements.markdown"; sourceTree = ""; }; - 290A1387E4C301A25D8613FBB0DCEC6A /* LookinDashboardBlueprint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDashboardBlueprint.m; path = Src/Main/Shared/LookinDashboardBlueprint.m; sourceTree = ""; }; - 2940A878AE956B2190BA5A68D63DC5AD /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; - 299CDB086FE0568EE14EAB79D7B74437 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; - 2A5A249D6ED704F9FEE1FFBC9B61426F /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; - 2A67F3F63FB3C05544B8F66F7ED89E74 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; - 2A7BA44CD5FDF42B32263B5F4259A024 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; - 2AEE1DAEE2CD1BAB6DBCBC50916263A4 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; + 2867F87918EED9920AE77DAD4BD451AB /* UICollectionViewLayout+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+MJRefresh.h"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.h"; sourceTree = ""; }; + 294EA02B3DDDD7B2B6A77AAC9B06FAE2 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; + 29982B3E12912C7BE794585B2B7F77CC /* HWPanModalShadow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalShadow.m; path = Sources/View/HWPanModalShadow.m; sourceTree = ""; }; + 29C84A9BCB275444D2358F473D9B5160 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; + 2A121A2B21BED90763E2301622A040E4 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; + 2A5FE34535D0AF62304F84F18B3E5293 /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MJExtension; path = MJExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2BA061B3651D9243CBD96694626B95C1 /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; - 2CC603030F93055E51FF99944B356CB6 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; - 2CFE5CE900A783BD5709EEF033BA8475 /* LookinServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LookinServer-Info.plist"; sourceTree = ""; }; - 2D069519EE909290F7C452231691CA88 /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; - 2D3B8DD288273B0C3AFDD2F366BB894B /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; - 2D93B5DFF8656FC20174F5CDCB325540 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; - 2DAD93B79D27664FE05E862A2C992A45 /* LookinServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.release.xcconfig; sourceTree = ""; }; - 2DFD54923DA02EA135A1A1E2F56CBDE1 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; - 2EEEDD3CF0530751FD80AFB402DAB153 /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; - 2F154763B55BC95D1F3E0C64970B8D48 /* LookinCustomAttrModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomAttrModification.h; path = Src/Main/Shared/LookinCustomAttrModification.h; sourceTree = ""; }; - 2F6981AC25702BE9417B498391042242 /* LookinAppInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAppInfo.h; path = Src/Main/Shared/LookinAppInfo.h; sourceTree = ""; }; - 2FD6A0DEDE4E0A17B8A614C8D15158DD /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; - 2FE87671299E95720DB52DD3375B566E /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; - 30361FA11468C74A598363E37D30E56C /* LKS_ObjectRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ObjectRegistry.m; path = Src/Main/Server/Others/LKS_ObjectRegistry.m; sourceTree = ""; }; - 30A10CFE082F8338A031688B47CDED17 /* LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServer.h; path = Src/Main/Server/LookinServer.h; sourceTree = ""; }; - 319E8C485C3E5DB2BFBF15AA61E5ABA9 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - 31C3AFC445B760812F9E6924ABB9CC15 /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; - 31C69A4489CC7299F114CDEAFBE0DE3C /* LKS_MultiplatformAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_MultiplatformAdapter.m; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.m; sourceTree = ""; }; - 31E7ED25B098BFBF30E180BFC0E2174B /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; - 32556CF656ADFF88DE99F135C7BE2EB7 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; - 336D23D3AF9B2B8FD356A62D7B4A2A05 /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; - 33E548EC20D55A1581EF030D8F590720 /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; - 341D877992B274AC6FD93AB03542E561 /* Lookin_PTChannel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTChannel.h; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.h; sourceTree = ""; }; - 34206822AA40B77DF3E1B3B5D326158F /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; - 34294BB6B51E74AFE5298D85D957E2F6 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; - 35182E600B80DDDFBA4A4B90FAA71EFD /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; - 352F463EFB3454F98E285A844376EC28 /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; - 35618C07738616EC64E35AB9084E01C6 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + 2B2EB2A264CA58715D67B113A8AEC381 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; + 2BC84A9FA2E5E086A3FCA8C9200491EA /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; + 2C10DDC7CAD74F9FB6286DBA8F45E0A9 /* LKS_InbuiltAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_InbuiltAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.h; sourceTree = ""; }; + 2C249B920F34D0D69C69CA43351E52EE /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; + 2CE706B82C8002B7608E049B83BF0A12 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; + 2D17878F639EAB83DF1DC258E92939A6 /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; + 2D286FE677CDEE60930A656882947FD7 /* LookinAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttribute.h; path = Src/Main/Shared/LookinAttribute.h; sourceTree = ""; }; + 2DB2D3B9B39A830458FD28DCEC306D8E /* LKS_MultiplatformAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_MultiplatformAdapter.m; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.m; sourceTree = ""; }; + 2DC2990A90A71D269C5024BA61CF0B19 /* Lookin_PTChannel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTChannel.m; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.m; sourceTree = ""; }; + 2E5ECA77AE05E0692E3C292A2212CC73 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; + 2E8FF2BF379FE508F46CAD249E158559 /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; + 2ED81178D3D980B0132BE071541BDB51 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; + 2ED817696CA9C5336FFC07568FC62502 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; + 2FE4E0AF6CE972936C63A285E8C573B7 /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; + 3011D5BF791250C05C8D7C5BD12BC772 /* HWPanModal.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.release.xcconfig; sourceTree = ""; }; + 30B685B44F3C08EAECD172ACBC891B15 /* HWPanIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanIndicatorView.m; path = Sources/View/HWPanIndicatorView.m; sourceTree = ""; }; + 30CEF95FB390697B4C1ABB26A12E9B7E /* UIViewController+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LookinServer.m"; path = "Src/Main/Server/Category/UIViewController+LookinServer.m"; sourceTree = ""; }; + 316C4F93113E10BD19E7CE1F7E80F60B /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; + 317BBB3797CCCBC8D9201446D3C35C11 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; + 318AFD96872C2F4B15208D88E9CD4764 /* Lookin_PTChannel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTChannel.h; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.h; sourceTree = ""; }; + 3227970589E62371501C4D8C28DD4B1C /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; + 32635BBD805EC978CC3BB3BC4CF3B7E3 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; + 32809A6CFD5412906D97C8C7FCB8E331 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; + 32C400A3F91177BBA34B1046DAFF260F /* LKS_TraceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_TraceManager.m; path = Src/Main/Server/Others/LKS_TraceManager.m; sourceTree = ""; }; + 3353CA39B2D60213971EFFABDAE02625 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; + 33A93A838A9C0189A366EF1F2D8FC9A5 /* UIView+HW_Frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+HW_Frame.m"; path = "Sources/Category/UIView+HW_Frame.m"; sourceTree = ""; }; + 33B1E0CA964F32623BB6975D9AC53C26 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; + 3421F5C836952B09AC7AF130FB3D09FC /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-keyBoard.debug.xcconfig"; sourceTree = ""; }; - 364231170128CA2CD3F9589FE34C2FAE /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; - 371FD070C447028E0DC76F07BB442FC4 /* LKS_Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_Helper.m; path = Src/Main/Server/Others/LKS_Helper.m; sourceTree = ""; }; - 37559870F51779045F8C7A57C1303E2D /* LKS_InbuiltAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_InbuiltAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.m; sourceTree = ""; }; - 383AEE356898B114D8DD079C51566FF2 /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; - 3964617E5C241BE3E12D8F1D88607841 /* 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; }; - 3996B697C00897DAFE1DFD73DAA4E114 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; - 3B6B095661E36C4E8A066559D4D5AF33 /* LookinConnectionResponseAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionResponseAttachment.m; path = Src/Main/Shared/LookinConnectionResponseAttachment.m; sourceTree = ""; }; - 3BBF905BC343AA0D52B6BC0B1E5B22E9 /* CALayer+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Lookin.m"; path = "Src/Main/Shared/Category/CALayer+Lookin.m"; sourceTree = ""; }; - 3BF9DE6E63B2A31CC1EADA84D3E42E7A /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; - 3C0293D25B82D4CCF17D52B025BDDA03 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; - 3CA1F0AA7C906C09D35E1B3B781EB6E0 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; + 35BFDB837A13ECB08D0555099C8AE732 /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; + 35F4A1DCA414FF4A5C14BDB494A4BCE4 /* HWPanModalIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalIndicatorProtocol.h; path = Sources/View/HWPanModalIndicatorProtocol.h; sourceTree = ""; }; + 3759EC9B1F622ABF5524C464D429D774 /* LookinEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinEventHandler.h; path = Src/Main/Shared/LookinEventHandler.h; sourceTree = ""; }; + 380B11CB6389CFA1B7904A11C79EDA18 /* MJExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.release.xcconfig; sourceTree = ""; }; + 3828D32AF578BCBF238F4F3C9F25FE9D /* LookinAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttribute.m; path = Src/Main/Shared/LookinAttribute.m; sourceTree = ""; }; + 38D9966C1D90F995E284375B1712E8FB /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; + 38DC37E61EA03D85A44EDCFC75EB6238 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; + 397ABB0739D14AE30A56100FCE880DEF /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; + 3A4EE28576256BE0B9CC54DFE985D554 /* MJRefreshStateTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h; sourceTree = ""; }; + 3A8B099A5081203885BD7E80C8282B95 /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; + 3B28468BF62D31A9D25D492AAF6D25B0 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; + 3B8FA55B1E865165B6CFF4ADBBDE19C4 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + 3C462ACDAC6DCEE65350D4BC510A2E99 /* KeyValueObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KeyValueObserver.h; path = Sources/KVO/KeyValueObserver.h; sourceTree = ""; }; 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CustomKeyboard-dummy.m"; sourceTree = ""; }; - 3CF065C3DEDD146A59230103D73E1A55 /* LookinServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LookinServer.modulemap; sourceTree = ""; }; - 3D64DD7369F8D81EDC16FC3539F46D73 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; - 3D6CF72BA8B7618D0238AD641B57FE35 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; - 3D7966DEA2CA0101B9FC2C01A1A2909B /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; - 3D891833337A0E2AFA0DBB31899C747F /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; - 3DD65B80E7AA07416BB8F502F3C3A438 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; - 3DDB2F652BC38BC05396DCC9F34040CD /* MJRefreshStateTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h; sourceTree = ""; }; - 3E2A55F2F78E11DEDCF2FA119B3E1912 /* MJExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.release.xcconfig; sourceTree = ""; }; - 3E2B86406A2B5383183DAE9ABBBB3893 /* LKS_HierarchyDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.m; sourceTree = ""; }; - 3E5219BC7E7BF5C405E48CC237D2EDC2 /* NSSet+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSSet+Lookin.m"; path = "Src/Main/Shared/Category/NSSet+Lookin.m"; sourceTree = ""; }; - 3ED91326A0371ACE08A353BC67F60F6B /* NSString+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Lookin.m"; path = "Src/Main/Shared/Category/NSString+Lookin.m"; sourceTree = ""; }; - 3F39E9FDE611BCC2A514A77F1EB63E8B /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; - 3F61B84FD6B8249C85FCBF56257E34C6 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; - 400DE9B9180EAE02FE3ADA6DB9EFD64F /* LookinServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-prefix.pch"; sourceTree = ""; }; - 40B6DD67F49B0103232B5D6B727392FA /* LookinAttributesSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesSection.h; path = Src/Main/Shared/LookinAttributesSection.h; sourceTree = ""; }; - 4211A99A6EE6255E875FA46E987F2128 /* Lookin_PTUSBHub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTUSBHub.h; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.h; sourceTree = ""; }; - 42189E436FCC0F9F0BAA536F3BF84910 /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; - 4223ACF818570B18B88D6B2884075BF1 /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; - 426AEC2F7F358DEDB66C3F2D15F925A4 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; + 3D16809394CD346845FFB0C9977242B2 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; + 3DC9A26415E30724897A7A975AB7B73E /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; + 3DF0E590DEA8DD03BE15CBF72CDCBE8B /* HWPanModalPresentationAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationAnimator.m; path = Sources/Animator/HWPanModalPresentationAnimator.m; sourceTree = ""; }; + 3EBA537DA26B64728CA51AC60E7A2FB3 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; + 3FA20784164A5FF07C29C2829918C6B8 /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; + 3FB5EB648C2339F0632D8DD464412282 /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; + 40BFEDE02CC0E566BBDC5A631AF4AF85 /* HWVisualEffectView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWVisualEffectView.h; path = Sources/View/HWVisualEffectView.h; sourceTree = ""; }; + 40D9E69F0A1E9D4219601AFE0D6257DD /* LookinWeakContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinWeakContainer.h; path = Src/Main/Shared/LookinWeakContainer.h; sourceTree = ""; }; + 4199B5EF9E6D97F0A19FE7422D28A2C6 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; + 41BB24C7B81FDF4942C58FB649399EB7 /* UIBlurEffect+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBlurEffect+LookinServer.h"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.h"; sourceTree = ""; }; + 4307F1F1718ED3798F45B2184C30063E /* NSString+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Lookin.h"; path = "Src/Main/Shared/Category/NSString+Lookin.h"; sourceTree = ""; }; + 43C608DEC890D79C4A758B248B1B7D6E /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MJExtension-MJExtension"; path = MJExtension.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 45DC3F40C3A1FA5B5920DED3DF89557C /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; - 45EDC4788D38048F75B7F3CD0BEF1783 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; - 45F43707DFF3E5A8EFA1404F7259F5DF /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; - 46771EF8828C8A7519CEFD7A8DF062BE /* LKS_TraceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_TraceManager.h; path = Src/Main/Server/Others/LKS_TraceManager.h; sourceTree = ""; }; - 4730B0C65CA50BE6D828887D7CC8EB9F /* LookinCustomAttrModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomAttrModification.m; path = Src/Main/Shared/LookinCustomAttrModification.m; sourceTree = ""; }; - 4770EEEC71445F1C55A5C71E32517009 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; - 477B43B19C3181419CE0D39929320355 /* LKS_AttrModificationPatchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrModificationPatchHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.h; sourceTree = ""; }; - 47E596E1EB48CB4E8DE37CC0D5122787 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; - 4819E2A59EFDCF27B3C3DDB40C7B2D13 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; - 48A9A2DE85C1D87BCD354418BAF78749 /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; - 49A24CBDEFCE6B22E2D355C6D04AC9B4 /* NSArray+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Lookin.m"; path = "Src/Main/Shared/Category/NSArray+Lookin.m"; sourceTree = ""; }; - 4B2A98ADD6BF259F1E366B570C576632 /* LKSConfigManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKSConfigManager.m; path = Src/Main/Server/Others/LKSConfigManager.m; sourceTree = ""; }; - 4C9BF32317317006604613DB6B7E6531 /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; - 4D125D803F381B689272DFC8613DDA9A /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; - 4D2D491E6C287C5C66C4EF6B165E85BD /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; - 4D47A5312A106ED050240FD5A4E84CE4 /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; - 4E7FA66C9DDB6507631DF1F179557C4A /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; - 4FD8426A1028406F5A9C4E27D5C9E76C /* Color+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Color+Lookin.h"; path = "Src/Main/Shared/Category/Color+Lookin.h"; sourceTree = ""; }; - 504A6EFB974AF03849BCBDD8A6C0A198 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; - 5104591E28208BB976FFAD3D7AFA2F58 /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; - 51D6AF1225DCDC66E13DAA2BCB6B1DCF /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; sourceTree = ""; }; - 5210B0534D834B2EF86FDFCE90B73F2D /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; - 5212AF1887982114A494FF962BEF5A35 /* LookinConnectionAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionAttachment.h; path = Src/Main/Shared/LookinConnectionAttachment.h; sourceTree = ""; }; - 5248A2EBBCEB19A0BBFA557B594E2DEA /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; - 52832E51BDED300B58102A301664AD5A /* DZNEmptyDataSet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.release.xcconfig; sourceTree = ""; }; - 528C15198BF77FCE909FB6A717EA8C53 /* LookinAutoLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAutoLayoutConstraint.m; path = Src/Main/Shared/LookinAutoLayoutConstraint.m; sourceTree = ""; }; - 52CE89D1B7CAF7D6D1E509FE1267800A /* DZNEmptyDataSet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DZNEmptyDataSet-dummy.m"; sourceTree = ""; }; - 52EF359F996014A062F3A2945F10438A /* NSString+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Lookin.h"; path = "Src/Main/Shared/Category/NSString+Lookin.h"; sourceTree = ""; }; - 52FBF3084E82AF80B1B017FB5240AF4F /* LKS_HierarchyDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.h; sourceTree = ""; }; + 441DC5BA33205114F293CCFD73DE308D /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; + 445DB8E68C4622DC598EF2623547120D /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; + 44A0BF7F32C28865E6ACA8A8BB27F63A /* MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJRefresh-Info.plist"; sourceTree = ""; }; + 464A4EBDD6079658F375B8BE36A1D224 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; + 464FA74F22BA11120A125593D04ECC10 /* HWPanModalPresentationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationController.h; path = Sources/Controller/HWPanModalPresentationController.h; sourceTree = ""; }; + 46B5AC2B0569CA6232E5088BF6FBCD84 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; + 46CCF3A43BEE5F3B0490729F74E3F205 /* LKS_HierarchyDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.m; sourceTree = ""; }; + 47A1CD68D6C47087933E20DA80B1E693 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; + 48848C87D33425CDC35A3154B4C1E819 /* ResourceBundle-MJExtension-MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJExtension-MJExtension-Info.plist"; sourceTree = ""; }; + 48DF6A3F73D15BB7711D4C401A2A800F /* Image+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Image+Lookin.h"; path = "Src/Main/Shared/Category/Image+Lookin.h"; sourceTree = ""; }; + 492F2C7BD5804A777BF8699BEBDE9706 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; + 4A049DB74A9BEE7FA98C208416BBDD60 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; + 4BA81BE20AFB7AAED21EEC5D091FF489 /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; + 4C5F7FF14062807BDEB2A6D6E4A6DE95 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; + 4E443FB99E1E01CD79DABE37EB302AFE /* FLAnimatedImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FLAnimatedImage-Info.plist"; sourceTree = ""; }; + 4E56D5DDE9402DE57FEF9D81E68DE8B3 /* Bugly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.debug.xcconfig; sourceTree = ""; }; + 4EF1B5176604A62648603F6832B989AC /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; + 50A13B682D86AE92E1941A6C08E557BB /* NSObject+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+LookinServer.h"; path = "Src/Main/Server/Category/NSObject+LookinServer.h"; sourceTree = ""; }; + 50AB72625252A5E15E31076E002BFCDA /* HWPanModalPresentableHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentableHandler.m; path = Sources/Mediator/HWPanModalPresentableHandler.m; sourceTree = ""; }; + 5222D695CCB33DFD24FA0E6B7CE34154 /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; + 52498B1644296C61B2FE7621C339AC58 /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; + 52587370E20625EC0ADF9ECB81F06C80 /* LKS_GestureTargetActionsSearcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_GestureTargetActionsSearcher.h; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.h; sourceTree = ""; }; + 52AC10A81E2C53178BFD809330041A7E /* HWPanModalContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContainerView.h; path = Sources/View/PanModal/HWPanModalContainerView.h; sourceTree = ""; }; 5327DD01C6533D102D66E1636B3827F3 /* Pods-keyBoard-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-keyBoard-acknowledgements.plist"; sourceTree = ""; }; - 54354678DA42B275327F1EABDD57F9BD /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; - 567AA7AB9514E985494C554A1802C03B /* LKS_Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_Helper.h; path = Src/Main/Server/Others/LKS_Helper.h; sourceTree = ""; }; - 56A3EB69345768D61D52161327AE66C8 /* LookinHierarchyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyInfo.m; path = Src/Main/Shared/LookinHierarchyInfo.m; sourceTree = ""; }; - 57BCCC946B3042A20D0C8F15D69FF943 /* MJExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.debug.xcconfig; sourceTree = ""; }; - 58AA57BAA26D8C03E401EEFD3C78271F /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; - 5932D997195DFCB258D366D038A56978 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; - 594925FC6BBDEA3002D153F167630F93 /* UIVisualEffectView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIVisualEffectView+LookinServer.h"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.h"; sourceTree = ""; }; - 594BEBF4113035634E37CC4FC2A11D62 /* LookinAttributesGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesGroup.m; path = Src/Main/Shared/LookinAttributesGroup.m; sourceTree = ""; }; - 5989AAAB35D0B7EF697456F3897FACEC /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; - 5998234B9DD3C83BCD1DE88EDDEA5DF6 /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; - 599EA7E2BEEE9D88C43DF182C6A874D1 /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; - 59AE847A100A8834951E42690C982455 /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; - 59D0E9B54F4868B1B1BDE17140B78250 /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; - 5ABD1279233951A8EAE905C43AD033A4 /* LKS_ConnectionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ConnectionManager.m; path = Src/Main/Server/Connection/LKS_ConnectionManager.m; sourceTree = ""; }; - 5AE5F5B6D6DAD0B45FC2D30EE6FBEE81 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; - 5AF7E49BBE304E0327E319036BE5671B /* UIViewController+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LookinServer.m"; path = "Src/Main/Server/Category/UIViewController+LookinServer.m"; sourceTree = ""; }; - 5B993C5AF69BCC11CB58D180BE7475BE /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; - 5C0CAD4F0394CDAF40054888E02EB093 /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; - 5C457050D64C2C7287BDFC768D33C9AE /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; - 5C7AE763582816CA9E57C0D78A7D1A49 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; - 5CAEE17C08505E0DF4A1EF22D4CAD064 /* MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJExtension-Info.plist"; sourceTree = ""; }; + 543E7F5FC6CF2C3049F7A173BFB53AFD /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; + 549961902064EB911C7C58433F18CB5C /* Lookin_PTProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTProtocol.h; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.h; sourceTree = ""; }; + 54C035FC92D730EBEC46CF8E21ADFF7F /* LookinAttributesSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesSection.h; path = Src/Main/Shared/LookinAttributesSection.h; sourceTree = ""; }; + 550192267AB5C328829C08C69A3B04BC /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; + 5746A23477BAEA4BBB127E9D35DF678C /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; + 57748DDDE8158306E4B3EAC0E03C99A1 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; + 581D45C2162C5967784E2A106C696662 /* UIViewController+PanModalPresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalPresenter.h"; path = "Sources/Presenter/UIViewController+PanModalPresenter.h"; sourceTree = ""; }; + 58623A3EED3B4D5125F83B78B865E033 /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; + 587CB6117FEDC0DADE247998FA290F62 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; + 58EF98364CA25B52C8DF52E35A63A6BB /* DZNEmptyDataSet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DZNEmptyDataSet.modulemap; sourceTree = ""; }; + 58FC58CFC6A48F6752D249D83F67DD94 /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; + 5916EA119280E5419D6269E5A435A1A0 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; + 596D5BD427C685CFFE0E474F1355C0BB /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; + 59AF70C47DF0209B5D93F81A25EFB8EC /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; + 59E5B7C96027CDC6B5D70E2AD9AC0EFD /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; + 5A0744C22449018296AB633E5BC2C275 /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; + 5A37D9FEABB61A71285A73CDE4C5E9EE /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; + 5A5852584225D29AAB47BA31F0AC9415 /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; + 5B69A17E7FED839334E49FA3104B7F83 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; + 5B7AF4A837E5E99D79B146178585C2C3 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; + 5B7E0100E260F97D53E9D7FCB8CAAFCB /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; + 5C5640AE0C2091C5FC7A8CFD27229CC3 /* HWPanModalAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalAnimator.m; path = Sources/Animator/HWPanModalAnimator.m; sourceTree = ""; }; + 5C764F0D3B98816426D5D1C448686870 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; + 5D55CD73335546425BAD6A91CB9C4CE4 /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DZNEmptyDataSet; path = DZNEmptyDataSet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5E0CFDE214ACE5F071E4BEEF63BDDCD6 /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; - 5E355B215CED31C4C6EF33EEB9E95B38 /* LKS_HierarchyDetailsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDetailsHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.h; sourceTree = ""; }; - 5E83988FA8D9C00FAEEA94EE0633C2C5 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; - 5F52BB443191BF5EA87C6419E4BAFFD5 /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; - 613A0EC29C46AFB409483355C45FE1C7 /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; - 613D22FE29FDFD98F1BA3415B19FB040 /* LKS_ConnectionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ConnectionManager.h; path = Src/Main/Server/Connection/LKS_ConnectionManager.h; sourceTree = ""; }; - 615CFF22184D20B3B6107165A49D6FEF /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; - 61A50E7751555885AEB4247687F5DF05 /* DZNEmptyDataSet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.debug.xcconfig; sourceTree = ""; }; - 61AA277CF1084D31AAA460D8C1A9BE4E /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; - 61E1874601B077A6F69725D9EF8827B1 /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; - 6289794567935CA3DC8B5C49AEA74043 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; - 62E02B7B42A91CD6887912774FAE6528 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; - 63B2D397715E1B3990E46DFCAE0A73D5 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; + 5E03CFEECACD6D99D415C06808FF1A46 /* LKS_GestureTargetActionsSearcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_GestureTargetActionsSearcher.m; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.m; sourceTree = ""; }; + 5F23B5AA329AF2C38E62E7CBE5F5D136 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; + 5F258393A5F61F1A41DB0116A1995DB1 /* UIView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LookinServer.h"; path = "Src/Main/Server/Category/UIView+LookinServer.h"; sourceTree = ""; }; + 5F66416F5FCB58B94BA9CC403B8A778A /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; + 5FE7A440D01806C72477C1AA0213B946 /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; + 6013BED1D4465B355233E90F5236D454 /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; + 61194FA2A41C9D734CCA119C5F329CE1 /* LookinTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinTuple.m; path = Src/Main/Shared/LookinTuple.m; sourceTree = ""; }; + 611F335AF3AB948359952D972579333C /* LookinAttrIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrIdentifiers.h; path = Src/Main/Shared/LookinAttrIdentifiers.h; sourceTree = ""; }; + 6124AD77C854511265D90EDC5EE36657 /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; + 61AF436FD61695046BC4D5C853E7CA45 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; + 6259B042D1D6480734439FF381E14C2B /* MJRefreshNormalTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h; sourceTree = ""; }; + 625CF3BFC134394EF547BF079507A5D1 /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; + 62640F732378D5BF961D278A8E714FEC /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJExtension/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 62F129163AC40C289B2AEA5C7DEBE679 /* HWShoppingCartPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWShoppingCartPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h; sourceTree = ""; }; + 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; + 64110DA477609C9760A9CEEABA26DFFB /* LookinConnectionResponseAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionResponseAttachment.m; path = Src/Main/Shared/LookinConnectionResponseAttachment.m; sourceTree = ""; }; 641251D3092FFCF2B6259BF8676A212E /* Pods-CustomKeyboard-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CustomKeyboard-Info.plist"; sourceTree = ""; }; - 650740D8E20A30E70F588321BC583BBC /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; - 667106A3B29FC2624F444E79272C8235 /* LKS_CustomAttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.m; sourceTree = ""; }; - 67A65AF14731E6A6CF631892AB163C2D /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; - 68C023D8DAEB5C5E7F36F7020DDBFE63 /* LKS_RequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_RequestHandler.m; path = Src/Main/Server/Connection/LKS_RequestHandler.m; sourceTree = ""; }; - 6A2C339DB0F9EF94544BE6FCDA59F50F /* MJRefreshStateTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m; sourceTree = ""; }; - 6A6FA79B39689AE1D69FBABCD4BB8F7B /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; - 6B21CBEE99C5014F0E0F66C420497FCD /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; - 6CAEA0BC49D62C0D220FA986A5391EEC /* UIImageView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+LookinServer.h"; path = "Src/Main/Server/Category/UIImageView+LookinServer.h"; sourceTree = ""; }; - 6D30CE312289056E4C5788AB47438FED /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; - 6DAD9E82D42212E9D52E28737BC21479 /* LookinHierarchyFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyFile.h; path = Src/Main/Shared/LookinHierarchyFile.h; sourceTree = ""; }; - 6E49D88BA109001AA94CB4B1CBCC6353 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; - 6E6089EEBB83334AD3EFA96BE408F86D /* LookinDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDefines.h; path = Src/Main/Shared/LookinDefines.h; sourceTree = ""; }; - 6F10AABF341F29547C8D1C780B3F8861 /* LKS_CustomDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.h; sourceTree = ""; }; - 6FD83C0A67C6DD93C76CB6563151D889 /* LKSConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKSConfigManager.h; path = Src/Main/Server/Others/LKSConfigManager.h; sourceTree = ""; }; - 70E91E9355FAF7D2A8CA2A2112F06A60 /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = ""; }; - 713E37659AD7D79DA6664C3D3ECF01F7 /* LookinDashboardBlueprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDashboardBlueprint.h; path = Src/Main/Shared/LookinDashboardBlueprint.h; sourceTree = ""; }; - 71BB52034FF7403843EE79E4975D6D70 /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; - 71C7BAB63ED44B881A65C001AA682ADB /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; - 743C4A42055B7373FB20F646193D0919 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - 7584B9C7664B986D7C6582FD3280C473 /* UITableView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+LookinServer.m"; path = "Src/Main/Server/Category/UITableView+LookinServer.m"; sourceTree = ""; }; - 7597119135479FEF90DC7CA9DDBF03A6 /* LookinDisplayItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItem.h; path = Src/Main/Shared/LookinDisplayItem.h; sourceTree = ""; }; - 75E99E8BA24E841D85C9E942E3654D62 /* LookinAttrIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttrIdentifiers.m; path = Src/Main/Shared/LookinAttrIdentifiers.m; sourceTree = ""; }; - 785DDFE2F3C7BA8AEDE2278087F506EB /* LookinWeakContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinWeakContainer.h; path = Src/Main/Shared/LookinWeakContainer.h; sourceTree = ""; }; - 79462E533AFF776B12B799A128AA5EE8 /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; - 794882B4F91B9E9B55DD3DF40E04DA22 /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; - 79803C4DAA3D0FB997F7A51AB226B9D7 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SDWebImage-SDWebImage-Info.plist"; sourceTree = ""; }; - 79E1EEF42DE5E1954630A63B8A5E02B6 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; - 79EEB00E9ED2C742987150EA5E0B1341 /* LKS_AttrModificationPatchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrModificationPatchHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.m; sourceTree = ""; }; - 7B54AFD2BD6CA59B1C3B03B1146FE77F /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; - 7BA0DD426F8305DA317D708459ABA12F /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; - 7CB82C5681E372AE74735E8F3B7211E5 /* LKS_EventHandlerMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_EventHandlerMaker.m; path = Src/Main/Server/Others/LKS_EventHandlerMaker.m; sourceTree = ""; }; - 7CBB9E2731CD9B8F896AD9F7398CD3F6 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; - 7D45408149C7FF7C3CD91B6DDBFB7448 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; - 7D5B144E69C677553A95B3CCA57BC43C /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; - 7DBD5C23623A08CDD875999AA28A1F8D /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; - 7DDE67F73A61A7328413374AFFA92E85 /* LookinStaticAsyncUpdateTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinStaticAsyncUpdateTask.m; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.m; sourceTree = ""; }; + 6470D20217BE1E46F63251367F8A9EB0 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; + 64C4273F666802A12C990C543C5413E3 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; + 64EE6EBE156E6757C2B16DC6C01D0328 /* LKS_CustomAttrSetterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrSetterManager.m; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.m; sourceTree = ""; }; + 64FC3145438669B612415058A5D1C68B /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; + 652780DECBCF733E1CBAA8309FADE953 /* LKS_MultiplatformAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_MultiplatformAdapter.h; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.h; sourceTree = ""; }; + 65578EBC5788FEE6B04E9151B552D110 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; + 666595C8EDD80B06B88241CFA60BC1D4 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; + 66852803923AC12381D91011BC62422E /* LKS_ConnectionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ConnectionManager.m; path = Src/Main/Server/Connection/LKS_ConnectionManager.m; sourceTree = ""; }; + 66EB6235F828F12999A13D8BD6C02127 /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; + 66F3FF05384C9441A8FAFFE1E267822E /* LookinWeakContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinWeakContainer.m; path = Src/Main/Shared/LookinWeakContainer.m; sourceTree = ""; }; + 68F6F33E73474357B9E7885C4414C917 /* LookinObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinObject.m; path = Src/Main/Shared/LookinObject.m; sourceTree = ""; }; + 69120AA1162D453113865A302140EFB0 /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; + 694CDF3CA0E35A901F2C7D0364CD013C /* LookinStaticAsyncUpdateTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinStaticAsyncUpdateTask.m; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.m; sourceTree = ""; }; + 6A16069144EAF75D991A4D06E3632B2B /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; + 6A94D2984C9A5BA88F4AA771F38B8314 /* HWPanModal-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HWPanModal-dummy.m"; sourceTree = ""; }; + 6AA35B4909D9783E7A851FD1AD821334 /* LookinStaticAsyncUpdateTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinStaticAsyncUpdateTask.h; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.h; sourceTree = ""; }; + 6AC0CAE7328F30AAD9591CBF92851E5D /* DZNEmptyDataSet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-prefix.pch"; sourceTree = ""; }; + 6B25E0E8867C9D8FE8A69D2C8BD251D9 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; + 6B6B370AE543A3A33C4D570C3B8366E3 /* LKS_EventHandlerMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_EventHandlerMaker.m; path = Src/Main/Server/Others/LKS_EventHandlerMaker.m; sourceTree = ""; }; + 6B8E94E7EAABFAC34A3D61FF43E02355 /* NSArray+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Lookin.h"; path = "Src/Main/Shared/Category/NSArray+Lookin.h"; sourceTree = ""; }; + 6BA9B1ACD0A1EB747C6936E484D5208B /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; + 6BE8047ED813191B4BC46FA8C5334ABC /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; + 6CD3C473E82665733BD9E2D23A688894 /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; + 6E2233B3F4E54A10BBB04EA668A8B0BC /* HWPanModalHeight.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalHeight.h; path = Sources/Presentable/HWPanModalHeight.h; sourceTree = ""; }; + 6E4761AF00D5D97F0E6876C0F021A970 /* NSSet+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSSet+Lookin.m"; path = "Src/Main/Shared/Category/NSSet+Lookin.m"; sourceTree = ""; }; + 6E7FB45CA71B8CA83A3493DEA84881AB /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; + 6E87ADD85BCC1C5A4BF0FB2AC7E2A834 /* Bugly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.release.xcconfig; sourceTree = ""; }; + 6E9D7DC7A47992FD77E5A1BF86254454 /* LKS_HierarchyDetailsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDetailsHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.h; sourceTree = ""; }; + 6ECF4C720F0485F7EA3D63E9C28CFBA7 /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; + 6F1F4A5570DD3146B2E2BD55F75D53BF /* LookinConnectionResponseAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionResponseAttachment.h; path = Src/Main/Shared/LookinConnectionResponseAttachment.h; sourceTree = ""; }; + 701BFF6738F7EE5632E59657442BD101 /* LookinServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LookinServer-dummy.m"; sourceTree = ""; }; + 7020F5FD7E08D02DFB263422BBB5EBCE /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; + 70CF34CA376C8F25403FA62C8A27356C /* LookinAutoLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAutoLayoutConstraint.h; path = Src/Main/Shared/LookinAutoLayoutConstraint.h; sourceTree = ""; }; + 72A78D12318A2A4F704BC2BC743AD9DF /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; + 72E3A740C48B1DF278C345CEB59A5C99 /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; + 737E319C87B4A4FA348810E15675B757 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; + 73D83AA6FEB5E85D4F5AA27E2C2ADB69 /* HWPanModal-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-prefix.pch"; sourceTree = ""; }; + 75D5D4CBB473106CD017A60A4F0284B5 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; + 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; + 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = HWPanModal; path = HWPanModal.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 78DE1BDAC4037EF5EF5085D7F97C5896 /* Lookin_PTProtocol.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTProtocol.m; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.m; sourceTree = ""; }; + 790F5BF1A1AB8405DB8FFB5F37D2BA39 /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; + 793514345B8D9E3CC0E86E9AA48547A2 /* LookinServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-prefix.pch"; sourceTree = ""; }; + 7A2B32A1AC63C6D1AF5B5467A6CEC75F /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; + 7BB291C0467B8A072E8C1CE10A701CA2 /* LookinAttrIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttrIdentifiers.m; path = Src/Main/Shared/LookinAttrIdentifiers.m; sourceTree = ""; }; + 7C8E106F1C7C00CCE5C4691E7DFD2859 /* HWPanModalContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContainerView.m; path = Sources/View/PanModal/HWPanModalContainerView.m; sourceTree = ""; }; + 7CB57DCB4F28061C4A199F8768E4F7C7 /* UIColor+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+LookinServer.m"; path = "Src/Main/Server/Category/UIColor+LookinServer.m"; sourceTree = ""; }; + 7D170811DBCC5115CE133F6187C37ADE /* Masonry-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Masonry-Info.plist"; sourceTree = ""; }; + 7D1C2865819BCF073FD84E9A5B8816AB /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MJRefresh-MJRefresh.Privacy"; path = MJRefresh.Privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 7E82EAB687527F885E79D9835727B3F8 /* LKS_GestureTargetActionsSearcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_GestureTargetActionsSearcher.h; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.h; sourceTree = ""; }; - 7FCB45CBC3B45614560DA456506F73F1 /* LookinAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttribute.m; path = Src/Main/Shared/LookinAttribute.m; sourceTree = ""; }; - 808621872AB88E6448666731EB043018 /* MJExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-umbrella.h"; sourceTree = ""; }; - 80F9F8B5249F11798A805DF46C09F2CA /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; - 80FED7368916E2D1EE8E2B7F26A2618F /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; - 82B53F06F74B4F928AF69994EDA63D71 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; - 832592FA01CF620F64F9CED4966CEA99 /* UIView+WebCacheState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheState.h"; path = "SDWebImage/Core/UIView+WebCacheState.h"; sourceTree = ""; }; - 834B6D6A1ACFBDDF049322F2ED0C17DE /* LKS_CustomAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.h; sourceTree = ""; }; - 83A4CDCDF549B87D4E437ED8A4615D91 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; - 84E9E0A3D552DFF9EC45D14794237342 /* Lookin_PTProtocol.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTProtocol.m; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.m; sourceTree = ""; }; - 854F1B8C164960BB0D2721562BD6E7E5 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; - 86A260983254EF2D214865E91D3787B2 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 872090FEDB94946E441D4F936A1357C0 /* LookinIvarTrace.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinIvarTrace.m; path = Src/Base/LookinIvarTrace.m; sourceTree = ""; }; - 87D20D63606C6DC8B53F345069126C44 /* NSObject+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+LookinServer.h"; path = "Src/Main/Server/Category/NSObject+LookinServer.h"; sourceTree = ""; }; - 89023F2C23C8826F172885D263CC29D2 /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; - 89485243816A18F41367AE862167C061 /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; - 8A299BC446CAAFD89DBF55F51B07F0F4 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; - 8A3DF7C8B0CA95D284475EF487EC6944 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; - 8A6D5DE8BC7E18B47355B8494A426209 /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; - 8AE06F501FB1F02940458122AC396D62 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; + 7EABFACBAFD45BC8FA955F5004A0F3F6 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; + 7F409E94556DE38FF80361104AA14B1C /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; + 7FB6D9FCFB10D58A02282FBABE87FB43 /* Color+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Color+Lookin.h"; path = "Src/Main/Shared/Category/Color+Lookin.h"; sourceTree = ""; }; + 80F7F70AB42196BE2ECAE3F75289F5CC /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; + 819AF2C3BB9CCBDC0A03029D56096EA4 /* UIViewController+LayoutHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LayoutHelper.h"; path = "Sources/Presentable/UIViewController+LayoutHelper.h"; sourceTree = ""; }; + 81C8A4B9A7186C1EC704A8F7181A8B4C /* SDCallbackQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDCallbackQueue.m; path = SDWebImage/Core/SDCallbackQueue.m; sourceTree = ""; }; + 82D7BEE16249F72113581170F4B17105 /* MJRefreshNormalTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.m; sourceTree = ""; }; + 839B9E61EAA7FC6A8B571EAB1077DBCF /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; + 83ECFAFFBD6F90A4A996E32508211B96 /* DZNEmptyDataSet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.release.xcconfig; sourceTree = ""; }; + 845117372901F4A5A3D286F10A26B6EC /* HWPresentingVCAnimatedTransitioning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPresentingVCAnimatedTransitioning.h; path = Sources/Animator/HWPresentingVCAnimatedTransitioning.h; sourceTree = ""; }; + 85703DD6475DDAF90847B3E1C0DC9738 /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; + 857DB28ACD58B6F0687A1A566D8C2BF1 /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; + 8594A6CF7D45F1715A10AC3C18700F18 /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; + 86C67D3928970843AA374752207E9260 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; + 8705B9A2A16D5B2796A9B11E1C3D074C /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; + 87352714D54CE9C3DCA836E85ABDE2D9 /* MJExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.debug.xcconfig; sourceTree = ""; }; + 87404200573C5C261B9C829573DF05E9 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; + 8759D0306E45E19CBC456FD3486DDE02 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; + 87FB553A3CC72081333DBA02B2136CF8 /* HWPanModalInteractiveAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalInteractiveAnimator.h; path = Sources/Animator/HWPanModalInteractiveAnimator.h; sourceTree = ""; }; + 8862727C1E338311DF7340BC59FC7388 /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; + 88D6FD1A2FA6EEC892A2DD294E5A7454 /* LookinIvarTrace.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinIvarTrace.m; path = Src/Base/LookinIvarTrace.m; sourceTree = ""; }; + 89AF890E0CFE5DDF9869F06650066AA4 /* MJExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJExtension.modulemap; sourceTree = ""; }; + 89CAE6642460316AFEB27B5A5CD2778E /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; + 8A762DB0AD39D18CF911533AF4D3D3B1 /* LKS_RequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_RequestHandler.m; path = Src/Main/Server/Connection/LKS_RequestHandler.m; sourceTree = ""; }; + 8A7ED5F60A6E593BE4319E09C2FD0BE2 /* UIView+WebCacheState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheState.h"; path = "SDWebImage/Core/UIView+WebCacheState.h"; sourceTree = ""; }; + 8AF449E5E9E00FFF6BD1DD6F39E654AC /* HWPanModalPresentableHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentableHandler.h; path = Sources/Mediator/HWPanModalPresentableHandler.h; sourceTree = ""; }; + 8B00C7E369E9AC7974F4EC937246BBA4 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; + 8B07F3D2B3B3299BF5A32A4ED4D06683 /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; + 8B52F950306B0C5B7D2782308290581C /* LKS_ConnectionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ConnectionManager.h; path = Src/Main/Server/Connection/LKS_ConnectionManager.h; sourceTree = ""; }; + 8B6F555000ECA771E3EEE30C0BCA8211 /* SDImageFramePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFramePool.h; path = SDWebImage/Private/SDImageFramePool.h; sourceTree = ""; }; 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MBProgressHUD; path = MBProgressHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8BAD239072CC7DFB1FD50FE4374085D1 /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; - 8C9727D0D56A9017D437CA50176F0474 /* Bugly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.release.xcconfig; sourceTree = ""; }; - 8CABC6887E9E2AF4A62642A0C780B4B3 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; - 8CD27E7A66F8B685B7056B181A0D4D46 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; - 8E466B1532DEF5F8A8FE002C3882E69E /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; - 8E6B85BD26EE974026A447B476B2932B /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; - 8F0FAF8AA7D9999CB7B6AC14DC9F613F /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; - 8F715C3F41E2D739BCA20A8ED2E487A1 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; - 904AEE3BB6B326E7E1CFD8B0A34306AB /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; - 9228BFB339DE3C8FD5163C974AB7DE89 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; - 9278559A57D46FAC97B2480A76E574BE /* Color+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Color+Lookin.m"; path = "Src/Main/Shared/Category/Color+Lookin.m"; sourceTree = ""; }; - 929BD46DB08827C3FD713BC0E928C239 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; - 9324A882B3ED55B3EF9D92D946555583 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; - 93AFD572FFECC065D5DF0E8764C35B66 /* Lookin_PTChannel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTChannel.m; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.m; sourceTree = ""; }; - 93FB055BA93E62482AD7154A938F761A /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; - 94310BE9068195ADA7842BD0A9A7F782 /* LKS_HierarchyDetailsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDetailsHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.m; sourceTree = ""; }; - 9450EAE5D947C741A2403ADD203E1875 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; - 948E1E3EDCE53B021791B9169CCC28BD /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; - 94CD4DB147D9FC14A9FB75335D8AAAF6 /* LookinAttrIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrIdentifiers.h; path = Src/Main/Shared/LookinAttrIdentifiers.h; sourceTree = ""; }; - 94E4D004CAC99A7D4B7144E86418C29C /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; - 960792D55E0D95EDBE31A27683F9FEEF /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; - 96163189CC5AFA5E4E23D6B0B3EADFF7 /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; - 9641B4F4D8DDE2072CB32BF4C9C2882A /* LookinServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.debug.xcconfig; sourceTree = ""; }; - 964A9667953DC95C883D7E82FD74B649 /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; - 9662C23EC2FEA41BE91046E19A928D8C /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; + 8B985DB20BDEDC3C065B3A50F078016B /* UITextView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+LookinServer.h"; path = "Src/Main/Server/Category/UITextView+LookinServer.h"; sourceTree = ""; }; + 8C495E6705380977CFF34DEFD621BF49 /* SDCallbackQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDCallbackQueue.h; path = SDWebImage/Core/SDCallbackQueue.h; sourceTree = ""; }; + 8D37279B6C85F4CF9A24280C077B23F5 /* CALayer+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+LookinServer.m"; path = "Src/Main/Server/Category/CALayer+LookinServer.m"; sourceTree = ""; }; + 8E7070EAE3CD21654B5DD5A9531D12AF /* LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServer.h; path = Src/Main/Server/LookinServer.h; sourceTree = ""; }; + 8EAAEC40E00FD2D67C7E5C46D561E1B8 /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; + 8EE35BE199AAA2D6723052ADC7573E04 /* UIViewController+LayoutHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LayoutHelper.m"; path = "Sources/Presentable/UIViewController+LayoutHelper.m"; sourceTree = ""; }; + 8F13ED159399F9081ED4E0855D985B3B /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; + 8F351B59999F041F80A0949DA207118B /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; + 8F53205FC53C4FCB1F1D5089D62F9DFC /* HWShoppingCartPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWShoppingCartPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m; sourceTree = ""; }; + 8F7E17F4510167B68511D3E34E380ED7 /* CALayer+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Lookin.m"; path = "Src/Main/Shared/Category/CALayer+Lookin.m"; sourceTree = ""; }; + 8FA74E651256F04C8514F0A05679D217 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; + 8FFBA60DA7BFD0D987C4E683037FDDB0 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + 90219DE322B8BCFE6BF680852EBEF4F5 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; + 902DE3B37054D9EE3A5EE281287AD148 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; + 913734C0E85A7287F025E327629CA7FC /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; + 91D3E5E505EB6AAA766EB09E461868F7 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; + 92134100C010678B361F36A55263F8A4 /* NSArray+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Lookin.m"; path = "Src/Main/Shared/Category/NSArray+Lookin.m"; sourceTree = ""; }; + 921FDF9A7596A9183FFD281EEBC18B9D /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + 92A1420483F3DAE0607CA7ECEA495C73 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; + 92C723F3A1F71486F75D6E7CA7E480E6 /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; + 92E26B1FB2A3B34BF0C4C43A02D2EB58 /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; + 92EF1461B8302AC228343F85048D3888 /* LookinTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinTuple.h; path = Src/Main/Shared/LookinTuple.h; sourceTree = ""; }; + 931F2EC345E0B4F7BD3F617F883DF4E2 /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; + 93ED7AE2B94BDF71B19043408EA5D0F3 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; + 944C193267D20C3EDAC9F40BC95BA365 /* HWPanModalPanGestureDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPanGestureDelegate.h; path = Sources/Presentable/HWPanModalPanGestureDelegate.h; sourceTree = ""; }; + 94EC9A7C408C26C1E3959F02360523F7 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + 952745F4CCA16F79D572D39513608DA3 /* UITableView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+LookinServer.m"; path = "Src/Main/Server/Category/UITableView+LookinServer.m"; sourceTree = ""; }; + 954815F2E3C8D1F819EF2344830A2160 /* LKS_EventHandlerMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_EventHandlerMaker.h; path = Src/Main/Server/Others/LKS_EventHandlerMaker.h; sourceTree = ""; }; + 95B0223E2E65A30C6C4B233E336C7DB9 /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; + 95CE408CF328A01B1BEE4325824DB1C6 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; + 95F6534573C96B51C375B48F710A1253 /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; + 96090B4F5197A5FD0B3684BBF9CE7D69 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-keyBoard-dummy.m"; sourceTree = ""; }; - 96D5456A17DF66E262562E8208ADEFF0 /* UIView+WebCacheState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheState.m"; path = "SDWebImage/Core/UIView+WebCacheState.m"; sourceTree = ""; }; - 96E64D1052C3FD60EB6BBB8A95EE1349 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; - 97003D4D841CDDF5214C70A6CC7425DF /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; - 97041A2525062E71B923CEBB11179389 /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; - 9843F03B02D2521214C5C5583A9BBDA3 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; - 98B6A3897B6D415F51E7F65FD9A20296 /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; - 99418F0A943BD9FF46795740F7385472 /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; - 9964200935BD2352FD5DAD8C2AC9FE07 /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; - 99F9CF6DCFC4C32DE7AC87FA68FD05DA /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; - 9A522D0661C437F2B97B12A18A3478A1 /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; - 9BF2F8A5A2E35CC31448E86BCF471F49 /* LookinConnectionResponseAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionResponseAttachment.h; path = Src/Main/Shared/LookinConnectionResponseAttachment.h; sourceTree = ""; }; - 9C6609EE1C9372D5E3C70AF9861CE95D /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; - 9C8E3573AF9C6E24E9DFBDDB57A91B44 /* Lookin_PTUSBHub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTUSBHub.m; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.m; sourceTree = ""; }; - 9C9BCDBD08949F0C3053B9F87567E0B2 /* LookinHierarchyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyInfo.h; path = Src/Main/Shared/LookinHierarchyInfo.h; sourceTree = ""; }; - 9D58792A3DBAB3667630D1FF53DDFB8D /* LKS_CustomAttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.h; sourceTree = ""; }; + 970ACBBC888D1BD4521806C0B268E7C6 /* FLAnimatedImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.release.xcconfig; sourceTree = ""; }; + 973BF123337556FEF831ECD7EF288DE8 /* CALayer+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+Lookin.h"; path = "Src/Main/Shared/Category/CALayer+Lookin.h"; sourceTree = ""; }; + 978791EF867BB9DF203262274A262783 /* LookinCustomDisplayItemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomDisplayItemInfo.m; path = Src/Main/Shared/LookinCustomDisplayItemInfo.m; sourceTree = ""; }; + 999C87FA7C5AA189886B4A2D58358BA9 /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; + 99AE60DF16539817ECDA464B8C0BF588 /* UIViewController+PanModalDefault.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalDefault.m"; path = "Sources/Presentable/UIViewController+PanModalDefault.m"; sourceTree = ""; }; + 99C1A927375BA228B8AD38FDB36211B8 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = WebImage/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 99D142261C81911E0D8BD4684EC87BB5 /* HWPanIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanIndicatorView.h; path = Sources/View/HWPanIndicatorView.h; sourceTree = ""; }; + 9A43BA63699738F29455B4DD47483A5A /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; + 9A61CDBD69057C3674739778A8D7E4BE /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; + 9A65EE54330746267B5EE5B6873635DA /* UIViewController+PanModalDefault.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalDefault.h"; path = "Sources/Presentable/UIViewController+PanModalDefault.h"; sourceTree = ""; }; + 9AB541F4715AB2A0DE59B23A5696D448 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; + 9AC629B4407B73FD1B84C0611D1E18CE /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; + 9B347673A4B4C29BEEEA0DACA4FDE025 /* LKS_InbuiltAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_InbuiltAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.m; sourceTree = ""; }; + 9B7BDA9563EB39641E0A578B77FD4FAA /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; + 9BCDAC8B780C194868C6063FBF20A57A /* HWPanModal.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HWPanModal.modulemap; sourceTree = ""; }; + 9C0C71B23FD64F957CD7F6E8EBE92F99 /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; + 9C78F6EF0B85587CCB2705C057DF66EA /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJRefresh.modulemap; sourceTree = ""; }; + 9CD6AE0C7A2E208FF93567A99374869B /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/include/FLAnimatedImageView.h; sourceTree = ""; }; + 9D41AAC213895165C450F5576DE42CB2 /* 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; }; 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; }; - 9D9C32EDDDB1CA2666760FDE90B64590 /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CustomKeyboard-umbrella.h"; sourceTree = ""; }; - 9DFECBD4586BE9AE288AFFA5027A9A24 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; - 9E3D65B846C5EFBA9201404CD8BDC1DA /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; - 9F1EE18C1314EB74EEB6B6392E8EFB08 /* LKS_GestureTargetActionsSearcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_GestureTargetActionsSearcher.m; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.m; sourceTree = ""; }; - 9F2C6DE995A9BCF5E418479898442088 /* NSObject+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Lookin.h"; path = "Src/Main/Shared/Category/NSObject+Lookin.h"; sourceTree = ""; }; - A054792401E8F9F7BEA8441F9C1DA7C7 /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; - A1B6FEE442B47E03714BC3FB94670DCC /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; - A1BB512E1904C9AC07E6CEBA4DE525DB /* LookinDisplayItemDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItemDetail.h; path = Src/Main/Shared/LookinDisplayItemDetail.h; sourceTree = ""; }; + 9E1C83957751BACAB22569AE64250554 /* HWBackgroundConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWBackgroundConfig.m; path = Sources/View/HWBackgroundConfig.m; sourceTree = ""; }; + 9EE75894CA44B250BFEA11B25F54F149 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; + 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* 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; }; + A0641CF016316B36ABD820BBE52AD19F /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; + A12EE00E77DE8A43E7CE64F69D345190 /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; + A137B039D2A317E540FA6772AEB9D840 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; + A143D09B35BD8CC84D08FB36C49D2099 /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; + A1502F82ADC41A5C2CBCFBB8BE2DBA1E /* LookinConnectionAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionAttachment.h; path = Src/Main/Shared/LookinConnectionAttachment.h; sourceTree = ""; }; + A16552B472D24C41550970F7A20D2306 /* HWPanModal-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-umbrella.h"; sourceTree = ""; }; + A183E865565BA2B1F53CD0924621E410 /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FLAnimatedImage.modulemap; sourceTree = ""; }; + A1A68076B57D7DD2B4FCC592ECD4E990 /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; + A2B45634336BCC349F04126A0EE780B0 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-keyBoard-umbrella.h"; sourceTree = ""; }; - A3048EE57AEE9C3B5FDB98C9E7DF4BB9 /* LookinObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinObject.m; path = Src/Main/Shared/LookinObject.m; sourceTree = ""; }; - A306B5D1B1BD0232E2121BA1E0EA27F9 /* LKS_ExportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ExportManager.m; path = Src/Main/Server/Others/LKS_ExportManager.m; sourceTree = ""; }; - A3868E0511721B009DE0A628C978E4AF /* LKS_TraceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_TraceManager.m; path = Src/Main/Server/Others/LKS_TraceManager.m; sourceTree = ""; }; - A3A3B77B219A105E2636BBFACE42D7A8 /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; - A3CC467742888B5DE59CC393D50BA540 /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; - A417B5FC83ECB57A121FCD14A6DD23D3 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; - A4E4BD7B01B4DA8E6A41CD86E6AB6B44 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; + A35EA195B83881018F93E59FE86940FC /* HWPanModal-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HWPanModal-Info.plist"; sourceTree = ""; }; + A4846194BA854C70246DB41D70440D2B /* LookinAutoLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAutoLayoutConstraint.m; path = Src/Main/Shared/LookinAutoLayoutConstraint.m; sourceTree = ""; }; + A48C905BEA42A4AA5B76B664D12914C8 /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AFNetworking; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A53791C99F3E8789C928D8471E4310AC /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; - A565D25677F6FEEAD298666682CDA4B2 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; - A57C810A36EA495CAFAEDAD83C19A651 /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; - A6057C23DD0D9C9A5559F8F0DC47A97D /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJRefresh/PrivacyInfo.xcprivacy; sourceTree = ""; }; - A67D546CB537E231FE83AA071A555BB7 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; - A6A924083322C61BD2DC82A438F46687 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; - A6B89FBB0AA4A7BD7E16AFF20A519DC2 /* UIImageView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+LookinServer.m"; path = "Src/Main/Server/Category/UIImageView+LookinServer.m"; sourceTree = ""; }; + A5CA1B7FAF078CBFE367ED67421BD56D /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; + A60394A4E8FFC5CBCC2FD14258C5085A /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; + A658C45B08CED2701138D5375C27CCEE /* LKS_ObjectRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ObjectRegistry.h; path = Src/Main/Server/Others/LKS_ObjectRegistry.h; sourceTree = ""; }; + A68429174A7738F07E1A8AA359028DFE /* LKS_AttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.m; sourceTree = ""; }; + A691E14C36224248BF2A3ECF785CAD95 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; + A6C86B0A2BE58730A7EC5C60F201E0CC /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-keyBoard.release.xcconfig"; sourceTree = ""; }; - A6EB4E3885146B9E8EBACA05C540E733 /* LookinConnectionAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionAttachment.m; path = Src/Main/Shared/LookinConnectionAttachment.m; sourceTree = ""; }; - A7178BC144BA120067B45EC042E2D156 /* LookinCodingValueType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCodingValueType.h; path = Src/Main/Shared/LookinCodingValueType.h; sourceTree = ""; }; - A8E1E4CE0CD5AF60097B9523ED2201F8 /* MJRefreshNormalTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h; sourceTree = ""; }; - A99D2B8B886EDA66D95608FD72CE97AF /* CALayer+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+LookinServer.m"; path = "Src/Main/Server/Category/CALayer+LookinServer.m"; sourceTree = ""; }; - AA8F3F4E9CF14305D8C83582492FEA87 /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; - AB22EEA7E251269666B0DD8D3FCD0892 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; - AB362641176A92218B886FD83548F6C2 /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; - AB70C7432DDB8346C9DB4A27C7C7AEEB /* UITextField+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+LookinServer.h"; path = "Src/Main/Server/Category/UITextField+LookinServer.h"; sourceTree = ""; }; - ABCA85AD5553CAA4C58A12223211E18E /* MJRefreshTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshTrailer.m; path = MJRefresh/Base/MJRefreshTrailer.m; sourceTree = ""; }; - ABFE70D35403EBB3D3B8E84170698E30 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; - AE4708C50A24F74BB9721BF97FDD4782 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; - AEB9B57AEEA7BDF0C696120F4B110F33 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; - AF4D3A8A4AF29616DFF2E40A94DA00AE /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; - B00A278D1C0A05DD872C02CEFE3B53AC /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; - B069597AD0812CBF01ACDD3CE4B6F843 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; + A77B70C25747C0E7AE67F784B287D211 /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; + A79588184FF24FC5EB3FA3987629C30B /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + A7BD9DB001526EC0DE681E63675B8318 /* HWBackgroundConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWBackgroundConfig.h; path = Sources/View/HWBackgroundConfig.h; sourceTree = ""; }; + A7FD6EBF394380EFF340D6443E444582 /* UIImageView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+LookinServer.h"; path = "Src/Main/Server/Category/UIImageView+LookinServer.h"; sourceTree = ""; }; + A8E79B2B03D4382C825BD72257BE4101 /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; + A941317B46DF5E4325D43DAC931923A5 /* UIView+WebCacheState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheState.m"; path = "SDWebImage/Core/UIView+WebCacheState.m"; sourceTree = ""; }; + A97B23EA4BC5A09E3AB9062612C11DE8 /* KeyValueObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KeyValueObserver.m; path = Sources/KVO/KeyValueObserver.m; sourceTree = ""; }; + AABD4B7A1454CA80B386AD36AEFEB5A7 /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; + AAE5FEBB56FEC34482A95BC768401167 /* LKS_CustomAttrSetterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrSetterManager.h; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.h; sourceTree = ""; }; + AB7963F3AA45763DF399A396845DDF33 /* NSSet+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSSet+Lookin.h"; path = "Src/Main/Shared/Category/NSSet+Lookin.h"; sourceTree = ""; }; + AC119D7F0D47E7F00738CC762CB0D90B /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + AC49732B3E41F8772AD10362943A8A97 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; + AC56B56B105B16D1EF0458AD870F4405 /* NSString+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Lookin.m"; path = "Src/Main/Shared/Category/NSString+Lookin.m"; sourceTree = ""; }; + ADCA2BD1C88A86EE8E2A5D4E3461378D /* LookinEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinEventHandler.m; path = Src/Main/Shared/LookinEventHandler.m; sourceTree = ""; }; + AE579277DE642E9E1019F6392CE1755F /* MJRefreshTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshTrailer.m; path = MJRefresh/Base/MJRefreshTrailer.m; sourceTree = ""; }; + AF44575A66631B8B3E9F4F79EAF68A2D /* LookinDisplayItemDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItemDetail.h; path = Src/Main/Shared/LookinDisplayItemDetail.h; sourceTree = ""; }; + AFF73BDD48D8B44AFC6A61B1B0B3B57B /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; + B08DC7A1A58E4347C875EE7C77258D67 /* LookinAttributeModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributeModification.m; path = Src/Main/Shared/LookinAttributeModification.m; sourceTree = ""; }; B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SDWebImage; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B12DF9FA146221C01FCE0D22DDBDC890 /* LookinAttrType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrType.h; path = Src/Main/Shared/LookinAttrType.h; sourceTree = ""; }; - B1A8FD671105727BDE389DF6E59E7187 /* LookinServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-umbrella.h"; sourceTree = ""; }; - B36A499BB6A9A389E077337779129B95 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; - B486D1944AF55BFAF5E8F8CDE6F8EB79 /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; - B4D76F7EB1CE870804724BC071C5ACB3 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; - B640B3AD2FE955C7A51E5B1F84A61189 /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; - B6D81E3EC47029DCA820DF6AA652C734 /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; - B6F3F601094A8014DC41447620116D80 /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; - B70FF2E3C927A22C388C16FE8C3F56DB /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; - B7D4D5B8A3207BDAE71FAE9F1B443CBF /* UICollectionViewLayout+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+MJRefresh.m"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.m"; sourceTree = ""; }; - B9232C2E4F4A27C4FBD3F8EA3E351AF5 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = WebImage/PrivacyInfo.xcprivacy; sourceTree = ""; }; - B985D3DA018E1C8C3AC44ADE702B404B /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; - B9AC91A4E70DD8F8592A5811E8617578 /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; - B9E85A8129A4E7BFE16B2262D78F1DCC /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; - B9EF838DEDDB795D85E2F065BD697452 /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; - BA48F14A970C2FE9AE9B9A3F4EF27D84 /* NSObject+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Lookin.m"; path = "Src/Main/Shared/Category/NSObject+Lookin.m"; sourceTree = ""; }; - BB09D1C81119E88D019FD33037BC5587 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; - BB20479CEB729CCB614B58BD2EFB3BB7 /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; - BBC10C6127599FC7CD74CA6E613C44DB /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; - BCE109BED042388EE5FB3949ADA18281 /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; - BD3AE781F5CE5DD3063848F6F78DD40B /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; - BDD492D9CC4757F16B776F8B08A1A49F /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; - BE6604D8C889F73372398B103D4FF327 /* Masonry-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Masonry-Info.plist"; sourceTree = ""; }; - BF679E0482D915265B5050368ABBB701 /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; - BF86BA22A3F81C27DE4346E22477D2CD /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; - C08BFCAD6B6021A9C9686DA64A6CF1AE /* LKS_CustomDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.m; sourceTree = ""; }; - C0AED8CDD333F60946EF309E2D789249 /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; - C23D52958B18447DC5C865BB12951C58 /* UILabel+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+LookinServer.m"; path = "Src/Main/Server/Category/UILabel+LookinServer.m"; sourceTree = ""; }; - C342060C11E55E0DDCC3A84C8C1FBC35 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; - C4BB81E05861A9C00B09F3A39D27B164 /* LookinServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LookinServer-dummy.m"; sourceTree = ""; }; - C59B65D3E951B3FDACD866C4564C0214 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; - C6F66997EF28E05B21EB7F13B379645A /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; - C79FFC2722DEE9A1F54D8DBDD3CB2A2C /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; - C839ECCA7B6B8EF19AFC3658241117C8 /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; - C9154FA9EFF76FE4C993ADDBEB9A5EE4 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; - CA67A34B63E36E76FF453D2ABD613A39 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + B0FB288C5320DA98E827641B6E277307 /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; + B1272B72DEF143341E0CC0451AF17506 /* HWPanModalPresentationAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationAnimator.h; path = Sources/Animator/HWPanModalPresentationAnimator.h; sourceTree = ""; }; + B239AD8AAB2A61B7AE6B39D6B7F1F9D5 /* LookinConnectionAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionAttachment.m; path = Src/Main/Shared/LookinConnectionAttachment.m; sourceTree = ""; }; + B2E58999C4BBC169E871AD7F5DC6CC54 /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; + B32295E122B71520322E84A41C7EE15B /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; + B41358A1C10AD0D29F1770C04A5F0CAF /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; + B466F948757742572AAEA4DF218BD987 /* HWVisualEffectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWVisualEffectView.m; path = Sources/View/HWVisualEffectView.m; sourceTree = ""; }; + B4B06DC6899A1F01C7834AFAF5E0FFDF /* LookinCustomDisplayItemInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomDisplayItemInfo.h; path = Src/Main/Shared/LookinCustomDisplayItemInfo.h; sourceTree = ""; }; + B51D6BDADBE9F95F37BE5FDCC3849A36 /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; + B5D946A76BE7958D130628335233FAE2 /* LookinServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.release.xcconfig; sourceTree = ""; }; + B71B6DD998C6C529D683056C8285BE11 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; + B72774F6480A029A3A2441E9DF82096D /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; + B7824533FC35957318C6FAF5ECA425E7 /* Lookin_PTPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTPrivate.h; path = Src/Main/Shared/Peertalk/Lookin_PTPrivate.h; sourceTree = ""; }; + B78E312E7E63BF84B4DD4072BAB4A551 /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; + B87A76839C6A92DD597AFD764D90E24D /* FLAnimatedImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.debug.xcconfig; sourceTree = ""; }; + B95D50B779E63B23E1786D6F6CCABD4A /* LKS_HierarchyDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.h; sourceTree = ""; }; + B979B6198848283DB66503E656A49837 /* MJExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-umbrella.h"; sourceTree = ""; }; + BAE82C8EA8816156B60A19B5AAA61D2B /* UIImage+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+LookinServer.h"; path = "Src/Main/Server/Category/UIImage+LookinServer.h"; sourceTree = ""; }; + BAF92A34DD29AD318C11B5807644B670 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; + BBB5022209600659D8A4792A6FD748CE /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; + BBD303CA2BE52A14A7809A2F458FE949 /* HWPanModalPresenterProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresenterProtocol.h; path = Sources/Presenter/HWPanModalPresenterProtocol.h; sourceTree = ""; }; + BCB715803528E46AB9661E7F8A956D85 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; + BD6A58C100D7D0C95F73174D108F1F16 /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; + BDEE6097B6411333154FEF90A280E3E4 /* 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; }; + BEB8AC93A851C5DFA93D44CFAD39856D /* UIVisualEffectView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIVisualEffectView+LookinServer.m"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.m"; sourceTree = ""; }; + BEEC82A223FE289DDC2C165B2D2E03CA /* LKS_CustomDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.h; sourceTree = ""; }; + BF0595213FCD9D5150FF374A286E2BC6 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; + BF63871F7CF3667516551ED65E16445F /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; + C02274A03EA3977CCD31F6436223F923 /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; + C0271A933F5E2DB9D6CC456E988103D1 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; + C078A2E8B42103FA232855A1D6A0D7F7 /* LookinDashboardBlueprint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDashboardBlueprint.m; path = Src/Main/Shared/LookinDashboardBlueprint.m; sourceTree = ""; }; + C07FA22445AE442F8F429DC97AD5226D /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; + C0E09B2B757F6365152258D76B3D2A39 /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; + C0E3D0083F73A4B9E51802D71E12B6D5 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; + C0FC0E2910D71C68F70A7CBBD2130D87 /* LKS_ExportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ExportManager.h; path = Src/Main/Server/Others/LKS_ExportManager.h; sourceTree = ""; }; + C12D160C6063D462EE97C5CD6A35994E /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; + C190447F019E6407D44584A4FDF8F21A /* LookinAppInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAppInfo.h; path = Src/Main/Shared/LookinAppInfo.h; sourceTree = ""; }; + C20D9185B54011BBE67FAA2FE147DA10 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; + C247A1884F6D32D3F8E2A80759806E33 /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; + C354B162321F2CA18DB1B330D092378E /* DZNEmptyDataSet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.debug.xcconfig; sourceTree = ""; }; + C4282EA0E02DB360DBEA169BDB76A24E /* LookinDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDefines.h; path = Src/Main/Shared/LookinDefines.h; sourceTree = ""; }; + C46FC528BD8EF754DE7F229CABF54A73 /* UIScrollView+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+Helper.m"; path = "Sources/Category/UIScrollView+Helper.m"; sourceTree = ""; }; + C4A1569A2FA3521F9130DA7EA649CE07 /* LKS_AttrModificationPatchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrModificationPatchHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.h; sourceTree = ""; }; + C53E65DBE6C4798EE75818796AEE4D8C /* HWPageSheetPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPageSheetPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h; sourceTree = ""; }; + C5805469F7E93E743A134E4EEC762665 /* DZNEmptyDataSet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-umbrella.h"; sourceTree = ""; }; + C5D4B0A2DB8E7128A6DA546DA4C7CEB7 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; + C5F9910D6ED5B2A16EE7819D62912F64 /* Image+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Image+Lookin.m"; path = "Src/Main/Shared/Category/Image+Lookin.m"; sourceTree = ""; }; + C656F7688A2DB9FEA22520878F9A2055 /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; + C67403F95732E8793DB36834C4726BFA /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; + C6C930D163128CBE864CF933994F470B /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; + C7C888B99007AD057195C9956BE40388 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; + C917ABB653A9CB7D7518FCE9F40F2F2D /* HWPanModalPresentationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationDelegate.m; path = Sources/Delegate/HWPanModalPresentationDelegate.m; sourceTree = ""; }; + C931ABFE9D27B32AD8D6C893AD979117 /* LKS_ObjectRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ObjectRegistry.m; path = Src/Main/Server/Others/LKS_ObjectRegistry.m; sourceTree = ""; }; + C93CA5E20848AEFCB61E12D54CCA6ADF /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; + C9465AFC6C48C65FF4158D542A5001CD /* UIColor+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+LookinServer.h"; path = "Src/Main/Server/Category/UIColor+LookinServer.h"; sourceTree = ""; }; + C9DEFB96646787781652ABFE1D5648AF /* HWPanModal.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.debug.xcconfig; sourceTree = ""; }; + CA563C1C8CD02A20BF55A818576D82EE /* LookinDisplayItemDetail.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItemDetail.m; path = Src/Main/Shared/LookinDisplayItemDetail.m; sourceTree = ""; }; CAD1D653361EAFCC0E4FFD8252FC1E74 /* Pods-CustomKeyboard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-CustomKeyboard.modulemap"; sourceTree = ""; }; - CAE0A8B09C0AF83117C6BC9602D5D41F /* UITableView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+LookinServer.h"; path = "Src/Main/Server/Category/UITableView+LookinServer.h"; sourceTree = ""; }; - CBCBBB0099A9339A1A8ABBEDF291AF92 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; - CC47954DDA2CCCD6E92132955A0DE728 /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; - CC6EC6E349C4E8476F9617E9150D43FE /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; - CDE77633CA7FA3526B2AA79AB5F21A42 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; - CE89275D8F89A11FB2761E0461236313 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; - CEC88A03608F444860F81FB5EB689938 /* UITextField+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+LookinServer.m"; path = "Src/Main/Server/Category/UITextField+LookinServer.m"; sourceTree = ""; }; + CBA39C705DBB9802B534C4BDD3664538 /* LookinHierarchyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyInfo.h; path = Src/Main/Shared/LookinHierarchyInfo.h; sourceTree = ""; }; + CC16AC12627C17F0E12860526E93F8EF /* LookinAttrType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrType.h; path = Src/Main/Shared/LookinAttrType.h; sourceTree = ""; }; + CC1CE35F4EE179193CCCEA428E5FF90F /* UILabel+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+LookinServer.m"; path = "Src/Main/Server/Category/UILabel+LookinServer.m"; sourceTree = ""; }; + CCE0180ACC796145628AC2F013D66C45 /* UITextField+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+LookinServer.h"; path = "Src/Main/Server/Category/UITextField+LookinServer.h"; sourceTree = ""; }; + CCFCCA3349FCD1D6463769CF4AAFD75C /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; + CD41EB00FCD1D9A736384800AABD1E30 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; + CD81B3BC38825A465F08F0A7FF6B6D56 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; + CDBA0F660CF6947CF53C5863681817AB /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; + CDF036FAEDB3424A0B63A3F64C926C94 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; + CE31F60CA05A2FFF39BB47897CB17219 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; + CE9DC3EBC5E4498B6CBDAA25AFECD440 /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; + CEED0C5BB9E7BD10174D1CAE5F34FE15 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "SDWebImage-SDWebImage"; path = SDWebImage.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - CFBDDF0554D720E199E1094AAEC3D171 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; - D03549B19B7C1700178CF12088FCE44C /* LookinTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinTuple.m; path = Src/Main/Shared/LookinTuple.m; sourceTree = ""; }; - D15A23E7684648249EA4D7C312BACC22 /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; - D197698AA79A94AD39EC006BBB9D3481 /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; - D219431FF998A6D0FA270965A4CDE56D /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; - D226F4D7ADA4D7570E831057BF0F25E7 /* MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJRefresh-Info.plist"; sourceTree = ""; }; - D23D41020809113858D4CA46059797CF /* LookinStaticAsyncUpdateTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinStaticAsyncUpdateTask.h; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.h; sourceTree = ""; }; - D2BBA8DCCC9E2658211368C22BE1B033 /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; - D3412473E790C600A01CFF5127EA049C /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; - D3A9927A87E21A8976D18DC44FE50014 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; - D3C9902E0E2D0A78C2A349E20322FC80 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; - D404BDF65C17843DC41C1611EAAA22EB /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; - D4D2347D4EFB2E5610773AF965AA8399 /* LookinCustomDisplayItemInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomDisplayItemInfo.h; path = Src/Main/Shared/LookinCustomDisplayItemInfo.h; sourceTree = ""; }; - D54A6D034409C4B729B7DBA2D502B89D /* UITextView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+LookinServer.m"; path = "Src/Main/Server/Category/UITextView+LookinServer.m"; sourceTree = ""; }; - D5509360DE46CF0B8D64058FE9FD45E8 /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; - D601D33EE8BB8396FF4AED582379432E /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; - D673941813D9CA4EFFC6C32109054DC5 /* 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; }; - D6A9452B8FC36F44EC5608AB04827703 /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; - D6C233C8BB873C737FFE3E1DFBC2A186 /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; - D6E369F88941EA9A46AF58BC88CC0720 /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; + CFCADA560B6CBB7BCDE9CD39CDBE90F2 /* UIViewController+Presentation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Presentation.m"; path = "Sources/Presentable/UIViewController+Presentation.m"; sourceTree = ""; }; + D002C48E491E43551029CCF47FC83441 /* LookinServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LookinServer-Info.plist"; sourceTree = ""; }; + D08373F9471B6FE81CFE350A61D7EEC0 /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; + D0E66BF426F9E82A8E7F4F5630A42386 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; + D1AB74F96045D59C6D2386964814DA47 /* HWPageSheetPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPageSheetPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m; sourceTree = ""; }; + D1B006E7B08941CF8A2C5843A8B9C99A /* MJRefreshTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshTrailer.h; path = MJRefresh/Base/MJRefreshTrailer.h; sourceTree = ""; }; + D1EC76CFF0744C55D60E83B26DB4807B /* LookinServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-umbrella.h"; sourceTree = ""; }; + D2A792CB950AB99663B25C1BE2C0853A /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; + D3AD2DC617E8094624655175273C7AB8 /* UITextField+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+LookinServer.m"; path = "Src/Main/Server/Category/UITextField+LookinServer.m"; sourceTree = ""; }; + D3C9A4D4BA6E0F5E50F5993BD82CF6E6 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; + D51913F3FF9E3373AE2497E7D98225CF /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; + D52F3A758237EAA29F8DFF3603985B94 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; + D5303ED4D5AB235B98FBA4B0FDED5DF7 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; + D576F2E6ED4261CAADE09C891ED19EEF /* HWDimmedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWDimmedView.m; path = Sources/View/HWDimmedView.m; sourceTree = ""; }; + D57BF77833CFB4176D299C7D13ACBA75 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; + D5BC11645051F0690160018A0FDF87B2 /* LookinCustomAttrModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomAttrModification.h; path = Src/Main/Shared/LookinCustomAttrModification.h; sourceTree = ""; }; + D62A25339DF2EED2DFE6F9001320C81F /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; + D62C4FB56F8536A4E96AFCADDF2C0945 /* SDImageFramePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFramePool.m; path = SDWebImage/Private/SDImageFramePool.m; sourceTree = ""; }; + D66A82F8BDB185549FF0B573D7E52F8B /* LookinAppInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAppInfo.m; path = Src/Main/Shared/LookinAppInfo.m; sourceTree = ""; }; + D6E12F6D8FA9D6FBA8E91CEC32AD4F92 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; + D6F2CCB5C719F8790027213B6CF0ED8A /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; D742A7EF918BC67B0884AF366F7415FD /* Pods-CustomKeyboard-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CustomKeyboard-acknowledgements.plist"; sourceTree = ""; }; - D8E5E1F0B039F76947E77470F619AB22 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; - D950E8533947A1D8B1CABC80463AFF52 /* UIBlurEffect+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBlurEffect+LookinServer.m"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.m"; sourceTree = ""; }; - D9B1F5912311585292CF1DB19B5FF418 /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; - DB89640D4CA100127D613D0379809B5A /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; - DC3E4B841669D08E886FD8D7A86C654E /* LookinDisplayItemDetail.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItemDetail.m; path = Src/Main/Shared/LookinDisplayItemDetail.m; sourceTree = ""; }; + D74882C4484074AC8872B2A5E438246B /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; + D78DFC477962A207938C611AE0ACA069 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; + D8682D5ED4B7C56D720AFBA44BC3BC76 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + D881DD0CA33CD1E3EFE0136A615F1F65 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; + D8BA408618D220AA3B9C6EE5D3745E21 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; + D8F23CA3052D23EB11B0A898DB4A6E40 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; + D93DC4D1234F76EDC574EBA1402310C2 /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; + D9713BA6BE14577AE57300E3DD702FD7 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; + D9BBE6A2F399A988F5BC26DB0D0BF68C /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; + D9D5E9D7932C124D684E6F1F2A2ECE7D /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + DA7CF72060C622DB6A61C9EB8ED621EC /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJRefresh/PrivacyInfo.xcprivacy; sourceTree = ""; }; + DB2EC5EF47D2A84B9FD85A1FB0124FD2 /* LookinDisplayItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItem.m; path = Src/Main/Shared/LookinDisplayItem.m; sourceTree = ""; }; + DB34B51460BF162B997045D2CF3D0488 /* LKS_CustomAttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.h; sourceTree = ""; }; + DBA1D9F210D421679049394348DAE50E /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; + DBC5FB408D1CC34D172A8CECF2AE6860 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; + DBE8F778D2F44195988D4A515D7F4B42 /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; + DC0E4313E6BF0284C12011FF5FD9B8A9 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; + DC656082CB5200E5E1AF1B4BE99048B3 /* HWPanModal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModal.h; path = Sources/HWPanModal.h; sourceTree = ""; }; + DC6B018BDEA17A60716B1E4180015BC9 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-keyBoard"; path = Pods_keyBoard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; DCFE00F3CC8CED67258D7F7DD13F3156 /* Pods-keyBoard-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-keyBoard-frameworks.sh"; sourceTree = ""; }; - DD9F495B1E192CA5A7EA012DC8524457 /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; - DE365B0506D97BB22271ACD3BE9D48CC /* MJExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJExtension.modulemap; sourceTree = ""; }; - DE5E3242D0D245F39B1349B5C4819144 /* LookinAppInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAppInfo.m; path = Src/Main/Shared/LookinAppInfo.m; sourceTree = ""; }; - DE6C055C722C44DA0E562F93906DCD34 /* LKS_EventHandlerMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_EventHandlerMaker.h; path = Src/Main/Server/Others/LKS_EventHandlerMaker.h; sourceTree = ""; }; - DE9EB519F0B4BF7D539877F733F7BCAF /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; - DECAD058B2FE8CD24CC1022B0A1523AB /* LKS_ExportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ExportManager.h; path = Src/Main/Server/Others/LKS_ExportManager.h; sourceTree = ""; }; - DF2FF7F81EC1FE20B9F8B3879085D4FA /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; - DF383723C6CD6F7B6FCFE6C752DF50AF /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; - DF57705B90AB01302C42302B6BB038DD /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; - E05CD820CF8075CB902341061803D784 /* LookinIvarTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinIvarTrace.h; path = Src/Base/LookinIvarTrace.h; sourceTree = ""; }; - E0E79E8251323154CB271295CCD93D0A /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; - E1C46B6B074DF2D170E6F2ACB5E8C8BA /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; - E1DF8BF780A4AD9606856AB857CA1D86 /* 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; }; - E1E6BDC6A27A05429814F2520B890A63 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; + DDF616B9EC8DE21E9AA84880DC51A9CA /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; + DF0270B966F6AC049BFD4D076AB8B56F /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; + DF05C447154DF7BE7ECB7AE07BF863D4 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; + DF251712BA063E8344D1B1CDB785B3C8 /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; + DF51D23D1444310275D4BB68151F1F60 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; + DF5F6CA83FCCE26A8EBAB9D62A793D12 /* NSObject+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Lookin.h"; path = "Src/Main/Shared/Category/NSObject+Lookin.h"; sourceTree = ""; }; + DFBCDC70260B861EA38352626CC2393C /* UITableView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+LookinServer.h"; path = "Src/Main/Server/Category/UITableView+LookinServer.h"; sourceTree = ""; }; + E031D032167FCBE18305712D789891F0 /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; + E0854CBF8370AAF7A642A9BE65EA9C79 /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; + E089B74E2F4B50357B63BC6069272B9D /* MJRefreshStateTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m; sourceTree = ""; }; + E115A6217BE4FADE37437C87CB0A7B59 /* LookinDisplayItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItem.h; path = Src/Main/Shared/LookinDisplayItem.h; sourceTree = ""; }; + E1A687EF38913970F24032AD57F99A10 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; + E1A7A8B90EB2B4D833CF1D550EC9FB29 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; E214C17CF404D45BDF92DD6C18D371FA /* Pods-keyBoard-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-keyBoard-acknowledgements.markdown"; sourceTree = ""; }; - E25013592494E49EB3F378AA4A68FB7A /* MJRefreshNormalTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.m; sourceTree = ""; }; - E321D3F90B0E3A7E45F64EB551639098 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; - E3ADFF983A9B025AF718C3D24404E480 /* UIView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LookinServer.m"; path = "Src/Main/Server/Category/UIView+LookinServer.m"; sourceTree = ""; }; - E4000AF0B9EEE3F891ADD766B1967BD3 /* LKS_RequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_RequestHandler.h; path = Src/Main/Server/Connection/LKS_RequestHandler.h; sourceTree = ""; }; + E2238DC60FAF777CC267A61F86DC909F /* UIViewController+Presentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Presentation.h"; path = "Sources/Presentable/UIViewController+Presentation.h"; sourceTree = ""; }; + E3ED3F5FB825F25AD8EB19CE0AC86B77 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + E448066D92C481C253D5FA5FC624A0D8 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MJRefresh; path = MJRefresh.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E5514D264E4855320B70B7010325576C /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; - E5F4E4918198D7216ABDC0BE4C9BFCE9 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; - E603FC069FE0FF9249D8A7348F6E7795 /* MJRefreshTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshTrailer.h; path = MJRefresh/Base/MJRefreshTrailer.h; sourceTree = ""; }; - E614E7E1FA6658E0B9CF44C05D4E6811 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; - E66FFAE76E02A3342AF857261F059F70 /* NSObject+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+LookinServer.m"; path = "Src/Main/Server/Category/NSObject+LookinServer.m"; sourceTree = ""; }; - E70A8D54BBD1266CC7CAFB4BD5CE317B /* LookinObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinObject.h; path = Src/Main/Shared/LookinObject.h; sourceTree = ""; }; - E70D2DE5FE013503515AE432AE16071A /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; - E727648E6DB0C84B6B5C85D16CF9D6AC /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; - E785CD9E03330FEEAB8EA2F65DA92853 /* LookinTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinTuple.h; path = Src/Main/Shared/LookinTuple.h; sourceTree = ""; }; - E7FE66EE9C43A4BD03E9F354FADF7098 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; - E857EC016B703D1261AC73360907C980 /* CALayer+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+Lookin.h"; path = "Src/Main/Shared/Category/CALayer+Lookin.h"; sourceTree = ""; }; - E91E93486D40A052515660F00B079B5A /* LKS_InbuiltAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_InbuiltAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.h; sourceTree = ""; }; - E9ED096883562D4C47E188D0E5CB3065 /* LookinDisplayItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItem.m; path = Src/Main/Shared/LookinDisplayItem.m; sourceTree = ""; }; - E9FADEFBF123E3EB09754AA63F0510E1 /* UITextView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+LookinServer.h"; path = "Src/Main/Server/Category/UITextView+LookinServer.h"; sourceTree = ""; }; - EA281F7D07872BD2CB3C821E84CCC544 /* LKS_AttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.m; sourceTree = ""; }; - EA4BA3056A1FE6B47E97AA549D4B9423 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - EA5E2A6BFD8D228A6FF7C7C749D642DB /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; - ECA6154AE35962F20A086F5A3633C0CC /* UILabel+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+LookinServer.h"; path = "Src/Main/Server/Category/UILabel+LookinServer.h"; sourceTree = ""; }; - ED216C76AB8BA24D783B6A22E1E01C97 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; - ED6C24AA261BA4AFA4E02DA1EFA44065 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; - ED81CDC30BE2F7BBA09422B3CD1BDF85 /* Peertalk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Peertalk.h; path = Src/Main/Shared/Peertalk/Peertalk.h; sourceTree = ""; }; - EE4B0CFE38831013E2F465F169783700 /* UICollectionViewLayout+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+MJRefresh.h"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.h"; sourceTree = ""; }; - EE96F8DD901EEB1A8375B055EDF7DBBE /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; - EF15AFFA76ECFCE490107F1DEB31BD62 /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; - EF2661A0DF69E1828AB8D83F666F4FBC /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; - EF6193F470BF021CAED5E3E0DC4F602E /* LookinAttributesSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesSection.m; path = Src/Main/Shared/LookinAttributesSection.m; sourceTree = ""; }; - EFBFF769FFEA0B2F71A0E5EDE7DCDDF3 /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; - EFD8B43671F8A160934DA73D3C45B4C0 /* LookinHierarchyFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyFile.m; path = Src/Main/Shared/LookinHierarchyFile.m; sourceTree = ""; }; - F0BE45EAE3F2E6B703C484173BD9CDAD /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; - F14968FDB67455000B5A2C9A77C64B07 /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; - F2087695EC0958A50E2C65A5D2E03159 /* UIImage+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+LookinServer.m"; path = "Src/Main/Server/Category/UIImage+LookinServer.m"; sourceTree = ""; }; - F226E8137EFBE0F2C4ADF98335CAA02A /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; - F2817892F9F21CF8BF9F8F35D58385AD /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; - F299DB132C67105BBC5A78FBCB87FCF2 /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; - F320516E3A699EEF56C411E9C2DA9C29 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJExtension/PrivacyInfo.xcprivacy; sourceTree = ""; }; - F3D6C729EB2C2561DF46F90B1EE029B4 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; - F4DCF85783AA9A1B3A613F5BAC3C0FEC /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; - F53768EF8D38709F253FC1C181B05162 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; - F53F6F5B0D7E0FF60505964233E5C608 /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; - F57A932DBB8EE96EEDB42899B11A3E40 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; - F61E20013C3B1EBDF05023CF2525C38C /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; - F66C529D67E3A61B55DFF40E581048ED /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; - F68B2B4FABAF7DB3BFD45E81B3302EEE /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; - F6908A3C9CC8A527E2C3CB20A2C51560 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; - F6B25A4160A5D48C609C6C2B58E46DE9 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; - F746B8A0D89C293CD78D1EE71CD25FF1 /* LookinEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinEventHandler.h; path = Src/Main/Shared/LookinEventHandler.h; sourceTree = ""; }; - F74FD66E160DEA3B30F3C017DE8ED1BA /* LookinAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttribute.h; path = Src/Main/Shared/LookinAttribute.h; sourceTree = ""; }; - F81A89C6E769F9B774524A9FE4BA70B5 /* UIColor+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+LookinServer.h"; path = "Src/Main/Server/Category/UIColor+LookinServer.h"; sourceTree = ""; }; - F98B3E6FF4A7A436AEB00C4FE95820A2 /* LKS_CustomAttrSetterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrSetterManager.h; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.h; sourceTree = ""; }; - F9B85917A028A675DFE95B885791EDFC /* LookinWeakContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinWeakContainer.m; path = Src/Main/Shared/LookinWeakContainer.m; sourceTree = ""; }; - FA1B344071044AFFAABF1077219DEC22 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; - FA2246CD5BC5C3E37CEC58BCA4848181 /* NSSet+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSSet+Lookin.h"; path = "Src/Main/Shared/Category/NSSet+Lookin.h"; sourceTree = ""; }; - FAA44D6FF1A44EB319965DB5E0CC5F73 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; - FAB9874FA4C241C24657D3A825C00C66 /* LKS_AttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.h; sourceTree = ""; }; - FAF1C0B2DCF27A6785AA511B6C9290B9 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; - FB260AFEB0CD406D8CDEDE623A1369CF /* LKS_CustomAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.m; sourceTree = ""; }; - FBE4C2596FA0518DD6CED29332B75B5B /* DZNEmptyDataSet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-umbrella.h"; sourceTree = ""; }; - FC8B5F084763484BB92BA1D312960E45 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; - FD1216744C111B10EA2988454A525213 /* LookinAttributeModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributeModification.m; path = Src/Main/Shared/LookinAttributeModification.m; sourceTree = ""; }; - FDD0D2A5CBDCDA5BDF9600C731F95B24 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; - FEBDC1C9F54DE3E90674A96F19B3458A /* LookinServerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServerDefines.h; path = Src/Main/Server/Others/LookinServerDefines.h; sourceTree = ""; }; - FEE404F0AEA8371C4FCFE3F576AA5835 /* NSArray+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Lookin.h"; path = "Src/Main/Shared/Category/NSArray+Lookin.h"; sourceTree = ""; }; - FF266D90F27C22E50821C68FB0B959D8 /* LKS_ObjectRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ObjectRegistry.h; path = Src/Main/Server/Others/LKS_ObjectRegistry.h; sourceTree = ""; }; - FF5518BA3449B11DB02406C2A9A9AA75 /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; - FFD58163B84A00F8FD88E21AE9F6DF12 /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; + E4A29706814F99AC9B476BC26B8CCC39 /* UILabel+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+LookinServer.h"; path = "Src/Main/Server/Category/UILabel+LookinServer.h"; sourceTree = ""; }; + E4FA0289B9B02BEC5BD44CA92580B1E1 /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; + E58431618F9B14FA189C6C896394334D /* LKS_RequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_RequestHandler.h; path = Src/Main/Server/Connection/LKS_RequestHandler.h; sourceTree = ""; }; + E59399382497BDA8D62E5C39784B00B5 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; + E634ACC2034218ADC26B5D4109F49AA9 /* UIScrollView+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+Helper.h"; path = "Sources/Category/UIScrollView+Helper.h"; sourceTree = ""; }; + E66397BB19318C841897657B7D33195C /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + E68A775E5721AFBDB649BB9442D57178 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; + E69955CA9C7B2AA324E3704014745EDF /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + E80165A2B20491F0E71E9BCFA72510B9 /* LKSConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKSConfigManager.h; path = Src/Main/Server/Others/LKSConfigManager.h; sourceTree = ""; }; + E8553D3C121BDD2352FF757D8EC709D3 /* LookinServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LookinServer.modulemap; sourceTree = ""; }; + E876347288A6DCD527E822BBFB6C5774 /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; + E8B33995F7416B51F3DB4DF1B8C1C079 /* LookinObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinObject.h; path = Src/Main/Shared/LookinObject.h; sourceTree = ""; }; + EA0DFE57597F1E609ADFB79857FE435B /* LookinAttributesSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesSection.m; path = Src/Main/Shared/LookinAttributesSection.m; sourceTree = ""; }; + EAA52787EF7666BD721984EDA694AE9B /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; + EAAB3A74BE098DF24548F19631ED1ECA /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; + EB1751B89D4AAC72FB84E06877E9092A /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; + EB219D5B4EB24108AB241B8A5F5ABE19 /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = ""; }; + EB627434D926A06008809F0DE57949FF /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; + EB89406A9E055C08A7A24CF01C851841 /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; + ECBB46360F809A2F94F7C900E07EB3E3 /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; + ED79370B32C9C754D3E34A13A2B7A516 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; + EE48BDF616ED4BAED9CAABA06281EC92 /* HWDimmedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWDimmedView.h; path = Sources/View/HWDimmedView.h; sourceTree = ""; }; + EEE3AE806D4D49918C7379264B8B46D1 /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Masonry.modulemap; sourceTree = ""; }; + EF19B866A3DB2F79FCE73ADCD2FA06C3 /* LookinCustomAttrModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomAttrModification.m; path = Src/Main/Shared/LookinCustomAttrModification.m; sourceTree = ""; }; + EFAF27B6DC3AA50C96B99E41F9E769E4 /* LKS_TraceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_TraceManager.h; path = Src/Main/Server/Others/LKS_TraceManager.h; sourceTree = ""; }; + F03C6F51BDA9A5E5F9395D9F199C54FF /* UIVisualEffectView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIVisualEffectView+LookinServer.h"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.h"; sourceTree = ""; }; + F10A37229A6845649A237D864C061793 /* LookinAttributesGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesGroup.m; path = Src/Main/Shared/LookinAttributesGroup.m; sourceTree = ""; }; + F12C01BF0CB50E72493E6AAC23806030 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; + F1D4E5D74AB2CB580743562EDDD74A4B /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; + F1ED191A53A707D9518B3082C0464066 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; + F23E87D1922F53403D673679FAA023CF /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; + F30BDD15914FC15F21B063466E4635E6 /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = ""; }; + F31C98ACB27D00FB2C83BBFA9C3DB2FB /* UIImage+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+LookinServer.m"; path = "Src/Main/Server/Category/UIImage+LookinServer.m"; sourceTree = ""; }; + F39EC289147F8732DE9E200AEBD42C99 /* HWPanModalContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContentView.h; path = Sources/View/PanModal/HWPanModalContentView.h; sourceTree = ""; }; + F40EDACBF252622C1F7696222AA5BA40 /* NSObject+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+LookinServer.m"; path = "Src/Main/Server/Category/NSObject+LookinServer.m"; sourceTree = ""; }; + F4187BCD5B0BEB79E4E3553B6413AF27 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; + F46251B17D3526E25AB9571283064201 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + F50930AF985486436650C129CC8670FF /* HWPanContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanContainerView.h; path = Sources/View/HWPanContainerView.h; sourceTree = ""; }; + F56A3D2CEFC20C7B8AF2EDF3674BEE77 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; + F5E0853FDC6EA439AD5D1AA134CD117B /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; + F64D7DC2CC24410532CA313B436B5E7B /* LookinAttributeModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributeModification.h; path = Src/Main/Shared/LookinAttributeModification.h; sourceTree = ""; }; + F7095CB50DC7675B616D3B2DAB4F0188 /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; + F70E3892FF24472DB0CDEFABFBA36F91 /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; + F7CF2DFE487DFC9C10016B1FDAECDD95 /* UIViewController+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LookinServer.h"; path = "Src/Main/Server/Category/UIViewController+LookinServer.h"; sourceTree = ""; }; + F7D31CEA08897E65AFD68DFA556F9A76 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + F825F22155AA272C7B94795CFB508AE6 /* HWPanModalInteractiveAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalInteractiveAnimator.m; path = Sources/Animator/HWPanModalInteractiveAnimator.m; sourceTree = ""; }; + F86370D27A7E43E20C85C3106B69C57D /* LookinHierarchyFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyFile.h; path = Src/Main/Shared/LookinHierarchyFile.h; sourceTree = ""; }; + F915BA2B3AE80D1E58F67A45AB3B3D68 /* LookinServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.debug.xcconfig; sourceTree = ""; }; + F9A2F41CFB36F97D9E0F592411A2F9F1 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; + FA5982BFE2863F2A7591EEA5A3374FB5 /* DZNEmptyDataSet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DZNEmptyDataSet-dummy.m"; sourceTree = ""; }; + FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FLAnimatedImage; path = FLAnimatedImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + FACA69FE6DA578D469CD1F044903A1FD /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; + FB1ACE3587FC03054A397CA0A1E76CDC /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; + FB8AAFEE45EE16BDE3F3360F400C9BF9 /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; + FBE9F0CF9D1C205F5B167BDFCF6C838A /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; + FCEC0D919F385E28169E6FC7B6EAE42C /* HWPanModalPresentationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationController.m; path = Sources/Controller/HWPanModalPresentationController.m; sourceTree = ""; }; + FDA81838534E80C5870459AD0441D08C /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; + FE0FBCD7807A33AEB43D358FAF90A586 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; + FED67045FD441EBB05D6A0040A0A1D7B /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; + FF065544B74A17D64308801DEE489EEA /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; + FFDB78F13861619F1E601806B170EB3F /* LKS_AttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.h; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0DE7FCDD6C04EC4E1E9ECB00A0604FB7 /* Frameworks */ = { + 0A90BB8CE318012A50199E336C8F5BCA /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1163,10 +1318,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 68405B5F41E04D755317E63849131904 /* Frameworks */ = { + 6328134103EDE3EF1EA3866C0B5CCA07 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + F1A04C26FAF235FD6B0AF30E7ACD5DD5 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1179,6 +1335,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 800727FE9078FBA0703E3E2537345EEF /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9E666AF8497E0DE090335A642D5B84EC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1187,21 +1350,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A12778F5B92D79BB1CB466B6E7808C73 /* Frameworks */ = { + 9FF74FF9D13DB5C45BDD20BC0FD2DEF2 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - AC60AAEBCF4A484AB8DAD9EBCA30DBD7 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 1EE04FF3866D1CDDBEFEBA7F795824AD /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; CA6527CF424B1AA12AF1D0BB36EBAF73 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1220,6 +1375,25 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D267C6F8AD649543C397BCAAADB7F148 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8D2CBEBF5F1DA6766A833CCD0BF02B5B /* CoreGraphics.framework in Frameworks */, + DBB7D12AC159E50D059772E4B6CF1D2F /* Foundation.framework in Frameworks */, + FB6E014B34F33B89E5060DA1F00168A5 /* ImageIO.framework in Frameworks */, + FDD4C4D4F03502D5CB0B8763009A0948 /* QuartzCore.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + DC9D1A62ADBAE0D79C65A2AF6F2634B1 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5E3FCC0716521D80D2E6419CD0EB5A98 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E672724427269716049B769344D7C3DC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1232,265 +1406,416 @@ /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 004BCCE6E90EA8F999F5DD21EFC4736A /* Support Files */ = { + 06D6AC35A6F9128D8DCF6D347BC7E3D2 /* SDWebImage */ = { isa = PBXGroup; children = ( - 0CE9804DA47B24CF925450C7924EF999 /* Masonry.modulemap */, - E321D3F90B0E3A7E45F64EB551639098 /* Masonry-dummy.m */, - BE6604D8C889F73372398B103D4FF327 /* Masonry-Info.plist */, - D8E5E1F0B039F76947E77470F619AB22 /* Masonry-prefix.pch */, - 31C3AFC445B760812F9E6924ABB9CC15 /* Masonry-umbrella.h */, - B9AC91A4E70DD8F8592A5811E8617578 /* Masonry.debug.xcconfig */, - F53F6F5B0D7E0FF60505964233E5C608 /* Masonry.release.xcconfig */, + 215DAA690B9DE43504BC75E81C87FC63 /* Core */, + 61D45F4E2C8D21B25DDEFC89074CF2F0 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/Masonry"; + name = SDWebImage; + path = SDWebImage; sourceTree = ""; }; - 055E201C6FE65C14750CE007D95094C3 /* DZNEmptyDataSet */ = { + 12EBE327D35A47F2F18FE64995DA4378 /* Resources */ = { isa = PBXGroup; children = ( - D6E369F88941EA9A46AF58BC88CC0720 /* UIScrollView+EmptyDataSet.h */, - 1C3AD08A39781246EBAC23F5B8A9BDD3 /* UIScrollView+EmptyDataSet.m */, - 6CE3F18721CC834AA1D80F2A9F218CA5 /* Support Files */, + B0FB288C5320DA98E827641B6E277307 /* MJRefresh.bundle */, + DA7CF72060C622DB6A61C9EB8ED621EC /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + 19E12BE9CE9CE105A9ABABB0F83900CB /* Core */ = { + isa = PBXGroup; + children = ( + 973BF123337556FEF831ECD7EF288DE8 /* CALayer+Lookin.h */, + 8F7E17F4510167B68511D3E34E380ED7 /* CALayer+Lookin.m */, + 198BCFF4D9AF651D5B86774921D624E2 /* CALayer+LookinServer.h */, + 8D37279B6C85F4CF9A24280C077B23F5 /* CALayer+LookinServer.m */, + 7FB6D9FCFB10D58A02282FBABE87FB43 /* Color+Lookin.h */, + 0F3CFDDCD2AEFF399B69D429BD035229 /* Color+Lookin.m */, + 48DF6A3F73D15BB7711D4C401A2A800F /* Image+Lookin.h */, + C5F9910D6ED5B2A16EE7819D62912F64 /* Image+Lookin.m */, + FFDB78F13861619F1E601806B170EB3F /* LKS_AttrGroupsMaker.h */, + A68429174A7738F07E1A8AA359028DFE /* LKS_AttrGroupsMaker.m */, + C4A1569A2FA3521F9130DA7EA649CE07 /* LKS_AttrModificationPatchHandler.h */, + 0A13200BEAF87753F31130AD74C5CE5B /* LKS_AttrModificationPatchHandler.m */, + 8B52F950306B0C5B7D2782308290581C /* LKS_ConnectionManager.h */, + 66852803923AC12381D91011BC62422E /* LKS_ConnectionManager.m */, + DB34B51460BF162B997045D2CF3D0488 /* LKS_CustomAttrGroupsMaker.h */, + 0AD7CA2EC862D2306679B92B10C85B4D /* LKS_CustomAttrGroupsMaker.m */, + 2676F11A3670B2480D40E37CECD806F7 /* LKS_CustomAttrModificationHandler.h */, + 054A388C6D56EE31CFBD5161B49B08DF /* LKS_CustomAttrModificationHandler.m */, + AAE5FEBB56FEC34482A95BC768401167 /* LKS_CustomAttrSetterManager.h */, + 64EE6EBE156E6757C2B16DC6C01D0328 /* LKS_CustomAttrSetterManager.m */, + BEEC82A223FE289DDC2C165B2D2E03CA /* LKS_CustomDisplayItemsMaker.h */, + 1BF7200D05201E490C12951549D2240D /* LKS_CustomDisplayItemsMaker.m */, + 954815F2E3C8D1F819EF2344830A2160 /* LKS_EventHandlerMaker.h */, + 6B6B370AE543A3A33C4D570C3B8366E3 /* LKS_EventHandlerMaker.m */, + C0FC0E2910D71C68F70A7CBBD2130D87 /* LKS_ExportManager.h */, + 1724C6EB60601A5723C7A0972AA8DB97 /* LKS_ExportManager.m */, + 52587370E20625EC0ADF9ECB81F06C80 /* LKS_GestureTargetActionsSearcher.h */, + 5E03CFEECACD6D99D415C06808FF1A46 /* LKS_GestureTargetActionsSearcher.m */, + 005101F7C4901700207336B75CF59476 /* LKS_Helper.h */, + 02BD81280735E95FA2620927041EAC86 /* LKS_Helper.m */, + 6E9D7DC7A47992FD77E5A1BF86254454 /* LKS_HierarchyDetailsHandler.h */, + 0702AAD171A65EE6A8D28E93A9B62802 /* LKS_HierarchyDetailsHandler.m */, + B95D50B779E63B23E1786D6F6CCABD4A /* LKS_HierarchyDisplayItemsMaker.h */, + 46CCF3A43BEE5F3B0490729F74E3F205 /* LKS_HierarchyDisplayItemsMaker.m */, + 2C10DDC7CAD74F9FB6286DBA8F45E0A9 /* LKS_InbuiltAttrModificationHandler.h */, + 9B347673A4B4C29BEEEA0DACA4FDE025 /* LKS_InbuiltAttrModificationHandler.m */, + 652780DECBCF733E1CBAA8309FADE953 /* LKS_MultiplatformAdapter.h */, + 2DB2D3B9B39A830458FD28DCEC306D8E /* LKS_MultiplatformAdapter.m */, + A658C45B08CED2701138D5375C27CCEE /* LKS_ObjectRegistry.h */, + C931ABFE9D27B32AD8D6C893AD979117 /* LKS_ObjectRegistry.m */, + E58431618F9B14FA189C6C896394334D /* LKS_RequestHandler.h */, + 8A762DB0AD39D18CF911533AF4D3D3B1 /* LKS_RequestHandler.m */, + EFAF27B6DC3AA50C96B99E41F9E769E4 /* LKS_TraceManager.h */, + 32C400A3F91177BBA34B1046DAFF260F /* LKS_TraceManager.m */, + E80165A2B20491F0E71E9BCFA72510B9 /* LKSConfigManager.h */, + 1A3FD8D5295BC5DADF9B48122C08A03D /* LKSConfigManager.m */, + 318AFD96872C2F4B15208D88E9CD4764 /* Lookin_PTChannel.h */, + 2DC2990A90A71D269C5024BA61CF0B19 /* Lookin_PTChannel.m */, + B7824533FC35957318C6FAF5ECA425E7 /* Lookin_PTPrivate.h */, + 549961902064EB911C7C58433F18CB5C /* Lookin_PTProtocol.h */, + 78DE1BDAC4037EF5EF5085D7F97C5896 /* Lookin_PTProtocol.m */, + 0AB04D07CCC6BB644C691A1B75189B56 /* Lookin_PTUSBHub.h */, + 2259A09BA5C4F4B9CD4809BBD03235D0 /* Lookin_PTUSBHub.m */, + C190447F019E6407D44584A4FDF8F21A /* LookinAppInfo.h */, + D66A82F8BDB185549FF0B573D7E52F8B /* LookinAppInfo.m */, + 2D286FE677CDEE60930A656882947FD7 /* LookinAttribute.h */, + 3828D32AF578BCBF238F4F3C9F25FE9D /* LookinAttribute.m */, + F64D7DC2CC24410532CA313B436B5E7B /* LookinAttributeModification.h */, + B08DC7A1A58E4347C875EE7C77258D67 /* LookinAttributeModification.m */, + 217542724C26BE53C452010CBD9B0823 /* LookinAttributesGroup.h */, + F10A37229A6845649A237D864C061793 /* LookinAttributesGroup.m */, + 54C035FC92D730EBEC46CF8E21ADFF7F /* LookinAttributesSection.h */, + EA0DFE57597F1E609ADFB79857FE435B /* LookinAttributesSection.m */, + 611F335AF3AB948359952D972579333C /* LookinAttrIdentifiers.h */, + 7BB291C0467B8A072E8C1CE10A701CA2 /* LookinAttrIdentifiers.m */, + CC16AC12627C17F0E12860526E93F8EF /* LookinAttrType.h */, + 70CF34CA376C8F25403FA62C8A27356C /* LookinAutoLayoutConstraint.h */, + A4846194BA854C70246DB41D70440D2B /* LookinAutoLayoutConstraint.m */, + 1E9B018C9C3042CA28F92204D9CA3368 /* LookinCodingValueType.h */, + A1502F82ADC41A5C2CBCFBB8BE2DBA1E /* LookinConnectionAttachment.h */, + B239AD8AAB2A61B7AE6B39D6B7F1F9D5 /* LookinConnectionAttachment.m */, + 6F1F4A5570DD3146B2E2BD55F75D53BF /* LookinConnectionResponseAttachment.h */, + 64110DA477609C9760A9CEEABA26DFFB /* LookinConnectionResponseAttachment.m */, + D5BC11645051F0690160018A0FDF87B2 /* LookinCustomAttrModification.h */, + EF19B866A3DB2F79FCE73ADCD2FA06C3 /* LookinCustomAttrModification.m */, + B4B06DC6899A1F01C7834AFAF5E0FFDF /* LookinCustomDisplayItemInfo.h */, + 978791EF867BB9DF203262274A262783 /* LookinCustomDisplayItemInfo.m */, + 185D7C79C92B324E08CCA23E8410B9BB /* LookinDashboardBlueprint.h */, + C078A2E8B42103FA232855A1D6A0D7F7 /* LookinDashboardBlueprint.m */, + C4282EA0E02DB360DBEA169BDB76A24E /* LookinDefines.h */, + E115A6217BE4FADE37437C87CB0A7B59 /* LookinDisplayItem.h */, + DB2EC5EF47D2A84B9FD85A1FB0124FD2 /* LookinDisplayItem.m */, + AF44575A66631B8B3E9F4F79EAF68A2D /* LookinDisplayItemDetail.h */, + CA563C1C8CD02A20BF55A818576D82EE /* LookinDisplayItemDetail.m */, + 3759EC9B1F622ABF5524C464D429D774 /* LookinEventHandler.h */, + ADCA2BD1C88A86EE8E2A5D4E3461378D /* LookinEventHandler.m */, + F86370D27A7E43E20C85C3106B69C57D /* LookinHierarchyFile.h */, + 1225A7D188B98E6C6CFDCC9B804BAE8D /* LookinHierarchyFile.m */, + CBA39C705DBB9802B534C4BDD3664538 /* LookinHierarchyInfo.h */, + 1651052462F8B04B5877450A1292E16B /* LookinHierarchyInfo.m */, + 018E89B3130206293240B03D8960F18B /* LookinIvarTrace.h */, + 88D6FD1A2FA6EEC892A2DD294E5A7454 /* LookinIvarTrace.m */, + E8B33995F7416B51F3DB4DF1B8C1C079 /* LookinObject.h */, + 68F6F33E73474357B9E7885C4414C917 /* LookinObject.m */, + 8E7070EAE3CD21654B5DD5A9531D12AF /* LookinServer.h */, + 27CFD14754D1E3BFCBFECB5DD71A5359 /* LookinServerDefines.h */, + 6AA35B4909D9783E7A851FD1AD821334 /* LookinStaticAsyncUpdateTask.h */, + 694CDF3CA0E35A901F2C7D0364CD013C /* LookinStaticAsyncUpdateTask.m */, + 92EF1461B8302AC228343F85048D3888 /* LookinTuple.h */, + 61194FA2A41C9D734CCA119C5F329CE1 /* LookinTuple.m */, + 40D9E69F0A1E9D4219601AFE0D6257DD /* LookinWeakContainer.h */, + 66F3FF05384C9441A8FAFFE1E267822E /* LookinWeakContainer.m */, + 6B8E94E7EAABFAC34A3D61FF43E02355 /* NSArray+Lookin.h */, + 92134100C010678B361F36A55263F8A4 /* NSArray+Lookin.m */, + DF5F6CA83FCCE26A8EBAB9D62A793D12 /* NSObject+Lookin.h */, + 20B8751D1FBB7C171FFFD79AABA096D9 /* NSObject+Lookin.m */, + 50A13B682D86AE92E1941A6C08E557BB /* NSObject+LookinServer.h */, + F40EDACBF252622C1F7696222AA5BA40 /* NSObject+LookinServer.m */, + AB7963F3AA45763DF399A396845DDF33 /* NSSet+Lookin.h */, + 6E4761AF00D5D97F0E6876C0F021A970 /* NSSet+Lookin.m */, + 4307F1F1718ED3798F45B2184C30063E /* NSString+Lookin.h */, + AC56B56B105B16D1EF0458AD870F4405 /* NSString+Lookin.m */, + 0BD99371527F7C150CF7C859DEE75697 /* Peertalk.h */, + 41BB24C7B81FDF4942C58FB649399EB7 /* UIBlurEffect+LookinServer.h */, + 124DF602FD739DD4C0E67F1917B46C09 /* UIBlurEffect+LookinServer.m */, + C9465AFC6C48C65FF4158D542A5001CD /* UIColor+LookinServer.h */, + 7CB57DCB4F28061C4A199F8768E4F7C7 /* UIColor+LookinServer.m */, + BAE82C8EA8816156B60A19B5AAA61D2B /* UIImage+LookinServer.h */, + F31C98ACB27D00FB2C83BBFA9C3DB2FB /* UIImage+LookinServer.m */, + A7FD6EBF394380EFF340D6443E444582 /* UIImageView+LookinServer.h */, + 164010F68ED1F6E6A182B7EA3554A43D /* UIImageView+LookinServer.m */, + E4A29706814F99AC9B476BC26B8CCC39 /* UILabel+LookinServer.h */, + CC1CE35F4EE179193CCCEA428E5FF90F /* UILabel+LookinServer.m */, + DFBCDC70260B861EA38352626CC2393C /* UITableView+LookinServer.h */, + 952745F4CCA16F79D572D39513608DA3 /* UITableView+LookinServer.m */, + CCE0180ACC796145628AC2F013D66C45 /* UITextField+LookinServer.h */, + D3AD2DC617E8094624655175273C7AB8 /* UITextField+LookinServer.m */, + 8B985DB20BDEDC3C065B3A50F078016B /* UITextView+LookinServer.h */, + 1D640B445F4284F72C568FEB8607AA99 /* UITextView+LookinServer.m */, + 5F258393A5F61F1A41DB0116A1995DB1 /* UIView+LookinServer.h */, + 110654C4ECBD914896546F497CDC625F /* UIView+LookinServer.m */, + F7CF2DFE487DFC9C10016B1FDAECDD95 /* UIViewController+LookinServer.h */, + 30CEF95FB390697B4C1ABB26A12E9B7E /* UIViewController+LookinServer.m */, + F03C6F51BDA9A5E5F9395D9F199C54FF /* UIVisualEffectView+LookinServer.h */, + BEB8AC93A851C5DFA93D44CFAD39856D /* UIVisualEffectView+LookinServer.m */, + ); + name = Core; + sourceTree = ""; + }; + 1F3B1AE789621929A19F036CE8E0A834 /* Pods */ = { + isa = PBXGroup; + children = ( + A56EEB83F090D2B191CD05E50C8A32BD /* AFNetworking */, + 30662F4E68E56D663F93AD44284D7A3F /* Bugly */, + 23AABBA54450F01AD14FE2D5004EA190 /* DZNEmptyDataSet */, + E911B99C127EE9BCD74DF2829FDF7E50 /* FLAnimatedImage */, + 70104E6856A041C557137A2D6E976E41 /* HWPanModal */, + 2EBFB6421CDB820E5740269D53F066CD /* LookinServer */, + 736D4B336E551C5E1C2C78E683E7C01A /* Masonry */, + 34826E63DF35EE3F8BAD76BE43B80FFB /* MBProgressHUD */, + FE95D05051075F9F0FE638F52D59284B /* MJExtension */, + A9F9DF7E0CB3C0F72DAC0BD4A3A8E1E8 /* MJRefresh */, + 06D6AC35A6F9128D8DCF6D347BC7E3D2 /* SDWebImage */, + ); + name = Pods; + sourceTree = ""; + }; + 215DAA690B9DE43504BC75E81C87FC63 /* Core */ = { + isa = PBXGroup; + children = ( + 625CF3BFC134394EF547BF079507A5D1 /* NSBezierPath+SDRoundedCorners.h */, + 10F69E78EAD8ECCB195A68616180404D /* NSBezierPath+SDRoundedCorners.m */, + DC0E4313E6BF0284C12011FF5FD9B8A9 /* NSButton+WebCache.h */, + 0746C9ECCE5759599C9E24C14B8E12DA /* NSButton+WebCache.m */, + 2B2EB2A264CA58715D67B113A8AEC381 /* NSData+ImageContentType.h */, + 3B28468BF62D31A9D25D492AAF6D25B0 /* NSData+ImageContentType.m */, + FBE9F0CF9D1C205F5B167BDFCF6C838A /* NSImage+Compatibility.h */, + 86C67D3928970843AA374752207E9260 /* NSImage+Compatibility.m */, + E4FA0289B9B02BEC5BD44CA92580B1E1 /* SDAnimatedImage.h */, + 5C764F0D3B98816426D5D1C448686870 /* SDAnimatedImage.m */, + 5222D695CCB33DFD24FA0E6B7CE34154 /* SDAnimatedImagePlayer.h */, + A5CA1B7FAF078CBFE367ED67421BD56D /* SDAnimatedImagePlayer.m */, + 20E6DD81C23D61767D03656C92BA491A /* SDAnimatedImageRep.h */, + E59399382497BDA8D62E5C39784B00B5 /* SDAnimatedImageRep.m */, + 3DC9A26415E30724897A7A975AB7B73E /* SDAnimatedImageView.h */, + 2ED817696CA9C5336FFC07568FC62502 /* SDAnimatedImageView.m */, + 015AD0623578CAD25A9859FBC263FF7D /* SDAnimatedImageView+WebCache.h */, + C656F7688A2DB9FEA22520878F9A2055 /* SDAnimatedImageView+WebCache.m */, + 07A233E548536FE36D9750CB427DC711 /* SDAssociatedObject.h */, + 1B289F862BC27A4B0060A4CFBD40E1E1 /* SDAssociatedObject.m */, + 07B9FDD5A40301D416EBF36F170E33FC /* SDAsyncBlockOperation.h */, + 839B9E61EAA7FC6A8B571EAB1077DBCF /* SDAsyncBlockOperation.m */, + 8C495E6705380977CFF34DEFD621BF49 /* SDCallbackQueue.h */, + 81C8A4B9A7186C1EC704A8F7181A8B4C /* SDCallbackQueue.m */, + 8F351B59999F041F80A0949DA207118B /* SDDeviceHelper.h */, + A0641CF016316B36ABD820BBE52AD19F /* SDDeviceHelper.m */, + 24AF188A90B7DB8463BE14A968AB6A8F /* SDDiskCache.h */, + B41358A1C10AD0D29F1770C04A5F0CAF /* SDDiskCache.m */, + D5303ED4D5AB235B98FBA4B0FDED5DF7 /* SDDisplayLink.h */, + 59E5B7C96027CDC6B5D70E2AD9AC0EFD /* SDDisplayLink.m */, + EAA52787EF7666BD721984EDA694AE9B /* SDFileAttributeHelper.h */, + C6C930D163128CBE864CF933994F470B /* SDFileAttributeHelper.m */, + 58623A3EED3B4D5125F83B78B865E033 /* SDGraphicsImageRenderer.h */, + 234CA385D849480382A37D00B41DE872 /* SDGraphicsImageRenderer.m */, + 5746A23477BAEA4BBB127E9D35DF678C /* SDImageAPNGCoder.h */, + 07FE3729A86CE6B36944299B52BB3BBE /* SDImageAPNGCoder.m */, + AFF73BDD48D8B44AFC6A61B1B0B3B57B /* SDImageAssetManager.h */, + 95F6534573C96B51C375B48F710A1253 /* SDImageAssetManager.m */, + 92C723F3A1F71486F75D6E7CA7E480E6 /* SDImageAWebPCoder.h */, + 6BE8047ED813191B4BC46FA8C5334ABC /* SDImageAWebPCoder.m */, + 91D3E5E505EB6AAA766EB09E461868F7 /* SDImageCache.h */, + BAF92A34DD29AD318C11B5807644B670 /* SDImageCache.m */, + 46B5AC2B0569CA6232E5088BF6FBCD84 /* SDImageCacheConfig.h */, + 0A9880E3C5631DD575998A17C1EAAFFE /* SDImageCacheConfig.m */, + 93ED7AE2B94BDF71B19043408EA5D0F3 /* SDImageCacheDefine.h */, + 24B77E5B834F553CB4EB67CF38D1658B /* SDImageCacheDefine.m */, + 9A43BA63699738F29455B4DD47483A5A /* SDImageCachesManager.h */, + F70E3892FF24472DB0CDEFABFBA36F91 /* SDImageCachesManager.m */, + C0E09B2B757F6365152258D76B3D2A39 /* SDImageCachesManagerOperation.h */, + 9C0C71B23FD64F957CD7F6E8EBE92F99 /* SDImageCachesManagerOperation.m */, + 6124AD77C854511265D90EDC5EE36657 /* SDImageCoder.h */, + 999C87FA7C5AA189886B4A2D58358BA9 /* SDImageCoder.m */, + F5E0853FDC6EA439AD5D1AA134CD117B /* SDImageCoderHelper.h */, + DBE8F778D2F44195988D4A515D7F4B42 /* SDImageCoderHelper.m */, + 89CAE6642460316AFEB27B5A5CD2778E /* SDImageCodersManager.h */, + A1A68076B57D7DD2B4FCC592ECD4E990 /* SDImageCodersManager.m */, + A48C905BEA42A4AA5B76B664D12914C8 /* SDImageFrame.h */, + FED67045FD441EBB05D6A0040A0A1D7B /* SDImageFrame.m */, + 8B6F555000ECA771E3EEE30C0BCA8211 /* SDImageFramePool.h */, + D62C4FB56F8536A4E96AFCADDF2C0945 /* SDImageFramePool.m */, + E876347288A6DCD527E822BBFB6C5774 /* SDImageGIFCoder.h */, + ED79370B32C9C754D3E34A13A2B7A516 /* SDImageGIFCoder.m */, + FDA81838534E80C5870459AD0441D08C /* SDImageGraphics.h */, + D6E12F6D8FA9D6FBA8E91CEC32AD4F92 /* SDImageGraphics.m */, + 8EAAEC40E00FD2D67C7E5C46D561E1B8 /* SDImageHEICCoder.h */, + D08373F9471B6FE81CFE350A61D7EEC0 /* SDImageHEICCoder.m */, + 58FC58CFC6A48F6752D249D83F67DD94 /* SDImageIOAnimatedCoder.h */, + 931F2EC345E0B4F7BD3F617F883DF4E2 /* SDImageIOAnimatedCoder.m */, + 596D5BD427C685CFFE0E474F1355C0BB /* SDImageIOAnimatedCoderInternal.h */, + 5B7E0100E260F97D53E9D7FCB8CAAFCB /* SDImageIOCoder.h */, + CD41EB00FCD1D9A736384800AABD1E30 /* SDImageIOCoder.m */, + FF065544B74A17D64308801DEE489EEA /* SDImageLoader.h */, + 6B25E0E8867C9D8FE8A69D2C8BD251D9 /* SDImageLoader.m */, + 070F9E5A12CC270070B53AA6E4DE380D /* SDImageLoadersManager.h */, + 6CD3C473E82665733BD9E2D23A688894 /* SDImageLoadersManager.m */, + 2FE4E0AF6CE972936C63A285E8C573B7 /* SDImageTransformer.h */, + B78E312E7E63BF84B4DD4072BAB4A551 /* SDImageTransformer.m */, + 8705B9A2A16D5B2796A9B11E1C3D074C /* SDInternalMacros.h */, + BD6A58C100D7D0C95F73174D108F1F16 /* SDInternalMacros.m */, + 19C0CBEB4A5292C9975C224EC1464049 /* SDMemoryCache.h */, + 4EF1B5176604A62648603F6832B989AC /* SDMemoryCache.m */, + FB1ACE3587FC03054A397CA0A1E76CDC /* SDmetamacros.h */, + 6013BED1D4465B355233E90F5236D454 /* SDWeakProxy.h */, + 72A78D12318A2A4F704BC2BC743AD9DF /* SDWeakProxy.m */, + EB627434D926A06008809F0DE57949FF /* SDWebImage.h */, + 1657973127018C3379A034BF182EF686 /* SDWebImageCacheKeyFilter.h */, + 69120AA1162D453113865A302140EFB0 /* SDWebImageCacheKeyFilter.m */, + 5D55CD73335546425BAD6A91CB9C4CE4 /* SDWebImageCacheSerializer.h */, + 2A5FE34535D0AF62304F84F18B3E5293 /* SDWebImageCacheSerializer.m */, + 6470D20217BE1E46F63251367F8A9EB0 /* SDWebImageCompat.h */, + 902DE3B37054D9EE3A5EE281287AD148 /* SDWebImageCompat.m */, + E031D032167FCBE18305712D789891F0 /* SDWebImageDefine.h */, + BF63871F7CF3667516551ED65E16445F /* SDWebImageDefine.m */, + 492F2C7BD5804A777BF8699BEBDE9706 /* SDWebImageDownloader.h */, + 445DB8E68C4622DC598EF2623547120D /* SDWebImageDownloader.m */, + B2E58999C4BBC169E871AD7F5DC6CC54 /* SDWebImageDownloaderConfig.h */, + ECBB46360F809A2F94F7C900E07EB3E3 /* SDWebImageDownloaderConfig.m */, + 0F498FCFBEA5766BBF0C258824B66B52 /* SDWebImageDownloaderDecryptor.h */, + D51913F3FF9E3373AE2497E7D98225CF /* SDWebImageDownloaderDecryptor.m */, + AC119D7F0D47E7F00738CC762CB0D90B /* SDWebImageDownloaderOperation.h */, + BBB5022209600659D8A4792A6FD748CE /* SDWebImageDownloaderOperation.m */, + 5916EA119280E5419D6269E5A435A1A0 /* SDWebImageDownloaderRequestModifier.h */, + C5D4B0A2DB8E7128A6DA546DA4C7CEB7 /* SDWebImageDownloaderRequestModifier.m */, + 8759D0306E45E19CBC456FD3486DDE02 /* SDWebImageDownloaderResponseModifier.h */, + FACA69FE6DA578D469CD1F044903A1FD /* SDWebImageDownloaderResponseModifier.m */, + F12C01BF0CB50E72493E6AAC23806030 /* SDWebImageError.h */, + E68A775E5721AFBDB649BB9442D57178 /* SDWebImageError.m */, + 2D17878F639EAB83DF1DC258E92939A6 /* SDWebImageIndicator.h */, + 3227970589E62371501C4D8C28DD4B1C /* SDWebImageIndicator.m */, + D6F2CCB5C719F8790027213B6CF0ED8A /* SDWebImageManager.h */, + 08732566CBDE3EB293493BCD102835A7 /* SDWebImageManager.m */, + 2C249B920F34D0D69C69CA43351E52EE /* SDWebImageOperation.h */, + 9A61CDBD69057C3674739778A8D7E4BE /* SDWebImageOperation.m */, + 269EFD14AB222FEFEC686C63F58F74FF /* SDWebImageOptionsProcessor.h */, + 75D5D4CBB473106CD017A60A4F0284B5 /* SDWebImageOptionsProcessor.m */, + 8FA74E651256F04C8514F0A05679D217 /* SDWebImagePrefetcher.h */, + 2CE706B82C8002B7608E049B83BF0A12 /* SDWebImagePrefetcher.m */, + 29C84A9BCB275444D2358F473D9B5160 /* SDWebImageTransition.h */, + CEED0C5BB9E7BD10174D1CAE5F34FE15 /* SDWebImageTransition.m */, + 2E8FF2BF379FE508F46CAD249E158559 /* SDWebImageTransitionInternal.h */, + 9EE75894CA44B250BFEA11B25F54F149 /* UIButton+WebCache.h */, + C12D160C6063D462EE97C5CD6A35994E /* UIButton+WebCache.m */, + 7D1C2865819BCF073FD84E9A5B8816AB /* UIColor+SDHexString.h */, + D93DC4D1234F76EDC574EBA1402310C2 /* UIColor+SDHexString.m */, + 7F409E94556DE38FF80361104AA14B1C /* UIImage+ExtendedCacheData.h */, + 5A0744C22449018296AB633E5BC2C275 /* UIImage+ExtendedCacheData.m */, + DF0270B966F6AC049BFD4D076AB8B56F /* UIImage+ForceDecode.h */, + 1527F49078C26F2BAB6E17A11F0AC9A9 /* UIImage+ForceDecode.m */, + 397ABB0739D14AE30A56100FCE880DEF /* UIImage+GIF.h */, + 4C5F7FF14062807BDEB2A6D6E4A6DE95 /* UIImage+GIF.m */, + A12EE00E77DE8A43E7CE64F69D345190 /* UIImage+MemoryCacheCost.h */, + 5F23B5AA329AF2C38E62E7CBE5F5D136 /* UIImage+MemoryCacheCost.m */, + 3353CA39B2D60213971EFFABDAE02625 /* UIImage+Metadata.h */, + 38DC37E61EA03D85A44EDCFC75EB6238 /* UIImage+Metadata.m */, + 9AB541F4715AB2A0DE59B23A5696D448 /* UIImage+MultiFormat.h */, + 6BA9B1ACD0A1EB747C6936E484D5208B /* UIImage+MultiFormat.m */, + 9B7BDA9563EB39641E0A578B77FD4FAA /* UIImage+Transform.h */, + A77B70C25747C0E7AE67F784B287D211 /* UIImage+Transform.m */, + 8FFBA60DA7BFD0D987C4E683037FDDB0 /* UIImageView+HighlightedWebCache.h */, + 64FC3145438669B612415058A5D1C68B /* UIImageView+HighlightedWebCache.m */, + 115D9A38E828733E2521BA1DFE025D50 /* UIImageView+WebCache.h */, + 32635BBD805EC978CC3BB3BC4CF3B7E3 /* UIImageView+WebCache.m */, + 06BB1170E7630AD9AB926EE90BE5F730 /* UIView+WebCache.h */, + B72774F6480A029A3A2441E9DF82096D /* UIView+WebCache.m */, + 221F590A160BC28ED1F8AD774E3E9DE5 /* UIView+WebCacheOperation.h */, + 5B69A17E7FED839334E49FA3104B7F83 /* UIView+WebCacheOperation.m */, + 8A7ED5F60A6E593BE4319E09C2FD0BE2 /* UIView+WebCacheState.h */, + A941317B46DF5E4325D43DAC931923A5 /* UIView+WebCacheState.m */, + 715D357C6E37AF2321823A40B86843D5 /* Resources */, + ); + name = Core; + sourceTree = ""; + }; + 22BD1B8E40EAA479D200D4E018A1B387 /* Support Files */ = { + isa = PBXGroup; + children = ( + 9C78F6EF0B85587CCB2705C057DF66EA /* MJRefresh.modulemap */, + FB8AAFEE45EE16BDE3F3360F400C9BF9 /* MJRefresh-dummy.m */, + 44A0BF7F32C28865E6ACA8A8BB27F63A /* MJRefresh-Info.plist */, + 6ECF4C720F0485F7EA3D63E9C28CFBA7 /* MJRefresh-prefix.pch */, + F30BDD15914FC15F21B063466E4635E6 /* MJRefresh-umbrella.h */, + 8594A6CF7D45F1715A10AC3C18700F18 /* MJRefresh.debug.xcconfig */, + 57748DDDE8158306E4B3EAC0E03C99A1 /* MJRefresh.release.xcconfig */, + 0638217979CCFF20B7C6FAFF407CC6B6 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/MJRefresh"; + sourceTree = ""; + }; + 23AABBA54450F01AD14FE2D5004EA190 /* DZNEmptyDataSet */ = { + isa = PBXGroup; + children = ( + C07FA22445AE442F8F429DC97AD5226D /* UIScrollView+EmptyDataSet.h */, + 3FB5EB648C2339F0632D8DD464412282 /* UIScrollView+EmptyDataSet.m */, + 6263588AF125BD2D5ACE21428FE35625 /* Support Files */, ); name = DZNEmptyDataSet; path = DZNEmptyDataSet; sourceTree = ""; }; - 139D61AB9CCEA3CD3FE43AE8F0DFA14F /* Support Files */ = { + 253FE6C203FBC03CF9639A4DBFC761C7 /* Serialization */ = { isa = PBXGroup; children = ( - 79803C4DAA3D0FB997F7A51AB226B9D7 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */, - 504A6EFB974AF03849BCBDD8A6C0A198 /* SDWebImage.modulemap */, - EA4BA3056A1FE6B47E97AA549D4B9423 /* SDWebImage-dummy.m */, - 107E924936A407875330C174B34260AC /* SDWebImage-Info.plist */, - 25391D44BC144DD932559C9E9069347F /* SDWebImage-prefix.pch */, - 037A3F50C10BD2A3B9D2C3743608A737 /* SDWebImage-umbrella.h */, - 5998234B9DD3C83BCD1DE88EDDEA5DF6 /* SDWebImage.debug.xcconfig */, - 0C31E11F6B40D55EB650013FAC1B59C0 /* SDWebImage.release.xcconfig */, + D8682D5ED4B7C56D720AFBA44BC3BC76 /* AFURLRequestSerialization.h */, + 1AF87BA87F8CBB4575826A086C4B0871 /* AFURLRequestSerialization.m */, + E1A687EF38913970F24032AD57F99A10 /* AFURLResponseSerialization.h */, + D62A25339DF2EED2DFE6F9001320C81F /* AFURLResponseSerialization.m */, ); - name = "Support Files"; - path = "../Target Support Files/SDWebImage"; + name = Serialization; sourceTree = ""; }; - 1C8A19406FF58E9BA6BC427CA02E9857 /* Products */ = { + 26D333E08189F9D1ADECA4903B41EFEB /* Frameworks */ = { isa = PBXGroup; children = ( - A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */, - 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */, - 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */, - 1FFED36A657123030ABB700256D73F15 /* Masonry */, - 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */, - 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */, - 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */, - E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */, - 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */, - 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */, - DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */, - B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, - CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */, + EB219D5B4EB24108AB241B8A5F5ABE19 /* Bugly.framework */, ); - name = Products; + name = Frameworks; sourceTree = ""; }; - 1DF4B2EDEE04858C6D572415F9FFA5F7 /* Core */ = { + 2EBFB6421CDB820E5740269D53F066CD /* LookinServer */ = { isa = PBXGroup; children = ( - F2817892F9F21CF8BF9F8F35D58385AD /* NSBezierPath+SDRoundedCorners.h */, - 8BAD239072CC7DFB1FD50FE4374085D1 /* NSBezierPath+SDRoundedCorners.m */, - 1110127348EF0DD2FF03A68A13D86895 /* NSButton+WebCache.h */, - 613A0EC29C46AFB409483355C45FE1C7 /* NSButton+WebCache.m */, - 7DBD5C23623A08CDD875999AA28A1F8D /* NSData+ImageContentType.h */, - 17422A39378973466DCE06FB6ADA832E /* NSData+ImageContentType.m */, - CC47954DDA2CCCD6E92132955A0DE728 /* NSImage+Compatibility.h */, - 5B993C5AF69BCC11CB58D180BE7475BE /* NSImage+Compatibility.m */, - 2BA061B3651D9243CBD96694626B95C1 /* SDAnimatedImage.h */, - 8CD27E7A66F8B685B7056B181A0D4D46 /* SDAnimatedImage.m */, - 9A522D0661C437F2B97B12A18A3478A1 /* SDAnimatedImagePlayer.h */, - 6D30CE312289056E4C5788AB47438FED /* SDAnimatedImagePlayer.m */, - 33E548EC20D55A1581EF030D8F590720 /* SDAnimatedImageRep.h */, - 8A299BC446CAAFD89DBF55F51B07F0F4 /* SDAnimatedImageRep.m */, - DB89640D4CA100127D613D0379809B5A /* SDAnimatedImageView.h */, - 6B21CBEE99C5014F0E0F66C420497FCD /* SDAnimatedImageView.m */, - 241065D9A03A30BC61C328A01C40E560 /* SDAnimatedImageView+WebCache.h */, - 48A9A2DE85C1D87BCD354418BAF78749 /* SDAnimatedImageView+WebCache.m */, - B9EF838DEDDB795D85E2F065BD697452 /* SDAssociatedObject.h */, - 3D7966DEA2CA0101B9FC2C01A1A2909B /* SDAssociatedObject.m */, - BDD492D9CC4757F16B776F8B08A1A49F /* SDAsyncBlockOperation.h */, - E70D2DE5FE013503515AE432AE16071A /* SDAsyncBlockOperation.m */, - 19F3928D9276C0125AA1EBDB31A470E1 /* SDCallbackQueue.h */, - 13D448A155C957ECCF95DC54FBE28569 /* SDCallbackQueue.m */, - F4DCF85783AA9A1B3A613F5BAC3C0FEC /* SDDeviceHelper.h */, - 4D2D491E6C287C5C66C4EF6B165E85BD /* SDDeviceHelper.m */, - 5F52BB443191BF5EA87C6419E4BAFFD5 /* SDDiskCache.h */, - D6C233C8BB873C737FFE3E1DFBC2A186 /* SDDiskCache.m */, - 25AADAD73C32FC4E150A4A19780980C4 /* SDDisplayLink.h */, - F14968FDB67455000B5A2C9A77C64B07 /* SDDisplayLink.m */, - 599EA7E2BEEE9D88C43DF182C6A874D1 /* SDFileAttributeHelper.h */, - 4223ACF818570B18B88D6B2884075BF1 /* SDFileAttributeHelper.m */, - 4E7FA66C9DDB6507631DF1F179557C4A /* SDGraphicsImageRenderer.h */, - 9843F03B02D2521214C5C5583A9BBDA3 /* SDGraphicsImageRenderer.m */, - BF679E0482D915265B5050368ABBB701 /* SDImageAPNGCoder.h */, - F6908A3C9CC8A527E2C3CB20A2C51560 /* SDImageAPNGCoder.m */, - 5E0CFDE214ACE5F071E4BEEF63BDDCD6 /* SDImageAssetManager.h */, - 1CA256AA8704AE9F135214714BAFF153 /* SDImageAssetManager.m */, - 93FB055BA93E62482AD7154A938F761A /* SDImageAWebPCoder.h */, - 0AF433E9D2C6355E77FFBE3AC3CB5B3A /* SDImageAWebPCoder.m */, - 34206822AA40B77DF3E1B3B5D326158F /* SDImageCache.h */, - 3D6CF72BA8B7618D0238AD641B57FE35 /* SDImageCache.m */, - 1F43D293502C6A280429EF2DEFA6C0E6 /* SDImageCacheConfig.h */, - 4770EEEC71445F1C55A5C71E32517009 /* SDImageCacheConfig.m */, - 3CA1F0AA7C906C09D35E1B3B781EB6E0 /* SDImageCacheDefine.h */, - C839ECCA7B6B8EF19AFC3658241117C8 /* SDImageCacheDefine.m */, - 99F9CF6DCFC4C32DE7AC87FA68FD05DA /* SDImageCachesManager.h */, - A3CC467742888B5DE59CC393D50BA540 /* SDImageCachesManager.m */, - AB362641176A92218B886FD83548F6C2 /* SDImageCachesManagerOperation.h */, - A1B6FEE442B47E03714BC3FB94670DCC /* SDImageCachesManagerOperation.m */, - 2FE87671299E95720DB52DD3375B566E /* SDImageCoder.h */, - 12F12865FFC70E396EDFB92C4A7F13D7 /* SDImageCoder.m */, - FF5518BA3449B11DB02406C2A9A9AA75 /* SDImageCoderHelper.h */, - A57C810A36EA495CAFAEDAD83C19A651 /* SDImageCoderHelper.m */, - 89023F2C23C8826F172885D263CC29D2 /* SDImageCodersManager.h */, - 97041A2525062E71B923CEBB11179389 /* SDImageCodersManager.m */, - 1FC42F03931384EE2605E5C1FF575608 /* SDImageFrame.h */, - B6F3F601094A8014DC41447620116D80 /* SDImageFrame.m */, - 148FDB67C55B5854E979447E82AFD54E /* SDImageFramePool.h */, - 131863AC3A27979CE5BF1B35EB9C1CED /* SDImageFramePool.m */, - 8F0FAF8AA7D9999CB7B6AC14DC9F613F /* SDImageGIFCoder.h */, - E5514D264E4855320B70B7010325576C /* SDImageGIFCoder.m */, - 89485243816A18F41367AE862167C061 /* SDImageGraphics.h */, - ED6C24AA261BA4AFA4E02DA1EFA44065 /* SDImageGraphics.m */, - 67A65AF14731E6A6CF631892AB163C2D /* SDImageHEICCoder.h */, - 9D9C32EDDDB1CA2666760FDE90B64590 /* SDImageHEICCoder.m */, - BF86BA22A3F81C27DE4346E22477D2CD /* SDImageIOAnimatedCoder.h */, - 5C0CAD4F0394CDAF40054888E02EB093 /* SDImageIOAnimatedCoder.m */, - 9662C23EC2FEA41BE91046E19A928D8C /* SDImageIOAnimatedCoderInternal.h */, - B00A278D1C0A05DD872C02CEFE3B53AC /* SDImageIOCoder.h */, - E1E6BDC6A27A05429814F2520B890A63 /* SDImageIOCoder.m */, - 97003D4D841CDDF5214C70A6CC7425DF /* SDImageLoader.h */, - 2254BB0E1CAB331C712E8819CE1CEBA9 /* SDImageLoader.m */, - 9964200935BD2352FD5DAD8C2AC9FE07 /* SDImageLoadersManager.h */, - D601D33EE8BB8396FF4AED582379432E /* SDImageLoadersManager.m */, - BD3AE781F5CE5DD3063848F6F78DD40B /* SDImageTransformer.h */, - DF57705B90AB01302C42302B6BB038DD /* SDImageTransformer.m */, - 8F715C3F41E2D739BCA20A8ED2E487A1 /* SDInternalMacros.h */, - DE9EB519F0B4BF7D539877F733F7BCAF /* SDInternalMacros.m */, - 24998A1052F45827E4FFAFAF7FA1542E /* SDMemoryCache.h */, - 59D0E9B54F4868B1B1BDE17140B78250 /* SDMemoryCache.m */, - 79462E533AFF776B12B799A128AA5EE8 /* SDmetamacros.h */, - EF15AFFA76ECFCE490107F1DEB31BD62 /* SDWeakProxy.h */, - FFD58163B84A00F8FD88E21AE9F6DF12 /* SDWeakProxy.m */, - 5248A2EBBCEB19A0BBFA557B594E2DEA /* SDWebImage.h */, - DF2FF7F81EC1FE20B9F8B3879085D4FA /* SDWebImageCacheKeyFilter.h */, - 960792D55E0D95EDBE31A27683F9FEEF /* SDWebImageCacheKeyFilter.m */, - 794882B4F91B9E9B55DD3DF40E04DA22 /* SDWebImageCacheSerializer.h */, - 42189E436FCC0F9F0BAA536F3BF84910 /* SDWebImageCacheSerializer.m */, - CBCBBB0099A9339A1A8ABBEDF291AF92 /* SDWebImageCompat.h */, - 299CDB086FE0568EE14EAB79D7B74437 /* SDWebImageCompat.m */, - 01E24F0E64AEC0E54DBDB063CE89097A /* SDWebImageDefine.h */, - 0370FDB753906B18C1B9AFB8BE7D213C /* SDWebImageDefine.m */, - 9C6609EE1C9372D5E3C70AF9861CE95D /* SDWebImageDownloader.h */, - 94E4D004CAC99A7D4B7144E86418C29C /* SDWebImageDownloader.m */, - 99418F0A943BD9FF46795740F7385472 /* SDWebImageDownloaderConfig.h */, - 2A5A249D6ED704F9FEE1FFBC9B61426F /* SDWebImageDownloaderConfig.m */, - 15EEB72FE94B15511A9B077601BFC002 /* SDWebImageDownloaderDecryptor.h */, - F226E8137EFBE0F2C4ADF98335CAA02A /* SDWebImageDownloaderDecryptor.m */, - 929BD46DB08827C3FD713BC0E928C239 /* SDWebImageDownloaderOperation.h */, - 0C5C306F08907FB9E1301EA07220C6EB /* SDWebImageDownloaderOperation.m */, - ED216C76AB8BA24D783B6A22E1E01C97 /* SDWebImageDownloaderRequestModifier.h */, - 2AEE1DAEE2CD1BAB6DBCBC50916263A4 /* SDWebImageDownloaderRequestModifier.m */, - F6B25A4160A5D48C609C6C2B58E46DE9 /* SDWebImageDownloaderResponseModifier.h */, - 15D08EB14955AB2B841A5E9E16D8D4AE /* SDWebImageDownloaderResponseModifier.m */, - EE96F8DD901EEB1A8375B055EDF7DBBE /* SDWebImageError.h */, - CE89275D8F89A11FB2761E0461236313 /* SDWebImageError.m */, - B6D81E3EC47029DCA820DF6AA652C734 /* SDWebImageIndicator.h */, - 54354678DA42B275327F1EABDD57F9BD /* SDWebImageIndicator.m */, - 5C7AE763582816CA9E57C0D78A7D1A49 /* SDWebImageManager.h */, - 036896A95CE28AB066292A03BAD2BFFA /* SDWebImageManager.m */, - 0BF41BBB1EBC1FE4F91BE320D947ED64 /* SDWebImageOperation.h */, - EFBFF769FFEA0B2F71A0E5EDE7DCDDF3 /* SDWebImageOperation.m */, - C0AED8CDD333F60946EF309E2D789249 /* SDWebImageOptionsProcessor.h */, - AE4708C50A24F74BB9721BF97FDD4782 /* SDWebImageOptionsProcessor.m */, - 5E83988FA8D9C00FAEEA94EE0633C2C5 /* SDWebImagePrefetcher.h */, - CDE77633CA7FA3526B2AA79AB5F21A42 /* SDWebImagePrefetcher.m */, - 3BF9DE6E63B2A31CC1EADA84D3E42E7A /* SDWebImageTransition.h */, - 4819E2A59EFDCF27B3C3DDB40C7B2D13 /* SDWebImageTransition.m */, - 9E3D65B846C5EFBA9201404CD8BDC1DA /* SDWebImageTransitionInternal.h */, - 615CFF22184D20B3B6107165A49D6FEF /* UIButton+WebCache.h */, - FC8B5F084763484BB92BA1D312960E45 /* UIButton+WebCache.m */, - D6A9452B8FC36F44EC5608AB04827703 /* UIColor+SDHexString.h */, - F299DB132C67105BBC5A78FBCB87FCF2 /* UIColor+SDHexString.m */, - 7B54AFD2BD6CA59B1C3B03B1146FE77F /* UIImage+ExtendedCacheData.h */, - 71BB52034FF7403843EE79E4975D6D70 /* UIImage+ExtendedCacheData.m */, - 2A67F3F63FB3C05544B8F66F7ED89E74 /* UIImage+ForceDecode.h */, - BB09D1C81119E88D019FD33037BC5587 /* UIImage+ForceDecode.m */, - 2DFD54923DA02EA135A1A1E2F56CBDE1 /* UIImage+GIF.h */, - 3D64DD7369F8D81EDC16FC3539F46D73 /* UIImage+GIF.m */, - 80FED7368916E2D1EE8E2B7F26A2618F /* UIImage+MemoryCacheCost.h */, - F66C529D67E3A61B55DFF40E581048ED /* UIImage+MemoryCacheCost.m */, - E614E7E1FA6658E0B9CF44C05D4E6811 /* UIImage+Metadata.h */, - 0FD3FF7FA5E997D3DDAB5C272F8734A6 /* UIImage+Metadata.m */, - C59B65D3E951B3FDACD866C4564C0214 /* UIImage+MultiFormat.h */, - 7CBB9E2731CD9B8F896AD9F7398CD3F6 /* UIImage+MultiFormat.m */, - AA8F3F4E9CF14305D8C83582492FEA87 /* UIImage+Transform.h */, - DD9F495B1E192CA5A7EA012DC8524457 /* UIImage+Transform.m */, - 3996B697C00897DAFE1DFD73DAA4E114 /* UIImageView+HighlightedWebCache.h */, - F0BE45EAE3F2E6B703C484173BD9CDAD /* UIImageView+HighlightedWebCache.m */, - 9DFECBD4586BE9AE288AFFA5027A9A24 /* UIImageView+WebCache.h */, - FA1B344071044AFFAABF1077219DEC22 /* UIImageView+WebCache.m */, - 98B6A3897B6D415F51E7F65FD9A20296 /* UIView+WebCache.h */, - FAA44D6FF1A44EB319965DB5E0CC5F73 /* UIView+WebCache.m */, - C9154FA9EFF76FE4C993ADDBEB9A5EE4 /* UIView+WebCacheOperation.h */, - 8AE06F501FB1F02940458122AC396D62 /* UIView+WebCacheOperation.m */, - 832592FA01CF620F64F9CED4966CEA99 /* UIView+WebCacheState.h */, - 96D5456A17DF66E262562E8208ADEFF0 /* UIView+WebCacheState.m */, - F364D65121D8297BD4970B4E36B87837 /* Resources */, + 19E12BE9CE9CE105A9ABABB0F83900CB /* Core */, + F70CAA8D03120C833BBEE4DBB0DC6756 /* Support Files */, ); - name = Core; + name = LookinServer; + path = LookinServer; sourceTree = ""; }; - 278BA3F4B18D03DAFFA7B31C7D8082C1 /* NSURLSession */ = { + 30662F4E68E56D663F93AD44284D7A3F /* Bugly */ = { isa = PBXGroup; children = ( - E5F4E4918198D7216ABDC0BE4C9BFCE9 /* AFCompatibilityMacros.h */, - 8A3DF7C8B0CA95D284475EF487EC6944 /* AFHTTPSessionManager.h */, - 8CABC6887E9E2AF4A62642A0C780B4B3 /* AFHTTPSessionManager.m */, - 35618C07738616EC64E35AB9084E01C6 /* AFURLSessionManager.h */, - A6A924083322C61BD2DC82A438F46687 /* AFURLSessionManager.m */, + 26D333E08189F9D1ADECA4903B41EFEB /* Frameworks */, + 933CB05F159214207AF50CD044DA7A14 /* Support Files */, ); - name = NSURLSession; + name = Bugly; + path = Bugly; sourceTree = ""; }; - 3A0A951B4CD76B39B843EF2102500514 /* AFNetworking */ = { + 34826E63DF35EE3F8BAD76BE43B80FFB /* MBProgressHUD */ = { isa = PBXGroup; children = ( - 743C4A42055B7373FB20F646193D0919 /* AFNetworking.h */, - 278BA3F4B18D03DAFFA7B31C7D8082C1 /* NSURLSession */, - F8863687E232B36E6A3336B80CEF9AEF /* Reachability */, - 42D550893AB4C7DEACCB0BA2BD275931 /* Security */, - A5DEA61008E4B3C548059441B307E57A /* Serialization */, - EAF375AA4ECFCEFB8A42837BED2CA767 /* Support Files */, - 4DFD5EFE1D39A89202C706E005AEAC6C /* UIKit */, + 7020F5FD7E08D02DFB263422BBB5EBCE /* MBProgressHUD.h */, + A143D09B35BD8CC84D08FB36C49D2099 /* MBProgressHUD.m */, + D9F07D6F2272135B5E1B7D613E619612 /* Support Files */, ); - name = AFNetworking; - path = AFNetworking; - sourceTree = ""; - }; - 3C8938BD791B748D62E0594E21A8F606 /* Pods */ = { - isa = PBXGroup; - children = ( - 3A0A951B4CD76B39B843EF2102500514 /* AFNetworking */, - 632F5BB47DEA8EC3D22F645F32B611D0 /* Bugly */, - 055E201C6FE65C14750CE007D95094C3 /* DZNEmptyDataSet */, - 482C57567033D15CB5B58A3A51D16047 /* LookinServer */, - 49A74F626BD81F04B89DC8F68C0C8423 /* Masonry */, - EE64A145CDD38964AF4945D376B599A2 /* MBProgressHUD */, - E11E673B56635EAB5EC9773B8D724830 /* MJExtension */, - A369C1279A7423AC4561A1711312F059 /* MJRefresh */, - C5610FA28BEC5D4814F24C959B9C82BB /* SDWebImage */, - ); - name = Pods; + name = MBProgressHUD; + path = MBProgressHUD; sourceTree = ""; }; 4098ED899C8DF8E013F9F260ECFAA236 /* Pods-keyBoard */ = { @@ -1510,13 +1835,19 @@ path = "Target Support Files/Pods-keyBoard"; sourceTree = ""; }; - 42D550893AB4C7DEACCB0BA2BD275931 /* Security */ = { + 4140F4CDE908BCC638DE30D6AD7E286D /* Support Files */ = { isa = PBXGroup; children = ( - 3F61B84FD6B8249C85FCBF56257E34C6 /* AFSecurityPolicy.h */, - 34294BB6B51E74AFE5298D85D957E2F6 /* AFSecurityPolicy.m */, + 9BCDAC8B780C194868C6063FBF20A57A /* HWPanModal.modulemap */, + 6A94D2984C9A5BA88F4AA771F38B8314 /* HWPanModal-dummy.m */, + A35EA195B83881018F93E59FE86940FC /* HWPanModal-Info.plist */, + 73D83AA6FEB5E85D4F5AA27E2C2ADB69 /* HWPanModal-prefix.pch */, + A16552B472D24C41550970F7A20D2306 /* HWPanModal-umbrella.h */, + C9DEFB96646787781652ABFE1D5648AF /* HWPanModal.debug.xcconfig */, + 3011D5BF791250C05C8D7C5BD12BC772 /* HWPanModal.release.xcconfig */, ); - name = Security; + name = "Support Files"; + path = "../Target Support Files/HWPanModal"; sourceTree = ""; }; 47B776543D6613BCB6FB72308F863018 /* Pods-CustomKeyboard */ = { @@ -1535,271 +1866,341 @@ path = "Target Support Files/Pods-CustomKeyboard"; sourceTree = ""; }; - 482C57567033D15CB5B58A3A51D16047 /* LookinServer */ = { + 5DBA2FE1A0B71A23FCB50AB66BEDCF44 /* Support Files */ = { isa = PBXGroup; children = ( - FB435B3C1ABA904B9D4AEBB59855C935 /* Core */, - 73B1383B55A4637636F1D1641B1B4B2C /* Support Files */, - ); - name = LookinServer; - path = LookinServer; - sourceTree = ""; - }; - 49A74F626BD81F04B89DC8F68C0C8423 /* Masonry */ = { - isa = PBXGroup; - children = ( - F68B2B4FABAF7DB3BFD45E81B3302EEE /* MASCompositeConstraint.h */, - ABFE70D35403EBB3D3B8E84170698E30 /* MASCompositeConstraint.m */, - B36A499BB6A9A389E077337779129B95 /* MASConstraint.h */, - F57A932DBB8EE96EEDB42899B11A3E40 /* MASConstraint.m */, - 7BA0DD426F8305DA317D708459ABA12F /* MASConstraint+Private.h */, - 63B2D397715E1B3990E46DFCAE0A73D5 /* MASConstraintMaker.h */, - 3D891833337A0E2AFA0DBB31899C747F /* MASConstraintMaker.m */, - 82B53F06F74B4F928AF69994EDA63D71 /* MASLayoutConstraint.h */, - 5AE5F5B6D6DAD0B45FC2D30EE6FBEE81 /* MASLayoutConstraint.m */, - B069597AD0812CBF01ACDD3CE4B6F843 /* Masonry.h */, - 21628153BCD0325102EB502FB5AEDF0F /* MASUtilities.h */, - EA5E2A6BFD8D228A6FF7C7C749D642DB /* MASViewAttribute.h */, - 07F0D69559BBD9895C4D0BD66F33AC55 /* MASViewAttribute.m */, - 2FD6A0DEDE4E0A17B8A614C8D15158DD /* MASViewConstraint.h */, - BBC10C6127599FC7CD74CA6E613C44DB /* MASViewConstraint.m */, - 7D45408149C7FF7C3CD91B6DDBFB7448 /* NSArray+MASAdditions.h */, - A054792401E8F9F7BEA8441F9C1DA7C7 /* NSArray+MASAdditions.m */, - E1C46B6B074DF2D170E6F2ACB5E8C8BA /* NSArray+MASShorthandAdditions.h */, - 1A62C9B59CFA9D74EE95F526BE485EC8 /* NSLayoutConstraint+MASDebugAdditions.h */, - 96E64D1052C3FD60EB6BBB8A95EE1349 /* NSLayoutConstraint+MASDebugAdditions.m */, - 6289794567935CA3DC8B5C49AEA74043 /* View+MASAdditions.h */, - 59AE847A100A8834951E42690C982455 /* View+MASAdditions.m */, - 31E7ED25B098BFBF30E180BFC0E2174B /* View+MASShorthandAdditions.h */, - B4D76F7EB1CE870804724BC071C5ACB3 /* ViewController+MASAdditions.h */, - 904AEE3BB6B326E7E1CFD8B0A34306AB /* ViewController+MASAdditions.m */, - 004BCCE6E90EA8F999F5DD21EFC4736A /* Support Files */, - ); - name = Masonry; - path = Masonry; - sourceTree = ""; - }; - 4DFD5EFE1D39A89202C706E005AEAC6C /* UIKit */ = { - isa = PBXGroup; - children = ( - A565D25677F6FEEAD298666682CDA4B2 /* AFAutoPurgingImageCache.h */, - 3C0293D25B82D4CCF17D52B025BDDA03 /* AFAutoPurgingImageCache.m */, - D3C9902E0E2D0A78C2A349E20322FC80 /* AFImageDownloader.h */, - A67D546CB537E231FE83AA071A555BB7 /* AFImageDownloader.m */, - 245FCAB926AF197B8F4E931DD8477D4A /* AFNetworkActivityIndicatorManager.h */, - 3DD65B80E7AA07416BB8F502F3C3A438 /* AFNetworkActivityIndicatorManager.m */, - F53768EF8D38709F253FC1C181B05162 /* UIActivityIndicatorView+AFNetworking.h */, - 15E423D2DE3EB3895273EDB5BC21FDE9 /* UIActivityIndicatorView+AFNetworking.m */, - 35182E600B80DDDFBA4A4B90FAA71EFD /* UIButton+AFNetworking.h */, - 2D93B5DFF8656FC20174F5CDCB325540 /* UIButton+AFNetworking.m */, - 319E8C485C3E5DB2BFBF15AA61E5ABA9 /* UIImageView+AFNetworking.h */, - 4D125D803F381B689272DFC8613DDA9A /* UIImageView+AFNetworking.m */, - E727648E6DB0C84B6B5C85D16CF9D6AC /* UIKit+AFNetworking.h */, - 219886C4AF0E20C3CD4D4061CAAE8767 /* UIProgressView+AFNetworking.h */, - 2D3B8DD288273B0C3AFDD2F366BB894B /* UIProgressView+AFNetworking.m */, - 32556CF656ADFF88DE99F135C7BE2EB7 /* UIRefreshControl+AFNetworking.h */, - 9228BFB339DE3C8FD5163C974AB7DE89 /* UIRefreshControl+AFNetworking.m */, - 8E466B1532DEF5F8A8FE002C3882E69E /* WKWebView+AFNetworking.h */, - 0426BF3118E242E4EA8BB1145A2A6F60 /* WKWebView+AFNetworking.m */, - ); - name = UIKit; - sourceTree = ""; - }; - 632F5BB47DEA8EC3D22F645F32B611D0 /* Bugly */ = { - isa = PBXGroup; - children = ( - DB6A5FFB077AA72411EB46B8A77A31B0 /* Frameworks */, - A6678288D73D0E7B53AB75DF84AA65D4 /* Support Files */, - ); - name = Bugly; - path = Bugly; - sourceTree = ""; - }; - 6CE3F18721CC834AA1D80F2A9F218CA5 /* Support Files */ = { - isa = PBXGroup; - children = ( - 2625A6F485FAAFFDD766C135FDF8F796 /* DZNEmptyDataSet.modulemap */, - 52CE89D1B7CAF7D6D1E509FE1267800A /* DZNEmptyDataSet-dummy.m */, - 20C240076DD8D1DC14E751DAFAE98662 /* DZNEmptyDataSet-Info.plist */, - 26E9B5584E3E3AA9E7AF8978192DF06B /* DZNEmptyDataSet-prefix.pch */, - FBE4C2596FA0518DD6CED29332B75B5B /* DZNEmptyDataSet-umbrella.h */, - 61A50E7751555885AEB4247687F5DF05 /* DZNEmptyDataSet.debug.xcconfig */, - 52832E51BDED300B58102A301664AD5A /* DZNEmptyDataSet.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/DZNEmptyDataSet"; - sourceTree = ""; - }; - 717E6458BD53164643C1A5869C11B538 /* iOS */ = { - isa = PBXGroup; - children = ( - 86A260983254EF2D214865E91D3787B2 /* CoreGraphics.framework */, - 3964617E5C241BE3E12D8F1D88607841 /* Foundation.framework */, - CFBDDF0554D720E199E1094AAEC3D171 /* ImageIO.framework */, - D673941813D9CA4EFFC6C32109054DC5 /* QuartzCore.framework */, - E1DF8BF780A4AD9606856AB857CA1D86 /* UIKit.framework */, - ); - name = iOS; - sourceTree = ""; - }; - 73B1383B55A4637636F1D1641B1B4B2C /* Support Files */ = { - isa = PBXGroup; - children = ( - 3CF065C3DEDD146A59230103D73E1A55 /* LookinServer.modulemap */, - C4BB81E05861A9C00B09F3A39D27B164 /* LookinServer-dummy.m */, - 2CFE5CE900A783BD5709EEF033BA8475 /* LookinServer-Info.plist */, - 400DE9B9180EAE02FE3ADA6DB9EFD64F /* LookinServer-prefix.pch */, - B1A8FD671105727BDE389DF6E59E7187 /* LookinServer-umbrella.h */, - 9641B4F4D8DDE2072CB32BF4C9C2882A /* LookinServer.debug.xcconfig */, - 2DAD93B79D27664FE05E862A2C992A45 /* LookinServer.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/LookinServer"; - sourceTree = ""; - }; - 85416DF4AE2111F696182FA844F2611A /* Support Files */ = { - isa = PBXGroup; - children = ( - 61E1874601B077A6F69725D9EF8827B1 /* MBProgressHUD.modulemap */, - 16C85770D72E9770C476992A31B3655F /* MBProgressHUD-dummy.m */, - D3412473E790C600A01CFF5127EA049C /* MBProgressHUD-Info.plist */, - 6A6FA79B39689AE1D69FBABCD4BB8F7B /* MBProgressHUD-prefix.pch */, - D219431FF998A6D0FA270965A4CDE56D /* MBProgressHUD-umbrella.h */, - 2940A878AE956B2190BA5A68D63DC5AD /* MBProgressHUD.debug.xcconfig */, - 71C7BAB63ED44B881A65C001AA682ADB /* MBProgressHUD.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/MBProgressHUD"; - sourceTree = ""; - }; - 8AB9F15B6060B4A24C4EA01AC9540849 /* Support Files */ = { - isa = PBXGroup; - children = ( - 0AC3ECEAAABFC0FEDCE3E1B814F1A7E5 /* MJRefresh.modulemap */, - 4D47A5312A106ED050240FD5A4E84CE4 /* MJRefresh-dummy.m */, - D226F4D7ADA4D7570E831057BF0F25E7 /* MJRefresh-Info.plist */, - 650740D8E20A30E70F588321BC583BBC /* MJRefresh-prefix.pch */, - 2065E7BBA3909607E34531E7D59623FF /* MJRefresh-umbrella.h */, - D2BBA8DCCC9E2658211368C22BE1B033 /* MJRefresh.debug.xcconfig */, - 45EDC4788D38048F75B7F3CD0BEF1783 /* MJRefresh.release.xcconfig */, - 51D6AF1225DCDC66E13DAA2BCB6B1DCF /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/MJRefresh"; - sourceTree = ""; - }; - 9F62E2D2D42206A4CD335DDB26C286FF /* Support Files */ = { - isa = PBXGroup; - children = ( - DE365B0506D97BB22271ACD3BE9D48CC /* MJExtension.modulemap */, - 2A7BA44CD5FDF42B32263B5F4259A024 /* MJExtension-dummy.m */, - 5CAEE17C08505E0DF4A1EF22D4CAD064 /* MJExtension-Info.plist */, - 964A9667953DC95C883D7E82FD74B649 /* MJExtension-prefix.pch */, - 808621872AB88E6448666731EB043018 /* MJExtension-umbrella.h */, - 57BCCC946B3042A20D0C8F15D69FF943 /* MJExtension.debug.xcconfig */, - 3E2A55F2F78E11DEDCF2FA119B3E1912 /* MJExtension.release.xcconfig */, - 0BDAABEB54032920AAEBA43908724F60 /* ResourceBundle-MJExtension-MJExtension-Info.plist */, + 89AF890E0CFE5DDF9869F06650066AA4 /* MJExtension.modulemap */, + 317BBB3797CCCBC8D9201446D3C35C11 /* MJExtension-dummy.m */, + 0B1027E2DC84E88E6F5E35A21EB804D5 /* MJExtension-Info.plist */, + B51D6BDADBE9F95F37BE5FDCC3849A36 /* MJExtension-prefix.pch */, + B979B6198848283DB66503E656A49837 /* MJExtension-umbrella.h */, + 87352714D54CE9C3DCA836E85ABDE2D9 /* MJExtension.debug.xcconfig */, + 380B11CB6389CFA1B7904A11C79EDA18 /* MJExtension.release.xcconfig */, + 48848C87D33425CDC35A3154B4C1E819 /* ResourceBundle-MJExtension-MJExtension-Info.plist */, ); name = "Support Files"; path = "../Target Support Files/MJExtension"; sourceTree = ""; }; - A369C1279A7423AC4561A1711312F059 /* MJRefresh */ = { + 61D45F4E2C8D21B25DDEFC89074CF2F0 /* Support Files */ = { isa = PBXGroup; children = ( - A53791C99F3E8789C928D8471E4310AC /* MJRefresh.h */, - A417B5FC83ECB57A121FCD14A6DD23D3 /* MJRefreshAutoFooter.h */, - D404BDF65C17843DC41C1611EAAA22EB /* MJRefreshAutoFooter.m */, - C79FFC2722DEE9A1F54D8DBDD3CB2A2C /* MJRefreshAutoGifFooter.h */, - 6E49D88BA109001AA94CB4B1CBCC6353 /* MJRefreshAutoGifFooter.m */, - FAF1C0B2DCF27A6785AA511B6C9290B9 /* MJRefreshAutoNormalFooter.h */, - 79E1EEF42DE5E1954630A63B8A5E02B6 /* MJRefreshAutoNormalFooter.m */, - 80F9F8B5249F11798A805DF46C09F2CA /* MJRefreshAutoStateFooter.h */, - 9450EAE5D947C741A2403ADD203E1875 /* MJRefreshAutoStateFooter.m */, - FDD0D2A5CBDCDA5BDF9600C731F95B24 /* MJRefreshBackFooter.h */, - AB22EEA7E251269666B0DD8D3FCD0892 /* MJRefreshBackFooter.m */, - 2CC603030F93055E51FF99944B356CB6 /* MJRefreshBackGifFooter.h */, - 948E1E3EDCE53B021791B9169CCC28BD /* MJRefreshBackGifFooter.m */, - B70FF2E3C927A22C388C16FE8C3F56DB /* MJRefreshBackNormalFooter.h */, - 426AEC2F7F358DEDB66C3F2D15F925A4 /* MJRefreshBackNormalFooter.m */, - 58AA57BAA26D8C03E401EEFD3C78271F /* MJRefreshBackStateFooter.h */, - 0E24EFDE111F674B782A0DB6E26DA6D2 /* MJRefreshBackStateFooter.m */, - 383AEE356898B114D8DD079C51566FF2 /* MJRefreshComponent.h */, - EF2661A0DF69E1828AB8D83F666F4FBC /* MJRefreshComponent.m */, - B985D3DA018E1C8C3AC44ADE702B404B /* MJRefreshConfig.h */, - 4C9BF32317317006604613DB6B7E6531 /* MJRefreshConfig.m */, - B9E85A8129A4E7BFE16B2262D78F1DCC /* MJRefreshConst.h */, - 9324A882B3ED55B3EF9D92D946555583 /* MJRefreshConst.m */, - 120B89B8756AC54266917A34CDCADBB2 /* MJRefreshFooter.h */, - A4E4BD7B01B4DA8E6A41CD86E6AB6B44 /* MJRefreshFooter.m */, - E7FE66EE9C43A4BD03E9F354FADF7098 /* MJRefreshGifHeader.h */, - 0F0234E8EBBDCA694F549267CF8444C2 /* MJRefreshGifHeader.m */, - D5509360DE46CF0B8D64058FE9FD45E8 /* MJRefreshHeader.h */, - 5989AAAB35D0B7EF697456F3897FACEC /* MJRefreshHeader.m */, - 5932D997195DFCB258D366D038A56978 /* MJRefreshNormalHeader.h */, - 854F1B8C164960BB0D2721562BD6E7E5 /* MJRefreshNormalHeader.m */, - A8E1E4CE0CD5AF60097B9523ED2201F8 /* MJRefreshNormalTrailer.h */, - E25013592494E49EB3F378AA4A68FB7A /* MJRefreshNormalTrailer.m */, - E0E79E8251323154CB271295CCD93D0A /* MJRefreshStateHeader.h */, - D3A9927A87E21A8976D18DC44FE50014 /* MJRefreshStateHeader.m */, - 3DDB2F652BC38BC05396DCC9F34040CD /* MJRefreshStateTrailer.h */, - 6A2C339DB0F9EF94544BE6FCDA59F50F /* MJRefreshStateTrailer.m */, - E603FC069FE0FF9249D8A7348F6E7795 /* MJRefreshTrailer.h */, - ABCA85AD5553CAA4C58A12223211E18E /* MJRefreshTrailer.m */, - 1E12075C58652877783AAD26D8A6ED78 /* NSBundle+MJRefresh.h */, - 8E6B85BD26EE974026A447B476B2932B /* NSBundle+MJRefresh.m */, - EE4B0CFE38831013E2F465F169783700 /* UICollectionViewLayout+MJRefresh.h */, - B7D4D5B8A3207BDAE71FAE9F1B443CBF /* UICollectionViewLayout+MJRefresh.m */, - B640B3AD2FE955C7A51E5B1F84A61189 /* UIScrollView+MJExtension.h */, - F61E20013C3B1EBDF05023CF2525C38C /* UIScrollView+MJExtension.m */, - AEB9B57AEEA7BDF0C696120F4B110F33 /* UIScrollView+MJRefresh.h */, - 0236FAD4E41045C8223B36E40BDEDF2C /* UIScrollView+MJRefresh.m */, - 61AA277CF1084D31AAA460D8C1A9BE4E /* UIView+MJExtension.h */, - 45DC3F40C3A1FA5B5920DED3DF89557C /* UIView+MJExtension.m */, - FD75246711B9ACD8C080F9752A75506E /* Resources */, - 8AB9F15B6060B4A24C4EA01AC9540849 /* Support Files */, + 08CEA16AAD05A8A9CB6FB2E2306DD5A9 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */, + 95CE408CF328A01B1BEE4325824DB1C6 /* SDWebImage.modulemap */, + 94EC9A7C408C26C1E3959F02360523F7 /* SDWebImage-dummy.m */, + 10BE44D639650FFA77A358DCD2603F89 /* SDWebImage-Info.plist */, + F7D31CEA08897E65AFD68DFA556F9A76 /* SDWebImage-prefix.pch */, + D8BA408618D220AA3B9C6EE5D3745E21 /* SDWebImage-umbrella.h */, + CE9DC3EBC5E4498B6CBDAA25AFECD440 /* SDWebImage.debug.xcconfig */, + D57BF77833CFB4176D299C7D13ACBA75 /* SDWebImage.release.xcconfig */, ); - name = MJRefresh; - path = MJRefresh; + name = "Support Files"; + path = "../Target Support Files/SDWebImage"; sourceTree = ""; }; - A5DEA61008E4B3C548059441B307E57A /* Serialization */ = { + 6263588AF125BD2D5ACE21428FE35625 /* Support Files */ = { isa = PBXGroup; children = ( - CA67A34B63E36E76FF453D2ABD613A39 /* AFURLRequestSerialization.h */, - 5C457050D64C2C7287BDFC768D33C9AE /* AFURLRequestSerialization.m */, - F3D6C729EB2C2561DF46F90B1EE029B4 /* AFURLResponseSerialization.h */, - 05D83C1EC3DD8D27EE1C07CFDE18D72E /* AFURLResponseSerialization.m */, + 58EF98364CA25B52C8DF52E35A63A6BB /* DZNEmptyDataSet.modulemap */, + FA5982BFE2863F2A7591EEA5A3374FB5 /* DZNEmptyDataSet-dummy.m */, + 0BB10D586B41516BBFB3A82A983FB648 /* DZNEmptyDataSet-Info.plist */, + 6AC0CAE7328F30AAD9591CBF92851E5D /* DZNEmptyDataSet-prefix.pch */, + C5805469F7E93E743A134E4EEC762665 /* DZNEmptyDataSet-umbrella.h */, + C354B162321F2CA18DB1B330D092378E /* DZNEmptyDataSet.debug.xcconfig */, + 83ECFAFFBD6F90A4A996E32508211B96 /* DZNEmptyDataSet.release.xcconfig */, ); - name = Serialization; + name = "Support Files"; + path = "../Target Support Files/DZNEmptyDataSet"; sourceTree = ""; }; - A6678288D73D0E7B53AB75DF84AA65D4 /* Support Files */ = { + 70104E6856A041C557137A2D6E976E41 /* HWPanModal */ = { isa = PBXGroup; children = ( - 18DB01964CBE026F2E6511875E1A98E2 /* Bugly.debug.xcconfig */, - 8C9727D0D56A9017D437CA50176F0474 /* Bugly.release.xcconfig */, + A7BD9DB001526EC0DE681E63675B8318 /* HWBackgroundConfig.h */, + 9E1C83957751BACAB22569AE64250554 /* HWBackgroundConfig.m */, + EE48BDF616ED4BAED9CAABA06281EC92 /* HWDimmedView.h */, + D576F2E6ED4261CAADE09C891ED19EEF /* HWDimmedView.m */, + C53E65DBE6C4798EE75818796AEE4D8C /* HWPageSheetPresentingAnimation.h */, + D1AB74F96045D59C6D2386964814DA47 /* HWPageSheetPresentingAnimation.m */, + F50930AF985486436650C129CC8670FF /* HWPanContainerView.h */, + 0A148033E0AD112C21B19DC7D700C287 /* HWPanContainerView.m */, + 99D142261C81911E0D8BD4684EC87BB5 /* HWPanIndicatorView.h */, + 30B685B44F3C08EAECD172ACBC891B15 /* HWPanIndicatorView.m */, + DC656082CB5200E5E1AF1B4BE99048B3 /* HWPanModal.h */, + 1BF03DA63A4A2F42BE9BA070226F0116 /* HWPanModalAnimator.h */, + 5C5640AE0C2091C5FC7A8CFD27229CC3 /* HWPanModalAnimator.m */, + 52AC10A81E2C53178BFD809330041A7E /* HWPanModalContainerView.h */, + 7C8E106F1C7C00CCE5C4691E7DFD2859 /* HWPanModalContainerView.m */, + F39EC289147F8732DE9E200AEBD42C99 /* HWPanModalContentView.h */, + 121C303DCF5199C717010EF66462BD05 /* HWPanModalContentView.m */, + 6E2233B3F4E54A10BBB04EA668A8B0BC /* HWPanModalHeight.h */, + 35F4A1DCA414FF4A5C14BDB494A4BCE4 /* HWPanModalIndicatorProtocol.h */, + 87FB553A3CC72081333DBA02B2136CF8 /* HWPanModalInteractiveAnimator.h */, + F825F22155AA272C7B94795CFB508AE6 /* HWPanModalInteractiveAnimator.m */, + 944C193267D20C3EDAC9F40BC95BA365 /* HWPanModalPanGestureDelegate.h */, + 0C180A1C6E6C287310FABCB81CBEEB07 /* HWPanModalPresentable.h */, + 8AF449E5E9E00FFF6BD1DD6F39E654AC /* HWPanModalPresentableHandler.h */, + 50AB72625252A5E15E31076E002BFCDA /* HWPanModalPresentableHandler.m */, + B1272B72DEF143341E0CC0451AF17506 /* HWPanModalPresentationAnimator.h */, + 3DF0E590DEA8DD03BE15CBF72CDCBE8B /* HWPanModalPresentationAnimator.m */, + 464FA74F22BA11120A125593D04ECC10 /* HWPanModalPresentationController.h */, + FCEC0D919F385E28169E6FC7B6EAE42C /* HWPanModalPresentationController.m */, + 1BA698A47BE0BCA54FA1B10EF6CD2196 /* HWPanModalPresentationDelegate.h */, + C917ABB653A9CB7D7518FCE9F40F2F2D /* HWPanModalPresentationDelegate.m */, + 163946A4F251CC5F8129585DD75C0870 /* HWPanModalPresentationUpdateProtocol.h */, + BBD303CA2BE52A14A7809A2F458FE949 /* HWPanModalPresenterProtocol.h */, + 1D7BBE0F835610A258CF510E00DC847F /* HWPanModalShadow.h */, + 29982B3E12912C7BE794585B2B7F77CC /* HWPanModalShadow.m */, + 845117372901F4A5A3D286F10A26B6EC /* HWPresentingVCAnimatedTransitioning.h */, + 62F129163AC40C289B2AEA5C7DEBE679 /* HWShoppingCartPresentingAnimation.h */, + 8F53205FC53C4FCB1F1D5089D62F9DFC /* HWShoppingCartPresentingAnimation.m */, + 40BFEDE02CC0E566BBDC5A631AF4AF85 /* HWVisualEffectView.h */, + B466F948757742572AAEA4DF218BD987 /* HWVisualEffectView.m */, + 3C462ACDAC6DCEE65350D4BC510A2E99 /* KeyValueObserver.h */, + A97B23EA4BC5A09E3AB9062612C11DE8 /* KeyValueObserver.m */, + E634ACC2034218ADC26B5D4109F49AA9 /* UIScrollView+Helper.h */, + C46FC528BD8EF754DE7F229CABF54A73 /* UIScrollView+Helper.m */, + 01DAF6FB6694A07703202991DBBEA497 /* UIView+HW_Frame.h */, + 33A93A838A9C0189A366EF1F2D8FC9A5 /* UIView+HW_Frame.m */, + 819AF2C3BB9CCBDC0A03029D56096EA4 /* UIViewController+LayoutHelper.h */, + 8EE35BE199AAA2D6723052ADC7573E04 /* UIViewController+LayoutHelper.m */, + 9A65EE54330746267B5EE5B6873635DA /* UIViewController+PanModalDefault.h */, + 99AE60DF16539817ECDA464B8C0BF588 /* UIViewController+PanModalDefault.m */, + 581D45C2162C5967784E2A106C696662 /* UIViewController+PanModalPresenter.h */, + 041476A9D72BD942940B39097904435C /* UIViewController+PanModalPresenter.m */, + E2238DC60FAF777CC267A61F86DC909F /* UIViewController+Presentation.h */, + CFCADA560B6CBB7BCDE9CD39CDBE90F2 /* UIViewController+Presentation.m */, + 4140F4CDE908BCC638DE30D6AD7E286D /* Support Files */, + ); + name = HWPanModal; + path = HWPanModal; + sourceTree = ""; + }; + 715D357C6E37AF2321823A40B86843D5 /* Resources */ = { + isa = PBXGroup; + children = ( + 99C1A927375BA228B8AD38FDB36211B8 /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + 736D4B336E551C5E1C2C78E683E7C01A /* Masonry */ = { + isa = PBXGroup; + children = ( + 33B1E0CA964F32623BB6975D9AC53C26 /* MASCompositeConstraint.h */, + D52F3A758237EAA29F8DFF3603985B94 /* MASCompositeConstraint.m */, + F4187BCD5B0BEB79E4E3553B6413AF27 /* MASConstraint.h */, + 0EDF4F1BB23D4262A7612DC313B361ED /* MASConstraint.m */, + 5A37D9FEABB61A71285A73CDE4C5E9EE /* MASConstraint+Private.h */, + 32809A6CFD5412906D97C8C7FCB8E331 /* MASConstraintMaker.h */, + E3ED3F5FB825F25AD8EB19CE0AC86B77 /* MASConstraintMaker.m */, + 5B7AF4A837E5E99D79B146178585C2C3 /* MASLayoutConstraint.h */, + 90219DE322B8BCFE6BF680852EBEF4F5 /* MASLayoutConstraint.m */, + F56A3D2CEFC20C7B8AF2EDF3674BEE77 /* Masonry.h */, + 14121BAD9B9FA92863D1125B50D54DF4 /* MASUtilities.h */, + 144086F1366328F4F927C4F459E44619 /* MASViewAttribute.h */, + CCFCCA3349FCD1D6463769CF4AAFD75C /* MASViewAttribute.m */, + DBC5FB408D1CC34D172A8CECF2AE6860 /* MASViewConstraint.h */, + 8862727C1E338311DF7340BC59FC7388 /* MASViewConstraint.m */, + 587CB6117FEDC0DADE247998FA290F62 /* NSArray+MASAdditions.h */, + 0EC3BDE6337E9995ACF80D1DE71F506A /* NSArray+MASAdditions.m */, + 737E319C87B4A4FA348810E15675B757 /* NSArray+MASShorthandAdditions.h */, + 59AF70C47DF0209B5D93F81A25EFB8EC /* NSLayoutConstraint+MASDebugAdditions.h */, + A6C86B0A2BE58730A7EC5C60F201E0CC /* NSLayoutConstraint+MASDebugAdditions.m */, + B71B6DD998C6C529D683056C8285BE11 /* View+MASAdditions.h */, + D9D5E9D7932C124D684E6F1F2A2ECE7D /* View+MASAdditions.m */, + 18F1A2756FCB9AE94DFF016BE720ED41 /* View+MASShorthandAdditions.h */, + 47A1CD68D6C47087933E20DA80B1E693 /* ViewController+MASAdditions.h */, + 099894DB44BB1249366F618379B45D6F /* ViewController+MASAdditions.m */, + 75AE5D307463F134F4307B4BC9AA2EB7 /* Support Files */, + ); + name = Masonry; + path = Masonry; + sourceTree = ""; + }; + 75AE5D307463F134F4307B4BC9AA2EB7 /* Support Files */ = { + isa = PBXGroup; + children = ( + EEE3AE806D4D49918C7379264B8B46D1 /* Masonry.modulemap */, + 105C0E572020BAFC2F3F07702779A020 /* Masonry-dummy.m */, + 7D170811DBCC5115CE133F6187C37ADE /* Masonry-Info.plist */, + 65578EBC5788FEE6B04E9151B552D110 /* Masonry-prefix.pch */, + 66EB6235F828F12999A13D8BD6C02127 /* Masonry-umbrella.h */, + 95B0223E2E65A30C6C4B233E336C7DB9 /* Masonry.debug.xcconfig */, + C67403F95732E8793DB36834C4726BFA /* Masonry.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Masonry"; + sourceTree = ""; + }; + 933CB05F159214207AF50CD044DA7A14 /* Support Files */ = { + isa = PBXGroup; + children = ( + 4E56D5DDE9402DE57FEF9D81E68DE8B3 /* Bugly.debug.xcconfig */, + 6E87ADD85BCC1C5A4BF0FB2AC7E2A834 /* Bugly.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/Bugly"; sourceTree = ""; }; + 9382AEACA68D989C1D0DAAEF2AA110DB /* Resources */ = { + isa = PBXGroup; + children = ( + 62640F732378D5BF961D278A8E714FEC /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + 9E1956AE0271229C1F82B31B48A1BA2C /* Products */ = { + isa = PBXGroup; + children = ( + A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */, + 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */, + FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */, + 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */, + 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */, + 1FFED36A657123030ABB700256D73F15 /* Masonry */, + 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */, + 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */, + 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */, + E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */, + 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */, + 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */, + DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */, + B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, + CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */, + ); + name = Products; + sourceTree = ""; + }; + A55E2B2247987FBEC60B3A5F75016BFF /* iOS */ = { + isa = PBXGroup; + children = ( + 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */, + 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */, + 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */, + BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */, + 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */, + ); + name = iOS; + sourceTree = ""; + }; + A56EEB83F090D2B191CD05E50C8A32BD /* AFNetworking */ = { + isa = PBXGroup; + children = ( + E69955CA9C7B2AA324E3704014745EDF /* AFNetworking.h */, + B09401D6129FEBB97201B6ABDA5724FA /* NSURLSession */, + D37E8DC962E413DE1E613C70A1655127 /* Reachability */, + C90F605C12117A2A24F6BE07FC25F2A6 /* Security */, + 253FE6C203FBC03CF9639A4DBFC761C7 /* Serialization */, + BCA604A91654F989BFB49BA3FB647577 /* Support Files */, + D109E43F6791D67DE5998264DF3E56B3 /* UIKit */, + ); + name = AFNetworking; + path = AFNetworking; + sourceTree = ""; + }; + A9F9DF7E0CB3C0F72DAC0BD4A3A8E1E8 /* MJRefresh */ = { + isa = PBXGroup; + children = ( + CD81B3BC38825A465F08F0A7FF6B6D56 /* MJRefresh.h */, + 04473A3692FBECA15A32A1C477843F8E /* MJRefreshAutoFooter.h */, + 8F13ED159399F9081ED4E0855D985B3B /* MJRefreshAutoFooter.m */, + C0271A933F5E2DB9D6CC456E988103D1 /* MJRefreshAutoGifFooter.h */, + DF51D23D1444310275D4BB68151F1F60 /* MJRefreshAutoGifFooter.m */, + 61AF436FD61695046BC4D5C853E7CA45 /* MJRefreshAutoNormalFooter.h */, + D78DFC477962A207938C611AE0ACA069 /* MJRefreshAutoNormalFooter.m */, + D74882C4484074AC8872B2A5E438246B /* MJRefreshAutoStateFooter.h */, + A2B45634336BCC349F04126A0EE780B0 /* MJRefreshAutoStateFooter.m */, + 7EABFACBAFD45BC8FA955F5004A0F3F6 /* MJRefreshBackFooter.h */, + 464A4EBDD6079658F375B8BE36A1D224 /* MJRefreshBackFooter.m */, + 4199B5EF9E6D97F0A19FE7422D28A2C6 /* MJRefreshBackGifFooter.h */, + 2ED81178D3D980B0132BE071541BDB51 /* MJRefreshBackGifFooter.m */, + EB89406A9E055C08A7A24CF01C851841 /* MJRefreshBackNormalFooter.h */, + DC6B018BDEA17A60716B1E4180015BC9 /* MJRefreshBackNormalFooter.m */, + F9A2F41CFB36F97D9E0F592411A2F9F1 /* MJRefreshBackStateFooter.h */, + E0854CBF8370AAF7A642A9BE65EA9C79 /* MJRefreshBackStateFooter.m */, + F23E87D1922F53403D673679FAA023CF /* MJRefreshComponent.h */, + C20D9185B54011BBE67FAA2FE147DA10 /* MJRefreshComponent.m */, + 3D16809394CD346845FFB0C9977242B2 /* MJRefreshConfig.h */, + C247A1884F6D32D3F8E2A80759806E33 /* MJRefreshConfig.m */, + 87404200573C5C261B9C829573DF05E9 /* MJRefreshConst.h */, + 2A121A2B21BED90763E2301622A040E4 /* MJRefreshConst.m */, + D8F23CA3052D23EB11B0A898DB4A6E40 /* MJRefreshFooter.h */, + 294EA02B3DDDD7B2B6A77AAC9B06FAE2 /* MJRefreshFooter.m */, + C7C888B99007AD057195C9956BE40388 /* MJRefreshGifHeader.h */, + 168B21798FA2C6BC6767C95E619EFE04 /* MJRefreshGifHeader.m */, + DDF616B9EC8DE21E9AA84880DC51A9CA /* MJRefreshHeader.h */, + DF05C447154DF7BE7ECB7AE07BF863D4 /* MJRefreshHeader.m */, + 64C4273F666802A12C990C543C5413E3 /* MJRefreshNormalHeader.h */, + 3421F5C836952B09AC7AF130FB3D09FC /* MJRefreshNormalHeader.m */, + 6259B042D1D6480734439FF381E14C2B /* MJRefreshNormalTrailer.h */, + 82D7BEE16249F72113581170F4B17105 /* MJRefreshNormalTrailer.m */, + CDBA0F660CF6947CF53C5863681817AB /* MJRefreshStateHeader.h */, + D9713BA6BE14577AE57300E3DD702FD7 /* MJRefreshStateHeader.m */, + 3A4EE28576256BE0B9CC54DFE985D554 /* MJRefreshStateTrailer.h */, + E089B74E2F4B50357B63BC6069272B9D /* MJRefreshStateTrailer.m */, + D1B006E7B08941CF8A2C5843A8B9C99A /* MJRefreshTrailer.h */, + AE579277DE642E9E1019F6392CE1755F /* MJRefreshTrailer.m */, + 43C608DEC890D79C4A758B248B1B7D6E /* NSBundle+MJRefresh.h */, + C0E3D0083F73A4B9E51802D71E12B6D5 /* NSBundle+MJRefresh.m */, + 2867F87918EED9920AE77DAD4BD451AB /* UICollectionViewLayout+MJRefresh.h */, + 140C8B875FF37FDF9A95CB04C9916AF9 /* UICollectionViewLayout+MJRefresh.m */, + 3FA20784164A5FF07C29C2829918C6B8 /* UIScrollView+MJExtension.h */, + B32295E122B71520322E84A41C7EE15B /* UIScrollView+MJExtension.m */, + F1ED191A53A707D9518B3082C0464066 /* UIScrollView+MJRefresh.h */, + D0E66BF426F9E82A8E7F4F5630A42386 /* UIScrollView+MJRefresh.m */, + 7A2B32A1AC63C6D1AF5B5467A6CEC75F /* UIView+MJExtension.h */, + D3C9A4D4BA6E0F5E50F5993BD82CF6E6 /* UIView+MJExtension.m */, + 12EBE327D35A47F2F18FE64995DA4378 /* Resources */, + 22BD1B8E40EAA479D200D4E018A1B387 /* Support Files */, + ); + name = MJRefresh; + path = MJRefresh; + sourceTree = ""; + }; + B09401D6129FEBB97201B6ABDA5724FA /* NSURLSession */ = { + isa = PBXGroup; + children = ( + 666595C8EDD80B06B88241CFA60BC1D4 /* AFCompatibilityMacros.h */, + 80F7F70AB42196BE2ECAE3F75289F5CC /* AFHTTPSessionManager.h */, + CE31F60CA05A2FFF39BB47897CB17219 /* AFHTTPSessionManager.m */, + 3B8FA55B1E865165B6CFF4ADBBDE19C4 /* AFURLSessionManager.h */, + 913734C0E85A7287F025E327629CA7FC /* AFURLSessionManager.m */, + ); + name = NSURLSession; + sourceTree = ""; + }; B94D7768568A9992200DB461E8CF687F /* Frameworks */ = { isa = PBXGroup; children = ( - 717E6458BD53164643C1A5869C11B538 /* iOS */, + A55E2B2247987FBEC60B3A5F75016BFF /* iOS */, ); name = Frameworks; sourceTree = ""; }; - C5610FA28BEC5D4814F24C959B9C82BB /* SDWebImage */ = { + BCA604A91654F989BFB49BA3FB647577 /* Support Files */ = { isa = PBXGroup; children = ( - 1DF4B2EDEE04858C6D572415F9FFA5F7 /* Core */, - 139D61AB9CCEA3CD3FE43AE8F0DFA14F /* Support Files */, + 0A7EA19F3D14069449EA7F1B04E206C1 /* AFNetworking.modulemap */, + 8B00C7E369E9AC7974F4EC937246BBA4 /* AFNetworking-dummy.m */, + DBA1D9F210D421679049394348DAE50E /* AFNetworking-Info.plist */, + 9AC629B4407B73FD1B84C0611D1E18CE /* AFNetworking-prefix.pch */, + 52498B1644296C61B2FE7621C339AC58 /* AFNetworking-umbrella.h */, + 6E7FB45CA71B8CA83A3493DEA84881AB /* AFNetworking.debug.xcconfig */, + 3A8B099A5081203885BD7E80C8282B95 /* AFNetworking.release.xcconfig */, ); - name = SDWebImage; - path = SDWebImage; + name = "Support Files"; + path = "../Target Support Files/AFNetworking"; + sourceTree = ""; + }; + C90F605C12117A2A24F6BE07FC25F2A6 /* Security */ = { + isa = PBXGroup; + children = ( + 441DC5BA33205114F293CCFD73DE308D /* AFSecurityPolicy.h */, + C93CA5E20848AEFCB61E12D54CCA6ADF /* AFSecurityPolicy.m */, + ); + name = Security; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -1807,91 +2208,103 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, B94D7768568A9992200DB461E8CF687F /* Frameworks */, - 3C8938BD791B748D62E0594E21A8F606 /* Pods */, - 1C8A19406FF58E9BA6BC427CA02E9857 /* Products */, + 1F3B1AE789621929A19F036CE8E0A834 /* Pods */, + 9E1956AE0271229C1F82B31B48A1BA2C /* Products */, F7ED90CD818DD0484BF7DB0E1E3B9AB2 /* Targets Support Files */, ); sourceTree = ""; }; - D98E67C1E6047B33AD3281F951D96C7F /* Resources */ = { + D109E43F6791D67DE5998264DF3E56B3 /* UIKit */ = { isa = PBXGroup; children = ( - F320516E3A699EEF56C411E9C2DA9C29 /* PrivacyInfo.xcprivacy */, + BF0595213FCD9D5150FF374A286E2BC6 /* AFAutoPurgingImageCache.h */, + A691E14C36224248BF2A3ECF785CAD95 /* AFAutoPurgingImageCache.m */, + 96090B4F5197A5FD0B3684BBF9CE7D69 /* AFImageDownloader.h */, + 3EBA537DA26B64728CA51AC60E7A2FB3 /* AFImageDownloader.m */, + 921FDF9A7596A9183FFD281EEBC18B9D /* AFNetworkActivityIndicatorManager.h */, + 543E7F5FC6CF2C3049F7A173BFB53AFD /* AFNetworkActivityIndicatorManager.m */, + FE0FBCD7807A33AEB43D358FAF90A586 /* UIActivityIndicatorView+AFNetworking.h */, + D9BBE6A2F399A988F5BC26DB0D0BF68C /* UIActivityIndicatorView+AFNetworking.m */, + F46251B17D3526E25AB9571283064201 /* UIButton+AFNetworking.h */, + E448066D92C481C253D5FA5FC624A0D8 /* UIButton+AFNetworking.m */, + A79588184FF24FC5EB3FA3987629C30B /* UIImageView+AFNetworking.h */, + E66397BB19318C841897657B7D33195C /* UIImageView+AFNetworking.m */, + 2E5ECA77AE05E0692E3C292A2212CC73 /* UIKit+AFNetworking.h */, + A137B039D2A317E540FA6772AEB9D840 /* UIProgressView+AFNetworking.h */, + 0B52C0333B4CADD3A0F9EB411374E73E /* UIProgressView+AFNetworking.m */, + EAAB3A74BE098DF24548F19631ED1ECA /* UIRefreshControl+AFNetworking.h */, + 316C4F93113E10BD19E7CE1F7E80F60B /* UIRefreshControl+AFNetworking.m */, + 35BFDB837A13ECB08D0555099C8AE732 /* WKWebView+AFNetworking.h */, + DF251712BA063E8344D1B1CDB785B3C8 /* WKWebView+AFNetworking.m */, ); - name = Resources; + name = UIKit; sourceTree = ""; }; - DB6A5FFB077AA72411EB46B8A77A31B0 /* Frameworks */ = { + D37E8DC962E413DE1E613C70A1655127 /* Reachability */ = { isa = PBXGroup; children = ( - 70E91E9355FAF7D2A8CA2A2112F06A60 /* Bugly.framework */, + D881DD0CA33CD1E3EFE0136A615F1F65 /* AFNetworkReachabilityManager.h */, + F1D4E5D74AB2CB580743562EDDD74A4B /* AFNetworkReachabilityManager.m */, ); - name = Frameworks; + name = Reachability; sourceTree = ""; }; - E11E673B56635EAB5EC9773B8D724830 /* MJExtension */ = { + D6F7289C9B55F9C4E96A212D2BDD1163 /* Support Files */ = { isa = PBXGroup; children = ( - B486D1944AF55BFAF5E8F8CDE6F8EB79 /* MJExtension.h */, - C342060C11E55E0DDCC3A84C8C1FBC35 /* MJExtensionConst.h */, - BCE109BED042388EE5FB3949ADA18281 /* MJExtensionConst.m */, - D9B1F5912311585292CF1DB19B5FF418 /* MJFoundation.h */, - 47E596E1EB48CB4E8DE37CC0D5122787 /* MJFoundation.m */, - BB20479CEB729CCB614B58BD2EFB3BB7 /* MJProperty.h */, - DF383723C6CD6F7B6FCFE6C752DF50AF /* MJProperty.m */, - D197698AA79A94AD39EC006BBB9D3481 /* MJPropertyKey.h */, - 3F39E9FDE611BCC2A514A77F1EB63E8B /* MJPropertyKey.m */, - 04549DFA210F3D3C27211535994000B3 /* MJPropertyType.h */, - D15A23E7684648249EA4D7C312BACC22 /* MJPropertyType.m */, - 96163189CC5AFA5E4E23D6B0B3EADFF7 /* NSObject+MJClass.h */, - 049541DC9203D75878CAF900D458CC34 /* NSObject+MJClass.m */, - CC6EC6E349C4E8476F9617E9150D43FE /* NSObject+MJCoding.h */, - 45F43707DFF3E5A8EFA1404F7259F5DF /* NSObject+MJCoding.m */, - 5210B0534D834B2EF86FDFCE90B73F2D /* NSObject+MJKeyValue.h */, - 2EEEDD3CF0530751FD80AFB402DAB153 /* NSObject+MJKeyValue.m */, - 364231170128CA2CD3F9589FE34C2FAE /* NSObject+MJProperty.h */, - 336D23D3AF9B2B8FD356A62D7B4A2A05 /* NSObject+MJProperty.m */, - AF4D3A8A4AF29616DFF2E40A94DA00AE /* NSString+MJExtension.h */, - A3A3B77B219A105E2636BBFACE42D7A8 /* NSString+MJExtension.m */, - D98E67C1E6047B33AD3281F951D96C7F /* Resources */, - 9F62E2D2D42206A4CD335DDB26C286FF /* Support Files */, - ); - name = MJExtension; - path = MJExtension; - sourceTree = ""; - }; - EAF375AA4ECFCEFB8A42837BED2CA767 /* Support Files */ = { - isa = PBXGroup; - children = ( - 00E5C0F46BD576A82A38738DB780C7D9 /* AFNetworking.modulemap */, - 83A4CDCDF549B87D4E437ED8A4615D91 /* AFNetworking-dummy.m */, - 23D7D1DC3E63FD87D87BE6C2EB198360 /* AFNetworking-Info.plist */, - 7D5B144E69C677553A95B3CCA57BC43C /* AFNetworking-prefix.pch */, - 0696D0619ACA95D8E9E7EFDC0CD595D2 /* AFNetworking-umbrella.h */, - 5104591E28208BB976FFAD3D7AFA2F58 /* AFNetworking.debug.xcconfig */, - C6F66997EF28E05B21EB7F13B379645A /* AFNetworking.release.xcconfig */, + A183E865565BA2B1F53CD0924621E410 /* FLAnimatedImage.modulemap */, + BCB715803528E46AB9661E7F8A956D85 /* FLAnimatedImage-dummy.m */, + 4E443FB99E1E01CD79DABE37EB302AFE /* FLAnimatedImage-Info.plist */, + 0148667426C0D159DF2496AD2E147C13 /* FLAnimatedImage-prefix.pch */, + 058E0E64069CAF10E824026FF1D35605 /* FLAnimatedImage-umbrella.h */, + B87A76839C6A92DD597AFD764D90E24D /* FLAnimatedImage.debug.xcconfig */, + 970ACBBC888D1BD4521806C0B268E7C6 /* FLAnimatedImage.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/AFNetworking"; + path = "../Target Support Files/FLAnimatedImage"; sourceTree = ""; }; - EE64A145CDD38964AF4945D376B599A2 /* MBProgressHUD */ = { + D9F07D6F2272135B5E1B7D613E619612 /* Support Files */ = { isa = PBXGroup; children = ( - 2D069519EE909290F7C452231691CA88 /* MBProgressHUD.h */, - 8A6D5DE8BC7E18B47355B8494A426209 /* MBProgressHUD.m */, - 85416DF4AE2111F696182FA844F2611A /* Support Files */, + 6A16069144EAF75D991A4D06E3632B2B /* MBProgressHUD.modulemap */, + AABD4B7A1454CA80B386AD36AEFEB5A7 /* MBProgressHUD-dummy.m */, + 26F9036CA269CB4FF5BD96290F567C79 /* MBProgressHUD-Info.plist */, + CDF036FAEDB3424A0B63A3F64C926C94 /* MBProgressHUD-prefix.pch */, + EB1751B89D4AAC72FB84E06877E9092A /* MBProgressHUD-umbrella.h */, + 550192267AB5C328829C08C69A3B04BC /* MBProgressHUD.debug.xcconfig */, + 27D20C78C9DF6C2E5537332D5CBE55ED /* MBProgressHUD.release.xcconfig */, ); - name = MBProgressHUD; - path = MBProgressHUD; + name = "Support Files"; + path = "../Target Support Files/MBProgressHUD"; sourceTree = ""; }; - F364D65121D8297BD4970B4E36B87837 /* Resources */ = { + E911B99C127EE9BCD74DF2829FDF7E50 /* FLAnimatedImage */ = { isa = PBXGroup; children = ( - B9232C2E4F4A27C4FBD3F8EA3E351AF5 /* PrivacyInfo.xcprivacy */, + 172CDF64113E561EE805F3B18B58DE98 /* FLAnimatedImage.h */, + E1A7A8B90EB2B4D833CF1D550EC9FB29 /* FLAnimatedImage.m */, + 9CD6AE0C7A2E208FF93567A99374869B /* FLAnimatedImageView.h */, + 4A049DB74A9BEE7FA98C208416BBDD60 /* FLAnimatedImageView.m */, + D6F7289C9B55F9C4E96A212D2BDD1163 /* Support Files */, ); - name = Resources; + name = FLAnimatedImage; + path = FLAnimatedImage; + sourceTree = ""; + }; + F70CAA8D03120C833BBEE4DBB0DC6756 /* Support Files */ = { + isa = PBXGroup; + children = ( + E8553D3C121BDD2352FF757D8EC709D3 /* LookinServer.modulemap */, + 701BFF6738F7EE5632E59657442BD101 /* LookinServer-dummy.m */, + D002C48E491E43551029CCF47FC83441 /* LookinServer-Info.plist */, + 793514345B8D9E3CC0E86E9AA48547A2 /* LookinServer-prefix.pch */, + D1EC76CFF0744C55D60E83B26DB4807B /* LookinServer-umbrella.h */, + F915BA2B3AE80D1E58F67A45AB3B3D68 /* LookinServer.debug.xcconfig */, + B5D946A76BE7958D130628335233FAE2 /* LookinServer.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LookinServer"; sourceTree = ""; }; F7ED90CD818DD0484BF7DB0E1E3B9AB2 /* Targets Support Files */ = { @@ -1903,164 +2316,35 @@ name = "Targets Support Files"; sourceTree = ""; }; - F8863687E232B36E6A3336B80CEF9AEF /* Reachability */ = { + FE95D05051075F9F0FE638F52D59284B /* MJExtension */ = { isa = PBXGroup; children = ( - 62E02B7B42A91CD6887912774FAE6528 /* AFNetworkReachabilityManager.h */, - 0D18C326A9F4C285AD294832344E63FF /* AFNetworkReachabilityManager.m */, + 5FE7A440D01806C72477C1AA0213B946 /* MJExtension.h */, + AC49732B3E41F8772AD10362943A8A97 /* MJExtensionConst.h */, + 790F5BF1A1AB8405DB8FFB5F37D2BA39 /* MJExtensionConst.m */, + 857DB28ACD58B6F0687A1A566D8C2BF1 /* MJFoundation.h */, + 92A1420483F3DAE0607CA7ECEA495C73 /* MJFoundation.m */, + A8E79B2B03D4382C825BD72257BE4101 /* MJProperty.h */, + 5F66416F5FCB58B94BA9CC403B8A778A /* MJProperty.m */, + 145C211EEEAD63D4C0AE8467C821D14F /* MJPropertyKey.h */, + 0371541F4560714A85B237456DEF997B /* MJPropertyKey.m */, + 72E3A740C48B1DF278C345CEB59A5C99 /* MJPropertyType.h */, + C02274A03EA3977CCD31F6436223F923 /* MJPropertyType.m */, + 2BC84A9FA2E5E086A3FCA8C9200491EA /* NSObject+MJClass.h */, + 4BA81BE20AFB7AAED21EEC5D091FF489 /* NSObject+MJClass.m */, + 5A5852584225D29AAB47BA31F0AC9415 /* NSObject+MJCoding.h */, + 8B07F3D2B3B3299BF5A32A4ED4D06683 /* NSObject+MJCoding.m */, + F7095CB50DC7675B616D3B2DAB4F0188 /* NSObject+MJKeyValue.h */, + 38D9966C1D90F995E284375B1712E8FB /* NSObject+MJKeyValue.m */, + 92E26B1FB2A3B34BF0C4C43A02D2EB58 /* NSObject+MJProperty.h */, + 85703DD6475DDAF90847B3E1C0DC9738 /* NSObject+MJProperty.m */, + A60394A4E8FFC5CBCC2FD14258C5085A /* NSString+MJExtension.h */, + D2A792CB950AB99663B25C1BE2C0853A /* NSString+MJExtension.m */, + 9382AEACA68D989C1D0DAAEF2AA110DB /* Resources */, + 5DBA2FE1A0B71A23FCB50AB66BEDCF44 /* Support Files */, ); - name = Reachability; - sourceTree = ""; - }; - FB435B3C1ABA904B9D4AEBB59855C935 /* Core */ = { - isa = PBXGroup; - children = ( - E857EC016B703D1261AC73360907C980 /* CALayer+Lookin.h */, - 3BBF905BC343AA0D52B6BC0B1E5B22E9 /* CALayer+Lookin.m */, - 26476CAEC54A4CE04264494F816DFD2C /* CALayer+LookinServer.h */, - A99D2B8B886EDA66D95608FD72CE97AF /* CALayer+LookinServer.m */, - 4FD8426A1028406F5A9C4E27D5C9E76C /* Color+Lookin.h */, - 9278559A57D46FAC97B2480A76E574BE /* Color+Lookin.m */, - 2039E8AAF8AAC77E31E425C61871263D /* Image+Lookin.h */, - 19CD19C5B1822DA77E4C7C9F454FD5D5 /* Image+Lookin.m */, - FAB9874FA4C241C24657D3A825C00C66 /* LKS_AttrGroupsMaker.h */, - EA281F7D07872BD2CB3C821E84CCC544 /* LKS_AttrGroupsMaker.m */, - 477B43B19C3181419CE0D39929320355 /* LKS_AttrModificationPatchHandler.h */, - 79EEB00E9ED2C742987150EA5E0B1341 /* LKS_AttrModificationPatchHandler.m */, - 613D22FE29FDFD98F1BA3415B19FB040 /* LKS_ConnectionManager.h */, - 5ABD1279233951A8EAE905C43AD033A4 /* LKS_ConnectionManager.m */, - 9D58792A3DBAB3667630D1FF53DDFB8D /* LKS_CustomAttrGroupsMaker.h */, - 667106A3B29FC2624F444E79272C8235 /* LKS_CustomAttrGroupsMaker.m */, - 834B6D6A1ACFBDDF049322F2ED0C17DE /* LKS_CustomAttrModificationHandler.h */, - FB260AFEB0CD406D8CDEDE623A1369CF /* LKS_CustomAttrModificationHandler.m */, - F98B3E6FF4A7A436AEB00C4FE95820A2 /* LKS_CustomAttrSetterManager.h */, - 1D74E044AA7CFE331B6C3B53D98B1022 /* LKS_CustomAttrSetterManager.m */, - 6F10AABF341F29547C8D1C780B3F8861 /* LKS_CustomDisplayItemsMaker.h */, - C08BFCAD6B6021A9C9686DA64A6CF1AE /* LKS_CustomDisplayItemsMaker.m */, - DE6C055C722C44DA0E562F93906DCD34 /* LKS_EventHandlerMaker.h */, - 7CB82C5681E372AE74735E8F3B7211E5 /* LKS_EventHandlerMaker.m */, - DECAD058B2FE8CD24CC1022B0A1523AB /* LKS_ExportManager.h */, - A306B5D1B1BD0232E2121BA1E0EA27F9 /* LKS_ExportManager.m */, - 7E82EAB687527F885E79D9835727B3F8 /* LKS_GestureTargetActionsSearcher.h */, - 9F1EE18C1314EB74EEB6B6392E8EFB08 /* LKS_GestureTargetActionsSearcher.m */, - 567AA7AB9514E985494C554A1802C03B /* LKS_Helper.h */, - 371FD070C447028E0DC76F07BB442FC4 /* LKS_Helper.m */, - 5E355B215CED31C4C6EF33EEB9E95B38 /* LKS_HierarchyDetailsHandler.h */, - 94310BE9068195ADA7842BD0A9A7F782 /* LKS_HierarchyDetailsHandler.m */, - 52FBF3084E82AF80B1B017FB5240AF4F /* LKS_HierarchyDisplayItemsMaker.h */, - 3E2B86406A2B5383183DAE9ABBBB3893 /* LKS_HierarchyDisplayItemsMaker.m */, - E91E93486D40A052515660F00B079B5A /* LKS_InbuiltAttrModificationHandler.h */, - 37559870F51779045F8C7A57C1303E2D /* LKS_InbuiltAttrModificationHandler.m */, - 0075507DF323DF510CA1115DE2B33C98 /* LKS_MultiplatformAdapter.h */, - 31C69A4489CC7299F114CDEAFBE0DE3C /* LKS_MultiplatformAdapter.m */, - FF266D90F27C22E50821C68FB0B959D8 /* LKS_ObjectRegistry.h */, - 30361FA11468C74A598363E37D30E56C /* LKS_ObjectRegistry.m */, - E4000AF0B9EEE3F891ADD766B1967BD3 /* LKS_RequestHandler.h */, - 68C023D8DAEB5C5E7F36F7020DDBFE63 /* LKS_RequestHandler.m */, - 46771EF8828C8A7519CEFD7A8DF062BE /* LKS_TraceManager.h */, - A3868E0511721B009DE0A628C978E4AF /* LKS_TraceManager.m */, - 6FD83C0A67C6DD93C76CB6563151D889 /* LKSConfigManager.h */, - 4B2A98ADD6BF259F1E366B570C576632 /* LKSConfigManager.m */, - 341D877992B274AC6FD93AB03542E561 /* Lookin_PTChannel.h */, - 93AFD572FFECC065D5DF0E8764C35B66 /* Lookin_PTChannel.m */, - 0D703CF356A8E2B3B3665722366223A5 /* Lookin_PTPrivate.h */, - 1550F0B5EA5360BFA35606256AB6EF51 /* Lookin_PTProtocol.h */, - 84E9E0A3D552DFF9EC45D14794237342 /* Lookin_PTProtocol.m */, - 4211A99A6EE6255E875FA46E987F2128 /* Lookin_PTUSBHub.h */, - 9C8E3573AF9C6E24E9DFBDDB57A91B44 /* Lookin_PTUSBHub.m */, - 2F6981AC25702BE9417B498391042242 /* LookinAppInfo.h */, - DE5E3242D0D245F39B1349B5C4819144 /* LookinAppInfo.m */, - F74FD66E160DEA3B30F3C017DE8ED1BA /* LookinAttribute.h */, - 7FCB45CBC3B45614560DA456506F73F1 /* LookinAttribute.m */, - 06660480BC631DCE06583A85704487AB /* LookinAttributeModification.h */, - FD1216744C111B10EA2988454A525213 /* LookinAttributeModification.m */, - 1948F2AFCD4F7087CA46FB78E5A05ABD /* LookinAttributesGroup.h */, - 594BEBF4113035634E37CC4FC2A11D62 /* LookinAttributesGroup.m */, - 40B6DD67F49B0103232B5D6B727392FA /* LookinAttributesSection.h */, - EF6193F470BF021CAED5E3E0DC4F602E /* LookinAttributesSection.m */, - 94CD4DB147D9FC14A9FB75335D8AAAF6 /* LookinAttrIdentifiers.h */, - 75E99E8BA24E841D85C9E942E3654D62 /* LookinAttrIdentifiers.m */, - B12DF9FA146221C01FCE0D22DDBDC890 /* LookinAttrType.h */, - 0301A3F865A2919DCD43EE9D0DC363A5 /* LookinAutoLayoutConstraint.h */, - 528C15198BF77FCE909FB6A717EA8C53 /* LookinAutoLayoutConstraint.m */, - A7178BC144BA120067B45EC042E2D156 /* LookinCodingValueType.h */, - 5212AF1887982114A494FF962BEF5A35 /* LookinConnectionAttachment.h */, - A6EB4E3885146B9E8EBACA05C540E733 /* LookinConnectionAttachment.m */, - 9BF2F8A5A2E35CC31448E86BCF471F49 /* LookinConnectionResponseAttachment.h */, - 3B6B095661E36C4E8A066559D4D5AF33 /* LookinConnectionResponseAttachment.m */, - 2F154763B55BC95D1F3E0C64970B8D48 /* LookinCustomAttrModification.h */, - 4730B0C65CA50BE6D828887D7CC8EB9F /* LookinCustomAttrModification.m */, - D4D2347D4EFB2E5610773AF965AA8399 /* LookinCustomDisplayItemInfo.h */, - 1C5B4FB13625B33C4ABB17DDEF05C782 /* LookinCustomDisplayItemInfo.m */, - 713E37659AD7D79DA6664C3D3ECF01F7 /* LookinDashboardBlueprint.h */, - 290A1387E4C301A25D8613FBB0DCEC6A /* LookinDashboardBlueprint.m */, - 6E6089EEBB83334AD3EFA96BE408F86D /* LookinDefines.h */, - 7597119135479FEF90DC7CA9DDBF03A6 /* LookinDisplayItem.h */, - E9ED096883562D4C47E188D0E5CB3065 /* LookinDisplayItem.m */, - A1BB512E1904C9AC07E6CEBA4DE525DB /* LookinDisplayItemDetail.h */, - DC3E4B841669D08E886FD8D7A86C654E /* LookinDisplayItemDetail.m */, - F746B8A0D89C293CD78D1EE71CD25FF1 /* LookinEventHandler.h */, - 189A631A2ED6331F0A226846AD73B1E4 /* LookinEventHandler.m */, - 6DAD9E82D42212E9D52E28737BC21479 /* LookinHierarchyFile.h */, - EFD8B43671F8A160934DA73D3C45B4C0 /* LookinHierarchyFile.m */, - 9C9BCDBD08949F0C3053B9F87567E0B2 /* LookinHierarchyInfo.h */, - 56A3EB69345768D61D52161327AE66C8 /* LookinHierarchyInfo.m */, - E05CD820CF8075CB902341061803D784 /* LookinIvarTrace.h */, - 872090FEDB94946E441D4F936A1357C0 /* LookinIvarTrace.m */, - E70A8D54BBD1266CC7CAFB4BD5CE317B /* LookinObject.h */, - A3048EE57AEE9C3B5FDB98C9E7DF4BB9 /* LookinObject.m */, - 30A10CFE082F8338A031688B47CDED17 /* LookinServer.h */, - FEBDC1C9F54DE3E90674A96F19B3458A /* LookinServerDefines.h */, - D23D41020809113858D4CA46059797CF /* LookinStaticAsyncUpdateTask.h */, - 7DDE67F73A61A7328413374AFFA92E85 /* LookinStaticAsyncUpdateTask.m */, - E785CD9E03330FEEAB8EA2F65DA92853 /* LookinTuple.h */, - D03549B19B7C1700178CF12088FCE44C /* LookinTuple.m */, - 785DDFE2F3C7BA8AEDE2278087F506EB /* LookinWeakContainer.h */, - F9B85917A028A675DFE95B885791EDFC /* LookinWeakContainer.m */, - FEE404F0AEA8371C4FCFE3F576AA5835 /* NSArray+Lookin.h */, - 49A24CBDEFCE6B22E2D355C6D04AC9B4 /* NSArray+Lookin.m */, - 9F2C6DE995A9BCF5E418479898442088 /* NSObject+Lookin.h */, - BA48F14A970C2FE9AE9B9A3F4EF27D84 /* NSObject+Lookin.m */, - 87D20D63606C6DC8B53F345069126C44 /* NSObject+LookinServer.h */, - E66FFAE76E02A3342AF857261F059F70 /* NSObject+LookinServer.m */, - FA2246CD5BC5C3E37CEC58BCA4848181 /* NSSet+Lookin.h */, - 3E5219BC7E7BF5C405E48CC237D2EDC2 /* NSSet+Lookin.m */, - 52EF359F996014A062F3A2945F10438A /* NSString+Lookin.h */, - 3ED91326A0371ACE08A353BC67F60F6B /* NSString+Lookin.m */, - ED81CDC30BE2F7BBA09422B3CD1BDF85 /* Peertalk.h */, - 220B8AB16FBD2158AB55D35E9376D13A /* UIBlurEffect+LookinServer.h */, - D950E8533947A1D8B1CABC80463AFF52 /* UIBlurEffect+LookinServer.m */, - F81A89C6E769F9B774524A9FE4BA70B5 /* UIColor+LookinServer.h */, - 1D4236904A41DC2950754F5BE583BD4A /* UIColor+LookinServer.m */, - 241D729CBB4E30C3E09474F7F34CB9FA /* UIImage+LookinServer.h */, - F2087695EC0958A50E2C65A5D2E03159 /* UIImage+LookinServer.m */, - 6CAEA0BC49D62C0D220FA986A5391EEC /* UIImageView+LookinServer.h */, - A6B89FBB0AA4A7BD7E16AFF20A519DC2 /* UIImageView+LookinServer.m */, - ECA6154AE35962F20A086F5A3633C0CC /* UILabel+LookinServer.h */, - C23D52958B18447DC5C865BB12951C58 /* UILabel+LookinServer.m */, - CAE0A8B09C0AF83117C6BC9602D5D41F /* UITableView+LookinServer.h */, - 7584B9C7664B986D7C6582FD3280C473 /* UITableView+LookinServer.m */, - AB70C7432DDB8346C9DB4A27C7C7AEEB /* UITextField+LookinServer.h */, - CEC88A03608F444860F81FB5EB689938 /* UITextField+LookinServer.m */, - E9FADEFBF123E3EB09754AA63F0510E1 /* UITextView+LookinServer.h */, - D54A6D034409C4B729B7DBA2D502B89D /* UITextView+LookinServer.m */, - 12119FD9C09B77E5C8A003238C89E88A /* UIView+LookinServer.h */, - E3ADFF983A9B025AF718C3D24404E480 /* UIView+LookinServer.m */, - 2567115C715DFD2B942FF9386C729778 /* UIViewController+LookinServer.h */, - 5AF7E49BBE304E0327E319036BE5671B /* UIViewController+LookinServer.m */, - 594925FC6BBDEA3002D153F167630F93 /* UIVisualEffectView+LookinServer.h */, - 2731C084E8B9BB6A54629DDFEBD14EA1 /* UIVisualEffectView+LookinServer.m */, - ); - name = Core; - sourceTree = ""; - }; - FD75246711B9ACD8C080F9752A75506E /* Resources */ = { - isa = PBXGroup; - children = ( - 352F463EFB3454F98E285A844376EC28 /* MJRefresh.bundle */, - A6057C23DD0D9C9A5559F8F0DC47A97D /* PrivacyInfo.xcprivacy */, - ); - name = Resources; + name = MJExtension; + path = MJExtension; sourceTree = ""; }; /* End PBXGroup section */ @@ -2313,14 +2597,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5E9A96655812158910B2D46F18F4983F /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 891AB9476B659A3490DCE45A52A8D132 /* Pods-keyBoard-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 5F83BB683AB24A3D1254696689952DDF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2329,6 +2605,63 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 80AAB619EDBB0EBDBBC84368EED44AA3 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2EC1750C894F036194B90CFD26072B0C /* FLAnimatedImage.h in Headers */, + F600BB873FD4764BAA9E02826F804486 /* FLAnimatedImage-umbrella.h in Headers */, + 01D2F1D0ABE13AAB2CDC0C25E378E964 /* FLAnimatedImageView.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + A903C05DE36F05DE8EA13A2F4A3D52E8 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + DCCBFE0D3914D33369C19AC135AB54AA /* HWBackgroundConfig.h in Headers */, + 76C8C631DF9AC2F667369EEA0CE46522 /* HWDimmedView.h in Headers */, + 7276688DEA6FB95D4DEB7F3D019C3958 /* HWPageSheetPresentingAnimation.h in Headers */, + EDB9E11998290348E4DFB5140D678942 /* HWPanContainerView.h in Headers */, + FF106518AFECA24E74B1D649E4F9AC70 /* HWPanIndicatorView.h in Headers */, + 0A7342FACEBA0077F1B06178940883DB /* HWPanModal.h in Headers */, + C04D578067F77AAB6717D32712CC39A2 /* HWPanModal-umbrella.h in Headers */, + D737D93725B0E072027AB6DA9C4DDDEC /* HWPanModalAnimator.h in Headers */, + 36B3F095DFFC8D2AF2C0A8C523173927 /* HWPanModalContainerView.h in Headers */, + 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */, + 12EC136F97CCCDD8C3765925FABA52CD /* HWPanModalHeight.h in Headers */, + 3127F22BF0A5465D472669272D586BDC /* HWPanModalIndicatorProtocol.h in Headers */, + 3CA9E838F014DC32CFCF6AD36F5D7E58 /* HWPanModalInteractiveAnimator.h in Headers */, + 5106193FDEA44A08AAAAB9B8A227CBE9 /* HWPanModalPanGestureDelegate.h in Headers */, + C9A72F0A93329C42B77395B0F6CEA26C /* HWPanModalPresentable.h in Headers */, + 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */, + E97B2C62D3EE772504A939BEE7D6B459 /* HWPanModalPresentationAnimator.h in Headers */, + B8CA1F338C44C633916650FD85DA5A30 /* HWPanModalPresentationController.h in Headers */, + E4773572BED239AA7D618F1C05BAF51E /* HWPanModalPresentationDelegate.h in Headers */, + 9BBBDC6BB6583BCAA75242231B62B530 /* HWPanModalPresentationUpdateProtocol.h in Headers */, + 03623FBDBE9F6B422E9A5C6EAD321A58 /* HWPanModalPresenterProtocol.h in Headers */, + 3679603CE8336E00A0BFAA39E10A92D0 /* HWPanModalShadow.h in Headers */, + CF7005F2C42AC2E2DD6D437D52C7048B /* HWPresentingVCAnimatedTransitioning.h in Headers */, + 2D0E2E3CDCB12399497B4F31D4C20E3E /* HWShoppingCartPresentingAnimation.h in Headers */, + 4503182D5F8EF2F02609862026D2D455 /* HWVisualEffectView.h in Headers */, + D3615499AFE4D2A8EC2E773F4D8A82B2 /* KeyValueObserver.h in Headers */, + 4334CCEA5B7EA16A4EF26702D287CB07 /* UIScrollView+Helper.h in Headers */, + 76019F9FDD44B8F79261AD55C8728164 /* UIView+HW_Frame.h in Headers */, + 353C1D03325B8F3E65F985DA29245F18 /* UIViewController+LayoutHelper.h in Headers */, + B987864019E987FE32AB26A9CF2C8E12 /* UIViewController+PanModalDefault.h in Headers */, + 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */, + 6D637D02F5EE50D21C8548061956C898 /* UIViewController+Presentation.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B49C4EB87F5DAEC24F2C8B1403D3315A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 01F66DF95199AFA87E9B4C3B00A4A471 /* Pods-keyBoard-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; B5D73FBBE3085418AA04A3B4B8D080B8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2387,31 +2720,51 @@ }; 18BD026D2210082A239FC15D072FD5BF /* Pods-keyBoard */ = { isa = PBXNativeTarget; - buildConfigurationList = 3FA2BE14A4014E20D1803ECC0CEB5A7F /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */; + buildConfigurationList = 975743647BB264A93D50394F24059A92 /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */; buildPhases = ( - 5E9A96655812158910B2D46F18F4983F /* Headers */, - 87D36E846DA0820C15C53178D809C27F /* Sources */, - AC60AAEBCF4A484AB8DAD9EBCA30DBD7 /* Frameworks */, - B3CE18BE6ADF72F2E31CF5989ACEA7C5 /* Resources */, + B49C4EB87F5DAEC24F2C8B1403D3315A /* Headers */, + B641D3E85656A81261B69763FFCD5626 /* Sources */, + DC9D1A62ADBAE0D79C65A2AF6F2634B1 /* Frameworks */, + 184141AC8A105A0A90ABD3175CCD912A /* Resources */, ); buildRules = ( ); dependencies = ( - 69F880D20E49FF278D9D99F0FC359C80 /* PBXTargetDependency */, - 071F326A1012E3F537E82D4600D6099B /* PBXTargetDependency */, - 3CC71AA09CD8D91F7CAC51C8C0C3D8A8 /* PBXTargetDependency */, - D4796534CC93D6F34DDBB3E449125A23 /* PBXTargetDependency */, - 575EFC27A8B3BE6F6EF85229FA04A8F6 /* PBXTargetDependency */, - 8343E87E690EAE8ED5D426D9B97081C7 /* PBXTargetDependency */, - 4CEDC3503EBC64FA8AD4BB751A1257E2 /* PBXTargetDependency */, - EF01B3D5C4798C26DB6A90866EE03225 /* PBXTargetDependency */, - 09B11A1954CF8173776EC7F7B6571224 /* PBXTargetDependency */, + A8F760EC7DB6C976198571C488CABDD5 /* PBXTargetDependency */, + D1B8378E4FB863983460E1A5634E5E53 /* PBXTargetDependency */, + 282288FFCFB047F56CB271F52E09E15A /* PBXTargetDependency */, + 5F35B22B5B052239AB059FB5F5850B30 /* PBXTargetDependency */, + 5661EC5C917094D00EA315585BF5EDD9 /* PBXTargetDependency */, + 8829578C6DBA00A542689EF1CC30A5E1 /* PBXTargetDependency */, + F7C768E46E51C280EE423CDB13DC72C5 /* PBXTargetDependency */, + 9B0BD678EE6118D30B2F6730091BCF98 /* PBXTargetDependency */, + 4CAC7F817A11B79D37ED70D30F53DDB1 /* PBXTargetDependency */, + CA2DED65AB5F88553496C34E44FE1523 /* PBXTargetDependency */, + E6914512C526E59C97F2632B494CEE6B /* PBXTargetDependency */, ); name = "Pods-keyBoard"; productName = Pods_keyBoard; productReference = DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */; productType = "com.apple.product-type.framework"; }; + 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */ = { + isa = PBXNativeTarget; + buildConfigurationList = D47A0ADD8E3841C9330561C3E1664BB3 /* Build configuration list for PBXNativeTarget "HWPanModal" */; + buildPhases = ( + A903C05DE36F05DE8EA13A2F4A3D52E8 /* Headers */, + 3EA749E8A97310551F543948A8C92475 /* Sources */, + 6328134103EDE3EF1EA3866C0B5CCA07 /* Frameworks */, + 27B1683E18D5081CF470BC9A233C7D28 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = HWPanModal; + productName = HWPanModal; + productReference = 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */; + productType = "com.apple.product-type.framework"; + }; 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */ = { isa = PBXNativeTarget; buildConfigurationList = 2F9E94B5F79E365095CB33D3D3FCA6A2 /* Build configuration list for PBXNativeTarget "SDWebImage" */; @@ -2424,13 +2777,31 @@ buildRules = ( ); dependencies = ( - EE61A46DF554B3E5C29DB10DCBB3618A /* PBXTargetDependency */, + EC9282C4AF523D47EADC56A4CE8904C3 /* PBXTargetDependency */, ); name = SDWebImage; productName = SDWebImage; productReference = B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */; productType = "com.apple.product-type.framework"; }; + 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */ = { + isa = PBXNativeTarget; + buildConfigurationList = F06E4A04DE8430EB36B85704972503A5 /* Build configuration list for PBXNativeTarget "FLAnimatedImage" */; + buildPhases = ( + 80AAB619EDBB0EBDBBC84368EED44AA3 /* Headers */, + FCCB6EDD1337F2C5115636BA7E258EDF /* Sources */, + D267C6F8AD649543C397BCAAADB7F148 /* Frameworks */, + 9EF83CC96C715675FF7A15F96027E83F /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = FLAnimatedImage; + productName = FLAnimatedImage; + productReference = FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */; + productType = "com.apple.product-type.framework"; + }; 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */ = { isa = PBXNativeTarget; buildConfigurationList = 547AC2DDC5CDD1783E0827EEA7D453E1 /* Build configuration list for PBXNativeTarget "MJExtension" */; @@ -2443,7 +2814,7 @@ buildRules = ( ); dependencies = ( - 578B4FEE3B5BBEBE31FFA9C174A0B42C /* PBXTargetDependency */, + FB60B14E58A37E6A5B293868DF436E6A /* PBXTargetDependency */, ); name = MJExtension; productName = MJExtension; @@ -2498,7 +2869,7 @@ buildRules = ( ); dependencies = ( - 5D247EA99693B7B23340BCC7FCB64DA1 /* PBXTargetDependency */, + 20CB5E6449D6C45E7421FD50006E7D24 /* PBXTargetDependency */, ); name = MJRefresh; productName = MJRefresh; @@ -2525,11 +2896,11 @@ }; 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */ = { isa = PBXNativeTarget; - buildConfigurationList = E1B78FF12090122B97AE1A33AD172B8C /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */; + buildConfigurationList = 1CD347BC63622334B56C46BB2A857CD3 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */; buildPhases = ( - AD25BCFFC542199E6A56D85CF9FB3D3B /* Sources */, - 68405B5F41E04D755317E63849131904 /* Frameworks */, - E40003F128ACA565E0AF6D7254C64D86 /* Resources */, + 5D5A1D298E1F729BBBC44CC63B0DAC56 /* Sources */, + 0A90BB8CE318012A50199E336C8F5BCA /* Frameworks */, + A4A3556F6DD3ED0847E4EB40F1F29D75 /* Resources */, ); buildRules = ( ); @@ -2542,11 +2913,11 @@ }; B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = 0B91AB5AF396DEF5CC076D126E4738A7 /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */; + buildConfigurationList = D3C801997CDC416BBF7A27755D5920DE /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */; buildPhases = ( - 8986B9155B9BA0DA7D02654B069F0887 /* Sources */, - 0DE7FCDD6C04EC4E1E9ECB00A0604FB7 /* Frameworks */, - 021D9F4B66A6BEEC09A45D59909CBDE6 /* Resources */, + F04E1A815CD217F3F46E61BEA8513EB5 /* Sources */, + 800727FE9078FBA0703E3E2537345EEF /* Frameworks */, + 4B01C63687493C34FE8AFA03794477F4 /* Resources */, ); buildRules = ( ); @@ -2559,11 +2930,11 @@ }; B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */ = { isa = PBXNativeTarget; - buildConfigurationList = 95B0FCBEC38B41A89EDFDA2284E4CF2F /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */; + buildConfigurationList = 5857A1746B204B55F2748E4F3555CECF /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */; buildPhases = ( - D5A57C43D4D146DC812EB6C4160745DD /* Sources */, - A12778F5B92D79BB1CB466B6E7808C73 /* Frameworks */, - D4B34D2916BE13E436CD1FF18F0BC0CB /* Resources */, + 90B5FC4585D05C9915A804D4622F608C /* Sources */, + 9FF74FF9D13DB5C45BDD20BC0FD2DEF2 /* Frameworks */, + 695C46F18F8888557C555B60F85D6C1A /* Resources */, ); buildRules = ( ); @@ -2586,11 +2957,11 @@ buildRules = ( ); dependencies = ( - 33AF3D0CC306E3DD56CCD4562DC58ABA /* PBXTargetDependency */, - 6D842140C98E51FF8C3EC4AC689EC108 /* PBXTargetDependency */, - AEC4F62BB393A387D98BB39E07E54A5E /* PBXTargetDependency */, - BD5EEFF9A8B5208454EE5C08E29DEC6F /* PBXTargetDependency */, - 32CDD4F647C6AFB9D8EF74E8A88163CD /* PBXTargetDependency */, + 7942D083DF422445F42C8432E3A66F69 /* PBXTargetDependency */, + 76FB281B53D21CDDEA2D840BB217651F /* PBXTargetDependency */, + 03C67E3DA284B09832C1A3761E95770C /* PBXTargetDependency */, + 81CCDE623B0FFC2D6E60897CC923A69D /* PBXTargetDependency */, + 7655824DF1BDB2D5AC22F0DC8AD35757 /* PBXTargetDependency */, ); name = "Pods-CustomKeyboard"; productName = Pods_CustomKeyboard; @@ -2635,13 +3006,15 @@ mainGroup = CF1408CF629C7361332E53B88F7BD30C; minimizedProjectReferenceProxies = 0; preferredProjectObjectVersion = 77; - productRefGroup = 1C8A19406FF58E9BA6BC427CA02E9857 /* Products */; + productRefGroup = 9E1956AE0271229C1F82B31B48A1BA2C /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */, 4A68CFD979D413A619DF631BB121D98F /* Bugly */, F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */, + 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */, + 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */, 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */, 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */, 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */, @@ -2658,11 +3031,10 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 021D9F4B66A6BEEC09A45D59909CBDE6 /* Resources */ = { + 184141AC8A105A0A90ABD3175CCD912A /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - BBD85F9E0E25710317253841091C391F /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2674,6 +3046,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 27B1683E18D5081CF470BC9A233C7D28 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 44B3C0D7DDF289331B7732E9D87126DB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2691,6 +3070,22 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 4B01C63687493C34FE8AFA03794477F4 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + CDCDFA7775C6B23ACD5CFB66663214CF /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 695C46F18F8888557C555B60F85D6C1A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 2FF9F5DCB10C6393065EB61DB7441155 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8DF763B35C7183D33FE173339E261549 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2705,18 +3100,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B3CE18BE6ADF72F2E31CF5989ACEA7C5 /* Resources */ = { + 9EF83CC96C715675FF7A15F96027E83F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - D4B34D2916BE13E436CD1FF18F0BC0CB /* Resources */ = { + A4A3556F6DD3ED0847E4EB40F1F29D75 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 2FEE980BEE23B8E0C7EBB70445EC8C9A /* PrivacyInfo.xcprivacy in Resources */, + A8C001E34C77D81FAF5FE55956A8293F /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2727,14 +3122,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E40003F128ACA565E0AF6D7254C64D86 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - EBC9AA5D4A55F79BB5CBF6CC92719FAF /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; E664BDFE0B44D742638A43686ACB3008 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -2866,15 +3253,38 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 87D36E846DA0820C15C53178D809C27F /* Sources */ = { + 3EA749E8A97310551F543948A8C92475 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 9DE398BDF0CD7F38181F2F751AC18CB2 /* Pods-keyBoard-dummy.m in Sources */, + 6E4DE8085E69AD1DDB49B059DCE286DB /* HWBackgroundConfig.m in Sources */, + 9D859B99561C389C0F494428F66F1871 /* HWDimmedView.m in Sources */, + A760FF1452F08B787F0997D91F4A2C98 /* HWPageSheetPresentingAnimation.m in Sources */, + FC32143CA2A916F032F2B569313315AA /* HWPanContainerView.m in Sources */, + F47EBDD360E642A0499A767BC7C17B4B /* HWPanIndicatorView.m in Sources */, + E1B4145C5201DB66B65520B36849067C /* HWPanModal-dummy.m in Sources */, + 80EBFDD01E84CE4E8AE5BAE9CB3C7C1D /* HWPanModalAnimator.m in Sources */, + 73B19D03C7B7DF1C944544165F742D82 /* HWPanModalContainerView.m in Sources */, + 79534562F85AA71041043B395DE14AD0 /* HWPanModalContentView.m in Sources */, + 381E0DBE152CA0D9C66310CB77A20A83 /* HWPanModalInteractiveAnimator.m in Sources */, + FEE3D901B4A4638F9E00935144E982B3 /* HWPanModalPresentableHandler.m in Sources */, + 541AD3B0F5EA216EE730ECC6E8B84C31 /* HWPanModalPresentationAnimator.m in Sources */, + 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */, + 3BD85ED8999015326D93D8EEADCCF910 /* HWPanModalPresentationDelegate.m in Sources */, + E7520DAA65004368C61453B8A2740295 /* HWPanModalShadow.m in Sources */, + 0005259AEE76604A26E43EA994475B68 /* HWShoppingCartPresentingAnimation.m in Sources */, + F6A34F74BE7FE816114D7F3902296AF2 /* HWVisualEffectView.m in Sources */, + 4ACC15DF96D179E48E4276AE3C540C7C /* KeyValueObserver.m in Sources */, + 728107C8D8479AADE986F4EC23233DC3 /* UIScrollView+Helper.m in Sources */, + 7053A9EB6335BEAC9EFDF2D5320E6E2A /* UIView+HW_Frame.m in Sources */, + 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */, + F3DA1005917E252B306712DAAA287FB0 /* UIViewController+PanModalDefault.m in Sources */, + BD2F6B06ADB5136DA881D1B918367125 /* UIViewController+PanModalPresenter.m in Sources */, + B01F27CEAE1971DEC56A8811FE669EB6 /* UIViewController+Presentation.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 8986B9155B9BA0DA7D02654B069F0887 /* Sources */ = { + 5D5A1D298E1F729BBBC44CC63B0DAC56 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -2953,6 +3363,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 90B5FC4585D05C9915A804D4622F608C /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; A29E3C9E62E3E86A20CAE1E7632313FC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2962,10 +3379,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - AD25BCFFC542199E6A56D85CF9FB3D3B /* Sources */ = { + B641D3E85656A81261B69763FFCD5626 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + DBF03AD94698149E54474A5EAD083E11 /* Pods-keyBoard-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2992,13 +3410,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D5A57C43D4D146DC812EB6C4160745DD /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; DA0B6A6F9B3EDF226BF081DAC7E777E7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3057,117 +3468,186 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F04E1A815CD217F3F46E61BEA8513EB5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + FCCB6EDD1337F2C5115636BA7E258EDF /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + AD01931D200C49153984E27CBCEFE9D1 /* FLAnimatedImage.m in Sources */, + C16483526F6C6287240A75EDCB7E2F2F /* FLAnimatedImage-dummy.m in Sources */, + FD3AF10F8723DABEE406D25592B5F562 /* FLAnimatedImageView.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 071F326A1012E3F537E82D4600D6099B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Bugly; - target = 4A68CFD979D413A619DF631BB121D98F /* Bugly */; - targetProxy = C85024A705A5032AA3907BF36C187CEA /* PBXContainerItemProxy */; - }; - 09B11A1954CF8173776EC7F7B6571224 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = F295793354A8BF65125212DAE1C81DF5 /* PBXContainerItemProxy */; - }; - 32CDD4F647C6AFB9D8EF74E8A88163CD /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Masonry; - target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = 551922F754B651AFCAAB56605458A1A4 /* PBXContainerItemProxy */; - }; - 33AF3D0CC306E3DD56CCD4562DC58ABA /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = F34B1D580EA71604D4CC7C4C5807E366 /* PBXContainerItemProxy */; - }; - 3CC71AA09CD8D91F7CAC51C8C0C3D8A8 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DZNEmptyDataSet; - target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = D8B3BBDA3C526A079F33D20BFE81FDA0 /* PBXContainerItemProxy */; - }; - 4CEDC3503EBC64FA8AD4BB751A1257E2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJRefresh; - target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; - targetProxy = 6610EBAD645971628D6E656F2A7FB551 /* PBXContainerItemProxy */; - }; - 575EFC27A8B3BE6F6EF85229FA04A8F6 /* PBXTargetDependency */ = { + 03C67E3DA284B09832C1A3761E95770C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MBProgressHUD; target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = F9524D7CD6D352CCF289944EBCA3B3FB /* PBXContainerItemProxy */; + targetProxy = 3D4D160BA53FFAEBFA15602EF206AF18 /* PBXContainerItemProxy */; }; - 578B4FEE3B5BBEBE31FFA9C174A0B42C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "MJExtension-MJExtension"; - target = B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */; - targetProxy = F4000FEC7CADA56B75E5CC31E64EC891 /* PBXContainerItemProxy */; - }; - 5D247EA99693B7B23340BCC7FCB64DA1 /* PBXTargetDependency */ = { + 20CB5E6449D6C45E7421FD50006E7D24 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "MJRefresh-MJRefresh.Privacy"; target = B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */; - targetProxy = BBBA8C59A31486B3AE2F16C6A4AAAB66 /* PBXContainerItemProxy */; + targetProxy = 637C06B2D3FCA697F91C75E07050A564 /* PBXContainerItemProxy */; }; - 69F880D20E49FF278D9D99F0FC359C80 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = 17AC289E8A24B84DB147B7977008DB53 /* PBXContainerItemProxy */; - }; - 6D842140C98E51FF8C3EC4AC689EC108 /* PBXTargetDependency */ = { + 282288FFCFB047F56CB271F52E09E15A /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DZNEmptyDataSet; target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = B0F47C29852712CF2F2C1E658ECD1809 /* PBXContainerItemProxy */; + targetProxy = 2A844DF7EB83D82BDFB8EBD48D398A77 /* PBXContainerItemProxy */; }; - 8343E87E690EAE8ED5D426D9B97081C7 /* PBXTargetDependency */ = { + 4CAC7F817A11B79D37ED70D30F53DDB1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = MJExtension; - target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = 17A6BBBD906DDCB7334A02B16B07B4DB /* PBXContainerItemProxy */; + name = MJRefresh; + target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; + targetProxy = F862CA9AADBD981FC5FBB9541050A76D /* PBXContainerItemProxy */; }; - AEC4F62BB393A387D98BB39E07E54A5E /* PBXTargetDependency */ = { + 5661EC5C917094D00EA315585BF5EDD9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = MBProgressHUD; - target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = A311284721E0C3165FAA791C3EE6961E /* PBXContainerItemProxy */; + name = HWPanModal; + target = 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */; + targetProxy = A6418FEFA13B0CC9A6A43072F418FF50 /* PBXContainerItemProxy */; }; - BD5EEFF9A8B5208454EE5C08E29DEC6F /* PBXTargetDependency */ = { + 5F35B22B5B052239AB059FB5F5850B30 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = MJExtension; - target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = AD74DB90134D3DB33FAC2C873C0764E9 /* PBXContainerItemProxy */; + name = FLAnimatedImage; + target = 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */; + targetProxy = 53436DF6632E3EA7570FFCAF0043D337 /* PBXContainerItemProxy */; }; - D4796534CC93D6F34DDBB3E449125A23 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LookinServer; - target = 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */; - targetProxy = 7D22DC5F48A287865357EE41131C6668 /* PBXContainerItemProxy */; - }; - EE61A46DF554B3E5C29DB10DCBB3618A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SDWebImage-SDWebImage"; - target = 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */; - targetProxy = 8C2E663FC9840B2B7BABEF079AD58862 /* PBXContainerItemProxy */; - }; - EF01B3D5C4798C26DB6A90866EE03225 /* PBXTargetDependency */ = { + 7655824DF1BDB2D5AC22F0DC8AD35757 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Masonry; target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = 1CC061C6A0CA52E13056E44543CDE4BD /* PBXContainerItemProxy */; + targetProxy = B6CB86E5B6D367721C43659AE5015027 /* PBXContainerItemProxy */; + }; + 76FB281B53D21CDDEA2D840BB217651F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DZNEmptyDataSet; + target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; + targetProxy = AB7581572FF4E1AD0E3EAF6948CD6FDB /* PBXContainerItemProxy */; + }; + 7942D083DF422445F42C8432E3A66F69 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = E706D6D60256E57E5FB469EB7708C200 /* PBXContainerItemProxy */; + }; + 81CCDE623B0FFC2D6E60897CC923A69D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MJExtension; + target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; + targetProxy = B3DE694415E78DB7C365C1C1AFA7DAC6 /* PBXContainerItemProxy */; + }; + 8829578C6DBA00A542689EF1CC30A5E1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LookinServer; + target = 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */; + targetProxy = AB5F78A9F2AF013979DDC5609581D438 /* PBXContainerItemProxy */; + }; + 9B0BD678EE6118D30B2F6730091BCF98 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MJExtension; + target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; + targetProxy = EE2CA5E8D8591CAB500C01C15555AC6F /* PBXContainerItemProxy */; + }; + A8F760EC7DB6C976198571C488CABDD5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = B7E9478012E785A9A105D255A83783E4 /* PBXContainerItemProxy */; + }; + CA2DED65AB5F88553496C34E44FE1523 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = 16A3AE428B6730C115D886BB1D093565 /* PBXContainerItemProxy */; + }; + D1B8378E4FB863983460E1A5634E5E53 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Bugly; + target = 4A68CFD979D413A619DF631BB121D98F /* Bugly */; + targetProxy = 9C7907B511C5E05A0898367B21C98132 /* PBXContainerItemProxy */; + }; + E6914512C526E59C97F2632B494CEE6B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = 8A15E01E24CFF0D6326188BC70ED8D54 /* PBXContainerItemProxy */; + }; + EC9282C4AF523D47EADC56A4CE8904C3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SDWebImage-SDWebImage"; + target = 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */; + targetProxy = DE04810BEAD33737F5D80FEF4299D57D /* PBXContainerItemProxy */; + }; + F7C768E46E51C280EE423CDB13DC72C5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MBProgressHUD; + target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; + targetProxy = 48A3998D02E8C6CE503B67AEF4201A9E /* PBXContainerItemProxy */; + }; + FB60B14E58A37E6A5B293868DF436E6A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "MJExtension-MJExtension"; + target = B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */; + targetProxy = 3DADDD414405E1608F5E53FA546F0683 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ + 0753C1EBCEE9E4DEC8AB43D567EE938D /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.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-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.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; + }; 1A69165A21A7A1CC42A38CF8ADE98215 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2DAD93B79D27664FE05E862A2C992A45 /* LookinServer.release.xcconfig */; + baseConfigurationReference = B5D946A76BE7958D130628335233FAE2 /* LookinServer.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3242,9 +3722,26 @@ }; name = Release; }; + 25D63BD2ECBD8949C026AD83BA469503 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8594A6CF7D45F1715A10AC3C18700F18 /* MJRefresh.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; + IBSC_MODULE = MJRefresh; + INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJRefresh.Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; 2D1085CA7BD144CABF012FC10C6C9120 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B9AC91A4E70DD8F8592A5811E8617578 /* Masonry.debug.xcconfig */; + baseConfigurationReference = 95B0223E2E65A30C6C4B233E336C7DB9 /* Masonry.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3279,9 +3776,26 @@ }; name = Debug; }; + 2DAC11C2887F4A1ADE664F662CA95F65 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 87352714D54CE9C3DCA836E85ABDE2D9 /* MJExtension.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; + IBSC_MODULE = MJExtension; + INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; 35044A57510DB3F4E442A9C16E980E4A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 61A50E7751555885AEB4247687F5DF05 /* DZNEmptyDataSet.debug.xcconfig */; + baseConfigurationReference = C354B162321F2CA18DB1B330D092378E /* DZNEmptyDataSet.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3316,26 +3830,9 @@ }; name = Debug; }; - 427CF48FABE82C6FC8208160FDF4A9CE /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 57BCCC946B3042A20D0C8F15D69FF943 /* MJExtension.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; - IBSC_MODULE = MJExtension; - INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJExtension; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; 49CEA33268972C89BF290FCBF8F9DFC0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 52832E51BDED300B58102A301664AD5A /* DZNEmptyDataSet.release.xcconfig */; + baseConfigurationReference = 83ECFAFFBD6F90A4A996E32508211B96 /* DZNEmptyDataSet.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3371,9 +3868,9 @@ }; name = Release; }; - 50BA0438712A00B9F9ECCE17AD68D287 /* Debug */ = { + 4D5526A44FCB4F62B609F8C8BC69F02C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5998234B9DD3C83BCD1DE88EDDEA5DF6 /* SDWebImage.debug.xcconfig */; + baseConfigurationReference = CE9DC3EBC5E4498B6CBDAA25AFECD440 /* SDWebImage.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; @@ -3390,7 +3887,7 @@ }; 51753BD6FE635BB9421BCA4C05F63C6A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 45EDC4788D38048F75B7F3CD0BEF1783 /* MJRefresh.release.xcconfig */; + baseConfigurationReference = 57748DDDE8158306E4B3EAC0E03C99A1 /* MJRefresh.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3427,26 +3924,9 @@ }; name = Release; }; - 532B03D3A70665C5D6CA2E785045C97B /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 3E2A55F2F78E11DEDCF2FA119B3E1912 /* MJExtension.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; - IBSC_MODULE = MJExtension; - INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJExtension; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; 614F7847ADAD2F1EEC9E48FAEC955108 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D2BBA8DCCC9E2658211368C22BE1B033 /* MJRefresh.debug.xcconfig */; + baseConfigurationReference = 8594A6CF7D45F1715A10AC3C18700F18 /* MJRefresh.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3484,7 +3964,7 @@ }; 618AB008538F74AAF983C04297207BB6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9641B4F4D8DDE2072CB32BF4C9C2882A /* LookinServer.debug.xcconfig */; + baseConfigurationReference = F915BA2B3AE80D1E58F67A45AB3B3D68 /* LookinServer.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3518,6 +3998,82 @@ }; name = Debug; }; + 63708B35D08B13BC40AB51386020974A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 3011D5BF791250C05C8D7C5BD12BC772 /* HWPanModal.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/HWPanModal/HWPanModal-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/HWPanModal/HWPanModal-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/HWPanModal/HWPanModal.modulemap"; + PRODUCT_MODULE_NAME = HWPanModal; + PRODUCT_NAME = HWPanModal; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 67BAB382C3420CD62CB414CAA4D8A5B1 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 970ACBBC888D1BD4521806C0B268E7C6 /* FLAnimatedImage.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/FLAnimatedImage/FLAnimatedImage-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/FLAnimatedImage/FLAnimatedImage.modulemap"; + PRODUCT_MODULE_NAME = FLAnimatedImage; + PRODUCT_NAME = FLAnimatedImage; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 7BB5AE2225500DE9658B6277FED45BCD /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */; @@ -3557,6 +4113,45 @@ }; name = Debug; }; + 7F3047493AFFD2DDF1C7F52CA126CB0E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3623,23 +4218,6 @@ }; name = Debug; }; - 9C1EE0C94CDE25779693BCA7261B5989 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0C31E11F6B40D55EB650013FAC1B59C0 /* SDWebImage.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; - IBSC_MODULE = SDWebImage; - INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = SDWebImage; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -3704,7 +4282,7 @@ }; 9E9FB1E032B56896F9380263D45A0F9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3E2A55F2F78E11DEDCF2FA119B3E1912 /* MJExtension.release.xcconfig */; + baseConfigurationReference = 380B11CB6389CFA1B7904A11C79EDA18 /* MJExtension.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3743,7 +4321,7 @@ }; 9F519E5162C0E51D10B7E999E2FD0125 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0C31E11F6B40D55EB650013FAC1B59C0 /* SDWebImage.release.xcconfig */; + baseConfigurationReference = D57BF77833CFB4176D299C7D13ACBA75 /* SDWebImage.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3781,7 +4359,7 @@ }; B04295D726C1883ADA40A304483D7E33 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5998234B9DD3C83BCD1DE88EDDEA5DF6 /* SDWebImage.debug.xcconfig */; + baseConfigurationReference = CE9DC3EBC5E4498B6CBDAA25AFECD440 /* SDWebImage.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3818,7 +4396,7 @@ }; B26FBB655ABB114E4C0D589843814D6C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8C9727D0D56A9017D437CA50176F0474 /* Bugly.release.xcconfig */; + baseConfigurationReference = 6E87ADD85BCC1C5A4BF0FB2AC7E2A834 /* Bugly.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -3834,29 +4412,10 @@ }; name = Release; }; - B83818605FEB0030D2B6D7FF64325A19 /* Debug */ = { + B429B9740B8EB5894C5BF953D9590A46 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D2BBA8DCCC9E2658211368C22BE1B033 /* MJRefresh.debug.xcconfig */; + baseConfigurationReference = B87A76839C6A92DD597AFD764D90E24D /* FLAnimatedImage.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; - IBSC_MODULE = MJRefresh; - INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJRefresh.Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - BA12DA04ADC510F02AC04E3CFF37D769 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.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*]" = ""; @@ -3867,33 +4426,49 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/FLAnimatedImage/FLAnimatedImage-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 13.0; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MACH_O_TYPE = staticlib; - MODULEMAP_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + MODULEMAP_FILE = "Target Support Files/FLAnimatedImage/FLAnimatedImage.modulemap"; + PRODUCT_MODULE_NAME = FLAnimatedImage; + PRODUCT_NAME = FLAnimatedImage; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + B57BE885B0BCEA3DA3C659683487FF80 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D57BF77833CFB4176D299C7D13ACBA75 /* SDWebImage.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; + IBSC_MODULE = SDWebImage; + INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = SDWebImage; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + WRAPPER_EXTENSION = bundle; }; name = Release; }; BCD70A0BB22D0C72BAF7207A7D4F44BD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2940A878AE956B2190BA5A68D63DC5AD /* MBProgressHUD.debug.xcconfig */; + baseConfigurationReference = 550192267AB5C328829C08C69A3B04BC /* MBProgressHUD.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3928,9 +4503,46 @@ }; name = Debug; }; + BDD02D9903A09C2C9D362C7536416CFB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C9DEFB96646787781652ABFE1D5648AF /* HWPanModal.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/HWPanModal/HWPanModal-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/HWPanModal/HWPanModal-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/HWPanModal/HWPanModal.modulemap"; + PRODUCT_MODULE_NAME = HWPanModal; + PRODUCT_NAME = HWPanModal; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; BE0CDEB7BE0A402663AFCC2111742430 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 71C7BAB63ED44B881A65C001AA682ADB /* MBProgressHUD.release.xcconfig */; + baseConfigurationReference = 27D20C78C9DF6C2E5537332D5CBE55ED /* MBProgressHUD.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3968,7 +4580,7 @@ }; CBAFED52B4B51F600FAF2141BA449F2E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 18DB01964CBE026F2E6511875E1A98E2 /* Bugly.debug.xcconfig */; + baseConfigurationReference = 4E56D5DDE9402DE57FEF9D81E68DE8B3 /* Bugly.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -3983,48 +4595,9 @@ }; name = Debug; }; - CCA3AD40EAA35CF032C0E1F404CCF9A1 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; CEE7FEC0A1B23DE7053203A448EEB294 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5104591E28208BB976FFAD3D7AFA2F58 /* AFNetworking.debug.xcconfig */; + baseConfigurationReference = 6E7FB45CA71B8CA83A3493DEA84881AB /* AFNetworking.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4061,7 +4634,7 @@ }; D0AB0AEF4014B926FCD853D3AE0A370A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F53F6F5B0D7E0FF60505964233E5C608 /* Masonry.release.xcconfig */; + baseConfigurationReference = C67403F95732E8793DB36834C4726BFA /* Masonry.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4099,7 +4672,7 @@ }; DA533AA9B577872DAFB44EF2CF26C49A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C6F66997EF28E05B21EB7F13B379645A /* AFNetworking.release.xcconfig */; + baseConfigurationReference = 3A8B099A5081203885BD7E80C8282B95 /* AFNetworking.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4135,9 +4708,26 @@ }; name = Release; }; + EA99A70C10B64850E5D1CA0F54E1452C /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 57748DDDE8158306E4B3EAC0E03C99A1 /* MJRefresh.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; + IBSC_MODULE = MJRefresh; + INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJRefresh.Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; EC66105EE15F9DC9B6F20F58FB67957D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 57BCCC946B3042A20D0C8F15D69FF943 /* MJExtension.debug.xcconfig */; + baseConfigurationReference = 87352714D54CE9C3DCA836E85ABDE2D9 /* MJExtension.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4173,16 +4763,16 @@ }; name = Debug; }; - FE5AD58E2A362D4BD062D63BEF049BC0 /* Release */ = { + EE9EED0DCFA28D7527D73111A3DA2E5C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 45EDC4788D38048F75B7F3CD0BEF1783 /* MJRefresh.release.xcconfig */; + baseConfigurationReference = 380B11CB6389CFA1B7904A11C79EDA18 /* MJExtension.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; - IBSC_MODULE = MJRefresh; - INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; + IBSC_MODULE = MJExtension; + INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJRefresh.Privacy; + PRODUCT_NAME = MJExtension; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -4193,11 +4783,11 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0B91AB5AF396DEF5CC076D126E4738A7 /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */ = { + 1CD347BC63622334B56C46BB2A857CD3 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */ = { isa = XCConfigurationList; buildConfigurations = ( - B83818605FEB0030D2B6D7FF64325A19 /* Debug */, - FE5AD58E2A362D4BD062D63BEF049BC0 /* Release */, + 4D5526A44FCB4F62B609F8C8BC69F02C /* Debug */, + B57BE885B0BCEA3DA3C659683487FF80 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4229,15 +4819,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 3FA2BE14A4014E20D1803ECC0CEB5A7F /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - CCA3AD40EAA35CF032C0E1F404CCF9A1 /* Debug */, - BA12DA04ADC510F02AC04E3CFF37D769 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4256,6 +4837,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 5857A1746B204B55F2748E4F3555CECF /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2DAC11C2887F4A1ADE664F662CA95F65 /* Debug */, + EE9EED0DCFA28D7527D73111A3DA2E5C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 7CEB2E47380AD51987AA02ECD4DFBCD9 /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4274,11 +4864,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 95B0FCBEC38B41A89EDFDA2284E4CF2F /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */ = { + 975743647BB264A93D50394F24059A92 /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */ = { isa = XCConfigurationList; buildConfigurations = ( - 427CF48FABE82C6FC8208160FDF4A9CE /* Debug */, - 532B03D3A70665C5D6CA2E785045C97B /* Release */, + 7F3047493AFFD2DDF1C7F52CA126CB0E /* Debug */, + 0753C1EBCEE9E4DEC8AB43D567EE938D /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4310,11 +4900,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - E1B78FF12090122B97AE1A33AD172B8C /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */ = { + D3C801997CDC416BBF7A27755D5920DE /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */ = { isa = XCConfigurationList; buildConfigurations = ( - 50BA0438712A00B9F9ECCE17AD68D287 /* Debug */, - 9C1EE0C94CDE25779693BCA7261B5989 /* Release */, + 25D63BD2ECBD8949C026AD83BA469503 /* Debug */, + EA99A70C10B64850E5D1CA0F54E1452C /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D47A0ADD8E3841C9330561C3E1664BB3 /* Build configuration list for PBXNativeTarget "HWPanModal" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BDD02D9903A09C2C9D362C7536416CFB /* Debug */, + 63708B35D08B13BC40AB51386020974A /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -4328,6 +4927,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + F06E4A04DE8430EB36B85704972503A5 /* Build configuration list for PBXNativeTarget "FLAnimatedImage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B429B9740B8EB5894C5BF953D9590A46 /* Debug */, + 67BAB382C3420CD62CB414CAA4D8A5B1 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/FLAnimatedImage.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/FLAnimatedImage.xcscheme new file mode 100644 index 0000000..6851dd8 --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/FLAnimatedImage.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/HWPanModal.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/HWPanModal.xcscheme new file mode 100644 index 0000000..d82a391 --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/HWPanModal.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-Info.plist b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-Info.plist new file mode 100644 index 0000000..d6405e6 --- /dev/null +++ b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-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.17 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-dummy.m b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-dummy.m new file mode 100644 index 0000000..343e6b0 --- /dev/null +++ b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_FLAnimatedImage : NSObject +@end +@implementation PodsDummy_FLAnimatedImage +@end diff --git a/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-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/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-umbrella.h b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-umbrella.h new file mode 100644 index 0000000..3ae0cae --- /dev/null +++ b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage-umbrella.h @@ -0,0 +1,18 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "FLAnimatedImage.h" +#import "FLAnimatedImageView.h" + +FOUNDATION_EXPORT double FLAnimatedImageVersionNumber; +FOUNDATION_EXPORT const unsigned char FLAnimatedImageVersionString[]; + diff --git a/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.debug.xcconfig b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.debug.xcconfig new file mode 100644 index 0000000..d55c041 --- /dev/null +++ b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.debug.xcconfig @@ -0,0 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "ImageIO" -framework "QuartzCore" +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}/FLAnimatedImage +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/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.modulemap b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.modulemap new file mode 100644 index 0000000..0c6f2e3 --- /dev/null +++ b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.modulemap @@ -0,0 +1,6 @@ +framework module FLAnimatedImage { + umbrella header "FLAnimatedImage-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.release.xcconfig b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.release.xcconfig new file mode 100644 index 0000000..d55c041 --- /dev/null +++ b/Pods/Target Support Files/FLAnimatedImage/FLAnimatedImage.release.xcconfig @@ -0,0 +1,13 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -framework "CoreGraphics" -framework "ImageIO" -framework "QuartzCore" +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}/FLAnimatedImage +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/Pods/Target Support Files/HWPanModal/HWPanModal-Info.plist b/Pods/Target Support Files/HWPanModal/HWPanModal-Info.plist new file mode 100644 index 0000000..5687afa --- /dev/null +++ b/Pods/Target Support Files/HWPanModal/HWPanModal-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.9.9 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/HWPanModal/HWPanModal-dummy.m b/Pods/Target Support Files/HWPanModal/HWPanModal-dummy.m new file mode 100644 index 0000000..9e46cd7 --- /dev/null +++ b/Pods/Target Support Files/HWPanModal/HWPanModal-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_HWPanModal : NSObject +@end +@implementation PodsDummy_HWPanModal +@end diff --git a/Pods/Target Support Files/HWPanModal/HWPanModal-prefix.pch b/Pods/Target Support Files/HWPanModal/HWPanModal-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/HWPanModal/HWPanModal-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/Pods/Target Support Files/HWPanModal/HWPanModal-umbrella.h b/Pods/Target Support Files/HWPanModal/HWPanModal-umbrella.h new file mode 100644 index 0000000..993527a --- /dev/null +++ b/Pods/Target Support Files/HWPanModal/HWPanModal-umbrella.h @@ -0,0 +1,47 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "HWPanModalAnimator.h" +#import "HWPanModalInteractiveAnimator.h" +#import "HWPanModalPresentationAnimator.h" +#import "HWPresentingVCAnimatedTransitioning.h" +#import "HWPageSheetPresentingAnimation.h" +#import "HWShoppingCartPresentingAnimation.h" +#import "UIScrollView+Helper.h" +#import "UIView+HW_Frame.h" +#import "HWPanModalPresentationController.h" +#import "HWPanModalPresentationDelegate.h" +#import "HWPanModal.h" +#import "KeyValueObserver.h" +#import "HWPanModalPresentableHandler.h" +#import "HWPanModalHeight.h" +#import "HWPanModalPanGestureDelegate.h" +#import "HWPanModalPresentable.h" +#import "HWPanModalPresentationUpdateProtocol.h" +#import "UIViewController+LayoutHelper.h" +#import "UIViewController+PanModalDefault.h" +#import "UIViewController+Presentation.h" +#import "HWPanModalPresenterProtocol.h" +#import "UIViewController+PanModalPresenter.h" +#import "HWBackgroundConfig.h" +#import "HWDimmedView.h" +#import "HWPanContainerView.h" +#import "HWPanIndicatorView.h" +#import "HWPanModalIndicatorProtocol.h" +#import "HWPanModalShadow.h" +#import "HWVisualEffectView.h" +#import "HWPanModalContainerView.h" +#import "HWPanModalContentView.h" + +FOUNDATION_EXPORT double HWPanModalVersionNumber; +FOUNDATION_EXPORT const unsigned char HWPanModalVersionString[]; + diff --git a/Pods/Target Support Files/HWPanModal/HWPanModal.debug.xcconfig b/Pods/Target Support Files/HWPanModal/HWPanModal.debug.xcconfig new file mode 100644 index 0000000..23faa61 --- /dev/null +++ b/Pods/Target Support Files/HWPanModal/HWPanModal.debug.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +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}/HWPanModal +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/Pods/Target Support Files/HWPanModal/HWPanModal.modulemap b/Pods/Target Support Files/HWPanModal/HWPanModal.modulemap new file mode 100644 index 0000000..a329887 --- /dev/null +++ b/Pods/Target Support Files/HWPanModal/HWPanModal.modulemap @@ -0,0 +1,6 @@ +framework module HWPanModal { + umbrella header "HWPanModal-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/HWPanModal/HWPanModal.release.xcconfig b/Pods/Target Support Files/HWPanModal/HWPanModal.release.xcconfig new file mode 100644 index 0000000..23faa61 --- /dev/null +++ b/Pods/Target Support Files/HWPanModal/HWPanModal.release.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +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}/HWPanModal +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/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown index d4f13b3..05aba23 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown @@ -37,6 +37,56 @@ The above copyright notice and this permission notice shall be included in all c THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## FLAnimatedImage + +The MIT License (MIT) + +Copyright (c) 2014-2016 Flipboard + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +## HWPanModal + +MIT License + +Copyright (c) 2019 Heath Wang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## LookinServer MIT License diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist index 009ba4e..36ad216 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist @@ -60,6 +60,68 @@ THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLI Type PSGroupSpecifier
+ + FooterText + The MIT License (MIT) + +Copyright (c) 2014-2016 Flipboard + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + FLAnimatedImage + Type + PSGroupSpecifier + + + FooterText + MIT License + +Copyright (c) 2019 Heath Wang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + HWPanModal + Type + PSGroupSpecifier + FooterText MIT License diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist index fd18c4b..b8b69f9 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist @@ -1,6 +1,8 @@ ${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework ${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework +${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework +${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework ${BUILT_PRODUCTS_DIR}/LookinServer/LookinServer.framework ${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework ${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist index 9d28c83..92448c1 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist @@ -1,5 +1,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HWPanModal.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LookinServer.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist index 1b381a7..025cf33 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist @@ -1,6 +1,8 @@ ${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework ${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework +${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework +${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework ${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework ${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework ${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist index 80f5e3c..0d01dd3 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist @@ -1,5 +1,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HWPanModal.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh index 39e15c2..7b950ac 100755 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh @@ -178,6 +178,8 @@ code_sign_if_enabled() { if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework" install_framework "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework" + install_framework "${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework" install_framework "${BUILT_PRODUCTS_DIR}/LookinServer/LookinServer.framework" install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework" @@ -188,6 +190,8 @@ fi if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework" install_framework "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework" + install_framework "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework" + install_framework "${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework" install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework" diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig index cb9a079..4a28105 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "Foundation" -framework "ImageIO" -framework "LookinServer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "LookinServer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig index 8547576..ca8c010 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_ROOT}/Bugly" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_ROOT}/Bugly" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AFNetworking" -framework "Bugly" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "Foundation" -framework "ImageIO" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AFNetworking" -framework "Bugly" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 25d3975..949e3f3 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -12,6 +12,8 @@ 0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B62EBA287900F2D189 /* KBSkinManager.m */; }; 0459D1B82EBA287900F2D189 /* KBSkinManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0459D1B62EBA287900F2D189 /* KBSkinManager.m */; }; 0477BD952EBAFF4E0055D639 /* KBURLOpenBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BD932EBAFF4E0055D639 /* KBURLOpenBridge.m */; }; + 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */; }; + 0477BDF32EBB7B850055D639 /* KBDirectionIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -97,6 +99,10 @@ 0459D1B62EBA287900F2D189 /* KBSkinManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinManager.m; sourceTree = ""; }; 0477BD922EBAFF4E0055D639 /* KBURLOpenBridge.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBURLOpenBridge.h; sourceTree = ""; }; 0477BD932EBAFF4E0055D639 /* KBURLOpenBridge.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBURLOpenBridge.m; sourceTree = ""; }; + 0477BDEE2EBB76E30055D639 /* HomeSheetVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeSheetVC.h; sourceTree = ""; }; + 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeSheetVC.m; sourceTree = ""; }; + 0477BDF12EBB7B850055D639 /* KBDirectionIndicatorView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBDirectionIndicatorView.h; sourceTree = ""; }; + 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBDirectionIndicatorView.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -338,6 +344,8 @@ 04FC95B42EB1E3B1007BD342 /* V */ = { isa = PBXGroup; children = ( + 0477BDF12EBB7B850055D639 /* KBDirectionIndicatorView.h */, + 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */, ); path = V; sourceTree = ""; @@ -351,6 +359,8 @@ A1B2D7012EB8C00100000001 /* KBLangTestVC.m */, 0459D1B22EBA284C00F2D189 /* KBSkinCenterVC.h */, 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */, + 0477BDEE2EBB76E30055D639 /* HomeSheetVC.h */, + 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */, ); path = VC; sourceTree = ""; @@ -794,14 +804,10 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh\"\n"; @@ -872,10 +878,12 @@ 04FC96142EB34E00007BD342 /* KBLoginSheetViewController.m in Sources */, 04A9FE1B2EB892460020DB6D /* KBLocalizationManager.m in Sources */, 04FC95D72EB1EA16007BD342 /* BaseTableView.m in Sources */, + 0477BDF32EBB7B850055D639 /* KBDirectionIndicatorView.m in Sources */, 04FC95D82EB1EA16007BD342 /* BaseCell.m in Sources */, 04FC95C92EB1E4C9007BD342 /* BaseNavigationController.m in Sources */, 04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */, 04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */, + 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */, 04FC97002EB30A00007BD342 /* KBGuideTopCell.m in Sources */, 04FC97032EB30A00007BD342 /* KBGuideKFCell.m in Sources */, 04FC97062EB30A00007BD342 /* KBGuideUserCell.m in Sources */, diff --git a/keyBoard/Class/Home/V/KBDirectionIndicatorView.h b/keyBoard/Class/Home/V/KBDirectionIndicatorView.h new file mode 100644 index 0000000..e96f68a --- /dev/null +++ b/keyBoard/Class/Home/V/KBDirectionIndicatorView.h @@ -0,0 +1,17 @@ +// +// KBDirectionIndicatorView.h +// keyBoard +// +// Created by Mac on 2025/11/5. +// + +#import +#import +#import +NS_ASSUME_NONNULL_BEGIN + +@interface KBDirectionIndicatorView : UIView +- (void)applyPresentationState:(PresentationState)state; +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/V/KBDirectionIndicatorView.m b/keyBoard/Class/Home/V/KBDirectionIndicatorView.m new file mode 100644 index 0000000..103631e --- /dev/null +++ b/keyBoard/Class/Home/V/KBDirectionIndicatorView.m @@ -0,0 +1,66 @@ +// +// KBDirectionIndicatorView.m +// keyBoard +// +// Created by Mac on 2025/11/5. +// + +#import "KBDirectionIndicatorView.h" +#import "UIView+HW_Frame.h" + +@interface KBDirectionIndicatorView () +@property (nonatomic, strong) UIView *leftView; +@property (nonatomic, strong) UIView *rightView; +@end + +@implementation KBDirectionIndicatorView + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:CGRectZero]; + if (self) { + self.backgroundColor = UIColor.clearColor; + _leftView = [UIView new]; + _rightView = [UIView new]; + _leftView.backgroundColor = _rightView.backgroundColor = [UIColor colorWithWhite:0.85 alpha:1]; + [self addSubview:_leftView]; + [self addSubview:_rightView]; + } + return self; +} + +- (CGSize)indicatorSize { return CGSizeMake(34, 13); } + +- (void)setupSubviews { + CGSize size = [self indicatorSize]; + self.hw_size = size; + CGFloat h = 5, c = h/2.0; + _leftView.frame = CGRectMake(0, 0, size.width/2 + c, h); + _rightView.frame = CGRectMake(size.width/2 - c, 0, size.width/2 + c, h); + _leftView.hw_centerY = _rightView.hw_centerY = self.hw_height/2.0; + _leftView.layer.cornerRadius = MIN(_leftView.hw_width, _leftView.hw_height)/2; + _rightView.layer.cornerRadius = MIN(_rightView.hw_width, _rightView.hw_height)/2; +} + +// 默认库会在很多时机传 HWIndicatorStateNormal,这里忽略,不改变我们基于状态的朝向 +- (void)didChangeToState:(HWIndicatorState)state { + // no-op 或者根据需要做轻微弹性动画 +} + +- (void)applyPresentationState:(PresentationState)state { + CGFloat angle = (CGFloat)(20.0 * M_PI / 180.0); + void (^animate)(void) = ^{ + switch (state) { + case PresentationStateShort: // 最低:指向上(∧) + self.leftView.transform = CGAffineTransformMakeRotation(-angle); + self.rightView.transform = CGAffineTransformMakeRotation(angle); + break; + case PresentationStateLong: // 最高:指向下(∨) + default: + self.leftView.transform = CGAffineTransformMakeRotation(angle); + self.rightView.transform = CGAffineTransformMakeRotation(-angle); + break; + } + }; + [UIView animateWithDuration:0.25 delay:0 options:UIViewAnimationOptionBeginFromCurrentState|UIViewAnimationOptionCurveEaseOut animations:animate completion:nil]; +} +@end diff --git a/keyBoard/Class/Home/VC/HomeSheetVC.h b/keyBoard/Class/Home/VC/HomeSheetVC.h new file mode 100644 index 0000000..6f90c1b --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeSheetVC.h @@ -0,0 +1,18 @@ +// +// HomeSheetVC.h +// keyBoard +// +// Created by Mac on 2025/11/5. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeSheetVC : UIViewController +@property (nonatomic, assign) CGFloat minHeight; // 例如 150 +@property (nonatomic, assign) CGFloat topInset; // 例如 100 +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/HomeSheetVC.m b/keyBoard/Class/Home/VC/HomeSheetVC.m new file mode 100644 index 0000000..67af29e --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeSheetVC.m @@ -0,0 +1,73 @@ +// +// HomeSheetVC.m +// keyBoard +// +// Created by Mac on 2025/11/5. +// + +#import "HomeSheetVC.h" +#import "KBDirectionIndicatorView.h" + +@interface HomeSheetVC () +@property (nonatomic, strong) KBDirectionIndicatorView *indicator; +@end + +@implementation HomeSheetVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + self.view.backgroundColor = [UIColor redColor]; +} + +- (UIView *)customIndicatorView { + if (!_indicator) _indicator = [KBDirectionIndicatorView new]; + return _indicator; +} + +- (void)panModalTransitionDidFinish { + // 初次展示后按当前状态设定一次朝向 + [self.indicator applyPresentationState:self.hw_presentationState]; +} + +- (void)didChangeTransitionToState:(PresentationState)state { + // 每次状态切换完成后刷新朝向 + [self.indicator applyPresentationState:state]; +} + +- (PanModalHeight)shortFormHeight { + return PanModalHeightMake(PanModalHeightTypeContent, self.minHeight ?: 300); +} + +- (PanModalHeight)longFormHeight { + return PanModalHeightMake(PanModalHeightTypeMaxTopInset, self.topInset ?: 100); +} + +- (PresentationState)originPresentationState { + return PresentationStateShort; // 初始就以最小高度展示 +} + +- (BOOL)anchorModalToLongForm { + return YES; // 到 long 后不再继续往上拖 +} + +- (BOOL)allowsPullDownWhenShortState { + return NO; // 在 short 状态禁止继续往下拉(锁住最小高度) +} + +// 可选:完全不允许拖拽关闭(避免被拉到底消失) +- (BOOL)allowsDragToDismiss { + return NO; +} + +//- (BOOL)showDragIndicator{ +// return NO; +//} + +// 点背景不关闭 +- (BOOL)allowsTapBackgroundToDismiss { + return NO; +} + + +@end diff --git a/keyBoard/Class/Home/VC/HomeVC.m b/keyBoard/Class/Home/VC/HomeVC.m index b3b0812..a5f09f2 100644 --- a/keyBoard/Class/Home/VC/HomeVC.m +++ b/keyBoard/Class/Home/VC/HomeVC.m @@ -8,6 +8,7 @@ #import "HomeVC.h" #import "KBGuideVC.h" #import "KBLangTestVC.h" +#import "HomeSheetVC.h" @interface HomeVC () @property (nonatomic, strong) UITextView *textView; // 作为表头,保持原有键盘测试 @@ -21,37 +22,42 @@ [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; - CGFloat width = [UIScreen mainScreen].bounds.size.width; - UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 220)]; - CGRect frame = CGRectMake(16, 16, width - 32, 188); - self.textView = [[UITextView alloc] initWithFrame:frame]; - self.textView.text = KBLocalized(@"home_input_placeholder"); - self.textView.layer.borderColor = [UIColor blackColor].CGColor; - self.textView.layer.borderWidth = 0.5; - [header addSubview:self.textView]; - - // 列表 - self.tableView = [[BaseTableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleInsetGrouped]; - self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; - self.tableView.delegate = self; - self.tableView.dataSource = self; - self.tableView.tableHeaderView = header; - [self.view addSubview:self.tableView]; - - self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission"), @"皮肤中心" ]; - - dispatch_async(dispatch_get_main_queue(), ^{ [self.textView becomeFirstResponder]; }); - - [[KBNetworkManager shared] GET:@"app/config" parameters:nil headers:nil completion:^(id _Nullable jsonOrData, NSURLResponse * _Nullable response, NSError * _Nullable error) { - NSLog(@"===="); - }]; +// CGFloat width = [UIScreen mainScreen].bounds.size.width; +// UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 220)]; +// CGRect frame = CGRectMake(16, 16, width - 32, 188); +// self.textView = [[UITextView alloc] initWithFrame:frame]; +// self.textView.text = KBLocalized(@"home_input_placeholder"); +// self.textView.layer.borderColor = [UIColor blackColor].CGColor; +// self.textView.layer.borderWidth = 0.5; +// [header addSubview:self.textView]; +// +// // 列表 +// self.tableView = [[BaseTableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleInsetGrouped]; +// self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; +// self.tableView.delegate = self; +// self.tableView.dataSource = self; +// self.tableView.tableHeaderView = header; +// [self.view addSubview:self.tableView]; +// +// self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission"), @"皮肤中心" ]; +// +// dispatch_async(dispatch_get_main_queue(), ^{ [self.textView becomeFirstResponder]; }); +// +// [[KBNetworkManager shared] GET:@"app/config" parameters:nil headers:nil completion:^(id _Nullable jsonOrData, NSURLResponse * _Nullable response, NSError * _Nullable error) { +// NSLog(@"===="); +// }]; + + HomeSheetVC *vc = [HomeSheetVC new]; + vc.minHeight = 300; + vc.topInset = 100; + [self presentPanModal:vc]; } - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; - self.title = KBLocalized(@"home_title"); - self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission"), @"皮肤中心" ]; - [self.tableView reloadData]; +// self.title = KBLocalized(@"home_title"); +// self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission"), @"皮肤中心" ]; +// [self.tableView reloadData]; } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ From d7874829d97534ea555159cbd266cf4750b447b9 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 13:18:27 +0800 Subject: [PATCH 06/47] 1 --- Podfile | 9 +- Podfile.lock | 13 +- Pods/LSTPopView/LICENSE | 19 + .../LSTPopView/Classes/Code/LSTPopView.h | 231 + .../LSTPopView/Classes/Code/LSTPopView.m | 1775 ++++++ .../Classes/Code/LSTPopViewProtocol.h | 143 + .../LSTPopView/Classes/Code/UIView+LSTPV.h | 49 + .../LSTPopView/Classes/Code/UIView+LSTPV.m | 148 + Pods/LSTPopView/README.md | 178 + Pods/LSTTimer/LICENSE | 19 + Pods/LSTTimer/LSTTimer/Classes/LSTTimer.h | 165 + Pods/LSTTimer/LSTTimer/Classes/LSTTimer.m | 790 +++ Pods/LSTTimer/README.md | 72 + Pods/Manifest.lock | 13 +- Pods/Pods.xcodeproj/project.pbxproj | 5012 +++++++++-------- .../xcschemes/LSTPopView.xcscheme | 58 + .../xcschemes/LSTTimer.xcscheme | 58 + .../LSTPopView/LSTPopView-Info.plist | 26 + .../LSTPopView/LSTPopView-dummy.m | 5 + .../LSTPopView/LSTPopView-prefix.pch | 12 + .../LSTPopView/LSTPopView-umbrella.h | 19 + .../LSTPopView/LSTPopView.debug.xcconfig | 14 + .../LSTPopView/LSTPopView.modulemap | 6 + .../LSTPopView/LSTPopView.release.xcconfig | 14 + .../LSTTimer/LSTTimer-Info.plist | 26 + .../LSTTimer/LSTTimer-dummy.m | 5 + .../LSTTimer/LSTTimer-prefix.pch | 12 + .../LSTTimer/LSTTimer-umbrella.h | 17 + .../LSTTimer/LSTTimer.debug.xcconfig | 12 + .../LSTTimer/LSTTimer.modulemap | 6 + .../LSTTimer/LSTTimer.release.xcconfig | 12 + .../Pods-keyBoard-acknowledgements.markdown | 46 + .../Pods-keyBoard-acknowledgements.plist | 58 + ...rd-frameworks-Debug-input-files.xcfilelist | 2 + ...d-frameworks-Debug-output-files.xcfilelist | 2 + ...-frameworks-Release-input-files.xcfilelist | 2 + ...frameworks-Release-output-files.xcfilelist | 2 + .../Pods-keyBoard/Pods-keyBoard-frameworks.sh | 4 + .../Pods-keyBoard.debug.xcconfig | 8 +- .../Pods-keyBoard.release.xcconfig | 8 +- keyBoard.xcodeproj/project.pbxproj | 16 + keyBoard/Class/Home/V/HomeHeadView.h | 16 + keyBoard/Class/Home/V/HomeHeadView.m | 20 + .../Class/Home/V/KBDirectionIndicatorView.h | 2 +- keyBoard/Class/Home/VC/HomeSheetVC.m | 8 + keyBoard/Class/Home/VC/HomeVC.m | 99 +- keyBoard/Class/Home/VC/KBTestVC.h | 16 + keyBoard/Class/Home/VC/KBTestVC.m | 94 + 48 files changed, 6952 insertions(+), 2389 deletions(-) create mode 100644 Pods/LSTPopView/LICENSE create mode 100644 Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopView.h create mode 100644 Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopView.m create mode 100644 Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopViewProtocol.h create mode 100644 Pods/LSTPopView/LSTPopView/Classes/Code/UIView+LSTPV.h create mode 100644 Pods/LSTPopView/LSTPopView/Classes/Code/UIView+LSTPV.m create mode 100644 Pods/LSTPopView/README.md create mode 100644 Pods/LSTTimer/LICENSE create mode 100644 Pods/LSTTimer/LSTTimer/Classes/LSTTimer.h create mode 100644 Pods/LSTTimer/LSTTimer/Classes/LSTTimer.m create mode 100644 Pods/LSTTimer/README.md create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LSTPopView.xcscheme create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LSTTimer.xcscheme create mode 100644 Pods/Target Support Files/LSTPopView/LSTPopView-Info.plist create mode 100644 Pods/Target Support Files/LSTPopView/LSTPopView-dummy.m create mode 100644 Pods/Target Support Files/LSTPopView/LSTPopView-prefix.pch create mode 100644 Pods/Target Support Files/LSTPopView/LSTPopView-umbrella.h create mode 100644 Pods/Target Support Files/LSTPopView/LSTPopView.debug.xcconfig create mode 100644 Pods/Target Support Files/LSTPopView/LSTPopView.modulemap create mode 100644 Pods/Target Support Files/LSTPopView/LSTPopView.release.xcconfig create mode 100644 Pods/Target Support Files/LSTTimer/LSTTimer-Info.plist create mode 100644 Pods/Target Support Files/LSTTimer/LSTTimer-dummy.m create mode 100644 Pods/Target Support Files/LSTTimer/LSTTimer-prefix.pch create mode 100644 Pods/Target Support Files/LSTTimer/LSTTimer-umbrella.h create mode 100644 Pods/Target Support Files/LSTTimer/LSTTimer.debug.xcconfig create mode 100644 Pods/Target Support Files/LSTTimer/LSTTimer.modulemap create mode 100644 Pods/Target Support Files/LSTTimer/LSTTimer.release.xcconfig create mode 100644 keyBoard/Class/Home/V/HomeHeadView.h create mode 100644 keyBoard/Class/Home/V/HomeHeadView.m create mode 100644 keyBoard/Class/Home/VC/KBTestVC.h create mode 100644 keyBoard/Class/Home/VC/KBTestVC.m diff --git a/Podfile b/Podfile index 8c81940..4795336 100644 --- a/Podfile +++ b/Podfile @@ -8,15 +8,16 @@ target 'keyBoard' do pod 'AFNetworking','4.0.1' pod 'Bugly', :configurations => ['Release'] + pod 'DZNEmptyDataSet', '1.8.1' + pod 'FLAnimatedImage', '~> 1.0.17' + pod 'HWPanModal', '~> 0.9.9' + pod 'LSTPopView', '~> 0.3.10' + pod 'LookinServer', :configurations => ['Debug'] pod 'Masonry', '1.1.0' pod 'MBProgressHUD', '1.2.0' pod 'MJExtension', '3.4.2' pod 'MJRefresh', '3.7.9' pod 'SDWebImage', '5.21.1' - pod 'DZNEmptyDataSet', '1.8.1' - pod 'HWPanModal', '~> 0.9.9' - pod 'FLAnimatedImage', '~> 1.0.17' - pod 'LookinServer', :configurations => ['Debug'] end target 'CustomKeyboard' do diff --git a/Podfile.lock b/Podfile.lock index 7544f3a..a8812f6 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -21,6 +21,12 @@ PODS: - LookinServer (1.2.8): - LookinServer/Core (= 1.2.8) - LookinServer/Core (1.2.8) + - LSTPopView (0.3.10): + - LSTPopView/Code (= 0.3.10) + - LSTTimer + - LSTPopView/Code (0.3.10): + - LSTTimer + - LSTTimer (0.2.10) - Masonry (1.1.0) - MBProgressHUD (1.2.0) - MJExtension (3.4.2) @@ -36,6 +42,7 @@ DEPENDENCIES: - FLAnimatedImage (~> 1.0.17) - HWPanModal (~> 0.9.9) - LookinServer + - LSTPopView (~> 0.3.10) - Masonry (= 1.1.0) - MBProgressHUD (= 1.2.0) - MJExtension (= 3.4.2) @@ -50,6 +57,8 @@ SPEC REPOS: - FLAnimatedImage - HWPanModal - LookinServer + - LSTPopView + - LSTTimer - Masonry - MBProgressHUD - MJExtension @@ -63,12 +72,14 @@ SPEC CHECKSUMS: FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2 LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80 + LSTPopView: 9379f00f6ce7d1fc620b50ab00ed3ef97b2d4d52 + LSTTimer: caf8f02ff366ca175cf4c1778d26c166183c1b6f Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 MJExtension: e97d164cb411aa9795cf576093a1fa208b4a8dd8 MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: c407e365492f78edcfea5c78b0fb36d8bf0e447d +PODFILE CHECKSUM: c50284c86c4e30cee59c186e48767667019dcb61 COCOAPODS: 1.16.2 diff --git a/Pods/LSTPopView/LICENSE b/Pods/LSTPopView/LICENSE new file mode 100644 index 0000000..96fd23b --- /dev/null +++ b/Pods/LSTPopView/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2020 490790096@qq.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopView.h b/Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopView.h new file mode 100644 index 0000000..5619414 --- /dev/null +++ b/Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopView.h @@ -0,0 +1,231 @@ +// +// LSTPopView.h +// LoSenTrad +// +// Created by LoSenTrad on 2020/2/22. +// + +/** + 联系方式---> QQ群: 1045568246 微信: a_LSTKit , 邮箱: losentrad@163.com 欢迎反馈建议和问题 + + 博客地址 如果觉得好用 伸出你的小指头 点Star 点赞 点收藏! 就是给予我最大的支持! + github: https://github.com/LoSenTrad/LSTPopView + 简书: https://www.jianshu.com/p/8023a85dc2a2 + cocoachina: http://www.cocoachina.com/articles/899060 + */ + +#import +#import "LSTPopViewProtocol.h" +#import "UIView+LSTPV.h" + + +#define LSTPopViewWK(object) __weak typeof(object) wk_##object = object; +#define LSTPopViewSS(object) __strong typeof(object) object = weak##object; + + +NS_ASSUME_NONNULL_BEGIN + +@interface LSTPopView : UIView + + +/** 代理 支持多代理 */ +@property (nonatomic, weak) id _Nullable delegate; +/** 标识 默认为空 */ +@property (nonatomic, copy) NSString *_Nullable identifier; +/** 弹窗容器 */ +@property (nonatomic, readonly) UIView *parentView; +/** 自定义view */ +@property (nonatomic, readonly) UIView *currCustomView; +/** 弹窗位置 默认LSTHemStyleCenter */ +@property (nonatomic, assign) LSTHemStyle hemStyle; +/** 显示时动画弹窗样式 默认LSTPopStyleNO */ +@property (nonatomic, assign) LSTPopStyle popStyle; +/** 移除时动画弹窗样式 默认LSTDismissStyleNO */ +@property (nonatomic, assign) LSTDismissStyle dismissStyle; +/** 显示时动画时长,> 0。不设置则使用默认的动画时长 设置成LSTPopStyleNO, 该属性无效 */ +@property (nonatomic, assign) NSTimeInterval popDuration; +/** 隐藏时动画时长,>0。不设置则使用默认的动画时长 设置成LSTDismissStyleNO, 该属性无效 */ +@property (nonatomic, assign) NSTimeInterval dismissDuration; +/** 弹窗水平方向(X)偏移量校准 默认0 */ +@property (nonatomic, assign) CGFloat adjustX; +/** 弹窗垂直方向(Y)偏移量校准 默认0 */ +@property (nonatomic, assign) CGFloat adjustY; +/** 背景颜色 默认rgb(0,0,0) 透明度0.3 */ +@property (nullable,nonatomic,strong) UIColor *bgColor; +/** 显示时背景的透明度,取值(0.0~1.0),默认为0.3 */ +@property (nonatomic, assign) CGFloat bgAlpha; +/** 是否隐藏背景 默认NO */ +@property (nonatomic, assign) BOOL isHideBg; +/** 显示时点击背景是否移除弹窗,默认为NO。 */ +@property (nonatomic, assign) BOOL isClickBgDismiss; +/** 是否监听屏幕旋转,默认为YES */ +@property (nonatomic, assign) BOOL isObserverScreenRotation; +/** 是否支持点击回馈 默认NO (暂时关闭) */ +@property (nonatomic, assign) BOOL isClickFeedback; +/** 是否规避键盘 默认YES */ +@property (nonatomic, assign) BOOL isAvoidKeyboard; +/** 弹窗和键盘的距离 默认10 */ +@property (nonatomic, assign) CGFloat avoidKeyboardSpace; +/** 显示多长时间 默认0 不会消失 */ +@property (nonatomic, assign) NSTimeInterval showTime; +/** 自定view圆角方向设置 默认UIRectCornerAllCorners 当cornerRadius>0时生效*/ +@property (nonatomic, assign) UIRectCorner rectCorners; +/** 自定义view圆角大小 */ +@property (nonatomic, assign) CGFloat cornerRadius; +/** 弹出震动反馈 默认NO iOS10+ 系统才有此效果 */ +@property (nonatomic, assign) BOOL isImpactFeedback; + +//************ 群组相关属性 **************** +/** 群组标识 统一给弹窗编队 方便独立管理 默认为nil,统一全局处理 */ +@property (nullable,nonatomic,strong) NSString *groupId; +/** 是否堆叠 默认NO 如果是YES priority优先级不生效*/ +@property (nonatomic,assign) BOOL isStack; +/** 单显示 默认NO 只会显示优先级最高的popView */ +@property (nonatomic, assign) BOOL isSingle; +/** 优先级 范围0~1000 (默认0,遵循先进先出) isStack和isSingle为NO的时候生效 */ +@property (nonatomic, assign) CGFloat priority; +//**************************************** + +//************ 拖拽手势相关属性 **************** +/** 拖拽方向 默认 不可拖拽 */ +@property (nonatomic, assign) LSTDragStyle dragStyle; +/** X轴或者Y轴拖拽移除临界距离 范围(0 ~ +∞) 默认0 不拖拽移除 基使用于dragStyle */ +@property (nonatomic, assign) CGFloat dragDistance; +/** 拖拽移除动画类型 默认同dismissStyle */ +@property (nonatomic, assign) LSTDismissStyle dragDismissStyle; +/** 拖拽消失动画时间 默认同 dismissDuration */ +@property (nonatomic, assign) NSTimeInterval dragDismissDuration; +/** 拖拽复原动画时间 默认0.25s */ +@property (nonatomic, assign) NSTimeInterval dragReboundTime; + +/** 轻扫方向 默认 不可轻扫 前提开启dragStyle */ +@property (nonatomic, assign) LSTSweepStyle sweepStyle; +/** 轻扫速率 控制轻扫移除 默认1000 基于使用sweepStyle */ +@property (nonatomic, assign) CGFloat swipeVelocity; +/** 轻扫移除的动画 默认LSTSweepDismissStyleVelocity */ +@property (nonatomic, assign) LSTSweepDismissStyle sweepDismissStyle; + +//@property (nonatomic, strong) NSArray *xDragDistances;//待计划 +//@property (nonatomic, strong) NSArray *yDragDistances;//待计划 + +//**************************************** + +/** 点击背景 */ +@property (nullable, nonatomic, copy) void(^bgClickBlock)(void); +/** 长按背景 */ +@property (nullable, nonatomic, copy) void(^bgLongPressBlock)(void); + +/** 弹窗pan手势偏移量 */ +@property (nullable, nonatomic, copy) void(^panOffsetBlock)(CGPoint offset); + + +//以下键盘弹出/收起 第三方键盘会多次回调(百度,搜狗测试得出), 原生键盘回调一次 +/** 键盘将要弹出 */ +@property (nullable, nonatomic, copy) void(^keyboardWillShowBlock)(void); +/** 键盘弹出完毕 */ +@property (nullable, nonatomic, copy) void(^keyboardDidShowBlock)(void); +/** 键盘frame将要改变 */ +@property (nullable, nonatomic, copy) void(^keyboardFrameWillChangeBlock)(CGRect beginFrame,CGRect endFrame,CGFloat duration); +/** 键盘frame改变完毕 */ +@property (nullable, nonatomic, copy) void(^keyboardFrameDidChangeBlock)(CGRect beginFrame,CGRect endFrame,CGFloat duration); +/** 键盘将要收起 */ +@property (nullable, nonatomic, copy) void(^keyboardWillHideBlock)(void); +/** 键盘收起完毕 */ +@property (nullable, nonatomic, copy) void(^keyboardDidHideBlock)(void); + +//************ 生命周期回调(Block) ************ +/** 将要显示 回调 */ +@property (nullable, nonatomic, copy) void(^popViewWillPopBlock)(void); +/** 已经显示完毕 回调 */ +@property (nullable, nonatomic, copy) void(^popViewDidPopBlock)(void); +/** 将要开始移除 回调 */ +@property (nullable, nonatomic, copy) void(^popViewWillDismissBlock)(void); +/** 已经移除完毕 回调 */ +@property (nullable, nonatomic, copy) void(^popViewDidDismissBlock)(void); +/** 倒计时 回调 */ +@property (nullable, nonatomic, copy) void(^popViewCountDownBlock)(LSTPopView *popView,NSTimeInterval timeInterval); +//******************************************** + + +/* + 以下是构建方法 + customView: 已定义view + popStyle: 弹出动画 + dismissStyle: 移除动画 + parentView: 弹窗父容器 + */ ++ (nullable instancetype)initWithCustomView:(UIView *_Nonnull)customView; + ++ (nullable instancetype)initWithCustomView:(UIView *)customView + popStyle:(LSTPopStyle)popStyle + dismissStyle:(LSTDismissStyle)dismissStyle; + ++ (nullable instancetype)initWithCustomView:(UIView *)customView + parentView:(UIView *_Nullable)parentView + popStyle:(LSTPopStyle)popStyle + dismissStyle:(LSTDismissStyle)dismissStyle; +/* + 以下是弹出方法 + popStyle: 弹出动画 优先级大于全局的popStyle 局部起作用 + duration: 弹出时间 优先级大于全局的popDuration 局部起作用 +*/ +- (void)pop; +- (void)popWithStyle:(LSTPopStyle)popStyle; +- (void)popWithDuration:(NSTimeInterval)duration; +- (void)popWithStyle:(LSTPopStyle)popStyle duration:(NSTimeInterval)duration; + + +/* + 以下是弹出方法 + dismissStyle: 弹出动画 优先级大于全局的dismissStyle 局部起作用 + duration: 弹出时间 优先级大于全局的dismissDuration 局部起作用 +*/ +- (void)dismiss; +- (void)dismissWithStyle:(LSTDismissStyle)dismissStyle; +- (void)dismissWithDuration:(NSTimeInterval)duration; +- (void)dismissWithStyle:(LSTDismissStyle)dismissStyle duration:(NSTimeInterval)duration; + + +/** 删除指定代理 */ +- (void)removeForDelegate:(id)delegate; +/** 删除代理池 删除所有代理 */ +- (void)removeAllDelegate; + + + +#pragma mark - ***** 以下是 窗口管理api ***** + +/** 获取全局(整个app内)所有popView */ ++ (NSArray *)getAllPopView; +/** 获取当前页面所有popView */ ++ (NSArray *)getAllPopViewForParentView:(UIView *)parentView; +/** 获取当前页面指定编队的所有popView */ ++ (NSArray *)getAllPopViewForPopView:(UIView *)popView; +/** + 读取popView (有可能会跨编队读取弹窗) + 建议使用getPopViewForGroupId:forkey: 方法进行精确读取 + */ ++ (LSTPopView *)getPopViewForKey:(NSString *)key; +/** 移除popView */ ++ (void)removePopView:(LSTPopView *)popView; +/** + 移除popView 通过唯一key (有可能会跨编队误删弹窗) + 建议使用removePopViewForGroupId:forkey: 方法进行精确删除 +*/ ++ (void)removePopViewForKey:(NSString *)key; +/** 移除所有popView */ ++ (void)removeAllPopView; +/** 移除 最后一个弹出的 popView */ ++ (void)removeLastPopView; + + +/** 开启调试view 建议设置成 线上隐藏 测试打开 */ ++ (void)setLogStyle:(LSTPopViewLogStyle)logStyle; + + +@end + + + + +NS_ASSUME_NONNULL_END diff --git a/Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopView.m b/Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopView.m new file mode 100644 index 0000000..ea76039 --- /dev/null +++ b/Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopView.m @@ -0,0 +1,1775 @@ +// +// LSTPopView.m +// LoSenTrad +// +// Created by LoSenTrad on 2020/2/22. +// + +#import "LSTPopView.h" +#import +#import "LSTTimer.h" + + + +static NSString *const LSTPopViewLogTitle = @"LSTPopView日志 ---> :"; +static LSTPopViewLogStyle _logStyle; + + +@interface LSTPopViewManager : NSObject + +/** 单例 */ +LSTPopViewManager *LSTPopViewM(void); + +@end + +@interface LSTPopViewManager () + +/** 储存已经展示popView */ +@property (nonatomic,strong) NSMutableArray *popViewMarr; +/** 按顺序弹窗顺序存储已显示的 popview */ +@property (nonatomic,strong) NSPointerArray *showList; +/** 储存待移除的popView */ +@property (nonatomic,strong) NSHashTable *removeList; +/** 内存信息View */ +@property (nonatomic,strong) UILabel *infoView; + +@end + +@implementation LSTPopViewManager + +static LSTPopViewManager *_instance; + +LSTPopViewManager *LSTPopViewM() { + return [LSTPopViewManager sharedInstance]; +} + ++ (instancetype)sharedInstance { + if (!_instance) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [[self alloc] init]; + }); + } + return _instance; +} + ++ (id)allocWithZone:(struct _NSZone *)zone { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [super allocWithZone:zone]; + }); + return _instance; +} + ++ (NSArray *)getAllPopView { + return LSTPopViewM().popViewMarr; +} +/** 获取当前页面所有popView */ ++ (NSArray *)getAllPopViewForParentView:(UIView *)parentView { + NSMutableArray *mArr = LSTPopViewM().popViewMarr; + NSMutableArray *resMarr = [NSMutableArray array]; + for (id obj in mArr) { + LSTPopView *popView = (LSTPopView *)obj; + if ([popView.parentView isEqual:parentView]) { + [resMarr addObject:obj]; + } + } + return [NSArray arrayWithArray:resMarr]; +} + +/** 获取当前页面指定编队的所有popView */ ++ (NSArray *)getAllPopViewForPopView:(LSTPopView *)popView { + NSArray *mArr = [self getAllPopViewForParentView:popView.parentView]; + NSMutableArray *resMarr = [NSMutableArray array]; + for (id obj in mArr) { + LSTPopView *tPopView = (LSTPopView *)obj; + + if (popView.groupId == nil && tPopView.groupId == nil) { + [resMarr addObject:obj]; + continue; + } + if ([tPopView.groupId isEqual:popView.groupId]) { + [resMarr addObject:obj]; + continue; + } + } + return [NSArray arrayWithArray:resMarr]; +} + +/** 读取popView */ ++ (LSTPopView *)getPopViewForKey:(NSString *)key { + if (key.length<=0) { return nil; } + NSMutableArray *mArr = LSTPopViewM().popViewMarr; + for (id obj in mArr) { + LSTPopView *popView = (LSTPopView *)obj; + if ([popView.identifier isEqualToString:key]) { + return popView; + } + } + return nil; +} + ++ (void)savePopView:(LSTPopView *)popView { + [LSTPopViewM().popViewMarr addObject:popView]; + + //优先级排序 + [self sortingArr]; + + if (_logStyle & LSTPopViewLogStyleWindow) { + [self setInfoData]; + } + if (_logStyle & LSTPopViewLogStyleConsole) { + [self setConsoleLog]; + } +} + +/** 移除popView */ ++ (void)removePopView:(LSTPopView *)popView { + if (!popView) { return; } + NSArray *arr = LSTPopViewM().popViewMarr; + for (id obj in arr) { + LSTPopView *tPopView = (LSTPopView *)obj; + + if ([tPopView isEqual:popView]) { +// [LSTPopViewM().popViewMarr removeObject:obj]; + [tPopView dismissWithStyle:LSTDismissStyleNO]; + break; + } + } + + if (_logStyle & LSTPopViewLogStyleWindow) { + [self setInfoData]; + } + if (_logStyle & LSTPopViewLogStyleConsole) { + [self setConsoleLog]; + } +} + +/** 移除popView */ ++ (void)removePopViewForKey:(NSString *)key { + if (key.length<=0) { return; } + NSArray *arr = LSTPopViewM().popViewMarr; + for (id obj in arr) { + LSTPopView *tPopView = (LSTPopView *)obj; + + if ([tPopView.identifier isEqualToString:key]) { +// [LSTPopViewM().popViewMarr removeObject:obj]; + [tPopView dismissWithStyle:LSTDismissStyleNO]; + break; + } + } + if (_logStyle & LSTPopViewLogStyleWindow) { + [self setInfoData]; + } + if (_logStyle & LSTPopViewLogStyleConsole) { + [self setConsoleLog]; + } +} +/** 移除所有popView */ ++ (void)removeAllPopView { + NSMutableArray *arr = LSTPopViewM().popViewMarr; + if (arr.count<=0) { return; } + + NSArray *popViewMarr = [NSArray arrayWithArray:LSTPopViewM().popViewMarr]; + + [popViewMarr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + LSTPopView *tPopView = (LSTPopView *)obj; + + [tPopView dismissWithStyle:LSTDismissStyleNO]; + }]; + + if (_logStyle & LSTPopViewLogStyleWindow) { + [self setInfoData]; + } + if (_logStyle & LSTPopViewLogStyleConsole) { + [self setConsoleLog]; + } +} + ++ (void)removeLastPopView { + NSPointerArray *showList = LSTPopViewM().showList; + for (NSInteger i = showList.count - 1; i >= 0; i --) { + LSTPopView *popView = [showList pointerAtIndex:i]; + if (popView) { + [self removePopView:popView]; + [showList addPointer:NULL]; + [showList compact]; + break; + } + } +} + +#pragma mark - ***** Other 其他 ***** + ++ (void)setInfoData { + LSTPopViewM().infoView.text = [NSString stringWithFormat:@"S:%zd R:%zd",LSTPopViewM().popViewMarr.count,LSTPopViewM().removeList.allObjects.count]; +} + ++ (void)setConsoleLog { + LSTPVLog(@"%@ S:%zd个 R:%zd个",LSTPopViewLogTitle,LSTPopViewM().popViewMarr.count,LSTPopViewM().removeList.allObjects.count); +} + +//冒泡排序 ++ (void)sortingArr { + NSMutableArray *arr = LSTPopViewM().popViewMarr; + for (int i = 0; i < arr.count; i++) { + for (int j = i+1; j < arr.count; j++) { + LSTPopView *iPopView = (LSTPopView *)arr[i]; + + LSTPopView *jPopView = (LSTPopView *)arr[j]; + + if (iPopView.priority > jPopView.priority) { + [arr exchangeObjectAtIndex:i withObjectAtIndex:j]; + } + } + } +} + +/** 转移popView到待移除队列 */ ++ (void)transferredToRemoveQueueWithPopView:(LSTPopView *)popView { + NSArray *popViewMarr = LSTPopViewM().popViewMarr; + + [popViewMarr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + LSTPopView *tPopView = (LSTPopView *)obj; + + if ([popView isEqual:tPopView]) { + [LSTPopViewM().removeList addObject:obj]; + [LSTPopViewM().popViewMarr removeObject:obj]; + } + }]; +} + ++ (void)destroyInRemoveQueue:(LSTPopView *)popView { + if (LSTPopViewM().removeList.allObjects.count <= 0) { + [self transferredToRemoveQueueWithPopView:popView]; + } + + if (_logStyle&LSTPopViewLogStyleWindow) { + [self setInfoData]; + } + if (_logStyle&LSTPopViewLogStyleConsole) { + [self setConsoleLog]; + } +} + +#pragma mark - ***** 懒加载 ***** + +- (UILabel *)infoView { + if(_infoView) return _infoView; + _infoView = [[UILabel alloc] init]; + _infoView.backgroundColor = UIColor.orangeColor; + _infoView.textAlignment = NSTextAlignmentCenter; + _infoView.font = [UIFont systemFontOfSize:11]; + _infoView.frame = CGRectMake(pv_ScreenWidth()-70, pv_IsIphoneX_ALL()? 40:20, 60, 10); + _infoView.layer.cornerRadius = 1; + _infoView.layer.masksToBounds = YES; + UIView *superView = [UIApplication sharedApplication].keyWindow; + [superView addSubview:_infoView]; + return _infoView; +} + +- (NSMutableArray *)popViewMarr { + if(_popViewMarr) return _popViewMarr; + _popViewMarr = [NSMutableArray array]; + return _popViewMarr; +} + +- (NSHashTable *)removeList { + if (_removeList) return _removeList; + _removeList = [NSHashTable hashTableWithOptions:NSPointerFunctionsWeakMemory]; + return _removeList; +} + +- (NSPointerArray *)showList { + if (_showList) return _showList; + _showList = [NSPointerArray pointerArrayWithOptions:(NSPointerFunctionsWeakMemory)]; + return _showList; +} + +@end + + +static const NSTimeInterval LSTPopViewDefaultDuration = -1.0f; +// 角度转弧度 +#define LST_DEGREES_TO_RADIANS(angle) ((angle) / 180.0 * M_PI) + + +@interface LSTPopViewBgView : UIView + +/** 是否隐藏背景 默认NO */ +@property (nonatomic, assign) BOOL isHideBg; + +@end + +@implementation LSTPopViewBgView + +- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event{ + UIView *hitView = [super hitTest:point withEvent:event]; + if(hitView == self && self.isHideBg){ + return nil; + } + return hitView; +} + +@end + +@interface LSTPopView () + +/** 弹窗容器 默认是app UIWindow 可指定view作为容器 */ +@property (nonatomic, weak) UIView *container; +/** 背景层 */ +@property (nonatomic, strong) LSTPopViewBgView *backgroundView; +/** 自定义视图 */ +@property (nonatomic,strong) UIView *customView; +/** 规避键盘偏移量 */ +@property (nonatomic, assign) CGFloat avoidKeyboardOffset; +/** 代理池 */ +@property (nonatomic, strong) NSHashTable > *delegates; +/** 背景点击手势 */ +@property (nonatomic, strong) UITapGestureRecognizer *tapGesture; +/** 自定义View滑动手势 */ +@property (nonatomic, strong) UIPanGestureRecognizer *panGesture; +//当前正在拖拽的是否是tableView +@property (nonatomic, assign) BOOL isDragScrollView; +/** 标记popView中是否有UIScrollView, UITableView, UICollectionView */ +@property (nonatomic, weak) UIScrollView *scrollerView; +/** 记录自定义view原始Frame */ +@property (nonatomic, assign) CGRect originFrame; +/** 标记dragDismissStyle是否被复制 */ +@property (nonatomic, assign) BOOL isDragDismissStyle; +/** 是否弹出键盘 */ +@property (nonatomic,assign,readonly) BOOL isShowKeyboard; +/** 弹出键盘的高度 */ +@property (nonatomic, assign) CGFloat keyboardY; + +@end + +@implementation LSTPopView + + +#pragma mark - ***** 初始化 ***** + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self initSubViews]; + } + return self; +} + +- (void)initSubViews { + //初始化配置 + _isClickBgDismiss = NO; + _isObserverScreenRotation = YES; + _bgAlpha = 0.25; + _popStyle = LSTPopStyleFade; + _dismissStyle = LSTDismissStyleFade; + _popDuration = LSTPopViewDefaultDuration; + _dismissDuration = LSTPopViewDefaultDuration; + _hemStyle = LSTHemStyleCenter; + _adjustX = 0; + _adjustY = 0; + _isClickFeedback = NO; + _isAvoidKeyboard = YES; + _avoidKeyboardSpace = 10; + _bgColor = [UIColor blackColor]; + _identifier = @""; + _isShowKeyboard = NO; + _showTime = 0.0; + _priority = 0; + _isHideBg = NO; + _isShowKeyboard = NO; + _isImpactFeedback = NO; + _rectCorners = UIRectCornerAllCorners; + + _isSingle = NO; + + //拖拽相关属性初始化 + _dragStyle = LSTDragStyleNO; + _dragDismissStyle = LSTDismissStyleNO; + _dragDistance = 0.0f; + _dragReboundTime = 0.25; + _dragDismissDuration = LSTPopViewDefaultDuration; + _swipeVelocity = 1000.0f; + + _isDragDismissStyle = NO; +} + ++ (nullable instancetype)initWithCustomView:(UIView *_Nonnull)customView { + return [self initWithCustomView:customView popStyle:LSTPopStyleNO dismissStyle:LSTDismissStyleNO]; +} + + ++ (nullable instancetype)initWithCustomView:(UIView *_Nonnull)customView + popStyle:(LSTPopStyle)popStyle + dismissStyle:(LSTDismissStyle)dismissStyle { + + return [self initWithCustomView:customView + parentView:nil + popStyle:popStyle + dismissStyle:dismissStyle]; +} + ++ (nullable instancetype)initWithCustomView:(UIView *_Nonnull)customView + parentView:(UIView *)parentView + popStyle:(LSTPopStyle)popStyle + dismissStyle:(LSTDismissStyle)dismissStyle { + // 检测自定义视图是否存在(check customView is exist) + if (!customView) { return nil; } + if (![parentView isKindOfClass:[UIView class]] && parentView != nil) { + LSTPVLog(@"parentView is error !!!"); + return nil; + } + + CGRect popViewFrame = CGRectZero; + if (parentView) { + popViewFrame = parentView.bounds; + } else { + popViewFrame = CGRectMake(0, 0, pv_ScreenWidth(), pv_ScreenHeight()); + } + + LSTPopView *popView = [[LSTPopView alloc] initWithFrame:popViewFrame]; + popView.backgroundColor = [UIColor clearColor]; + + popView.container = parentView? parentView : [UIApplication sharedApplication].keyWindow; + + popView.customView = customView; + popView.backgroundView = [[LSTPopViewBgView alloc] initWithFrame:popView.bounds]; + popView.backgroundView.backgroundColor = [UIColor clearColor]; + popView.popStyle = popStyle; + popView.dismissStyle = dismissStyle; + + [popView addSubview:popView.backgroundView]; + [popView.backgroundView addSubview:customView]; + + //背景添加手势 + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:popView action:@selector(popViewBgViewTap:)]; + tap.delegate = popView; + popView.tapGesture = tap; + [popView.backgroundView addGestureRecognizer:tap]; + + //添加拖拽手势 + popView.panGesture = [[UIPanGestureRecognizer alloc] initWithTarget:popView action:@selector(pan:)]; + popView.panGesture.delegate = popView; + [popView.customView addGestureRecognizer:popView.panGesture]; + + // [popView.backgroundView addTarget:popView action:@selector(popViewBgViewTap:) forControlEvents:UIControlEventTouchUpInside];; + + + // UILongPressGestureRecognizer *customViewLP = [[UILongPressGestureRecognizer alloc] initWithTarget:popView action:@selector(bgLongPressEvent:)]; + // [popView.backgroundView addGestureRecognizer:customViewLP]; + + // UITapGestureRecognizer *customViewTap = [[UITapGestureRecognizer alloc] initWithTarget:popView action:@selector(customViewClickEvent:)]; + // [popView.customView addGestureRecognizer:customViewTap]; + + //键盘将要显示 + [[NSNotificationCenter defaultCenter] addObserver:popView + selector:@selector(keyboardWillShow:) + name:UIKeyboardWillShowNotification + object:nil]; + //键盘显示完毕 + [[NSNotificationCenter defaultCenter] addObserver:popView + selector:@selector(keyboardDidShow:) + name:UIKeyboardDidShowNotification + object:nil]; + //键盘frame将要改变 + [[NSNotificationCenter defaultCenter] addObserver:popView + selector:@selector(keyboardWillChangeFrame:) + name:UIKeyboardWillChangeFrameNotification + object:nil]; + //键盘frame改变完毕 + [[NSNotificationCenter defaultCenter] addObserver:popView + selector:@selector(keyboardDidChangeFrame:) + name:UIKeyboardDidChangeFrameNotification + object:nil]; + //键盘将要收起 + [[NSNotificationCenter defaultCenter] addObserver:popView + selector:@selector(keyboardWillHide:) + name:UIKeyboardWillHideNotification + object:nil]; + //键盘收起完毕 + [[NSNotificationCenter defaultCenter] addObserver:popView + selector:@selector(keyboardDidHide:) + name:UIKeyboardDidHideNotification + object:nil]; + //屏幕旋转 + [[NSNotificationCenter defaultCenter] addObserver:popView + selector:@selector(statusBarOrientationChange:) + name:UIApplicationDidChangeStatusBarOrientationNotification + object:nil]; + //监听customView frame + [popView.customView addObserver:popView + forKeyPath:@"frame" + options:NSKeyValueObservingOptionOld + context:NULL]; + return popView; +} + +- (void)dealloc { + [self.customView removeObserver:self forKeyPath:@"frame"]; + [[NSNotificationCenter defaultCenter] removeObserver:self]; + //从待移除队列中销毁 + [LSTPopViewManager destroyInRemoveQueue:self]; + [self lst_PopViewDidDismissForPopView:self]; + self.popViewDidDismissBlock? self.popViewDidDismissBlock():nil; +} + +- (void)removeFromSuperview { + + [super removeFromSuperview]; + + [LSTPopViewManager transferredToRemoveQueueWithPopView:self]; +} + +- (UIView *)hitTest:(CGPoint)point withEvent:(UIEvent *)event { + UIView *hitView = [super hitTest:point withEvent:event]; + if (hitView != self.customView) { + if(hitView == self && self.isHideBg){ return nil; } + } + return hitView; +} + +#pragma mark - ***** 代理方法 ***** +- (void)lst_PopViewBgClickForPopView:(LSTPopView *)popView { + for (id delegate in _delegates.copy) { + if ([delegate respondsToSelector:_cmd]) { + [delegate lst_PopViewBgClickForPopView:popView]; + } + } +} + +- (void)lst_PopViewBgLongPressForPopView:(LSTPopView *)popView { + for (id delegate in _delegates.copy) { + if ([delegate respondsToSelector:_cmd]) { + [delegate lst_PopViewBgLongPressForPopView:popView]; + } + } +} + +- (void)lst_PopViewWillPopForPopView:(LSTPopView *)popView { + for (id delegate in _delegates.copy) { + if ([delegate respondsToSelector:_cmd]) { + [delegate lst_PopViewWillPopForPopView:popView]; + } + } +} + +- (void)lst_PopViewDidPopForPopView:(LSTPopView *)popView { + for (id delegate in _delegates.copy) { + if ([delegate respondsToSelector:_cmd]) { + [delegate lst_PopViewDidPopForPopView:popView]; + } + } +} + +- (void)lst_PopViewCountDownForPopView:(LSTPopView *)popView forCountDown:(NSTimeInterval)timeInterval { + for (id delegate in _delegates.copy) { + if ([delegate respondsToSelector:_cmd]) { + [delegate lst_PopViewCountDownForPopView:popView forCountDown:timeInterval]; + } + } +} + +- (void)lst_PopViewCountDownFinishForPopView:(LSTPopView *)popView { + for (id delegate in _delegates.copy) { + if ([delegate respondsToSelector:_cmd]) { + [delegate lst_PopViewCountDownFinishForPopView:popView]; + } + } +} + +- (void)lst_PopViewWillDismissForPopView:(LSTPopView *)popView { + for (id delegate in _delegates.copy) { + if ([delegate respondsToSelector:_cmd]) { + [delegate lst_PopViewWillDismissForPopView:popView]; + } + } +} + +- (void)lst_PopViewDidDismissForPopView:(LSTPopView *)popView { + for (id delegate in _delegates.copy) { + if ([delegate respondsToSelector:_cmd]) { + [delegate lst_PopViewDidDismissForPopView:popView]; + } + } +} + +#pragma mark - ***** 界面布局 ***** + +- (void)setCustomViewFrameWithHeight:(CGFloat)height { + + CGFloat changeY = 0; + switch (self.hemStyle) { + case LSTHemStyleTop ://贴顶 + { + self.customView.pv_X = _backgroundView.pv_CenterX - _customView.pv_Size.width*0.5 + _adjustX; + self.customView.pv_Y = _adjustY; + changeY = _adjustY; + } + break; + case LSTHemStyleLeft ://贴左 + { + self.customView.pv_X = _adjustX; + self.customView.pv_Y = _backgroundView.pv_CenterY - _customView.pv_Size.height*0.5 + _adjustY; + changeY = height*0.5; + } + break; + case LSTHemStyleBottom ://贴底 + { + self.customView.pv_X = _backgroundView.pv_CenterX - _customView.pv_Size.width*0.5 + _adjustX; + [self.customView layoutIfNeeded]; + self.customView.pv_Y = _backgroundView.pv_Height - _customView.pv_Height + _adjustY; + changeY = height; + } + break; + case LSTHemStyleRight ://贴右 + { + self.customView.pv_X = _backgroundView.pv_Width - _customView.pv_Width + _adjustX; + self.customView.pv_Y = _backgroundView.pv_CenterY - _customView.pv_Size.height*0.5 + _adjustY; + changeY = height*0.5; + } + break; + case LSTHemStyleTopLeft :///贴顶和左 + { + self.customView.pv_X = _adjustX; + self.customView.pv_Y = _adjustY; + changeY = _adjustY; + } + break; + case LSTHemStyleBottomLeft ://贴底和左 + { + self.customView.pv_X = _adjustX; + [self.customView layoutIfNeeded]; + self.customView.pv_Y = _backgroundView.pv_Height - _customView.pv_Height + _adjustY; + changeY = height; + } + break; + case LSTHemStyleBottomRight ://贴底和右 + { + self.customView.pv_X = _backgroundView.pv_Width - _customView.pv_Width + _adjustX; + [self.customView layoutIfNeeded]; + self.customView.pv_Y = _backgroundView.pv_Height - _customView.pv_Height + _adjustY; + changeY = height; + } + break; + case LSTHemStyleTopRight ://贴顶和右 + { + self.customView.pv_X = _backgroundView.pv_Width - _customView.pv_Width + _adjustX; + self.customView.pv_Y = _adjustY; + changeY = _adjustY; + } + break; + default://居中 + { + self.customView.pv_X = _backgroundView.pv_CenterX - _customView.pv_Size.width*0.5 + _adjustX; + self.customView.pv_Y = _backgroundView.pv_CenterY - _customView.pv_Size.height*0.5 + _adjustY; + changeY = height*0.5; + } + break; + } + + CGFloat originBottom = _originFrame.origin.y + _originFrame.size.height + _avoidKeyboardSpace; + if (_isShowKeyboard && (originBottom > _keyboardY)) {//键盘已经显示 + CGFloat Y = _keyboardY - _customView.pv_Height - _avoidKeyboardSpace; + _customView.pv_Y = Y; + CGRect newFrame = _originFrame; + newFrame.origin.y = newFrame.origin.y - changeY; + newFrame.size = CGSizeMake(_originFrame.size.width, _customView.pv_Height); + self.originFrame = newFrame; + }else {//没有键盘显示 + self.originFrame = _customView.frame; + } + + [self setCustomViewCorners]; +} + +- (void)setCustomViewCorners { + + BOOL isSetCorner = NO; + + if (self.rectCorners & UIRectCornerTopLeft) { + isSetCorner = YES; + } + if (self.rectCorners & UIRectCornerTopRight) { + isSetCorner = YES; + } + if (self.rectCorners & UIRectCornerBottomLeft) { + isSetCorner = YES; + } + if (self.rectCorners & UIRectCornerBottomRight) { + isSetCorner = YES; + } + if (self.rectCorners & UIRectCornerAllCorners) { + isSetCorner = YES; + } + + if (isSetCorner && self.cornerRadius>0) { + UIBezierPath * path = [UIBezierPath bezierPathWithRoundedRect:self.customView.bounds byRoundingCorners:self.rectCorners cornerRadii:CGSizeMake(self.cornerRadius, self.cornerRadius)]; + + CAShapeLayer * layer = [[CAShapeLayer alloc]init]; + layer.frame = self.customView.bounds; + layer.path = path.CGPath; + self.customView.layer.mask = layer; + } + +} + +#pragma mark - ***** setter 设置器/数据处理 ***** + +- (void)setPopDuration:(NSTimeInterval)popDuration { + if (popDuration <= 0.0) { return; } + _popDuration = popDuration; +} + +- (void)setDismissDuration:(NSTimeInterval)dismissDuration { + if (dismissDuration <= 0.0) { return; } + _dismissDuration = dismissDuration; +} + +- (void)setDragDismissDuration:(NSTimeInterval)dragDismissDuration { + if (dragDismissDuration <= 0.0) { return; } + _dragDismissDuration = dragDismissDuration; +} + +- (void)setHemStyle:(LSTHemStyle)hemStyle { + _hemStyle = hemStyle; +} + +- (void)setAdjustX:(CGFloat)adjustX { + _adjustX = adjustX; +// self.customView.x = _customView.x + adjustX; +// self.originFrame = _customView.frame; + [self setCustomViewFrameWithHeight:0]; +} + +- (void)setAdjustY:(CGFloat)adjustY { + _adjustY = adjustY; +// self.customView.y = _customView.y + adjustY; +// self.originFrame = _customView.frame; + [self setCustomViewFrameWithHeight:0]; +} + +- (void)setIsObserverScreenRotation:(BOOL)isObserverScreenRotation { + _isObserverScreenRotation = isObserverScreenRotation; +} + +- (void)setBgAlpha:(CGFloat)bgAlpha { + _bgAlpha = (bgAlpha <= 0.0f) ? 0.0f : ((bgAlpha > 1.0) ? 1.0 : bgAlpha); + } + +- (void)setIsClickFeedback:(BOOL)isClickFeedback { + _isClickFeedback = isClickFeedback; +} + +- (void)setIsHideBg:(BOOL)isHideBg { + _isHideBg = isHideBg; + self.backgroundView.isHideBg = isHideBg; + self.backgroundView.backgroundColor = [self getNewColorWith:self.bgColor alpha:0.0]; +} + +- (void)setShowTime:(NSTimeInterval)showTime { + _showTime = showTime; +} + +- (void)setDelegate:(id)delegate { + if ([self.delegates containsObject:delegate]) return; + [self.delegates addObject:delegate]; +} + +- (void)setDragDismissStyle:(LSTDismissStyle)dragDismissStyle { + _dragDismissStyle = dragDismissStyle; + self.isDragDismissStyle = YES; +} + +#pragma mark - ***** pop 弹出 ***** +- (void)pop { + [self popWithStyle:self.popStyle duration:self.popDuration]; +} + +- (void)popWithStyle:(LSTPopStyle)popStyle { + [self popWithStyle:popStyle duration:self.popDuration]; +} + +- (void)popWithDuration:(NSTimeInterval)duration { + [self popWithStyle:self.popStyle duration:duration]; +} + +- (void)popWithStyle:(LSTPopStyle)popStyle duration:(NSTimeInterval)duration { + [self popWithPopStyle:popStyle duration:duration isOutStack:NO]; +} + +- (void)popWithPopStyle:(LSTPopStyle)popStyle duration:(NSTimeInterval)duration isOutStack:(BOOL)isOutStack { + + NSTimeInterval resDuration = [self getPopDuration:duration]; + + [self setCustomViewFrameWithHeight:0]; + + self.originFrame = self.customView.frame; + + BOOL startTimer = NO; + + if (self.isSingle) {//单显 + NSArray *popViewArr = [LSTPopViewManager getAllPopViewForPopView:self]; + for (id obj in popViewArr) {//移除所有popView和移除定a时器 + LSTPopView *lastPopView = (LSTPopView *)obj; + + [lastPopView dismissWithDismissStyle:LSTDismissStyleNO duration:0.2 isRemove:YES]; + } + startTimer = YES; + }else {//多显 + if (!isOutStack) {//处理隐藏倒数第二个popView + NSArray *popViewArr = [LSTPopViewManager getAllPopViewForPopView:self]; + if (popViewArr.count >= 1) { + id obj = popViewArr[popViewArr.count - 1]; + LSTPopView *lastPopView = (LSTPopView *)obj; + + if (self.isStack) {//堆叠显示 + startTimer = YES; + }else { + if (self.priority >= lastPopView.priority) {//置顶显示 + if (lastPopView.isShowKeyboard) { + [lastPopView endEditing:YES]; + } + [lastPopView dismissWithDismissStyle:LSTDismissStyleFade duration:0.2 isRemove:NO]; + startTimer = YES; + } else {//隐藏显示 + if (!self.parentView) { + self.container = [UIApplication sharedApplication].keyWindow; + } + [LSTPopViewManager savePopView:self]; + return; + } + } + } else { + startTimer = YES; + } + } + } + +// if (!isOutStack){ +// [self.parentView addSubview:self]; +// } + if (!self.superview) { + [self.container addSubview:self]; + [LSTPopViewM().showList addPointer:(__bridge void * _Nullable)self]; + } + + if (!isOutStack){ + [self lst_PopViewWillPopForPopView:self]; + + self.popViewWillPopBlock? self.popViewWillPopBlock():nil; + } + //动画处理 + [self popAnimationWithPopStyle:popStyle duration:resDuration]; + //震动反馈 + [self beginImpactFeedback]; + + LSTPopViewWK(self);; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(resDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + + if (!isOutStack){ + [self lst_PopViewDidPopForPopView:self]; + wk_self.popViewDidPopBlock? wk_self.popViewDidPopBlock():nil; + } + if (startTimer){ [self startTimer]; } + }); + + //保存popView + if (!isOutStack) { [LSTPopViewManager savePopView:self]; } +} + +- (void)popAnimationWithPopStyle:(LSTPopStyle)popStyle duration:(NSTimeInterval)duration { + + LSTPopViewWK(self); + if (popStyle == LSTPopStyleFade) {//渐变出现 + self.backgroundView.backgroundColor = [self getNewColorWith:self.bgColor alpha:0.0]; + self.customView.alpha = 0.0f; + [UIView animateWithDuration:0.2 animations:^{ + self.backgroundView.backgroundColor =[self getNewColorWith:self.bgColor alpha:self.bgAlpha]; + self.customView.alpha = 1.0f; + }]; + } else if (popStyle == LSTPopStyleNO){//无动画 + self.backgroundView.backgroundColor = [self getNewColorWith:self.bgColor alpha:0.0]; + [UIView animateWithDuration:0.1 animations:^{ + self.backgroundView.backgroundColor =[self getNewColorWith:self.bgColor alpha:self.bgAlpha]; + }]; + self.customView.alpha = 1.0f; + } else {//有动画 + self.backgroundView.backgroundColor = [self getNewColorWith:self.bgColor alpha:0.0]; + [UIView animateWithDuration:duration animations:^{ + wk_self.backgroundView.backgroundColor = [self getNewColorWith:self.bgColor alpha:self.bgAlpha]; + }]; + //自定义view过渡动画 + [self hanlePopAnimationWithDuration:duration popStyle:popStyle]; + } +} + +- (void)hanlePopAnimationWithDuration:(NSTimeInterval)duration + popStyle:(LSTPopStyle)popStyle { + + self.alpha = 0; + [UIView animateWithDuration:duration*0.2 animations:^{ + self.alpha = 1; + }]; + + LSTPopViewWK(self); + switch (popStyle) { + case LSTPopStyleScale:// < 缩放动画,先放大,后恢复至原大小 + { + [self animationWithLayer:_customView.layer duration:((0.3*duration)/0.7) values:@[@0.0, @1.2, @1.0]]; // 另外一组动画值(the other animation values) @[@0.0, @1.2, @0.9, @1.0] + } + break; + case LSTPopStyleSmoothFromTop: + case LSTPopStyleSmoothFromBottom: + case LSTPopStyleSmoothFromLeft: + case LSTPopStyleSmoothFromRight: + case LSTPopStyleSpringFromTop: + case LSTPopStyleSpringFromLeft: + case LSTPopStyleSpringFromBottom: + case LSTPopStyleSpringFromRight: + { + CGPoint startPosition = self.customView.layer.position; + if (popStyle == LSTPopStyleSmoothFromTop || popStyle == LSTPopStyleSpringFromTop) { + self.customView.layer.position = CGPointMake(startPosition.x, -_customView.pv_Height*0.5); + + } else if (popStyle == LSTPopStyleSmoothFromLeft || popStyle == LSTPopStyleSpringFromLeft) { + self.customView.layer.position = CGPointMake(-_customView.pv_Width*0.5, startPosition.y); + + } else if (popStyle == LSTPopStyleSmoothFromBottom || popStyle == LSTPopStyleSpringFromBottom) { + self.customView.layer.position = CGPointMake(startPosition.x, CGRectGetMaxY(self.frame) + _customView.pv_Height*0.5); + + } else { + self.customView.layer.position = CGPointMake(CGRectGetMaxX(self.frame) + _customView.pv_Width*0.5 , startPosition.y); + } + + CGFloat damping = 1.0; + if (popStyle == LSTPopStyleSpringFromTop|| + popStyle == LSTPopStyleSpringFromLeft|| + popStyle == LSTPopStyleSpringFromBottom|| + popStyle == LSTPopStyleSpringFromRight) { + damping = 0.65; + } + + [UIView animateWithDuration:duration + delay:0 + usingSpringWithDamping:damping + initialSpringVelocity:1.0 + options:UIViewAnimationOptionCurveEaseOut + animations:^{ + + wk_self.customView.layer.position = startPosition; + } completion:nil]; + } + break; + case LSTPopStyleCardDropFromLeft: + case LSTPopStyleCardDropFromRight: + { + CGPoint startPosition = self.customView.layer.position; + if (popStyle == LSTPopStyleCardDropFromLeft) { + self.customView.layer.position = CGPointMake(startPosition.x * 1.0, -_customView.pv_Height*0.5); + self.customView.transform = CGAffineTransformMakeRotation(LST_DEGREES_TO_RADIANS(15.0)); + } else { + self.customView.layer.position = CGPointMake(startPosition.x * 1.0, -_customView.pv_Height*0.5); + self.customView.transform = CGAffineTransformMakeRotation(LST_DEGREES_TO_RADIANS(-15.0)); + } + + [UIView animateWithDuration:duration delay:0 usingSpringWithDamping:0.75 initialSpringVelocity:1.0 options:UIViewAnimationOptionCurveEaseIn animations:^{ + wk_self.customView.layer.position = startPosition; + } completion:nil]; + + [UIView animateWithDuration:duration*0.6 animations:^{ + wk_self.customView.layer.transform = CATransform3DMakeRotation(LST_DEGREES_TO_RADIANS((popStyle == LSTPopStyleCardDropFromRight) ? 5.5 : -5.5), 0, 0, 0); + } completion:^(BOOL finished) { + [UIView animateWithDuration:duration*0.2 animations:^{ + wk_self.customView.transform = CGAffineTransformMakeRotation(LST_DEGREES_TO_RADIANS((popStyle == LSTPopStyleCardDropFromRight) ? -1.0 : 1.0)); + } completion:^(BOOL finished) { + [UIView animateWithDuration:duration*0.2 animations:^{ + wk_self.customView.transform = CGAffineTransformMakeRotation(0.0); + } completion:nil]; + }]; + }]; + } + break; + default: + break; + } +} + +#pragma mark - ***** dismiss 移除 ***** + +- (void)dismiss { + [self dismissWithStyle:self.dismissStyle duration:self.dismissDuration]; +} + +- (void)dismissWithStyle:(LSTDismissStyle)dismissStyle { + [self dismissWithStyle:dismissStyle duration:self.dismissDuration]; +} + +- (void)dismissWithDuration:(NSTimeInterval)duration { + [self dismissWithStyle:self.dismissStyle duration:duration]; +} + +- (void)dismissWithStyle:(LSTDismissStyle)dismissStyle duration:(NSTimeInterval)duration { + [self dismissWithDismissStyle:dismissStyle duration:duration isRemove:YES]; +} + +- (void)dismissWithDismissStyle:(LSTDismissStyle)dismissStyle + duration:(NSTimeInterval)duration + isRemove:(BOOL)isRemove { + + NSTimeInterval resDuration = [self getDismissDuration:duration]; + + if (isRemove) { + //把当前popView转移到待移除队列 避免线程安全问题 + [LSTPopViewManager transferredToRemoveQueueWithPopView:self]; + } + + [self lst_PopViewWillDismissForPopView:self]; + + self.popViewWillDismissBlock? self.popViewWillDismissBlock():nil; + + LSTPopViewWK(self) + [self dismissAnimationWithDismissStyle:dismissStyle duration:resDuration]; + + if (!self.isSingle && (isRemove && [LSTPopViewManager getAllPopViewForPopView:self].count >= 1)){//多显 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(resDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + //popView出栈 + if (!self.isStack && [LSTPopViewManager getAllPopViewForPopView:self].count >= 1) { + NSArray *popViewArr = [LSTPopViewManager getAllPopViewForPopView:self]; + id obj = popViewArr[popViewArr.count-1]; + LSTPopView *tPopView = (LSTPopView *)obj; + if (!tPopView.superview) { + [tPopView.container addSubview:tPopView]; + [LSTPopViewM().showList addPointer:(__bridge void * _Nullable)tPopView]; + } + [tPopView popWithPopStyle:LSTPopStyleFade duration:0.25 isOutStack:YES]; + } + }); + } + if (isRemove) { + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(resDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [wk_self removeFromSuperview]; + }); + } +} + +- (void)dismissAnimationWithDismissStyle:(LSTDismissStyle)dismissStyle duration:(NSTimeInterval)duration { + + LSTPopViewWK(self); + if (dismissStyle == LSTPopStyleFade) { + [UIView animateWithDuration:0.2 animations:^{ + wk_self.backgroundView.backgroundColor = [self getNewColorWith:self.bgColor alpha:0.0]; + wk_self.customView.alpha = 0.0f; + }]; + }else if (dismissStyle == LSTPopStyleNO){ + wk_self.backgroundView.backgroundColor = [self getNewColorWith:self.bgColor alpha:0.0]; + wk_self.customView.alpha = 0.0f; + }else {//有动画 + [UIView animateWithDuration:duration*0.8 animations:^{ + wk_self.backgroundView.backgroundColor = [self getNewColorWith:self.bgColor alpha:0.0]; + }]; + [self hanleDismissAnimationWithDuration:duration withDismissStyle:dismissStyle]; + } +} + +- (void)hanleDismissAnimationWithDuration:(NSTimeInterval)duration + withDismissStyle:(LSTDismissStyle)dismissStyle { + + [UIView animateWithDuration:duration*0.8 animations:^{ + self.alpha = 0; + }]; + + LSTPopViewWK(self);; + switch (dismissStyle) { + case LSTDismissStyleScale: + { + [self animationWithLayer:self.customView.layer duration:((0.2*duration)/0.8) values:@[@1.0, @0.66, @0.33, @0.01]]; + } + break; + case LSTDismissStyleSmoothToTop: + case LSTDismissStyleSmoothToBottom: + case LSTDismissStyleSmoothToLeft: + case LSTDismissStyleSmoothToRight: + { + CGPoint startPosition = self.customView.layer.position; + CGPoint endPosition = self.customView.layer.position; + if (dismissStyle == LSTDismissStyleSmoothToTop) { + endPosition = CGPointMake(startPosition.x, -(_customView.pv_Height*0.5)); + + } else if (dismissStyle == LSTDismissStyleSmoothToBottom) { + endPosition = CGPointMake(startPosition.x, CGRectGetMaxY(self.frame) + _customView.pv_Height*0.5); + + } else if (dismissStyle == LSTDismissStyleSmoothToLeft) { + endPosition = CGPointMake(-_customView.pv_Width*0.5, startPosition.y); + + } else { + endPosition = CGPointMake(CGRectGetMaxX(self.frame) + _customView.pv_Width*0.5, startPosition.y); + } + + [UIView animateWithDuration:duration delay:0 usingSpringWithDamping:1.0 initialSpringVelocity:1.0 options:UIViewAnimationOptionCurveEaseOut animations:^{ + wk_self.customView.layer.position = endPosition; + } completion:nil]; + } + break; + case LSTDismissStyleCardDropToLeft: + case LSTDismissStyleCardDropToRight: + { + CGPoint startPosition = self.customView.layer.position; + BOOL isLandscape = UIInterfaceOrientationIsLandscape([UIApplication sharedApplication].statusBarOrientation); + __block CGFloat rotateEndY = 0.0f; + [UIView animateWithDuration:duration delay:0 usingSpringWithDamping:0.5 initialSpringVelocity:1.0 options:UIViewAnimationOptionCurveEaseIn animations:^{ + if (dismissStyle == LSTDismissStyleCardDropToLeft) { + wk_self.customView.transform = CGAffineTransformMakeRotation(M_1_PI * 0.75); + if (isLandscape) rotateEndY = fabs(wk_self.customView.frame.origin.y); + wk_self.customView.layer.position = CGPointMake(startPosition.x, CGRectGetMaxY(wk_self.frame) + startPosition.y + rotateEndY); + } else { + wk_self.customView.transform = CGAffineTransformMakeRotation(-M_1_PI * 0.75); + if (isLandscape) rotateEndY = fabs(wk_self.customView.frame.origin.y); + wk_self.customView.layer.position = CGPointMake(startPosition.x * 1.25, CGRectGetMaxY(wk_self.frame) + startPosition.y + rotateEndY); + } + } completion:nil]; + } + break; + case LSTDismissStyleCardDropToTop: + { + CGPoint startPosition = self.customView.layer.position; + CGPoint endPosition = CGPointMake(startPosition.x, -startPosition.y); + [UIView animateWithDuration:duration*0.2 animations:^{ + wk_self.customView.layer.position = CGPointMake(startPosition.x, startPosition.y + 50.0f); + } completion:^(BOOL finished) { + [UIView animateWithDuration:duration*0.8 animations:^{ + wk_self.customView.layer.position = endPosition; + } completion:nil]; + }]; + } + break; + default: + break; + } +} + +#pragma mark - ***** other 其他 ***** + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if([keyPath isEqualToString:@"frame"]) { + CGRect newFrame = CGRectNull; + CGRect oldFrame = CGRectNull; + if([object valueForKeyPath:keyPath] != [NSNull null]) { + //此处为获取新的frame + newFrame = [[object valueForKeyPath:keyPath] CGRectValue]; + oldFrame = [[change valueForKeyPath:@"old"] CGRectValue]; + if (!CGSizeEqualToSize(newFrame.size, oldFrame.size)) { + [self setCustomViewFrameWithHeight:newFrame.size.height-oldFrame.size.height]; + } + } + }else { + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } +} + +//按钮的压下事件 按钮缩小 +- (void)bgLongPressEvent:(UIGestureRecognizer *)ges { + + // [self.delegateMarr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + // + // if ([obj respondsToSelector:@selector(lst_PopViewBgLongPressForPopView:)]) { + // [obj lst_PopViewBgLongPressForPopView:self]; + // } + // + // }]; + + self.bgLongPressBlock? self.bgLongPressBlock():nil; + + // switch (ges.state) { + // case UIGestureRecognizerStateBegan: + // { + // CGFloat scale = 0.95; + // [UIView animateWithDuration:0.35 animations:^{ + // ges.view.transform = CGAffineTransformMakeScale(scale, scale); + // }]; + // } + // break; + // case UIGestureRecognizerStateEnded: + // case UIGestureRecognizerStateCancelled: + // { + // [UIView animateWithDuration:0.35 animations:^{ + // ges.view.transform = CGAffineTransformMakeScale(1.0, 1.0); + // } completion:^(BOOL finished) { + // }]; + // } + // break; + // + // default: + // break; + // } +} + +- (void)customViewClickEvent:(UIGestureRecognizer *)ges { + if (self.isClickFeedback) { + CGFloat scale = 0.95; + [UIView animateWithDuration:0.25 animations:^{ + ges.view.transform = CGAffineTransformMakeScale(scale, scale); + } completion:^(BOOL finished) { + [UIView animateWithDuration:0.25 animations:^{ + ges.view.transform = CGAffineTransformMakeScale(1.0, 1.0); + } completion:^(BOOL finished) { + + }]; + }]; + } +} + +- (void)popViewBgViewTap:(UIButton *)tap { + + // [self.delegateMarr enumerateObjectsUsingBlock:^(id _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + // + // if ([obj respondsToSelector:@selector(lst_PopViewBgClickForPopView:)]) { + // [obj lst_PopViewBgClickForPopView:self]; + // } + // + // }]; + + if (self.bgClickBlock) { + if (self.isShowKeyboard) { + [self endEditing:YES]; + } + self.bgClickBlock(); + } + + if (_isClickBgDismiss) { + [self dismiss]; + } +} + +- (NSTimeInterval)getPopDuration:(NSTimeInterval)currDuration { + + if (_popStyle == LSTPopStyleNO) { return 0.0f; } + + if (_popStyle == LSTPopStyleFade) { return 0.2f; } + + if (currDuration<=0) { self.popDuration = LSTPopViewDefaultDuration; } + + if (self.popDuration == LSTPopViewDefaultDuration) { + NSTimeInterval defaultDuration = 0.0f; + + if (_popStyle == LSTPopStyleScale) { + defaultDuration = 0.3f; + } + if (_popStyle == LSTPopStyleSmoothFromTop || + _popStyle == LSTPopStyleSmoothFromLeft || + _popStyle == LSTPopStyleSmoothFromBottom || + _popStyle == LSTPopStyleSmoothFromRight || + _popStyle == LSTPopStyleSpringFromTop || + _popStyle == LSTPopStyleSpringFromLeft || + _popStyle == LSTPopStyleSpringFromBottom || + _popStyle == LSTPopStyleSpringFromRight || + _popStyle == LSTPopStyleCardDropFromLeft || + _popStyle == LSTPopStyleCardDropFromRight) { + defaultDuration = 0.6f; + } + return defaultDuration; + } else { + return currDuration; + } +} +- (NSTimeInterval)getDismissDuration:(NSTimeInterval)currDuration { + + if (_dismissStyle == LSTDismissStyleNO) { return 0.0f; } + + if (_dismissStyle == LSTDismissStyleFade) { return 0.2f; } + + if (self.dismissDuration == LSTPopViewDefaultDuration) { + NSTimeInterval defaultDuration = 0.0f; + if (_dismissStyle == LSTDismissStyleNO) { + defaultDuration = 0.0f; + } + + if (_dismissStyle == LSTDismissStyleScale) { + defaultDuration = 0.3f; + } + if (_dismissStyle == LSTDismissStyleSmoothToTop || + _dismissStyle == LSTDismissStyleSmoothToBottom || + _dismissStyle == LSTDismissStyleSmoothToLeft || + _dismissStyle == LSTDismissStyleSmoothToRight || + _dismissStyle == LSTDismissStyleCardDropToLeft || + _dismissStyle == LSTDismissStyleCardDropToRight || + _dismissStyle == LSTDismissStyleCardDropToTop) { + defaultDuration = 0.5f; + } + return defaultDuration; + } else { + return currDuration; + } +} +- (NSTimeInterval)getDragDismissDuration { + if (self.dragDismissDuration == LSTPopViewDefaultDuration) { + return [self getDismissDuration:self.dismissDuration]; + } else { + return self.dragDismissDuration; + } +} + +- (void)animationWithLayer:(CALayer *)layer duration:(CGFloat)duration values:(NSArray *)values { + CAKeyframeAnimation *KFAnimation = [CAKeyframeAnimation animationWithKeyPath:@"transform"]; + KFAnimation.duration = duration; + KFAnimation.removedOnCompletion = NO; + KFAnimation.fillMode = kCAFillModeForwards; + // KFAnimation.delegate = self;//造成强应用 popView释放不了 + NSMutableArray *valueArr = [NSMutableArray arrayWithCapacity:values.count]; + for (NSUInteger i = 0; i 0) { + LSTPopViewWK(self);; + NSString *idStr = [NSString stringWithFormat:@"LSTPopView_%p",self]; + [LSTTimer addMinuteTimerForTime:self.showTime identifier:idStr handle:^(NSString * _Nonnull day, NSString * _Nonnull hour, NSString * _Nonnull minute, NSString * _Nonnull second, NSString * _Nonnull ms) { + + if (wk_self.popViewCountDownBlock) { + wk_self.popViewCountDownBlock(wk_self, [second doubleValue]); + } + [wk_self lst_PopViewCountDownForPopView:wk_self forCountDown:[second doubleValue]]; + } finish:^(NSString * _Nonnull identifier) { + [wk_self lst_PopViewCountDownFinishForPopView:wk_self]; + [self dismiss]; + } pause:^(NSString * _Nonnull identifier) {}]; + } +} + +/** 删除指定代理 */ +- (void)removeForDelegate:(id)delegate { + if (delegate) { + if ([self.delegates containsObject:delegate]) { + [self.delegates removeObject:delegate]; + } + } +} + +/** 删除代理池 删除所有代理 */ +- (void)removeAllDelegate { + if (self.delegates.count > 0) { + [self.delegates removeAllObjects]; + } +} + +- (void)beginImpactFeedback { + if (self.isImpactFeedback) { + if (@available(iOS 10.0, *)) { + UIImpactFeedbackGenerator *feedBackGenertor = [[UIImpactFeedbackGenerator alloc] initWithStyle:UIImpactFeedbackStyleMedium]; + [feedBackGenertor impactOccurred]; + } + } +} + +#pragma mark - ***** 横竖屏改变 ***** + +- (void)statusBarOrientationChange:(NSNotification *)notification { + if (self.isObserverScreenRotation) { + CGRect originRect = self.customView.frame; + self.frame = CGRectMake(0, 0, pv_ScreenWidth(), pv_ScreenHeight()); + self.backgroundView.frame = self.bounds; + self.customView.frame = originRect; + [self setCustomViewFrameWithHeight:0]; + } +} + +#pragma mark - ***** 键盘弹出/收回 ***** + +- (void)keyboardWillShow:(NSNotification *)notification{ + // LSTPVLog(@"keyboardWillShow"); + _isShowKeyboard = YES; + + self.keyboardWillShowBlock? self.keyboardWillShowBlock():nil; + + if (!self.isAvoidKeyboard) { return; } + CGFloat customViewMaxY = self.customView.pv_Bottom + self.avoidKeyboardSpace; + CGFloat duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue]; + CGRect keyboardEedFrame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; + CGFloat keyboardMaxY = keyboardEedFrame.origin.y; + self.isAvoidKeyboard = YES; + self.avoidKeyboardOffset = customViewMaxY - keyboardMaxY; + self.keyboardY = keyboardEedFrame.origin.y; + //键盘遮挡到弹窗 + if ((keyboardMaxY keyboardMaxY)) { + //执行动画 + [UIView animateWithDuration:duration animations:^{ + self.customView.pv_Y = self.customView.pv_Y - self.avoidKeyboardOffset; + }]; + } +} + +- (void)keyboardDidShow:(NSNotification *)notification{ + _isShowKeyboard = YES; + self.keyboardDidShowBlock? self.keyboardDidShowBlock():nil; +} + +- (void)keyboardWillHide:(NSNotification *)notification{ + + _isShowKeyboard = NO; + self.keyboardWillHideBlock? self.keyboardWillHideBlock():nil; + if (!self.isAvoidKeyboard) { + return; + } + CGFloat duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue]; + [UIView animateWithDuration:duration animations:^{ + self.customView.pv_Y = self.originFrame.origin.y; + }]; +} + +- (void)keyboardDidHide:(NSNotification *)notification{ + _isShowKeyboard = NO; + self.keyboardDidHideBlock? self.keyboardDidHideBlock():nil; +} + +- (void)keyboardWillChangeFrame:(NSNotification *)notification{ + // LSTPVLog(@"键盘frame将要改变"); + if (self.keyboardFrameWillChangeBlock) { + CGRect keyboardBeginFrame = [notification.userInfo[UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + CGRect keyboardEedFrame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; + CGFloat duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue]; + self.keyboardFrameWillChangeBlock(keyboardBeginFrame,keyboardEedFrame,duration); + } +} + +- (void)keyboardDidChangeFrame:(NSNotification *)notification{ + // LSTPVLog(@"键盘frame已经改变"); + if (self.keyboardFrameDidChangeBlock) { + CGRect keyboardBeginFrame = [notification.userInfo[UIKeyboardFrameBeginUserInfoKey] CGRectValue]; + CGRect keyboardEedFrame = [notification.userInfo[UIKeyboardFrameEndUserInfoKey] CGRectValue]; + CGFloat duration = [notification.userInfo[UIKeyboardAnimationDurationUserInfoKey] floatValue]; + self.keyboardFrameDidChangeBlock(keyboardBeginFrame,keyboardEedFrame,duration); + } + +} + +#pragma mark - ***** UIGestureRecognizerDelegate ***** + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { + + if(gestureRecognizer == self.panGesture) { + UIView *touchView = touch.view; + while (touchView != nil) { + if([touchView isKindOfClass:[UIScrollView class]]) { + self.isDragScrollView = YES; + self.scrollerView = (UIScrollView *)touchView; + break; + } else if(touchView == self.customView) { + self.isDragScrollView = NO; + break; + } + touchView = (id)[touchView nextResponder]; + } + } + return YES; +} + + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + if(gestureRecognizer == self.tapGesture) { + //如果是点击手势 + CGPoint point = [gestureRecognizer locationInView:self.customView]; + BOOL iscontain = [self.customView.layer containsPoint:point]; + if(iscontain) { + return NO; + } + } else if(gestureRecognizer == self.panGesture){ + //如果是自己加的拖拽手势 + // LSTPVLog(@"gestureRecognizerShouldBegin"); + } + return YES; +} + +//3. 是否与其他手势共存,一般使用默认值(默认返回NO:不与任何手势共存) +- (BOOL)gestureRecognizer:(UIPanGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + if(gestureRecognizer == self.panGesture) { + if ([otherGestureRecognizer isKindOfClass:NSClassFromString(@"UIScrollViewPanGestureRecognizer")] || [otherGestureRecognizer isKindOfClass:NSClassFromString(@"UIPanGestureRecognizer")] ) { + if([otherGestureRecognizer.view isKindOfClass:[UIScrollView class]] ) { + return YES; + } + } + } + return NO; +} + +//拖拽手势 +- (void)pan:(UIPanGestureRecognizer *)panGestureRecognizer { + + self.panOffsetBlock?self.panOffsetBlock(CGPointMake(_customView.pv_X-_originFrame.origin.x, _customView.pv_Y-_originFrame.origin.y)):nil; + + if (self.dragStyle == LSTDragStyleNO) {return;} + // 获取手指的偏移量 + CGPoint transP = [panGestureRecognizer translationInView:self.customView]; + + CGPoint velocity = [panGestureRecognizer velocityInView:[UIApplication sharedApplication].keyWindow]; + if(self.isDragScrollView) {//含有tableView,collectionView,scrollView + //如果当前拖拽的是tableView + if(self.scrollerView.contentOffset.y <= 0) { + //如果tableView置于顶端 + if(transP.y > 0) { + //如果向下拖拽 + self.scrollerView.contentOffset = CGPointMake(0, 0); + self.scrollerView.panGestureRecognizer.enabled = NO; + self.isDragScrollView = NO; + //向下拖 + self.customView.frame = CGRectMake(_customView.pv_X, _customView.pv_Y + transP.y, _customView.pv_Width, _customView.pv_Height); + } else { + //如果向上拖拽 + } + } + } else {//不含有tableView,collectionView,scrollView + + CGFloat customViewX = self.customView.pv_X; + CGFloat customViewY = self.customView.pv_Y; + //X正方向移动 + if ((self.dragStyle & LSTDragStyleX_Positive) && (customViewX >= _originFrame.origin.x)) { + if (transP.x > 0) { + customViewX = customViewX + transP.x; + } else if(transP.x < 0 && customViewX > _originFrame.origin.x ){ + customViewX = (customViewX + transP.x) > _originFrame.origin.x? (customViewX + transP.x):(_originFrame.origin.x); + } + } + //X负方向移动 + if ((self.dragStyle & LSTDragStyleX_Negative) && (customViewX <= self.originFrame.origin.x)) { + if (transP.x < 0) { + customViewX = customViewX + transP.x; + } else if(transP.x > 0 && customViewX < _originFrame.origin.x ){ + customViewX = (customViewX + transP.x) < _originFrame.origin.x? (customViewX + transP.x):(_originFrame.origin.x); + } + } + //Y正方向移动 + if (self.dragStyle & LSTDragStyleY_Positive && (customViewY >= _originFrame.origin.y)) { + if (transP.y > 0) { + customViewY = customViewY + transP.y; + } else if(transP.y < 0 && customViewY > _originFrame.origin.y ){ + customViewY = (customViewY + transP.y) > _originFrame.origin.y ?(customViewY + transP.y):(_originFrame.origin.y); + } + } + //Y负方向移动 + if (self.dragStyle & LSTDragStyleY_Negative&&(customViewY <= _originFrame.origin.y)) { + if (transP.y < 0) { + customViewY = customViewY + transP.y; + } else if(transP.y > 0 && customViewY < _originFrame.origin.y){ + customViewY = (customViewY + transP.y) < _originFrame.origin.y?(customViewY + transP.y):(_originFrame.origin.y); + } + } + self.customView.frame = CGRectMake(customViewX, customViewY, _customView.pv_Width, _customView.pv_Height); + } + + [panGestureRecognizer setTranslation:CGPointZero inView:self.customView]; + + if(panGestureRecognizer.state == UIGestureRecognizerStateEnded) { + + if (self.scrollerView) { + self.scrollerView.panGestureRecognizer.enabled = YES; + } + + LSTPopViewWK(self) + //拖拽松开回位Block + void (^dragReboundBlock)(void) = ^ { + [UIView animateWithDuration:wk_self.dragReboundTime + delay:0.1f + options:UIViewAnimationOptionCurveEaseOut + animations:^{ + CGRect frame = wk_self.customView.frame; + frame.origin.y = wk_self.frame.size.height - wk_self.customView.frame.size.height; + wk_self.customView.frame = wk_self.originFrame; + } completion:^(BOOL finished) {}]; + }; + //横扫移除Block + void (^sweepBlock)(BOOL,BOOL,BOOL,BOOL) = ^(BOOL isX_P, BOOL isX_N, BOOL isY_P, BOOL isY_N) { + + if (isX_P==NO && isX_N==NO && isY_P==NO && isY_N==NO) { + dragReboundBlock(); + return; + } + + if (isY_P==NO && isY_N==NO && self.sweepDismissStyle == LSTSweepDismissStyleSmooth) {//X轴可轻扫 + if (velocity.x>0) {//正向 + [self dismissWithStyle:LSTDismissStyleSmoothToRight duration:self.dismissDuration]; + } else {//负向 + [self dismissWithStyle:LSTDismissStyleSmoothToLeft duration:self.dismissDuration]; + } + return; + } + + if (isX_P==NO && isX_N==NO && self.sweepDismissStyle == LSTSweepDismissStyleSmooth) {//Y轴可轻扫 + if (velocity.y>0) {//正向 + [self dismissWithStyle:LSTDismissStyleSmoothToBottom duration:self.dismissDuration]; + } else {//负向 + [self dismissWithStyle:LSTDismissStyleSmoothToTop duration:self.dismissDuration]; + } + return; + } + // 移除,以手势速度飞出 + [UIView animateWithDuration:0.5 animations:^{ + wk_self.backgroundView.backgroundColor = [self getNewColorWith:self.bgColor alpha:0.0]; + self.customView.center = CGPointMake(isX_P || isX_N?velocity.x:self.customView.pv_CenterX, isY_P||isY_N?velocity.y:self.customView.pv_CenterY); + } completion:^(BOOL finished) { + [wk_self dismissWithStyle:LSTDismissStyleFade duration:0.1]; + }]; + }; + + double velocityX = sqrt(pow(velocity.x, 2)); + double velocityY = sqrt(pow(velocity.y, 2)); + if((velocityX >= self.swipeVelocity)||(velocityY >= self.swipeVelocity)) {//轻扫 + + if (self.scrollerView.contentOffset.y>0) { + return; + } + + //可轻扫移除的方向 + BOOL isX_P = NO; + BOOL isX_N = NO; + BOOL isY_P = NO; + BOOL isY_N = NO; + + if ((self.dragStyle & LSTDragStyleX_Positive) && velocity.x>0 && velocityX >= self.swipeVelocity) { + isX_P = self.sweepStyle & LSTSweepStyleX_Positive? YES:NO; + } + if ((self.dragStyle & LSTDragStyleX_Negative) && velocity.x<0 && velocityX >= self.swipeVelocity) { + isX_N = self.sweepStyle & LSTSweepStyleX_Negative? YES:NO; + } + + if ((self.dragStyle & LSTDragStyleY_Positive) && velocity.y>0 && velocityY >= self.swipeVelocity) { + isY_P = self.sweepStyle & LSTSweepStyleY_Positive? YES:NO; + } + if ((self.dragStyle & LSTDragStyleY_Negative) && velocity.y <0 && velocityY >= self.swipeVelocity) { + isY_N = self.sweepStyle & LSTSweepStyleY_Negative? YES:NO; + } + sweepBlock(isX_P,isX_N,isY_P,isY_N); +// LSTPVLog(@"isX=%@,isY=%@,velocityX=%lf,velocityY=%lf",isX?@"YES":@"NO",isY?@"YES":@"NO",velocityX,velocityY); + }else {//普通拖拽 + BOOL isCanDismiss = NO; + if (self.dragStyle & LSTDragStyleAll) { + + if (fabs(self.customView.frame.origin.x - self.originFrame.origin.x)>=self.dragDistance && self.dragDistance!=0) { + isCanDismiss = YES; + } + if (fabs(self.customView.frame.origin.y - self.originFrame.origin.y)>=self.dragDistance && self.dragDistance!=0) { + isCanDismiss = YES; + } + + if (isCanDismiss) { + [self dismissWithStyle:_isDragDismissStyle? self.dragDismissStyle:self.dismissStyle + duration:self.getDragDismissDuration]; + }else { + dragReboundBlock(); + } + } else { + dragReboundBlock(); + } + } + } +} + +#pragma mark - ***** 懒加载 ***** + +- (NSHashTable> *)delegates { + if (_delegates) return _delegates; + _delegates = [NSHashTable hashTableWithOptions:NSPointerFunctionsWeakMemory]; + return _delegates; +} + +- (UIView *)parentView { + return self.container; +} + +- (UIView *)currCustomView { + return self.customView; +} + +#pragma mark - ***** 以下是 窗口管理api ***** + +/** 保存popView */ ++ (void)savePopView:(LSTPopView *)popView { + [LSTPopViewManager savePopView:popView]; +} + +/** 获取全局(整个app内)所有popView */ ++ (NSArray *)getAllPopView { + return [LSTPopViewManager getAllPopView]; +} + +/** 获取当前页面所有popView */ ++ (NSArray *)getAllPopViewForParentView:(UIView *)parentView { + return [LSTPopViewManager getAllPopViewForParentView:parentView]; +} + +/** 获取当前页面指定编队的所有popView */ ++ (NSArray *)getAllPopViewForPopView:(LSTPopView *)popView { + return [LSTPopViewManager getAllPopViewForPopView:popView]; +} + +/** + 读取popView (有可能会跨编队读取弹窗) + 建议使用getPopViewForGroupId:forkey: 方法进行精确读取 + */ ++ (LSTPopView *)getPopViewForKey:(NSString *)key { + return [LSTPopViewManager getPopViewForKey:key]; +} + +/** 移除popView */ ++ (void)removePopView:(LSTPopView *)popView { + [LSTPopViewManager removePopView:popView]; +} + +/** + 移除popView 通过唯一key (有可能会跨编队误删弹窗) + 建议使用removePopViewForGroupId:forkey: 方法进行精确删除 + */ ++ (void)removePopViewForKey:(NSString *)key { + [LSTPopViewManager removePopViewForKey:key]; +} + +/** 移除所有popView */ ++ (void)removeAllPopView { + [LSTPopViewManager removeAllPopView]; +} + +/** 移除 最后一个弹出的 popView */ ++ (void)removeLastPopView { + return [LSTPopViewManager removeLastPopView]; +} + +/** 开启调试view 建议设置成 线上隐藏 测试打开 */ ++ (void)setLogStyle:(LSTPopViewLogStyle)logStyle { + _logStyle = logStyle; + + if (logStyle == LSTPopViewLogStyleNO) { + [LSTPopViewM().infoView removeFromSuperview]; + LSTPopViewM().infoView = nil; + } +} + +@end + + + diff --git a/Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopViewProtocol.h b/Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopViewProtocol.h new file mode 100644 index 0000000..dc9d63e --- /dev/null +++ b/Pods/LSTPopView/LSTPopView/Classes/Code/LSTPopViewProtocol.h @@ -0,0 +1,143 @@ +// +// LSTPopViewProtocol.h +// LSTCategory +// +// Created by LoSenTrad on 2020/5/30. +// + +#import +@class LSTPopView; + + +#ifdef DEBUG +#define LSTPVLog(format, ...) printf("class: <%p %s:(第%d行) > method: %s \n%s\n", self, [[[NSString stringWithUTF8String:__FILE__] lastPathComponent] UTF8String], __LINE__, __PRETTY_FUNCTION__, [[NSString stringWithFormat:(format), ##__VA_ARGS__] UTF8String] ) +#else +#define LSTPVLog(format, ...) +#endif + +/** 调试日志类型 */ +typedef NS_ENUM(NSInteger, LSTPopViewLogStyle) { + LSTPopViewLogStyleNO = 0, // 关闭调试信息(窗口和控制台日志输出) + LSTPopViewLogStyleWindow, // 开启左上角小窗 + LSTPopViewLogStyleConsole, // 开启控制台日志输出 + LSTPopViewLogStyleALL // 开启小窗和控制台日志 +}; + +/** 显示动画样式 */ +typedef NS_ENUM(NSInteger, LSTPopStyle) { + LSTPopStyleFade = 0, // 默认 渐变出现 + LSTPopStyleNO, // 无动画 + LSTPopStyleScale, // 缩放 先放大 后恢复至原大小 + LSTPopStyleSmoothFromTop, // 顶部 平滑淡入动画 + LSTPopStyleSmoothFromLeft, // 左侧 平滑淡入动画 + LSTPopStyleSmoothFromBottom, // 底部 平滑淡入动画 + LSTPopStyleSmoothFromRight, // 右侧 平滑淡入动画 + LSTPopStyleSpringFromTop, // 顶部 平滑淡入动画 带弹簧 + LSTPopStyleSpringFromLeft, // 左侧 平滑淡入动画 带弹簧 + LSTPopStyleSpringFromBottom, // 底部 平滑淡入动画 带弹簧 + LSTPopStyleSpringFromRight, // 右侧 平滑淡入动画 带弹簧 + LSTPopStyleCardDropFromLeft, // 顶部左侧 掉落动画 + LSTPopStyleCardDropFromRight, // 顶部右侧 掉落动画 +}; +/** 消失动画样式 */ +typedef NS_ENUM(NSInteger, LSTDismissStyle) { + LSTDismissStyleFade = 0, // 默认 渐变消失 + LSTDismissStyleNO, // 无动画 + LSTDismissStyleScale, // 缩放 + LSTDismissStyleSmoothToTop, // 顶部 平滑淡出动画 + LSTDismissStyleSmoothToLeft, // 左侧 平滑淡出动画 + LSTDismissStyleSmoothToBottom, // 底部 平滑淡出动画 + LSTDismissStyleSmoothToRight, // 右侧 平滑淡出动画 + LSTDismissStyleCardDropToLeft, // 卡片从中间往左侧掉落 + LSTDismissStyleCardDropToRight, // 卡片从中间往右侧掉落 + LSTDismissStyleCardDropToTop, // 卡片从中间往顶部移动消失 +}; +/** 主动动画样式(开发中) */ +typedef NS_ENUM(NSInteger, LSTActivityStyle) { + LSTActivityStyleNO = 0, /// 无动画 + LSTActivityStyleScale, /// 缩放 + LSTActivityStyleShake, /// 抖动 +}; +/** 弹窗位置 */ +typedef NS_ENUM(NSInteger, LSTHemStyle) { + LSTHemStyleCenter = 0, //居中 + LSTHemStyleTop, //贴顶 + LSTHemStyleLeft, //贴左 + LSTHemStyleBottom, //贴底 + LSTHemStyleRight, //贴右 + LSTHemStyleTopLeft, //贴顶和左 + LSTHemStyleBottomLeft, //贴底和左 + LSTHemStyleBottomRight, //贴底和右 + LSTHemStyleTopRight //贴顶和右 +}; +/** 拖拽方向 */ +typedef NS_ENUM(NSInteger, LSTDragStyle) { + LSTDragStyleNO = 0, //默认 不能拖拽窗口 + LSTDragStyleX_Positive = 1<<0, //X轴正方向拖拽 + LSTDragStyleX_Negative = 1<<1, //X轴负方向拖拽 + LSTDragStyleY_Positive = 1<<2, //Y轴正方向拖拽 + LSTDragStyleY_Negative = 1<<3, //Y轴负方向拖拽 + LSTDragStyleX = (LSTDragStyleX_Positive|LSTDragStyleX_Negative), //X轴方向拖拽 + LSTDragStyleY = (LSTDragStyleY_Positive|LSTDragStyleY_Negative), //Y轴方向拖拽 + LSTDragStyleAll = (LSTDragStyleX|LSTDragStyleY) //全向拖拽 +}; +///** 可轻扫消失的方向 */ +typedef NS_ENUM(NSInteger, LSTSweepStyle) { + LSTSweepStyleNO = 0, //默认 不能拖拽窗口 + LSTSweepStyleX_Positive = 1<<0, //X轴正方向拖拽 + LSTSweepStyleX_Negative = 1<<1, //X轴负方向拖拽 + LSTSweepStyleY_Positive = 1<<2, //Y轴正方向拖拽 + LSTSweepStyleY_Negative = 1<<3, //Y轴负方向拖拽 + LSTSweepStyleX = (LSTSweepStyleX_Positive|LSTSweepStyleX_Negative), //X轴方向拖拽 + LSTSweepStyleY = (LSTSweepStyleY_Positive|LSTSweepStyleY_Negative), //Y轴方向拖拽 + LSTSweepStyleALL = (LSTSweepStyleX|LSTSweepStyleY) //全向轻扫 +}; + +/** + 可轻扫消失动画类型 对单向横扫 设置有效 + LSTSweepDismissStyleSmooth: 自动适应选择以下其一 + LSTDismissStyleSmoothToTop, + LSTDismissStyleSmoothToLeft, + LSTDismissStyleSmoothToBottom , + LSTDismissStyleSmoothToRight + */ +typedef NS_ENUM(NSInteger, LSTSweepDismissStyle) { + LSTSweepDismissStyleVelocity = 0, //默认加速度 移除 + LSTSweepDismissStyleSmooth = 1 //平顺移除 +}; + + +NS_ASSUME_NONNULL_BEGIN + +@protocol LSTPopViewProtocol + + +/** 点击弹窗 回调 */ +- (void)lst_PopViewBgClickForPopView:(LSTPopView *)popView; +/** 长按弹窗 回调 */ +- (void)lst_PopViewBgLongPressForPopView:(LSTPopView *)popView; + + + + +// ****** 生命周期 ****** +/** 将要显示 */ +- (void)lst_PopViewWillPopForPopView:(LSTPopView *)popView; +/** 已经显示完毕 */ +- (void)lst_PopViewDidPopForPopView:(LSTPopView *)popView; +/** 倒计时进行中 timeInterval:时长 */ +- (void)lst_PopViewCountDownForPopView:(LSTPopView *)popView forCountDown:(NSTimeInterval)timeInterval; +/** 倒计时倒计时完成 */ +- (void)lst_PopViewCountDownFinishForPopView:(LSTPopView *)popView; +/** 将要开始移除 */ +- (void)lst_PopViewWillDismissForPopView:(LSTPopView *)popView; +/** 已经移除完毕 */ +- (void)lst_PopViewDidDismissForPopView:(LSTPopView *)popView; +//*********************** + + + + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/LSTPopView/LSTPopView/Classes/Code/UIView+LSTPV.h b/Pods/LSTPopView/LSTPopView/Classes/Code/UIView+LSTPV.h new file mode 100644 index 0000000..d2d2735 --- /dev/null +++ b/Pods/LSTPopView/LSTPopView/Classes/Code/UIView+LSTPV.h @@ -0,0 +1,49 @@ +// +// UIView+LSTPV.h +// LSTPopView +// +// Created by LoSenTrad on 2020/11/30. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIView (LSTPV) + +/** 获取/设置view的x坐标 */ +@property (nonatomic, assign) CGFloat pv_X; +/** 获取/设置view的x坐标 */ +@property (nonatomic, assign) CGFloat pv_Y; +/** 获取/设置view的x坐标 */ +@property (nonatomic, assign) CGFloat pv_Width; +/** 获取/设置view的x坐标 */ +@property (nonatomic, assign) CGFloat pv_Height; +/** 获取/设置view的x坐标 */ +@property (nonatomic, assign) CGFloat pv_CenterX; +/** 获取/设置view的x坐标 */ +@property (nonatomic, assign) CGFloat pv_CenterY; +/** 获取/设置view的x坐标 */ +@property (nonatomic, assign) CGFloat pv_Top; +/** 获取/设置view的左边坐标 */ +@property (nonatomic, assign) CGFloat pv_Left; +/** 获取/设置view的底部坐标Y */ +@property (nonatomic, assign) CGFloat pv_Bottom; +/** 获取/设置view的右边坐标 */ +@property (nonatomic, assign) CGFloat pv_Right; +/** 获取/设置view的size */ +@property (nonatomic, assign) CGSize pv_Size; + + +/** 是否是苹果X系列(刘海屏系列) */ +BOOL pv_IsIphoneX_ALL(void); +/** 屏幕大小 */ +CGSize pv_ScreenSize(void); +/** 屏幕宽度 */ +CGFloat pv_ScreenWidth(void); +/** 屏幕高度 */ +CGFloat pv_ScreenHeight(void); + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/LSTPopView/LSTPopView/Classes/Code/UIView+LSTPV.m b/Pods/LSTPopView/LSTPopView/Classes/Code/UIView+LSTPV.m new file mode 100644 index 0000000..a7944ab --- /dev/null +++ b/Pods/LSTPopView/LSTPopView/Classes/Code/UIView+LSTPV.m @@ -0,0 +1,148 @@ +// +// UIView+LSTPV.m +// LSTPopView +// +// Created by LoSenTrad on 2020/11/30. +// + +#import "UIView+LSTPV.h" + +@implementation UIView (LSTPV) + + +- (void)setPv_X:(CGFloat)pv_X { + CGRect frame = self.frame; + frame.origin.x = pv_X; + self.frame = frame; +} + +- (CGFloat)pv_X { + return self.frame.origin.x; +} + +- (void)setPv_Y:(CGFloat)pv_Y { + CGRect frame = self.frame; + frame.origin.y = pv_Y; + self.frame = frame; +} + +- (CGFloat)pv_Y { + return self.frame.origin.y; +} + +- (void)setPv_Width:(CGFloat)pv_Width { + CGRect frame = self.frame; + frame.size.width = pv_Width; + self.frame = frame; +} + +- (CGFloat)pv_Width { + return self.frame.size.width; +} + +- (void)setPv_Height:(CGFloat)pv_Height { + CGRect frame = self.frame; + frame.size.height = pv_Height; + self.frame = frame; +} + +- (CGFloat)pv_Height { + return self.frame.size.height; +} + +- (void)setPv_Size:(CGSize)pv_Size { + CGRect frame = self.frame; + frame.size = pv_Size; + self.frame = frame; +} + +- (CGSize)pv_Size { + return self.frame.size; +} + +- (void)setPv_CenterX:(CGFloat)pv_CenterX { + CGPoint center = self.center; + center.x = pv_CenterX; + self.center = center; +} + +- (CGFloat)pv_CenterX { + return self.center.x; +} + +- (void)setPv_CenterY:(CGFloat)pv_CenterY { + CGPoint center = self.center; + center.y = pv_CenterY; + self.center = center; +} + +- (CGFloat)pv_CenterY { + return self.center.y; +} + +- (void)setPv_Top:(CGFloat)pv_Top { + CGRect newframe = self.frame; + newframe.origin.y = pv_Top; + self.frame = newframe; +} + +- (CGFloat)pv_Top { + return self.frame.origin.y; +} + +- (void)setPv_Left:(CGFloat)pv_Left { + CGRect newframe = self.frame; + newframe.origin.x = pv_Left; + self.frame = newframe; +} + +- (CGFloat)pv_Left { + return self.frame.origin.x; +} + +- (void)setPv_Bottom:(CGFloat)pv_Bottom { + CGRect newframe = self.frame; + newframe.origin.y = pv_Bottom - self.frame.size.height; + self.frame = newframe; +} + +- (CGFloat)pv_Bottom { + return self.frame.origin.y + self.frame.size.height; +} + +- (void)setPv_Right:(CGFloat)pv_Right { + CGFloat delta = pv_Right - (self.frame.origin.x + self.frame.size.width); + CGRect newframe = self.frame; + newframe.origin.x += delta ; + self.frame = newframe; +} + +- (CGFloat)pv_Right { + return self.frame.origin.x + self.frame.size.width; +} + +/** 是否是苹果X系列(刘海屏系列) */ +BOOL pv_IsIphoneX_ALL(void) { + BOOL isPhoneX = NO; + if (@available(iOS 11.0, *)) { + isPhoneX = [[UIApplication sharedApplication] delegate].window.safeAreaInsets.bottom > 0.0; + } + return isPhoneX; +} + +CGSize pv_ScreenSize(void) { + CGSize size = [UIScreen mainScreen].bounds.size; + return size; +} + +CGFloat pv_ScreenWidth(void) { + CGSize size = [UIScreen mainScreen].bounds.size; + return size.width; +} + +CGFloat pv_ScreenHeight(void) { + CGSize size = [UIScreen mainScreen].bounds.size; + return size.height; +} + +@end diff --git a/Pods/LSTPopView/README.md b/Pods/LSTPopView/README.md new file mode 100644 index 0000000..469d510 --- /dev/null +++ b/Pods/LSTPopView/README.md @@ -0,0 +1,178 @@ +# LSTPopView iOS万能弹窗 + +[![Platform](https://img.shields.io/badge/platform-iOS-red.svg)](https://developer.apple.com/iphone/index.action) [![Language](http://img.shields.io/badge/language-OC-yellow.svg?style=flat )](https://en.wikipedia.org/wiki/Objective-C) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](http://mit-license.org) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/LSTPopView.svg)](https://img.shields.io/cocoapods/v/LSTPopView.svg) + +### LSTPopView 万能弹窗,功能强大,易于拓展,性能优化和内存控制让其运行更加的流畅和稳健, LSTPopView的出现,可以让我们更专注弹窗页面的布局. 省心省力 ! 提高开发效率 ! + +## 前言 +- 考虑到笔者的精力问题,遇到问题请先查看 API、效仿Demo、阅读README、搜索 Issues。如果是BUG 或 Feature,最好是提Issue +- 联系方式: LoSenTrad@163.com, QQ群:1045568246, 微信:a_LSTKit +- 开发环境: Xcode12.3, iOS13.5, iPhone XS Max + +## 博客地址 +- github: [https://github.com/LoSenTrad/LSTPopView](https://github.com/LoSenTrad/LSTPopView) +- CSDN: [https://blog.csdn.net/u012400600/article/details/106279654](https://blog.csdn.net/u012400600/article/details/106279654) +- 简书: [https://www.jianshu.com/p/8023a85dc2a2](https://www.jianshu.com/p/8023a85dc2a2) + +## 目录 +* [特性](#特性) +* [版本更新历史](#版本更新历史) +* [安装](#安装) +* [基本使用](#基本使用) +* [使用注意事项](#使用注意事项) +* [演示效果](#演示效果) +* [作者](#作者) +* [版权](#版权) + +## 特性 +- 提供丰富的api,高度自定义弹窗,简单入手使用 +- 支持弹出动画,消失动画,主动动画等多重动画搭配 +- 支持点击,长按,拖拽,横扫手势交互 +- 支持多弹窗管理:编队,堆叠,优先级等 +- 支持指定弹窗父类,eg: UIWindow,self.view等 +- 安全且内存占用小,弹窗内存自动回收 +- 提供生命周期api,自定义动画控制 +- 自动规避键盘,防止被键盘遮挡 +- 支持定时器,多定时器机制 +- 支持纯代码/xib页面 +- 支持横竖屏切换 +- 支持多代理机制 +- 支持二次封装,比如组件LSTHUD,LSTAlertView等 + +## 版本更新历史 +- [点我查看](https://github.com/LoSenTrad/LSTPopView/blob/master/UPDATE_HISTORY.md) + +## 安装 +- OC版本安装 + - CocoaPods安装: 在podfile文件中添加以下描述,然后 `pod install` 或者 `pod update` + + ``` + pod 'LSTPopView' + ``` + - Carthage安装:(暂时未适配) +- Swift版本安装 + - (计划开发中) + +- 手动导入集成 + - 1.拖动LSTPopView文件下5个文件到项目中 + + ```objective-c + LSTPopView.h + LSTPopView.m + UIView+LSTPV.h + UIView+LSTPV.m + LSTPopViewProtocol.h + ``` + - 2.在项目中podfile添加依赖库LSTTimer: https://github.com/LoSenTrad/LSTTimer + ```ruby + pod 'LSTTimer' + ``` + +## 基本使用 +- 代码示例 + + ```objective-c + //自定义view + LSTPopViewTVView *customView = [[LSTPopViewTVView alloc] initWithFrame:CGRectMake(0, 0, 300,400)]; + //创建弹窗PopViiew 指定父容器self.view, 不指定默认是app window + LSTPopView *popView = [LSTPopView initWithCustomView:customView + parentView:self.view + popStyle:LSTPopStyleSmoothFromBottom + dismissStyle:LSTDismissStyleSmoothToBottom]; + //弹窗位置: 居中 贴顶 贴左 贴底 贴右 + popView.hemStyle = LSTHemStyleBottom; + LSTPopViewWK(popView) + //点击背景触发 + popView.bgClickBlock = ^{ [wk_popView dismiss]; }; + //弹窗显示 + [popView pop]; + ``` + +- 调试日志 + ```objective-c + /** 调试日志类型 */ + typedef NS_ENUM(NSInteger, LSTPopViewLogStyle) { + LSTPopViewLogStyleNO = 0, // 关闭调试信息(窗口和控制台日志输出) + LSTPopViewLogStyleWindow, // 开启左上角小窗 + LSTPopViewLogStyleConsole, // 开启控制台日志输出 + LSTPopViewLogStyleALL // 开启小窗和控制台日志 + }; + ``` + - 调试小窗: S表示当前已经显示的弹窗数, R表示在移除队列的弹窗, S+R是表示当前所有的弹窗数 + + + + + +## 使用注意事项 +#### (一定用weak修饰) +- 解析: LSTPopView对每个弹窗都有自动内存销毁机制, 外部对弹窗的强引用对打破这种自动内存销毁机制, 比如成员变量用strong修饰,否则弹窗不能自动销毁,导致内存回收不了. +- 类成员变量使用规范: + + ```objective-c + //成员变量用weak修饰, 不可以用strong修饰 + @property (nonatomic,weak) LSTPopView *popView; + ``` +- 成员变量的创建 + ```objective-c + LSTPopViewTVView *customView = [[LSTPopViewTVView alloc] initWithFrame:CGRectMake(0, 0, 300,400)]; + //弹窗实例创建 + LSTPopView *popView = [LSTPopView initWithCustomView:customView + popStyle:LSTPopStyleSmoothFromBottom + dismissStyle:LSTDismissStyleSmoothToBottom]; + //这里赋值给成员变量self.popView + self.popView = popView; + [popView pop]; + ``` + +- 错误使用: + ```objective-c + //直接赋值给成员变量 导致成员变量为空, 请参考以上使用规范 + self.popView = [LSTPopView initWithCustomView:customView + popStyle:LSTPopStyleSmoothFromBottom + dismissStyle:LSTDismissStyleSmoothToBottom]; + ``` + + +## 演示效果 + +- 应用市场常用的示例场景 + +|QQ,微信,UC,微博,抖音
图片名称|拖拽移除,横扫移除
图片名称 | +|---|---| + +- 丰富的出入场动画, 拖拽, 横扫动画 + +|弹出动画,中间,自上,自左,自下,自左
图片名称|移除动画,中间,至上,至左,至下,至左
图片名称 |拖拽,横扫动画
图片名称 | +|---|---|---| + +- 弹窗位置 + +|弹窗位置,中间,贴顶,贴左,贴底,贴右
图片名称|X轴,Y轴调教,宽度和高度调教
图片名称 | +|---|---| + +- 自动规避键盘遮挡,指定容器,定时器 + +|自动规避键盘遮挡
图片名称|指定容器弹出
图片名称|弹窗计时
图片名称| +|---|---|---| + +- 多弹窗管理(优先级,编队) + +|app启动多弹窗优先级显示
图片名称|多窗口编队使用
图片名称| +|---|---| + + - 支持横竖屏 + +|屏幕旋转
图片名称| +|---| + + + +## 作者 + +LoSenTrad@163.com, QQ群:1045568246, 微信:a_LSTKit + +## 版权 + + 尊重劳动成果, 人人有责. + diff --git a/Pods/LSTTimer/LICENSE b/Pods/LSTTimer/LICENSE new file mode 100644 index 0000000..96fd23b --- /dev/null +++ b/Pods/LSTTimer/LICENSE @@ -0,0 +1,19 @@ +Copyright (c) 2020 490790096@qq.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. diff --git a/Pods/LSTTimer/LSTTimer/Classes/LSTTimer.h b/Pods/LSTTimer/LSTTimer/Classes/LSTTimer.h new file mode 100644 index 0000000..1e3c079 --- /dev/null +++ b/Pods/LSTTimer/LSTTimer/Classes/LSTTimer.h @@ -0,0 +1,165 @@ +// +// LSTTimer.h +// LSTTimer +// +// Created by LoSenTrad on 2020/7/13. +// + +#import + + + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^LSTTimerChangeBlock)(NSString *day, NSString *hour, NSString *minute, NSString *second, NSString *ms); +typedef void(^LSTTimerFinishBlock)(NSString *identifier); +typedef void(^LSTTimerPauseBlock)(NSString *identifier); + + + +/** 倒计时变化通知类型 */ +typedef NS_ENUM(NSInteger, LSTTimerSecondChangeNFType) { + LSTTimerSecondChangeNFTypeNone = 0, + LSTTimerSecondChangeNFTypeMS, //每100ms(毫秒) 发出一次 + LSTTimerSecondChangeNFTypeSecond, //每1s(秒) 发出一次 + +}; + +@interface LSTTimer : NSObject + + +/** 单例 */ +LSTTimer *LSTTimerM(void); + +#pragma mark - ***** 配置计时任务通知回调 ***** +/// 设置倒计时任务的通知回调 +/// @param name 通知名 +/// @param identifier 倒计时任务的标识 +/// @param type 倒计时变化通知类型 ++ (void)setNotificationForName:(NSString *)name identifier:(NSString *)identifier changeNFType:(LSTTimerSecondChangeNFType)type; + +#pragma mark - ***** 添加计时任务(100ms回调一次) ***** +/// 添加计时任务 +/// @param time 时间长度 +/// @param handle 每100ms回调一次 ++ (void)addTimerForTime:(NSTimeInterval)time handle:(LSTTimerChangeBlock)handle; +/// 添加计时任务 +/// @param time 时间长度 +/// @param identifier 计时任务标识 +/// @param handle 每100ms回调一次 ++ (void)addTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle; +/// 添加计时任务 +/// @param time 时间长度 +/// @param identifier 计时任务标识 +/// @param handle 每100ms回调一次 +/// @param finishBlock 计时完成回调 +/// @param pauseBlock 计时暂停回调 ++ (void)addTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle + finish:(LSTTimerFinishBlock)finishBlock + pause:(LSTTimerPauseBlock)pauseBlock; +/// 添加计时任务,持久化到硬盘 +/// @param time 时间长度 +/// @param identifier 计时任务标识 +/// @param handle 每100ms回调一次 ++ (void)addDiskTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle; +/// 添加计时任务,持久化到硬盘 +/// @param time 添加计时任务,持久化到硬盘 +/// @param identifier 计时任务标识 +/// @param handle 每100ms回调一次 +/// @param finishBlock 计时完成回调 +/// @param pauseBlock 计时暂停回调 ++ (void)addDiskTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle + finish:(LSTTimerFinishBlock)finishBlock + pause:(LSTTimerPauseBlock)pauseBlock; + + + +#pragma mark - ***** 添加计时任务(1s回调一次) ***** +/// 添加计时任务 +/// @param time 时间长度 +/// @param handle 计时任务标识 ++ (void)addMinuteTimerForTime:(NSTimeInterval)time handle:(LSTTimerChangeBlock)handle; +/// 添加计时任务 +/// @param time 时间长度 +/// @param identifier 计时任务标识 +/// @param handle 每100ms回调一次 ++ (void)addMinuteTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle; + +/// 添加计时任务 +/// @param time 时间长度 +/// @param identifier 计时任务标识 +/// @param handle 每100ms回调一次 +/// @param finishBlock 计时完成回调 +/// @param pauseBlock 计时暂停回调 ++ (void)addMinuteTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle + finish:(LSTTimerFinishBlock)finishBlock + pause:(LSTTimerPauseBlock)pauseBlock; + +/// 添加计时任务 +/// @param time 时间长度 +/// @param identifier 计时任务标识 +/// @param handle 每100ms回调一次 +/// @param finishBlock 计时完成回调 +/// @param pauseBlock 计时暂停回调 ++ (void)addDiskMinuteTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle + finish:(LSTTimerFinishBlock)finishBlock + pause:(LSTTimerPauseBlock)pauseBlock; + + +#pragma mark - ***** 获取计时任务时间间隔 ***** +/// 通过任务标识获取 计时任务 间隔(毫秒) +/// @param identifier 计时任务标识 ++ (NSTimeInterval)getTimeIntervalForIdentifier:(NSString *)identifier; + + +#pragma mark - ***** 暂停计时任务 ***** +/// 通过标识暂停计时任务 +/// @param identifier 计时任务标识 ++ (BOOL)pauseTimerForIdentifier:(NSString *)identifier; +/// 暂停所有计时任务 ++ (void)pauseAllTimer; + +#pragma mark - ***** 重启计时任务 ***** +/// 通过标识重启 计时任务 +/// @param identifier 计时任务标识 ++ (BOOL)restartTimerForIdentifier:(NSString *)identifier; +/// 重启所有计时任务 ++ (void)restartAllTimer; + +#pragma mark - ***** 重置计时任务(恢复初始状态) ***** +/// 通过标识重置 计时任务 +/// @param identifier 计时任务标识 ++ (BOOL)resetTimerForIdentifier:(NSString *)identifier; +/// 重置所有计时任务 ++ (void)resetAllTimer; + +#pragma mark - ***** 移除计时任务 ***** +/// 通过标识移除计时任务 +/// @param identifier 计时任务标识 ++ (BOOL)removeTimerForIdentifier:(NSString *)identifier; +/// 移除所有计时任务 ++ (void)removeAllTimer; + +#pragma mark - ***** 格式化时间 ***** +/// 将毫秒数 格式化成 时:分:秒:毫秒 +/// @param time 时间长度(毫秒单位) +/// @param handle 格式化完成回调 ++ (void)formatDateForTime:(NSTimeInterval)time handle:(LSTTimerChangeBlock)handle; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/LSTTimer/LSTTimer/Classes/LSTTimer.m b/Pods/LSTTimer/LSTTimer/Classes/LSTTimer.m new file mode 100644 index 0000000..648ae00 --- /dev/null +++ b/Pods/LSTTimer/LSTTimer/Classes/LSTTimer.m @@ -0,0 +1,790 @@ +// +// LSTTimer.m +// LSTTimer +// +// Created by LoSenTrad on 2020/7/13. +// + +#import "LSTTimer.h" + + +#define LSTPopViewTimerPath(name) [[NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES) lastObject] stringByAppendingPathComponent:[NSString stringWithFormat:@"LSTTimer_%@_Timer",name]] + +@interface LSTPopViewTimerModel : NSObject + +/** 毫秒为单位计算 */ +@property (nonatomic, assign) NSTimeInterval time; +/** 原始开始时间 毫秒 */ +@property (nonatomic, assign) NSTimeInterval oriTime; +/** 进度单位 */ +@property (nonatomic, assign) NSTimeInterval unit; +/** 定时器执行block */ + +/** 是否本地持久化保存定时数据 */ +@property (nonatomic,assign) BOOL isDisk; +/** 是否暂停 */ +@property (nonatomic,assign) BOOL isPause; +/** 标识 */ +@property (nonatomic, copy) NSString *identifier; +/** 通知名称 */ +@property (nonatomic, copy) NSString *NFName; +/** 通知类型 0.不发通知 1.毫秒通知 2.秒通知 */ +@property (nonatomic, assign) LSTTimerSecondChangeNFType NFType; + + +@property (nonatomic, copy) LSTTimerChangeBlock handleBlock; +/** 定时器执行block */ +@property (nonatomic, copy) LSTTimerFinishBlock finishBlock; +/** 定时器执行block */ +@property (nonatomic, copy) LSTTimerPauseBlock pauseBlock; + ++ (instancetype)timeInterval:(NSInteger)timeInterval; + +@end + +@implementation LSTPopViewTimerModel + ++ (instancetype)timeInterval:(NSInteger)timeInterval { + LSTPopViewTimerModel *object = [LSTPopViewTimerModel new]; + object.time = timeInterval*1000; + object.oriTime = timeInterval*1000; + return object; +} + +- (void)encodeWithCoder:(NSCoder *)aCoder { + [aCoder encodeDouble:self.time forKey:@"timeInterval"]; + [aCoder encodeDouble:self.oriTime forKey:@"oriTime"]; + [aCoder encodeDouble:self.unit forKey:@"unit"]; + [aCoder encodeBool:self.isDisk forKey:@"isDisk"]; + [aCoder encodeBool:self.isPause forKey:@"isPause"]; + [aCoder encodeObject:self.identifier forKey:@"identifier"]; + [aCoder encodeBool:self.NFType forKey:@"NFType"]; +} + +- (id)initWithCoder:(NSCoder *)aDecoder { + self = [super init]; + if (self) { + self.time = [aDecoder decodeDoubleForKey:@"timeInterval"]; + self.oriTime = [aDecoder decodeDoubleForKey:@"oriTime"]; + self.unit = [aDecoder decodeDoubleForKey:@"unit"]; + self.isDisk = [aDecoder decodeBoolForKey:@"isDisk"]; + self.isPause = [aDecoder decodeBoolForKey:@"isPause"]; + self.identifier = [aDecoder decodeObjectForKey:@"identifier"]; + self.NFType = [aDecoder decodeBoolForKey:@"NFType"]; + } + return self; +} + +@end + +@interface LSTTimer () + +@property (nonatomic, strong) NSTimer * _Nullable showTimer; +/** 储存多个计时器数据源 */ +@property (nonatomic, strong) NSMutableDictionary *timerMdic; + + +@end + +@implementation LSTTimer + +static LSTTimer *_instance; + + +LSTTimer *LSTTimerM() { + return [LSTTimer sharedInstance]; +} + ++ (instancetype)sharedInstance { + if (!_instance) { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [[self alloc] init]; + }); + } + return _instance; +} + + ++ (id)allocWithZone:(struct _NSZone *)zone { + static dispatch_once_t onceToken; + dispatch_once(&onceToken, ^{ + _instance = [super allocWithZone:zone]; + }); + return _instance; +} + +/// 设置倒计时任务的通知回调 +/// @param name 通知名 +/// @param identifier 倒计时任务的标识 +/// @param type 倒计时变化通知类型 ++ (void)setNotificationForName:(NSString *)name identifier:(NSString *)identifier changeNFType:(LSTTimerSecondChangeNFType)type { + if (identifier.length<=0) { + NSLog(@"计时器标识不能为空"); + return; + } + LSTPopViewTimerModel *model = LSTTimerM().timerMdic[identifier]; + if (model) { + model.NFType = type; + model.NFName = name; + return; + }else { + NSLog(@"找不到计时器任务"); + return; + } +} + + +/** 添加定时器并开启计时 */ ++ (void)addTimerForTime:(NSTimeInterval)time handle:(LSTTimerChangeBlock)handle { + [self initTimerForForTime:time identifier:nil ForIsDisk:NO unit:0 handle:handle finish:nil pause:nil]; +} +/** 添加定时器并开启计时 */ ++ (void)addTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle { + + [self initTimerForForTime:time + identifier:identifier + ForIsDisk:NO + unit:-1 + handle:handle + finish:nil + pause:nil]; +} +/** 添加定时器并开启计时 */ ++ (void)addTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle + finish:(LSTTimerFinishBlock)finishBlock + pause:(LSTTimerPauseBlock)pauseBlock { + + [self initTimerForForTime:time + identifier:identifier + ForIsDisk:NO + unit:-1 + handle:handle + finish:finishBlock + pause:pauseBlock]; +} + +/** 添加定时器并开启计时 */ ++ (void)addDiskTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle { + + [self initTimerForForTime:time + identifier:identifier + ForIsDisk:YES + unit:-1 + handle:handle + finish:nil + pause:nil]; +} + +/** 添加定时器并开启计时 */ ++ (void)addDiskTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle + finish:(LSTTimerFinishBlock)finishBlock + pause:(LSTTimerPauseBlock)pauseBlock { + + [self initTimerForForTime:time + identifier:identifier + ForIsDisk:YES + unit:-1 + handle:handle + finish:finishBlock + pause:pauseBlock]; +} + + +/** 添加定时器并开启计时 */ ++ (void)addMinuteTimerForTime:(NSTimeInterval)time handle:(LSTTimerChangeBlock)handle { + [self initTimerForForTime:time identifier:nil ForIsDisk:NO unit:1000 handle:handle finish:nil pause:nil]; +} +/** 添加定时器并开启计时 */ ++ (void)addMinuteTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle { + + [self initTimerForForTime:time + identifier:identifier + ForIsDisk:NO + unit:1000 + handle:handle + finish:nil + pause:nil]; +} + +/** 添加定时器并开启计时 */ ++ (void)addMinuteTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle + finish:(LSTTimerFinishBlock)finishBlock + pause:(LSTTimerPauseBlock)pauseBlock { + + [self initTimerForForTime:time + identifier:identifier + ForIsDisk:NO + unit:1000 + handle:handle + finish:finishBlock + pause:pauseBlock]; +} + +/** 添加定时器并开启计时 */ ++ (void)addDiskMinuteTimerForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + handle:(LSTTimerChangeBlock)handle + finish:(LSTTimerFinishBlock)finishBlock + pause:(LSTTimerPauseBlock)pauseBlock { + + [self initTimerForForTime:time + identifier:identifier + ForIsDisk:YES + unit:1000 + handle:handle + finish:finishBlock + pause:pauseBlock]; +} + +//总初始化入口 ++ (void)initTimerForForTime:(NSTimeInterval)time + identifier:(NSString *)identifier + ForIsDisk:(BOOL)isDisk + unit:(NSTimeInterval)unit + handle:(LSTTimerChangeBlock)handle + finish:(LSTTimerFinishBlock)finishBlock + pause:(LSTTimerPauseBlock)pauseBlock { + + if (identifier.length<=0) { + LSTPopViewTimerModel *model = [LSTPopViewTimerModel timeInterval:time]; + model.isDisk = isDisk; + model.identifier = [NSString stringWithFormat:@"%p",model]; + model.unit = unit; + model.handleBlock = handle; + model.finishBlock = finishBlock; + model.pauseBlock = pauseBlock; + [LSTTimerM().timerMdic setObject:model forKey:model.identifier]; + if (model.handleBlock) { + NSInteger totalSeconds = model.time/1000.0; + NSString *days = [NSString stringWithFormat:@"%zd", totalSeconds/60/60/24]; + NSString *hours = [NSString stringWithFormat:@"%zd", totalSeconds/60/60%24]; + NSString *minute = [NSString stringWithFormat:@"%zd", (totalSeconds/60)%60]; + NSString *second = [NSString stringWithFormat:@"%zd", totalSeconds%60]; + CGFloat sss = ((NSInteger)(model.time))%1000/10; + NSString *ss = [NSString stringWithFormat:@"%.lf", sss]; + + if (hours.integerValue < 10) { + hours = [NSString stringWithFormat:@"0%@", hours]; + } + if (minute.integerValue < 10) { + minute = [NSString stringWithFormat:@"0%@", minute]; + } + if (second.integerValue < 10) { + second = [NSString stringWithFormat:@"0%@", second]; + } + if (ss.integerValue < 10) { + ss = [NSString stringWithFormat:@"0%@", ss]; + } + model.handleBlock(days,hours,minute,second,ss); + + } + // 发出通知 + if (model.NFType != LSTTimerSecondChangeNFTypeNone) { + [[NSNotificationCenter defaultCenter] postNotificationName:model.NFName object:nil userInfo:nil]; + } + if (model.isDisk) { + [self savaForTimerModel:model]; + } + [self initTimer]; + return; + } + + + BOOL isTempDisk = [LSTTimer timerIsExistInDiskForIdentifier:identifier];//磁盘有任务 + BOOL isRAM = LSTTimerM().timerMdic[identifier]?YES:NO;//内存有任务 + + if (!isRAM && !isTempDisk) {//新任务 + LSTPopViewTimerModel *model = [LSTPopViewTimerModel timeInterval:time]; + model.handleBlock = handle; + model.isDisk = isDisk; + model.identifier = identifier; + model.unit = unit; + model.finishBlock = finishBlock; + model.pauseBlock = pauseBlock; + [LSTTimerM().timerMdic setObject:model forKey:identifier]; + if (model.handleBlock) { + + NSInteger totalSeconds = model.time/1000.0; + NSString *days = [NSString stringWithFormat:@"%zd", totalSeconds/60/60/24]; + NSString *hours = [NSString stringWithFormat:@"%zd", totalSeconds/60/60%24]; + NSString *minute = [NSString stringWithFormat:@"%zd", (totalSeconds/60)%60]; + NSString *second = [NSString stringWithFormat:@"%zd", totalSeconds%60]; + CGFloat sss = ((NSInteger)(model.time))%1000/10; + NSString *ss = [NSString stringWithFormat:@"%.lf", sss]; + + if (hours.integerValue < 10) { + hours = [NSString stringWithFormat:@"0%@", hours]; + } + if (minute.integerValue < 10) { + minute = [NSString stringWithFormat:@"0%@", minute]; + } + if (second.integerValue < 10) { + second = [NSString stringWithFormat:@"0%@", second]; + } + if (ss.integerValue < 10) { + ss = [NSString stringWithFormat:@"0%@", ss]; + } + if (model.isDisk) { + [self savaForTimerModel:model]; + } + model.handleBlock(days,hours,minute,second,ss); + + } + // 发出通知 + if (model.NFType != LSTTimerSecondChangeNFTypeNone) { + [[NSNotificationCenter defaultCenter] postNotificationName:model.NFName object:nil userInfo:nil]; + } + [self initTimer]; + } + + + if (isRAM && !isTempDisk) {//内存任务 + LSTPopViewTimerModel *model = LSTTimerM().timerMdic[identifier]; + model.isPause = NO; + model.handleBlock = handle; + model.isDisk = isDisk; + model.finishBlock = finishBlock; + model.pauseBlock = pauseBlock; + if (model.isDisk) { + [self savaForTimerModel:model]; + } +// [self initTimer]; + } + + if (!isRAM && isTempDisk) {//硬盘的任务 + LSTPopViewTimerModel *model = [LSTTimer getTimerModelForIdentifier:identifier]; + if (isDisk == NO) { + [LSTTimer deleteForIdentifier:identifier]; + } + model.isPause = NO; + model.isDisk = isDisk; + model.handleBlock = handle; + model.finishBlock = finishBlock; + model.pauseBlock = pauseBlock; + [LSTTimerM().timerMdic setObject:model forKey:identifier]; + if (model.handleBlock) { + NSInteger totalSeconds = model.time/1000.0; + NSString *days = [NSString stringWithFormat:@"%zd", totalSeconds/60/60/24]; + NSString *hours = [NSString stringWithFormat:@"%zd", totalSeconds/60/60%24]; + NSString *minute = [NSString stringWithFormat:@"%zd", (totalSeconds/60)%60]; + NSString *second = [NSString stringWithFormat:@"%zd", totalSeconds%60]; + CGFloat sss = ((NSInteger)(model.time))%1000/10; + NSString *ss = [NSString stringWithFormat:@"%.lf", sss]; + + if (hours.integerValue < 10) { + hours = [NSString stringWithFormat:@"0%@", hours]; + } + if (minute.integerValue < 10) { + minute = [NSString stringWithFormat:@"0%@", minute]; + } + if (second.integerValue < 10) { + second = [NSString stringWithFormat:@"0%@", second]; + } + if (ss.integerValue < 10) { + ss = [NSString stringWithFormat:@"0%@", ss]; + } + model.handleBlock(days,hours,minute,second,ss); + + } + // 发出通知 + if (model.NFType != LSTTimerSecondChangeNFTypeNone) { + [[NSNotificationCenter defaultCenter] postNotificationName:model.NFName object:nil userInfo:nil]; + } + if (model.isDisk) { + [self savaForTimerModel:model]; + } + [self initTimer]; + } + + if (isRAM && isTempDisk) {//硬盘的任务 + LSTPopViewTimerModel *model = [LSTTimer getTimerModelForIdentifier:identifier]; + model.isPause = NO; + if (isDisk == NO) { + [LSTTimer deleteForIdentifier:identifier]; + } + model.isDisk = isDisk; + model.handleBlock = handle; + model.finishBlock = finishBlock; + model.pauseBlock = pauseBlock; + [LSTTimerM().timerMdic setObject:model forKey:identifier]; + if (model.handleBlock) { + NSInteger totalSeconds = model.time/1000.0; + NSString *days = [NSString stringWithFormat:@"%zd", totalSeconds/60/60/24]; + NSString *hours = [NSString stringWithFormat:@"%zd", totalSeconds/60/60%24]; + NSString *minute = [NSString stringWithFormat:@"%zd", (totalSeconds/60)%60]; + NSString *second = [NSString stringWithFormat:@"%zd", totalSeconds%60]; + CGFloat sss = ((NSInteger)(model.time))%1000/10; + NSString *ss = [NSString stringWithFormat:@"%.lf", sss]; + + if (hours.integerValue < 10) { + hours = [NSString stringWithFormat:@"0%@", hours]; + } + if (minute.integerValue < 10) { + minute = [NSString stringWithFormat:@"0%@", minute]; + } + if (second.integerValue < 10) { + second = [NSString stringWithFormat:@"0%@", second]; + } + if (ss.integerValue < 10) { + ss = [NSString stringWithFormat:@"0%@", ss]; + } + model.handleBlock(days,hours,minute,second,ss); + + } + // 发出通知 + if (model.NFType != LSTTimerSecondChangeNFTypeNone) { + [[NSNotificationCenter defaultCenter] postNotificationName:model.NFName object:nil userInfo:nil]; + } + if (model.isDisk) { + [self savaForTimerModel:model]; + } +// [self initTimer]; + } + +} + ++ (NSTimeInterval)getTimeIntervalForIdentifier:(NSString *)identifier { + if (identifier.length<=0) { + return 0.0; + } + + BOOL isTempDisk = [LSTTimer timerIsExistInDiskForIdentifier:identifier];//磁盘有任务 + BOOL isRAM = LSTTimerM().timerMdic[identifier]?YES:NO;//内存有任务 + + + if (isTempDisk) { + LSTPopViewTimerModel *model = [LSTTimer loadTimerForIdentifier:identifier]; + return model.oriTime - model.time; + }else if (isRAM) { + LSTPopViewTimerModel *model = LSTTimerM().timerMdic[identifier]; + return model.oriTime - model.time; + }else { + NSLog(@"找不到计时任务"); + return 0.0; + } + +} + ++ (BOOL)pauseTimerForIdentifier:(NSString *)identifier { + if (identifier.length<=0) { + NSLog(@"计时器标识不能为空"); + return NO; + } + LSTPopViewTimerModel *model = LSTTimerM().timerMdic[identifier]; + + if (model) { + model.isPause = YES; + if (model.pauseBlock) { model.pauseBlock(model.identifier); } + return YES; + }else { + NSLog(@"找不到计时器任务"); + return NO; + } +} + ++ (void)pauseAllTimer { + [LSTTimerM().timerMdic enumerateKeysAndObjectsUsingBlock:^(NSString *key, LSTPopViewTimerModel *obj, BOOL *stop) { + obj.isPause = YES; + if (obj.pauseBlock) { obj.pauseBlock(obj.identifier); } + }]; +} + ++ (BOOL)restartTimerForIdentifier:(NSString *)identifier { + if (identifier.length<=0) { + NSLog(@"计时器标识不能为空"); + return NO; + } + + //只有内存任务才能重启, 硬盘任务只能调用addTimer系列方法重启 + BOOL isRAM = LSTTimerM().timerMdic[identifier]?YES:NO;//内存有任务 + if (isRAM) { + LSTPopViewTimerModel *model = LSTTimerM().timerMdic[identifier]; + model.isPause = NO; + return YES; + }else { + NSLog(@"找不到计时器任务"); + return NO; + } + + +} ++ (void)restartAllTimer { + + if (LSTTimerM().timerMdic.count<=0) { + return; + } + + [LSTTimerM().timerMdic enumerateKeysAndObjectsUsingBlock:^(NSString *key, LSTPopViewTimerModel *obj, BOOL *stop) { + obj.isPause = NO; + }]; +} + ++ (BOOL)resetTimerForIdentifier:(NSString *)identifier { + if (identifier.length<=0) { + NSLog(@"计时器标识不能为空"); + return NO; + } + + //只有内存任务才能重启, 硬盘任务只能调用addTimer系列方法重启 + BOOL isRAM = LSTTimerM().timerMdic[identifier]?YES:NO;//内存有任务 + if (isRAM) { + LSTPopViewTimerModel *model = LSTTimerM().timerMdic[identifier]; + model.isPause = NO; + model.time = model.oriTime; + if (model.handleBlock) { + NSInteger totalSeconds = model.time/1000.0; + NSString *days = [NSString stringWithFormat:@"%zd", totalSeconds/60/60/24]; + NSString *hours = [NSString stringWithFormat:@"%zd", totalSeconds/60/60%24]; + NSString *minute = [NSString stringWithFormat:@"%zd", (totalSeconds/60)%60]; + NSString *second = [NSString stringWithFormat:@"%zd", totalSeconds%60]; + CGFloat sss = ((NSInteger)(model.time))%1000/10; + NSString *ss = [NSString stringWithFormat:@"%.lf", sss]; + + if (hours.integerValue < 10) { + hours = [NSString stringWithFormat:@"0%@", hours]; + } + if (minute.integerValue < 10) { + minute = [NSString stringWithFormat:@"0%@", minute]; + } + if (second.integerValue < 10) { + second = [NSString stringWithFormat:@"0%@", second]; + } + if (ss.integerValue < 10) { + ss = [NSString stringWithFormat:@"0%@", ss]; + } + model.handleBlock(days,hours,minute,second,ss); + + } + return YES; + }else { + NSLog(@"找不到计时器任务"); + return NO; + } +} + ++ (void)resetAllTimer { + if (LSTTimerM().timerMdic.count<=0) { + return; + } + + [LSTTimerM().timerMdic enumerateKeysAndObjectsUsingBlock:^(NSString *key, LSTPopViewTimerModel *obj, BOOL *stop) { + obj.isPause = NO; + obj.time = obj.oriTime; + if (obj.handleBlock) { + NSInteger totalSeconds = obj.time/1000.0; + NSString *days = [NSString stringWithFormat:@"%zd", totalSeconds/60/60/24]; + NSString *hours = [NSString stringWithFormat:@"%zd", totalSeconds/60/60%24]; + NSString *minute = [NSString stringWithFormat:@"%zd", (totalSeconds/60)%60]; + NSString *second = [NSString stringWithFormat:@"%zd", totalSeconds%60]; + CGFloat sss = ((NSInteger)(obj.time))%1000/10; + NSString *ss = [NSString stringWithFormat:@"%.lf", sss]; + + if (hours.integerValue < 10) { + hours = [NSString stringWithFormat:@"0%@", hours]; + } + if (minute.integerValue < 10) { + minute = [NSString stringWithFormat:@"0%@", minute]; + } + if (second.integerValue < 10) { + second = [NSString stringWithFormat:@"0%@", second]; + } + if (ss.integerValue < 10) { + ss = [NSString stringWithFormat:@"0%@", ss]; + } + obj.handleBlock(days,hours,minute,second,ss); + + } + }]; +} + ++ (BOOL)removeTimerForIdentifier:(NSString *)identifier { + if (identifier.length<=0) { + NSLog(@"计时器标识不能为空"); + return NO; + } + + [LSTTimerM().timerMdic removeObjectForKey:identifier]; + if (LSTTimerM().timerMdic.count<=0) {//如果没有计时任务了 就销毁计时器 + [LSTTimerM().showTimer invalidate]; + LSTTimerM().showTimer = nil; + } + return YES; +} + ++ (void)removeAllTimer { + [LSTTimerM().timerMdic removeAllObjects]; + [LSTTimerM().showTimer invalidate]; + LSTTimerM().showTimer = nil; +} + +/** increase YES: 递增 NO: 递减 */ ++ (void)initTimer { + + if (LSTTimerM().showTimer) { + return; + } + + NSTimer *timer = [NSTimer timerWithTimeInterval:0.01f target:LSTTimerM() selector:@selector(timerChange) userInfo:nil repeats:YES]; + [[NSRunLoop currentRunLoop] addTimer:timer forMode:NSRunLoopCommonModes]; + LSTTimerM().showTimer = timer; + +} + +- (void)timerChange { + // 时间差+ + [LSTTimerM().timerMdic enumerateKeysAndObjectsUsingBlock:^(NSString *key, LSTPopViewTimerModel *obj, BOOL *stop) { + if (!obj.isPause) { + + obj.time = obj.time-10.0; + + if (obj.unit>-1) { + obj.unit = obj.unit-10.0; + } + + if (obj.time<0) {//计时结束 + obj.time = 0; + obj.isPause = YES; + } + NSInteger totalSeconds = obj.time/1000.0; + NSString *days = [NSString stringWithFormat:@"%zd", totalSeconds/60/60/24]; + NSString *hours = [NSString stringWithFormat:@"%zd", totalSeconds/60/60%24]; + NSString *minute = [NSString stringWithFormat:@"%zd", (totalSeconds/60)%60]; + NSString *second = [NSString stringWithFormat:@"%zd", totalSeconds%60]; + CGFloat sss = ((NSInteger)(obj.time))%1000/10; + NSString *ms = [NSString stringWithFormat:@"%.lf", sss]; + + if (hours.integerValue < 10) { + hours = [NSString stringWithFormat:@"0%@", hours]; + } + if (minute.integerValue < 10) { + minute = [NSString stringWithFormat:@"0%@", minute]; + } + if (second.integerValue < 10) { + second = [NSString stringWithFormat:@"0%@", second]; + } + if (ms.integerValue < 10) { + ms = [NSString stringWithFormat:@"0%@", ms]; + } + + + + if (obj.unit<=-1) { + if (obj.handleBlock) {obj.handleBlock(days,hours,minute,second,ms);} + + if (obj.NFType == LSTTimerSecondChangeNFTypeMS) { + // 发出通知 + [[NSNotificationCenter defaultCenter] postNotificationName:obj.NFName object:nil userInfo:nil]; + } + }else if (obj.unit == 0) { + if (obj.handleBlock) {obj.handleBlock(days,hours,minute,second,ms);} + obj.unit = 1000; + if (obj.NFType == LSTTimerSecondChangeNFTypeSecond) { + // 发出通知 + [[NSNotificationCenter defaultCenter] postNotificationName:obj.NFName object:nil userInfo:nil]; + } + } + + if (obj.isDisk) { + [LSTTimer savaForTimerModel:obj]; + } + + if (obj.time<=0) {//计时器计时完毕自动移除计时任务 + if (obj.finishBlock) { obj.finishBlock(obj.identifier); } + [LSTTimerM().timerMdic removeObjectForKey:obj.identifier]; + [LSTTimer deleteForIdentifier:obj.identifier]; + } + + } + }]; + +} + +- (NSMutableDictionary *)timerMdic { + if(_timerMdic) return _timerMdic; + _timerMdic = [NSMutableDictionary dictionary]; + return _timerMdic; +} + + + +#pragma mark - ***** other ***** + ++ (BOOL)timerIsExistInDiskForIdentifier:(NSString *)identifier { + NSString *filePath = LSTPopViewTimerPath(identifier); + BOOL isExist = [[NSFileManager defaultManager] fileExistsAtPath:filePath]; + return isExist; +} + +/** 格式化时间 */ ++ (void)formatDateForTime:(NSTimeInterval)time handle:(LSTTimerChangeBlock)handle { + if (handle) { + NSInteger totalSeconds = time/1000.0; + NSString *days = [NSString stringWithFormat:@"%zd", totalSeconds/60/60/24]; + NSString *hours = [NSString stringWithFormat:@"%zd", totalSeconds/60/60%24]; + NSString *minute = [NSString stringWithFormat:@"%zd", (totalSeconds/60)%60]; + NSString *second = [NSString stringWithFormat:@"%zd", totalSeconds%60]; + CGFloat sss = ((NSInteger)(time))%1000/10; + NSString *ms = [NSString stringWithFormat:@"%.lf", sss]; + + if (hours.integerValue < 10) { + hours = [NSString stringWithFormat:@"0%@", hours]; + } + if (minute.integerValue < 10) { + minute = [NSString stringWithFormat:@"0%@", minute]; + } + if (second.integerValue < 10) { + second = [NSString stringWithFormat:@"0%@", second]; + } + if (ms.integerValue < 10) { + ms = [NSString stringWithFormat:@"0%@", ms]; + } + + handle(days,hours,minute,second,ms); + } +} + + ++ (BOOL)savaForTimerModel:(LSTPopViewTimerModel *)model { + NSString *filePath = LSTPopViewTimerPath(model.identifier); + return [NSKeyedArchiver archiveRootObject:model toFile:filePath]; +} + ++ (LSTPopViewTimerModel *)loadTimerForIdentifier:(NSString *)identifier{ + NSString *filePath = LSTPopViewTimerPath(identifier); + return [NSKeyedUnarchiver unarchiveObjectWithFile:filePath]; +} + ++ (BOOL)deleteForIdentifier:(NSString *)identifier { + NSString *filePath = LSTPopViewTimerPath(identifier); + NSFileManager* fileManager = [NSFileManager defaultManager]; + BOOL isExist = [fileManager fileExistsAtPath:filePath]; + if (isExist) { + return [fileManager removeItemAtPath:filePath error:nil]; + } + return NO; +} + ++ (LSTPopViewTimerModel *)getTimerModelForIdentifier:(NSString *)identifier { + if (identifier.length<=0) { + return nil; + } + LSTPopViewTimerModel *model = [LSTTimer loadTimerForIdentifier:identifier]; + return model; + +} + + +@end diff --git a/Pods/LSTTimer/README.md b/Pods/LSTTimer/README.md new file mode 100644 index 0000000..45a0f1f --- /dev/null +++ b/Pods/LSTTimer/README.md @@ -0,0 +1,72 @@ +# LSTTimer 性能和精度兼得的iOS计时器组件 + +[![Platform](https://img.shields.io/badge/platform-iOS-red.svg)](https://developer.apple.com/iphone/index.action) [![Language](http://img.shields.io/badge/language-OC-yellow.svg?style=flat )](https://en.wikipedia.org/wiki/Objective-C) [![License](https://img.shields.io/badge/license-MIT-blue.svg)](http://mit-license.org) [![CocoaPods Compatible](https://img.shields.io/cocoapods/v/LSTPopView.svg)](https://img.shields.io/cocoapods/v/LSTTimer.svg) + +## 前言 +- 在项目开发中,计时器任务的需求很多, LSTTimer的出现就是为了更好统一管理项目中的计时器任务. +- 欢迎coder们发现问题或者提供更好的idea,一起努力完善 + +## 博客地址 +- github: [https://github.com/LoSenTrad/LSTTimer](https://github.com/LoSenTrad/LSTTimer) +- 简书: [https://www.jianshu.com/p/4f05c7e26bb1](https://www.jianshu.com/p/4f05c7e26bb1) + +## 实现思路 +LSTTimer单例设计, 内部持有一个NSTimer和计时任务池, 所有的计时任务都被添加到任务池里面; NSTimer每100ms(毫秒)执行一次遍历计时任务池, 每个计时任务会进行的时间差运算. + +## 特性 + +- 提供丰富的api,简单入手使用 +- 单例设计,安全且占用内存少,统一管理app所有计时任务 +- 单计时器任务池设计,一个NSTimer完成多个计时任务 +- 计时任务精确度:100ms(100毫秒) +- 支持计时格式--> 天:时:分:秒:毫秒 +- 支持硬盘持久化计时任务 +- 支持列表计时任务和各种花里胡哨的计时任务 + +## 版本更新历史[点我](https://github.com/LoSenTrad/LSTTimer/blob/master/UPDATE_HISTORY.md) + +## 安装 + +- CocoaPods安装: 在podfile文件中添加以下描述,然后 `pod install` 或者 `pod update` + + ```ruby + pod 'LSTTimer' + ``` +- Carthage安装:(暂时未适配) + +## 效果演示(gif图比较大,请耐心等待~) + +- 应用市场常用的示例场景 + - 支持 天:时:分:秒:毫秒 + - 列表计时方案:只需一个计时任务 + +|常用示例场景
图片名称|列表倒计时
图片名称| +|---|---| + +- 内存计时任务 +(当前页面添加计时任务,退出当前页面,计时任务不会停止,而是存在于app的整个生命周期内.当然了,也可以手动移除) + +|内存计时任务
图片名称| +|---| + +- 硬盘计时任务 + +(当前页面添加硬盘计时任务,退出app,计时任务保存在硬盘,再次打开进入app,如果计时任务没有结束,继续该计时任务) + +|自动规避键盘遮挡
图片名称| +|---| + + +## 作者 + +490790096@qq.com, LoSenTrad@163.com + +## 版权 + + 尊重劳动成果, 人人有责. + + + + + + diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 7544f3a..a8812f6 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -21,6 +21,12 @@ PODS: - LookinServer (1.2.8): - LookinServer/Core (= 1.2.8) - LookinServer/Core (1.2.8) + - LSTPopView (0.3.10): + - LSTPopView/Code (= 0.3.10) + - LSTTimer + - LSTPopView/Code (0.3.10): + - LSTTimer + - LSTTimer (0.2.10) - Masonry (1.1.0) - MBProgressHUD (1.2.0) - MJExtension (3.4.2) @@ -36,6 +42,7 @@ DEPENDENCIES: - FLAnimatedImage (~> 1.0.17) - HWPanModal (~> 0.9.9) - LookinServer + - LSTPopView (~> 0.3.10) - Masonry (= 1.1.0) - MBProgressHUD (= 1.2.0) - MJExtension (= 3.4.2) @@ -50,6 +57,8 @@ SPEC REPOS: - FLAnimatedImage - HWPanModal - LookinServer + - LSTPopView + - LSTTimer - Masonry - MBProgressHUD - MJExtension @@ -63,12 +72,14 @@ SPEC CHECKSUMS: FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2 LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80 + LSTPopView: 9379f00f6ce7d1fc620b50ab00ed3ef97b2d4d52 + LSTTimer: caf8f02ff366ca175cf4c1778d26c166183c1b6f Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 MJExtension: e97d164cb411aa9795cf576093a1fa208b4a8dd8 MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: c407e365492f78edcfea5c78b0fb36d8bf0e447d +PODFILE CHECKSUM: c50284c86c4e30cee59c186e48767667019dcb61 COCOAPODS: 1.16.2 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 0c1b76d..244981e 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -19,1271 +19,1322 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 0005259AEE76604A26E43EA994475B68 /* HWShoppingCartPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F53205FC53C4FCB1F1D5089D62F9DFC /* HWShoppingCartPresentingAnimation.m */; }; - 00DAE48C9A4FBCD1FCAA922CA57B45F9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = C5D4B0A2DB8E7128A6DA546DA4C7CEB7 /* SDWebImageDownloaderRequestModifier.m */; }; - 01D2F1D0ABE13AAB2CDC0C25E378E964 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CD6AE0C7A2E208FF93567A99374869B /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 01F66DF95199AFA87E9B4C3B00A4A471 /* Pods-keyBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 021ACCD4343D154E4782A5ECE222A8DF /* LookinIvarTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 018E89B3130206293240B03D8960F18B /* LookinIvarTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 03623FBDBE9F6B422E9A5C6EAD321A58 /* HWPanModalPresenterProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = BBD303CA2BE52A14A7809A2F458FE949 /* HWPanModalPresenterProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 042D40751BD2F51FBE9FECD4707CBBE9 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F351B59999F041F80A0949DA207118B /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0453019EC6578A67B82CF569EC765546 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = EAA52787EF7666BD721984EDA694AE9B /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 05E2B7C1DB7528A0BBEA1521BE0DBAF1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 144086F1366328F4F927C4F459E44619 /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 06C4E233E7977DB81A24482E69B2D7D7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = A77B70C25747C0E7AE67F784B287D211 /* UIImage+Transform.m */; }; - 0845A6CB7AE77A99CC475BD14101FE87 /* LookinAttrType.h in Headers */ = {isa = PBXBuildFile; fileRef = CC16AC12627C17F0E12860526E93F8EF /* LookinAttrType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08719ABCE689ED74FE7486B1E49DAA6C /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = F9A2F41CFB36F97D9E0F592411A2F9F1 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 089F3C4BAA46A37EC5763DD312771021 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 58FC58CFC6A48F6752D249D83F67DD94 /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08D50C5AC969A3701B6F9137CF3A10F1 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 1527F49078C26F2BAB6E17A11F0AC9A9 /* UIImage+ForceDecode.m */; }; - 09A2ACBC8CE1761652EAA20886AEFE10 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 6124AD77C854511265D90EDC5EE36657 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0A7342FACEBA0077F1B06178940883DB /* HWPanModal.h in Headers */ = {isa = PBXBuildFile; fileRef = DC656082CB5200E5E1AF1B4BE99048B3 /* HWPanModal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B0E6CECDF516BC83756C1D5515A725B /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 839B9E61EAA7FC6A8B571EAB1077DBCF /* SDAsyncBlockOperation.m */; }; - 0B449236AF25C6C11B0DE3D6D0E4A19B /* LookinEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 3759EC9B1F622ABF5524C464D429D774 /* LookinEventHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BE3B8DB6034364E7CF3AE9D01C7C0B4 /* CALayer+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F7E17F4510167B68511D3E34E380ED7 /* CALayer+Lookin.m */; }; - 0C79142D1349DD9A969F47A0A8AAA0CB /* Lookin_PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 78DE1BDAC4037EF5EF5085D7F97C5896 /* Lookin_PTProtocol.m */; }; - 0EF10747EF2A02413E84BD5EF7C87A4B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3421F5C836952B09AC7AF130FB3D09FC /* MJRefreshNormalHeader.m */; }; - 0F1D0F5DCC8C94A4C684DF846D14F436 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CE706B82C8002B7608E049B83BF0A12 /* SDWebImagePrefetcher.m */; }; - 0FF9F459ED16719292443A4C99B52B20 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = BAF92A34DD29AD318C11B5807644B670 /* SDImageCache.m */; }; - 10017B43AC38C3A89D7AC1376C6E7066 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 070F9E5A12CC270070B53AA6E4DE380D /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 104D9196010D2A8C52C0C19E9C9D52E8 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AABD4B7A1454CA80B386AD36AEFEB5A7 /* MBProgressHUD-dummy.m */; }; - 117F4B6F653A8DA2637C5C93B4993884 /* Peertalk.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BD99371527F7C150CF7C859DEE75697 /* Peertalk.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 11C929E6BFB46F981685446F26DCE605 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F13ED159399F9081ED4E0855D985B3B /* MJRefreshAutoFooter.m */; }; - 11D4DC1FCE5647EEA8484AA4A880AF8F /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = A143D09B35BD8CC84D08FB36C49D2099 /* MBProgressHUD.m */; }; - 126496714AD564062A8C10787CC01B8B /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 92A1420483F3DAE0607CA7ECEA495C73 /* MJFoundation.m */; }; - 12EC136F97CCCDD8C3765925FABA52CD /* HWPanModalHeight.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E2233B3F4E54A10BBB04EA668A8B0BC /* HWPanModalHeight.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14943D0EE97A4966510A86F5C3FC66A5 /* MJExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B979B6198848283DB66503E656A49837 /* MJExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14CA284AC4FF1EED75E785641EE98034 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 46B5AC2B0569CA6232E5088BF6FBCD84 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 150116E888969E8304BA3E2BB6529461 /* LookinHierarchyFile.h in Headers */ = {isa = PBXBuildFile; fileRef = F86370D27A7E43E20C85C3106B69C57D /* LookinHierarchyFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0005259AEE76604A26E43EA994475B68 /* HWShoppingCartPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8927ADAF60DF7D3D91B390580BD36295 /* HWShoppingCartPresentingAnimation.m */; }; + 00DAE48C9A4FBCD1FCAA922CA57B45F9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 23518377A93659DE7C8E586309E28896 /* SDWebImageDownloaderRequestModifier.m */; }; + 01D2F1D0ABE13AAB2CDC0C25E378E964 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D37BD8FF05E69B29FC64F9CEB3CA7255 /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 021ACCD4343D154E4782A5ECE222A8DF /* LookinIvarTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 587808BB0F9012792B17999F0BB495C4 /* LookinIvarTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 03623FBDBE9F6B422E9A5C6EAD321A58 /* HWPanModalPresenterProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 093706FD3573E105CD2368D496C2DF76 /* HWPanModalPresenterProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 042D40751BD2F51FBE9FECD4707CBBE9 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D13B75999F5A8EF9D0BABA6DAF09179 /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0453019EC6578A67B82CF569EC765546 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 622B25C415B746B0A4DE004201B6C241 /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 059E13B65EC846A6B5D5F5A68D26D194 /* Pods-keyBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */; }; + 05E2B7C1DB7528A0BBEA1521BE0DBAF1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 5593F84C8F2583B27ACE6E149D4B8B0E /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 06C4E233E7977DB81A24482E69B2D7D7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 95F5264D9ED9939AE536B5201D80DB5E /* UIImage+Transform.m */; }; + 0845A6CB7AE77A99CC475BD14101FE87 /* LookinAttrType.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E3DC362C663E7C7DAB5B7DC796C5507 /* LookinAttrType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08719ABCE689ED74FE7486B1E49DAA6C /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = BE11DDB27A20A87C02AE0F91342FA9E9 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 089F3C4BAA46A37EC5763DD312771021 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 71086CB516DC09CA5D29736469412558 /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08D50C5AC969A3701B6F9137CF3A10F1 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C63EE1B9AB32B647D64489A498987B3 /* UIImage+ForceDecode.m */; }; + 09A2ACBC8CE1761652EAA20886AEFE10 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B83EEE0D453B8B01D8275D3EEBF4BF /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A7342FACEBA0077F1B06178940883DB /* HWPanModal.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EC2576F6D68ECA3E1920A896AE4E4F /* HWPanModal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0B0E6CECDF516BC83756C1D5515A725B /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7E35B5D53702D7A355AD38231170EAB /* SDAsyncBlockOperation.m */; }; + 0B449236AF25C6C11B0DE3D6D0E4A19B /* LookinEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = D85D1D9B369469B71D9FE49138927707 /* LookinEventHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0BE3B8DB6034364E7CF3AE9D01C7C0B4 /* CALayer+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = B53B6AA90E9FBFBBE4E4275DE10531D3 /* CALayer+Lookin.m */; }; + 0C79142D1349DD9A969F47A0A8AAA0CB /* Lookin_PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = C2641A163910BF7346FA6273237FDB7D /* Lookin_PTProtocol.m */; }; + 0EF10747EF2A02413E84BD5EF7C87A4B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = A4685A3F7A42EE78A5B66190A100B3C2 /* MJRefreshNormalHeader.m */; }; + 0F1D0F5DCC8C94A4C684DF846D14F436 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D10385C2D9391B809DFD74B21A570 /* SDWebImagePrefetcher.m */; }; + 0FF9F459ED16719292443A4C99B52B20 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F98986A52AAB68B64127A983F8CB7D9 /* SDImageCache.m */; }; + 10017B43AC38C3A89D7AC1376C6E7066 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FCA5CF6F4A026896316D8731B3E493F /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 104D9196010D2A8C52C0C19E9C9D52E8 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0B5D7F39DA4B830F1B68A7D9273B85E /* MBProgressHUD-dummy.m */; }; + 117F4B6F653A8DA2637C5C93B4993884 /* Peertalk.h in Headers */ = {isa = PBXBuildFile; fileRef = 141D1CCF79DF1688C14B5C5A4CACC6E0 /* Peertalk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11C929E6BFB46F981685446F26DCE605 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = FFF8ADD6067D862411385E3BFF71A8DA /* MJRefreshAutoFooter.m */; }; + 11D4DC1FCE5647EEA8484AA4A880AF8F /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B77702D1A0EF9DC4542AD40D9D3062E /* MBProgressHUD.m */; }; + 126496714AD564062A8C10787CC01B8B /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 77EBE36C10B9452DC1931AC9779D7F79 /* MJFoundation.m */; }; + 12EC136F97CCCDD8C3765925FABA52CD /* HWPanModalHeight.h in Headers */ = {isa = PBXBuildFile; fileRef = C49E916A72175489DFFC49A15E87403D /* HWPanModalHeight.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14943D0EE97A4966510A86F5C3FC66A5 /* MJExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACD4F15622D5B40EA4047FEA329658B /* MJExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14CA284AC4FF1EED75E785641EE98034 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F62EE3A88E154ADAC90DDF6BC60DFB6 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 150116E888969E8304BA3E2BB6529461 /* LookinHierarchyFile.h in Headers */ = {isa = PBXBuildFile; fileRef = D4EB28525886DCE45DC1BBE08F77BCDF /* LookinHierarchyFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15B27182B591769C57B55544260DC886 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 165F1C9CBD621828C788A3018D0426C5 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5746A23477BAEA4BBB127E9D35DF678C /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 165F1C9CBD621828C788A3018D0426C5 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5EC4E67D9695435096AE8FFF0726FA /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16D7DCB7CC985C33EEC41B371C029C84 /* SDWebImage-SDWebImage in Resources */ = {isa = PBXBuildFile; fileRef = CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */; }; - 1708C1D28B421C4AD310426D1695CE77 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C764F0D3B98816426D5D1C448686870 /* SDAnimatedImage.m */; }; - 1754DD5511A7BF462B116F70B0D4006A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A61CDBD69057C3674739778A8D7E4BE /* SDWebImageOperation.m */; }; - 1830558A4D2D63C8E76BC3136D8213F9 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F409E94556DE38FF80361104AA14B1C /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 18660FA595DBE133BB784E813A7122A8 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D08373F9471B6FE81CFE350A61D7EEC0 /* SDImageHEICCoder.m */; }; - 186B573F1BEB8A23419A02814A7741DB /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 294EA02B3DDDD7B2B6A77AAC9B06FAE2 /* MJRefreshFooter.m */; }; - 18AD90784D549657DF51BC8377DA3085 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 8759D0306E45E19CBC456FD3486DDE02 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B52E938D7999FC0CDA2AA22674948EB /* LookinAttributesGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 217542724C26BE53C452010CBD9B0823 /* LookinAttributesGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B6CE67196EE181E6B56788EFC7E00D3 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = E876347288A6DCD527E822BBFB6C5774 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1BC44E2FDD197D5210A23C9CCF1A906B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 902DE3B37054D9EE3A5EE281287AD148 /* SDWebImageCompat.m */; }; - 1C5CCB87E5B9C500F07A8244D7906295 /* LookinAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = C190447F019E6407D44584A4FDF8F21A /* LookinAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C8B70C74291A3076746C3B18781568E /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = C0E09B2B757F6365152258D76B3D2A39 /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CBA39C705DBB9802B534C4BDD3664538 /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 92EF1461B8302AC228343F85048D3888 /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = FCEC0D919F385E28169E6FC7B6EAE42C /* HWPanModalPresentationController.m */; }; - 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8AF449E5E9E00FFF6BD1DD6F39E654AC /* HWPanModalPresentableHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A5852584225D29AAB47BA31F0AC9415 /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EC3AEA15AE416A53357261B37C622BD /* LKS_TraceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EFAF27B6DC3AA50C96B99E41F9E769E4 /* LKS_TraceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1ECC5F320AEFB120081358B4FFB7442F /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = D2A792CB950AB99663B25C1BE2C0853A /* NSString+MJExtension.m */; }; - 1EDC6F899051F0E858270F7556AF2F12 /* UIVisualEffectView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = BEB8AC93A851C5DFA93D44CFAD39856D /* UIVisualEffectView+LookinServer.m */; }; - 1EDF5F5B68D4A76CE59D5B6CC7B6C469 /* LookinAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D286FE677CDEE60930A656882947FD7 /* LookinAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FD36A180D43C773D95D8E5BF719494C /* LookinDisplayItemDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = AF44575A66631B8B3E9F4F79EAF68A2D /* LookinDisplayItemDetail.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FDEA3FFA45F29C1331723E9579D66A5 /* LookinAutoLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = A4846194BA854C70246DB41D70440D2B /* LookinAutoLayoutConstraint.m */; }; - 2055774CD703B52DABFB1CC588394A94 /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 317BBB3797CCCBC8D9201446D3C35C11 /* MJExtension-dummy.m */; }; - 20D618EF3EA5E3BE96DA24D36E3CA9EF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 07B9FDD5A40301D416EBF36F170E33FC /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 20E738E52B4712385489A62374C74C7F /* Lookin_PTUSBHub.m in Sources */ = {isa = PBXBuildFile; fileRef = 2259A09BA5C4F4B9CD4809BBD03235D0 /* Lookin_PTUSBHub.m */; }; - 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FA20784164A5FF07C29C2829918C6B8 /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EE35BE199AAA2D6723052ADC7573E04 /* UIViewController+LayoutHelper.m */; }; - 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B985DB20BDEDC3C065B3A50F078016B /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2460C08042AF8B7D0492A062F755986E /* NSString+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = AC56B56B105B16D1EF0458AD870F4405 /* NSString+Lookin.m */; }; - 24E8E4ED0B5D988E3346E6638619F4E4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = FED67045FD441EBB05D6A0040A0A1D7B /* SDImageFrame.m */; }; - 24E963C1D6245F98BAC8A0ACCB7DE987 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = C0E3D0083F73A4B9E51802D71E12B6D5 /* NSBundle+MJRefresh.m */; }; + 1708C1D28B421C4AD310426D1695CE77 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = F24C826B62D5E083C9293F7721C463C2 /* SDAnimatedImage.m */; }; + 1754DD5511A7BF462B116F70B0D4006A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E41E643057B645A4E6C5FEA5E52213CB /* SDWebImageOperation.m */; }; + 1830558A4D2D63C8E76BC3136D8213F9 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 67D554550B250775795416CCAF8BD370 /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 18660FA595DBE133BB784E813A7122A8 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7859E48715647D45C428FB82F31DB2BA /* SDImageHEICCoder.m */; }; + 186B573F1BEB8A23419A02814A7741DB /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 65EE0AA02CCB84E9D0C6987A57196DE0 /* MJRefreshFooter.m */; }; + 18AD90784D549657DF51BC8377DA3085 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = FB689A278C80C26E3B3E80EDA3887106 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 18CDCA86F129B7251D21E8F3FF8656B9 /* LSTTimer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F9F21BFD087BDB0FF37B51B916F0A3DC /* LSTTimer-dummy.m */; }; + 1B52E938D7999FC0CDA2AA22674948EB /* LookinAttributesGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AA6F90EC76FE7C2ACDF3266FD792D7A /* LookinAttributesGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B6CE67196EE181E6B56788EFC7E00D3 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C99A570F5F1154C55309832EC47D0D /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1BC44E2FDD197D5210A23C9CCF1A906B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = BF559CBB24F4A49720F72A32ADDCCFE2 /* SDWebImageCompat.m */; }; + 1C5CCB87E5B9C500F07A8244D7906295 /* LookinAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CA040E4FC9E6D5254278E66354DE0995 /* LookinAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C8B70C74291A3076746C3B18781568E /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 79B0D13A04128B711BB3AFF0676EC3D0 /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E03AEFAD237B8966FCFA45B3312FEE7 /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE44CAA3E728CD13C43CF7D34627D80 /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7586CB0CDC6CAF19F6A64083B6C8C0F /* HWPanModalPresentationController.m */; }; + 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A664809217C1D10A7EC649E972D6AB /* HWPanModalPresentableHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B6CB7D56E64BDB8EB50D17E5CEC7C8F /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EC3AEA15AE416A53357261B37C622BD /* LKS_TraceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A75ADFE775EE09236D1DF5672ACB9A4C /* LKS_TraceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1ECC5F320AEFB120081358B4FFB7442F /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = F72D861CBD81CE860AF0AE80BBE0D883 /* NSString+MJExtension.m */; }; + 1EDC6F899051F0E858270F7556AF2F12 /* UIVisualEffectView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 80E15D4BAC4857AD45CC8CDC40384F0F /* UIVisualEffectView+LookinServer.m */; }; + 1EDF5F5B68D4A76CE59D5B6CC7B6C469 /* LookinAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 074925B1189A88BAA6297431490B8041 /* LookinAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FD36A180D43C773D95D8E5BF719494C /* LookinDisplayItemDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = FADEEDA2729187D0D3E4FF58DCAE4F5E /* LookinDisplayItemDetail.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FDEA3FFA45F29C1331723E9579D66A5 /* LookinAutoLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 0175DE132412321B3302CBE48CE0F712 /* LookinAutoLayoutConstraint.m */; }; + 2055774CD703B52DABFB1CC588394A94 /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F7A5B6B4FC335FF159BAE91EDDEC3320 /* MJExtension-dummy.m */; }; + 20D618EF3EA5E3BE96DA24D36E3CA9EF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 776331A7467F397FCD02F62B233A6E93 /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 20E738E52B4712385489A62374C74C7F /* Lookin_PTUSBHub.m in Sources */ = {isa = PBXBuildFile; fileRef = 899D158EA21A86AFAE75EACD2CFC106B /* Lookin_PTUSBHub.m */; }; + 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EE2F8245BCEBA174A7A8891FBE03ECB /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0041D895443AAAA3D1BCD4056EBB4F37 /* UIViewController+LayoutHelper.m */; }; + 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B099323376948696DA373792CC4983D /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2460C08042AF8B7D0492A062F755986E /* NSString+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 4610142EAB51ECDD8FC137942A59F231 /* NSString+Lookin.m */; }; + 24E8E4ED0B5D988E3346E6638619F4E4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = A8A5F422D3A80975E78C20D9980BBAE7 /* SDImageFrame.m */; }; + 24E963C1D6245F98BAC8A0ACCB7DE987 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = AB93341F4852834DE8BA29DAB3E69371 /* NSBundle+MJRefresh.m */; }; 2567FE276DB76481DEFC7DDFE7D775CC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 261C31F4038EC00D5961218C97905E21 /* LookinConnectionResponseAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F1F4A5570DD3146B2E2BD55F75D53BF /* LookinConnectionResponseAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 27212D06F5EDE3BB10264D93075B2275 /* LookinDashboardBlueprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 185D7C79C92B324E08CCA23E8410B9BB /* LookinDashboardBlueprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2759D8D4FCE58812ADECB348E369C6F0 /* LKS_MultiplatformAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DB2D3B9B39A830458FD28DCEC306D8E /* LKS_MultiplatformAdapter.m */; }; - 27CC45A4ABE5B40723D35310D05CD146 /* LKS_EventHandlerMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B6B370AE543A3A33C4D570C3B8366E3 /* LKS_EventHandlerMaker.m */; }; - 288CD3416B265CAC1300D7938167AE66 /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 145C211EEEAD63D4C0AE8467C821D14F /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 288D796F3F7B9F42690E24A3B1018B2C /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 931F2EC345E0B4F7BD3F617F883DF4E2 /* SDImageIOAnimatedCoder.m */; }; - 28BA9702905AA2B4C1E9E4878032D4E4 /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 87404200573C5C261B9C829573DF05E9 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 29F7F0E98FD26A96364DBACD7D5F237A /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 492F2C7BD5804A777BF8699BEBDE9706 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2A24F241D7D74FF6DEA953F9DD49391C /* LKS_EventHandlerMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 954815F2E3C8D1F819EF2344830A2160 /* LKS_EventHandlerMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2CDC7B9EAD356E35FEAF526EEA6A8E91 /* LookinWeakContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 66F3FF05384C9441A8FAFFE1E267822E /* LookinWeakContainer.m */; }; - 2D0E2E3CDCB12399497B4F31D4C20E3E /* HWShoppingCartPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 62F129163AC40C289B2AEA5C7DEBE679 /* HWShoppingCartPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2DC44A09A6C9D6DC7D1BDA2DFCF99EE3 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = C247A1884F6D32D3F8E2A80759806E33 /* MJRefreshConfig.m */; }; - 2DDA5F044BC698BC5D48A7CFDDBF71E3 /* LookinAttributeModification.m in Sources */ = {isa = PBXBuildFile; fileRef = B08DC7A1A58E4347C875EE7C77258D67 /* LookinAttributeModification.m */; }; - 2DDD48230ED9E8068C7E439D79B99A8E /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8705B9A2A16D5B2796A9B11E1C3D074C /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2E86A7C77E43AEA4697979F1F848E68D /* LKS_RequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E58431618F9B14FA189C6C896394334D /* LKS_RequestHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EC1750C894F036194B90CFD26072B0C /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 172CDF64113E561EE805F3B18B58DE98 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EFF1EFA2FF0D2F1AE44A9DDBB932425 /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = C07FA22445AE442F8F429DC97AD5226D /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2F6D9BEA582A2DBB70A6C3B2FC2DB91E /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = FACA69FE6DA578D469CD1F044903A1FD /* SDWebImageDownloaderResponseModifier.m */; }; - 2FF9F5DCB10C6393065EB61DB7441155 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 62640F732378D5BF961D278A8E714FEC /* PrivacyInfo.xcprivacy */; }; - 3127F22BF0A5465D472669272D586BDC /* HWPanModalIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 35F4A1DCA414FF4A5C14BDB494A4BCE4 /* HWPanModalIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3187FF0C251D1B78BE87F64F6F6E944A /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = CEED0C5BB9E7BD10174D1CAE5F34FE15 /* SDWebImageTransition.m */; }; - 31DC2EC78AD1F8241AE6051EF9E73B0A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = BF63871F7CF3667516551ED65E16445F /* SDWebImageDefine.m */; }; - 320DE42AF3CFE11FF785FEB1A7E6547B /* SDImageFramePool.m in Sources */ = {isa = PBXBuildFile; fileRef = D62C4FB56F8536A4E96AFCADDF2C0945 /* SDImageFramePool.m */; }; - 321F87DA34863DC5C977323BAEDB2B55 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B07F3D2B3B3299BF5A32A4ED4D06683 /* NSObject+MJCoding.m */; }; - 325CA20B9271F3E008234E1518B79061 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F30BDD15914FC15F21B063466E4635E6 /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 261C31F4038EC00D5961218C97905E21 /* LookinConnectionResponseAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = BAD931CF8729677FC0BD6248B49E6631 /* LookinConnectionResponseAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 27212D06F5EDE3BB10264D93075B2275 /* LookinDashboardBlueprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 140B9E97F5B5BEB056AA3A4DFFA9891B /* LookinDashboardBlueprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2759D8D4FCE58812ADECB348E369C6F0 /* LKS_MultiplatformAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = E78C9A636C9E4C5CFBDECBA5127AF367 /* LKS_MultiplatformAdapter.m */; }; + 27CC45A4ABE5B40723D35310D05CD146 /* LKS_EventHandlerMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = BFD36E41E270B32316CAE346D73B1BB4 /* LKS_EventHandlerMaker.m */; }; + 288CD3416B265CAC1300D7938167AE66 /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = A73F313A18713E36B251C92C66806CE8 /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 288D796F3F7B9F42690E24A3B1018B2C /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 741B32704926AB941D9209B2D37E2B8F /* SDImageIOAnimatedCoder.m */; }; + 28BA9702905AA2B4C1E9E4878032D4E4 /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = AE979EFDEE516846488B7EE0D6F7EED8 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 29F7F0E98FD26A96364DBACD7D5F237A /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = D1995E5A7C78EB3AC4764F06A4A7E676 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2A24F241D7D74FF6DEA953F9DD49391C /* LKS_EventHandlerMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = E19751E7E128A05C5F94C54CB5222006 /* LKS_EventHandlerMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2CDC7B9EAD356E35FEAF526EEA6A8E91 /* LookinWeakContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = ACDFCFE3242922DD1C6F9C0911E0A56B /* LookinWeakContainer.m */; }; + 2D0E2E3CDCB12399497B4F31D4C20E3E /* HWShoppingCartPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = D9879EAF15EB971D024F6726C4E07562 /* HWShoppingCartPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2DC44A09A6C9D6DC7D1BDA2DFCF99EE3 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = EF96CCDE1944CF562A65CA60FCBAD8CC /* MJRefreshConfig.m */; }; + 2DDA5F044BC698BC5D48A7CFDDBF71E3 /* LookinAttributeModification.m in Sources */ = {isa = PBXBuildFile; fileRef = 624CC6F33BF93A1458307F73823C3E10 /* LookinAttributeModification.m */; }; + 2DDD48230ED9E8068C7E439D79B99A8E /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8204B00622081F3C51B1FC2D83A2D0D0 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2E86A7C77E43AEA4697979F1F848E68D /* LKS_RequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AE403DA6C5955C67D130890FCA703778 /* LKS_RequestHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EC1750C894F036194B90CFD26072B0C /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D1A874AEEF141E292D730F9161627B04 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EFF1EFA2FF0D2F1AE44A9DDBB932425 /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AD771C5136CD5549FAE44B9E4C2DFD2 /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2F6D9BEA582A2DBB70A6C3B2FC2DB91E /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = FB095F0736BB4D6DAB423B110675CCD9 /* SDWebImageDownloaderResponseModifier.m */; }; + 3111CEA93C868CA68CBD351C934FEB80 /* LSTPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 80A4C5F30966DCCAF12719455CE5BA94 /* LSTPopView.m */; }; + 3127F22BF0A5465D472669272D586BDC /* HWPanModalIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = BF679003FB79C12E8A8221EC19044EC3 /* HWPanModalIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3187FF0C251D1B78BE87F64F6F6E944A /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = C930EDADB5661C1F591CA4E0A60BCA26 /* SDWebImageTransition.m */; }; + 31DC2EC78AD1F8241AE6051EF9E73B0A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BAFAB49E37FE01E69DA8AF02F372885 /* SDWebImageDefine.m */; }; + 320DE42AF3CFE11FF785FEB1A7E6547B /* SDImageFramePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F01F027ADEF8C49A4605D787E41BD1C /* SDImageFramePool.m */; }; + 321F87DA34863DC5C977323BAEDB2B55 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = BE0B0E1A9A292EDE11246C6685B3FF8A /* NSObject+MJCoding.m */; }; + 325CA20B9271F3E008234E1518B79061 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 63277FA9AFB139990459DF6C57B238F5 /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 327BA3DDA513422E632D3DA4A8FC60EC /* MJRefresh-MJRefresh.Privacy in Resources */ = {isa = PBXBuildFile; fileRef = 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */; }; - 32ACEDCEBE0507A82D6323114A1C74F1 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 115D9A38E828733E2521BA1DFE025D50 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32F2B91621A2F8F9AD7C8E2B224D73F6 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = D51913F3FF9E3373AE2497E7D98225CF /* SDWebImageDownloaderDecryptor.m */; }; - 32FF240AE9443A1D2CFE27F50B55F591 /* LKS_MultiplatformAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 652780DECBCF733E1CBAA8309FADE953 /* LKS_MultiplatformAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 332F2099D726E75CEFAF1F734104A066 /* LookinWeakContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 40D9E69F0A1E9D4219601AFE0D6257DD /* LookinWeakContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3331A013D48A5063B483A51B7E9068ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 913734C0E85A7287F025E327629CA7FC /* AFURLSessionManager.m */; }; - 33D3587AF629B2FA21554DA002D6ACB8 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F70E3892FF24472DB0CDEFABFBA36F91 /* SDImageCachesManager.m */; }; - 34B28D4F0168194B6EFAC0520EB7A7F4 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = FBE9F0CF9D1C205F5B167BDFCF6C838A /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353C1D03325B8F3E65F985DA29245F18 /* UIViewController+LayoutHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 819AF2C3BB9CCBDC0A03029D56096EA4 /* UIViewController+LayoutHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35D42759A562C482EA5DF574F75CF3B8 /* NSArray+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B8E94E7EAABFAC34A3D61FF43E02355 /* NSArray+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3679603CE8336E00A0BFAA39E10A92D0 /* HWPanModalShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D7BBE0F835610A258CF510E00DC847F /* HWPanModalShadow.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36B3F095DFFC8D2AF2C0A8C523173927 /* HWPanModalContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 52AC10A81E2C53178BFD809330041A7E /* HWPanModalContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36F4B09E7C71DCC5CEC6057814033C37 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 06BB1170E7630AD9AB926EE90BE5F730 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32ACEDCEBE0507A82D6323114A1C74F1 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 817B07C3E952A5A5F2082BE15C3C500E /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32F2B91621A2F8F9AD7C8E2B224D73F6 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 3663272D41C8B58200506DDA7E7A2903 /* SDWebImageDownloaderDecryptor.m */; }; + 32FF240AE9443A1D2CFE27F50B55F591 /* LKS_MultiplatformAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 73EFE9F07FF04A733446FD7A74A02718 /* LKS_MultiplatformAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 332F2099D726E75CEFAF1F734104A066 /* LookinWeakContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = AA356D7B80B205861FCCD6FECB42DDE3 /* LookinWeakContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3331A013D48A5063B483A51B7E9068ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E95EEB52B039FDCAE4992EC84BF70332 /* AFURLSessionManager.m */; }; + 3338AA0580424EFB0FE59C3A37702A47 /* LSTTimer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6767143B7C5D00675B75D54B0AFEF /* LSTTimer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 33D3587AF629B2FA21554DA002D6ACB8 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C27FE20E006C874307EF5F2B30AA69E /* SDImageCachesManager.m */; }; + 34B28D4F0168194B6EFAC0520EB7A7F4 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EFEA57CFC8959BF5EF4B795BD808107 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 353C1D03325B8F3E65F985DA29245F18 /* UIViewController+LayoutHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F369D00927FCA59283AE71B174D2D1D /* UIViewController+LayoutHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 35D42759A562C482EA5DF574F75CF3B8 /* NSArray+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 81A6154946F38EFB8836E3145513AAE9 /* NSArray+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3679603CE8336E00A0BFAA39E10A92D0 /* HWPanModalShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 57AA794BD50692239409E574C7FD0846 /* HWPanModalShadow.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36B3F095DFFC8D2AF2C0A8C523173927 /* HWPanModalContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D51DADE6BB30185CA5DE0A026B674A /* HWPanModalContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36F4B09E7C71DCC5CEC6057814033C37 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C23E787A5997AF276176CBB988D241 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3777CD89D444CBBB48AE323B303F3FC7 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */; }; - 37B890ABDC7DD441E6AA662325D412E6 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = F4187BCD5B0BEB79E4E3553B6413AF27 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3800EA1B83FDE869FB2E4B049F519962 /* UIViewController+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F7CF2DFE487DFC9C10016B1FDAECDD95 /* UIViewController+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 381E0DBE152CA0D9C66310CB77A20A83 /* HWPanModalInteractiveAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = F825F22155AA272C7B94795CFB508AE6 /* HWPanModalInteractiveAnimator.m */; }; - 38938E604A7D708E6378A44063EF3512 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 32635BBD805EC978CC3BB3BC4CF3B7E3 /* UIImageView+WebCache.m */; }; - 392F62298E0D8C669229E132D791BBF5 /* UIImageView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 164010F68ED1F6E6A182B7EA3554A43D /* UIImageView+LookinServer.m */; }; - 3A1AD84C0DC3C256418CC46739024E96 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = FB1ACE3587FC03054A397CA0A1E76CDC /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3A2FCB914F6EADED828FF05F7E9132AE /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A2B32A1AC63C6D1AF5B5467A6CEC75F /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B1C72DC480AB19BD55B6275750D62FE /* NSSet+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = AB7963F3AA45763DF399A396845DDF33 /* NSSet+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B8EDFF69A68ABD3735E0C6931CA5C95 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B8FA55B1E865165B6CFF4ADBBDE19C4 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3BB69CB142D744367868F834912993CB /* UITextField+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = D3AD2DC617E8094624655175273C7AB8 /* UITextField+LookinServer.m */; }; - 3BD85ED8999015326D93D8EEADCCF910 /* HWPanModalPresentationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = C917ABB653A9CB7D7518FCE9F40F2F2D /* HWPanModalPresentationDelegate.m */; }; - 3C7815EEC599DD7D42FDEF19B2FF1563 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 269EFD14AB222FEFEC686C63F58F74FF /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C7EAECB8C573E714C818BA04EB33773 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 9AB541F4715AB2A0DE59B23A5696D448 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C8F2F868D0C361CAF43E53CDB8EB631 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D55CD73335546425BAD6A91CB9C4CE4 /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3CA9E838F014DC32CFCF6AD36F5D7E58 /* HWPanModalInteractiveAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 87FB553A3CC72081333DBA02B2136CF8 /* HWPanModalInteractiveAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3D0BBFEC1921CE71BC240DC18D8BE540 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = B78E312E7E63BF84B4DD4072BAB4A551 /* SDImageTransformer.m */; }; - 3E3D09700A62280A9EB8D65B97335ED8 /* LKS_CustomDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BF7200D05201E490C12951549D2240D /* LKS_CustomDisplayItemsMaker.m */; }; - 3FF7252DD60182221BB1E5A167C41A07 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B52C0333B4CADD3A0F9EB411374E73E /* UIProgressView+AFNetworking.m */; }; - 40AD5D0AB3ABF7F3A5A4A98BC5B84419 /* LookinAttributesSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 54C035FC92D730EBEC46CF8E21ADFF7F /* LookinAttributesSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 416DA8B2997381F954DBA6E6A53DA4A2 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 3B28468BF62D31A9D25D492AAF6D25B0 /* NSData+ImageContentType.m */; }; - 41A4AAE7E6024E7AAB83DD22FB42D34D /* UIColor+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CB57DCB4F28061C4A199F8768E4F7C7 /* UIColor+LookinServer.m */; }; - 425C9EA28FBEB7F7FC09A3F4A88C5955 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = E68A775E5721AFBDB649BB9442D57178 /* SDWebImageError.m */; }; - 4334CCEA5B7EA16A4EF26702D287CB07 /* UIScrollView+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = E634ACC2034218ADC26B5D4109F49AA9 /* UIScrollView+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 442F468E261A1106C291BF52BDBF9DB7 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = DDF616B9EC8DE21E9AA84880DC51A9CA /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 447BBB1BCA8E0F2D23634888BED6DA81 /* LookinDashboardBlueprint.m in Sources */ = {isa = PBXBuildFile; fileRef = C078A2E8B42103FA232855A1D6A0D7F7 /* LookinDashboardBlueprint.m */; }; - 44CD842019B1CEA681F820F37A30B7C4 /* SDImageFramePool.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B6F555000ECA771E3EEE30C0BCA8211 /* SDImageFramePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4503182D5F8EF2F02609862026D2D455 /* HWVisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = 40BFEDE02CC0E566BBDC5A631AF4AF85 /* HWVisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 452C940762F65B125C216F73B369F583 /* MJRefreshStateTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = E089B74E2F4B50357B63BC6069272B9D /* MJRefreshStateTrailer.m */; }; + 37B890ABDC7DD441E6AA662325D412E6 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 44DDF1AA5625A95CA1C76B7546758226 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3800EA1B83FDE869FB2E4B049F519962 /* UIViewController+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D72EC9997A8CA1698A3020135CE8BC2E /* UIViewController+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 381E0DBE152CA0D9C66310CB77A20A83 /* HWPanModalInteractiveAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 31F540B1617ECFBBE3A0FB1043BFB861 /* HWPanModalInteractiveAnimator.m */; }; + 38938E604A7D708E6378A44063EF3512 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1FC58856D64F439A2DB39A5CBEAF01 /* UIImageView+WebCache.m */; }; + 392F62298E0D8C669229E132D791BBF5 /* UIImageView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 98AC0F8649D533FEA089C0D7C8018ABC /* UIImageView+LookinServer.m */; }; + 3A1AD84C0DC3C256418CC46739024E96 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5A2383372F42B2452808A886E02C6B /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3A2FCB914F6EADED828FF05F7E9132AE /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = FC070F9BCE8A8D0A21448F82A7DD5F5A /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B1C72DC480AB19BD55B6275750D62FE /* NSSet+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CD0546B82DCACC9EF9FE9B72325B901 /* NSSet+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B8EDFF69A68ABD3735E0C6931CA5C95 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 595622377DEA1856384D2D262C52C73F /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BB69CB142D744367868F834912993CB /* UITextField+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 27339E9CA8A7C6DC7F3E8B828C3D0038 /* UITextField+LookinServer.m */; }; + 3BD85ED8999015326D93D8EEADCCF910 /* HWPanModalPresentationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D1699A762F8D719D2565E3B0B508554 /* HWPanModalPresentationDelegate.m */; }; + 3C7815EEC599DD7D42FDEF19B2FF1563 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E20B7CDAEE04E340BBA081726D5AC /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C7EAECB8C573E714C818BA04EB33773 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 88C23FF116C3257A27A26A897D5AE6DB /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C8F2F868D0C361CAF43E53CDB8EB631 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = C84FAFE47B2E31104A515395A5239442 /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CA9E838F014DC32CFCF6AD36F5D7E58 /* HWPanModalInteractiveAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 10A8507648AC9DE21CFA0929B1ED0404 /* HWPanModalInteractiveAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D0BBFEC1921CE71BC240DC18D8BE540 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C8222012D0B30C2E5C40B4867A1AAF /* SDImageTransformer.m */; }; + 3E3D09700A62280A9EB8D65B97335ED8 /* LKS_CustomDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = C0E2F76DB6A01DBF448BF55D94414007 /* LKS_CustomDisplayItemsMaker.m */; }; + 3E982309E295BB31C065D62750D0F1FD /* UIView+LSTPV.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C39336AE39057C3014C954C694C278F /* UIView+LSTPV.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3FF7252DD60182221BB1E5A167C41A07 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = FA56E3002035BE556C5ED858D43F49DD /* UIProgressView+AFNetworking.m */; }; + 40AD5D0AB3ABF7F3A5A4A98BC5B84419 /* LookinAttributesSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B55BC4062AFBC21B6F27CA6801F7F45 /* LookinAttributesSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 416DA8B2997381F954DBA6E6A53DA4A2 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = AE9EAD92339D5CAFE9DD672B7A3B6E7D /* NSData+ImageContentType.m */; }; + 41A4AAE7E6024E7AAB83DD22FB42D34D /* UIColor+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1998A1E21783C0F00F27637B63C88F21 /* UIColor+LookinServer.m */; }; + 425C9EA28FBEB7F7FC09A3F4A88C5955 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = 70D5B55A578973F4D162548B46979D49 /* SDWebImageError.m */; }; + 4334CCEA5B7EA16A4EF26702D287CB07 /* UIScrollView+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B6E38C872CB24F91AFE94F3DF5EFCC2 /* UIScrollView+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 442F468E261A1106C291BF52BDBF9DB7 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 29AAA748545CCD9E566E6F15C52A44CB /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 447BBB1BCA8E0F2D23634888BED6DA81 /* LookinDashboardBlueprint.m in Sources */ = {isa = PBXBuildFile; fileRef = A28F16D63BCA40F7DC78734CFE3A235D /* LookinDashboardBlueprint.m */; }; + 44CD842019B1CEA681F820F37A30B7C4 /* SDImageFramePool.h in Headers */ = {isa = PBXBuildFile; fileRef = ABF08650352052DEA4797A89BFD856FF /* SDImageFramePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4503182D5F8EF2F02609862026D2D455 /* HWVisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D7D197A108D97B04C3BA390CD4499D8 /* HWVisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 452C940762F65B125C216F73B369F583 /* MJRefreshStateTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = E5BBE1866B6FDB7D5307A6075BE5F347 /* MJRefreshStateTrailer.m */; }; 4571A0EA37DC84F39E3830D38A1531AB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - 45E1583D7EF53489B82C4CA2AD1AD0CF /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7EABFACBAFD45BC8FA955F5004A0F3F6 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 464A0100327C8531D86BDC31737CCF75 /* LookinAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = D66A82F8BDB185549FF0B573D7E52F8B /* LookinAppInfo.m */; }; - 4688743B7B845309486559EB7BD5D147 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 6470D20217BE1E46F63251367F8A9EB0 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 475B4F3E71C293065AAFDB1888696CF6 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 4199B5EF9E6D97F0A19FE7422D28A2C6 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 48916DE9521F627589300512ECC2D4A5 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 0746C9ECCE5759599C9E24C14B8E12DA /* NSButton+WebCache.m */; }; - 4A15ABB502D625EBE3E63100664AB822 /* LookinCodingValueType.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E9B018C9C3042CA28F92204D9CA3368 /* LookinCodingValueType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 45E1583D7EF53489B82C4CA2AD1AD0CF /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2288D70D4609F065E784F156F613AB62 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 464A0100327C8531D86BDC31737CCF75 /* LookinAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D832408A734647A9D2C62473FE11EFB /* LookinAppInfo.m */; }; + 4688743B7B845309486559EB7BD5D147 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E376CA03D27B523F7F180B9EC99BD7C /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 475B4F3E71C293065AAFDB1888696CF6 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = F47E18ADFFC71918AE70F42C18C32A89 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 48916DE9521F627589300512ECC2D4A5 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DEA09040DACD7A53B041773DD59096FC /* NSButton+WebCache.m */; }; + 4A15ABB502D625EBE3E63100664AB822 /* LookinCodingValueType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DCD76BA1FFEFDEEE2F9331ECD0796D4 /* LookinCodingValueType.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4A2D7878579537881DD3859B3359F702 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */; }; - 4ACC15DF96D179E48E4276AE3C540C7C /* KeyValueObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = A97B23EA4BC5A09E3AB9062612C11DE8 /* KeyValueObserver.m */; }; - 4B2C2AE16AE3DDA7417AFCF7952588F1 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AFF73BDD48D8B44AFC6A61B1B0B3B57B /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4D2C79AB2D24CFEC864F08D913CE7692 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A1A68076B57D7DD2B4FCC592ECD4E990 /* SDImageCodersManager.m */; }; - 4DA2C6099343CD55160ECB3EBDDFE1DF /* NSObject+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = DF5F6CA83FCCE26A8EBAB9D62A793D12 /* NSObject+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DCA75BFE1558CE59DFC56607E49B3D2 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D16809394CD346845FFB0C9977242B2 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = F39EC289147F8732DE9E200AEBD42C99 /* HWPanModalContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C10DDC7CAD74F9FB6286DBA8F45E0A9 /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 41BB24C7B81FDF4942C58FB649399EB7 /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = A12EE00E77DE8A43E7CE64F69D345190 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50096BAC0F3270FB111E76D32714E579 /* Image+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = C5F9910D6ED5B2A16EE7819D62912F64 /* Image+Lookin.m */; }; - 506FC58999564A737C745F2590E9B4D5 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 80F7F70AB42196BE2ECAE3F75289F5CC /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5106193FDEA44A08AAAAB9B8A227CBE9 /* HWPanModalPanGestureDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 944C193267D20C3EDAC9F40BC95BA365 /* HWPanModalPanGestureDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5111A0A0934551CD2B9DDB1A1CA79FA7 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = E59399382497BDA8D62E5C39784B00B5 /* SDAnimatedImageRep.m */; }; - 512B9661FC34235E0EEB3A6D3E319B88 /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = C02274A03EA3977CCD31F6436223F923 /* MJPropertyType.m */; }; - 5163FC6D715F6881B1FA1AB13DCEF870 /* UICollectionViewLayout+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 2867F87918EED9920AE77DAD4BD451AB /* UICollectionViewLayout+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5174DD2019966DFDC21B8864453ED3DE /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BA81BE20AFB7AAED21EEC5D091FF489 /* NSObject+MJClass.m */; }; - 523235228A1C021C67F2E3776A922DC5 /* MJRefreshTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = D1B006E7B08941CF8A2C5843A8B9C99A /* MJRefreshTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 526485EF6D2B62B24DB59122FB94BD42 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = A0641CF016316B36ABD820BBE52AD19F /* SDDeviceHelper.m */; }; - 5308E660E723C11E7691D311FD59C459 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 59E5B7C96027CDC6B5D70E2AD9AC0EFD /* SDDisplayLink.m */; }; - 53433003112C4FE271EC985803862B61 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 1657973127018C3379A034BF182EF686 /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 53C1722650FCAB2637867D0DC31FC3CB /* Lookin_PTUSBHub.h in Headers */ = {isa = PBXBuildFile; fileRef = 0AB04D07CCC6BB644C691A1B75189B56 /* Lookin_PTUSBHub.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 541AD3B0F5EA216EE730ECC6E8B84C31 /* HWPanModalPresentationAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 3DF0E590DEA8DD03BE15CBF72CDCBE8B /* HWPanModalPresentationAnimator.m */; }; - 5490C03887ACF6C4EAC25ADFBB509CE5 /* NSSet+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E4761AF00D5D97F0E6876C0F021A970 /* NSSet+Lookin.m */; }; - 54E268C32915CF908E7AA776909B45EB /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A121A2B21BED90763E2301622A040E4 /* MJRefreshConst.m */; }; - 55F7C7F055A18044497F8C88CAE34118 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C0C71B23FD64F957CD7F6E8EBE92F99 /* SDImageCachesManagerOperation.m */; }; - 561420A20DC0A84258A902E9EB69A15A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 04473A3692FBECA15A32A1C477843F8E /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 564714D075CF51356D3D8437846AA6EB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 1AF87BA87F8CBB4575826A086C4B0871 /* AFURLRequestSerialization.m */; }; - 56D8A7EAE4D72FF6C23421CAB6F21504 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = 72E3A740C48B1DF278C345CEB59A5C99 /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56E800EB3B2BE8AE0BA45A30974D7920 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 105C0E572020BAFC2F3F07702779A020 /* Masonry-dummy.m */; }; - 56F1B543BC54204336CB5E50B60F719F /* Color+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FB6D9FCFB10D58A02282FBABE87FB43 /* Color+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5735091665AC18FAD028EB68786A85AE /* LKS_CustomAttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = DB34B51460BF162B997045D2CF3D0488 /* LKS_CustomAttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 58F7CE37BB4CB3BE806B68A502E6E1A7 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 6013BED1D4465B355233E90F5236D454 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 596180E0EC9F46D12BA840DC4AA62659 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F23B5AA329AF2C38E62E7CBE5F5D136 /* UIImage+MemoryCacheCost.m */; }; - 597E390C0BBB75B8045B651C487C2034 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BE8047ED813191B4BC46FA8C5334ABC /* SDImageAWebPCoder.m */; }; - 5A6D3BE92C77ED70C397567996DFAEB9 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CE31F60CA05A2FFF39BB47897CB17219 /* AFHTTPSessionManager.m */; }; - 5A8BC91257FF6B36237BF09A7A6EADF6 /* LookinObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 68F6F33E73474357B9E7885C4414C917 /* LookinObject.m */; }; - 5AF22814CD055B553AD9D78BE54B94E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = A137B039D2A317E540FA6772AEB9D840 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5B08596E856E4CC2F34A8A2372F9F764 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EC3BDE6337E9995ACF80D1DE71F506A /* NSArray+MASAdditions.m */; }; - 5BB6B99986FD7111B3AEBE931C7F507B /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = D74882C4484074AC8872B2A5E438246B /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5BD5D9B8F61C124A62C75D9AC36A07BD /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = AE579277DE642E9E1019F6392CE1755F /* MJRefreshTrailer.m */; }; - 5C8279C226EB028B044C5A0F4AC5A91A /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 07A233E548536FE36D9750CB427DC711 /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5D0DEC179A7B4143769C663082E2662A /* LKS_ExportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = C0FC0E2910D71C68F70A7CBBD2130D87 /* LKS_ExportManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DCBA14510E091D6A1CE499B08B794B5 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 3353CA39B2D60213971EFFABDAE02625 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DFCBADAC7D0FAC82C84A6C8E7BF1DA6 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = CDBA0F660CF6947CF53C5863681817AB /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E10328A83E05D0015D7459FAAEF121D /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 58623A3EED3B4D5125F83B78B865E033 /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E3FCC0716521D80D2E6419CD0EB5A98 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 5F45735DF355530CC955066D3C007E19 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = DBC5FB408D1CC34D172A8CECF2AE6860 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F5426608460A8B17C1AE5C2351BAA19 /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 3FB5EB648C2339F0632D8DD464412282 /* UIScrollView+EmptyDataSet.m */; }; - 5FDC4239F7B651092BF582D0F460BAD4 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = D3C9A4D4BA6E0F5E50F5993BD82CF6E6 /* UIView+MJExtension.m */; }; - 6002CB94684D7C786700D2A294146AEC /* Color+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F3CFDDCD2AEFF399B69D429BD035229 /* Color+Lookin.m */; }; - 61461B0D9D7B81C3F8D24066D9A19DCE /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C7C888B99007AD057195C9956BE40388 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61507E402F1F7C58BF119995A0479A22 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 737E319C87B4A4FA348810E15675B757 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 616A8338C42FB01748DF1BDDA944858D /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B72774F6480A029A3A2441E9DF82096D /* UIView+WebCache.m */; }; - 61857C821395B868C65A8FFE4DA1B4E3 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 5FE7A440D01806C72477C1AA0213B946 /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61EAFBCDC83B2C603918B3C9D9A73A18 /* LookinConnectionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = A1502F82ADC41A5C2CBCFBB8BE2DBA1E /* LookinConnectionAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 62FE895DF9D65A2955A275D909ECBE18 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED817696CA9C5336FFC07568FC62502 /* SDAnimatedImageView.m */; }; - 6525ECE1CAFC1259F9E6E5FDDE6CF218 /* UIVisualEffectView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F03C6F51BDA9A5E5F9395D9F199C54FF /* UIVisualEffectView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4ACC15DF96D179E48E4276AE3C540C7C /* KeyValueObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 05E1785189AB18B6B47ECD584144AA0F /* KeyValueObserver.m */; }; + 4B2C2AE16AE3DDA7417AFCF7952588F1 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 84DD851B5FDE16625FA07D9C4D1622E4 /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4D2C79AB2D24CFEC864F08D913CE7692 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A9184E6EEBE4764FF941193DF28C44D /* SDImageCodersManager.m */; }; + 4DA2C6099343CD55160ECB3EBDDFE1DF /* NSObject+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 64BE9723ECB5FEB2D176E2AB31482F57 /* NSObject+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DCA75BFE1558CE59DFC56607E49B3D2 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 62C98AF2DC89D542692AC64CD9F01818 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E5F47A6ED542F1D0EAA4DD94091B61C /* HWPanModalContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DE8A481697088E8BBAEB51042F14ABE /* LSTTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CC6285CEC9BC9D5CBF28149790EF660 /* LSTTimer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E3EF6841A6A45FD5C11031ED861CFF06 /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C55508E3B8FCF1A927848A4CFAA53D0 /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = E6EDBB7EFC23401D50E3438EB3430A58 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50096BAC0F3270FB111E76D32714E579 /* Image+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = CDEC5449CBECD6C324B9864AD284EC55 /* Image+Lookin.m */; }; + 506FC58999564A737C745F2590E9B4D5 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 981BA7AE91A568EC43916303978CE501 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5106193FDEA44A08AAAAB9B8A227CBE9 /* HWPanModalPanGestureDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DE26DBA97E2F7B5B4805533E6C020C30 /* HWPanModalPanGestureDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5109F520B2E1FF2F30F9DDF5E584E028 /* Pods-keyBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5111A0A0934551CD2B9DDB1A1CA79FA7 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = AB547BD41867170F26173D27CE44DCE6 /* SDAnimatedImageRep.m */; }; + 512B9661FC34235E0EEB3A6D3E319B88 /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D9EC3F78C9EBFBAA2A4A0F3EE3D27AB /* MJPropertyType.m */; }; + 5163FC6D715F6881B1FA1AB13DCEF870 /* UICollectionViewLayout+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A350736EF0F4C89A3E43AA0BED8AC36 /* UICollectionViewLayout+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5174DD2019966DFDC21B8864453ED3DE /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = E1732483C75B01353EF9D04684480EE4 /* NSObject+MJClass.m */; }; + 523235228A1C021C67F2E3776A922DC5 /* MJRefreshTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = F8A410A1A4222EF3876A4FA11492EF05 /* MJRefreshTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 526485EF6D2B62B24DB59122FB94BD42 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 343301F4ECFA1778F70E1EC266C1848F /* SDDeviceHelper.m */; }; + 5308E660E723C11E7691D311FD59C459 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 110C7A39306E93E5D29F1709FE16720F /* SDDisplayLink.m */; }; + 53433003112C4FE271EC985803862B61 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 662D6F244CE3008639589EE4EA829B53 /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 53C1722650FCAB2637867D0DC31FC3CB /* Lookin_PTUSBHub.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F886C315967D7AADA95C37B717FE5A2 /* Lookin_PTUSBHub.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 541AD3B0F5EA216EE730ECC6E8B84C31 /* HWPanModalPresentationAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0004D14E99E5CD92EA09732F82694FF5 /* HWPanModalPresentationAnimator.m */; }; + 5490C03887ACF6C4EAC25ADFBB509CE5 /* NSSet+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EA132DBE319D046C6BEFA0C4AB4940 /* NSSet+Lookin.m */; }; + 54E268C32915CF908E7AA776909B45EB /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = E114D2723BCB64ADA9A307B95F5DE640 /* MJRefreshConst.m */; }; + 55F7C7F055A18044497F8C88CAE34118 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 315C5770DCC0584893C24972BAEDEB39 /* SDImageCachesManagerOperation.m */; }; + 561420A20DC0A84258A902E9EB69A15A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A20F0D257E58B1A870FF109778CD4B25 /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 564714D075CF51356D3D8437846AA6EB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = F68CF910ED994D45AAA3B5E5FABB6835 /* AFURLRequestSerialization.m */; }; + 56D8A7EAE4D72FF6C23421CAB6F21504 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = C02050360407C95F57A46E3425089760 /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56E800EB3B2BE8AE0BA45A30974D7920 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A89B114742BBA3282DA6CDF9871F36 /* Masonry-dummy.m */; }; + 56F1B543BC54204336CB5E50B60F719F /* Color+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = C246D6EBE3F2F29765C86C55F130AD3F /* Color+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5735091665AC18FAD028EB68786A85AE /* LKS_CustomAttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = D2ADA0495E5FE9068CEDD520D7AB4D72 /* LKS_CustomAttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 58F7CE37BB4CB3BE806B68A502E6E1A7 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = CC87F6E60998716F313AD85E3F2F0C78 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 596180E0EC9F46D12BA840DC4AA62659 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F3DBAC2BF3E2D408BCB049042B8B067 /* UIImage+MemoryCacheCost.m */; }; + 597E390C0BBB75B8045B651C487C2034 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F3611B9193976C6AC5268E458B3F9F6 /* SDImageAWebPCoder.m */; }; + 5A6D3BE92C77ED70C397567996DFAEB9 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E7B3F97FDF9522DB3E4FADD3DB88700 /* AFHTTPSessionManager.m */; }; + 5A8BC91257FF6B36237BF09A7A6EADF6 /* LookinObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 683586601FF42469125B58BBB8DF2429 /* LookinObject.m */; }; + 5AF22814CD055B553AD9D78BE54B94E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7F2EDBF237046CD345C29806E0A756 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B08596E856E4CC2F34A8A2372F9F764 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = FD16DAAD0E6C1AF6207145BC463DF81D /* NSArray+MASAdditions.m */; }; + 5BB6B99986FD7111B3AEBE931C7F507B /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C53F73CEF747A7A78B5CACAF16E5FCE /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BD5D9B8F61C124A62C75D9AC36A07BD /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 53CC6A09F682C54055F6035F0D6E29FA /* MJRefreshTrailer.m */; }; + 5C8279C226EB028B044C5A0F4AC5A91A /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F61547B42B4881FB5D37EF93F1C324C /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5D0DEC179A7B4143769C663082E2662A /* LKS_ExportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A12BDC5E6446CAD91BA1C47C211ED2E /* LKS_ExportManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DCBA14510E091D6A1CE499B08B794B5 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BE50AD720E95B8938AAE668F71561B7 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DFCBADAC7D0FAC82C84A6C8E7BF1DA6 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5909B734EE0396CAA42A403A6DCD4D27 /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E10328A83E05D0015D7459FAAEF121D /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 387AF8AF8500E50CC311582863B31CFF /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F45735DF355530CC955066D3C007E19 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A03E64C6033C8C1C7D8822CDE785EEB /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F5426608460A8B17C1AE5C2351BAA19 /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AB2A681F27544128FA8BFDF04B2B4BB /* UIScrollView+EmptyDataSet.m */; }; + 5FDC4239F7B651092BF582D0F460BAD4 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = E0B73DB737A3D2CAAA90EA20B4BB23B3 /* UIView+MJExtension.m */; }; + 6002CB94684D7C786700D2A294146AEC /* Color+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 19D6F69255AF25D760BE89366830A6F7 /* Color+Lookin.m */; }; + 61461B0D9D7B81C3F8D24066D9A19DCE /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 81E56B3079089075E57FE56264F80F1E /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61507E402F1F7C58BF119995A0479A22 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B71D1DE227720C6548D26CB1380A595F /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 616A8338C42FB01748DF1BDDA944858D /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = AFC953B00F77A76AF38E0FA2C8AB5F03 /* UIView+WebCache.m */; }; + 61857C821395B868C65A8FFE4DA1B4E3 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D9760D282FEC09C3A5774993001829 /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61EAFBCDC83B2C603918B3C9D9A73A18 /* LookinConnectionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = DC490DD3FFABA4122C58404F7DFAD348 /* LookinConnectionAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 62FE895DF9D65A2955A275D909ECBE18 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 17FD1B21DCC89D66865655294A85A817 /* SDAnimatedImageView.m */; }; + 6525ECE1CAFC1259F9E6E5FDDE6CF218 /* UIVisualEffectView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B0036686E5E0170AC065045503F785 /* UIVisualEffectView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 659D38386A3E09422812283BF27D71D1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 67178A8153B1A2F1D0D544B8093E23C5 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = C656F7688A2DB9FEA22520878F9A2055 /* SDAnimatedImageView+WebCache.m */; }; - 676775CB29378BB6CA3CA5992E9C6A99 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 596D5BD427C685CFFE0E474F1355C0BB /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 67FCC0F9B42B1C20A66E99A3D56BED18 /* LookinStaticAsyncUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AA35B4909D9783E7A851FD1AD821334 /* LookinStaticAsyncUpdateTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 683D708C157C95ADB467BDD2230BD4E3 /* UITextField+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = CCE0180ACC796145628AC2F013D66C45 /* UITextField+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 68C3E98F8B9D6035962F29AE025DA891 /* UIImage+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F31C98ACB27D00FB2C83BBFA9C3DB2FB /* UIImage+LookinServer.m */; }; - 69345CBCB31076EBF8A2C5885AF973AB /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = F23E87D1922F53403D673679FAA023CF /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 694B8697854A776E32032999B2EF1FEA /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 38DC37E61EA03D85A44EDCFC75EB6238 /* UIImage+Metadata.m */; }; - 6960FF2C4D61A09722930B33B1C7135D /* LKS_ObjectRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = C931ABFE9D27B32AD8D6C893AD979117 /* LKS_ObjectRegistry.m */; }; - 69A06A02F52EB26259FAD1DF6B121BE1 /* SDCallbackQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 81C8A4B9A7186C1EC704A8F7181A8B4C /* SDCallbackQueue.m */; }; - 69AB6A513D5F36D7360FEF4FDA1D60D0 /* UIView+WebCacheState.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A7ED5F60A6E593BE4319E09C2FD0BE2 /* UIView+WebCacheState.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69E353C99C6EEA3C93CCF2E526460B9D /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = F1ED191A53A707D9518B3082C0464066 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69F6E66A089C40FB1063DE15499BCFDE /* LKS_Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 02BD81280735E95FA2620927041EAC86 /* LKS_Helper.m */; }; - 6A19379E3B0370EDA447743C9B1A1379 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FFBA60DA7BFD0D987C4E683037FDDB0 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6B0978C9398336656EE309E62060AEAB /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 95F6534573C96B51C375B48F710A1253 /* SDImageAssetManager.m */; }; - 6B5C3592B5E911E833D067D0BC785B1A /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = A48C905BEA42A4AA5B76B664D12914C8 /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6BC2A615678C8BAE9F34ABA68BFDEF78 /* LKS_AttrModificationPatchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A13200BEAF87753F31130AD74C5CE5B /* LKS_AttrModificationPatchHandler.m */; }; - 6C57809DCEA4B6C0CA79918A69FD75DE /* LKS_ConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 66852803923AC12381D91011BC62422E /* LKS_ConnectionManager.m */; }; - 6C85CA8D99E50C137D056B6057DAC58A /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 316C4F93113E10BD19E7CE1F7E80F60B /* UIRefreshControl+AFNetworking.m */; }; - 6CA0B4A9E7B2957063163BC673F355CD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A691E14C36224248BF2A3ECF785CAD95 /* AFAutoPurgingImageCache.m */; }; - 6CE8701D161A4BC0860FAF3951762A34 /* LookinHierarchyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 1225A7D188B98E6C6CFDCC9B804BAE8D /* LookinHierarchyFile.m */; }; - 6D637D02F5EE50D21C8548061956C898 /* UIViewController+Presentation.h in Headers */ = {isa = PBXBuildFile; fileRef = E2238DC60FAF777CC267A61F86DC909F /* UIViewController+Presentation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6DE6C7F0FA965828E4FCE687BF75FBBE /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = D78DFC477962A207938C611AE0ACA069 /* MJRefreshAutoNormalFooter.m */; }; - 6E4DE8085E69AD1DDB49B059DCE286DB /* HWBackgroundConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E1C83957751BACAB22569AE64250554 /* HWBackgroundConfig.m */; }; - 6E66305665DBCFBCF5B2480BF705D500 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C84A9BCB275444D2358F473D9B5160 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EFC0630CB2761A2B1FC47176CCD62D1 /* LookinCustomDisplayItemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = B4B06DC6899A1F01C7834AFAF5E0FFDF /* LookinCustomDisplayItemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EFEEE3AE22E97DCEC4F5A3B88F56FC7 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B25E0E8867C9D8FE8A69D2C8BD251D9 /* SDImageLoader.m */; }; - 6F3637EE643EABB1DE9212EA68649A64 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = D93DC4D1234F76EDC574EBA1402310C2 /* UIColor+SDHexString.m */; }; - 7053A9EB6335BEAC9EFDF2D5320E6E2A /* UIView+HW_Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = 33A93A838A9C0189A366EF1F2D8FC9A5 /* UIView+HW_Frame.m */; }; - 7074EA7FCC90B4967A437F5C43496828 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = D5303ED4D5AB235B98FBA4B0FDED5DF7 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 711D32EF4A9901567A488291603BF906 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = EB627434D926A06008809F0DE57949FF /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 71538A1D21015F459964BA625D5EE90A /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BC84A9FA2E5E086A3FCA8C9200491EA /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 717F76926C7BCB5B10C3037AD9239084 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = CD41EB00FCD1D9A736384800AABD1E30 /* SDImageIOCoder.m */; }; - 71BEB1D9532900291A5A24B1C038516F /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D1C2865819BCF073FD84E9A5B8816AB /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 71F2B8CBB99087F348C472230200586F /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 234CA385D849480382A37D00B41DE872 /* SDGraphicsImageRenderer.m */; }; + 67178A8153B1A2F1D0D544B8093E23C5 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CE909BA066F9B44E9C2F036FF3FD44FE /* SDAnimatedImageView+WebCache.m */; }; + 676775CB29378BB6CA3CA5992E9C6A99 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9358338FB49CFCB7417D22C85E339488 /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 67FCC0F9B42B1C20A66E99A3D56BED18 /* LookinStaticAsyncUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = F522B03B0E818BE677108EC202F41472 /* LookinStaticAsyncUpdateTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 683D708C157C95ADB467BDD2230BD4E3 /* UITextField+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 529CC0A76A69631EEA57BEAB673D76B9 /* UITextField+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 68C3E98F8B9D6035962F29AE025DA891 /* UIImage+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FC0CD1FAD2820E17CD48DE8962BA /* UIImage+LookinServer.m */; }; + 69345CBCB31076EBF8A2C5885AF973AB /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 758F54E0A75ADEC48F8924BFE16AEB3B /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694B8697854A776E32032999B2EF1FEA /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 610BD8934663142C5DDE2AF00042FD13 /* UIImage+Metadata.m */; }; + 6960FF2C4D61A09722930B33B1C7135D /* LKS_ObjectRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 20466880B35C5065EE68BED96801035F /* LKS_ObjectRegistry.m */; }; + 69A06A02F52EB26259FAD1DF6B121BE1 /* SDCallbackQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 20E25456C8490BA5725AE87E9508AF07 /* SDCallbackQueue.m */; }; + 69AB6A513D5F36D7360FEF4FDA1D60D0 /* UIView+WebCacheState.h in Headers */ = {isa = PBXBuildFile; fileRef = B354D25F9AAB5A1E64BA7AAED1BA9991 /* UIView+WebCacheState.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69E353C99C6EEA3C93CCF2E526460B9D /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C92B663B045144AB6926F9C7A3DA791 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69F6E66A089C40FB1063DE15499BCFDE /* LKS_Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = FFB946957EE60C8096CD34FFD7880091 /* LKS_Helper.m */; }; + 6A19379E3B0370EDA447743C9B1A1379 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D938D1AE315B5A7E490702D4DBEED7 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B0978C9398336656EE309E62060AEAB /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CE8561E7F90B3736EA348E5236FECB1C /* SDImageAssetManager.m */; }; + 6B5C3592B5E911E833D067D0BC785B1A /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F618581DFE1104C16FA02EB2B00F1B9 /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6BC2A615678C8BAE9F34ABA68BFDEF78 /* LKS_AttrModificationPatchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = FE4F3AC67FEAA51E07D9DCC83CAEB3D5 /* LKS_AttrModificationPatchHandler.m */; }; + 6C57809DCEA4B6C0CA79918A69FD75DE /* LKS_ConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 499DFA9F01A96B26620A744AC7C94DB7 /* LKS_ConnectionManager.m */; }; + 6C85CA8D99E50C137D056B6057DAC58A /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = A0FE1EF8C4E4226EA31F342E982E620B /* UIRefreshControl+AFNetworking.m */; }; + 6CA0B4A9E7B2957063163BC673F355CD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 352F171C72D103D96370080978C50788 /* AFAutoPurgingImageCache.m */; }; + 6CE8701D161A4BC0860FAF3951762A34 /* LookinHierarchyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A370DF72E817BB512D9A327AC45F76B /* LookinHierarchyFile.m */; }; + 6D637D02F5EE50D21C8548061956C898 /* UIViewController+Presentation.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F7C5007915361DF90A13BBA8CD3EFF /* UIViewController+Presentation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6DE6C7F0FA965828E4FCE687BF75FBBE /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 02B660DF025FBF070A8248624E25ED79 /* MJRefreshAutoNormalFooter.m */; }; + 6E4DE8085E69AD1DDB49B059DCE286DB /* HWBackgroundConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 11A5C3D2E3080F2A5EECFB7F1FC6C319 /* HWBackgroundConfig.m */; }; + 6E66305665DBCFBCF5B2480BF705D500 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 057F1DBD0EB25FF8CA833DC6F478BF32 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EFC0630CB2761A2B1FC47176CCD62D1 /* LookinCustomDisplayItemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C4451B7E17B800D4088E7182C1025D /* LookinCustomDisplayItemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EFEEE3AE22E97DCEC4F5A3B88F56FC7 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F3AD0011FB2CA087E42B18DDAD25253 /* SDImageLoader.m */; }; + 6F3637EE643EABB1DE9212EA68649A64 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F9D4F9A4CA404E7287B2F6CBFF382D1 /* UIColor+SDHexString.m */; }; + 7053A9EB6335BEAC9EFDF2D5320E6E2A /* UIView+HW_Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = 109CFCE9774385E51695E82E530412B8 /* UIView+HW_Frame.m */; }; + 7074EA7FCC90B4967A437F5C43496828 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = AD1C2B98D240951DA7BD821093E6C395 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 711D32EF4A9901567A488291603BF906 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = F6E7A6844647C14F0728CBB9EC73AF19 /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 713D162A627185DA38847832AB5BDA44 /* LSTPopView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EFF087B37DC1EFC63580C904061AC41 /* LSTPopView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 71538A1D21015F459964BA625D5EE90A /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D6996A5821977C26F6D8F02DE8CF8CD /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 717F76926C7BCB5B10C3037AD9239084 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F0F086732258C7153899AB5D8C678B02 /* SDImageIOCoder.m */; }; + 719245E09E34B28240B8144650B43701 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B647311E2487029EA920B923258697D2 /* PrivacyInfo.xcprivacy */; }; + 71BEB1D9532900291A5A24B1C038516F /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = D5D847654327E7F1E333D40CD9665067 /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 71F2B8CBB99087F348C472230200586F /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FA72F287E0DE573DD735BAE9AD7E816 /* SDGraphicsImageRenderer.m */; }; 723D1925C39764631641D0DBFDF6833B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 724991CA89C46BAFBC08264D94D86484 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = D8682D5ED4B7C56D720AFBA44BC3BC76 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7276688DEA6FB95D4DEB7F3D019C3958 /* HWPageSheetPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = C53E65DBE6C4798EE75818796AEE4D8C /* HWPageSheetPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 728107C8D8479AADE986F4EC23233DC3 /* UIScrollView+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = C46FC528BD8EF754DE7F229CABF54A73 /* UIScrollView+Helper.m */; }; - 73B19D03C7B7DF1C944544165F742D82 /* HWPanModalContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7C8E106F1C7C00CCE5C4691E7DFD2859 /* HWPanModalContainerView.m */; }; - 74ABF19BACB99F862DB62AA14508AFA0 /* LookinAttributesGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = F10A37229A6845649A237D864C061793 /* LookinAttributesGroup.m */; }; - 74C474676C69A80BEC29B0F55FDF4D19 /* UIView+WebCacheState.m in Sources */ = {isa = PBXBuildFile; fileRef = A941317B46DF5E4325D43DAC931923A5 /* UIView+WebCacheState.m */; }; - 74E069F8C9E22C0E37F261A5AB03A613 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = ECBB46360F809A2F94F7C900E07EB3E3 /* SDWebImageDownloaderConfig.m */; }; - 752822FE3F5092322D18FEC4533B79A9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 445DB8E68C4622DC598EF2623547120D /* SDWebImageDownloader.m */; }; - 75771A97B77FA30A0175A81B480F80EF /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = DF0270B966F6AC049BFD4D076AB8B56F /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76019F9FDD44B8F79261AD55C8728164 /* UIView+HW_Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 01DAF6FB6694A07703202991DBBEA497 /* UIView+HW_Frame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76C8C631DF9AC2F667369EEA0CE46522 /* HWDimmedView.h in Headers */ = {isa = PBXBuildFile; fileRef = EE48BDF616ED4BAED9CAABA06281EC92 /* HWDimmedView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 772CF8E9CD02ECA4275B6173E2110E80 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 18F1A2756FCB9AE94DFF016BE720ED41 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 724991CA89C46BAFBC08264D94D86484 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B686FCB243BCB66C7BB1F42E6A4B3417 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7276688DEA6FB95D4DEB7F3D019C3958 /* HWPageSheetPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = FF47B51E8368756DB1E42F174494224F /* HWPageSheetPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 728107C8D8479AADE986F4EC23233DC3 /* UIScrollView+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 66C0C4029B17B8E45FF492CEEBD834E3 /* UIScrollView+Helper.m */; }; + 73B19D03C7B7DF1C944544165F742D82 /* HWPanModalContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5030EF25D193EB41CCA5DF24FE48C1DF /* HWPanModalContainerView.m */; }; + 74ABF19BACB99F862DB62AA14508AFA0 /* LookinAttributesGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = C5830BBF390FC8D9CCA3C6BDBE65DD04 /* LookinAttributesGroup.m */; }; + 74C474676C69A80BEC29B0F55FDF4D19 /* UIView+WebCacheState.m in Sources */ = {isa = PBXBuildFile; fileRef = EF5BED7A35D904E495E540434D07B398 /* UIView+WebCacheState.m */; }; + 74E069F8C9E22C0E37F261A5AB03A613 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = F27AC2454398D7EA8C514D5B2F6469EF /* SDWebImageDownloaderConfig.m */; }; + 752822FE3F5092322D18FEC4533B79A9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5703D16A54AB62E92D3E21CC6E5EA55B /* SDWebImageDownloader.m */; }; + 75771A97B77FA30A0175A81B480F80EF /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D8DA2BACDEA7D78265D10D62F7A3BF7 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76019F9FDD44B8F79261AD55C8728164 /* UIView+HW_Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = C387114CB39CEE512E07F38E4439D4D8 /* UIView+HW_Frame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76C8C631DF9AC2F667369EEA0CE46522 /* HWDimmedView.h in Headers */ = {isa = PBXBuildFile; fileRef = E164F75EDECDE7B82945FA657EA41708 /* HWDimmedView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 772CF8E9CD02ECA4275B6173E2110E80 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2019C0149E4FA95B56F04C424C11298A /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7873F2F89CD0A435FAB776BC27BFB56A /* MJExtension-MJExtension in Resources */ = {isa = PBXBuildFile; fileRef = 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */; }; - 78A3C3994AFFC6A2D4970AEB6D797CE5 /* LKS_HierarchyDetailsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0702AAD171A65EE6A8D28E93A9B62802 /* LKS_HierarchyDetailsHandler.m */; }; - 7902D28FC9EF5AFEB452F508C7F266B1 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 61AF436FD61695046BC4D5C853E7CA45 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 79534562F85AA71041043B395DE14AD0 /* HWPanModalContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 121C303DCF5199C717010EF66462BD05 /* HWPanModalContentView.m */; }; - 7989A6E79BFA78440C39F568D972305C /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = CD81B3BC38825A465F08F0A7FF6B6D56 /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A4EB9ED5D4E03170FFE61FCB299687B /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = A5CA1B7FAF078CBFE367ED67421BD56D /* SDAnimatedImagePlayer.m */; }; - 7C45DBA62EE045C4922404182F6393B8 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = F12C01BF0CB50E72493E6AAC23806030 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C53FB6BBB0CBAA879F1603B0FEDB80B /* LookinAttributesSection.m in Sources */ = {isa = PBXBuildFile; fileRef = EA0DFE57597F1E609ADFB79857FE435B /* LookinAttributesSection.m */; }; - 7C5505A2D3F2A697A5F324787061F4B7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A37D9FEABB61A71285A73CDE4C5E9EE /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C8782A3078662BC2EF639A9608A2C82 /* LKS_InbuiltAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B347673A4B4C29BEEEA0DACA4FDE025 /* LKS_InbuiltAttrModificationHandler.m */; }; - 7D736CE5AD0A987D2A7D2FD72E31BF41 /* CALayer+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D37279B6C85F4CF9A24280C077B23F5 /* CALayer+LookinServer.m */; }; - 7E4F0978B25350B2B28678A0BE7B3785 /* LKS_HierarchyDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = B95D50B779E63B23E1786D6F6CCABD4A /* LKS_HierarchyDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E8A564A958AF81E5F63F34B8E550E58 /* LookinAttributeModification.h in Headers */ = {isa = PBXBuildFile; fileRef = F64D7DC2CC24410532CA313B436B5E7B /* LookinAttributeModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = DF251712BA063E8344D1B1CDB785B3C8 /* WKWebView+AFNetworking.m */; }; - 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = EAAB3A74BE098DF24548F19631ED1ECA /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 581D45C2162C5967784E2A106C696662 /* UIViewController+PanModalPresenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 38D9966C1D90F995E284375B1712E8FB /* NSObject+MJKeyValue.m */; }; - 7FF8A56511E71D6FEC966BF9FEE135B5 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 921FDF9A7596A9183FFD281EEBC18B9D /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80EBFDD01E84CE4E8AE5BAE9CB3C7C1D /* HWPanModalAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C5640AE0C2091C5FC7A8CFD27229CC3 /* HWPanModalAnimator.m */; }; - 810C8D7902163BBA0185A4A112B2DFD6 /* LKS_TraceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 32C400A3F91177BBA34B1046DAFF260F /* LKS_TraceManager.m */; }; - 813BE4C96A6D39C13EC50C6CD164F0AF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 32809A6CFD5412906D97C8C7FCB8E331 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 81A5635CEA2AD9623E30CAE9AFC3BF65 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 43C608DEC890D79C4A758B248B1B7D6E /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 821FF6B43F7ADAB6B60459D2966B33CB /* CALayer+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 973BF123337556FEF831ECD7EF288DE8 /* CALayer+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83530BF68848CD2C4A79A1FD69B304A5 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = ED79370B32C9C754D3E34A13A2B7A516 /* SDImageGIFCoder.m */; }; + 78A3C3994AFFC6A2D4970AEB6D797CE5 /* LKS_HierarchyDetailsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D3831111080859754E7A75FF007ED40F /* LKS_HierarchyDetailsHandler.m */; }; + 7902D28FC9EF5AFEB452F508C7F266B1 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CBF9C8DF911E4E9B2C6A4628B5BC93B /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 79534562F85AA71041043B395DE14AD0 /* HWPanModalContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = DD391D4FA7F38A97455407F9DA5DA8F0 /* HWPanModalContentView.m */; }; + 7989A6E79BFA78440C39F568D972305C /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 710E437843F202473C82F6B19F6E51D8 /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7A4EB9ED5D4E03170FFE61FCB299687B /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = C82B001CD34AC553F11A55D1E576C902 /* SDAnimatedImagePlayer.m */; }; + 7C45DBA62EE045C4922404182F6393B8 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A980D9B3DB04133A466725A1C6C22F8 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C53FB6BBB0CBAA879F1603B0FEDB80B /* LookinAttributesSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 0531DC0648DD160A9576D09368C28017 /* LookinAttributesSection.m */; }; + 7C5505A2D3F2A697A5F324787061F4B7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D2A884E58C9EFE4F57508CA7855F449 /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C8782A3078662BC2EF639A9608A2C82 /* LKS_InbuiltAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E75619300BC832136529DA87152075 /* LKS_InbuiltAttrModificationHandler.m */; }; + 7D736CE5AD0A987D2A7D2FD72E31BF41 /* CALayer+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = B68B9359B3F4863CD16BC4AF1031EDD1 /* CALayer+LookinServer.m */; }; + 7E4F0978B25350B2B28678A0BE7B3785 /* LKS_HierarchyDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 310204C87FE20FAAF183EEE0D555B729 /* LKS_HierarchyDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E8A564A958AF81E5F63F34B8E550E58 /* LookinAttributeModification.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C8B71EAA1C160D9B20E934869F7E16 /* LookinAttributeModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E8284A1808A9A014FA6F2F4E23F36835 /* WKWebView+AFNetworking.m */; }; + 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 01CCBFAC5118E8E6A44DA067EF8F2523 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 995AA67533265367D116C78944065262 /* UIViewController+PanModalPresenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C694B3CF0214D5165615510B34C3812 /* NSObject+MJKeyValue.m */; }; + 7FF8A56511E71D6FEC966BF9FEE135B5 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A0368DACE23383F23784ADE51EC66773 /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80EBFDD01E84CE4E8AE5BAE9CB3C7C1D /* HWPanModalAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AF90BBEF3A681BE8314F80257F1182C /* HWPanModalAnimator.m */; }; + 810C8D7902163BBA0185A4A112B2DFD6 /* LKS_TraceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A251837ED47D22FF5ACBFA97F91D4A /* LKS_TraceManager.m */; }; + 813BE4C96A6D39C13EC50C6CD164F0AF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = D7117B22CB4967C93BC27DD5B1BA9865 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 81A5635CEA2AD9623E30CAE9AFC3BF65 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 77EC014BA0072D21D1B86EE5C78C59EA /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 821FF6B43F7ADAB6B60459D2966B33CB /* CALayer+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = A701AEED09FE2183269AA89DFA8E4B7A /* CALayer+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 83530BF68848CD2C4A79A1FD69B304A5 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 37B5AAFF8675170D1D643B53FECA47E3 /* SDImageGIFCoder.m */; }; 83A4F2816C1B3F072E1A26A34C3BC4AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 84065EC0D4446E7448D1BCFB4040230E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; 8414CFEEB64ACA817EB88D2FEADDA3B3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 854807558DCB972EDDFC1D00032BA6E4 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = B2E58999C4BBC169E871AD7F5DC6CC54 /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 85AB23275E9D19394969235E5DC2300E /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = DF05C447154DF7BE7ECB7AE07BF863D4 /* MJRefreshHeader.m */; }; - 85BB8B4B5C29C5EEC52282F33A4CAF23 /* LookinCustomAttrModification.m in Sources */ = {isa = PBXBuildFile; fileRef = EF19B866A3DB2F79FCE73ADCD2FA06C3 /* LookinCustomAttrModification.m */; }; - 85C0B4EE334B9972299E62DE61A4BB56 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CD3C473E82665733BD9E2D23A688894 /* SDImageLoadersManager.m */; }; - 860CB3A5D2E13B946CD2EFB7F749C4CF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = FE0FBCD7807A33AEB43D358FAF90A586 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 864972FB0DF4B464B1B505AA5F788E91 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = BD6A58C100D7D0C95F73174D108F1F16 /* SDInternalMacros.m */; }; - 88473AE7C22F952DACB39FA0758D1624 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 19C0CBEB4A5292C9975C224EC1464049 /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8872BEB0954C0254A792469F4DBC9891 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = A2B45634336BCC349F04126A0EE780B0 /* MJRefreshAutoStateFooter.m */; }; - 88A23DF6F5638AC66C28C4102824E8B5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 86C67D3928970843AA374752207E9260 /* NSImage+Compatibility.m */; }; - 89B88FAD396608AAA9F935E471BB3CB9 /* LKS_HierarchyDetailsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6E9D7DC7A47992FD77E5A1BF86254454 /* LKS_HierarchyDetailsHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 89EAB8D0452D0E2114ED971B10D98CC3 /* LKS_HierarchyDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 46CCF3A43BEE5F3B0490729F74E3F205 /* LKS_HierarchyDisplayItemsMaker.m */; }; - 8A256CA266FB314BBD4DB2287DAEF247 /* LookinAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 3828D32AF578BCBF238F4F3C9F25FE9D /* LookinAttribute.m */; }; - 8AF38EDB1E9BF0D334AEB23C488870B8 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B2EB2A264CA58715D67B113A8AEC381 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 47A1CD68D6C47087933E20DA80B1E693 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 854807558DCB972EDDFC1D00032BA6E4 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B2F034522C4ACEB56FB7ECF5D3CDFDB /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 85AB23275E9D19394969235E5DC2300E /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B6DBCFC84C1E1F5D3AF983520203544 /* MJRefreshHeader.m */; }; + 85BB8B4B5C29C5EEC52282F33A4CAF23 /* LookinCustomAttrModification.m in Sources */ = {isa = PBXBuildFile; fileRef = D9F0FAF97F68F13F21EE3D8E18046926 /* LookinCustomAttrModification.m */; }; + 85C0B4EE334B9972299E62DE61A4BB56 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C895614137416E86433C8E5EAF1D3CD /* SDImageLoadersManager.m */; }; + 860CB3A5D2E13B946CD2EFB7F749C4CF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = E382492BA0D4E5C9BEF289F10F029CAA /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 864972FB0DF4B464B1B505AA5F788E91 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 56951EB060616356F951F35CBD9A6E42 /* SDInternalMacros.m */; }; + 88473AE7C22F952DACB39FA0758D1624 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 584341F234CCB4128A1A3854A3371179 /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8872BEB0954C0254A792469F4DBC9891 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8BD469A978049C96BA8554A1F6D2D6 /* MJRefreshAutoStateFooter.m */; }; + 88A23DF6F5638AC66C28C4102824E8B5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC9B980A57804E48A923737AE36ACB0 /* NSImage+Compatibility.m */; }; + 89B88FAD396608AAA9F935E471BB3CB9 /* LKS_HierarchyDetailsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C7B7F069BA04D7981F13F5FA41B3BAB5 /* LKS_HierarchyDetailsHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 89EAB8D0452D0E2114ED971B10D98CC3 /* LKS_HierarchyDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = B772F3922ED9C416DBFEA6651FBB3930 /* LKS_HierarchyDisplayItemsMaker.m */; }; + 8A256CA266FB314BBD4DB2287DAEF247 /* LookinAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 25283803DB6704A7DFB24BD626A74C6E /* LookinAttribute.m */; }; + 8AF38EDB1E9BF0D334AEB23C488870B8 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 107D93AEC1E186A8F21341BFB523B22C /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8B9B9EACA282C583FCF9A3B8E49DD830 /* LSTTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F067A700BA9565969A60D7617155FBC /* LSTTimer.m */; }; + 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5973F7F7FB04C5938E91F05D46F22B54 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8D2CBEBF5F1DA6766A833CCD0BF02B5B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */; }; - 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B7BDA9563EB39641E0A578B77FD4FAA /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8786CBA6B78647E486B3CA129F2DAD /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8F30C8026F48C60D5B2CAE9CFC166004 /* Pods-CustomKeyboard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */; }; - 8FF7B6477BFA6E6ABA168E1417291D5F /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = D52F3A758237EAA29F8DFF3603985B94 /* MASCompositeConstraint.m */; }; - 906DCE66CD5BD236081D468616199BB7 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 75D5D4CBB473106CD017A60A4F0284B5 /* SDWebImageOptionsProcessor.m */; }; - 91AAF555B286FBF53E4F98D092B406BD /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E8FF2BF379FE508F46CAD249E158559 /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 91E8B94F8E02ABF5197DF5AE7D0B3934 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F498FCFBEA5766BBF0C258824B66B52 /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928371B066E1211CE87089668D5BCB4C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 24AF188A90B7DB8463BE14A968AB6A8F /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928A1ED0692DF0229F66A87135F93F2A /* LKS_CustomAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 054A388C6D56EE31CFBD5161B49B08DF /* LKS_CustomAttrModificationHandler.m */; }; - 9345137ED10358B60E37D05FB6165759 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = C6C930D163128CBE864CF933994F470B /* SDFileAttributeHelper.m */; }; - 9358FC6C6DA728AEE250D8E7DD236946 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = A8E79B2B03D4382C825BD72257BE4101 /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 93E8C78EAE0B7613201813966B8E04E2 /* Image+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 48DF6A3F73D15BB7711D4C401A2A800F /* Image+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 955B87902E039163281C4F47C95DB851 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = DC6B018BDEA17A60716B1E4180015BC9 /* MJRefreshBackNormalFooter.m */; }; - 96E97174F4614FFA0649085022CB4AFE /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 94EC9A7C408C26C1E3959F02360523F7 /* SDWebImage-dummy.m */; }; - 97235408E59E16C18B6BDA1D29E1CB26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 08732566CBDE3EB293493BCD102835A7 /* SDWebImageManager.m */; }; - 97385A64CA020489951EF769392C6DCF /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B69A17E7FED839334E49FA3104B7F83 /* UIView+WebCacheOperation.m */; }; - 9887678D7D6BC165694560D92AF2C31A /* LookinConnectionResponseAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 64110DA477609C9760A9CEEABA26DFFB /* LookinConnectionResponseAttachment.m */; }; + 8FF7B6477BFA6E6ABA168E1417291D5F /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = F738F2BE3FA2AD49A9764CC72FDBAFB2 /* MASCompositeConstraint.m */; }; + 906DCE66CD5BD236081D468616199BB7 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BB70CC7870B5212EFAD74AF8199F17 /* SDWebImageOptionsProcessor.m */; }; + 91AAF555B286FBF53E4F98D092B406BD /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1458CC53A93F0D10D4564ECD3E1C2D28 /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 91E8B94F8E02ABF5197DF5AE7D0B3934 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A34081EC91EFEC16FB92BEE1A470458E /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 928371B066E1211CE87089668D5BCB4C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D9FB07B277FA3212774D9D7EF2156759 /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 928A1ED0692DF0229F66A87135F93F2A /* LKS_CustomAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 30A4A3709BA82F970D60FE150EDB33D1 /* LKS_CustomAttrModificationHandler.m */; }; + 9345137ED10358B60E37D05FB6165759 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 31BB750A026F77ECDF9EFB2711DEC741 /* SDFileAttributeHelper.m */; }; + 9358FC6C6DA728AEE250D8E7DD236946 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = A14004EB25D5BC99B439F5543C20E8CF /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 93E8C78EAE0B7613201813966B8E04E2 /* Image+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = E1CED825638D1B3169A0C8EE7A57C720 /* Image+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 955B87902E039163281C4F47C95DB851 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = E49B94A4D72DB4B81F4E8CDC098BC388 /* MJRefreshBackNormalFooter.m */; }; + 96E97174F4614FFA0649085022CB4AFE /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 244BBBE37C5D845F2BB8EAFBE6D12DE5 /* SDWebImage-dummy.m */; }; + 97235408E59E16C18B6BDA1D29E1CB26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 92B30D23B01D493E996B4DF061CC3062 /* SDWebImageManager.m */; }; + 97385A64CA020489951EF769392C6DCF /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = EA5F1011035F011FF8DB93B55405B76E /* UIView+WebCacheOperation.m */; }; + 9887678D7D6BC165694560D92AF2C31A /* LookinConnectionResponseAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8983C7CF18477B6B6E981751F1C09853 /* LookinConnectionResponseAttachment.m */; }; 98AB6B8EB7FF096BCE87488C5AB3DF1C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 9A7FB1E975A5955C896E6B195C521804 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = EB89406A9E055C08A7A24CF01C851841 /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A89C16038149623A1DF06D47E7F953A /* LookinStaticAsyncUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = 694CDF3CA0E35A901F2C7D0364CD013C /* LookinStaticAsyncUpdateTask.m */; }; - 9B06400877E40C173F5A1C9761F288CB /* UITextView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D640B445F4284F72C568FEB8607AA99 /* UITextView+LookinServer.m */; }; - 9B1EF09A8A473D92C1258B00791BF5F0 /* UIView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 110654C4ECBD914896546F497CDC625F /* UIView+LookinServer.m */; }; - 9B3420DEB8A0CCB9E1241A669AEFCA8E /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = E4FA0289B9B02BEC5BD44CA92580B1E1 /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9B9343E8599EE5196BA75E842DCB48B7 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 625CF3BFC134394EF547BF079507A5D1 /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9BBBDC6BB6583BCAA75242231B62B530 /* HWPanModalPresentationUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 163946A4F251CC5F8129585DD75C0870 /* HWPanModalPresentationUpdateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9CE425B89294BE2C13E70A86E75B15CF /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B41358A1C10AD0D29F1770C04A5F0CAF /* SDDiskCache.m */; }; - 9D422527A25BAE6A207DEFE11958ABBC /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 666595C8EDD80B06B88241CFA60BC1D4 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D859B99561C389C0F494428F66F1871 /* HWDimmedView.m in Sources */ = {isa = PBXBuildFile; fileRef = D576F2E6ED4261CAADE09C891ED19EEF /* HWDimmedView.m */; }; - 9DDDCFC08B54A61C519DA78F94464E6B /* LookinHierarchyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 1651052462F8B04B5877450A1292E16B /* LookinHierarchyInfo.m */; }; - 9DF446F8CA5BC4D4098766EC9063012C /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C249B920F34D0D69C69CA43351E52EE /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFFD4780CA32B8E53D9F4FBC8B3F5AC /* LookinAttrIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 611F335AF3AB948359952D972579333C /* LookinAttrIdentifiers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E3C5CB1C97B2ED16218956999BFF7AC /* LookinTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 61194FA2A41C9D734CCA119C5F329CE1 /* LookinTuple.m */; }; - 9E6B00AF2ECE462D4D3C42AFC02F2AD7 /* LookinEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = ADCA2BD1C88A86EE8E2A5D4E3461378D /* LookinEventHandler.m */; }; - 9EBA682DA814406E9E5EF300587AF341 /* LookinAutoLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 70CF34CA376C8F25403FA62C8A27356C /* LookinAutoLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F89DCAA4092F3897E43E89842069A26 /* LKS_AttrModificationPatchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C4A1569A2FA3521F9130DA7EA649CE07 /* LKS_AttrModificationPatchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9FB234EB4D8B5BCC699DB491E204594F /* LKS_GestureTargetActionsSearcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 52587370E20625EC0ADF9ECB81F06C80 /* LKS_GestureTargetActionsSearcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A078A275FFFA48D620074790DA3CA6CE /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = D9713BA6BE14577AE57300E3DD702FD7 /* MJRefreshStateHeader.m */; }; - A0E0DC76F51300E7EB1EBA5492DE854D /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E66397BB19318C841897657B7D33195C /* UIImageView+AFNetworking.m */; }; - A1560247914C760D9EE5F7A2392CC06C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 397ABB0739D14AE30A56100FCE880DEF /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9A7FB1E975A5955C896E6B195C521804 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = C59475012E53558600AFA4F7685E8F9E /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9A89C16038149623A1DF06D47E7F953A /* LookinStaticAsyncUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = D08B8F280C5811F6505EA1AE7983082B /* LookinStaticAsyncUpdateTask.m */; }; + 9B06400877E40C173F5A1C9761F288CB /* UITextView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = DE9ADECB39002B8ABC9BF590B430634B /* UITextView+LookinServer.m */; }; + 9B1EF09A8A473D92C1258B00791BF5F0 /* UIView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = B51F28BC73CA22D31949B1635AF8CAE1 /* UIView+LookinServer.m */; }; + 9B3420DEB8A0CCB9E1241A669AEFCA8E /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 086D3945C39C8554602424E64D1A9F0B /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B9343E8599EE5196BA75E842DCB48B7 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = A187D3CE401AEF4272748BA58A834812 /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9BBBDC6BB6583BCAA75242231B62B530 /* HWPanModalPresentationUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 70ABAEE0904B02D3CE9045A0A088E18F /* HWPanModalPresentationUpdateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CE425B89294BE2C13E70A86E75B15CF /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 889630ECFAA2151C2C1F334458A5C110 /* SDDiskCache.m */; }; + 9D422527A25BAE6A207DEFE11958ABBC /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7C62DACFDBE481DDA82F7BE3396A68 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D859B99561C389C0F494428F66F1871 /* HWDimmedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 10D1C021B7050EF6841A364EE9A0A570 /* HWDimmedView.m */; }; + 9DDDCFC08B54A61C519DA78F94464E6B /* LookinHierarchyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 274EF5BCECE08045C7BB130E4D6ED8E4 /* LookinHierarchyInfo.m */; }; + 9DF446F8CA5BC4D4098766EC9063012C /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DE5FC1FDACC1A466A889091A6DD9D1B4 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9DFFD4780CA32B8E53D9F4FBC8B3F5AC /* LookinAttrIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = AA574A6EA7EECCE7D1E086B964FA3C65 /* LookinAttrIdentifiers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9E3C5CB1C97B2ED16218956999BFF7AC /* LookinTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 20C42B1A5A080256AC39DD86D000ACD5 /* LookinTuple.m */; }; + 9E6B00AF2ECE462D4D3C42AFC02F2AD7 /* LookinEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 79D13E836577BF8A934C5D3D24826BD0 /* LookinEventHandler.m */; }; + 9EBA682DA814406E9E5EF300587AF341 /* LookinAutoLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = D1F143BC4A879AC2B9896478CE4FF798 /* LookinAutoLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F89DCAA4092F3897E43E89842069A26 /* LKS_AttrModificationPatchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FED881DC5D7531317A8A2A309D96815F /* LKS_AttrModificationPatchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9FB234EB4D8B5BCC699DB491E204594F /* LKS_GestureTargetActionsSearcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D9DDC30D49B9BC3DFA8D9BC83722C14 /* LKS_GestureTargetActionsSearcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A078A275FFFA48D620074790DA3CA6CE /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = B4E40A4D926E9D870172CB05C27151FC /* MJRefreshStateHeader.m */; }; + A0ADDB3C7DF96DF0E6BC53086778A103 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; + A0B7A3B941134AA95A20F5A85165CC72 /* LSTPopView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 93DAC06B5293787BAAAA04E673812C59 /* LSTPopView-dummy.m */; }; + A0E0DC76F51300E7EB1EBA5492DE854D /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EFC403B9948A5A5D2DC7D8B3D9188A9 /* UIImageView+AFNetworking.m */; }; + A1560247914C760D9EE5F7A2392CC06C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = B2770F360CD876399FE83C30619DBC24 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; A1A1266FD70CEB545FD7602CC33F2F7B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */; }; - A1ACD509069144C27542774A41FE0243 /* UITableView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = DFBCDC70260B861EA38352626CC2393C /* UITableView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1DC9EFDF50DF0EAF24D9D7C219AD2C1 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 92E26B1FB2A3B34BF0C4C43A02D2EB58 /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1E44277704AD68E867FD7C955A6632D /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED81178D3D980B0132BE071541BDB51 /* MJRefreshBackGifFooter.m */; }; - A324722BA42F21E98F158EA6C133D715 /* LookinServerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 27CFD14754D1E3BFCBFECB5DD71A5359 /* LookinServerDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A3EA39A13714B3103B82F4066A642F53 /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = AC49732B3E41F8772AD10362943A8A97 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6728DA26A7C457B78A7A3CCFA9D9A10 /* UILabel+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A29706814F99AC9B476BC26B8CCC39 /* UILabel+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6B2B022993BBC55550CFBB0A0C78209 /* LookinConnectionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = B239AD8AAB2A61B7AE6B39D6B7F1F9D5 /* LookinConnectionAttachment.m */; }; - A6FCF74348D1907891FBDE3F2E331136 /* DZNEmptyDataSet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C5805469F7E93E743A134E4EEC762665 /* DZNEmptyDataSet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A760FF1452F08B787F0997D91F4A2C98 /* HWPageSheetPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = D1AB74F96045D59C6D2386964814DA47 /* HWPageSheetPresentingAnimation.m */; }; - A839428F403C52D8AA3466B65E20C27A /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DC0E4313E6BF0284C12011FF5FD9B8A9 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A86CC1AFDFDD692DC4EE66F57C0F39E6 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = D0E66BF426F9E82A8E7F4F5630A42386 /* UIScrollView+MJRefresh.m */; }; - A8AD2AE9695630E93DE504211EBAFBF1 /* LKS_CustomDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = BEEC82A223FE289DDC2C165B2D2E03CA /* LKS_CustomDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A8C001E34C77D81FAF5FE55956A8293F /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 99C1A927375BA228B8AD38FDB36211B8 /* PrivacyInfo.xcprivacy */; }; - A92AB5E65CA85947368E46E6627F1BFB /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = C12D160C6063D462EE97C5CD6A35994E /* UIButton+WebCache.m */; }; - A93BA1C5A4FFEF3ACF371690485A2703 /* NSObject+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 50A13B682D86AE92E1941A6C08E557BB /* NSObject+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9609EEBDD5FD40292925E80ED84D5DF /* LookinServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 701BFF6738F7EE5632E59657442BD101 /* LookinServer-dummy.m */; }; - A9A49E4A3BE8882F60DF32BAF39DE191 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D6F2CCB5C719F8790027213B6CF0ED8A /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9BEDE2ADF9D1E0D0D1A241806A1A486 /* LKSConfigManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A3FD8D5295BC5DADF9B48122C08A03D /* LKSConfigManager.m */; }; - AA1EA8F0F0470F1596B1FFA58ABF3375 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = BBB5022209600659D8A4792A6FD748CE /* SDWebImageDownloaderOperation.m */; }; - ABCB80C4813C849FC93D57676820C907 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 93ED7AE2B94BDF71B19043408EA5D0F3 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC14E56ECA7A4980A8E1CA68E800B12C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FA74E651256F04C8514F0A05679D217 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC710813CB6A1DAEEE45914402F864D2 /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F66416F5FCB58B94BA9CC403B8A778A /* MJProperty.m */; }; - AD01931D200C49153984E27CBCEFE9D1 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = E1A7A8B90EB2B4D833CF1D550EC9FB29 /* FLAnimatedImage.m */; }; - AE69A3B75BEEB9E2C54168BF0C502BC6 /* LKS_RequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A762DB0AD39D18CF911533AF4D3D3B1 /* LKS_RequestHandler.m */; }; - AE7B02645B8F769CA5F215EE8F7CC5B0 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B71B6DD998C6C529D683056C8285BE11 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF185CDCA462AD6450543676951C82F9 /* LKS_ObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = A658C45B08CED2701138D5375C27CCEE /* LKS_ObjectRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AFD1D411A9387DCEC6F0034653E23787 /* DZNEmptyDataSet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FA5982BFE2863F2A7591EEA5A3374FB5 /* DZNEmptyDataSet-dummy.m */; }; - AFDC0B8255B2F3CED8E609F8A3BD1CDB /* LKS_AttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = A68429174A7738F07E1A8AA359028DFE /* LKS_AttrGroupsMaker.m */; }; - B01F27CEAE1971DEC56A8811FE669EB6 /* UIViewController+Presentation.m in Sources */ = {isa = PBXBuildFile; fileRef = CFCADA560B6CBB7BCDE9CD39CDBE90F2 /* UIViewController+Presentation.m */; }; - B030B558BE97E0225652EFB8C8FA431F /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BF0595213FCD9D5150FF374A286E2BC6 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B09F08548ACA8379445F6525011EE219 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = E0854CBF8370AAF7A642A9BE65EA9C79 /* MJRefreshBackStateFooter.m */; }; - B2704AFFC5CC053154839DB44924D255 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = DBE8F778D2F44195988D4A515D7F4B42 /* SDImageCoderHelper.m */; }; - B2B5444DFE63D2835A7561C1D64C9344 /* LKS_CustomAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 2676F11A3670B2480D40E37CECD806F7 /* LKS_CustomAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B2BC43DEC8DE2B9234693FE3782AB76C /* LKSConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E80165A2B20491F0E71E9BCFA72510B9 /* LKSConfigManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B331CE2D3DEB461E738B886086A365F9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = FDA81838534E80C5870459AD0441D08C /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B48A975992E58328254C494F133DE467 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 85703DD6475DDAF90847B3E1C0DC9738 /* NSObject+MJProperty.m */; }; - B4F231C5CBAB3D4A184699D0066E0E83 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 92C723F3A1F71486F75D6E7CA7E480E6 /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B565C08CE947CF591B1D3582272D5E1D /* LKS_CustomAttrSetterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 64EE6EBE156E6757C2B16DC6C01D0328 /* LKS_CustomAttrSetterManager.m */; }; - B59E60FBC9665FC1061B88B8E6FD9FAF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 66EB6235F828F12999A13D8BD6C02127 /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5AF87C11A465F666473F6191D173905 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 221F590A160BC28ED1F8AD774E3E9DE5 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5C521FFB8E09DFE348238E21556842F /* UILabel+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = CC1CE35F4EE179193CCCEA428E5FF90F /* UILabel+LookinServer.m */; }; - B66356D4E7E43B3D15324569AA7EBB05 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = AC119D7F0D47E7F00738CC762CB0D90B /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B680C2604BD8BC9644AE7C67BC46B9BB /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B7AF4A837E5E99D79B146178585C2C3 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B741DBE2A466E6211F879EF997D9322D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 89CAE6642460316AFEB27B5A5CD2778E /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B79864F972C51037B350802D8CD48024 /* LKS_GestureTargetActionsSearcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E03CFEECACD6D99D415C06808FF1A46 /* LKS_GestureTargetActionsSearcher.m */; }; - B81566F19789EBD9BE2714E2A6059D36 /* LookinDisplayItem.m in Sources */ = {isa = PBXBuildFile; fileRef = DB2EC5EF47D2A84B9FD85A1FB0124FD2 /* LookinDisplayItem.m */; }; - B8CA1F338C44C633916650FD85DA5A30 /* HWPanModalPresentationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 464FA74F22BA11120A125593D04ECC10 /* HWPanModalPresentationController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B95C63A039D9D08896421291DEBD3AEB /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 69120AA1162D453113865A302140EFB0 /* SDWebImageCacheKeyFilter.m */; }; - B987864019E987FE32AB26A9CF2C8E12 /* UIViewController+PanModalDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A65EE54330746267B5EE5B6873635DA /* UIViewController+PanModalDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BA904ABA8ED36CC4E5EB2B2004CA1F18 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 33B1E0CA964F32623BB6975D9AC53C26 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BACAA91A92F35CD7E7795232A83F21D1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 543E7F5FC6CF2C3049F7A173BFB53AFD /* AFNetworkActivityIndicatorManager.m */; }; - BADA31750A2136D073EDA4461DBE1EEA /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 9EE75894CA44B250BFEA11B25F54F149 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBA61EF31BFDFA6FCA34DC4EBE6E1D9A /* NSString+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 4307F1F1718ED3798F45B2184C30063E /* NSString+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBF5FDA7D647517E2F904FE8E5596D96 /* LKS_AttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = FFDB78F13861619F1E601806B170EB3F /* LKS_AttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC2F9B1D6986FEB23B4FB1288B512538 /* MJRefreshNormalTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6259B042D1D6480734439FF381E14C2B /* MJRefreshNormalTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC5458210A973BC7A29D1F45D458A14B /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 52498B1644296C61B2FE7621C339AC58 /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC7A1933CCF40C3C5E2E4A70AD2D0657 /* LookinDisplayItemDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = CA563C1C8CD02A20BF55A818576D82EE /* LookinDisplayItemDetail.m */; }; - BCDC1E1D46DD124B5726A064D2EE66A3 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BA9B1ACD0A1EB747C6936E484D5208B /* UIImage+MultiFormat.m */; }; - BCEFDE57BB0E0B36731C8D39FFA1BE2C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 5916EA119280E5419D6269E5A435A1A0 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD2F6B06ADB5136DA881D1B918367125 /* UIViewController+PanModalPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 041476A9D72BD942940B39097904435C /* UIViewController+PanModalPresenter.m */; }; - BD30193C1E3D7B1F17B1B1F3F08BE655 /* UICollectionViewLayout+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 140C8B875FF37FDF9A95CB04C9916AF9 /* UICollectionViewLayout+MJRefresh.m */; }; - BDBE494BAC544843982C3CA96A6C41DD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5222D695CCB33DFD24FA0E6B7CE34154 /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF0C3D2782FE1425C2F1F8827132A94B /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 857DB28ACD58B6F0687A1A566D8C2BF1 /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF22D137EF6324675FA50080C5D93C00 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 587CB6117FEDC0DADE247998FA290F62 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BFAC671767912906E90060B0F4BED5FB /* LookinCustomAttrModification.h in Headers */ = {isa = PBXBuildFile; fileRef = D5BC11645051F0690160018A0FDF87B2 /* LookinCustomAttrModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C04D578067F77AAB6717D32712CC39A2 /* HWPanModal-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A16552B472D24C41550970F7A20D2306 /* HWPanModal-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C0D7926E41A294ACA98D7B033B283919 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 35BFDB837A13ECB08D0555099C8AE732 /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C16483526F6C6287240A75EDCB7E2F2F /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = BCB715803528E46AB9661E7F8A956D85 /* FLAnimatedImage-dummy.m */; }; - C1D9802BE2A6410FFDFB1650FB9BA317 /* LookinDisplayItem.h in Headers */ = {isa = PBXBuildFile; fileRef = E115A6217BE4FADE37437C87CB0A7B59 /* LookinDisplayItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C1DD8C6A64F948E4C53560C76B995DA4 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DC9A26415E30724897A7A975AB7B73E /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2033A68F13923BF9B3EE19F39FC1411 /* UIColor+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = C9465AFC6C48C65FF4158D542A5001CD /* UIColor+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2068AEACC2D9C7F1FFE41AA25B12A68 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 14121BAD9B9FA92863D1125B50D54DF4 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2840BF1950FF7EE2DCD6D55F768A49C /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 4C5F7FF14062807BDEB2A6D6E4A6DE95 /* UIImage+GIF.m */; }; + A1ACD509069144C27542774A41FE0243 /* UITableView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2701A816C2728A79FA904E6F2AC8ADEB /* UITableView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1DC9EFDF50DF0EAF24D9D7C219AD2C1 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F69E397FB4534DAE86CE36E624729DC /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1E44277704AD68E867FD7C955A6632D /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = AA75F2BBB1F8188D75855FF34D8A7AE3 /* MJRefreshBackGifFooter.m */; }; + A324722BA42F21E98F158EA6C133D715 /* LookinServerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EAFD6E7E63CC2D3E074450E9124493C /* LookinServerDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A3EA39A13714B3103B82F4066A642F53 /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = C88E60EA597845949F0925B844477F63 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6728DA26A7C457B78A7A3CCFA9D9A10 /* UILabel+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 589A748D16780600B35F1BC7E7CEB243 /* UILabel+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6B2B022993BBC55550CFBB0A0C78209 /* LookinConnectionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 03BAE9F573ECB0A822C6757CBF10AB0E /* LookinConnectionAttachment.m */; }; + A6FCF74348D1907891FBDE3F2E331136 /* DZNEmptyDataSet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 972173A04BB5350B482CEE39EFFBE0EF /* DZNEmptyDataSet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A760FF1452F08B787F0997D91F4A2C98 /* HWPageSheetPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25AB23A95A2135A43EF14C148E707F7A /* HWPageSheetPresentingAnimation.m */; }; + A839428F403C52D8AA3466B65E20C27A /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 01B6539E05000228B7BBD9BA57EDF5E3 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A86CC1AFDFDD692DC4EE66F57C0F39E6 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = B90789CA4A099321E01CFF8CB566B5F3 /* UIScrollView+MJRefresh.m */; }; + A8AD2AE9695630E93DE504211EBAFBF1 /* LKS_CustomDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 40D46544DD0F8DC61B909F5E02739172 /* LKS_CustomDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A92AB5E65CA85947368E46E6627F1BFB /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = EEE26007FA20AE54DB39973E3D1D76FF /* UIButton+WebCache.m */; }; + A93BA1C5A4FFEF3ACF371690485A2703 /* NSObject+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3649A7CA35A3580F58B4481D9820AF /* NSObject+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9609EEBDD5FD40292925E80ED84D5DF /* LookinServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 802213010DCF77864E95B3A910F64EA0 /* LookinServer-dummy.m */; }; + A9A49E4A3BE8882F60DF32BAF39DE191 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 875E237862F4488FBFC692D1AB2DBB91 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9BEDE2ADF9D1E0D0D1A241806A1A486 /* LKSConfigManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6233A7302725D50AFE344EFD05C9C870 /* LKSConfigManager.m */; }; + AA1EA8F0F0470F1596B1FFA58ABF3375 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D31F6949E2640BBC06F6F5E862EA6B /* SDWebImageDownloaderOperation.m */; }; + ABCB80C4813C849FC93D57676820C907 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = AD7824F87B7A4AC0EB49B7B856736BF2 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC14E56ECA7A4980A8E1CA68E800B12C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B8F37F4AA285AB6E2540A4063D8B802F /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC710813CB6A1DAEEE45914402F864D2 /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 636EE1928B5BC8BC35DF1648C1BF1467 /* MJProperty.m */; }; + AD01931D200C49153984E27CBCEFE9D1 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = C1EC495C820AD2FE568E285440075D82 /* FLAnimatedImage.m */; }; + AE69A3B75BEEB9E2C54168BF0C502BC6 /* LKS_RequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 13527772A4A54A71A31658A3E36E2474 /* LKS_RequestHandler.m */; }; + AE7B02645B8F769CA5F215EE8F7CC5B0 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A732383A60ACA7498BD810AAC8E31192 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF185CDCA462AD6450543676951C82F9 /* LKS_ObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = BFFCEECD2573D5472737D9AFB10A0BB2 /* LKS_ObjectRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AFD1D411A9387DCEC6F0034653E23787 /* DZNEmptyDataSet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 979F4BB7A6CE1AF72F02D7E7F5EC0D7F /* DZNEmptyDataSet-dummy.m */; }; + AFDC0B8255B2F3CED8E609F8A3BD1CDB /* LKS_AttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 581F1A0410E8F8E85A8C2E596B4C7F40 /* LKS_AttrGroupsMaker.m */; }; + B01F27CEAE1971DEC56A8811FE669EB6 /* UIViewController+Presentation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D36CFCB34B6B2FF494AB70EC5024CFA /* UIViewController+Presentation.m */; }; + B030B558BE97E0225652EFB8C8FA431F /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = AB771D1A9F6BE6B15418DB387EE5ADF3 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B03761E468C3B0F1BFEB2401CF2D5245 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + B09F08548ACA8379445F6525011EE219 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AE63A9BC3D50E34C84263A87F782ACA /* MJRefreshBackStateFooter.m */; }; + B2704AFFC5CC053154839DB44924D255 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 069FA883A4FACC46317AB2BE1BDE30E4 /* SDImageCoderHelper.m */; }; + B2B5444DFE63D2835A7561C1D64C9344 /* LKS_CustomAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = CB56ABA66093040F0D62AF378BB66DBE /* LKS_CustomAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2BC43DEC8DE2B9234693FE3782AB76C /* LKSConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D53461EC25E2C6DAE3F3C2ABD951A2B /* LKSConfigManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B331CE2D3DEB461E738B886086A365F9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F2363FB988E5DC9705FE22B29B7B4F8 /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B48A975992E58328254C494F133DE467 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 690D12C73095E1091E4B6AB8B11A064E /* NSObject+MJProperty.m */; }; + B4F231C5CBAB3D4A184699D0066E0E83 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = C685758668AFAC91E0AE4675AEA80600 /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B565C08CE947CF591B1D3582272D5E1D /* LKS_CustomAttrSetterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04D3C87C11221ADDA77670ED0731D145 /* LKS_CustomAttrSetterManager.m */; }; + B59E60FBC9665FC1061B88B8E6FD9FAF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 672AB6E0839CC099E7CA7CF49761A5D7 /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5AF87C11A465F666473F6191D173905 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8166AA98A11AE7F3F46DBF2C481F6DF5 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5C521FFB8E09DFE348238E21556842F /* UILabel+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = FA721DB25EC176AA8EF0102082B67F5A /* UILabel+LookinServer.m */; }; + B66356D4E7E43B3D15324569AA7EBB05 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D7205061D92FA9AEDA20BCF1B6FF9B7 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B680C2604BD8BC9644AE7C67BC46B9BB /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C6B8E558F2970AA962D063345B79D19 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B741DBE2A466E6211F879EF997D9322D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FDBCFE0DF35F1346C9E17295438B88A /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B79864F972C51037B350802D8CD48024 /* LKS_GestureTargetActionsSearcher.m in Sources */ = {isa = PBXBuildFile; fileRef = BC24AF9FD32062D15DE214E94B0E828F /* LKS_GestureTargetActionsSearcher.m */; }; + B81566F19789EBD9BE2714E2A6059D36 /* LookinDisplayItem.m in Sources */ = {isa = PBXBuildFile; fileRef = B36F0D1046FE48DF23AE7AB21CD678D3 /* LookinDisplayItem.m */; }; + B8CA1F338C44C633916650FD85DA5A30 /* HWPanModalPresentationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C880A37C8BD02476827078E98C08810 /* HWPanModalPresentationController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B95C63A039D9D08896421291DEBD3AEB /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EDBEC1105ABEB5730250B28CB605E44 /* SDWebImageCacheKeyFilter.m */; }; + B987864019E987FE32AB26A9CF2C8E12 /* UIViewController+PanModalDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 4816EA2348DC71F3330B4D2743758FEF /* UIViewController+PanModalDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B98BC635A537547CD8CA9B77C750304F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + BA904ABA8ED36CC4E5EB2B2004CA1F18 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 00F09038ADB7D3ACE57173DD781066A5 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BACAA91A92F35CD7E7795232A83F21D1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F0CB265D0463DC2290A542EFCE210632 /* AFNetworkActivityIndicatorManager.m */; }; + BADA31750A2136D073EDA4461DBE1EEA /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 16276D593D3F4D227902AF3A1424A4AC /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BBA61EF31BFDFA6FCA34DC4EBE6E1D9A /* NSString+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = CEFEE7CEBA57AF6426BA05F18F444C4E /* NSString+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BBF5FDA7D647517E2F904FE8E5596D96 /* LKS_AttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 54E07E4DAA97DEDC8F59F58429664909 /* LKS_AttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC2F9B1D6986FEB23B4FB1288B512538 /* MJRefreshNormalTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4082EEAE9AC1F17D236D83E99200EA70 /* MJRefreshNormalTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC5458210A973BC7A29D1F45D458A14B /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CA3017C0C359C5E90091B685A3A59EE /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC7A1933CCF40C3C5E2E4A70AD2D0657 /* LookinDisplayItemDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = DA876A02B80932A6284AB2ACAB8135A6 /* LookinDisplayItemDetail.m */; }; + BCDC1E1D46DD124B5726A064D2EE66A3 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 452B8DD5CBF29E80E794E957D7ACEE0F /* UIImage+MultiFormat.m */; }; + BCEFDE57BB0E0B36731C8D39FFA1BE2C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E350DE3AE3DE0F5FC5BD9A2EB159387 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD2F6B06ADB5136DA881D1B918367125 /* UIViewController+PanModalPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = D3576B2FF83DF230E75AA05AB2DB6B4D /* UIViewController+PanModalPresenter.m */; }; + BD30193C1E3D7B1F17B1B1F3F08BE655 /* UICollectionViewLayout+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = C45F5D95A727E9121E38DFEFADA82094 /* UICollectionViewLayout+MJRefresh.m */; }; + BDBE494BAC544843982C3CA96A6C41DD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B130ACC8A24ECD0BF3BD07D5AF21E4D /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BE4F0DF600FBF07E812D262B293CF76C /* UIView+LSTPV.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CE9728E85B8432ED072CD0DC7926F20 /* UIView+LSTPV.m */; }; + BF0C3D2782FE1425C2F1F8827132A94B /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A5823526F694533978DE523241FEDE9 /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BF22D137EF6324675FA50080C5D93C00 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 14454326E9CB6046C0CA3ABA3A33F187 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BFAC671767912906E90060B0F4BED5FB /* LookinCustomAttrModification.h in Headers */ = {isa = PBXBuildFile; fileRef = AA4F3775DDC9BAD8BC30D51376A765F0 /* LookinCustomAttrModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C04D578067F77AAB6717D32712CC39A2 /* HWPanModal-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B1C14811A97739A8455D69D9EF8F1AA /* HWPanModal-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C0D7926E41A294ACA98D7B033B283919 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = FC504494ABD0D1144D620FD1501F0E00 /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C16483526F6C6287240A75EDCB7E2F2F /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DCB59AEF88556057BC2FD85427D2EFE7 /* FLAnimatedImage-dummy.m */; }; + C1D9802BE2A6410FFDFB1650FB9BA317 /* LookinDisplayItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 48B9B4465675824F9DA134FE2253901E /* LookinDisplayItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C1DD8C6A64F948E4C53560C76B995DA4 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E5C8F44BD62EB86605C88FA434E57ED /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2033A68F13923BF9B3EE19F39FC1411 /* UIColor+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D52AD9DE99C02DF34E22E59E4A970F45 /* UIColor+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2068AEACC2D9C7F1FFE41AA25B12A68 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 996E03E4CC36DB69F10AD9C8F02472C6 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2840BF1950FF7EE2DCD6D55F768A49C /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 51E9651B0CFE7B40336ABD29412D3C39 /* UIImage+GIF.m */; }; C2F8C43CFD4C890405F217DA7E00C839 /* Pods-CustomKeyboard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2FE60A10C792613E45031AE6E851ECB /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 8862727C1E338311DF7340BC59FC7388 /* MASViewConstraint.m */; }; - C4CC01ED368863C6E3220988FBC6CEFB /* LKS_CustomAttrSetterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = AAE5FEBB56FEC34482A95BC768401167 /* LKS_CustomAttrSetterManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C60DB44F719853DE3B7157960DAF9270 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = C20D9185B54011BBE67FAA2FE147DA10 /* MJRefreshComponent.m */; }; - C6A100159974349FEAAC99B82BE0F872 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = FF065544B74A17D64308801DEE489EEA /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6FEC1088121FEA7DDC3384B7ECF3B44 /* LKS_Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 005101F7C4901700207336B75CF59476 /* LKS_Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2FE60A10C792613E45031AE6E851ECB /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = B12BB85356FB25DB1C8CA459600D3F8E /* MASViewConstraint.m */; }; + C4CC01ED368863C6E3220988FBC6CEFB /* LKS_CustomAttrSetterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BC686BE8B7F5AC6B3A652ABBA6EAE87A /* LKS_CustomAttrSetterManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C60DB44F719853DE3B7157960DAF9270 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A4E8FC1A8280B0B2C51BA4C08DA78B3 /* MJRefreshComponent.m */; }; + C6A100159974349FEAAC99B82BE0F872 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = A65F19FCE0D1235D1B87CDFD5146518C /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6FEC1088121FEA7DDC3384B7ECF3B44 /* LKS_Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2262EDBC98A2795DB2EE27FB7D953E2C /* LKS_Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; C71935C30C1AEDF32B96670BD8FA64CE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - C857B8D2D0BAA5A8A764F9E1C4B85807 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 099894DB44BB1249366F618379B45D6F /* ViewController+MASAdditions.m */; }; - C8771885BEA9EA0BD2E2C474587325E2 /* LKS_ExportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 1724C6EB60601A5723C7A0972AA8DB97 /* LKS_ExportManager.m */; }; - C8EC35DFB0945DBE2F2FF9ECFE6D9711 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = A6C86B0A2BE58730A7EC5C60F201E0CC /* NSLayoutConstraint+MASDebugAdditions.m */; }; - C93E972E75F84674690300123984EC43 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B289F862BC27A4B0060A4CFBD40E1E1 /* SDAssociatedObject.m */; }; - C992A335399F942237E754EE65C40CA5 /* LookinObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E8B33995F7416B51F3DB4DF1B8C1C079 /* LookinObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C993A4D0CFA51E567F458CA65C1298AA /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EB1751B89D4AAC72FB84E06877E9092A /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9A72F0A93329C42B77395B0F6CEA26C /* HWPanModalPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C180A1C6E6C287310FABCB81CBEEB07 /* HWPanModalPresentable.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9B63C6ED2ED691EA83D3EE65939444B /* Lookin_PTProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 549961902064EB911C7C58433F18CB5C /* Lookin_PTProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9E19D164C26414115CC969ED9A303C1 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 90219DE322B8BCFE6BF680852EBEF4F5 /* MASLayoutConstraint.m */; }; - C9E8C9372C2DA29D302B058BE3AE9877 /* CALayer+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 198BCFF4D9AF651D5B86774921D624E2 /* CALayer+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA1E0DCDF679EA2DE2ED0915426E1D04 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 72A78D12318A2A4F704BC2BC743AD9DF /* SDWeakProxy.m */; }; - CA56274BE7CBB3E759E0364785DF9799 /* Lookin_PTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 318AFD96872C2F4B15208D88E9CD4764 /* Lookin_PTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CDCDFA7775C6B23ACD5CFB66663214CF /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = DA7CF72060C622DB6A61C9EB8ED621EC /* PrivacyInfo.xcprivacy */; }; - CE86196C00DC1D658B6CB7D47A0233AA /* LKS_ConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B52F950306B0C5B7D2782308290581C /* LKS_ConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CF7005F2C42AC2E2DD6D437D52C7048B /* HWPresentingVCAnimatedTransitioning.h in Headers */ = {isa = PBXBuildFile; fileRef = 845117372901F4A5A3D286F10A26B6EC /* HWPresentingVCAnimatedTransitioning.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CFF8D1A5E4C2097EF05E1021FE112886 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 3227970589E62371501C4D8C28DD4B1C /* SDWebImageIndicator.m */; }; - D06BB547D59D183FD1DDD84DEBAC9EE8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A5FE34535D0AF62304F84F18B3E5293 /* SDWebImageCacheSerializer.m */; }; - D091F05269EE0566B665B00C7D912F8E /* Lookin_PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 2DC2990A90A71D269C5024BA61CF0B19 /* Lookin_PTChannel.m */; }; - D1230E19DD1507E6370B80DF6653AC2A /* NSArray+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 92134100C010678B361F36A55263F8A4 /* NSArray+Lookin.m */; }; - D2AF9A7FD73B95960FDA4FD06C4BED08 /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = F7095CB50DC7675B616D3B2DAB4F0188 /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2CD8848F856EC9942A76610AAE66F0A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B7E0100E260F97D53E9D7FCB8CAAFCB /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D3615499AFE4D2A8EC2E773F4D8A82B2 /* KeyValueObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C462ACDAC6DCEE65350D4BC510A2E99 /* KeyValueObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D559CC4D0695CEE05F3B4C1C06475044 /* UIImageView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A7FD6EBF394380EFF340D6443E444582 /* UIImageView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D5C046C46961BE465293625D6B870620 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B00C7E369E9AC7974F4EC937246BBA4 /* AFNetworking-dummy.m */; }; - D62A672EEB252581BD972DDA862BE1DD /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D8BA408618D220AA3B9C6EE5D3745E21 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D662C83ECE8BEDA5FFB52F3575CA3E1A /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 91D3E5E505EB6AAA766EB09E461868F7 /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C857B8D2D0BAA5A8A764F9E1C4B85807 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = FD22D0365334ED54585130432CEF0912 /* ViewController+MASAdditions.m */; }; + C8771885BEA9EA0BD2E2C474587325E2 /* LKS_ExportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DC75CCA31193BB63063F364267DBCF2D /* LKS_ExportManager.m */; }; + C8EC35DFB0945DBE2F2FF9ECFE6D9711 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 361FBE2595D99942EB88F5C0D34EB2DA /* NSLayoutConstraint+MASDebugAdditions.m */; }; + C93E972E75F84674690300123984EC43 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DBD3AB6DB93D7C2BE4FB5D89E1938FD /* SDAssociatedObject.m */; }; + C992A335399F942237E754EE65C40CA5 /* LookinObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 47F9AD4ED221D6EEDB441FAF35299C66 /* LookinObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C993A4D0CFA51E567F458CA65C1298AA /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F2AA502A31D7ACB4F28AAE65C3561F31 /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9A72F0A93329C42B77395B0F6CEA26C /* HWPanModalPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4F0899D1AD5593F9373F8225D28188 /* HWPanModalPresentable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9B63C6ED2ED691EA83D3EE65939444B /* Lookin_PTProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 7577D873945C0C370C14EE971C3509FB /* Lookin_PTProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9E19D164C26414115CC969ED9A303C1 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 82512BA24900AE369D9A35A08C7187CC /* MASLayoutConstraint.m */; }; + C9E8C9372C2DA29D302B058BE3AE9877 /* CALayer+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A89D8D8B71AD9A723D88B13AF519A214 /* CALayer+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA1E0DCDF679EA2DE2ED0915426E1D04 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = E2E3CFC89381BAE830E4045CE02E25EB /* SDWeakProxy.m */; }; + CA56274BE7CBB3E759E0364785DF9799 /* Lookin_PTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 39D285C0DD3F1106B921412AD679ADEC /* Lookin_PTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CE86196C00DC1D658B6CB7D47A0233AA /* LKS_ConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DF4E1CE47903B976C738C7A1DB7C650 /* LKS_ConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CF7005F2C42AC2E2DD6D437D52C7048B /* HWPresentingVCAnimatedTransitioning.h in Headers */ = {isa = PBXBuildFile; fileRef = FCCAFE3B7FF5BB1E728A5F5834F651D8 /* HWPresentingVCAnimatedTransitioning.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CFF8D1A5E4C2097EF05E1021FE112886 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 37B6B4596E25AE5CE5BE1FE14A6AF93B /* SDWebImageIndicator.m */; }; + D06BB547D59D183FD1DDD84DEBAC9EE8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 360B7B34B46811D44994D83FAC09E663 /* SDWebImageCacheSerializer.m */; }; + D091F05269EE0566B665B00C7D912F8E /* Lookin_PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 230DC3B27944D3472C6A06DA7EEAF194 /* Lookin_PTChannel.m */; }; + D121163078CA9BBE54A83BD73EF784CF /* LSTPopViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 76DC37DEAFA5D12B1D7F9040EFB03DA5 /* LSTPopViewProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D1230E19DD1507E6370B80DF6653AC2A /* NSArray+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FBCAF641C4059BE19811532C4E3A0A2 /* NSArray+Lookin.m */; }; + D2AF9A7FD73B95960FDA4FD06C4BED08 /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 07752F7C2A34B933346F7E8E9D95461C /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2CD8848F856EC9942A76610AAE66F0A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A46088339E0DB93FCE586878F070297 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D3615499AFE4D2A8EC2E773F4D8A82B2 /* KeyValueObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = AF32E35E8F4552F6AF08F140AD085FE4 /* KeyValueObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D559CC4D0695CEE05F3B4C1C06475044 /* UIImageView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = EBD791825D3A6F564E4BA3B31B0F2BFB /* UIImageView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D5C046C46961BE465293625D6B870620 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CF307ACF82B2962F9E48DD0D029690F /* AFNetworking-dummy.m */; }; + D62A672EEB252581BD972DDA862BE1DD /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6407DC7FD67C9C74E0C3BA6B778AE0CD /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D662C83ECE8BEDA5FFB52F3575CA3E1A /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EDF0BD9574A366871EF5B3FBEFB906D /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; D663837F4347AF58660EE6F7FD426ECE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - D737D93725B0E072027AB6DA9C4DDDEC /* HWPanModalAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BF03DA63A4A2F42BE9BA070226F0116 /* HWPanModalAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D788BA4B9E8186271BA75CA52B30502C /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D9D5E9D7932C124D684E6F1F2A2ECE7D /* View+MASAdditions.m */; }; - D7B3E8948DB04BD8FB6748419DA03EA9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 015AD0623578CAD25A9859FBC263FF7D /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D89C7D5455E3E8E2D7EC6B880253BD9B /* LookinIvarTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D6FD1A2FA6EEC892A2DD294E5A7454 /* LookinIvarTrace.m */; }; - D90607B4E56247B19B14462E487BA86E /* MJRefreshNormalTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 82D7BEE16249F72113581170F4B17105 /* MJRefreshNormalTrailer.m */; }; - D90DED0F5638B1C44F4B6C62D600D240 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = D8F23CA3052D23EB11B0A898DB4A6E40 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D90DF1376DF5E2EA644313BCD2E03058 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = B0FB288C5320DA98E827641B6E277307 /* MJRefresh.bundle */; }; + D737D93725B0E072027AB6DA9C4DDDEC /* HWPanModalAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = CF585038948BE5BD9FDE25D090C77A52 /* HWPanModalAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D788BA4B9E8186271BA75CA52B30502C /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CF635A9AE952B4C70F06837B227DDCC /* View+MASAdditions.m */; }; + D7B3E8948DB04BD8FB6748419DA03EA9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5839F6C7ABFF6E515370151D7E470262 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D89C7D5455E3E8E2D7EC6B880253BD9B /* LookinIvarTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DDCF4465DE05312EF540D3B5319ADAF /* LookinIvarTrace.m */; }; + D90607B4E56247B19B14462E487BA86E /* MJRefreshNormalTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = CF5E2B29305178430BD510351FDD6C99 /* MJRefreshNormalTrailer.m */; }; + D90DED0F5638B1C44F4B6C62D600D240 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A75653F7F6754FE7D26DA5C94A641DE8 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D90DF1376DF5E2EA644313BCD2E03058 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 4056B0FA7CFCA3F0B3BA1F921297B1CC /* MJRefresh.bundle */; }; D968461E31E8FF3FF6BA1DC621B0433B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - DBA9500CBBA5FF6FCBBA115AE4D12152 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 59AF70C47DF0209B5D93F81A25EFB8EC /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBA9500CBBA5FF6FCBBA115AE4D12152 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9005237D68B29ED337A382B01C2917F8 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; DBB7D12AC159E50D059772E4B6CF1D2F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - DBD9152526A180771BF7D7CD209B957E /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 441DC5BA33205114F293CCFD73DE308D /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DBF03AD94698149E54474A5EAD083E11 /* Pods-keyBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */; }; - DCCBFE0D3914D33369C19AC135AB54AA /* HWBackgroundConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = A7BD9DB001526EC0DE681E63675B8318 /* HWBackgroundConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD7F63D4E4640C7386877BB787740272 /* LookinServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D1EC76CFF0744C55D60E83B26DB4807B /* LookinServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDA16FB9C21AD941442357DAE6939530 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E5ECA77AE05E0692E3C292A2212CC73 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DE5A78F116018E2AC54714238276574D /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D9BBE6A2F399A988F5BC26DB0D0BF68C /* UIActivityIndicatorView+AFNetworking.m */; }; - DE98ECCCA7106A4EA575EF34830D41FF /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FB8AAFEE45EE16BDE3F3360F400C9BF9 /* MJRefresh-dummy.m */; }; - DEA09692CF813A23899CD4949A9B6801 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 20E6DD81C23D61767D03656C92BA491A /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DED9ADFC8CC65243FC54E008A853742C /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 0371541F4560714A85B237456DEF997B /* MJPropertyKey.m */; }; - DF2B15402CE105F5A8CE48BBDCFFD5DD /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EDF4F1BB23D4262A7612DC313B361ED /* MASConstraint.m */; }; - DF525E5405FAD3B98B0C2D966EB2DD95 /* UIViewController+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 30CEF95FB390697B4C1ABB26A12E9B7E /* UIViewController+LookinServer.m */; }; - E0B48B9D5D45AF3500FC718459D66E6C /* LookinDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = C4282EA0E02DB360DBEA169BDB76A24E /* LookinDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E0BCF21E9FA59F638C13ECCECC4D9690 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4EF1B5176604A62648603F6832B989AC /* SDMemoryCache.m */; }; - E1B4145C5201DB66B65520B36849067C /* HWPanModal-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A94D2984C9A5BA88F4AA771F38B8314 /* HWPanModal-dummy.m */; }; - E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = E69955CA9C7B2AA324E3704014745EDF /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = B32295E122B71520322E84A41C7EE15B /* UIScrollView+MJExtension.m */; }; - E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = F46251B17D3526E25AB9571283064201 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4773572BED239AA7D618F1C05BAF51E /* HWPanModalPresentationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BA698A47BE0BCA54FA1B10EF6CD2196 /* HWPanModalPresentationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4F1B478580D6D7328BC29607BDE46F6 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A0744C22449018296AB633E5BC2C275 /* UIImage+ExtendedCacheData.m */; }; - E50613C67DD02AF6EA825DA0B31EFFAD /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = D6E12F6D8FA9D6FBA8E91CEC32AD4F92 /* SDImageGraphics.m */; }; - E55B3151D86660E28CEABC3CDE6B1508 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E448066D92C481C253D5FA5FC624A0D8 /* UIButton+AFNetworking.m */; }; - E5B057BC87284367918B2DB9CA084B4E /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = DF51D23D1444310275D4BB68151F1F60 /* MJRefreshAutoGifFooter.m */; }; - E7520DAA65004368C61453B8A2740295 /* HWPanModalShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 29982B3E12912C7BE794585B2B7F77CC /* HWPanModalShadow.m */; }; - E76969F9B01139118427505B18F9CD21 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EAAEC40E00FD2D67C7E5C46D561E1B8 /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E7FEAB9F421F7EBAF021F792D8E9C4D6 /* LookinCustomDisplayItemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 978791EF867BB9DF203262274A262783 /* LookinCustomDisplayItemInfo.m */; }; - E82964ED7092CDCDAD08BC596A57B43A /* UIImage+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = BAE82C8EA8816156B60A19B5AAA61D2B /* UIImage+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E8AB529B9E0B4C23921344F6C4ABFEA4 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 999C87FA7C5AA189886B4A2D58358BA9 /* SDImageCoder.m */; }; - E930A5612DC6D120BE040AD17C6D1BCD /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = CCFCCA3349FCD1D6463769CF4AAFD75C /* MASViewAttribute.m */; }; - E97B2C62D3EE772504A939BEE7D6B459 /* HWPanModalPresentationAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = B1272B72DEF143341E0CC0451AF17506 /* HWPanModalPresentationAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EA82B6D97C9C5D0558047AF552D63203 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = E031D032167FCBE18305712D789891F0 /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBD9152526A180771BF7D7CD209B957E /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 68BFCD31885FD8664001BB1EFAC74751 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DCCBFE0D3914D33369C19AC135AB54AA /* HWBackgroundConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 3583F45BB2A021FDC55DB56C5C606CB1 /* HWBackgroundConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD7F63D4E4640C7386877BB787740272 /* LookinServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 96AA5B4DE9A3DA12F53F6CB5D9AC99E2 /* LookinServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDA16FB9C21AD941442357DAE6939530 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 17E50DA329E2F435CC41C2257BD0C866 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDB268F1408C6AA5860C768310E9B9D6 /* LSTPopView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E90228ED50408CEB55B1257A093A4B1A /* LSTPopView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DE5A78F116018E2AC54714238276574D /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 37526D876665DA3E019DF167F09B21F4 /* UIActivityIndicatorView+AFNetworking.m */; }; + DE98ECCCA7106A4EA575EF34830D41FF /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 882CA8EEAEB3525FB7AD66F6FFC2CF6A /* MJRefresh-dummy.m */; }; + DEA09692CF813A23899CD4949A9B6801 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 119E6680DBF287ACAD4F054AA0D5AE17 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DED9ADFC8CC65243FC54E008A853742C /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = F032CA5D8067C46163CF052F106C2A2D /* MJPropertyKey.m */; }; + DF2B15402CE105F5A8CE48BBDCFFD5DD /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ADF5834236B788D4ADA4E85DBD68395 /* MASConstraint.m */; }; + DF525E5405FAD3B98B0C2D966EB2DD95 /* UIViewController+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F69E813A3DBBC0717A1A31E2B15A0606 /* UIViewController+LookinServer.m */; }; + E0B48B9D5D45AF3500FC718459D66E6C /* LookinDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 610E7F99F72A12BE4DBEF2C1ABF10115 /* LookinDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E0BCF21E9FA59F638C13ECCECC4D9690 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CC308EFB0F9E5B050F606DDD3E7A44F /* SDMemoryCache.m */; }; + E1B4145C5201DB66B65520B36849067C /* HWPanModal-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 13066DF230EEB3642E5BD7E5097A64F9 /* HWPanModal-dummy.m */; }; + E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 654D22CCA8871E0E0A65AB7C50503EB4 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = E02C6844FCB15EFA12DE7936E2D89768 /* UIScrollView+MJExtension.m */; }; + E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C8667A6D81C45427108730E481B7134F /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4773572BED239AA7D618F1C05BAF51E /* HWPanModalPresentationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 165D33815F330DB72870682C820A790B /* HWPanModalPresentationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4F1B478580D6D7328BC29607BDE46F6 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 16A00EF4CD873ABB9D94776FACC7C92F /* UIImage+ExtendedCacheData.m */; }; + E50613C67DD02AF6EA825DA0B31EFFAD /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = A4288DFF17DF27DEEB1590D7281FBBD7 /* SDImageGraphics.m */; }; + E55B3151D86660E28CEABC3CDE6B1508 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 77A510DEE4CCFDB66B19F133A209CDF3 /* UIButton+AFNetworking.m */; }; + E5B057BC87284367918B2DB9CA084B4E /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 55CB47F746B1E99E4F1E11247844A401 /* MJRefreshAutoGifFooter.m */; }; + E7520DAA65004368C61453B8A2740295 /* HWPanModalShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 883D06418312C016F973700D20558656 /* HWPanModalShadow.m */; }; + E76969F9B01139118427505B18F9CD21 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E3EA9E3A659E147112B9E7A63EEC56 /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7FEAB9F421F7EBAF021F792D8E9C4D6 /* LookinCustomDisplayItemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B417F374DC024262C256083E5EB6F70 /* LookinCustomDisplayItemInfo.m */; }; + E82964ED7092CDCDAD08BC596A57B43A /* UIImage+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = E9004778D6831458C102A879DA83C285 /* UIImage+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E8AB529B9E0B4C23921344F6C4ABFEA4 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = A43798E6CE0478C1CA6ECFD6AE110593 /* SDImageCoder.m */; }; + E8BB439BCA39F3ED41FF185D6A61EA98 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 28D5D9D40BE7D9F76DB8A620D92D6F6C /* PrivacyInfo.xcprivacy */; }; + E930A5612DC6D120BE040AD17C6D1BCD /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 051A3BFDC2997068DD4E7A11FEBAE63E /* MASViewAttribute.m */; }; + E97B2C62D3EE772504A939BEE7D6B459 /* HWPanModalPresentationAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A142314C8E6BF405461AFD41E16D08 /* HWPanModalPresentationAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA82B6D97C9C5D0558047AF552D63203 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B4B2DB5DB2A6C79E9C1A5ABA6070B58 /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; EABCB60A26B06BF576E50BBD2F89A385 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - EB3DF628891F7D6AB114718AF760CB2A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = A79588184FF24FC5EB3FA3987629C30B /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB646114ABEA7A4D6C2A724404778670 /* LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E7070EAE3CD21654B5DD5A9531D12AF /* LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8E84A8FFADDCA562A8608D141D9027 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = C0271A933F5E2DB9D6CC456E988103D1 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC9B34262AED632D7EFB49804337648E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = F56A3D2CEFC20C7B8AF2EDF3674BEE77 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECE64B732F9FA7C402DDEEC58DCB9D98 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 07FE3729A86CE6B36944299B52BB3BBE /* SDImageAPNGCoder.m */; }; - ED8991A8AE7C04362C2BED3875DC1656 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = D62A25339DF2EED2DFE6F9001320C81F /* AFURLResponseSerialization.m */; }; - ED8F64FF98CFAE0B12CF60A1B0E6BAF8 /* SDCallbackQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C495E6705380977CFF34DEFD621BF49 /* SDCallbackQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EDB9E11998290348E4DFB5140D678942 /* HWPanContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = F50930AF985486436650C129CC8670FF /* HWPanContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE6E8FE636D2C02E3D2FC1E8555B4612 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 64C4273F666802A12C990C543C5413E3 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EED016DE8173CD38CC01D88CD2628984 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = A60394A4E8FFC5CBCC2FD14258C5085A /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EF6A6C725598F572A70C5FCEE328C184 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2FE4E0AF6CE972936C63A285E8C573B7 /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB3DF628891F7D6AB114718AF760CB2A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 09060CD8F1658C398DC40CC0221DB178 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB646114ABEA7A4D6C2A724404778670 /* LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A8107C05A5879CBA4916F6AD4685D772 /* LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC8E84A8FFADDCA562A8608D141D9027 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 741395EF99DABB64E0E04129DB222FD2 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC9B34262AED632D7EFB49804337648E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = FE45E33A4A0C09CD0EBB222B7E40EE72 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ECE64B732F9FA7C402DDEEC58DCB9D98 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B9528B0058E986186BACF5E7A40A742 /* SDImageAPNGCoder.m */; }; + ED8991A8AE7C04362C2BED3875DC1656 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = AFF39BEB58B97CA8F3DFDE7996909112 /* AFURLResponseSerialization.m */; }; + ED8F64FF98CFAE0B12CF60A1B0E6BAF8 /* SDCallbackQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FC0CB167AF5751B03431E60D722046F /* SDCallbackQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDB9E11998290348E4DFB5140D678942 /* HWPanContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 802FB1A32618485AA28D17584662FBAF /* HWPanContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE6E8FE636D2C02E3D2FC1E8555B4612 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B25FB3699225E9D90B118E0F624383B /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EED016DE8173CD38CC01D88CD2628984 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = DA0B23D302091DCF531627DB2F06A5BA /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EF6A6C725598F572A70C5FCEE328C184 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 524E9F65E894111FFD9563F30298E596 /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; F1A04C26FAF235FD6B0AF30E7ACD5DD5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - F1D845E22D5B8FC6AFC3C2E41DA1B6DF /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D881DD0CA33CD1E3EFE0136A615F1F65 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2AD91050B1FE3C8BC78567F1FDE3ED5 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = E1A687EF38913970F24032AD57F99A10 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2C9F9038FBEFD951516694AE873A2B9 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = 7020F5FD7E08D02DFB263422BBB5EBCE /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3263D294D688533EB974E37C61F1E24 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 790F5BF1A1AB8405DB8FFB5F37D2BA39 /* MJExtensionConst.m */; }; - F3AECEF6D3BB919B3E7392942E1BC58B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 464A4EBDD6079658F375B8BE36A1D224 /* MJRefreshBackFooter.m */; }; - F3DA1005917E252B306712DAAA287FB0 /* UIViewController+PanModalDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 99AE60DF16539817ECDA464B8C0BF588 /* UIViewController+PanModalDefault.m */; }; - F3F4A6309BD95DFAA4DCC60A4E07C515 /* UITableView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 952745F4CCA16F79D572D39513608DA3 /* UITableView+LookinServer.m */; }; - F47EBDD360E642A0499A767BC7C17B4B /* HWPanIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 30B685B44F3C08EAECD172ACBC891B15 /* HWPanIndicatorView.m */; }; - F49CB22863CCFEC7817D259F27F91C57 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D17878F639EAB83DF1DC258E92939A6 /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F53BE4449AE5896F76325E4DCB6D0B13 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9A43BA63699738F29455B4DD47483A5A /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F600BB873FD4764BAA9E02826F804486 /* FLAnimatedImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 058E0E64069CAF10E824026FF1D35605 /* FLAnimatedImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F60F90EAF35CFF40DF1C33557965787D /* MJRefreshStateTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A4EE28576256BE0B9CC54DFE985D554 /* MJRefreshStateTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F62B0711DA506CCB3DF79F65134566C7 /* Lookin_PTPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = B7824533FC35957318C6FAF5ECA425E7 /* Lookin_PTPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F68889CD481716EE5D6B75EBD8FD53A6 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F5E0853FDC6EA439AD5D1AA134CD117B /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A0D6EA1B5DC3FE04DC4A1B0A914121 /* UIView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F258393A5F61F1A41DB0116A1995DB1 /* UIView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A2DEEA8E8B92D365AFDDBD5E8C1218 /* NSObject+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 20B8751D1FBB7C171FFFD79AABA096D9 /* NSObject+Lookin.m */; }; - F6A34F74BE7FE816114D7F3902296AF2 /* HWVisualEffectView.m in Sources */ = {isa = PBXBuildFile; fileRef = B466F948757742572AAEA4DF218BD987 /* HWVisualEffectView.m */; }; - F6D1C960368EB1E067ABD0BFF707FC56 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = E3ED3F5FB825F25AD8EB19CE0AC86B77 /* MASConstraintMaker.m */; }; - F7623E7C314AA5010D8D0BD6ED4AAAD4 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EBA537DA26B64728CA51AC60E7A2FB3 /* AFImageDownloader.m */; }; - F8616FAFEE1124368CB96473CE20CDB4 /* LookinAttrIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BB291C0467B8A072E8C1CE10A701CA2 /* LookinAttrIdentifiers.m */; }; - F8F1B1196CAA5114BA9A95AA7E6D6AEB /* UIBlurEffect+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 124DF602FD739DD4C0E67F1917B46C09 /* UIBlurEffect+LookinServer.m */; }; - F9789D86D3279D71B398B550F27C3EFF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = C93CA5E20848AEFCB61E12D54CCA6ADF /* AFSecurityPolicy.m */; }; - FA3021DED76B9B182CC9195A60EB1209 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 10F69E78EAD8ECCB195A68616180404D /* NSBezierPath+SDRoundedCorners.m */; }; - FA6DA93357E2E9E9AADDFB3E39DEB6C2 /* NSObject+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F40EDACBF252622C1F7696222AA5BA40 /* NSObject+LookinServer.m */; }; + F1D845E22D5B8FC6AFC3C2E41DA1B6DF /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A1CAA004ADB375344EE1C0A0FF7E804F /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2AD91050B1FE3C8BC78567F1FDE3ED5 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 201F7289F3B83B98F487EC194493B7F3 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2C9F9038FBEFD951516694AE873A2B9 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = CD29BD8633F552915B08BF15C7E0DFFF /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3263D294D688533EB974E37C61F1E24 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BF099C561E70E7E4EDAC96628F02E58 /* MJExtensionConst.m */; }; + F3AECEF6D3BB919B3E7392942E1BC58B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = AFFA5747833468A5901D8AA31E822627 /* MJRefreshBackFooter.m */; }; + F3DA1005917E252B306712DAAA287FB0 /* UIViewController+PanModalDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DDEE4190CA21B03ED83225BEC5FAC7D /* UIViewController+PanModalDefault.m */; }; + F3F4A6309BD95DFAA4DCC60A4E07C515 /* UITableView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = FF06402E5B9C49B794955B31F8067263 /* UITableView+LookinServer.m */; }; + F47EBDD360E642A0499A767BC7C17B4B /* HWPanIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88E8C1FFE2A2D6CB9741EF2354A3B30E /* HWPanIndicatorView.m */; }; + F49CB22863CCFEC7817D259F27F91C57 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = C657F16F9FE7919D2B27F05D611C2F2D /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F53BE4449AE5896F76325E4DCB6D0B13 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 023A9DE33A4A369492D910BE237BE415 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F600BB873FD4764BAA9E02826F804486 /* FLAnimatedImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 56083A8D73CF98D49960B5783A36797F /* FLAnimatedImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F60F90EAF35CFF40DF1C33557965787D /* MJRefreshStateTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = F83A870FD420501FBBA293B2D6A26AD0 /* MJRefreshStateTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F62B0711DA506CCB3DF79F65134566C7 /* Lookin_PTPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = CF38798B2D107B8F8B096B856DF98A24 /* Lookin_PTPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F68889CD481716EE5D6B75EBD8FD53A6 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = B0023999B588A745D2530760778D09F9 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A0D6EA1B5DC3FE04DC4A1B0A914121 /* UIView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EDC641564DA302B6FFCBFCFFFAC5BA7 /* UIView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A2DEEA8E8B92D365AFDDBD5E8C1218 /* NSObject+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 85937FAC419CB28614ECAA70CE249673 /* NSObject+Lookin.m */; }; + F6A34F74BE7FE816114D7F3902296AF2 /* HWVisualEffectView.m in Sources */ = {isa = PBXBuildFile; fileRef = C15066DB017692FFB93D6BF3C34128D3 /* HWVisualEffectView.m */; }; + F6D1C960368EB1E067ABD0BFF707FC56 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FBE26B2A8BA76D5AA3E371D3CA2EAE6 /* MASConstraintMaker.m */; }; + F7623E7C314AA5010D8D0BD6ED4AAAD4 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = B1ABBFCC8D2F6B393D3F4389129E97F5 /* AFImageDownloader.m */; }; + F7815C2FBD9D954D0C2F3BF0BD6EB813 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = F4AF21DC4288D196E2F556338C3101AE /* PrivacyInfo.xcprivacy */; }; + F8616FAFEE1124368CB96473CE20CDB4 /* LookinAttrIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = CB96704A28B66FFCFA6B43392123348C /* LookinAttrIdentifiers.m */; }; + F8F1B1196CAA5114BA9A95AA7E6D6AEB /* UIBlurEffect+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 62ED382544D99079829F5E202E6E84A7 /* UIBlurEffect+LookinServer.m */; }; + F9789D86D3279D71B398B550F27C3EFF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = ED1DD2A27A7141151DAB033BD707A1EF /* AFSecurityPolicy.m */; }; + FA3021DED76B9B182CC9195A60EB1209 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 63746C791045958FEE981F032ACCAECE /* NSBezierPath+SDRoundedCorners.m */; }; + FA6DA93357E2E9E9AADDFB3E39DEB6C2 /* NSObject+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C899184976415922E8F39B277C1766 /* NSObject+LookinServer.m */; }; FB6E014B34F33B89E5060DA1F00168A5 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */; }; - FC32143CA2A916F032F2B569313315AA /* HWPanContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A148033E0AD112C21B19DC7D700C287 /* HWPanContainerView.m */; }; - FCDEC6A53CF5517E1AF5B331FD65F6D9 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A9880E3C5631DD575998A17C1EAAFFE /* SDImageCacheConfig.m */; }; - FCEE5BD645E95FF55468C4AB6D17CFDA /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 64FC3145438669B612415058A5D1C68B /* UIImageView+HighlightedWebCache.m */; }; - FD3AF10F8723DABEE406D25592B5F562 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A049DB74A9BEE7FA98C208416BBDD60 /* FLAnimatedImageView.m */; }; - FDACBA49610EA6F39CABB7FE44B137D1 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 96090B4F5197A5FD0B3684BBF9CE7D69 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FC32143CA2A916F032F2B569313315AA /* HWPanContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = BFC6D8F98A0A99B4F62553DD6B2DE362 /* HWPanContainerView.m */; }; + FCDEC6A53CF5517E1AF5B331FD65F6D9 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9694A97A95DD31F14A6A155FCCFE7837 /* SDImageCacheConfig.m */; }; + FCEE5BD645E95FF55468C4AB6D17CFDA /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F6EA8BCC592FC8C87F6AB86D1783731 /* UIImageView+HighlightedWebCache.m */; }; + FD3AF10F8723DABEE406D25592B5F562 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81B71B9BB50BFCB7CBC2B6455296C14B /* FLAnimatedImageView.m */; }; + FDACBA49610EA6F39CABB7FE44B137D1 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = EF6748BE01C63A0BA85DC20DBF82AD80 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; FDD4C4D4F03502D5CB0B8763009A0948 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */; }; - FE07C069C2E3543002CEB5D751ABA9AC /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F1D4E5D74AB2CB580743562EDDD74A4B /* AFNetworkReachabilityManager.m */; }; - FEA8BA4F82CCBD1D28DCC7EF39FB4096 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 24B77E5B834F553CB4EB67CF38D1658B /* SDImageCacheDefine.m */; }; - FEE3D901B4A4638F9E00935144E982B3 /* HWPanModalPresentableHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 50AB72625252A5E15E31076E002BFCDA /* HWPanModalPresentableHandler.m */; }; - FEE883575278D5BE8F185437AB5DB3BB /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 168B21798FA2C6BC6767C95E619EFE04 /* MJRefreshGifHeader.m */; }; - FF106518AFECA24E74B1D649E4F9AC70 /* HWPanIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 99D142261C81911E0D8BD4684EC87BB5 /* HWPanIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FFC6D50089FA32FD7AAF25747E56EA60 /* LKS_CustomAttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AD7CA2EC862D2306679B92B10C85B4D /* LKS_CustomAttrGroupsMaker.m */; }; + FE07C069C2E3543002CEB5D751ABA9AC /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDACCA592A0A0FC0428384009A75BD5 /* AFNetworkReachabilityManager.m */; }; + FEA8BA4F82CCBD1D28DCC7EF39FB4096 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = BDC5D95848173A06A25E49216A4BEFDC /* SDImageCacheDefine.m */; }; + FEE3D901B4A4638F9E00935144E982B3 /* HWPanModalPresentableHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B876DE6F099D679F03040B8EF24E5C82 /* HWPanModalPresentableHandler.m */; }; + FEE883575278D5BE8F185437AB5DB3BB /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 820CCFAA740875554C05F59A0958E53B /* MJRefreshGifHeader.m */; }; + FF106518AFECA24E74B1D649E4F9AC70 /* HWPanIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 03CB4C12A5B494B4ECDEC92BC32E7490 /* HWPanIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FFC6D50089FA32FD7AAF25747E56EA60 /* LKS_CustomAttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BC0E1D78C95F4CC731325A284A8FC80 /* LKS_CustomAttrGroupsMaker.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 16A3AE428B6730C115D886BB1D093565 /* PBXContainerItemProxy */ = { + 01F386055DA043124AA00537EC691754 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; + remoteGlobalIDString = 8B7D23DD98E41BAE91418E9E85F191D6; + remoteInfo = LSTPopView; }; - 2A844DF7EB83D82BDFB8EBD48D398A77 /* PBXContainerItemProxy */ = { + 02DDA276267B945D512FC6AF69590E37 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; - remoteInfo = DZNEmptyDataSet; + remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; + remoteInfo = MJExtension; }; - 3D4D160BA53FFAEBFA15602EF206AF18 /* PBXContainerItemProxy */ = { + 077F2AA4B2BF11943204812B533088F5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; - remoteInfo = MBProgressHUD; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; }; - 3DADDD414405E1608F5E53FA546F0683 /* PBXContainerItemProxy */ = { + 1B50A2D51242B1B501E7A8FE17921A95 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B32AF3F43989CBA171BB1FB3957A4509; - remoteInfo = "MJExtension-MJExtension"; + remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; + remoteInfo = LSTTimer; }; - 48A3998D02E8C6CE503B67AEF4201A9E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; - remoteInfo = MBProgressHUD; - }; - 53436DF6632E3EA7570FFCAF0043D337 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4A8E8992707D01510894596DB9BCCA00; - remoteInfo = FLAnimatedImage; - }; - 637C06B2D3FCA697F91C75E07050A564 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B26054DF1DEA11585A231AF6D1D80D5E; - remoteInfo = "MJRefresh-MJRefresh.Privacy"; - }; - 8A15E01E24CFF0D6326188BC70ED8D54 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; - remoteInfo = SDWebImage; - }; - 9C7907B511C5E05A0898367B21C98132 /* PBXContainerItemProxy */ = { + 1C0C3A0BDFA6BDE041DC3D513C5650B3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4A68CFD979D413A619DF631BB121D98F; remoteInfo = Bugly; }; - A6418FEFA13B0CC9A6A43072F418FF50 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 31DCABABCA873FBA7A92FEB47D71ED8E; - remoteInfo = HWPanModal; - }; - AB5F78A9F2AF013979DDC5609581D438 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; - remoteInfo = LookinServer; - }; - AB7581572FF4E1AD0E3EAF6948CD6FDB /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; - remoteInfo = DZNEmptyDataSet; - }; - B3DE694415E78DB7C365C1C1AFA7DAC6 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; - remoteInfo = MJExtension; - }; - B6CB86E5B6D367721C43659AE5015027 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; - }; - B7E9478012E785A9A105D255A83783E4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; - }; - DE04810BEAD33737F5D80FEF4299D57D /* PBXContainerItemProxy */ = { + 2307258CB6BB82D24A7CA6B7975B1292 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 94CFBA7D633ECA58DF85C327B035E6A3; remoteInfo = "SDWebImage-SDWebImage"; }; - E706D6D60256E57E5FB469EB7708C200 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; - }; - EE2CA5E8D8591CAB500C01C15555AC6F /* PBXContainerItemProxy */ = { + 2F4CEC846087978E04621E966B9DFF49 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; remoteInfo = MJExtension; }; - F862CA9AADBD981FC5FBB9541050A76D /* PBXContainerItemProxy */ = { + 5ABBB136A0AE8EE61D30E75F4BE8572E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 31DCABABCA873FBA7A92FEB47D71ED8E; + remoteInfo = HWPanModal; + }; + 5ECDD709038035A28044669BFFE06267 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; + remoteInfo = DZNEmptyDataSet; + }; + 5F98F8D71CDA25588EE186F7253F367F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; + remoteInfo = MBProgressHUD; + }; + 7FA3D0787FAE50268674AAEE62D45295 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + 80217EE617C295C4C81AA1DCF5D85E7E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B32AF3F43989CBA171BB1FB3957A4509; + remoteInfo = "MJExtension-MJExtension"; + }; + 92CA63B3B20D5FAC965226A6920F1BE4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; + remoteInfo = LookinServer; + }; + 95E55F6C03A77816AFA1A59466D8CD82 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; remoteInfo = MJRefresh; }; + 9946EDF6CEC75931EE3BCF2D4DC70585 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B26054DF1DEA11585A231AF6D1D80D5E; + remoteInfo = "MJRefresh-MJRefresh.Privacy"; + }; + 9F4B8D116BF04BD4F5A8C8D781DA5D62 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; + }; + B12FC64FF473558C45076A0CEB7D47D1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; + remoteInfo = DZNEmptyDataSet; + }; + B57744F595F66358CF4816DD4793C8A6 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4A8E8992707D01510894596DB9BCCA00; + remoteInfo = FLAnimatedImage; + }; + BDE883F6A985897AA115496E325146FA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; + remoteInfo = MBProgressHUD; + }; + DE9FD566A2ADE13D0844AD68D51F7EAF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; + }; + EC0084E5D95CC67D69BF4291415A7EE1 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; + remoteInfo = SDWebImage; + }; + FBA8C5046E304FE4BB90D14C4A529288 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; + remoteInfo = LSTTimer; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 005101F7C4901700207336B75CF59476 /* LKS_Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_Helper.h; path = Src/Main/Server/Others/LKS_Helper.h; sourceTree = ""; }; - 0148667426C0D159DF2496AD2E147C13 /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; - 015AD0623578CAD25A9859FBC263FF7D /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; - 018E89B3130206293240B03D8960F18B /* LookinIvarTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinIvarTrace.h; path = Src/Base/LookinIvarTrace.h; sourceTree = ""; }; - 01DAF6FB6694A07703202991DBBEA497 /* UIView+HW_Frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+HW_Frame.h"; path = "Sources/Category/UIView+HW_Frame.h"; sourceTree = ""; }; - 02BD81280735E95FA2620927041EAC86 /* LKS_Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_Helper.m; path = Src/Main/Server/Others/LKS_Helper.m; sourceTree = ""; }; - 0371541F4560714A85B237456DEF997B /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; - 041476A9D72BD942940B39097904435C /* UIViewController+PanModalPresenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalPresenter.m"; path = "Sources/Presenter/UIViewController+PanModalPresenter.m"; sourceTree = ""; }; - 04473A3692FBECA15A32A1C477843F8E /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; - 054A388C6D56EE31CFBD5161B49B08DF /* LKS_CustomAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.m; sourceTree = ""; }; - 058E0E64069CAF10E824026FF1D35605 /* FLAnimatedImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-umbrella.h"; sourceTree = ""; }; - 0638217979CCFF20B7C6FAFF407CC6B6 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; sourceTree = ""; }; - 06BB1170E7630AD9AB926EE90BE5F730 /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; - 0702AAD171A65EE6A8D28E93A9B62802 /* LKS_HierarchyDetailsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDetailsHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.m; sourceTree = ""; }; - 070F9E5A12CC270070B53AA6E4DE380D /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; - 0746C9ECCE5759599C9E24C14B8E12DA /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; - 07A233E548536FE36D9750CB427DC711 /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; - 07B9FDD5A40301D416EBF36F170E33FC /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; - 07FE3729A86CE6B36944299B52BB3BBE /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; - 08732566CBDE3EB293493BCD102835A7 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; - 08CEA16AAD05A8A9CB6FB2E2306DD5A9 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SDWebImage-SDWebImage-Info.plist"; sourceTree = ""; }; - 099894DB44BB1249366F618379B45D6F /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; - 0A13200BEAF87753F31130AD74C5CE5B /* LKS_AttrModificationPatchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrModificationPatchHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.m; sourceTree = ""; }; - 0A148033E0AD112C21B19DC7D700C287 /* HWPanContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanContainerView.m; path = Sources/View/HWPanContainerView.m; sourceTree = ""; }; - 0A7EA19F3D14069449EA7F1B04E206C1 /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; - 0A9880E3C5631DD575998A17C1EAAFFE /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; - 0AB04D07CCC6BB644C691A1B75189B56 /* Lookin_PTUSBHub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTUSBHub.h; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.h; sourceTree = ""; }; - 0AD7CA2EC862D2306679B92B10C85B4D /* LKS_CustomAttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.m; sourceTree = ""; }; - 0B1027E2DC84E88E6F5E35A21EB804D5 /* MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJExtension-Info.plist"; sourceTree = ""; }; + 0004D14E99E5CD92EA09732F82694FF5 /* HWPanModalPresentationAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationAnimator.m; path = Sources/Animator/HWPanModalPresentationAnimator.m; sourceTree = ""; }; + 0041D895443AAAA3D1BCD4056EBB4F37 /* UIViewController+LayoutHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LayoutHelper.m"; path = "Sources/Presentable/UIViewController+LayoutHelper.m"; sourceTree = ""; }; + 00F09038ADB7D3ACE57173DD781066A5 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; + 0175DE132412321B3302CBE48CE0F712 /* LookinAutoLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAutoLayoutConstraint.m; path = Src/Main/Shared/LookinAutoLayoutConstraint.m; sourceTree = ""; }; + 01B6539E05000228B7BBD9BA57EDF5E3 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; + 01CCBFAC5118E8E6A44DA067EF8F2523 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; + 023A9DE33A4A369492D910BE237BE415 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; + 02B660DF025FBF070A8248624E25ED79 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; + 03BAE9F573ECB0A822C6757CBF10AB0E /* LookinConnectionAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionAttachment.m; path = Src/Main/Shared/LookinConnectionAttachment.m; sourceTree = ""; }; + 03CB4C12A5B494B4ECDEC92BC32E7490 /* HWPanIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanIndicatorView.h; path = Sources/View/HWPanIndicatorView.h; sourceTree = ""; }; + 03D72CC56F0CB2FCCB14E1335C16D41B /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; + 04A09AD12EF8C816FA9546838C3F429E /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; + 04A251837ED47D22FF5ACBFA97F91D4A /* LKS_TraceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_TraceManager.m; path = Src/Main/Server/Others/LKS_TraceManager.m; sourceTree = ""; }; + 04D3C87C11221ADDA77670ED0731D145 /* LKS_CustomAttrSetterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrSetterManager.m; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.m; sourceTree = ""; }; + 04FCA007C5BE63FC5541B26878E3DE79 /* HWPanModal.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HWPanModal.modulemap; sourceTree = ""; }; + 051A3BFDC2997068DD4E7A11FEBAE63E /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; + 0531DC0648DD160A9576D09368C28017 /* LookinAttributesSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesSection.m; path = Src/Main/Shared/LookinAttributesSection.m; sourceTree = ""; }; + 057F1DBD0EB25FF8CA833DC6F478BF32 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; + 05E1785189AB18B6B47ECD584144AA0F /* KeyValueObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KeyValueObserver.m; path = Sources/KVO/KeyValueObserver.m; sourceTree = ""; }; + 069FA883A4FACC46317AB2BE1BDE30E4 /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; + 074925B1189A88BAA6297431490B8041 /* LookinAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttribute.h; path = Src/Main/Shared/LookinAttribute.h; sourceTree = ""; }; + 07752F7C2A34B933346F7E8E9D95461C /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; + 086D3945C39C8554602424E64D1A9F0B /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; + 0874A58BB3E268A75B1BD3D594CBAA2D /* LSTPopView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.debug.xcconfig; sourceTree = ""; }; + 09060CD8F1658C398DC40CC0221DB178 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + 090BA40A2CB6D8D73A78895D821E7E93 /* Bugly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.release.xcconfig; sourceTree = ""; }; + 093706FD3573E105CD2368D496C2DF76 /* HWPanModalPresenterProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresenterProtocol.h; path = Sources/Presenter/HWPanModalPresenterProtocol.h; sourceTree = ""; }; + 0AE63A9BC3D50E34C84263A87F782ACA /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-CustomKeyboard"; path = Pods_CustomKeyboard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0B52C0333B4CADD3A0F9EB411374E73E /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; - 0BB10D586B41516BBFB3A82A983FB648 /* DZNEmptyDataSet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DZNEmptyDataSet-Info.plist"; sourceTree = ""; }; - 0BD99371527F7C150CF7C859DEE75697 /* Peertalk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Peertalk.h; path = Src/Main/Shared/Peertalk/Peertalk.h; sourceTree = ""; }; - 0C180A1C6E6C287310FABCB81CBEEB07 /* HWPanModalPresentable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentable.h; path = Sources/Presentable/HWPanModalPresentable.h; sourceTree = ""; }; + 0BF099C561E70E7E4EDAC96628F02E58 /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; 0C4AE62ED97252893F28F670D61AFB24 /* Pods-keyBoard-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-keyBoard-Info.plist"; sourceTree = ""; }; + 0C895614137416E86433C8E5EAF1D3CD /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; + 0CCA79288E187B2D3860B6A703D2D460 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; + 0CE9728E85B8432ED072CD0DC7926F20 /* UIView+LSTPV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LSTPV.m"; path = "LSTPopView/Classes/Code/UIView+LSTPV.m"; sourceTree = ""; }; + 0D53461EC25E2C6DAE3F3C2ABD951A2B /* LKSConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKSConfigManager.h; path = Src/Main/Server/Others/LKSConfigManager.h; sourceTree = ""; }; 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CustomKeyboard.debug.xcconfig"; sourceTree = ""; }; + 0DDEE4190CA21B03ED83225BEC5FAC7D /* UIViewController+PanModalDefault.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalDefault.m"; path = "Sources/Presentable/UIViewController+PanModalDefault.m"; sourceTree = ""; }; + 0E350DE3AE3DE0F5FC5BD9A2EB159387 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; + 0E376CA03D27B523F7F180B9EC99BD7C /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; + 0E5F47A6ED542F1D0EAA4DD94091B61C /* HWPanModalContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContentView.h; path = Sources/View/PanModal/HWPanModalContentView.h; sourceTree = ""; }; 0E732C0D026ACBC7DBD039DC3BDC2BCE /* Pods-keyBoard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-keyBoard.modulemap"; sourceTree = ""; }; - 0EC3BDE6337E9995ACF80D1DE71F506A /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; - 0EDF4F1BB23D4262A7612DC313B361ED /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; - 0F3CFDDCD2AEFF399B69D429BD035229 /* Color+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Color+Lookin.m"; path = "Src/Main/Shared/Category/Color+Lookin.m"; sourceTree = ""; }; - 0F498FCFBEA5766BBF0C258824B66B52 /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; - 105C0E572020BAFC2F3F07702779A020 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; - 10BE44D639650FFA77A358DCD2603F89 /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; - 10F69E78EAD8ECCB195A68616180404D /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; - 110654C4ECBD914896546F497CDC625F /* UIView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LookinServer.m"; path = "Src/Main/Server/Category/UIView+LookinServer.m"; sourceTree = ""; }; - 115D9A38E828733E2521BA1DFE025D50 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; - 121C303DCF5199C717010EF66462BD05 /* HWPanModalContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContentView.m; path = Sources/View/PanModal/HWPanModalContentView.m; sourceTree = ""; }; - 1225A7D188B98E6C6CFDCC9B804BAE8D /* LookinHierarchyFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyFile.m; path = Src/Main/Shared/LookinHierarchyFile.m; sourceTree = ""; }; - 124DF602FD739DD4C0E67F1917B46C09 /* UIBlurEffect+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBlurEffect+LookinServer.m"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.m"; sourceTree = ""; }; - 140C8B875FF37FDF9A95CB04C9916AF9 /* UICollectionViewLayout+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+MJRefresh.m"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.m"; sourceTree = ""; }; - 14121BAD9B9FA92863D1125B50D54DF4 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; - 144086F1366328F4F927C4F459E44619 /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; - 145C211EEEAD63D4C0AE8467C821D14F /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; - 1527F49078C26F2BAB6E17A11F0AC9A9 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; - 163946A4F251CC5F8129585DD75C0870 /* HWPanModalPresentationUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationUpdateProtocol.h; path = Sources/Presentable/HWPanModalPresentationUpdateProtocol.h; sourceTree = ""; }; - 164010F68ED1F6E6A182B7EA3554A43D /* UIImageView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+LookinServer.m"; path = "Src/Main/Server/Category/UIImageView+LookinServer.m"; sourceTree = ""; }; - 1651052462F8B04B5877450A1292E16B /* LookinHierarchyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyInfo.m; path = Src/Main/Shared/LookinHierarchyInfo.m; sourceTree = ""; }; - 1657973127018C3379A034BF182EF686 /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; - 168B21798FA2C6BC6767C95E619EFE04 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; - 1724C6EB60601A5723C7A0972AA8DB97 /* LKS_ExportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ExportManager.m; path = Src/Main/Server/Others/LKS_ExportManager.m; sourceTree = ""; }; - 172CDF64113E561EE805F3B18B58DE98 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/include/FLAnimatedImage.h; sourceTree = ""; }; - 185D7C79C92B324E08CCA23E8410B9BB /* LookinDashboardBlueprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDashboardBlueprint.h; path = Src/Main/Shared/LookinDashboardBlueprint.h; sourceTree = ""; }; - 18F1A2756FCB9AE94DFF016BE720ED41 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; - 198BCFF4D9AF651D5B86774921D624E2 /* CALayer+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+LookinServer.h"; path = "Src/Main/Server/Category/CALayer+LookinServer.h"; sourceTree = ""; }; - 19C0CBEB4A5292C9975C224EC1464049 /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; - 1A3FD8D5295BC5DADF9B48122C08A03D /* LKSConfigManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKSConfigManager.m; path = Src/Main/Server/Others/LKSConfigManager.m; sourceTree = ""; }; - 1AF87BA87F8CBB4575826A086C4B0871 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; - 1B289F862BC27A4B0060A4CFBD40E1E1 /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; - 1BA698A47BE0BCA54FA1B10EF6CD2196 /* HWPanModalPresentationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationDelegate.h; path = Sources/Delegate/HWPanModalPresentationDelegate.h; sourceTree = ""; }; - 1BF03DA63A4A2F42BE9BA070226F0116 /* HWPanModalAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalAnimator.h; path = Sources/Animator/HWPanModalAnimator.h; sourceTree = ""; }; - 1BF7200D05201E490C12951549D2240D /* LKS_CustomDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.m; sourceTree = ""; }; - 1D640B445F4284F72C568FEB8607AA99 /* UITextView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+LookinServer.m"; path = "Src/Main/Server/Category/UITextView+LookinServer.m"; sourceTree = ""; }; + 0E7B3F97FDF9522DB3E4FADD3DB88700 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; + 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; + 0F067A700BA9565969A60D7617155FBC /* LSTTimer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTTimer.m; path = LSTTimer/Classes/LSTTimer.m; sourceTree = ""; }; + 107D93AEC1E186A8F21341BFB523B22C /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; + 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.release.xcconfig; sourceTree = ""; }; + 109CFCE9774385E51695E82E530412B8 /* UIView+HW_Frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+HW_Frame.m"; path = "Sources/Category/UIView+HW_Frame.m"; sourceTree = ""; }; + 10A8507648AC9DE21CFA0929B1ED0404 /* HWPanModalInteractiveAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalInteractiveAnimator.h; path = Sources/Animator/HWPanModalInteractiveAnimator.h; sourceTree = ""; }; + 10D1C021B7050EF6841A364EE9A0A570 /* HWDimmedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWDimmedView.m; path = Sources/View/HWDimmedView.m; sourceTree = ""; }; + 110C7A39306E93E5D29F1709FE16720F /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; + 119E6680DBF287ACAD4F054AA0D5AE17 /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; + 11A5C3D2E3080F2A5EECFB7F1FC6C319 /* HWBackgroundConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWBackgroundConfig.m; path = Sources/View/HWBackgroundConfig.m; sourceTree = ""; }; + 13066DF230EEB3642E5BD7E5097A64F9 /* HWPanModal-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HWPanModal-dummy.m"; sourceTree = ""; }; + 13527772A4A54A71A31658A3E36E2474 /* LKS_RequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_RequestHandler.m; path = Src/Main/Server/Connection/LKS_RequestHandler.m; sourceTree = ""; }; + 140B9E97F5B5BEB056AA3A4DFFA9891B /* LookinDashboardBlueprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDashboardBlueprint.h; path = Src/Main/Shared/LookinDashboardBlueprint.h; sourceTree = ""; }; + 141D1CCF79DF1688C14B5C5A4CACC6E0 /* Peertalk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Peertalk.h; path = Src/Main/Shared/Peertalk/Peertalk.h; sourceTree = ""; }; + 14454326E9CB6046C0CA3ABA3A33F187 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; + 1458CC53A93F0D10D4564ECD3E1C2D28 /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; + 16276D593D3F4D227902AF3A1424A4AC /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; + 165D33815F330DB72870682C820A790B /* HWPanModalPresentationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationDelegate.h; path = Sources/Delegate/HWPanModalPresentationDelegate.h; sourceTree = ""; }; + 16A00EF4CD873ABB9D94776FACC7C92F /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; + 17E50DA329E2F435CC41C2257BD0C866 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; + 17FD1B21DCC89D66865655294A85A817 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; + 18C899184976415922E8F39B277C1766 /* NSObject+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+LookinServer.m"; path = "Src/Main/Server/Category/NSObject+LookinServer.m"; sourceTree = ""; }; + 1998A1E21783C0F00F27637B63C88F21 /* UIColor+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+LookinServer.m"; path = "Src/Main/Server/Category/UIColor+LookinServer.m"; sourceTree = ""; }; + 19D6F69255AF25D760BE89366830A6F7 /* Color+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Color+Lookin.m"; path = "Src/Main/Shared/Category/Color+Lookin.m"; sourceTree = ""; }; + 1A370DF72E817BB512D9A327AC45F76B /* LookinHierarchyFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyFile.m; path = Src/Main/Shared/LookinHierarchyFile.m; sourceTree = ""; }; + 1ADF5834236B788D4ADA4E85DBD68395 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; + 1B2F034522C4ACEB56FB7ECF5D3CDFDB /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; + 1B4B2DB5DB2A6C79E9C1A5ABA6070B58 /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; + 1B77702D1A0EF9DC4542AD40D9D3062E /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; + 1CF307ACF82B2962F9E48DD0D029690F /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; + 1D13B75999F5A8EF9D0BABA6DAF09179 /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; + 1D36CFCB34B6B2FF494AB70EC5024CFA /* UIViewController+Presentation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Presentation.m"; path = "Sources/Presentable/UIViewController+Presentation.m"; sourceTree = ""; }; 1D774D8146EBC82B4A77204A273761B8 /* Pods-CustomKeyboard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CustomKeyboard.release.xcconfig"; sourceTree = ""; }; - 1D7BBE0F835610A258CF510E00DC847F /* HWPanModalShadow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalShadow.h; path = Sources/View/HWPanModalShadow.h; sourceTree = ""; }; - 1E9B018C9C3042CA28F92204D9CA3368 /* LookinCodingValueType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCodingValueType.h; path = Src/Main/Shared/LookinCodingValueType.h; sourceTree = ""; }; + 1D9DDC30D49B9BC3DFA8D9BC83722C14 /* LKS_GestureTargetActionsSearcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_GestureTargetActionsSearcher.h; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.h; sourceTree = ""; }; + 1DBD3AB6DB93D7C2BE4FB5D89E1938FD /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; + 1E115C24A1085A18B17DA1956923425C /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; + 1EFEA57CFC8959BF5EF4B795BD808107 /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; + 1EFF087B37DC1EFC63580C904061AC41 /* LSTPopView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopView.h; path = LSTPopView/Classes/Code/LSTPopView.h; sourceTree = ""; }; + 1FABA21668D0F7EA5314EF00C93346A5 /* DZNEmptyDataSet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.release.xcconfig; sourceTree = ""; }; + 1FABCE7CC795C2D70EA3AAEE06EDD595 /* DZNEmptyDataSet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.debug.xcconfig; sourceTree = ""; }; 1FFED36A657123030ABB700256D73F15 /* Masonry */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Masonry; path = Masonry.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 20B8751D1FBB7C171FFFD79AABA096D9 /* NSObject+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Lookin.m"; path = "Src/Main/Shared/Category/NSObject+Lookin.m"; sourceTree = ""; }; - 20E6DD81C23D61767D03656C92BA491A /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; - 217542724C26BE53C452010CBD9B0823 /* LookinAttributesGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesGroup.h; path = Src/Main/Shared/LookinAttributesGroup.h; sourceTree = ""; }; - 221F590A160BC28ED1F8AD774E3E9DE5 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; - 2259A09BA5C4F4B9CD4809BBD03235D0 /* Lookin_PTUSBHub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTUSBHub.m; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.m; sourceTree = ""; }; - 234CA385D849480382A37D00B41DE872 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; - 24AF188A90B7DB8463BE14A968AB6A8F /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; - 24B77E5B834F553CB4EB67CF38D1658B /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; + 2019C0149E4FA95B56F04C424C11298A /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; + 201F7289F3B83B98F487EC194493B7F3 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; + 20466880B35C5065EE68BED96801035F /* LKS_ObjectRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ObjectRegistry.m; path = Src/Main/Server/Others/LKS_ObjectRegistry.m; sourceTree = ""; }; + 20C42B1A5A080256AC39DD86D000ACD5 /* LookinTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinTuple.m; path = Src/Main/Shared/LookinTuple.m; sourceTree = ""; }; + 20E25456C8490BA5725AE87E9508AF07 /* SDCallbackQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDCallbackQueue.m; path = SDWebImage/Core/SDCallbackQueue.m; sourceTree = ""; }; + 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; + 2262EDBC98A2795DB2EE27FB7D953E2C /* LKS_Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_Helper.h; path = Src/Main/Server/Others/LKS_Helper.h; sourceTree = ""; }; + 2288D70D4609F065E784F156F613AB62 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; + 230DC3B27944D3472C6A06DA7EEAF194 /* Lookin_PTChannel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTChannel.m; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.m; sourceTree = ""; }; + 2334F40DFDB1BAD377A3B71EE761F938 /* HWPanModal-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HWPanModal-Info.plist"; sourceTree = ""; }; + 23518377A93659DE7C8E586309E28896 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; + 237D10385C2D9391B809DFD74B21A570 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; + 244BBBE37C5D845F2BB8EAFBE6D12DE5 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + 2520B86D707FEED91E8300C772989308 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; + 25283803DB6704A7DFB24BD626A74C6E /* LookinAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttribute.m; path = Src/Main/Shared/LookinAttribute.m; sourceTree = ""; }; 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LookinServer; path = LookinServer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2676F11A3670B2480D40E37CECD806F7 /* LKS_CustomAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.h; sourceTree = ""; }; - 269EFD14AB222FEFEC686C63F58F74FF /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; - 26F9036CA269CB4FF5BD96290F567C79 /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; - 27CFD14754D1E3BFCBFECB5DD71A5359 /* LookinServerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServerDefines.h; path = Src/Main/Server/Others/LookinServerDefines.h; sourceTree = ""; }; - 27D20C78C9DF6C2E5537332D5CBE55ED /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; + 25AB23A95A2135A43EF14C148E707F7A /* HWPageSheetPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPageSheetPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m; sourceTree = ""; }; + 2701A816C2728A79FA904E6F2AC8ADEB /* UITableView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+LookinServer.h"; path = "Src/Main/Server/Category/UITableView+LookinServer.h"; sourceTree = ""; }; + 27339E9CA8A7C6DC7F3E8B828C3D0038 /* UITextField+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+LookinServer.m"; path = "Src/Main/Server/Category/UITextField+LookinServer.m"; sourceTree = ""; }; + 274EF5BCECE08045C7BB130E4D6ED8E4 /* LookinHierarchyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyInfo.m; path = Src/Main/Shared/LookinHierarchyInfo.m; sourceTree = ""; }; 281686F4C9CC2C718B45E1DEB7E63948 /* Pods-CustomKeyboard-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CustomKeyboard-acknowledgements.markdown"; sourceTree = ""; }; - 2867F87918EED9920AE77DAD4BD451AB /* UICollectionViewLayout+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+MJRefresh.h"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.h"; sourceTree = ""; }; - 294EA02B3DDDD7B2B6A77AAC9B06FAE2 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; - 29982B3E12912C7BE794585B2B7F77CC /* HWPanModalShadow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalShadow.m; path = Sources/View/HWPanModalShadow.m; sourceTree = ""; }; - 29C84A9BCB275444D2358F473D9B5160 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; - 2A121A2B21BED90763E2301622A040E4 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; - 2A5FE34535D0AF62304F84F18B3E5293 /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; + 28D5D9D40BE7D9F76DB8A620D92D6F6C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJRefresh/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 29AAA748545CCD9E566E6F15C52A44CB /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; + 29D938D1AE315B5A7E490702D4DBEED7 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + 2A350736EF0F4C89A3E43AA0BED8AC36 /* UICollectionViewLayout+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+MJRefresh.h"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.h"; sourceTree = ""; }; + 2ACD4F15622D5B40EA4047FEA329658B /* MJExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-umbrella.h"; sourceTree = ""; }; 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MJExtension; path = MJExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2B2EB2A264CA58715D67B113A8AEC381 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; - 2BC84A9FA2E5E086A3FCA8C9200491EA /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; - 2C10DDC7CAD74F9FB6286DBA8F45E0A9 /* LKS_InbuiltAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_InbuiltAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.h; sourceTree = ""; }; - 2C249B920F34D0D69C69CA43351E52EE /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; - 2CE706B82C8002B7608E049B83BF0A12 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; - 2D17878F639EAB83DF1DC258E92939A6 /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; - 2D286FE677CDEE60930A656882947FD7 /* LookinAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttribute.h; path = Src/Main/Shared/LookinAttribute.h; sourceTree = ""; }; - 2DB2D3B9B39A830458FD28DCEC306D8E /* LKS_MultiplatformAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_MultiplatformAdapter.m; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.m; sourceTree = ""; }; - 2DC2990A90A71D269C5024BA61CF0B19 /* Lookin_PTChannel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTChannel.m; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.m; sourceTree = ""; }; - 2E5ECA77AE05E0692E3C292A2212CC73 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; - 2E8FF2BF379FE508F46CAD249E158559 /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; - 2ED81178D3D980B0132BE071541BDB51 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; - 2ED817696CA9C5336FFC07568FC62502 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; - 2FE4E0AF6CE972936C63A285E8C573B7 /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; - 3011D5BF791250C05C8D7C5BD12BC772 /* HWPanModal.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.release.xcconfig; sourceTree = ""; }; - 30B685B44F3C08EAECD172ACBC891B15 /* HWPanIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanIndicatorView.m; path = Sources/View/HWPanIndicatorView.m; sourceTree = ""; }; - 30CEF95FB390697B4C1ABB26A12E9B7E /* UIViewController+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LookinServer.m"; path = "Src/Main/Server/Category/UIViewController+LookinServer.m"; sourceTree = ""; }; - 316C4F93113E10BD19E7CE1F7E80F60B /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; - 317BBB3797CCCBC8D9201446D3C35C11 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; - 318AFD96872C2F4B15208D88E9CD4764 /* Lookin_PTChannel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTChannel.h; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.h; sourceTree = ""; }; - 3227970589E62371501C4D8C28DD4B1C /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; - 32635BBD805EC978CC3BB3BC4CF3B7E3 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; - 32809A6CFD5412906D97C8C7FCB8E331 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; - 32C400A3F91177BBA34B1046DAFF260F /* LKS_TraceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_TraceManager.m; path = Src/Main/Server/Others/LKS_TraceManager.m; sourceTree = ""; }; - 3353CA39B2D60213971EFFABDAE02625 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; - 33A93A838A9C0189A366EF1F2D8FC9A5 /* UIView+HW_Frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+HW_Frame.m"; path = "Sources/Category/UIView+HW_Frame.m"; sourceTree = ""; }; - 33B1E0CA964F32623BB6975D9AC53C26 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; - 3421F5C836952B09AC7AF130FB3D09FC /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; + 2B6E38C872CB24F91AFE94F3DF5EFCC2 /* UIScrollView+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+Helper.h"; path = "Sources/Category/UIScrollView+Helper.h"; sourceTree = ""; }; + 2B7A32CBCCAE8AB83DA3CB95667709E3 /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; + 2B7C62DACFDBE481DDA82F7BE3396A68 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; + 2BAFAB49E37FE01E69DA8AF02F372885 /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; + 2C694B3CF0214D5165615510B34C3812 /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; + 2C6B8E558F2970AA962D063345B79D19 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; + 2CA3017C0C359C5E90091B685A3A59EE /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; + 2D1699A762F8D719D2565E3B0B508554 /* HWPanModalPresentationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationDelegate.m; path = Sources/Delegate/HWPanModalPresentationDelegate.m; sourceTree = ""; }; + 2D6996A5821977C26F6D8F02DE8CF8CD /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; + 2D7205061D92FA9AEDA20BCF1B6FF9B7 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + 2EE28E5F80B5EB3B89F864114E429417 /* DZNEmptyDataSet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DZNEmptyDataSet-Info.plist"; sourceTree = ""; }; + 2F3AD0011FB2CA087E42B18DDAD25253 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; + 2F61547B42B4881FB5D37EF93F1C324C /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; + 30A4A3709BA82F970D60FE150EDB33D1 /* LKS_CustomAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.m; sourceTree = ""; }; + 310204C87FE20FAAF183EEE0D555B729 /* LKS_HierarchyDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.h; sourceTree = ""; }; + 315C5770DCC0584893C24972BAEDEB39 /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; + 31BB750A026F77ECDF9EFB2711DEC741 /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; + 31C99A570F5F1154C55309832EC47D0D /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; + 31F540B1617ECFBBE3A0FB1043BFB861 /* HWPanModalInteractiveAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalInteractiveAnimator.m; path = Sources/Animator/HWPanModalInteractiveAnimator.m; sourceTree = ""; }; + 343301F4ECFA1778F70E1EC266C1848F /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; + 352F171C72D103D96370080978C50788 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; + 3583F45BB2A021FDC55DB56C5C606CB1 /* HWBackgroundConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWBackgroundConfig.h; path = Sources/View/HWBackgroundConfig.h; sourceTree = ""; }; 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-keyBoard.debug.xcconfig"; sourceTree = ""; }; - 35BFDB837A13ECB08D0555099C8AE732 /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; - 35F4A1DCA414FF4A5C14BDB494A4BCE4 /* HWPanModalIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalIndicatorProtocol.h; path = Sources/View/HWPanModalIndicatorProtocol.h; sourceTree = ""; }; - 3759EC9B1F622ABF5524C464D429D774 /* LookinEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinEventHandler.h; path = Src/Main/Shared/LookinEventHandler.h; sourceTree = ""; }; - 380B11CB6389CFA1B7904A11C79EDA18 /* MJExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.release.xcconfig; sourceTree = ""; }; - 3828D32AF578BCBF238F4F3C9F25FE9D /* LookinAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttribute.m; path = Src/Main/Shared/LookinAttribute.m; sourceTree = ""; }; - 38D9966C1D90F995E284375B1712E8FB /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; - 38DC37E61EA03D85A44EDCFC75EB6238 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; - 397ABB0739D14AE30A56100FCE880DEF /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; - 3A4EE28576256BE0B9CC54DFE985D554 /* MJRefreshStateTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h; sourceTree = ""; }; - 3A8B099A5081203885BD7E80C8282B95 /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; - 3B28468BF62D31A9D25D492AAF6D25B0 /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; - 3B8FA55B1E865165B6CFF4ADBBDE19C4 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; - 3C462ACDAC6DCEE65350D4BC510A2E99 /* KeyValueObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KeyValueObserver.h; path = Sources/KVO/KeyValueObserver.h; sourceTree = ""; }; + 360B7B34B46811D44994D83FAC09E663 /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; + 361FBE2595D99942EB88F5C0D34EB2DA /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; + 3663272D41C8B58200506DDA7E7A2903 /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; + 37526D876665DA3E019DF167F09B21F4 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; + 37B5AAFF8675170D1D643B53FECA47E3 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; + 37B6B4596E25AE5CE5BE1FE14A6AF93B /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; + 387AF8AF8500E50CC311582863B31CFF /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; + 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LSTPopView; path = LSTPopView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 39D285C0DD3F1106B921412AD679ADEC /* Lookin_PTChannel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTChannel.h; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.h; sourceTree = ""; }; + 3AF690E545719F23D7E97E6C1F82121E /* LSTTimer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTTimer-Info.plist"; sourceTree = ""; }; + 3BC0E1D78C95F4CC731325A284A8FC80 /* LKS_CustomAttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.m; sourceTree = ""; }; + 3BE50AD720E95B8938AAE668F71561B7 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; + 3C53F73CEF747A7A78B5CACAF16E5FCE /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; + 3C880A37C8BD02476827078E98C08810 /* HWPanModalPresentationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationController.h; path = Sources/Controller/HWPanModalPresentationController.h; sourceTree = ""; }; 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CustomKeyboard-dummy.m"; sourceTree = ""; }; - 3D16809394CD346845FFB0C9977242B2 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; - 3DC9A26415E30724897A7A975AB7B73E /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; - 3DF0E590DEA8DD03BE15CBF72CDCBE8B /* HWPanModalPresentationAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationAnimator.m; path = Sources/Animator/HWPanModalPresentationAnimator.m; sourceTree = ""; }; - 3EBA537DA26B64728CA51AC60E7A2FB3 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; - 3FA20784164A5FF07C29C2829918C6B8 /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; - 3FB5EB648C2339F0632D8DD464412282 /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; - 40BFEDE02CC0E566BBDC5A631AF4AF85 /* HWVisualEffectView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWVisualEffectView.h; path = Sources/View/HWVisualEffectView.h; sourceTree = ""; }; - 40D9E69F0A1E9D4219601AFE0D6257DD /* LookinWeakContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinWeakContainer.h; path = Src/Main/Shared/LookinWeakContainer.h; sourceTree = ""; }; - 4199B5EF9E6D97F0A19FE7422D28A2C6 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; - 41BB24C7B81FDF4942C58FB649399EB7 /* UIBlurEffect+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBlurEffect+LookinServer.h"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.h"; sourceTree = ""; }; - 4307F1F1718ED3798F45B2184C30063E /* NSString+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Lookin.h"; path = "Src/Main/Shared/Category/NSString+Lookin.h"; sourceTree = ""; }; - 43C608DEC890D79C4A758B248B1B7D6E /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; + 3D2A884E58C9EFE4F57508CA7855F449 /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; + 3D832408A734647A9D2C62473FE11EFB /* LookinAppInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAppInfo.m; path = Src/Main/Shared/LookinAppInfo.m; sourceTree = ""; }; + 3DF4E1CE47903B976C738C7A1DB7C650 /* LKS_ConnectionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ConnectionManager.h; path = Src/Main/Server/Connection/LKS_ConnectionManager.h; sourceTree = ""; }; + 3E5C8F44BD62EB86605C88FA434E57ED /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; + 3EDF0BD9574A366871EF5B3FBEFB906D /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; + 3F01F027ADEF8C49A4605D787E41BD1C /* SDImageFramePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFramePool.m; path = SDWebImage/Private/SDImageFramePool.m; sourceTree = ""; }; + 3F3611B9193976C6AC5268E458B3F9F6 /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; + 3F6EA8BCC592FC8C87F6AB86D1783731 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; + 4056B0FA7CFCA3F0B3BA1F921297B1CC /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; + 4082EEAE9AC1F17D236D83E99200EA70 /* MJRefreshNormalTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h; sourceTree = ""; }; + 40D46544DD0F8DC61B909F5E02739172 /* LKS_CustomDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.h; sourceTree = ""; }; + 42D65971D9F40DBD6785D6A1D0AEBFBD /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; + 43936D8CC7E56B4026AF09D6B9E1B1BD /* LookinServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LookinServer-Info.plist"; sourceTree = ""; }; 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MJExtension-MJExtension"; path = MJExtension.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 441DC5BA33205114F293CCFD73DE308D /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; - 445DB8E68C4622DC598EF2623547120D /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; - 44A0BF7F32C28865E6ACA8A8BB27F63A /* MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJRefresh-Info.plist"; sourceTree = ""; }; - 464A4EBDD6079658F375B8BE36A1D224 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; - 464FA74F22BA11120A125593D04ECC10 /* HWPanModalPresentationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationController.h; path = Sources/Controller/HWPanModalPresentationController.h; sourceTree = ""; }; - 46B5AC2B0569CA6232E5088BF6FBCD84 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; - 46CCF3A43BEE5F3B0490729F74E3F205 /* LKS_HierarchyDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.m; sourceTree = ""; }; - 47A1CD68D6C47087933E20DA80B1E693 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; - 48848C87D33425CDC35A3154B4C1E819 /* ResourceBundle-MJExtension-MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJExtension-MJExtension-Info.plist"; sourceTree = ""; }; - 48DF6A3F73D15BB7711D4C401A2A800F /* Image+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Image+Lookin.h"; path = "Src/Main/Shared/Category/Image+Lookin.h"; sourceTree = ""; }; - 492F2C7BD5804A777BF8699BEBDE9706 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; - 4A049DB74A9BEE7FA98C208416BBDD60 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; - 4BA81BE20AFB7AAED21EEC5D091FF489 /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; - 4C5F7FF14062807BDEB2A6D6E4A6DE95 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; - 4E443FB99E1E01CD79DABE37EB302AFE /* FLAnimatedImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FLAnimatedImage-Info.plist"; sourceTree = ""; }; - 4E56D5DDE9402DE57FEF9D81E68DE8B3 /* Bugly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.debug.xcconfig; sourceTree = ""; }; - 4EF1B5176604A62648603F6832B989AC /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; - 50A13B682D86AE92E1941A6C08E557BB /* NSObject+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+LookinServer.h"; path = "Src/Main/Server/Category/NSObject+LookinServer.h"; sourceTree = ""; }; - 50AB72625252A5E15E31076E002BFCDA /* HWPanModalPresentableHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentableHandler.m; path = Sources/Mediator/HWPanModalPresentableHandler.m; sourceTree = ""; }; - 5222D695CCB33DFD24FA0E6B7CE34154 /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; - 52498B1644296C61B2FE7621C339AC58 /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; - 52587370E20625EC0ADF9ECB81F06C80 /* LKS_GestureTargetActionsSearcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_GestureTargetActionsSearcher.h; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.h; sourceTree = ""; }; - 52AC10A81E2C53178BFD809330041A7E /* HWPanModalContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContainerView.h; path = Sources/View/PanModal/HWPanModalContainerView.h; sourceTree = ""; }; + 4489DCEC1C15912F15C69BF8BADBDA34 /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = ""; }; + 44DDF1AA5625A95CA1C76B7546758226 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; + 452B8DD5CBF29E80E794E957D7ACEE0F /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; + 45AD4A83CCB38F4F8C699AACEC09A405 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SDWebImage-SDWebImage-Info.plist"; sourceTree = ""; }; + 4610142EAB51ECDD8FC137942A59F231 /* NSString+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Lookin.m"; path = "Src/Main/Shared/Category/NSString+Lookin.m"; sourceTree = ""; }; + 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; + 473462854899532931D29986CBD25F4A /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Masonry.modulemap; sourceTree = ""; }; + 47C4451B7E17B800D4088E7182C1025D /* LookinCustomDisplayItemInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomDisplayItemInfo.h; path = Src/Main/Shared/LookinCustomDisplayItemInfo.h; sourceTree = ""; }; + 47F9AD4ED221D6EEDB441FAF35299C66 /* LookinObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinObject.h; path = Src/Main/Shared/LookinObject.h; sourceTree = ""; }; + 4816EA2348DC71F3330B4D2743758FEF /* UIViewController+PanModalDefault.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalDefault.h"; path = "Sources/Presentable/UIViewController+PanModalDefault.h"; sourceTree = ""; }; + 48B9B4465675824F9DA134FE2253901E /* LookinDisplayItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItem.h; path = Src/Main/Shared/LookinDisplayItem.h; sourceTree = ""; }; + 4968882808F027C34D91341E2DBD71E2 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; + 499DFA9F01A96B26620A744AC7C94DB7 /* LKS_ConnectionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ConnectionManager.m; path = Src/Main/Server/Connection/LKS_ConnectionManager.m; sourceTree = ""; }; + 4A4F0899D1AD5593F9373F8225D28188 /* HWPanModalPresentable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentable.h; path = Sources/Presentable/HWPanModalPresentable.h; sourceTree = ""; }; + 4A980D9B3DB04133A466725A1C6C22F8 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; + 4AA6F90EC76FE7C2ACDF3266FD792D7A /* LookinAttributesGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesGroup.h; path = Src/Main/Shared/LookinAttributesGroup.h; sourceTree = ""; }; + 4B01E4A62621F02DCAF2B380FECD12A8 /* MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJExtension-Info.plist"; sourceTree = ""; }; + 4D8DA2BACDEA7D78265D10D62F7A3BF7 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; + 4DCD76BA1FFEFDEEE2F9331ECD0796D4 /* LookinCodingValueType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCodingValueType.h; path = Src/Main/Shared/LookinCodingValueType.h; sourceTree = ""; }; + 4E03AEFAD237B8966FCFA45B3312FEE7 /* LookinHierarchyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyInfo.h; path = Src/Main/Shared/LookinHierarchyInfo.h; sourceTree = ""; }; + 4F3DBAC2BF3E2D408BCB049042B8B067 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; + 4FA72F287E0DE573DD735BAE9AD7E816 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; + 4FBCAF641C4059BE19811532C4E3A0A2 /* NSArray+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Lookin.m"; path = "Src/Main/Shared/Category/NSArray+Lookin.m"; sourceTree = ""; }; + 5030EF25D193EB41CCA5DF24FE48C1DF /* HWPanModalContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContainerView.m; path = Sources/View/PanModal/HWPanModalContainerView.m; sourceTree = ""; }; + 506D2884030F20EC06A10DCFA7347584 /* LookinServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.release.xcconfig; sourceTree = ""; }; + 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; + 51B83EEE0D453B8B01D8275D3EEBF4BF /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; + 51E9651B0CFE7B40336ABD29412D3C39 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; + 524E9F65E894111FFD9563F30298E596 /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; + 529CC0A76A69631EEA57BEAB673D76B9 /* UITextField+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+LookinServer.h"; path = "Src/Main/Server/Category/UITextField+LookinServer.h"; sourceTree = ""; }; 5327DD01C6533D102D66E1636B3827F3 /* Pods-keyBoard-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-keyBoard-acknowledgements.plist"; sourceTree = ""; }; - 543E7F5FC6CF2C3049F7A173BFB53AFD /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; - 549961902064EB911C7C58433F18CB5C /* Lookin_PTProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTProtocol.h; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.h; sourceTree = ""; }; - 54C035FC92D730EBEC46CF8E21ADFF7F /* LookinAttributesSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesSection.h; path = Src/Main/Shared/LookinAttributesSection.h; sourceTree = ""; }; - 550192267AB5C328829C08C69A3B04BC /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; - 5746A23477BAEA4BBB127E9D35DF678C /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; - 57748DDDE8158306E4B3EAC0E03C99A1 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; - 581D45C2162C5967784E2A106C696662 /* UIViewController+PanModalPresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalPresenter.h"; path = "Sources/Presenter/UIViewController+PanModalPresenter.h"; sourceTree = ""; }; - 58623A3EED3B4D5125F83B78B865E033 /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; - 587CB6117FEDC0DADE247998FA290F62 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; - 58EF98364CA25B52C8DF52E35A63A6BB /* DZNEmptyDataSet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DZNEmptyDataSet.modulemap; sourceTree = ""; }; - 58FC58CFC6A48F6752D249D83F67DD94 /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; - 5916EA119280E5419D6269E5A435A1A0 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; - 596D5BD427C685CFFE0E474F1355C0BB /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; - 59AF70C47DF0209B5D93F81A25EFB8EC /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; - 59E5B7C96027CDC6B5D70E2AD9AC0EFD /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; - 5A0744C22449018296AB633E5BC2C275 /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; - 5A37D9FEABB61A71285A73CDE4C5E9EE /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; - 5A5852584225D29AAB47BA31F0AC9415 /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; - 5B69A17E7FED839334E49FA3104B7F83 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; - 5B7AF4A837E5E99D79B146178585C2C3 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; - 5B7E0100E260F97D53E9D7FCB8CAAFCB /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; - 5C5640AE0C2091C5FC7A8CFD27229CC3 /* HWPanModalAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalAnimator.m; path = Sources/Animator/HWPanModalAnimator.m; sourceTree = ""; }; - 5C764F0D3B98816426D5D1C448686870 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; - 5D55CD73335546425BAD6A91CB9C4CE4 /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; + 53CC6A09F682C54055F6035F0D6E29FA /* MJRefreshTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshTrailer.m; path = MJRefresh/Base/MJRefreshTrailer.m; sourceTree = ""; }; + 53EC2576F6D68ECA3E1920A896AE4E4F /* HWPanModal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModal.h; path = Sources/HWPanModal.h; sourceTree = ""; }; + 54E07E4DAA97DEDC8F59F58429664909 /* LKS_AttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.h; sourceTree = ""; }; + 5593F84C8F2583B27ACE6E149D4B8B0E /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; + 55CB47F746B1E99E4F1E11247844A401 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; + 56083A8D73CF98D49960B5783A36797F /* FLAnimatedImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-umbrella.h"; sourceTree = ""; }; + 56951EB060616356F951F35CBD9A6E42 /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; + 56A664809217C1D10A7EC649E972D6AB /* HWPanModalPresentableHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentableHandler.h; path = Sources/Mediator/HWPanModalPresentableHandler.h; sourceTree = ""; }; + 56A89B114742BBA3282DA6CDF9871F36 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; + 56BB70CC7870B5212EFAD74AF8199F17 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; + 5703D16A54AB62E92D3E21CC6E5EA55B /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; + 57AA794BD50692239409E574C7FD0846 /* HWPanModalShadow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalShadow.h; path = Sources/View/HWPanModalShadow.h; sourceTree = ""; }; + 581F1A0410E8F8E85A8C2E596B4C7F40 /* LKS_AttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.m; sourceTree = ""; }; + 5839F6C7ABFF6E515370151D7E470262 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; + 584341F234CCB4128A1A3854A3371179 /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; + 587808BB0F9012792B17999F0BB495C4 /* LookinIvarTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinIvarTrace.h; path = Src/Base/LookinIvarTrace.h; sourceTree = ""; }; + 589A748D16780600B35F1BC7E7CEB243 /* UILabel+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+LookinServer.h"; path = "Src/Main/Server/Category/UILabel+LookinServer.h"; sourceTree = ""; }; + 58F1F1A0BBD025ADF47D37EB3545A1EA /* MJExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJExtension.modulemap; sourceTree = ""; }; + 5909B734EE0396CAA42A403A6DCD4D27 /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; + 595622377DEA1856384D2D262C52C73F /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + 5973F7F7FB04C5938E91F05D46F22B54 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; + 5A03E64C6033C8C1C7D8822CDE785EEB /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; + 5A12BDC5E6446CAD91BA1C47C211ED2E /* LKS_ExportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ExportManager.h; path = Src/Main/Server/Others/LKS_ExportManager.h; sourceTree = ""; }; + 5A4E8FC1A8280B0B2C51BA4C08DA78B3 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; + 5A5823526F694533978DE523241FEDE9 /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; + 5A9184E6EEBE4764FF941193DF28C44D /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; + 5AD771C5136CD5549FAE44B9E4C2DFD2 /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; + 5B099323376948696DA373792CC4983D /* UITextView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+LookinServer.h"; path = "Src/Main/Server/Category/UITextView+LookinServer.h"; sourceTree = ""; }; + 5B1C14811A97739A8455D69D9EF8F1AA /* HWPanModal-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-umbrella.h"; sourceTree = ""; }; + 5B6CB7D56E64BDB8EB50D17E5CEC7C8F /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; + 5CC308EFB0F9E5B050F606DDD3E7A44F /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; + 5CD0546B82DCACC9EF9FE9B72325B901 /* NSSet+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSSet+Lookin.h"; path = "Src/Main/Shared/Category/NSSet+Lookin.h"; sourceTree = ""; }; 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DZNEmptyDataSet; path = DZNEmptyDataSet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5E03CFEECACD6D99D415C06808FF1A46 /* LKS_GestureTargetActionsSearcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_GestureTargetActionsSearcher.m; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.m; sourceTree = ""; }; - 5F23B5AA329AF2C38E62E7CBE5F5D136 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; - 5F258393A5F61F1A41DB0116A1995DB1 /* UIView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LookinServer.h"; path = "Src/Main/Server/Category/UIView+LookinServer.h"; sourceTree = ""; }; - 5F66416F5FCB58B94BA9CC403B8A778A /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; - 5FE7A440D01806C72477C1AA0213B946 /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; - 6013BED1D4465B355233E90F5236D454 /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; - 61194FA2A41C9D734CCA119C5F329CE1 /* LookinTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinTuple.m; path = Src/Main/Shared/LookinTuple.m; sourceTree = ""; }; - 611F335AF3AB948359952D972579333C /* LookinAttrIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrIdentifiers.h; path = Src/Main/Shared/LookinAttrIdentifiers.h; sourceTree = ""; }; - 6124AD77C854511265D90EDC5EE36657 /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; - 61AF436FD61695046BC4D5C853E7CA45 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; - 6259B042D1D6480734439FF381E14C2B /* MJRefreshNormalTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h; sourceTree = ""; }; - 625CF3BFC134394EF547BF079507A5D1 /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; - 62640F732378D5BF961D278A8E714FEC /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJExtension/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 62F129163AC40C289B2AEA5C7DEBE679 /* HWShoppingCartPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWShoppingCartPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h; sourceTree = ""; }; + 5EAFD6E7E63CC2D3E074450E9124493C /* LookinServerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServerDefines.h; path = Src/Main/Server/Others/LookinServerDefines.h; sourceTree = ""; }; + 5EF9433AE70A3B3667F4B208CC88432A /* LookinServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-prefix.pch"; sourceTree = ""; }; + 5F369D00927FCA59283AE71B174D2D1D /* UIViewController+LayoutHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LayoutHelper.h"; path = "Sources/Presentable/UIViewController+LayoutHelper.h"; sourceTree = ""; }; + 5F618581DFE1104C16FA02EB2B00F1B9 /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; + 5F62EE3A88E154ADAC90DDF6BC60DFB6 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; + 5F9D4F9A4CA404E7287B2F6CBFF382D1 /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; + 610BD8934663142C5DDE2AF00042FD13 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; + 610E7F99F72A12BE4DBEF2C1ABF10115 /* LookinDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDefines.h; path = Src/Main/Shared/LookinDefines.h; sourceTree = ""; }; + 622B25C415B746B0A4DE004201B6C241 /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; + 6233A7302725D50AFE344EFD05C9C870 /* LKSConfigManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKSConfigManager.m; path = Src/Main/Server/Others/LKSConfigManager.m; sourceTree = ""; }; + 624CC6F33BF93A1458307F73823C3E10 /* LookinAttributeModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributeModification.m; path = Src/Main/Shared/LookinAttributeModification.m; sourceTree = ""; }; + 62C98AF2DC89D542692AC64CD9F01818 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; + 62ED382544D99079829F5E202E6E84A7 /* UIBlurEffect+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBlurEffect+LookinServer.m"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.m"; sourceTree = ""; }; + 63277FA9AFB139990459DF6C57B238F5 /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = ""; }; + 636EE1928B5BC8BC35DF1648C1BF1467 /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; + 63746C791045958FEE981F032ACCAECE /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 64110DA477609C9760A9CEEABA26DFFB /* LookinConnectionResponseAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionResponseAttachment.m; path = Src/Main/Shared/LookinConnectionResponseAttachment.m; sourceTree = ""; }; + 6407DC7FD67C9C74E0C3BA6B778AE0CD /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; 641251D3092FFCF2B6259BF8676A212E /* Pods-CustomKeyboard-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CustomKeyboard-Info.plist"; sourceTree = ""; }; - 6470D20217BE1E46F63251367F8A9EB0 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; - 64C4273F666802A12C990C543C5413E3 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; - 64EE6EBE156E6757C2B16DC6C01D0328 /* LKS_CustomAttrSetterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrSetterManager.m; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.m; sourceTree = ""; }; - 64FC3145438669B612415058A5D1C68B /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; - 652780DECBCF733E1CBAA8309FADE953 /* LKS_MultiplatformAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_MultiplatformAdapter.h; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.h; sourceTree = ""; }; - 65578EBC5788FEE6B04E9151B552D110 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; - 666595C8EDD80B06B88241CFA60BC1D4 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; - 66852803923AC12381D91011BC62422E /* LKS_ConnectionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ConnectionManager.m; path = Src/Main/Server/Connection/LKS_ConnectionManager.m; sourceTree = ""; }; - 66EB6235F828F12999A13D8BD6C02127 /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; - 66F3FF05384C9441A8FAFFE1E267822E /* LookinWeakContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinWeakContainer.m; path = Src/Main/Shared/LookinWeakContainer.m; sourceTree = ""; }; - 68F6F33E73474357B9E7885C4414C917 /* LookinObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinObject.m; path = Src/Main/Shared/LookinObject.m; sourceTree = ""; }; - 69120AA1162D453113865A302140EFB0 /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; - 694CDF3CA0E35A901F2C7D0364CD013C /* LookinStaticAsyncUpdateTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinStaticAsyncUpdateTask.m; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.m; sourceTree = ""; }; - 6A16069144EAF75D991A4D06E3632B2B /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; - 6A94D2984C9A5BA88F4AA771F38B8314 /* HWPanModal-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HWPanModal-dummy.m"; sourceTree = ""; }; - 6AA35B4909D9783E7A851FD1AD821334 /* LookinStaticAsyncUpdateTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinStaticAsyncUpdateTask.h; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.h; sourceTree = ""; }; - 6AC0CAE7328F30AAD9591CBF92851E5D /* DZNEmptyDataSet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-prefix.pch"; sourceTree = ""; }; - 6B25E0E8867C9D8FE8A69D2C8BD251D9 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; - 6B6B370AE543A3A33C4D570C3B8366E3 /* LKS_EventHandlerMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_EventHandlerMaker.m; path = Src/Main/Server/Others/LKS_EventHandlerMaker.m; sourceTree = ""; }; - 6B8E94E7EAABFAC34A3D61FF43E02355 /* NSArray+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Lookin.h"; path = "Src/Main/Shared/Category/NSArray+Lookin.h"; sourceTree = ""; }; - 6BA9B1ACD0A1EB747C6936E484D5208B /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; - 6BE8047ED813191B4BC46FA8C5334ABC /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; - 6CD3C473E82665733BD9E2D23A688894 /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; - 6E2233B3F4E54A10BBB04EA668A8B0BC /* HWPanModalHeight.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalHeight.h; path = Sources/Presentable/HWPanModalHeight.h; sourceTree = ""; }; - 6E4761AF00D5D97F0E6876C0F021A970 /* NSSet+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSSet+Lookin.m"; path = "Src/Main/Shared/Category/NSSet+Lookin.m"; sourceTree = ""; }; - 6E7FB45CA71B8CA83A3493DEA84881AB /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; - 6E87ADD85BCC1C5A4BF0FB2AC7E2A834 /* Bugly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.release.xcconfig; sourceTree = ""; }; - 6E9D7DC7A47992FD77E5A1BF86254454 /* LKS_HierarchyDetailsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDetailsHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.h; sourceTree = ""; }; - 6ECF4C720F0485F7EA3D63E9C28CFBA7 /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; - 6F1F4A5570DD3146B2E2BD55F75D53BF /* LookinConnectionResponseAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionResponseAttachment.h; path = Src/Main/Shared/LookinConnectionResponseAttachment.h; sourceTree = ""; }; - 701BFF6738F7EE5632E59657442BD101 /* LookinServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LookinServer-dummy.m"; sourceTree = ""; }; - 7020F5FD7E08D02DFB263422BBB5EBCE /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; - 70CF34CA376C8F25403FA62C8A27356C /* LookinAutoLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAutoLayoutConstraint.h; path = Src/Main/Shared/LookinAutoLayoutConstraint.h; sourceTree = ""; }; - 72A78D12318A2A4F704BC2BC743AD9DF /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; - 72E3A740C48B1DF278C345CEB59A5C99 /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; - 737E319C87B4A4FA348810E15675B757 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; - 73D83AA6FEB5E85D4F5AA27E2C2ADB69 /* HWPanModal-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-prefix.pch"; sourceTree = ""; }; - 75D5D4CBB473106CD017A60A4F0284B5 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; + 64BE9723ECB5FEB2D176E2AB31482F57 /* NSObject+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Lookin.h"; path = "Src/Main/Shared/Category/NSObject+Lookin.h"; sourceTree = ""; }; + 654D22CCA8871E0E0A65AB7C50503EB4 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + 65EE0AA02CCB84E9D0C6987A57196DE0 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; + 662D6F244CE3008639589EE4EA829B53 /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; + 66C0C4029B17B8E45FF492CEEBD834E3 /* UIScrollView+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+Helper.m"; path = "Sources/Category/UIScrollView+Helper.m"; sourceTree = ""; }; + 672AB6E0839CC099E7CA7CF49761A5D7 /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; + 67D554550B250775795416CCAF8BD370 /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; + 683586601FF42469125B58BBB8DF2429 /* LookinObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinObject.m; path = Src/Main/Shared/LookinObject.m; sourceTree = ""; }; + 68BFCD31885FD8664001BB1EFAC74751 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; + 690D12C73095E1091E4B6AB8B11A064E /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; + 6AB2A681F27544128FA8BFDF04B2B4BB /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; + 6B130ACC8A24ECD0BF3BD07D5AF21E4D /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; + 6B6DBCFC84C1E1F5D3AF983520203544 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; + 6C39336AE39057C3014C954C694C278F /* UIView+LSTPV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LSTPV.h"; path = "LSTPopView/Classes/Code/UIView+LSTPV.h"; sourceTree = ""; }; + 6EDACCA592A0A0FC0428384009A75BD5 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; + 6EDC641564DA302B6FFCBFCFFFAC5BA7 /* UIView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LookinServer.h"; path = "Src/Main/Server/Category/UIView+LookinServer.h"; sourceTree = ""; }; + 6EFC403B9948A5A5D2DC7D8B3D9188A9 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + 6F886C315967D7AADA95C37B717FE5A2 /* Lookin_PTUSBHub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTUSBHub.h; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.h; sourceTree = ""; }; + 6F98986A52AAB68B64127A983F8CB7D9 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; + 70ABAEE0904B02D3CE9045A0A088E18F /* HWPanModalPresentationUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationUpdateProtocol.h; path = Sources/Presentable/HWPanModalPresentationUpdateProtocol.h; sourceTree = ""; }; + 70D5B55A578973F4D162548B46979D49 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; + 71086CB516DC09CA5D29736469412558 /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; + 710E437843F202473C82F6B19F6E51D8 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; + 72FF1B2D48227EDD9EB762579BA5D936 /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; + 73EFE9F07FF04A733446FD7A74A02718 /* LKS_MultiplatformAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_MultiplatformAdapter.h; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.h; sourceTree = ""; }; + 741395EF99DABB64E0E04129DB222FD2 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; + 741B32704926AB941D9209B2D37E2B8F /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; + 7577D873945C0C370C14EE971C3509FB /* Lookin_PTProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTProtocol.h; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.h; sourceTree = ""; }; + 758F54E0A75ADEC48F8924BFE16AEB3B /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; + 75F935C6D49A90EF2E215985C8EBF76F /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; + 76DC37DEAFA5D12B1D7F9040EFB03DA5 /* LSTPopViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopViewProtocol.h; path = LSTPopView/Classes/Code/LSTPopViewProtocol.h; sourceTree = ""; }; + 776331A7467F397FCD02F62B233A6E93 /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; + 779E8085B0101C4CB480F794DECA558B /* HWPanModal.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.release.xcconfig; sourceTree = ""; }; + 77A510DEE4CCFDB66B19F133A209CDF3 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; + 77EBE36C10B9452DC1931AC9779D7F79 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; + 77EC014BA0072D21D1B86EE5C78C59EA /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = HWPanModal; path = HWPanModal.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 78DE1BDAC4037EF5EF5085D7F97C5896 /* Lookin_PTProtocol.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTProtocol.m; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.m; sourceTree = ""; }; - 790F5BF1A1AB8405DB8FFB5F37D2BA39 /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; - 793514345B8D9E3CC0E86E9AA48547A2 /* LookinServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-prefix.pch"; sourceTree = ""; }; - 7A2B32A1AC63C6D1AF5B5467A6CEC75F /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; - 7BB291C0467B8A072E8C1CE10A701CA2 /* LookinAttrIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttrIdentifiers.m; path = Src/Main/Shared/LookinAttrIdentifiers.m; sourceTree = ""; }; - 7C8E106F1C7C00CCE5C4691E7DFD2859 /* HWPanModalContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContainerView.m; path = Sources/View/PanModal/HWPanModalContainerView.m; sourceTree = ""; }; - 7CB57DCB4F28061C4A199F8768E4F7C7 /* UIColor+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+LookinServer.m"; path = "Src/Main/Server/Category/UIColor+LookinServer.m"; sourceTree = ""; }; - 7D170811DBCC5115CE133F6187C37ADE /* Masonry-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Masonry-Info.plist"; sourceTree = ""; }; - 7D1C2865819BCF073FD84E9A5B8816AB /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; + 7859E48715647D45C428FB82F31DB2BA /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; + 79B0D13A04128B711BB3AFF0676EC3D0 /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; + 79D13E836577BF8A934C5D3D24826BD0 /* LookinEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinEventHandler.m; path = Src/Main/Shared/LookinEventHandler.m; sourceTree = ""; }; + 7AF90BBEF3A681BE8314F80257F1182C /* HWPanModalAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalAnimator.m; path = Sources/Animator/HWPanModalAnimator.m; sourceTree = ""; }; + 7CF635A9AE952B4C70F06837B227DDCC /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MJRefresh-MJRefresh.Privacy"; path = MJRefresh.Privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 7EABFACBAFD45BC8FA955F5004A0F3F6 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; - 7F409E94556DE38FF80361104AA14B1C /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; - 7FB6D9FCFB10D58A02282FBABE87FB43 /* Color+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Color+Lookin.h"; path = "Src/Main/Shared/Category/Color+Lookin.h"; sourceTree = ""; }; - 80F7F70AB42196BE2ECAE3F75289F5CC /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; - 819AF2C3BB9CCBDC0A03029D56096EA4 /* UIViewController+LayoutHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LayoutHelper.h"; path = "Sources/Presentable/UIViewController+LayoutHelper.h"; sourceTree = ""; }; - 81C8A4B9A7186C1EC704A8F7181A8B4C /* SDCallbackQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDCallbackQueue.m; path = SDWebImage/Core/SDCallbackQueue.m; sourceTree = ""; }; - 82D7BEE16249F72113581170F4B17105 /* MJRefreshNormalTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.m; sourceTree = ""; }; - 839B9E61EAA7FC6A8B571EAB1077DBCF /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; - 83ECFAFFBD6F90A4A996E32508211B96 /* DZNEmptyDataSet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.release.xcconfig; sourceTree = ""; }; - 845117372901F4A5A3D286F10A26B6EC /* HWPresentingVCAnimatedTransitioning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPresentingVCAnimatedTransitioning.h; path = Sources/Animator/HWPresentingVCAnimatedTransitioning.h; sourceTree = ""; }; - 85703DD6475DDAF90847B3E1C0DC9738 /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; - 857DB28ACD58B6F0687A1A566D8C2BF1 /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; - 8594A6CF7D45F1715A10AC3C18700F18 /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; - 86C67D3928970843AA374752207E9260 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; - 8705B9A2A16D5B2796A9B11E1C3D074C /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; - 87352714D54CE9C3DCA836E85ABDE2D9 /* MJExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.debug.xcconfig; sourceTree = ""; }; - 87404200573C5C261B9C829573DF05E9 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; - 8759D0306E45E19CBC456FD3486DDE02 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; - 87FB553A3CC72081333DBA02B2136CF8 /* HWPanModalInteractiveAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalInteractiveAnimator.h; path = Sources/Animator/HWPanModalInteractiveAnimator.h; sourceTree = ""; }; - 8862727C1E338311DF7340BC59FC7388 /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; - 88D6FD1A2FA6EEC892A2DD294E5A7454 /* LookinIvarTrace.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinIvarTrace.m; path = Src/Base/LookinIvarTrace.m; sourceTree = ""; }; - 89AF890E0CFE5DDF9869F06650066AA4 /* MJExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJExtension.modulemap; sourceTree = ""; }; - 89CAE6642460316AFEB27B5A5CD2778E /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; - 8A762DB0AD39D18CF911533AF4D3D3B1 /* LKS_RequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_RequestHandler.m; path = Src/Main/Server/Connection/LKS_RequestHandler.m; sourceTree = ""; }; - 8A7ED5F60A6E593BE4319E09C2FD0BE2 /* UIView+WebCacheState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheState.h"; path = "SDWebImage/Core/UIView+WebCacheState.h"; sourceTree = ""; }; - 8AF449E5E9E00FFF6BD1DD6F39E654AC /* HWPanModalPresentableHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentableHandler.h; path = Sources/Mediator/HWPanModalPresentableHandler.h; sourceTree = ""; }; - 8B00C7E369E9AC7974F4EC937246BBA4 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; - 8B07F3D2B3B3299BF5A32A4ED4D06683 /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; - 8B52F950306B0C5B7D2782308290581C /* LKS_ConnectionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ConnectionManager.h; path = Src/Main/Server/Connection/LKS_ConnectionManager.h; sourceTree = ""; }; - 8B6F555000ECA771E3EEE30C0BCA8211 /* SDImageFramePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFramePool.h; path = SDWebImage/Private/SDImageFramePool.h; sourceTree = ""; }; + 7E3DC362C663E7C7DAB5B7DC796C5507 /* LookinAttrType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrType.h; path = Src/Main/Shared/LookinAttrType.h; sourceTree = ""; }; + 7F2363FB988E5DC9705FE22B29B7B4F8 /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; + 7FCA5CF6F4A026896316D8731B3E493F /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; + 802213010DCF77864E95B3A910F64EA0 /* LookinServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LookinServer-dummy.m"; sourceTree = ""; }; + 802FB1A32618485AA28D17584662FBAF /* HWPanContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanContainerView.h; path = Sources/View/HWPanContainerView.h; sourceTree = ""; }; + 80A4C5F30966DCCAF12719455CE5BA94 /* LSTPopView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTPopView.m; path = LSTPopView/Classes/Code/LSTPopView.m; sourceTree = ""; }; + 80E15D4BAC4857AD45CC8CDC40384F0F /* UIVisualEffectView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIVisualEffectView+LookinServer.m"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.m"; sourceTree = ""; }; + 8166AA98A11AE7F3F46DBF2C481F6DF5 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; + 817B07C3E952A5A5F2082BE15C3C500E /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; + 81A6154946F38EFB8836E3145513AAE9 /* NSArray+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Lookin.h"; path = "Src/Main/Shared/Category/NSArray+Lookin.h"; sourceTree = ""; }; + 81B71B9BB50BFCB7CBC2B6455296C14B /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; + 81E56B3079089075E57FE56264F80F1E /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; + 8204B00622081F3C51B1FC2D83A2D0D0 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; + 820CCFAA740875554C05F59A0958E53B /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; + 82512BA24900AE369D9A35A08C7187CC /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; + 83E75619300BC832136529DA87152075 /* LKS_InbuiltAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_InbuiltAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.m; sourceTree = ""; }; + 84DD851B5FDE16625FA07D9C4D1622E4 /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; + 85937FAC419CB28614ECAA70CE249673 /* NSObject+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Lookin.m"; path = "Src/Main/Shared/Category/NSObject+Lookin.m"; sourceTree = ""; }; + 875E237862F4488FBFC692D1AB2DBB91 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; + 8769FA429275709C356B4C8A5DDEC26E /* LSTTimer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.debug.xcconfig; sourceTree = ""; }; + 882CA8EEAEB3525FB7AD66F6FFC2CF6A /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; + 883D06418312C016F973700D20558656 /* HWPanModalShadow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalShadow.m; path = Sources/View/HWPanModalShadow.m; sourceTree = ""; }; + 889630ECFAA2151C2C1F334458A5C110 /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; + 88C23FF116C3257A27A26A897D5AE6DB /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; + 88E8C1FFE2A2D6CB9741EF2354A3B30E /* HWPanIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanIndicatorView.m; path = Sources/View/HWPanIndicatorView.m; sourceTree = ""; }; + 8927ADAF60DF7D3D91B390580BD36295 /* HWShoppingCartPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWShoppingCartPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m; sourceTree = ""; }; + 8983C7CF18477B6B6E981751F1C09853 /* LookinConnectionResponseAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionResponseAttachment.m; path = Src/Main/Shared/LookinConnectionResponseAttachment.m; sourceTree = ""; }; + 899D158EA21A86AFAE75EACD2CFC106B /* Lookin_PTUSBHub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTUSBHub.m; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.m; sourceTree = ""; }; + 8A46088339E0DB93FCE586878F070297 /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; + 8A73FC0CD1FAD2820E17CD48DE8962BA /* UIImage+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+LookinServer.m"; path = "Src/Main/Server/Category/UIImage+LookinServer.m"; sourceTree = ""; }; + 8B25FB3699225E9D90B118E0F624383B /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; + 8B417F374DC024262C256083E5EB6F70 /* LookinCustomDisplayItemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomDisplayItemInfo.m; path = Src/Main/Shared/LookinCustomDisplayItemInfo.m; sourceTree = ""; }; + 8B8786CBA6B78647E486B3CA129F2DAD /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MBProgressHUD; path = MBProgressHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8B985DB20BDEDC3C065B3A50F078016B /* UITextView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+LookinServer.h"; path = "Src/Main/Server/Category/UITextView+LookinServer.h"; sourceTree = ""; }; - 8C495E6705380977CFF34DEFD621BF49 /* SDCallbackQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDCallbackQueue.h; path = SDWebImage/Core/SDCallbackQueue.h; sourceTree = ""; }; - 8D37279B6C85F4CF9A24280C077B23F5 /* CALayer+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+LookinServer.m"; path = "Src/Main/Server/Category/CALayer+LookinServer.m"; sourceTree = ""; }; - 8E7070EAE3CD21654B5DD5A9531D12AF /* LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServer.h; path = Src/Main/Server/LookinServer.h; sourceTree = ""; }; - 8EAAEC40E00FD2D67C7E5C46D561E1B8 /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; - 8EE35BE199AAA2D6723052ADC7573E04 /* UIViewController+LayoutHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LayoutHelper.m"; path = "Sources/Presentable/UIViewController+LayoutHelper.m"; sourceTree = ""; }; - 8F13ED159399F9081ED4E0855D985B3B /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; - 8F351B59999F041F80A0949DA207118B /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; - 8F53205FC53C4FCB1F1D5089D62F9DFC /* HWShoppingCartPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWShoppingCartPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m; sourceTree = ""; }; - 8F7E17F4510167B68511D3E34E380ED7 /* CALayer+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Lookin.m"; path = "Src/Main/Shared/Category/CALayer+Lookin.m"; sourceTree = ""; }; - 8FA74E651256F04C8514F0A05679D217 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; - 8FFBA60DA7BFD0D987C4E683037FDDB0 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; - 90219DE322B8BCFE6BF680852EBEF4F5 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; - 902DE3B37054D9EE3A5EE281287AD148 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; - 913734C0E85A7287F025E327629CA7FC /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; - 91D3E5E505EB6AAA766EB09E461868F7 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; - 92134100C010678B361F36A55263F8A4 /* NSArray+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Lookin.m"; path = "Src/Main/Shared/Category/NSArray+Lookin.m"; sourceTree = ""; }; - 921FDF9A7596A9183FFD281EEBC18B9D /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; - 92A1420483F3DAE0607CA7ECEA495C73 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; - 92C723F3A1F71486F75D6E7CA7E480E6 /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; - 92E26B1FB2A3B34BF0C4C43A02D2EB58 /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; - 92EF1461B8302AC228343F85048D3888 /* LookinTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinTuple.h; path = Src/Main/Shared/LookinTuple.h; sourceTree = ""; }; - 931F2EC345E0B4F7BD3F617F883DF4E2 /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; - 93ED7AE2B94BDF71B19043408EA5D0F3 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; - 944C193267D20C3EDAC9F40BC95BA365 /* HWPanModalPanGestureDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPanGestureDelegate.h; path = Sources/Presentable/HWPanModalPanGestureDelegate.h; sourceTree = ""; }; - 94EC9A7C408C26C1E3959F02360523F7 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - 952745F4CCA16F79D572D39513608DA3 /* UITableView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+LookinServer.m"; path = "Src/Main/Server/Category/UITableView+LookinServer.m"; sourceTree = ""; }; - 954815F2E3C8D1F819EF2344830A2160 /* LKS_EventHandlerMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_EventHandlerMaker.h; path = Src/Main/Server/Others/LKS_EventHandlerMaker.h; sourceTree = ""; }; - 95B0223E2E65A30C6C4B233E336C7DB9 /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; - 95CE408CF328A01B1BEE4325824DB1C6 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; - 95F6534573C96B51C375B48F710A1253 /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; - 96090B4F5197A5FD0B3684BBF9CE7D69 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; + 8C63EE1B9AB32B647D64489A498987B3 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; + 8CBF9C8DF911E4E9B2C6A4628B5BC93B /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; + 8D7D197A108D97B04C3BA390CD4499D8 /* HWVisualEffectView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWVisualEffectView.h; path = Sources/View/HWVisualEffectView.h; sourceTree = ""; }; + 8D9EC3F78C9EBFBAA2A4A0F3EE3D27AB /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; + 8DDCF4465DE05312EF540D3B5319ADAF /* LookinIvarTrace.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinIvarTrace.m; path = Src/Base/LookinIvarTrace.m; sourceTree = ""; }; + 8EDBEC1105ABEB5730250B28CB605E44 /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; + 8EE2F8245BCEBA174A7A8891FBE03ECB /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; + 8FBE26B2A8BA76D5AA3E371D3CA2EAE6 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + 9005237D68B29ED337A382B01C2917F8 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; + 9118BCB61472BB3349D3BC26BBAA9EE0 /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; + 92B30D23B01D493E996B4DF061CC3062 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; + 92F9229FF7CD4EFBE6BB07684D5118E4 /* Masonry-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Masonry-Info.plist"; sourceTree = ""; }; + 9358338FB49CFCB7417D22C85E339488 /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; + 93A142314C8E6BF405461AFD41E16D08 /* HWPanModalPresentationAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationAnimator.h; path = Sources/Animator/HWPanModalPresentationAnimator.h; sourceTree = ""; }; + 93D6767143B7C5D00675B75D54B0AFEF /* LSTTimer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-umbrella.h"; sourceTree = ""; }; + 93DAC06B5293787BAAAA04E673812C59 /* LSTPopView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTPopView-dummy.m"; sourceTree = ""; }; + 95F5264D9ED9939AE536B5201D80DB5E /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; + 9694A97A95DD31F14A6A155FCCFE7837 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-keyBoard-dummy.m"; sourceTree = ""; }; - 970ACBBC888D1BD4521806C0B268E7C6 /* FLAnimatedImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.release.xcconfig; sourceTree = ""; }; - 973BF123337556FEF831ECD7EF288DE8 /* CALayer+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+Lookin.h"; path = "Src/Main/Shared/Category/CALayer+Lookin.h"; sourceTree = ""; }; - 978791EF867BB9DF203262274A262783 /* LookinCustomDisplayItemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomDisplayItemInfo.m; path = Src/Main/Shared/LookinCustomDisplayItemInfo.m; sourceTree = ""; }; - 999C87FA7C5AA189886B4A2D58358BA9 /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; - 99AE60DF16539817ECDA464B8C0BF588 /* UIViewController+PanModalDefault.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalDefault.m"; path = "Sources/Presentable/UIViewController+PanModalDefault.m"; sourceTree = ""; }; - 99C1A927375BA228B8AD38FDB36211B8 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = WebImage/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 99D142261C81911E0D8BD4684EC87BB5 /* HWPanIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanIndicatorView.h; path = Sources/View/HWPanIndicatorView.h; sourceTree = ""; }; - 9A43BA63699738F29455B4DD47483A5A /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; - 9A61CDBD69057C3674739778A8D7E4BE /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; - 9A65EE54330746267B5EE5B6873635DA /* UIViewController+PanModalDefault.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalDefault.h"; path = "Sources/Presentable/UIViewController+PanModalDefault.h"; sourceTree = ""; }; - 9AB541F4715AB2A0DE59B23A5696D448 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; - 9AC629B4407B73FD1B84C0611D1E18CE /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; - 9B347673A4B4C29BEEEA0DACA4FDE025 /* LKS_InbuiltAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_InbuiltAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.m; sourceTree = ""; }; - 9B7BDA9563EB39641E0A578B77FD4FAA /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; - 9BCDAC8B780C194868C6063FBF20A57A /* HWPanModal.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HWPanModal.modulemap; sourceTree = ""; }; - 9C0C71B23FD64F957CD7F6E8EBE92F99 /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; - 9C78F6EF0B85587CCB2705C057DF66EA /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJRefresh.modulemap; sourceTree = ""; }; - 9CD6AE0C7A2E208FF93567A99374869B /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/include/FLAnimatedImageView.h; sourceTree = ""; }; + 96AA5B4DE9A3DA12F53F6CB5D9AC99E2 /* LookinServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-umbrella.h"; sourceTree = ""; }; + 96B0036686E5E0170AC065045503F785 /* UIVisualEffectView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIVisualEffectView+LookinServer.h"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.h"; sourceTree = ""; }; + 972173A04BB5350B482CEE39EFFBE0EF /* DZNEmptyDataSet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-umbrella.h"; sourceTree = ""; }; + 979F4BB7A6CE1AF72F02D7E7F5EC0D7F /* DZNEmptyDataSet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DZNEmptyDataSet-dummy.m"; sourceTree = ""; }; + 97C8222012D0B30C2E5C40B4867A1AAF /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; + 981BA7AE91A568EC43916303978CE501 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; + 98AC0F8649D533FEA089C0D7C8018ABC /* UIImageView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+LookinServer.m"; path = "Src/Main/Server/Category/UIImageView+LookinServer.m"; sourceTree = ""; }; + 99462BD5694E37EA26675903E46200AD /* DZNEmptyDataSet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DZNEmptyDataSet.modulemap; sourceTree = ""; }; + 995AA67533265367D116C78944065262 /* UIViewController+PanModalPresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalPresenter.h"; path = "Sources/Presenter/UIViewController+PanModalPresenter.h"; sourceTree = ""; }; + 996E03E4CC36DB69F10AD9C8F02472C6 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; + 9B55BC4062AFBC21B6F27CA6801F7F45 /* LookinAttributesSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesSection.h; path = Src/Main/Shared/LookinAttributesSection.h; sourceTree = ""; }; + 9B6321B292B6BCA48E9BD6268BB60C34 /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; + 9B9528B0058E986186BACF5E7A40A742 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; + 9BC9B980A57804E48A923737AE36ACB0 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; + 9C27FE20E006C874307EF5F2B30AA69E /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; + 9C55508E3B8FCF1A927848A4CFAA53D0 /* UIBlurEffect+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBlurEffect+LookinServer.h"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.h"; sourceTree = ""; }; + 9C6E20B7CDAEE04E340BBA081726D5AC /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; + 9C92B663B045144AB6926F9C7A3DA791 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; + 9CC6285CEC9BC9D5CBF28149790EF660 /* LSTTimer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTTimer.h; path = LSTTimer/Classes/LSTTimer.h; sourceTree = ""; }; + 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.debug.xcconfig; sourceTree = ""; }; + 9D3649A7CA35A3580F58B4481D9820AF /* NSObject+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+LookinServer.h"; path = "Src/Main/Server/Category/NSObject+LookinServer.h"; sourceTree = ""; }; 9D41AAC213895165C450F5576DE42CB2 /* 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; }; 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; }; 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CustomKeyboard-umbrella.h"; sourceTree = ""; }; - 9E1C83957751BACAB22569AE64250554 /* HWBackgroundConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWBackgroundConfig.m; path = Sources/View/HWBackgroundConfig.m; sourceTree = ""; }; - 9EE75894CA44B250BFEA11B25F54F149 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* 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; }; - A0641CF016316B36ABD820BBE52AD19F /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; - A12EE00E77DE8A43E7CE64F69D345190 /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; - A137B039D2A317E540FA6772AEB9D840 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; - A143D09B35BD8CC84D08FB36C49D2099 /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; - A1502F82ADC41A5C2CBCFBB8BE2DBA1E /* LookinConnectionAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionAttachment.h; path = Src/Main/Shared/LookinConnectionAttachment.h; sourceTree = ""; }; - A16552B472D24C41550970F7A20D2306 /* HWPanModal-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-umbrella.h"; sourceTree = ""; }; - A183E865565BA2B1F53CD0924621E410 /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FLAnimatedImage.modulemap; sourceTree = ""; }; - A1A68076B57D7DD2B4FCC592ECD4E990 /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; - A2B45634336BCC349F04126A0EE780B0 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; + 9F69E397FB4534DAE86CE36E624729DC /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; + 9FC0CB167AF5751B03431E60D722046F /* SDCallbackQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDCallbackQueue.h; path = SDWebImage/Core/SDCallbackQueue.h; sourceTree = ""; }; + 9FDBCFE0DF35F1346C9E17295438B88A /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; + A0368DACE23383F23784ADE51EC66773 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + A0C23E787A5997AF276176CBB988D241 /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; + A0FE1EF8C4E4226EA31F342E982E620B /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; + A14004EB25D5BC99B439F5543C20E8CF /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; + A16C385BAD6F9C544C59D31A650946CC /* LSTPopView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.release.xcconfig; sourceTree = ""; }; + A187D3CE401AEF4272748BA58A834812 /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; + A1A1675F7ED6C653EC09CB7ED0E5281E /* HWPanModal-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-prefix.pch"; sourceTree = ""; }; + A1CAA004ADB375344EE1C0A0FF7E804F /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; + A20F0D257E58B1A870FF109778CD4B25 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; + A28F16D63BCA40F7DC78734CFE3A235D /* LookinDashboardBlueprint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDashboardBlueprint.m; path = Src/Main/Shared/LookinDashboardBlueprint.m; sourceTree = ""; }; A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-keyBoard-umbrella.h"; sourceTree = ""; }; - A35EA195B83881018F93E59FE86940FC /* HWPanModal-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HWPanModal-Info.plist"; sourceTree = ""; }; - A4846194BA854C70246DB41D70440D2B /* LookinAutoLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAutoLayoutConstraint.m; path = Src/Main/Shared/LookinAutoLayoutConstraint.m; sourceTree = ""; }; - A48C905BEA42A4AA5B76B664D12914C8 /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; + A34081EC91EFEC16FB92BEE1A470458E /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; + A3F7C5007915361DF90A13BBA8CD3EFF /* UIViewController+Presentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Presentation.h"; path = "Sources/Presentable/UIViewController+Presentation.h"; sourceTree = ""; }; + A4288DFF17DF27DEEB1590D7281FBBD7 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; + A43798E6CE0478C1CA6ECFD6AE110593 /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; + A4685A3F7A42EE78A5B66190A100B3C2 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; + A4F699C3287866E6143CDE3B9C0C8BAA /* LSTTimer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-prefix.pch"; sourceTree = ""; }; A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AFNetworking; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A5CA1B7FAF078CBFE367ED67421BD56D /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; - A60394A4E8FFC5CBCC2FD14258C5085A /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; - A658C45B08CED2701138D5375C27CCEE /* LKS_ObjectRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ObjectRegistry.h; path = Src/Main/Server/Others/LKS_ObjectRegistry.h; sourceTree = ""; }; - A68429174A7738F07E1A8AA359028DFE /* LKS_AttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.m; sourceTree = ""; }; - A691E14C36224248BF2A3ECF785CAD95 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; - A6C86B0A2BE58730A7EC5C60F201E0CC /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; + A65F19FCE0D1235D1B87CDFD5146518C /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; + A6B7C52A59144554A5C4CCBAF9A65AC8 /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-keyBoard.release.xcconfig"; sourceTree = ""; }; - A77B70C25747C0E7AE67F784B287D211 /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; - A79588184FF24FC5EB3FA3987629C30B /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - A7BD9DB001526EC0DE681E63675B8318 /* HWBackgroundConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWBackgroundConfig.h; path = Sources/View/HWBackgroundConfig.h; sourceTree = ""; }; - A7FD6EBF394380EFF340D6443E444582 /* UIImageView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+LookinServer.h"; path = "Src/Main/Server/Category/UIImageView+LookinServer.h"; sourceTree = ""; }; - A8E79B2B03D4382C825BD72257BE4101 /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; - A941317B46DF5E4325D43DAC931923A5 /* UIView+WebCacheState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheState.m"; path = "SDWebImage/Core/UIView+WebCacheState.m"; sourceTree = ""; }; - A97B23EA4BC5A09E3AB9062612C11DE8 /* KeyValueObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KeyValueObserver.m; path = Sources/KVO/KeyValueObserver.m; sourceTree = ""; }; - AABD4B7A1454CA80B386AD36AEFEB5A7 /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; - AAE5FEBB56FEC34482A95BC768401167 /* LKS_CustomAttrSetterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrSetterManager.h; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.h; sourceTree = ""; }; - AB7963F3AA45763DF399A396845DDF33 /* NSSet+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSSet+Lookin.h"; path = "Src/Main/Shared/Category/NSSet+Lookin.h"; sourceTree = ""; }; - AC119D7F0D47E7F00738CC762CB0D90B /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; - AC49732B3E41F8772AD10362943A8A97 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; - AC56B56B105B16D1EF0458AD870F4405 /* NSString+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Lookin.m"; path = "Src/Main/Shared/Category/NSString+Lookin.m"; sourceTree = ""; }; - ADCA2BD1C88A86EE8E2A5D4E3461378D /* LookinEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinEventHandler.m; path = Src/Main/Shared/LookinEventHandler.m; sourceTree = ""; }; - AE579277DE642E9E1019F6392CE1755F /* MJRefreshTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshTrailer.m; path = MJRefresh/Base/MJRefreshTrailer.m; sourceTree = ""; }; - AF44575A66631B8B3E9F4F79EAF68A2D /* LookinDisplayItemDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItemDetail.h; path = Src/Main/Shared/LookinDisplayItemDetail.h; sourceTree = ""; }; - AFF73BDD48D8B44AFC6A61B1B0B3B57B /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; - B08DC7A1A58E4347C875EE7C77258D67 /* LookinAttributeModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributeModification.m; path = Src/Main/Shared/LookinAttributeModification.m; sourceTree = ""; }; + A701AEED09FE2183269AA89DFA8E4B7A /* CALayer+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+Lookin.h"; path = "Src/Main/Shared/Category/CALayer+Lookin.h"; sourceTree = ""; }; + A732383A60ACA7498BD810AAC8E31192 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; + A73F313A18713E36B251C92C66806CE8 /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; + A75653F7F6754FE7D26DA5C94A641DE8 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; + A75ADFE775EE09236D1DF5672ACB9A4C /* LKS_TraceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_TraceManager.h; path = Src/Main/Server/Others/LKS_TraceManager.h; sourceTree = ""; }; + A8107C05A5879CBA4916F6AD4685D772 /* LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServer.h; path = Src/Main/Server/LookinServer.h; sourceTree = ""; }; + A89D8D8B71AD9A723D88B13AF519A214 /* CALayer+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+LookinServer.h"; path = "Src/Main/Server/Category/CALayer+LookinServer.h"; sourceTree = ""; }; + A8A5F422D3A80975E78C20D9980BBAE7 /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; + A8CED6128E73E0F84131EFEF369AFB64 /* FLAnimatedImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FLAnimatedImage-Info.plist"; sourceTree = ""; }; + A923EA60F7DA10F8B88FCD5E16702406 /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; + AA356D7B80B205861FCCD6FECB42DDE3 /* LookinWeakContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinWeakContainer.h; path = Src/Main/Shared/LookinWeakContainer.h; sourceTree = ""; }; + AA4F3775DDC9BAD8BC30D51376A765F0 /* LookinCustomAttrModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomAttrModification.h; path = Src/Main/Shared/LookinCustomAttrModification.h; sourceTree = ""; }; + AA574A6EA7EECCE7D1E086B964FA3C65 /* LookinAttrIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrIdentifiers.h; path = Src/Main/Shared/LookinAttrIdentifiers.h; sourceTree = ""; }; + AA75F2BBB1F8188D75855FF34D8A7AE3 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; + AB547BD41867170F26173D27CE44DCE6 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; + AB771D1A9F6BE6B15418DB387EE5ADF3 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; + AB93341F4852834DE8BA29DAB3E69371 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; + ABF08650352052DEA4797A89BFD856FF /* SDImageFramePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFramePool.h; path = SDWebImage/Private/SDImageFramePool.h; sourceTree = ""; }; + ACDFCFE3242922DD1C6F9C0911E0A56B /* LookinWeakContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinWeakContainer.m; path = Src/Main/Shared/LookinWeakContainer.m; sourceTree = ""; }; + AD1C2B98D240951DA7BD821093E6C395 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; + AD7824F87B7A4AC0EB49B7B856736BF2 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; + AE403DA6C5955C67D130890FCA703778 /* LKS_RequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_RequestHandler.h; path = Src/Main/Server/Connection/LKS_RequestHandler.h; sourceTree = ""; }; + AE6F296D300159E8673214D526F10584 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; + AE979EFDEE516846488B7EE0D6F7EED8 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; + AE9EAD92339D5CAFE9DD672B7A3B6E7D /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; + AF32E35E8F4552F6AF08F140AD085FE4 /* KeyValueObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KeyValueObserver.h; path = Sources/KVO/KeyValueObserver.h; sourceTree = ""; }; + AFC953B00F77A76AF38E0FA2C8AB5F03 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; + AFF39BEB58B97CA8F3DFDE7996909112 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; + AFFA5747833468A5901D8AA31E822627 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; + B0023999B588A745D2530760778D09F9 /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; + B0B0D3A4B05EE4A8AA2F56AF68EA3ADF /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SDWebImage; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B0FB288C5320DA98E827641B6E277307 /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; - B1272B72DEF143341E0CC0451AF17506 /* HWPanModalPresentationAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationAnimator.h; path = Sources/Animator/HWPanModalPresentationAnimator.h; sourceTree = ""; }; - B239AD8AAB2A61B7AE6B39D6B7F1F9D5 /* LookinConnectionAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionAttachment.m; path = Src/Main/Shared/LookinConnectionAttachment.m; sourceTree = ""; }; - B2E58999C4BBC169E871AD7F5DC6CC54 /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; - B32295E122B71520322E84A41C7EE15B /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; - B41358A1C10AD0D29F1770C04A5F0CAF /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; - B466F948757742572AAEA4DF218BD987 /* HWVisualEffectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWVisualEffectView.m; path = Sources/View/HWVisualEffectView.m; sourceTree = ""; }; - B4B06DC6899A1F01C7834AFAF5E0FFDF /* LookinCustomDisplayItemInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomDisplayItemInfo.h; path = Src/Main/Shared/LookinCustomDisplayItemInfo.h; sourceTree = ""; }; - B51D6BDADBE9F95F37BE5FDCC3849A36 /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; - B5D946A76BE7958D130628335233FAE2 /* LookinServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.release.xcconfig; sourceTree = ""; }; - B71B6DD998C6C529D683056C8285BE11 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; - B72774F6480A029A3A2441E9DF82096D /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; - B7824533FC35957318C6FAF5ECA425E7 /* Lookin_PTPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTPrivate.h; path = Src/Main/Shared/Peertalk/Lookin_PTPrivate.h; sourceTree = ""; }; - B78E312E7E63BF84B4DD4072BAB4A551 /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; - B87A76839C6A92DD597AFD764D90E24D /* FLAnimatedImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.debug.xcconfig; sourceTree = ""; }; - B95D50B779E63B23E1786D6F6CCABD4A /* LKS_HierarchyDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.h; sourceTree = ""; }; - B979B6198848283DB66503E656A49837 /* MJExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-umbrella.h"; sourceTree = ""; }; - BAE82C8EA8816156B60A19B5AAA61D2B /* UIImage+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+LookinServer.h"; path = "Src/Main/Server/Category/UIImage+LookinServer.h"; sourceTree = ""; }; - BAF92A34DD29AD318C11B5807644B670 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; - BBB5022209600659D8A4792A6FD748CE /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; - BBD303CA2BE52A14A7809A2F458FE949 /* HWPanModalPresenterProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresenterProtocol.h; path = Sources/Presenter/HWPanModalPresenterProtocol.h; sourceTree = ""; }; - BCB715803528E46AB9661E7F8A956D85 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; - BD6A58C100D7D0C95F73174D108F1F16 /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; + B12BB85356FB25DB1C8CA459600D3F8E /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; + B1ABBFCC8D2F6B393D3F4389129E97F5 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; + B21F4D087C3795EA326FE588C03028CC /* MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJRefresh-Info.plist"; sourceTree = ""; }; + B2770F360CD876399FE83C30619DBC24 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; + B354D25F9AAB5A1E64BA7AAED1BA9991 /* UIView+WebCacheState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheState.h"; path = "SDWebImage/Core/UIView+WebCacheState.h"; sourceTree = ""; }; + B36F0D1046FE48DF23AE7AB21CD678D3 /* LookinDisplayItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItem.m; path = Src/Main/Shared/LookinDisplayItem.m; sourceTree = ""; }; + B4E40A4D926E9D870172CB05C27151FC /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; + B51F28BC73CA22D31949B1635AF8CAE1 /* UIView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LookinServer.m"; path = "Src/Main/Server/Category/UIView+LookinServer.m"; sourceTree = ""; }; + B53B6AA90E9FBFBBE4E4275DE10531D3 /* CALayer+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Lookin.m"; path = "Src/Main/Shared/Category/CALayer+Lookin.m"; sourceTree = ""; }; + B647311E2487029EA920B923258697D2 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJExtension/PrivacyInfo.xcprivacy; sourceTree = ""; }; + B686FCB243BCB66C7BB1F42E6A4B3417 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + B68B9359B3F4863CD16BC4AF1031EDD1 /* CALayer+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+LookinServer.m"; path = "Src/Main/Server/Category/CALayer+LookinServer.m"; sourceTree = ""; }; + B71D1DE227720C6548D26CB1380A595F /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; + B772F3922ED9C416DBFEA6651FBB3930 /* LKS_HierarchyDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.m; sourceTree = ""; }; + B876DE6F099D679F03040B8EF24E5C82 /* HWPanModalPresentableHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentableHandler.m; path = Sources/Mediator/HWPanModalPresentableHandler.m; sourceTree = ""; }; + B896A10F9115068B682B35E4774898B6 /* LSTTimer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTTimer.modulemap; sourceTree = ""; }; + B8F37F4AA285AB6E2540A4063D8B802F /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; + B90789CA4A099321E01CFF8CB566B5F3 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; + B9D9760D282FEC09C3A5774993001829 /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; + BAD931CF8729677FC0BD6248B49E6631 /* LookinConnectionResponseAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionResponseAttachment.h; path = Src/Main/Shared/LookinConnectionResponseAttachment.h; sourceTree = ""; }; + BAF401BA2295E570793228F6E0B37E3F /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJRefresh.modulemap; sourceTree = ""; }; + BC24AF9FD32062D15DE214E94B0E828F /* LKS_GestureTargetActionsSearcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_GestureTargetActionsSearcher.m; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.m; sourceTree = ""; }; + BC5A2383372F42B2452808A886E02C6B /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; + BC686BE8B7F5AC6B3A652ABBA6EAE87A /* LKS_CustomAttrSetterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrSetterManager.h; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.h; sourceTree = ""; }; + BDC5D95848173A06A25E49216A4BEFDC /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; BDEE6097B6411333154FEF90A280E3E4 /* 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; }; - BEB8AC93A851C5DFA93D44CFAD39856D /* UIVisualEffectView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIVisualEffectView+LookinServer.m"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.m"; sourceTree = ""; }; - BEEC82A223FE289DDC2C165B2D2E03CA /* LKS_CustomDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.h; sourceTree = ""; }; - BF0595213FCD9D5150FF374A286E2BC6 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; - BF63871F7CF3667516551ED65E16445F /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; - C02274A03EA3977CCD31F6436223F923 /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; - C0271A933F5E2DB9D6CC456E988103D1 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; - C078A2E8B42103FA232855A1D6A0D7F7 /* LookinDashboardBlueprint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDashboardBlueprint.m; path = Src/Main/Shared/LookinDashboardBlueprint.m; sourceTree = ""; }; - C07FA22445AE442F8F429DC97AD5226D /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; - C0E09B2B757F6365152258D76B3D2A39 /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; - C0E3D0083F73A4B9E51802D71E12B6D5 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; - C0FC0E2910D71C68F70A7CBBD2130D87 /* LKS_ExportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ExportManager.h; path = Src/Main/Server/Others/LKS_ExportManager.h; sourceTree = ""; }; - C12D160C6063D462EE97C5CD6A35994E /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; - C190447F019E6407D44584A4FDF8F21A /* LookinAppInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAppInfo.h; path = Src/Main/Shared/LookinAppInfo.h; sourceTree = ""; }; - C20D9185B54011BBE67FAA2FE147DA10 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; - C247A1884F6D32D3F8E2A80759806E33 /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; - C354B162321F2CA18DB1B330D092378E /* DZNEmptyDataSet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.debug.xcconfig; sourceTree = ""; }; - C4282EA0E02DB360DBEA169BDB76A24E /* LookinDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDefines.h; path = Src/Main/Shared/LookinDefines.h; sourceTree = ""; }; - C46FC528BD8EF754DE7F229CABF54A73 /* UIScrollView+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+Helper.m"; path = "Sources/Category/UIScrollView+Helper.m"; sourceTree = ""; }; - C4A1569A2FA3521F9130DA7EA649CE07 /* LKS_AttrModificationPatchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrModificationPatchHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.h; sourceTree = ""; }; - C53E65DBE6C4798EE75818796AEE4D8C /* HWPageSheetPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPageSheetPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h; sourceTree = ""; }; - C5805469F7E93E743A134E4EEC762665 /* DZNEmptyDataSet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-umbrella.h"; sourceTree = ""; }; - C5D4B0A2DB8E7128A6DA546DA4C7CEB7 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; - C5F9910D6ED5B2A16EE7819D62912F64 /* Image+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Image+Lookin.m"; path = "Src/Main/Shared/Category/Image+Lookin.m"; sourceTree = ""; }; - C656F7688A2DB9FEA22520878F9A2055 /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; - C67403F95732E8793DB36834C4726BFA /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; - C6C930D163128CBE864CF933994F470B /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; - C7C888B99007AD057195C9956BE40388 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; - C917ABB653A9CB7D7518FCE9F40F2F2D /* HWPanModalPresentationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationDelegate.m; path = Sources/Delegate/HWPanModalPresentationDelegate.m; sourceTree = ""; }; - C931ABFE9D27B32AD8D6C893AD979117 /* LKS_ObjectRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ObjectRegistry.m; path = Src/Main/Server/Others/LKS_ObjectRegistry.m; sourceTree = ""; }; - C93CA5E20848AEFCB61E12D54CCA6ADF /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; - C9465AFC6C48C65FF4158D542A5001CD /* UIColor+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+LookinServer.h"; path = "Src/Main/Server/Category/UIColor+LookinServer.h"; sourceTree = ""; }; - C9DEFB96646787781652ABFE1D5648AF /* HWPanModal.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.debug.xcconfig; sourceTree = ""; }; - CA563C1C8CD02A20BF55A818576D82EE /* LookinDisplayItemDetail.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItemDetail.m; path = Src/Main/Shared/LookinDisplayItemDetail.m; sourceTree = ""; }; + BE0B0E1A9A292EDE11246C6685B3FF8A /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; + BE11DDB27A20A87C02AE0F91342FA9E9 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; + BF559CBB24F4A49720F72A32ADDCCFE2 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; + BF5EC4E67D9695435096AE8FFF0726FA /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; + BF679003FB79C12E8A8221EC19044EC3 /* HWPanModalIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalIndicatorProtocol.h; path = Sources/View/HWPanModalIndicatorProtocol.h; sourceTree = ""; }; + BFC6D8F98A0A99B4F62553DD6B2DE362 /* HWPanContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanContainerView.m; path = Sources/View/HWPanContainerView.m; sourceTree = ""; }; + BFD36E41E270B32316CAE346D73B1BB4 /* LKS_EventHandlerMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_EventHandlerMaker.m; path = Src/Main/Server/Others/LKS_EventHandlerMaker.m; sourceTree = ""; }; + BFFCEECD2573D5472737D9AFB10A0BB2 /* LKS_ObjectRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ObjectRegistry.h; path = Src/Main/Server/Others/LKS_ObjectRegistry.h; sourceTree = ""; }; + C02050360407C95F57A46E3425089760 /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; + C0E2F76DB6A01DBF448BF55D94414007 /* LKS_CustomDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.m; sourceTree = ""; }; + C15066DB017692FFB93D6BF3C34128D3 /* HWVisualEffectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWVisualEffectView.m; path = Sources/View/HWVisualEffectView.m; sourceTree = ""; }; + C1EC495C820AD2FE568E285440075D82 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; + C246D6EBE3F2F29765C86C55F130AD3F /* Color+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Color+Lookin.h"; path = "Src/Main/Shared/Category/Color+Lookin.h"; sourceTree = ""; }; + C2641A163910BF7346FA6273237FDB7D /* Lookin_PTProtocol.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTProtocol.m; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.m; sourceTree = ""; }; + C387114CB39CEE512E07F38E4439D4D8 /* UIView+HW_Frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+HW_Frame.h"; path = "Sources/Category/UIView+HW_Frame.h"; sourceTree = ""; }; + C45F5D95A727E9121E38DFEFADA82094 /* UICollectionViewLayout+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+MJRefresh.m"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.m"; sourceTree = ""; }; + C49E916A72175489DFFC49A15E87403D /* HWPanModalHeight.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalHeight.h; path = Sources/Presentable/HWPanModalHeight.h; sourceTree = ""; }; + C4D31F6949E2640BBC06F6F5E862EA6B /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; + C5830BBF390FC8D9CCA3C6BDBE65DD04 /* LookinAttributesGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesGroup.m; path = Src/Main/Shared/LookinAttributesGroup.m; sourceTree = ""; }; + C59475012E53558600AFA4F7685E8F9E /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; + C657F16F9FE7919D2B27F05D611C2F2D /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; + C685758668AFAC91E0AE4675AEA80600 /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; + C6B393724F3296B6116FF029FBA74D60 /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; + C7586CB0CDC6CAF19F6A64083B6C8C0F /* HWPanModalPresentationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationController.m; path = Sources/Controller/HWPanModalPresentationController.m; sourceTree = ""; }; + C77A046F5E5912D1BF11BAA897F3C198 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + C7B7F069BA04D7981F13F5FA41B3BAB5 /* LKS_HierarchyDetailsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDetailsHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.h; sourceTree = ""; }; + C7CA2BC79CB47B27F4A1481476747F49 /* DZNEmptyDataSet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-prefix.pch"; sourceTree = ""; }; + C7E35B5D53702D7A355AD38231170EAB /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; + C82B001CD34AC553F11A55D1E576C902 /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; + C84FAFE47B2E31104A515395A5239442 /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; + C8667A6D81C45427108730E481B7134F /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + C88E60EA597845949F0925B844477F63 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; + C8974089710AB7F8A65D77241AA70557 /* FLAnimatedImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.debug.xcconfig; sourceTree = ""; }; + C930EDADB5661C1F591CA4E0A60BCA26 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; + CA040E4FC9E6D5254278E66354DE0995 /* LookinAppInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAppInfo.h; path = Src/Main/Shared/LookinAppInfo.h; sourceTree = ""; }; CAD1D653361EAFCC0E4FFD8252FC1E74 /* Pods-CustomKeyboard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-CustomKeyboard.modulemap"; sourceTree = ""; }; - CBA39C705DBB9802B534C4BDD3664538 /* LookinHierarchyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyInfo.h; path = Src/Main/Shared/LookinHierarchyInfo.h; sourceTree = ""; }; - CC16AC12627C17F0E12860526E93F8EF /* LookinAttrType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrType.h; path = Src/Main/Shared/LookinAttrType.h; sourceTree = ""; }; - CC1CE35F4EE179193CCCEA428E5FF90F /* UILabel+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+LookinServer.m"; path = "Src/Main/Server/Category/UILabel+LookinServer.m"; sourceTree = ""; }; - CCE0180ACC796145628AC2F013D66C45 /* UITextField+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+LookinServer.h"; path = "Src/Main/Server/Category/UITextField+LookinServer.h"; sourceTree = ""; }; - CCFCCA3349FCD1D6463769CF4AAFD75C /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; - CD41EB00FCD1D9A736384800AABD1E30 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; - CD81B3BC38825A465F08F0A7FF6B6D56 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; - CDBA0F660CF6947CF53C5863681817AB /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; - CDF036FAEDB3424A0B63A3F64C926C94 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; - CE31F60CA05A2FFF39BB47897CB17219 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; - CE9DC3EBC5E4498B6CBDAA25AFECD440 /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; - CEED0C5BB9E7BD10174D1CAE5F34FE15 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; + CB1BEFB1C0257A74B80CAF80DB336894 /* LSTTimer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.release.xcconfig; sourceTree = ""; }; + CB56ABA66093040F0D62AF378BB66DBE /* LKS_CustomAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.h; sourceTree = ""; }; + CB96704A28B66FFCFA6B43392123348C /* LookinAttrIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttrIdentifiers.m; path = Src/Main/Shared/LookinAttrIdentifiers.m; sourceTree = ""; }; + CC87F6E60998716F313AD85E3F2F0C78 /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; + CD29BD8633F552915B08BF15C7E0DFFF /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; + CDEC5449CBECD6C324B9864AD284EC55 /* Image+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Image+Lookin.m"; path = "Src/Main/Shared/Category/Image+Lookin.m"; sourceTree = ""; }; + CE1FC58856D64F439A2DB39A5CBEAF01 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; + CE8561E7F90B3736EA348E5236FECB1C /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; + CE909BA066F9B44E9C2F036FF3FD44FE /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; + CEFEE7CEBA57AF6426BA05F18F444C4E /* NSString+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Lookin.h"; path = "Src/Main/Shared/Category/NSString+Lookin.h"; sourceTree = ""; }; CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "SDWebImage-SDWebImage"; path = SDWebImage.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - CFCADA560B6CBB7BCDE9CD39CDBE90F2 /* UIViewController+Presentation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Presentation.m"; path = "Sources/Presentable/UIViewController+Presentation.m"; sourceTree = ""; }; - D002C48E491E43551029CCF47FC83441 /* LookinServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LookinServer-Info.plist"; sourceTree = ""; }; - D08373F9471B6FE81CFE350A61D7EEC0 /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; - D0E66BF426F9E82A8E7F4F5630A42386 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; - D1AB74F96045D59C6D2386964814DA47 /* HWPageSheetPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPageSheetPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m; sourceTree = ""; }; - D1B006E7B08941CF8A2C5843A8B9C99A /* MJRefreshTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshTrailer.h; path = MJRefresh/Base/MJRefreshTrailer.h; sourceTree = ""; }; - D1EC76CFF0744C55D60E83B26DB4807B /* LookinServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-umbrella.h"; sourceTree = ""; }; - D2A792CB950AB99663B25C1BE2C0853A /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; - D3AD2DC617E8094624655175273C7AB8 /* UITextField+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+LookinServer.m"; path = "Src/Main/Server/Category/UITextField+LookinServer.m"; sourceTree = ""; }; - D3C9A4D4BA6E0F5E50F5993BD82CF6E6 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; - D51913F3FF9E3373AE2497E7D98225CF /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; - D52F3A758237EAA29F8DFF3603985B94 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; - D5303ED4D5AB235B98FBA4B0FDED5DF7 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; - D576F2E6ED4261CAADE09C891ED19EEF /* HWDimmedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWDimmedView.m; path = Sources/View/HWDimmedView.m; sourceTree = ""; }; - D57BF77833CFB4176D299C7D13ACBA75 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; - D5BC11645051F0690160018A0FDF87B2 /* LookinCustomAttrModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomAttrModification.h; path = Src/Main/Shared/LookinCustomAttrModification.h; sourceTree = ""; }; - D62A25339DF2EED2DFE6F9001320C81F /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; - D62C4FB56F8536A4E96AFCADDF2C0945 /* SDImageFramePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFramePool.m; path = SDWebImage/Private/SDImageFramePool.m; sourceTree = ""; }; - D66A82F8BDB185549FF0B573D7E52F8B /* LookinAppInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAppInfo.m; path = Src/Main/Shared/LookinAppInfo.m; sourceTree = ""; }; - D6E12F6D8FA9D6FBA8E91CEC32AD4F92 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; - D6F2CCB5C719F8790027213B6CF0ED8A /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; + CF38798B2D107B8F8B096B856DF98A24 /* Lookin_PTPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTPrivate.h; path = Src/Main/Shared/Peertalk/Lookin_PTPrivate.h; sourceTree = ""; }; + CF585038948BE5BD9FDE25D090C77A52 /* HWPanModalAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalAnimator.h; path = Sources/Animator/HWPanModalAnimator.h; sourceTree = ""; }; + CF5E2B29305178430BD510351FDD6C99 /* MJRefreshNormalTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.m; sourceTree = ""; }; + CFBE4CFC0231291954B6CBE560F2D503 /* LSTPopView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTPopView-Info.plist"; sourceTree = ""; }; + D08B8F280C5811F6505EA1AE7983082B /* LookinStaticAsyncUpdateTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinStaticAsyncUpdateTask.m; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.m; sourceTree = ""; }; + D0B5D7F39DA4B830F1B68A7D9273B85E /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; + D1995E5A7C78EB3AC4764F06A4A7E676 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; + D1A874AEEF141E292D730F9161627B04 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/include/FLAnimatedImage.h; sourceTree = ""; }; + D1F143BC4A879AC2B9896478CE4FF798 /* LookinAutoLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAutoLayoutConstraint.h; path = Src/Main/Shared/LookinAutoLayoutConstraint.h; sourceTree = ""; }; + D2892265E5746B87D5D6CDB4D0215238 /* LookinServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LookinServer.modulemap; sourceTree = ""; }; + D2ADA0495E5FE9068CEDD520D7AB4D72 /* LKS_CustomAttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.h; sourceTree = ""; }; + D2E3EA9E3A659E147112B9E7A63EEC56 /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; + D3576B2FF83DF230E75AA05AB2DB6B4D /* UIViewController+PanModalPresenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalPresenter.m"; path = "Sources/Presenter/UIViewController+PanModalPresenter.m"; sourceTree = ""; }; + D37BD8FF05E69B29FC64F9CEB3CA7255 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/include/FLAnimatedImageView.h; sourceTree = ""; }; + D3831111080859754E7A75FF007ED40F /* LKS_HierarchyDetailsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDetailsHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.m; sourceTree = ""; }; + D4EB28525886DCE45DC1BBE08F77BCDF /* LookinHierarchyFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyFile.h; path = Src/Main/Shared/LookinHierarchyFile.h; sourceTree = ""; }; + D52AD9DE99C02DF34E22E59E4A970F45 /* UIColor+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+LookinServer.h"; path = "Src/Main/Server/Category/UIColor+LookinServer.h"; sourceTree = ""; }; + D5D847654327E7F1E333D40CD9665067 /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; + D7117B22CB4967C93BC27DD5B1BA9865 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; + D72EC9997A8CA1698A3020135CE8BC2E /* UIViewController+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LookinServer.h"; path = "Src/Main/Server/Category/UIViewController+LookinServer.h"; sourceTree = ""; }; D742A7EF918BC67B0884AF366F7415FD /* Pods-CustomKeyboard-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CustomKeyboard-acknowledgements.plist"; sourceTree = ""; }; - D74882C4484074AC8872B2A5E438246B /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; - D78DFC477962A207938C611AE0ACA069 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; - D8682D5ED4B7C56D720AFBA44BC3BC76 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; - D881DD0CA33CD1E3EFE0136A615F1F65 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; - D8BA408618D220AA3B9C6EE5D3745E21 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; - D8F23CA3052D23EB11B0A898DB4A6E40 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; - D93DC4D1234F76EDC574EBA1402310C2 /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; - D9713BA6BE14577AE57300E3DD702FD7 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; - D9BBE6A2F399A988F5BC26DB0D0BF68C /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; - D9D5E9D7932C124D684E6F1F2A2ECE7D /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; - DA7CF72060C622DB6A61C9EB8ED621EC /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJRefresh/PrivacyInfo.xcprivacy; sourceTree = ""; }; - DB2EC5EF47D2A84B9FD85A1FB0124FD2 /* LookinDisplayItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItem.m; path = Src/Main/Shared/LookinDisplayItem.m; sourceTree = ""; }; - DB34B51460BF162B997045D2CF3D0488 /* LKS_CustomAttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.h; sourceTree = ""; }; - DBA1D9F210D421679049394348DAE50E /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; - DBC5FB408D1CC34D172A8CECF2AE6860 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; - DBE8F778D2F44195988D4A515D7F4B42 /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; - DC0E4313E6BF0284C12011FF5FD9B8A9 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; - DC656082CB5200E5E1AF1B4BE99048B3 /* HWPanModal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModal.h; path = Sources/HWPanModal.h; sourceTree = ""; }; - DC6B018BDEA17A60716B1E4180015BC9 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; + D85D1D9B369469B71D9FE49138927707 /* LookinEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinEventHandler.h; path = Src/Main/Shared/LookinEventHandler.h; sourceTree = ""; }; + D9879EAF15EB971D024F6726C4E07562 /* HWShoppingCartPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWShoppingCartPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h; sourceTree = ""; }; + D9F0FAF97F68F13F21EE3D8E18046926 /* LookinCustomAttrModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomAttrModification.m; path = Src/Main/Shared/LookinCustomAttrModification.m; sourceTree = ""; }; + D9FB07B277FA3212774D9D7EF2156759 /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; + DA0B23D302091DCF531627DB2F06A5BA /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; + DA7F2EDBF237046CD345C29806E0A756 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; + DA876A02B80932A6284AB2ACAB8135A6 /* LookinDisplayItemDetail.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItemDetail.m; path = Src/Main/Shared/LookinDisplayItemDetail.m; sourceTree = ""; }; + DC490DD3FFABA4122C58404F7DFAD348 /* LookinConnectionAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionAttachment.h; path = Src/Main/Shared/LookinConnectionAttachment.h; sourceTree = ""; }; + DC75CCA31193BB63063F364267DBCF2D /* LKS_ExportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ExportManager.m; path = Src/Main/Server/Others/LKS_ExportManager.m; sourceTree = ""; }; DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-keyBoard"; path = Pods_keyBoard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DCB59AEF88556057BC2FD85427D2EFE7 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; DCFE00F3CC8CED67258D7F7DD13F3156 /* Pods-keyBoard-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-keyBoard-frameworks.sh"; sourceTree = ""; }; - DDF616B9EC8DE21E9AA84880DC51A9CA /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; - DF0270B966F6AC049BFD4D076AB8B56F /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; - DF05C447154DF7BE7ECB7AE07BF863D4 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; - DF251712BA063E8344D1B1CDB785B3C8 /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; - DF51D23D1444310275D4BB68151F1F60 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; - DF5F6CA83FCCE26A8EBAB9D62A793D12 /* NSObject+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Lookin.h"; path = "Src/Main/Shared/Category/NSObject+Lookin.h"; sourceTree = ""; }; - DFBCDC70260B861EA38352626CC2393C /* UITableView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+LookinServer.h"; path = "Src/Main/Server/Category/UITableView+LookinServer.h"; sourceTree = ""; }; - E031D032167FCBE18305712D789891F0 /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; - E0854CBF8370AAF7A642A9BE65EA9C79 /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; - E089B74E2F4B50357B63BC6069272B9D /* MJRefreshStateTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m; sourceTree = ""; }; - E115A6217BE4FADE37437C87CB0A7B59 /* LookinDisplayItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItem.h; path = Src/Main/Shared/LookinDisplayItem.h; sourceTree = ""; }; - E1A687EF38913970F24032AD57F99A10 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; - E1A7A8B90EB2B4D833CF1D550EC9FB29 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; + DD391D4FA7F38A97455407F9DA5DA8F0 /* HWPanModalContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContentView.m; path = Sources/View/PanModal/HWPanModalContentView.m; sourceTree = ""; }; + DDA24856F33C6E655A624699241CFD6D /* ResourceBundle-MJExtension-MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJExtension-MJExtension-Info.plist"; sourceTree = ""; }; + DDD6B4DA641B2F94F2D426AC2D4A5E7E /* FLAnimatedImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.release.xcconfig; sourceTree = ""; }; + DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LSTTimer; path = LSTTimer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DE26DBA97E2F7B5B4805533E6C020C30 /* HWPanModalPanGestureDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPanGestureDelegate.h; path = Sources/Presentable/HWPanModalPanGestureDelegate.h; sourceTree = ""; }; + DE5FC1FDACC1A466A889091A6DD9D1B4 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; + DE9ADECB39002B8ABC9BF590B430634B /* UITextView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+LookinServer.m"; path = "Src/Main/Server/Category/UITextView+LookinServer.m"; sourceTree = ""; }; + DEA09040DACD7A53B041773DD59096FC /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; + DF4489E08CBFCDAD16CB71B168364F46 /* LSTPopView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTPopView.modulemap; sourceTree = ""; }; + DF4516C3B5E735B563E9749DFA6BCB51 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; sourceTree = ""; }; + E02C6844FCB15EFA12DE7936E2D89768 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; + E0B73DB737A3D2CAAA90EA20B4BB23B3 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; + E114D2723BCB64ADA9A307B95F5DE640 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; + E164F75EDECDE7B82945FA657EA41708 /* HWDimmedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWDimmedView.h; path = Sources/View/HWDimmedView.h; sourceTree = ""; }; + E1732483C75B01353EF9D04684480EE4 /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; + E19751E7E128A05C5F94C54CB5222006 /* LKS_EventHandlerMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_EventHandlerMaker.h; path = Src/Main/Server/Others/LKS_EventHandlerMaker.h; sourceTree = ""; }; + E1CED825638D1B3169A0C8EE7A57C720 /* Image+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Image+Lookin.h"; path = "Src/Main/Shared/Category/Image+Lookin.h"; sourceTree = ""; }; E214C17CF404D45BDF92DD6C18D371FA /* Pods-keyBoard-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-keyBoard-acknowledgements.markdown"; sourceTree = ""; }; - E2238DC60FAF777CC267A61F86DC909F /* UIViewController+Presentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Presentation.h"; path = "Sources/Presentable/UIViewController+Presentation.h"; sourceTree = ""; }; - E3ED3F5FB825F25AD8EB19CE0AC86B77 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; - E448066D92C481C253D5FA5FC624A0D8 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; + E2E3CFC89381BAE830E4045CE02E25EB /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; + E382492BA0D4E5C9BEF289F10F029CAA /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; + E3EF6841A6A45FD5C11031ED861CFF06 /* LKS_InbuiltAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_InbuiltAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.h; sourceTree = ""; }; + E41E643057B645A4E6C5FEA5E52213CB /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; + E49B94A4D72DB4B81F4E8CDC098BC388 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MJRefresh; path = MJRefresh.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E4A29706814F99AC9B476BC26B8CCC39 /* UILabel+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+LookinServer.h"; path = "Src/Main/Server/Category/UILabel+LookinServer.h"; sourceTree = ""; }; - E4FA0289B9B02BEC5BD44CA92580B1E1 /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; - E58431618F9B14FA189C6C896394334D /* LKS_RequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_RequestHandler.h; path = Src/Main/Server/Connection/LKS_RequestHandler.h; sourceTree = ""; }; - E59399382497BDA8D62E5C39784B00B5 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; - E634ACC2034218ADC26B5D4109F49AA9 /* UIScrollView+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+Helper.h"; path = "Sources/Category/UIScrollView+Helper.h"; sourceTree = ""; }; - E66397BB19318C841897657B7D33195C /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; - E68A775E5721AFBDB649BB9442D57178 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; - E69955CA9C7B2AA324E3704014745EDF /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - E80165A2B20491F0E71E9BCFA72510B9 /* LKSConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKSConfigManager.h; path = Src/Main/Server/Others/LKSConfigManager.h; sourceTree = ""; }; - E8553D3C121BDD2352FF757D8EC709D3 /* LookinServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LookinServer.modulemap; sourceTree = ""; }; - E876347288A6DCD527E822BBFB6C5774 /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; - E8B33995F7416B51F3DB4DF1B8C1C079 /* LookinObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinObject.h; path = Src/Main/Shared/LookinObject.h; sourceTree = ""; }; - EA0DFE57597F1E609ADFB79857FE435B /* LookinAttributesSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesSection.m; path = Src/Main/Shared/LookinAttributesSection.m; sourceTree = ""; }; - EAA52787EF7666BD721984EDA694AE9B /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; - EAAB3A74BE098DF24548F19631ED1ECA /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; - EB1751B89D4AAC72FB84E06877E9092A /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; - EB219D5B4EB24108AB241B8A5F5ABE19 /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = ""; }; - EB627434D926A06008809F0DE57949FF /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; - EB89406A9E055C08A7A24CF01C851841 /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; - ECBB46360F809A2F94F7C900E07EB3E3 /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; - ED79370B32C9C754D3E34A13A2B7A516 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; - EE48BDF616ED4BAED9CAABA06281EC92 /* HWDimmedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWDimmedView.h; path = Sources/View/HWDimmedView.h; sourceTree = ""; }; - EEE3AE806D4D49918C7379264B8B46D1 /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Masonry.modulemap; sourceTree = ""; }; - EF19B866A3DB2F79FCE73ADCD2FA06C3 /* LookinCustomAttrModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomAttrModification.m; path = Src/Main/Shared/LookinCustomAttrModification.m; sourceTree = ""; }; - EFAF27B6DC3AA50C96B99E41F9E769E4 /* LKS_TraceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_TraceManager.h; path = Src/Main/Server/Others/LKS_TraceManager.h; sourceTree = ""; }; - F03C6F51BDA9A5E5F9395D9F199C54FF /* UIVisualEffectView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIVisualEffectView+LookinServer.h"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.h"; sourceTree = ""; }; - F10A37229A6845649A237D864C061793 /* LookinAttributesGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesGroup.m; path = Src/Main/Shared/LookinAttributesGroup.m; sourceTree = ""; }; - F12C01BF0CB50E72493E6AAC23806030 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; - F1D4E5D74AB2CB580743562EDDD74A4B /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; - F1ED191A53A707D9518B3082C0464066 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; - F23E87D1922F53403D673679FAA023CF /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; - F30BDD15914FC15F21B063466E4635E6 /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = ""; }; - F31C98ACB27D00FB2C83BBFA9C3DB2FB /* UIImage+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+LookinServer.m"; path = "Src/Main/Server/Category/UIImage+LookinServer.m"; sourceTree = ""; }; - F39EC289147F8732DE9E200AEBD42C99 /* HWPanModalContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContentView.h; path = Sources/View/PanModal/HWPanModalContentView.h; sourceTree = ""; }; - F40EDACBF252622C1F7696222AA5BA40 /* NSObject+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+LookinServer.m"; path = "Src/Main/Server/Category/NSObject+LookinServer.m"; sourceTree = ""; }; - F4187BCD5B0BEB79E4E3553B6413AF27 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; - F46251B17D3526E25AB9571283064201 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; - F50930AF985486436650C129CC8670FF /* HWPanContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanContainerView.h; path = Sources/View/HWPanContainerView.h; sourceTree = ""; }; - F56A3D2CEFC20C7B8AF2EDF3674BEE77 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; - F5E0853FDC6EA439AD5D1AA134CD117B /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; - F64D7DC2CC24410532CA313B436B5E7B /* LookinAttributeModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributeModification.h; path = Src/Main/Shared/LookinAttributeModification.h; sourceTree = ""; }; - F7095CB50DC7675B616D3B2DAB4F0188 /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; - F70E3892FF24472DB0CDEFABFBA36F91 /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; - F7CF2DFE487DFC9C10016B1FDAECDD95 /* UIViewController+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LookinServer.h"; path = "Src/Main/Server/Category/UIViewController+LookinServer.h"; sourceTree = ""; }; - F7D31CEA08897E65AFD68DFA556F9A76 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; - F825F22155AA272C7B94795CFB508AE6 /* HWPanModalInteractiveAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalInteractiveAnimator.m; path = Sources/Animator/HWPanModalInteractiveAnimator.m; sourceTree = ""; }; - F86370D27A7E43E20C85C3106B69C57D /* LookinHierarchyFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyFile.h; path = Src/Main/Shared/LookinHierarchyFile.h; sourceTree = ""; }; - F915BA2B3AE80D1E58F67A45AB3B3D68 /* LookinServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.debug.xcconfig; sourceTree = ""; }; - F9A2F41CFB36F97D9E0F592411A2F9F1 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; - FA5982BFE2863F2A7591EEA5A3374FB5 /* DZNEmptyDataSet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DZNEmptyDataSet-dummy.m"; sourceTree = ""; }; + E5BBE1866B6FDB7D5307A6075BE5F347 /* MJRefreshStateTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m; sourceTree = ""; }; + E6EDBB7EFC23401D50E3438EB3430A58 /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; + E78C9A636C9E4C5CFBDECBA5127AF367 /* LKS_MultiplatformAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_MultiplatformAdapter.m; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.m; sourceTree = ""; }; + E8284A1808A9A014FA6F2F4E23F36835 /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; + E8EA132DBE319D046C6BEFA0C4AB4940 /* NSSet+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSSet+Lookin.m"; path = "Src/Main/Shared/Category/NSSet+Lookin.m"; sourceTree = ""; }; + E9004778D6831458C102A879DA83C285 /* UIImage+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+LookinServer.h"; path = "Src/Main/Server/Category/UIImage+LookinServer.h"; sourceTree = ""; }; + E90228ED50408CEB55B1257A093A4B1A /* LSTPopView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-umbrella.h"; sourceTree = ""; }; + E95EEB52B039FDCAE4992EC84BF70332 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; + EA5F1011035F011FF8DB93B55405B76E /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; + EA60319FCBE8ADFF00A52058DBE7C157 /* LookinServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.debug.xcconfig; sourceTree = ""; }; + EA8BD469A978049C96BA8554A1F6D2D6 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; + EAE44CAA3E728CD13C43CF7D34627D80 /* LookinTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinTuple.h; path = Src/Main/Shared/LookinTuple.h; sourceTree = ""; }; + EBD791825D3A6F564E4BA3B31B0F2BFB /* UIImageView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+LookinServer.h"; path = "Src/Main/Server/Category/UIImageView+LookinServer.h"; sourceTree = ""; }; + ED1DD2A27A7141151DAB033BD707A1EF /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; + EEE26007FA20AE54DB39973E3D1D76FF /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; + EF5BED7A35D904E495E540434D07B398 /* UIView+WebCacheState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheState.m"; path = "SDWebImage/Core/UIView+WebCacheState.m"; sourceTree = ""; }; + EF66633D19CE6F4EBFF2331E624219EC /* Bugly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.debug.xcconfig; sourceTree = ""; }; + EF6748BE01C63A0BA85DC20DBF82AD80 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; + EF96CCDE1944CF562A65CA60FCBAD8CC /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; + F032CA5D8067C46163CF052F106C2A2D /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; + F0CB265D0463DC2290A542EFCE210632 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; + F0F086732258C7153899AB5D8C678B02 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; + F24C826B62D5E083C9293F7721C463C2 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; + F24F9CCCB353131934224305105F7E49 /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FLAnimatedImage.modulemap; sourceTree = ""; }; + F27AC2454398D7EA8C514D5B2F6469EF /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; + F2AA502A31D7ACB4F28AAE65C3561F31 /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; + F2C18394D397CD373A1F089F0924F724 /* HWPanModal.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.debug.xcconfig; sourceTree = ""; }; + F47E18ADFFC71918AE70F42C18C32A89 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; + F4AF21DC4288D196E2F556338C3101AE /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = WebImage/PrivacyInfo.xcprivacy; sourceTree = ""; }; + F522B03B0E818BE677108EC202F41472 /* LookinStaticAsyncUpdateTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinStaticAsyncUpdateTask.h; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.h; sourceTree = ""; }; + F5D51DADE6BB30185CA5DE0A026B674A /* HWPanModalContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContainerView.h; path = Sources/View/PanModal/HWPanModalContainerView.h; sourceTree = ""; }; + F68CF910ED994D45AAA3B5E5FABB6835 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; + F69E813A3DBBC0717A1A31E2B15A0606 /* UIViewController+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LookinServer.m"; path = "Src/Main/Server/Category/UIViewController+LookinServer.m"; sourceTree = ""; }; + F6E7A6844647C14F0728CBB9EC73AF19 /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; + F715A0DDAEC4B71182625E313DD4E413 /* LSTPopView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-prefix.pch"; sourceTree = ""; }; + F72D861CBD81CE860AF0AE80BBE0D883 /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; + F738F2BE3FA2AD49A9764CC72FDBAFB2 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; + F7A5B6B4FC335FF159BAE91EDDEC3320 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; + F7C8B71EAA1C160D9B20E934869F7E16 /* LookinAttributeModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributeModification.h; path = Src/Main/Shared/LookinAttributeModification.h; sourceTree = ""; }; + F83A870FD420501FBBA293B2D6A26AD0 /* MJRefreshStateTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h; sourceTree = ""; }; + F8A410A1A4222EF3876A4FA11492EF05 /* MJRefreshTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshTrailer.h; path = MJRefresh/Base/MJRefreshTrailer.h; sourceTree = ""; }; + F9F21BFD087BDB0FF37B51B916F0A3DC /* LSTTimer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTTimer-dummy.m"; sourceTree = ""; }; + FA56E3002035BE556C5ED858D43F49DD /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; + FA721DB25EC176AA8EF0102082B67F5A /* UILabel+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+LookinServer.m"; path = "Src/Main/Server/Category/UILabel+LookinServer.m"; sourceTree = ""; }; FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FLAnimatedImage; path = FLAnimatedImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FACA69FE6DA578D469CD1F044903A1FD /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; - FB1ACE3587FC03054A397CA0A1E76CDC /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; - FB8AAFEE45EE16BDE3F3360F400C9BF9 /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; - FBE9F0CF9D1C205F5B167BDFCF6C838A /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; - FCEC0D919F385E28169E6FC7B6EAE42C /* HWPanModalPresentationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationController.m; path = Sources/Controller/HWPanModalPresentationController.m; sourceTree = ""; }; - FDA81838534E80C5870459AD0441D08C /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; - FE0FBCD7807A33AEB43D358FAF90A586 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; - FED67045FD441EBB05D6A0040A0A1D7B /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; - FF065544B74A17D64308801DEE489EEA /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; - FFDB78F13861619F1E601806B170EB3F /* LKS_AttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.h; sourceTree = ""; }; + FADEEDA2729187D0D3E4FF58DCAE4F5E /* LookinDisplayItemDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItemDetail.h; path = Src/Main/Shared/LookinDisplayItemDetail.h; sourceTree = ""; }; + FB095F0736BB4D6DAB423B110675CCD9 /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; + FB689A278C80C26E3B3E80EDA3887106 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; + FBDB01F2E84A23710184B78970DFEA2D /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; + FC070F9BCE8A8D0A21448F82A7DD5F5A /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; + FC504494ABD0D1144D620FD1501F0E00 /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; + FCCAFE3B7FF5BB1E728A5F5834F651D8 /* HWPresentingVCAnimatedTransitioning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPresentingVCAnimatedTransitioning.h; path = Sources/Animator/HWPresentingVCAnimatedTransitioning.h; sourceTree = ""; }; + FD16DAAD0E6C1AF6207145BC463DF81D /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; + FD22D0365334ED54585130432CEF0912 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; + FE45E33A4A0C09CD0EBB222B7E40EE72 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; + FE4F3AC67FEAA51E07D9DCC83CAEB3D5 /* LKS_AttrModificationPatchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrModificationPatchHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.m; sourceTree = ""; }; + FED881DC5D7531317A8A2A309D96815F /* LKS_AttrModificationPatchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrModificationPatchHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.h; sourceTree = ""; }; + FF06402E5B9C49B794955B31F8067263 /* UITableView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+LookinServer.m"; path = "Src/Main/Server/Category/UITableView+LookinServer.m"; sourceTree = ""; }; + FF47B51E8368756DB1E42F174494224F /* HWPageSheetPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPageSheetPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h; sourceTree = ""; }; + FFB946957EE60C8096CD34FFD7880091 /* LKS_Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_Helper.m; path = Src/Main/Server/Others/LKS_Helper.m; sourceTree = ""; }; + FFF8ADD6067D862411385E3BFF71A8DA /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0A90BB8CE318012A50199E336C8F5BCA /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 11690A588400BBB164423D5F86311C35 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1301,6 +1352,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 30C44AB8C7DCA8E0F90C02BF12AC1ACC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3131D37BE47B5A01B63EFA14B2A9822F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B98BC635A537547CD8CA9B77C750304F /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 37145BAEB1B97BA7ADD7D6C3E86E99BD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1326,6 +1392,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 6E39FC1043D864A0759387AEED07D7AC /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + B03761E468C3B0F1BFEB2401CF2D5245 /* Foundation.framework in Frameworks */, + A0ADDB3C7DF96DF0E6BC53086778A103 /* UIKit.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 7CFE8F67F3A1361064414896BC73914A /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1335,13 +1410,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 800727FE9078FBA0703E3E2537345EEF /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 9E666AF8497E0DE090335A642D5B84EC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1350,7 +1418,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9FF74FF9D13DB5C45BDD20BC0FD2DEF2 /* Frameworks */ = { + B4DC6EBA2E0A9BF13EE9B40E41669F40 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( @@ -1386,14 +1454,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - DC9D1A62ADBAE0D79C65A2AF6F2634B1 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 5E3FCC0716521D80D2E6419CD0EB5A98 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; E672724427269716049B769344D7C3DC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1403,419 +1463,393 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E84EAC027A0FB7CE91306C93FC676BFE /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + F69A92A5C344308FA427BBAED4888BA0 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 84065EC0D4446E7448D1BCFB4040230E /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 06D6AC35A6F9128D8DCF6D347BC7E3D2 /* SDWebImage */ = { + 035E1FF1C6FC2C70E1C9A7412F5BC07F /* SDWebImage */ = { isa = PBXGroup; children = ( - 215DAA690B9DE43504BC75E81C87FC63 /* Core */, - 61D45F4E2C8D21B25DDEFC89074CF2F0 /* Support Files */, + F83577C0BD1D647CC9CF750D800647CB /* Core */, + B739A483873A111E644B8250F33F752D /* Support Files */, ); name = SDWebImage; path = SDWebImage; sourceTree = ""; }; - 12EBE327D35A47F2F18FE64995DA4378 /* Resources */ = { + 0C71559E9A729C5B047179B43CABC936 /* Reachability */ = { isa = PBXGroup; children = ( - B0FB288C5320DA98E827641B6E277307 /* MJRefresh.bundle */, - DA7CF72060C622DB6A61C9EB8ED621EC /* PrivacyInfo.xcprivacy */, + A1CAA004ADB375344EE1C0A0FF7E804F /* AFNetworkReachabilityManager.h */, + 6EDACCA592A0A0FC0428384009A75BD5 /* AFNetworkReachabilityManager.m */, + ); + name = Reachability; + sourceTree = ""; + }; + 16966B46BC1DE37AE221B0FB44232D79 /* Support Files */ = { + isa = PBXGroup; + children = ( + EF66633D19CE6F4EBFF2331E624219EC /* Bugly.debug.xcconfig */, + 090BA40A2CB6D8D73A78895D821E7E93 /* Bugly.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Bugly"; + sourceTree = ""; + }; + 1724889F583861283992342B8F084070 /* Support Files */ = { + isa = PBXGroup; + children = ( + DF4489E08CBFCDAD16CB71B168364F46 /* LSTPopView.modulemap */, + 93DAC06B5293787BAAAA04E673812C59 /* LSTPopView-dummy.m */, + CFBE4CFC0231291954B6CBE560F2D503 /* LSTPopView-Info.plist */, + F715A0DDAEC4B71182625E313DD4E413 /* LSTPopView-prefix.pch */, + E90228ED50408CEB55B1257A093A4B1A /* LSTPopView-umbrella.h */, + 0874A58BB3E268A75B1BD3D594CBAA2D /* LSTPopView.debug.xcconfig */, + A16C385BAD6F9C544C59D31A650946CC /* LSTPopView.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LSTPopView"; + sourceTree = ""; + }; + 1F9EEB6CC879BACDBC385C6DBC24F7C9 /* NSURLSession */ = { + isa = PBXGroup; + children = ( + 2B7C62DACFDBE481DDA82F7BE3396A68 /* AFCompatibilityMacros.h */, + 981BA7AE91A568EC43916303978CE501 /* AFHTTPSessionManager.h */, + 0E7B3F97FDF9522DB3E4FADD3DB88700 /* AFHTTPSessionManager.m */, + 595622377DEA1856384D2D262C52C73F /* AFURLSessionManager.h */, + E95EEB52B039FDCAE4992EC84BF70332 /* AFURLSessionManager.m */, + ); + name = NSURLSession; + sourceTree = ""; + }; + 20214EA91148602FD46C19710C2B91EB /* Core */ = { + isa = PBXGroup; + children = ( + A701AEED09FE2183269AA89DFA8E4B7A /* CALayer+Lookin.h */, + B53B6AA90E9FBFBBE4E4275DE10531D3 /* CALayer+Lookin.m */, + A89D8D8B71AD9A723D88B13AF519A214 /* CALayer+LookinServer.h */, + B68B9359B3F4863CD16BC4AF1031EDD1 /* CALayer+LookinServer.m */, + C246D6EBE3F2F29765C86C55F130AD3F /* Color+Lookin.h */, + 19D6F69255AF25D760BE89366830A6F7 /* Color+Lookin.m */, + E1CED825638D1B3169A0C8EE7A57C720 /* Image+Lookin.h */, + CDEC5449CBECD6C324B9864AD284EC55 /* Image+Lookin.m */, + 54E07E4DAA97DEDC8F59F58429664909 /* LKS_AttrGroupsMaker.h */, + 581F1A0410E8F8E85A8C2E596B4C7F40 /* LKS_AttrGroupsMaker.m */, + FED881DC5D7531317A8A2A309D96815F /* LKS_AttrModificationPatchHandler.h */, + FE4F3AC67FEAA51E07D9DCC83CAEB3D5 /* LKS_AttrModificationPatchHandler.m */, + 3DF4E1CE47903B976C738C7A1DB7C650 /* LKS_ConnectionManager.h */, + 499DFA9F01A96B26620A744AC7C94DB7 /* LKS_ConnectionManager.m */, + D2ADA0495E5FE9068CEDD520D7AB4D72 /* LKS_CustomAttrGroupsMaker.h */, + 3BC0E1D78C95F4CC731325A284A8FC80 /* LKS_CustomAttrGroupsMaker.m */, + CB56ABA66093040F0D62AF378BB66DBE /* LKS_CustomAttrModificationHandler.h */, + 30A4A3709BA82F970D60FE150EDB33D1 /* LKS_CustomAttrModificationHandler.m */, + BC686BE8B7F5AC6B3A652ABBA6EAE87A /* LKS_CustomAttrSetterManager.h */, + 04D3C87C11221ADDA77670ED0731D145 /* LKS_CustomAttrSetterManager.m */, + 40D46544DD0F8DC61B909F5E02739172 /* LKS_CustomDisplayItemsMaker.h */, + C0E2F76DB6A01DBF448BF55D94414007 /* LKS_CustomDisplayItemsMaker.m */, + E19751E7E128A05C5F94C54CB5222006 /* LKS_EventHandlerMaker.h */, + BFD36E41E270B32316CAE346D73B1BB4 /* LKS_EventHandlerMaker.m */, + 5A12BDC5E6446CAD91BA1C47C211ED2E /* LKS_ExportManager.h */, + DC75CCA31193BB63063F364267DBCF2D /* LKS_ExportManager.m */, + 1D9DDC30D49B9BC3DFA8D9BC83722C14 /* LKS_GestureTargetActionsSearcher.h */, + BC24AF9FD32062D15DE214E94B0E828F /* LKS_GestureTargetActionsSearcher.m */, + 2262EDBC98A2795DB2EE27FB7D953E2C /* LKS_Helper.h */, + FFB946957EE60C8096CD34FFD7880091 /* LKS_Helper.m */, + C7B7F069BA04D7981F13F5FA41B3BAB5 /* LKS_HierarchyDetailsHandler.h */, + D3831111080859754E7A75FF007ED40F /* LKS_HierarchyDetailsHandler.m */, + 310204C87FE20FAAF183EEE0D555B729 /* LKS_HierarchyDisplayItemsMaker.h */, + B772F3922ED9C416DBFEA6651FBB3930 /* LKS_HierarchyDisplayItemsMaker.m */, + E3EF6841A6A45FD5C11031ED861CFF06 /* LKS_InbuiltAttrModificationHandler.h */, + 83E75619300BC832136529DA87152075 /* LKS_InbuiltAttrModificationHandler.m */, + 73EFE9F07FF04A733446FD7A74A02718 /* LKS_MultiplatformAdapter.h */, + E78C9A636C9E4C5CFBDECBA5127AF367 /* LKS_MultiplatformAdapter.m */, + BFFCEECD2573D5472737D9AFB10A0BB2 /* LKS_ObjectRegistry.h */, + 20466880B35C5065EE68BED96801035F /* LKS_ObjectRegistry.m */, + AE403DA6C5955C67D130890FCA703778 /* LKS_RequestHandler.h */, + 13527772A4A54A71A31658A3E36E2474 /* LKS_RequestHandler.m */, + A75ADFE775EE09236D1DF5672ACB9A4C /* LKS_TraceManager.h */, + 04A251837ED47D22FF5ACBFA97F91D4A /* LKS_TraceManager.m */, + 0D53461EC25E2C6DAE3F3C2ABD951A2B /* LKSConfigManager.h */, + 6233A7302725D50AFE344EFD05C9C870 /* LKSConfigManager.m */, + 39D285C0DD3F1106B921412AD679ADEC /* Lookin_PTChannel.h */, + 230DC3B27944D3472C6A06DA7EEAF194 /* Lookin_PTChannel.m */, + CF38798B2D107B8F8B096B856DF98A24 /* Lookin_PTPrivate.h */, + 7577D873945C0C370C14EE971C3509FB /* Lookin_PTProtocol.h */, + C2641A163910BF7346FA6273237FDB7D /* Lookin_PTProtocol.m */, + 6F886C315967D7AADA95C37B717FE5A2 /* Lookin_PTUSBHub.h */, + 899D158EA21A86AFAE75EACD2CFC106B /* Lookin_PTUSBHub.m */, + CA040E4FC9E6D5254278E66354DE0995 /* LookinAppInfo.h */, + 3D832408A734647A9D2C62473FE11EFB /* LookinAppInfo.m */, + 074925B1189A88BAA6297431490B8041 /* LookinAttribute.h */, + 25283803DB6704A7DFB24BD626A74C6E /* LookinAttribute.m */, + F7C8B71EAA1C160D9B20E934869F7E16 /* LookinAttributeModification.h */, + 624CC6F33BF93A1458307F73823C3E10 /* LookinAttributeModification.m */, + 4AA6F90EC76FE7C2ACDF3266FD792D7A /* LookinAttributesGroup.h */, + C5830BBF390FC8D9CCA3C6BDBE65DD04 /* LookinAttributesGroup.m */, + 9B55BC4062AFBC21B6F27CA6801F7F45 /* LookinAttributesSection.h */, + 0531DC0648DD160A9576D09368C28017 /* LookinAttributesSection.m */, + AA574A6EA7EECCE7D1E086B964FA3C65 /* LookinAttrIdentifiers.h */, + CB96704A28B66FFCFA6B43392123348C /* LookinAttrIdentifiers.m */, + 7E3DC362C663E7C7DAB5B7DC796C5507 /* LookinAttrType.h */, + D1F143BC4A879AC2B9896478CE4FF798 /* LookinAutoLayoutConstraint.h */, + 0175DE132412321B3302CBE48CE0F712 /* LookinAutoLayoutConstraint.m */, + 4DCD76BA1FFEFDEEE2F9331ECD0796D4 /* LookinCodingValueType.h */, + DC490DD3FFABA4122C58404F7DFAD348 /* LookinConnectionAttachment.h */, + 03BAE9F573ECB0A822C6757CBF10AB0E /* LookinConnectionAttachment.m */, + BAD931CF8729677FC0BD6248B49E6631 /* LookinConnectionResponseAttachment.h */, + 8983C7CF18477B6B6E981751F1C09853 /* LookinConnectionResponseAttachment.m */, + AA4F3775DDC9BAD8BC30D51376A765F0 /* LookinCustomAttrModification.h */, + D9F0FAF97F68F13F21EE3D8E18046926 /* LookinCustomAttrModification.m */, + 47C4451B7E17B800D4088E7182C1025D /* LookinCustomDisplayItemInfo.h */, + 8B417F374DC024262C256083E5EB6F70 /* LookinCustomDisplayItemInfo.m */, + 140B9E97F5B5BEB056AA3A4DFFA9891B /* LookinDashboardBlueprint.h */, + A28F16D63BCA40F7DC78734CFE3A235D /* LookinDashboardBlueprint.m */, + 610E7F99F72A12BE4DBEF2C1ABF10115 /* LookinDefines.h */, + 48B9B4465675824F9DA134FE2253901E /* LookinDisplayItem.h */, + B36F0D1046FE48DF23AE7AB21CD678D3 /* LookinDisplayItem.m */, + FADEEDA2729187D0D3E4FF58DCAE4F5E /* LookinDisplayItemDetail.h */, + DA876A02B80932A6284AB2ACAB8135A6 /* LookinDisplayItemDetail.m */, + D85D1D9B369469B71D9FE49138927707 /* LookinEventHandler.h */, + 79D13E836577BF8A934C5D3D24826BD0 /* LookinEventHandler.m */, + D4EB28525886DCE45DC1BBE08F77BCDF /* LookinHierarchyFile.h */, + 1A370DF72E817BB512D9A327AC45F76B /* LookinHierarchyFile.m */, + 4E03AEFAD237B8966FCFA45B3312FEE7 /* LookinHierarchyInfo.h */, + 274EF5BCECE08045C7BB130E4D6ED8E4 /* LookinHierarchyInfo.m */, + 587808BB0F9012792B17999F0BB495C4 /* LookinIvarTrace.h */, + 8DDCF4465DE05312EF540D3B5319ADAF /* LookinIvarTrace.m */, + 47F9AD4ED221D6EEDB441FAF35299C66 /* LookinObject.h */, + 683586601FF42469125B58BBB8DF2429 /* LookinObject.m */, + A8107C05A5879CBA4916F6AD4685D772 /* LookinServer.h */, + 5EAFD6E7E63CC2D3E074450E9124493C /* LookinServerDefines.h */, + F522B03B0E818BE677108EC202F41472 /* LookinStaticAsyncUpdateTask.h */, + D08B8F280C5811F6505EA1AE7983082B /* LookinStaticAsyncUpdateTask.m */, + EAE44CAA3E728CD13C43CF7D34627D80 /* LookinTuple.h */, + 20C42B1A5A080256AC39DD86D000ACD5 /* LookinTuple.m */, + AA356D7B80B205861FCCD6FECB42DDE3 /* LookinWeakContainer.h */, + ACDFCFE3242922DD1C6F9C0911E0A56B /* LookinWeakContainer.m */, + 81A6154946F38EFB8836E3145513AAE9 /* NSArray+Lookin.h */, + 4FBCAF641C4059BE19811532C4E3A0A2 /* NSArray+Lookin.m */, + 64BE9723ECB5FEB2D176E2AB31482F57 /* NSObject+Lookin.h */, + 85937FAC419CB28614ECAA70CE249673 /* NSObject+Lookin.m */, + 9D3649A7CA35A3580F58B4481D9820AF /* NSObject+LookinServer.h */, + 18C899184976415922E8F39B277C1766 /* NSObject+LookinServer.m */, + 5CD0546B82DCACC9EF9FE9B72325B901 /* NSSet+Lookin.h */, + E8EA132DBE319D046C6BEFA0C4AB4940 /* NSSet+Lookin.m */, + CEFEE7CEBA57AF6426BA05F18F444C4E /* NSString+Lookin.h */, + 4610142EAB51ECDD8FC137942A59F231 /* NSString+Lookin.m */, + 141D1CCF79DF1688C14B5C5A4CACC6E0 /* Peertalk.h */, + 9C55508E3B8FCF1A927848A4CFAA53D0 /* UIBlurEffect+LookinServer.h */, + 62ED382544D99079829F5E202E6E84A7 /* UIBlurEffect+LookinServer.m */, + D52AD9DE99C02DF34E22E59E4A970F45 /* UIColor+LookinServer.h */, + 1998A1E21783C0F00F27637B63C88F21 /* UIColor+LookinServer.m */, + E9004778D6831458C102A879DA83C285 /* UIImage+LookinServer.h */, + 8A73FC0CD1FAD2820E17CD48DE8962BA /* UIImage+LookinServer.m */, + EBD791825D3A6F564E4BA3B31B0F2BFB /* UIImageView+LookinServer.h */, + 98AC0F8649D533FEA089C0D7C8018ABC /* UIImageView+LookinServer.m */, + 589A748D16780600B35F1BC7E7CEB243 /* UILabel+LookinServer.h */, + FA721DB25EC176AA8EF0102082B67F5A /* UILabel+LookinServer.m */, + 2701A816C2728A79FA904E6F2AC8ADEB /* UITableView+LookinServer.h */, + FF06402E5B9C49B794955B31F8067263 /* UITableView+LookinServer.m */, + 529CC0A76A69631EEA57BEAB673D76B9 /* UITextField+LookinServer.h */, + 27339E9CA8A7C6DC7F3E8B828C3D0038 /* UITextField+LookinServer.m */, + 5B099323376948696DA373792CC4983D /* UITextView+LookinServer.h */, + DE9ADECB39002B8ABC9BF590B430634B /* UITextView+LookinServer.m */, + 6EDC641564DA302B6FFCBFCFFFAC5BA7 /* UIView+LookinServer.h */, + B51F28BC73CA22D31949B1635AF8CAE1 /* UIView+LookinServer.m */, + D72EC9997A8CA1698A3020135CE8BC2E /* UIViewController+LookinServer.h */, + F69E813A3DBBC0717A1A31E2B15A0606 /* UIViewController+LookinServer.m */, + 96B0036686E5E0170AC065045503F785 /* UIVisualEffectView+LookinServer.h */, + 80E15D4BAC4857AD45CC8CDC40384F0F /* UIVisualEffectView+LookinServer.m */, + ); + name = Core; + sourceTree = ""; + }; + 2CEB54752AE867745CB29DF1C930135F /* MJExtension */ = { + isa = PBXGroup; + children = ( + B9D9760D282FEC09C3A5774993001829 /* MJExtension.h */, + C88E60EA597845949F0925B844477F63 /* MJExtensionConst.h */, + 0BF099C561E70E7E4EDAC96628F02E58 /* MJExtensionConst.m */, + 5A5823526F694533978DE523241FEDE9 /* MJFoundation.h */, + 77EBE36C10B9452DC1931AC9779D7F79 /* MJFoundation.m */, + A14004EB25D5BC99B439F5543C20E8CF /* MJProperty.h */, + 636EE1928B5BC8BC35DF1648C1BF1467 /* MJProperty.m */, + A73F313A18713E36B251C92C66806CE8 /* MJPropertyKey.h */, + F032CA5D8067C46163CF052F106C2A2D /* MJPropertyKey.m */, + C02050360407C95F57A46E3425089760 /* MJPropertyType.h */, + 8D9EC3F78C9EBFBAA2A4A0F3EE3D27AB /* MJPropertyType.m */, + 2D6996A5821977C26F6D8F02DE8CF8CD /* NSObject+MJClass.h */, + E1732483C75B01353EF9D04684480EE4 /* NSObject+MJClass.m */, + 5B6CB7D56E64BDB8EB50D17E5CEC7C8F /* NSObject+MJCoding.h */, + BE0B0E1A9A292EDE11246C6685B3FF8A /* NSObject+MJCoding.m */, + 07752F7C2A34B933346F7E8E9D95461C /* NSObject+MJKeyValue.h */, + 2C694B3CF0214D5165615510B34C3812 /* NSObject+MJKeyValue.m */, + 9F69E397FB4534DAE86CE36E624729DC /* NSObject+MJProperty.h */, + 690D12C73095E1091E4B6AB8B11A064E /* NSObject+MJProperty.m */, + DA0B23D302091DCF531627DB2F06A5BA /* NSString+MJExtension.h */, + F72D861CBD81CE860AF0AE80BBE0D883 /* NSString+MJExtension.m */, + 37B575C4446BF19B0257C4C9AB6F1FED /* Resources */, + 96DE1775CF064EDD1FBB4071547380B9 /* Support Files */, + ); + name = MJExtension; + path = MJExtension; + sourceTree = ""; + }; + 3558A467522318FD82C582513E547957 /* Code */ = { + isa = PBXGroup; + children = ( + 1EFF087B37DC1EFC63580C904061AC41 /* LSTPopView.h */, + 80A4C5F30966DCCAF12719455CE5BA94 /* LSTPopView.m */, + 76DC37DEAFA5D12B1D7F9040EFB03DA5 /* LSTPopViewProtocol.h */, + 6C39336AE39057C3014C954C694C278F /* UIView+LSTPV.h */, + 0CE9728E85B8432ED072CD0DC7926F20 /* UIView+LSTPV.m */, + ); + name = Code; + sourceTree = ""; + }; + 3781A0D3F34F1F7E995238764CEAD97B /* MJRefresh */ = { + isa = PBXGroup; + children = ( + 710E437843F202473C82F6B19F6E51D8 /* MJRefresh.h */, + A20F0D257E58B1A870FF109778CD4B25 /* MJRefreshAutoFooter.h */, + FFF8ADD6067D862411385E3BFF71A8DA /* MJRefreshAutoFooter.m */, + 741395EF99DABB64E0E04129DB222FD2 /* MJRefreshAutoGifFooter.h */, + 55CB47F746B1E99E4F1E11247844A401 /* MJRefreshAutoGifFooter.m */, + 8CBF9C8DF911E4E9B2C6A4628B5BC93B /* MJRefreshAutoNormalFooter.h */, + 02B660DF025FBF070A8248624E25ED79 /* MJRefreshAutoNormalFooter.m */, + 3C53F73CEF747A7A78B5CACAF16E5FCE /* MJRefreshAutoStateFooter.h */, + EA8BD469A978049C96BA8554A1F6D2D6 /* MJRefreshAutoStateFooter.m */, + 2288D70D4609F065E784F156F613AB62 /* MJRefreshBackFooter.h */, + AFFA5747833468A5901D8AA31E822627 /* MJRefreshBackFooter.m */, + F47E18ADFFC71918AE70F42C18C32A89 /* MJRefreshBackGifFooter.h */, + AA75F2BBB1F8188D75855FF34D8A7AE3 /* MJRefreshBackGifFooter.m */, + C59475012E53558600AFA4F7685E8F9E /* MJRefreshBackNormalFooter.h */, + E49B94A4D72DB4B81F4E8CDC098BC388 /* MJRefreshBackNormalFooter.m */, + BE11DDB27A20A87C02AE0F91342FA9E9 /* MJRefreshBackStateFooter.h */, + 0AE63A9BC3D50E34C84263A87F782ACA /* MJRefreshBackStateFooter.m */, + 758F54E0A75ADEC48F8924BFE16AEB3B /* MJRefreshComponent.h */, + 5A4E8FC1A8280B0B2C51BA4C08DA78B3 /* MJRefreshComponent.m */, + 62C98AF2DC89D542692AC64CD9F01818 /* MJRefreshConfig.h */, + EF96CCDE1944CF562A65CA60FCBAD8CC /* MJRefreshConfig.m */, + AE979EFDEE516846488B7EE0D6F7EED8 /* MJRefreshConst.h */, + E114D2723BCB64ADA9A307B95F5DE640 /* MJRefreshConst.m */, + A75653F7F6754FE7D26DA5C94A641DE8 /* MJRefreshFooter.h */, + 65EE0AA02CCB84E9D0C6987A57196DE0 /* MJRefreshFooter.m */, + 81E56B3079089075E57FE56264F80F1E /* MJRefreshGifHeader.h */, + 820CCFAA740875554C05F59A0958E53B /* MJRefreshGifHeader.m */, + 29AAA748545CCD9E566E6F15C52A44CB /* MJRefreshHeader.h */, + 6B6DBCFC84C1E1F5D3AF983520203544 /* MJRefreshHeader.m */, + 8B25FB3699225E9D90B118E0F624383B /* MJRefreshNormalHeader.h */, + A4685A3F7A42EE78A5B66190A100B3C2 /* MJRefreshNormalHeader.m */, + 4082EEAE9AC1F17D236D83E99200EA70 /* MJRefreshNormalTrailer.h */, + CF5E2B29305178430BD510351FDD6C99 /* MJRefreshNormalTrailer.m */, + 5909B734EE0396CAA42A403A6DCD4D27 /* MJRefreshStateHeader.h */, + B4E40A4D926E9D870172CB05C27151FC /* MJRefreshStateHeader.m */, + F83A870FD420501FBBA293B2D6A26AD0 /* MJRefreshStateTrailer.h */, + E5BBE1866B6FDB7D5307A6075BE5F347 /* MJRefreshStateTrailer.m */, + F8A410A1A4222EF3876A4FA11492EF05 /* MJRefreshTrailer.h */, + 53CC6A09F682C54055F6035F0D6E29FA /* MJRefreshTrailer.m */, + 77EC014BA0072D21D1B86EE5C78C59EA /* NSBundle+MJRefresh.h */, + AB93341F4852834DE8BA29DAB3E69371 /* NSBundle+MJRefresh.m */, + 2A350736EF0F4C89A3E43AA0BED8AC36 /* UICollectionViewLayout+MJRefresh.h */, + C45F5D95A727E9121E38DFEFADA82094 /* UICollectionViewLayout+MJRefresh.m */, + 8EE2F8245BCEBA174A7A8891FBE03ECB /* UIScrollView+MJExtension.h */, + E02C6844FCB15EFA12DE7936E2D89768 /* UIScrollView+MJExtension.m */, + 9C92B663B045144AB6926F9C7A3DA791 /* UIScrollView+MJRefresh.h */, + B90789CA4A099321E01CFF8CB566B5F3 /* UIScrollView+MJRefresh.m */, + FC070F9BCE8A8D0A21448F82A7DD5F5A /* UIView+MJExtension.h */, + E0B73DB737A3D2CAAA90EA20B4BB23B3 /* UIView+MJExtension.m */, + F714764FE1C9470C450626D766B18CA6 /* Resources */, + BE86B84F4BC9982281F5D2A106314CE2 /* Support Files */, + ); + name = MJRefresh; + path = MJRefresh; + sourceTree = ""; + }; + 37B575C4446BF19B0257C4C9AB6F1FED /* Resources */ = { + isa = PBXGroup; + children = ( + B647311E2487029EA920B923258697D2 /* PrivacyInfo.xcprivacy */, ); name = Resources; sourceTree = ""; }; - 19E12BE9CE9CE105A9ABABB0F83900CB /* Core */ = { + 3B43DD955EE30DAEC0EAAF7C261E2B86 /* HWPanModal */ = { isa = PBXGroup; children = ( - 973BF123337556FEF831ECD7EF288DE8 /* CALayer+Lookin.h */, - 8F7E17F4510167B68511D3E34E380ED7 /* CALayer+Lookin.m */, - 198BCFF4D9AF651D5B86774921D624E2 /* CALayer+LookinServer.h */, - 8D37279B6C85F4CF9A24280C077B23F5 /* CALayer+LookinServer.m */, - 7FB6D9FCFB10D58A02282FBABE87FB43 /* Color+Lookin.h */, - 0F3CFDDCD2AEFF399B69D429BD035229 /* Color+Lookin.m */, - 48DF6A3F73D15BB7711D4C401A2A800F /* Image+Lookin.h */, - C5F9910D6ED5B2A16EE7819D62912F64 /* Image+Lookin.m */, - FFDB78F13861619F1E601806B170EB3F /* LKS_AttrGroupsMaker.h */, - A68429174A7738F07E1A8AA359028DFE /* LKS_AttrGroupsMaker.m */, - C4A1569A2FA3521F9130DA7EA649CE07 /* LKS_AttrModificationPatchHandler.h */, - 0A13200BEAF87753F31130AD74C5CE5B /* LKS_AttrModificationPatchHandler.m */, - 8B52F950306B0C5B7D2782308290581C /* LKS_ConnectionManager.h */, - 66852803923AC12381D91011BC62422E /* LKS_ConnectionManager.m */, - DB34B51460BF162B997045D2CF3D0488 /* LKS_CustomAttrGroupsMaker.h */, - 0AD7CA2EC862D2306679B92B10C85B4D /* LKS_CustomAttrGroupsMaker.m */, - 2676F11A3670B2480D40E37CECD806F7 /* LKS_CustomAttrModificationHandler.h */, - 054A388C6D56EE31CFBD5161B49B08DF /* LKS_CustomAttrModificationHandler.m */, - AAE5FEBB56FEC34482A95BC768401167 /* LKS_CustomAttrSetterManager.h */, - 64EE6EBE156E6757C2B16DC6C01D0328 /* LKS_CustomAttrSetterManager.m */, - BEEC82A223FE289DDC2C165B2D2E03CA /* LKS_CustomDisplayItemsMaker.h */, - 1BF7200D05201E490C12951549D2240D /* LKS_CustomDisplayItemsMaker.m */, - 954815F2E3C8D1F819EF2344830A2160 /* LKS_EventHandlerMaker.h */, - 6B6B370AE543A3A33C4D570C3B8366E3 /* LKS_EventHandlerMaker.m */, - C0FC0E2910D71C68F70A7CBBD2130D87 /* LKS_ExportManager.h */, - 1724C6EB60601A5723C7A0972AA8DB97 /* LKS_ExportManager.m */, - 52587370E20625EC0ADF9ECB81F06C80 /* LKS_GestureTargetActionsSearcher.h */, - 5E03CFEECACD6D99D415C06808FF1A46 /* LKS_GestureTargetActionsSearcher.m */, - 005101F7C4901700207336B75CF59476 /* LKS_Helper.h */, - 02BD81280735E95FA2620927041EAC86 /* LKS_Helper.m */, - 6E9D7DC7A47992FD77E5A1BF86254454 /* LKS_HierarchyDetailsHandler.h */, - 0702AAD171A65EE6A8D28E93A9B62802 /* LKS_HierarchyDetailsHandler.m */, - B95D50B779E63B23E1786D6F6CCABD4A /* LKS_HierarchyDisplayItemsMaker.h */, - 46CCF3A43BEE5F3B0490729F74E3F205 /* LKS_HierarchyDisplayItemsMaker.m */, - 2C10DDC7CAD74F9FB6286DBA8F45E0A9 /* LKS_InbuiltAttrModificationHandler.h */, - 9B347673A4B4C29BEEEA0DACA4FDE025 /* LKS_InbuiltAttrModificationHandler.m */, - 652780DECBCF733E1CBAA8309FADE953 /* LKS_MultiplatformAdapter.h */, - 2DB2D3B9B39A830458FD28DCEC306D8E /* LKS_MultiplatformAdapter.m */, - A658C45B08CED2701138D5375C27CCEE /* LKS_ObjectRegistry.h */, - C931ABFE9D27B32AD8D6C893AD979117 /* LKS_ObjectRegistry.m */, - E58431618F9B14FA189C6C896394334D /* LKS_RequestHandler.h */, - 8A762DB0AD39D18CF911533AF4D3D3B1 /* LKS_RequestHandler.m */, - EFAF27B6DC3AA50C96B99E41F9E769E4 /* LKS_TraceManager.h */, - 32C400A3F91177BBA34B1046DAFF260F /* LKS_TraceManager.m */, - E80165A2B20491F0E71E9BCFA72510B9 /* LKSConfigManager.h */, - 1A3FD8D5295BC5DADF9B48122C08A03D /* LKSConfigManager.m */, - 318AFD96872C2F4B15208D88E9CD4764 /* Lookin_PTChannel.h */, - 2DC2990A90A71D269C5024BA61CF0B19 /* Lookin_PTChannel.m */, - B7824533FC35957318C6FAF5ECA425E7 /* Lookin_PTPrivate.h */, - 549961902064EB911C7C58433F18CB5C /* Lookin_PTProtocol.h */, - 78DE1BDAC4037EF5EF5085D7F97C5896 /* Lookin_PTProtocol.m */, - 0AB04D07CCC6BB644C691A1B75189B56 /* Lookin_PTUSBHub.h */, - 2259A09BA5C4F4B9CD4809BBD03235D0 /* Lookin_PTUSBHub.m */, - C190447F019E6407D44584A4FDF8F21A /* LookinAppInfo.h */, - D66A82F8BDB185549FF0B573D7E52F8B /* LookinAppInfo.m */, - 2D286FE677CDEE60930A656882947FD7 /* LookinAttribute.h */, - 3828D32AF578BCBF238F4F3C9F25FE9D /* LookinAttribute.m */, - F64D7DC2CC24410532CA313B436B5E7B /* LookinAttributeModification.h */, - B08DC7A1A58E4347C875EE7C77258D67 /* LookinAttributeModification.m */, - 217542724C26BE53C452010CBD9B0823 /* LookinAttributesGroup.h */, - F10A37229A6845649A237D864C061793 /* LookinAttributesGroup.m */, - 54C035FC92D730EBEC46CF8E21ADFF7F /* LookinAttributesSection.h */, - EA0DFE57597F1E609ADFB79857FE435B /* LookinAttributesSection.m */, - 611F335AF3AB948359952D972579333C /* LookinAttrIdentifiers.h */, - 7BB291C0467B8A072E8C1CE10A701CA2 /* LookinAttrIdentifiers.m */, - CC16AC12627C17F0E12860526E93F8EF /* LookinAttrType.h */, - 70CF34CA376C8F25403FA62C8A27356C /* LookinAutoLayoutConstraint.h */, - A4846194BA854C70246DB41D70440D2B /* LookinAutoLayoutConstraint.m */, - 1E9B018C9C3042CA28F92204D9CA3368 /* LookinCodingValueType.h */, - A1502F82ADC41A5C2CBCFBB8BE2DBA1E /* LookinConnectionAttachment.h */, - B239AD8AAB2A61B7AE6B39D6B7F1F9D5 /* LookinConnectionAttachment.m */, - 6F1F4A5570DD3146B2E2BD55F75D53BF /* LookinConnectionResponseAttachment.h */, - 64110DA477609C9760A9CEEABA26DFFB /* LookinConnectionResponseAttachment.m */, - D5BC11645051F0690160018A0FDF87B2 /* LookinCustomAttrModification.h */, - EF19B866A3DB2F79FCE73ADCD2FA06C3 /* LookinCustomAttrModification.m */, - B4B06DC6899A1F01C7834AFAF5E0FFDF /* LookinCustomDisplayItemInfo.h */, - 978791EF867BB9DF203262274A262783 /* LookinCustomDisplayItemInfo.m */, - 185D7C79C92B324E08CCA23E8410B9BB /* LookinDashboardBlueprint.h */, - C078A2E8B42103FA232855A1D6A0D7F7 /* LookinDashboardBlueprint.m */, - C4282EA0E02DB360DBEA169BDB76A24E /* LookinDefines.h */, - E115A6217BE4FADE37437C87CB0A7B59 /* LookinDisplayItem.h */, - DB2EC5EF47D2A84B9FD85A1FB0124FD2 /* LookinDisplayItem.m */, - AF44575A66631B8B3E9F4F79EAF68A2D /* LookinDisplayItemDetail.h */, - CA563C1C8CD02A20BF55A818576D82EE /* LookinDisplayItemDetail.m */, - 3759EC9B1F622ABF5524C464D429D774 /* LookinEventHandler.h */, - ADCA2BD1C88A86EE8E2A5D4E3461378D /* LookinEventHandler.m */, - F86370D27A7E43E20C85C3106B69C57D /* LookinHierarchyFile.h */, - 1225A7D188B98E6C6CFDCC9B804BAE8D /* LookinHierarchyFile.m */, - CBA39C705DBB9802B534C4BDD3664538 /* LookinHierarchyInfo.h */, - 1651052462F8B04B5877450A1292E16B /* LookinHierarchyInfo.m */, - 018E89B3130206293240B03D8960F18B /* LookinIvarTrace.h */, - 88D6FD1A2FA6EEC892A2DD294E5A7454 /* LookinIvarTrace.m */, - E8B33995F7416B51F3DB4DF1B8C1C079 /* LookinObject.h */, - 68F6F33E73474357B9E7885C4414C917 /* LookinObject.m */, - 8E7070EAE3CD21654B5DD5A9531D12AF /* LookinServer.h */, - 27CFD14754D1E3BFCBFECB5DD71A5359 /* LookinServerDefines.h */, - 6AA35B4909D9783E7A851FD1AD821334 /* LookinStaticAsyncUpdateTask.h */, - 694CDF3CA0E35A901F2C7D0364CD013C /* LookinStaticAsyncUpdateTask.m */, - 92EF1461B8302AC228343F85048D3888 /* LookinTuple.h */, - 61194FA2A41C9D734CCA119C5F329CE1 /* LookinTuple.m */, - 40D9E69F0A1E9D4219601AFE0D6257DD /* LookinWeakContainer.h */, - 66F3FF05384C9441A8FAFFE1E267822E /* LookinWeakContainer.m */, - 6B8E94E7EAABFAC34A3D61FF43E02355 /* NSArray+Lookin.h */, - 92134100C010678B361F36A55263F8A4 /* NSArray+Lookin.m */, - DF5F6CA83FCCE26A8EBAB9D62A793D12 /* NSObject+Lookin.h */, - 20B8751D1FBB7C171FFFD79AABA096D9 /* NSObject+Lookin.m */, - 50A13B682D86AE92E1941A6C08E557BB /* NSObject+LookinServer.h */, - F40EDACBF252622C1F7696222AA5BA40 /* NSObject+LookinServer.m */, - AB7963F3AA45763DF399A396845DDF33 /* NSSet+Lookin.h */, - 6E4761AF00D5D97F0E6876C0F021A970 /* NSSet+Lookin.m */, - 4307F1F1718ED3798F45B2184C30063E /* NSString+Lookin.h */, - AC56B56B105B16D1EF0458AD870F4405 /* NSString+Lookin.m */, - 0BD99371527F7C150CF7C859DEE75697 /* Peertalk.h */, - 41BB24C7B81FDF4942C58FB649399EB7 /* UIBlurEffect+LookinServer.h */, - 124DF602FD739DD4C0E67F1917B46C09 /* UIBlurEffect+LookinServer.m */, - C9465AFC6C48C65FF4158D542A5001CD /* UIColor+LookinServer.h */, - 7CB57DCB4F28061C4A199F8768E4F7C7 /* UIColor+LookinServer.m */, - BAE82C8EA8816156B60A19B5AAA61D2B /* UIImage+LookinServer.h */, - F31C98ACB27D00FB2C83BBFA9C3DB2FB /* UIImage+LookinServer.m */, - A7FD6EBF394380EFF340D6443E444582 /* UIImageView+LookinServer.h */, - 164010F68ED1F6E6A182B7EA3554A43D /* UIImageView+LookinServer.m */, - E4A29706814F99AC9B476BC26B8CCC39 /* UILabel+LookinServer.h */, - CC1CE35F4EE179193CCCEA428E5FF90F /* UILabel+LookinServer.m */, - DFBCDC70260B861EA38352626CC2393C /* UITableView+LookinServer.h */, - 952745F4CCA16F79D572D39513608DA3 /* UITableView+LookinServer.m */, - CCE0180ACC796145628AC2F013D66C45 /* UITextField+LookinServer.h */, - D3AD2DC617E8094624655175273C7AB8 /* UITextField+LookinServer.m */, - 8B985DB20BDEDC3C065B3A50F078016B /* UITextView+LookinServer.h */, - 1D640B445F4284F72C568FEB8607AA99 /* UITextView+LookinServer.m */, - 5F258393A5F61F1A41DB0116A1995DB1 /* UIView+LookinServer.h */, - 110654C4ECBD914896546F497CDC625F /* UIView+LookinServer.m */, - F7CF2DFE487DFC9C10016B1FDAECDD95 /* UIViewController+LookinServer.h */, - 30CEF95FB390697B4C1ABB26A12E9B7E /* UIViewController+LookinServer.m */, - F03C6F51BDA9A5E5F9395D9F199C54FF /* UIVisualEffectView+LookinServer.h */, - BEB8AC93A851C5DFA93D44CFAD39856D /* UIVisualEffectView+LookinServer.m */, + 3583F45BB2A021FDC55DB56C5C606CB1 /* HWBackgroundConfig.h */, + 11A5C3D2E3080F2A5EECFB7F1FC6C319 /* HWBackgroundConfig.m */, + E164F75EDECDE7B82945FA657EA41708 /* HWDimmedView.h */, + 10D1C021B7050EF6841A364EE9A0A570 /* HWDimmedView.m */, + FF47B51E8368756DB1E42F174494224F /* HWPageSheetPresentingAnimation.h */, + 25AB23A95A2135A43EF14C148E707F7A /* HWPageSheetPresentingAnimation.m */, + 802FB1A32618485AA28D17584662FBAF /* HWPanContainerView.h */, + BFC6D8F98A0A99B4F62553DD6B2DE362 /* HWPanContainerView.m */, + 03CB4C12A5B494B4ECDEC92BC32E7490 /* HWPanIndicatorView.h */, + 88E8C1FFE2A2D6CB9741EF2354A3B30E /* HWPanIndicatorView.m */, + 53EC2576F6D68ECA3E1920A896AE4E4F /* HWPanModal.h */, + CF585038948BE5BD9FDE25D090C77A52 /* HWPanModalAnimator.h */, + 7AF90BBEF3A681BE8314F80257F1182C /* HWPanModalAnimator.m */, + F5D51DADE6BB30185CA5DE0A026B674A /* HWPanModalContainerView.h */, + 5030EF25D193EB41CCA5DF24FE48C1DF /* HWPanModalContainerView.m */, + 0E5F47A6ED542F1D0EAA4DD94091B61C /* HWPanModalContentView.h */, + DD391D4FA7F38A97455407F9DA5DA8F0 /* HWPanModalContentView.m */, + C49E916A72175489DFFC49A15E87403D /* HWPanModalHeight.h */, + BF679003FB79C12E8A8221EC19044EC3 /* HWPanModalIndicatorProtocol.h */, + 10A8507648AC9DE21CFA0929B1ED0404 /* HWPanModalInteractiveAnimator.h */, + 31F540B1617ECFBBE3A0FB1043BFB861 /* HWPanModalInteractiveAnimator.m */, + DE26DBA97E2F7B5B4805533E6C020C30 /* HWPanModalPanGestureDelegate.h */, + 4A4F0899D1AD5593F9373F8225D28188 /* HWPanModalPresentable.h */, + 56A664809217C1D10A7EC649E972D6AB /* HWPanModalPresentableHandler.h */, + B876DE6F099D679F03040B8EF24E5C82 /* HWPanModalPresentableHandler.m */, + 93A142314C8E6BF405461AFD41E16D08 /* HWPanModalPresentationAnimator.h */, + 0004D14E99E5CD92EA09732F82694FF5 /* HWPanModalPresentationAnimator.m */, + 3C880A37C8BD02476827078E98C08810 /* HWPanModalPresentationController.h */, + C7586CB0CDC6CAF19F6A64083B6C8C0F /* HWPanModalPresentationController.m */, + 165D33815F330DB72870682C820A790B /* HWPanModalPresentationDelegate.h */, + 2D1699A762F8D719D2565E3B0B508554 /* HWPanModalPresentationDelegate.m */, + 70ABAEE0904B02D3CE9045A0A088E18F /* HWPanModalPresentationUpdateProtocol.h */, + 093706FD3573E105CD2368D496C2DF76 /* HWPanModalPresenterProtocol.h */, + 57AA794BD50692239409E574C7FD0846 /* HWPanModalShadow.h */, + 883D06418312C016F973700D20558656 /* HWPanModalShadow.m */, + FCCAFE3B7FF5BB1E728A5F5834F651D8 /* HWPresentingVCAnimatedTransitioning.h */, + D9879EAF15EB971D024F6726C4E07562 /* HWShoppingCartPresentingAnimation.h */, + 8927ADAF60DF7D3D91B390580BD36295 /* HWShoppingCartPresentingAnimation.m */, + 8D7D197A108D97B04C3BA390CD4499D8 /* HWVisualEffectView.h */, + C15066DB017692FFB93D6BF3C34128D3 /* HWVisualEffectView.m */, + AF32E35E8F4552F6AF08F140AD085FE4 /* KeyValueObserver.h */, + 05E1785189AB18B6B47ECD584144AA0F /* KeyValueObserver.m */, + 2B6E38C872CB24F91AFE94F3DF5EFCC2 /* UIScrollView+Helper.h */, + 66C0C4029B17B8E45FF492CEEBD834E3 /* UIScrollView+Helper.m */, + C387114CB39CEE512E07F38E4439D4D8 /* UIView+HW_Frame.h */, + 109CFCE9774385E51695E82E530412B8 /* UIView+HW_Frame.m */, + 5F369D00927FCA59283AE71B174D2D1D /* UIViewController+LayoutHelper.h */, + 0041D895443AAAA3D1BCD4056EBB4F37 /* UIViewController+LayoutHelper.m */, + 4816EA2348DC71F3330B4D2743758FEF /* UIViewController+PanModalDefault.h */, + 0DDEE4190CA21B03ED83225BEC5FAC7D /* UIViewController+PanModalDefault.m */, + 995AA67533265367D116C78944065262 /* UIViewController+PanModalPresenter.h */, + D3576B2FF83DF230E75AA05AB2DB6B4D /* UIViewController+PanModalPresenter.m */, + A3F7C5007915361DF90A13BBA8CD3EFF /* UIViewController+Presentation.h */, + 1D36CFCB34B6B2FF494AB70EC5024CFA /* UIViewController+Presentation.m */, + AABD58CAE3AC5D0D8560E01BA94341F0 /* Support Files */, ); - name = Core; - sourceTree = ""; - }; - 1F3B1AE789621929A19F036CE8E0A834 /* Pods */ = { - isa = PBXGroup; - children = ( - A56EEB83F090D2B191CD05E50C8A32BD /* AFNetworking */, - 30662F4E68E56D663F93AD44284D7A3F /* Bugly */, - 23AABBA54450F01AD14FE2D5004EA190 /* DZNEmptyDataSet */, - E911B99C127EE9BCD74DF2829FDF7E50 /* FLAnimatedImage */, - 70104E6856A041C557137A2D6E976E41 /* HWPanModal */, - 2EBFB6421CDB820E5740269D53F066CD /* LookinServer */, - 736D4B336E551C5E1C2C78E683E7C01A /* Masonry */, - 34826E63DF35EE3F8BAD76BE43B80FFB /* MBProgressHUD */, - FE95D05051075F9F0FE638F52D59284B /* MJExtension */, - A9F9DF7E0CB3C0F72DAC0BD4A3A8E1E8 /* MJRefresh */, - 06D6AC35A6F9128D8DCF6D347BC7E3D2 /* SDWebImage */, - ); - name = Pods; - sourceTree = ""; - }; - 215DAA690B9DE43504BC75E81C87FC63 /* Core */ = { - isa = PBXGroup; - children = ( - 625CF3BFC134394EF547BF079507A5D1 /* NSBezierPath+SDRoundedCorners.h */, - 10F69E78EAD8ECCB195A68616180404D /* NSBezierPath+SDRoundedCorners.m */, - DC0E4313E6BF0284C12011FF5FD9B8A9 /* NSButton+WebCache.h */, - 0746C9ECCE5759599C9E24C14B8E12DA /* NSButton+WebCache.m */, - 2B2EB2A264CA58715D67B113A8AEC381 /* NSData+ImageContentType.h */, - 3B28468BF62D31A9D25D492AAF6D25B0 /* NSData+ImageContentType.m */, - FBE9F0CF9D1C205F5B167BDFCF6C838A /* NSImage+Compatibility.h */, - 86C67D3928970843AA374752207E9260 /* NSImage+Compatibility.m */, - E4FA0289B9B02BEC5BD44CA92580B1E1 /* SDAnimatedImage.h */, - 5C764F0D3B98816426D5D1C448686870 /* SDAnimatedImage.m */, - 5222D695CCB33DFD24FA0E6B7CE34154 /* SDAnimatedImagePlayer.h */, - A5CA1B7FAF078CBFE367ED67421BD56D /* SDAnimatedImagePlayer.m */, - 20E6DD81C23D61767D03656C92BA491A /* SDAnimatedImageRep.h */, - E59399382497BDA8D62E5C39784B00B5 /* SDAnimatedImageRep.m */, - 3DC9A26415E30724897A7A975AB7B73E /* SDAnimatedImageView.h */, - 2ED817696CA9C5336FFC07568FC62502 /* SDAnimatedImageView.m */, - 015AD0623578CAD25A9859FBC263FF7D /* SDAnimatedImageView+WebCache.h */, - C656F7688A2DB9FEA22520878F9A2055 /* SDAnimatedImageView+WebCache.m */, - 07A233E548536FE36D9750CB427DC711 /* SDAssociatedObject.h */, - 1B289F862BC27A4B0060A4CFBD40E1E1 /* SDAssociatedObject.m */, - 07B9FDD5A40301D416EBF36F170E33FC /* SDAsyncBlockOperation.h */, - 839B9E61EAA7FC6A8B571EAB1077DBCF /* SDAsyncBlockOperation.m */, - 8C495E6705380977CFF34DEFD621BF49 /* SDCallbackQueue.h */, - 81C8A4B9A7186C1EC704A8F7181A8B4C /* SDCallbackQueue.m */, - 8F351B59999F041F80A0949DA207118B /* SDDeviceHelper.h */, - A0641CF016316B36ABD820BBE52AD19F /* SDDeviceHelper.m */, - 24AF188A90B7DB8463BE14A968AB6A8F /* SDDiskCache.h */, - B41358A1C10AD0D29F1770C04A5F0CAF /* SDDiskCache.m */, - D5303ED4D5AB235B98FBA4B0FDED5DF7 /* SDDisplayLink.h */, - 59E5B7C96027CDC6B5D70E2AD9AC0EFD /* SDDisplayLink.m */, - EAA52787EF7666BD721984EDA694AE9B /* SDFileAttributeHelper.h */, - C6C930D163128CBE864CF933994F470B /* SDFileAttributeHelper.m */, - 58623A3EED3B4D5125F83B78B865E033 /* SDGraphicsImageRenderer.h */, - 234CA385D849480382A37D00B41DE872 /* SDGraphicsImageRenderer.m */, - 5746A23477BAEA4BBB127E9D35DF678C /* SDImageAPNGCoder.h */, - 07FE3729A86CE6B36944299B52BB3BBE /* SDImageAPNGCoder.m */, - AFF73BDD48D8B44AFC6A61B1B0B3B57B /* SDImageAssetManager.h */, - 95F6534573C96B51C375B48F710A1253 /* SDImageAssetManager.m */, - 92C723F3A1F71486F75D6E7CA7E480E6 /* SDImageAWebPCoder.h */, - 6BE8047ED813191B4BC46FA8C5334ABC /* SDImageAWebPCoder.m */, - 91D3E5E505EB6AAA766EB09E461868F7 /* SDImageCache.h */, - BAF92A34DD29AD318C11B5807644B670 /* SDImageCache.m */, - 46B5AC2B0569CA6232E5088BF6FBCD84 /* SDImageCacheConfig.h */, - 0A9880E3C5631DD575998A17C1EAAFFE /* SDImageCacheConfig.m */, - 93ED7AE2B94BDF71B19043408EA5D0F3 /* SDImageCacheDefine.h */, - 24B77E5B834F553CB4EB67CF38D1658B /* SDImageCacheDefine.m */, - 9A43BA63699738F29455B4DD47483A5A /* SDImageCachesManager.h */, - F70E3892FF24472DB0CDEFABFBA36F91 /* SDImageCachesManager.m */, - C0E09B2B757F6365152258D76B3D2A39 /* SDImageCachesManagerOperation.h */, - 9C0C71B23FD64F957CD7F6E8EBE92F99 /* SDImageCachesManagerOperation.m */, - 6124AD77C854511265D90EDC5EE36657 /* SDImageCoder.h */, - 999C87FA7C5AA189886B4A2D58358BA9 /* SDImageCoder.m */, - F5E0853FDC6EA439AD5D1AA134CD117B /* SDImageCoderHelper.h */, - DBE8F778D2F44195988D4A515D7F4B42 /* SDImageCoderHelper.m */, - 89CAE6642460316AFEB27B5A5CD2778E /* SDImageCodersManager.h */, - A1A68076B57D7DD2B4FCC592ECD4E990 /* SDImageCodersManager.m */, - A48C905BEA42A4AA5B76B664D12914C8 /* SDImageFrame.h */, - FED67045FD441EBB05D6A0040A0A1D7B /* SDImageFrame.m */, - 8B6F555000ECA771E3EEE30C0BCA8211 /* SDImageFramePool.h */, - D62C4FB56F8536A4E96AFCADDF2C0945 /* SDImageFramePool.m */, - E876347288A6DCD527E822BBFB6C5774 /* SDImageGIFCoder.h */, - ED79370B32C9C754D3E34A13A2B7A516 /* SDImageGIFCoder.m */, - FDA81838534E80C5870459AD0441D08C /* SDImageGraphics.h */, - D6E12F6D8FA9D6FBA8E91CEC32AD4F92 /* SDImageGraphics.m */, - 8EAAEC40E00FD2D67C7E5C46D561E1B8 /* SDImageHEICCoder.h */, - D08373F9471B6FE81CFE350A61D7EEC0 /* SDImageHEICCoder.m */, - 58FC58CFC6A48F6752D249D83F67DD94 /* SDImageIOAnimatedCoder.h */, - 931F2EC345E0B4F7BD3F617F883DF4E2 /* SDImageIOAnimatedCoder.m */, - 596D5BD427C685CFFE0E474F1355C0BB /* SDImageIOAnimatedCoderInternal.h */, - 5B7E0100E260F97D53E9D7FCB8CAAFCB /* SDImageIOCoder.h */, - CD41EB00FCD1D9A736384800AABD1E30 /* SDImageIOCoder.m */, - FF065544B74A17D64308801DEE489EEA /* SDImageLoader.h */, - 6B25E0E8867C9D8FE8A69D2C8BD251D9 /* SDImageLoader.m */, - 070F9E5A12CC270070B53AA6E4DE380D /* SDImageLoadersManager.h */, - 6CD3C473E82665733BD9E2D23A688894 /* SDImageLoadersManager.m */, - 2FE4E0AF6CE972936C63A285E8C573B7 /* SDImageTransformer.h */, - B78E312E7E63BF84B4DD4072BAB4A551 /* SDImageTransformer.m */, - 8705B9A2A16D5B2796A9B11E1C3D074C /* SDInternalMacros.h */, - BD6A58C100D7D0C95F73174D108F1F16 /* SDInternalMacros.m */, - 19C0CBEB4A5292C9975C224EC1464049 /* SDMemoryCache.h */, - 4EF1B5176604A62648603F6832B989AC /* SDMemoryCache.m */, - FB1ACE3587FC03054A397CA0A1E76CDC /* SDmetamacros.h */, - 6013BED1D4465B355233E90F5236D454 /* SDWeakProxy.h */, - 72A78D12318A2A4F704BC2BC743AD9DF /* SDWeakProxy.m */, - EB627434D926A06008809F0DE57949FF /* SDWebImage.h */, - 1657973127018C3379A034BF182EF686 /* SDWebImageCacheKeyFilter.h */, - 69120AA1162D453113865A302140EFB0 /* SDWebImageCacheKeyFilter.m */, - 5D55CD73335546425BAD6A91CB9C4CE4 /* SDWebImageCacheSerializer.h */, - 2A5FE34535D0AF62304F84F18B3E5293 /* SDWebImageCacheSerializer.m */, - 6470D20217BE1E46F63251367F8A9EB0 /* SDWebImageCompat.h */, - 902DE3B37054D9EE3A5EE281287AD148 /* SDWebImageCompat.m */, - E031D032167FCBE18305712D789891F0 /* SDWebImageDefine.h */, - BF63871F7CF3667516551ED65E16445F /* SDWebImageDefine.m */, - 492F2C7BD5804A777BF8699BEBDE9706 /* SDWebImageDownloader.h */, - 445DB8E68C4622DC598EF2623547120D /* SDWebImageDownloader.m */, - B2E58999C4BBC169E871AD7F5DC6CC54 /* SDWebImageDownloaderConfig.h */, - ECBB46360F809A2F94F7C900E07EB3E3 /* SDWebImageDownloaderConfig.m */, - 0F498FCFBEA5766BBF0C258824B66B52 /* SDWebImageDownloaderDecryptor.h */, - D51913F3FF9E3373AE2497E7D98225CF /* SDWebImageDownloaderDecryptor.m */, - AC119D7F0D47E7F00738CC762CB0D90B /* SDWebImageDownloaderOperation.h */, - BBB5022209600659D8A4792A6FD748CE /* SDWebImageDownloaderOperation.m */, - 5916EA119280E5419D6269E5A435A1A0 /* SDWebImageDownloaderRequestModifier.h */, - C5D4B0A2DB8E7128A6DA546DA4C7CEB7 /* SDWebImageDownloaderRequestModifier.m */, - 8759D0306E45E19CBC456FD3486DDE02 /* SDWebImageDownloaderResponseModifier.h */, - FACA69FE6DA578D469CD1F044903A1FD /* SDWebImageDownloaderResponseModifier.m */, - F12C01BF0CB50E72493E6AAC23806030 /* SDWebImageError.h */, - E68A775E5721AFBDB649BB9442D57178 /* SDWebImageError.m */, - 2D17878F639EAB83DF1DC258E92939A6 /* SDWebImageIndicator.h */, - 3227970589E62371501C4D8C28DD4B1C /* SDWebImageIndicator.m */, - D6F2CCB5C719F8790027213B6CF0ED8A /* SDWebImageManager.h */, - 08732566CBDE3EB293493BCD102835A7 /* SDWebImageManager.m */, - 2C249B920F34D0D69C69CA43351E52EE /* SDWebImageOperation.h */, - 9A61CDBD69057C3674739778A8D7E4BE /* SDWebImageOperation.m */, - 269EFD14AB222FEFEC686C63F58F74FF /* SDWebImageOptionsProcessor.h */, - 75D5D4CBB473106CD017A60A4F0284B5 /* SDWebImageOptionsProcessor.m */, - 8FA74E651256F04C8514F0A05679D217 /* SDWebImagePrefetcher.h */, - 2CE706B82C8002B7608E049B83BF0A12 /* SDWebImagePrefetcher.m */, - 29C84A9BCB275444D2358F473D9B5160 /* SDWebImageTransition.h */, - CEED0C5BB9E7BD10174D1CAE5F34FE15 /* SDWebImageTransition.m */, - 2E8FF2BF379FE508F46CAD249E158559 /* SDWebImageTransitionInternal.h */, - 9EE75894CA44B250BFEA11B25F54F149 /* UIButton+WebCache.h */, - C12D160C6063D462EE97C5CD6A35994E /* UIButton+WebCache.m */, - 7D1C2865819BCF073FD84E9A5B8816AB /* UIColor+SDHexString.h */, - D93DC4D1234F76EDC574EBA1402310C2 /* UIColor+SDHexString.m */, - 7F409E94556DE38FF80361104AA14B1C /* UIImage+ExtendedCacheData.h */, - 5A0744C22449018296AB633E5BC2C275 /* UIImage+ExtendedCacheData.m */, - DF0270B966F6AC049BFD4D076AB8B56F /* UIImage+ForceDecode.h */, - 1527F49078C26F2BAB6E17A11F0AC9A9 /* UIImage+ForceDecode.m */, - 397ABB0739D14AE30A56100FCE880DEF /* UIImage+GIF.h */, - 4C5F7FF14062807BDEB2A6D6E4A6DE95 /* UIImage+GIF.m */, - A12EE00E77DE8A43E7CE64F69D345190 /* UIImage+MemoryCacheCost.h */, - 5F23B5AA329AF2C38E62E7CBE5F5D136 /* UIImage+MemoryCacheCost.m */, - 3353CA39B2D60213971EFFABDAE02625 /* UIImage+Metadata.h */, - 38DC37E61EA03D85A44EDCFC75EB6238 /* UIImage+Metadata.m */, - 9AB541F4715AB2A0DE59B23A5696D448 /* UIImage+MultiFormat.h */, - 6BA9B1ACD0A1EB747C6936E484D5208B /* UIImage+MultiFormat.m */, - 9B7BDA9563EB39641E0A578B77FD4FAA /* UIImage+Transform.h */, - A77B70C25747C0E7AE67F784B287D211 /* UIImage+Transform.m */, - 8FFBA60DA7BFD0D987C4E683037FDDB0 /* UIImageView+HighlightedWebCache.h */, - 64FC3145438669B612415058A5D1C68B /* UIImageView+HighlightedWebCache.m */, - 115D9A38E828733E2521BA1DFE025D50 /* UIImageView+WebCache.h */, - 32635BBD805EC978CC3BB3BC4CF3B7E3 /* UIImageView+WebCache.m */, - 06BB1170E7630AD9AB926EE90BE5F730 /* UIView+WebCache.h */, - B72774F6480A029A3A2441E9DF82096D /* UIView+WebCache.m */, - 221F590A160BC28ED1F8AD774E3E9DE5 /* UIView+WebCacheOperation.h */, - 5B69A17E7FED839334E49FA3104B7F83 /* UIView+WebCacheOperation.m */, - 8A7ED5F60A6E593BE4319E09C2FD0BE2 /* UIView+WebCacheState.h */, - A941317B46DF5E4325D43DAC931923A5 /* UIView+WebCacheState.m */, - 715D357C6E37AF2321823A40B86843D5 /* Resources */, - ); - name = Core; - sourceTree = ""; - }; - 22BD1B8E40EAA479D200D4E018A1B387 /* Support Files */ = { - isa = PBXGroup; - children = ( - 9C78F6EF0B85587CCB2705C057DF66EA /* MJRefresh.modulemap */, - FB8AAFEE45EE16BDE3F3360F400C9BF9 /* MJRefresh-dummy.m */, - 44A0BF7F32C28865E6ACA8A8BB27F63A /* MJRefresh-Info.plist */, - 6ECF4C720F0485F7EA3D63E9C28CFBA7 /* MJRefresh-prefix.pch */, - F30BDD15914FC15F21B063466E4635E6 /* MJRefresh-umbrella.h */, - 8594A6CF7D45F1715A10AC3C18700F18 /* MJRefresh.debug.xcconfig */, - 57748DDDE8158306E4B3EAC0E03C99A1 /* MJRefresh.release.xcconfig */, - 0638217979CCFF20B7C6FAFF407CC6B6 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/MJRefresh"; - sourceTree = ""; - }; - 23AABBA54450F01AD14FE2D5004EA190 /* DZNEmptyDataSet */ = { - isa = PBXGroup; - children = ( - C07FA22445AE442F8F429DC97AD5226D /* UIScrollView+EmptyDataSet.h */, - 3FB5EB648C2339F0632D8DD464412282 /* UIScrollView+EmptyDataSet.m */, - 6263588AF125BD2D5ACE21428FE35625 /* Support Files */, - ); - name = DZNEmptyDataSet; - path = DZNEmptyDataSet; - sourceTree = ""; - }; - 253FE6C203FBC03CF9639A4DBFC761C7 /* Serialization */ = { - isa = PBXGroup; - children = ( - D8682D5ED4B7C56D720AFBA44BC3BC76 /* AFURLRequestSerialization.h */, - 1AF87BA87F8CBB4575826A086C4B0871 /* AFURLRequestSerialization.m */, - E1A687EF38913970F24032AD57F99A10 /* AFURLResponseSerialization.h */, - D62A25339DF2EED2DFE6F9001320C81F /* AFURLResponseSerialization.m */, - ); - name = Serialization; - sourceTree = ""; - }; - 26D333E08189F9D1ADECA4903B41EFEB /* Frameworks */ = { - isa = PBXGroup; - children = ( - EB219D5B4EB24108AB241B8A5F5ABE19 /* Bugly.framework */, - ); - name = Frameworks; - sourceTree = ""; - }; - 2EBFB6421CDB820E5740269D53F066CD /* LookinServer */ = { - isa = PBXGroup; - children = ( - 19E12BE9CE9CE105A9ABABB0F83900CB /* Core */, - F70CAA8D03120C833BBEE4DBB0DC6756 /* Support Files */, - ); - name = LookinServer; - path = LookinServer; - sourceTree = ""; - }; - 30662F4E68E56D663F93AD44284D7A3F /* Bugly */ = { - isa = PBXGroup; - children = ( - 26D333E08189F9D1ADECA4903B41EFEB /* Frameworks */, - 933CB05F159214207AF50CD044DA7A14 /* Support Files */, - ); - name = Bugly; - path = Bugly; - sourceTree = ""; - }; - 34826E63DF35EE3F8BAD76BE43B80FFB /* MBProgressHUD */ = { - isa = PBXGroup; - children = ( - 7020F5FD7E08D02DFB263422BBB5EBCE /* MBProgressHUD.h */, - A143D09B35BD8CC84D08FB36C49D2099 /* MBProgressHUD.m */, - D9F07D6F2272135B5E1B7D613E619612 /* Support Files */, - ); - name = MBProgressHUD; - path = MBProgressHUD; + name = HWPanModal; + path = HWPanModal; sourceTree = ""; }; 4098ED899C8DF8E013F9F260ECFAA236 /* Pods-keyBoard */ = { @@ -1835,19 +1869,19 @@ path = "Target Support Files/Pods-keyBoard"; sourceTree = ""; }; - 4140F4CDE908BCC638DE30D6AD7E286D /* Support Files */ = { + 463425673C27CDDB3B6077DA1769E98C /* Support Files */ = { isa = PBXGroup; children = ( - 9BCDAC8B780C194868C6063FBF20A57A /* HWPanModal.modulemap */, - 6A94D2984C9A5BA88F4AA771F38B8314 /* HWPanModal-dummy.m */, - A35EA195B83881018F93E59FE86940FC /* HWPanModal-Info.plist */, - 73D83AA6FEB5E85D4F5AA27E2C2ADB69 /* HWPanModal-prefix.pch */, - A16552B472D24C41550970F7A20D2306 /* HWPanModal-umbrella.h */, - C9DEFB96646787781652ABFE1D5648AF /* HWPanModal.debug.xcconfig */, - 3011D5BF791250C05C8D7C5BD12BC772 /* HWPanModal.release.xcconfig */, + F24F9CCCB353131934224305105F7E49 /* FLAnimatedImage.modulemap */, + DCB59AEF88556057BC2FD85427D2EFE7 /* FLAnimatedImage-dummy.m */, + A8CED6128E73E0F84131EFEF369AFB64 /* FLAnimatedImage-Info.plist */, + 1E115C24A1085A18B17DA1956923425C /* FLAnimatedImage-prefix.pch */, + 56083A8D73CF98D49960B5783A36797F /* FLAnimatedImage-umbrella.h */, + C8974089710AB7F8A65D77241AA70557 /* FLAnimatedImage.debug.xcconfig */, + DDD6B4DA641B2F94F2D426AC2D4A5E7E /* FLAnimatedImage.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/HWPanModal"; + path = "../Target Support Files/FLAnimatedImage"; sourceTree = ""; }; 47B776543D6613BCB6FB72308F863018 /* Pods-CustomKeyboard */ = { @@ -1866,192 +1900,169 @@ path = "Target Support Files/Pods-CustomKeyboard"; sourceTree = ""; }; - 5DBA2FE1A0B71A23FCB50AB66BEDCF44 /* Support Files */ = { + 47E1BAF577BBA403FE7B999A122D3E59 /* Resources */ = { isa = PBXGroup; children = ( - 89AF890E0CFE5DDF9869F06650066AA4 /* MJExtension.modulemap */, - 317BBB3797CCCBC8D9201446D3C35C11 /* MJExtension-dummy.m */, - 0B1027E2DC84E88E6F5E35A21EB804D5 /* MJExtension-Info.plist */, - B51D6BDADBE9F95F37BE5FDCC3849A36 /* MJExtension-prefix.pch */, - B979B6198848283DB66503E656A49837 /* MJExtension-umbrella.h */, - 87352714D54CE9C3DCA836E85ABDE2D9 /* MJExtension.debug.xcconfig */, - 380B11CB6389CFA1B7904A11C79EDA18 /* MJExtension.release.xcconfig */, - 48848C87D33425CDC35A3154B4C1E819 /* ResourceBundle-MJExtension-MJExtension-Info.plist */, - ); - name = "Support Files"; - path = "../Target Support Files/MJExtension"; - sourceTree = ""; - }; - 61D45F4E2C8D21B25DDEFC89074CF2F0 /* Support Files */ = { - isa = PBXGroup; - children = ( - 08CEA16AAD05A8A9CB6FB2E2306DD5A9 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */, - 95CE408CF328A01B1BEE4325824DB1C6 /* SDWebImage.modulemap */, - 94EC9A7C408C26C1E3959F02360523F7 /* SDWebImage-dummy.m */, - 10BE44D639650FFA77A358DCD2603F89 /* SDWebImage-Info.plist */, - F7D31CEA08897E65AFD68DFA556F9A76 /* SDWebImage-prefix.pch */, - D8BA408618D220AA3B9C6EE5D3745E21 /* SDWebImage-umbrella.h */, - CE9DC3EBC5E4498B6CBDAA25AFECD440 /* SDWebImage.debug.xcconfig */, - D57BF77833CFB4176D299C7D13ACBA75 /* SDWebImage.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SDWebImage"; - sourceTree = ""; - }; - 6263588AF125BD2D5ACE21428FE35625 /* Support Files */ = { - isa = PBXGroup; - children = ( - 58EF98364CA25B52C8DF52E35A63A6BB /* DZNEmptyDataSet.modulemap */, - FA5982BFE2863F2A7591EEA5A3374FB5 /* DZNEmptyDataSet-dummy.m */, - 0BB10D586B41516BBFB3A82A983FB648 /* DZNEmptyDataSet-Info.plist */, - 6AC0CAE7328F30AAD9591CBF92851E5D /* DZNEmptyDataSet-prefix.pch */, - C5805469F7E93E743A134E4EEC762665 /* DZNEmptyDataSet-umbrella.h */, - C354B162321F2CA18DB1B330D092378E /* DZNEmptyDataSet.debug.xcconfig */, - 83ECFAFFBD6F90A4A996E32508211B96 /* DZNEmptyDataSet.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/DZNEmptyDataSet"; - sourceTree = ""; - }; - 70104E6856A041C557137A2D6E976E41 /* HWPanModal */ = { - isa = PBXGroup; - children = ( - A7BD9DB001526EC0DE681E63675B8318 /* HWBackgroundConfig.h */, - 9E1C83957751BACAB22569AE64250554 /* HWBackgroundConfig.m */, - EE48BDF616ED4BAED9CAABA06281EC92 /* HWDimmedView.h */, - D576F2E6ED4261CAADE09C891ED19EEF /* HWDimmedView.m */, - C53E65DBE6C4798EE75818796AEE4D8C /* HWPageSheetPresentingAnimation.h */, - D1AB74F96045D59C6D2386964814DA47 /* HWPageSheetPresentingAnimation.m */, - F50930AF985486436650C129CC8670FF /* HWPanContainerView.h */, - 0A148033E0AD112C21B19DC7D700C287 /* HWPanContainerView.m */, - 99D142261C81911E0D8BD4684EC87BB5 /* HWPanIndicatorView.h */, - 30B685B44F3C08EAECD172ACBC891B15 /* HWPanIndicatorView.m */, - DC656082CB5200E5E1AF1B4BE99048B3 /* HWPanModal.h */, - 1BF03DA63A4A2F42BE9BA070226F0116 /* HWPanModalAnimator.h */, - 5C5640AE0C2091C5FC7A8CFD27229CC3 /* HWPanModalAnimator.m */, - 52AC10A81E2C53178BFD809330041A7E /* HWPanModalContainerView.h */, - 7C8E106F1C7C00CCE5C4691E7DFD2859 /* HWPanModalContainerView.m */, - F39EC289147F8732DE9E200AEBD42C99 /* HWPanModalContentView.h */, - 121C303DCF5199C717010EF66462BD05 /* HWPanModalContentView.m */, - 6E2233B3F4E54A10BBB04EA668A8B0BC /* HWPanModalHeight.h */, - 35F4A1DCA414FF4A5C14BDB494A4BCE4 /* HWPanModalIndicatorProtocol.h */, - 87FB553A3CC72081333DBA02B2136CF8 /* HWPanModalInteractiveAnimator.h */, - F825F22155AA272C7B94795CFB508AE6 /* HWPanModalInteractiveAnimator.m */, - 944C193267D20C3EDAC9F40BC95BA365 /* HWPanModalPanGestureDelegate.h */, - 0C180A1C6E6C287310FABCB81CBEEB07 /* HWPanModalPresentable.h */, - 8AF449E5E9E00FFF6BD1DD6F39E654AC /* HWPanModalPresentableHandler.h */, - 50AB72625252A5E15E31076E002BFCDA /* HWPanModalPresentableHandler.m */, - B1272B72DEF143341E0CC0451AF17506 /* HWPanModalPresentationAnimator.h */, - 3DF0E590DEA8DD03BE15CBF72CDCBE8B /* HWPanModalPresentationAnimator.m */, - 464FA74F22BA11120A125593D04ECC10 /* HWPanModalPresentationController.h */, - FCEC0D919F385E28169E6FC7B6EAE42C /* HWPanModalPresentationController.m */, - 1BA698A47BE0BCA54FA1B10EF6CD2196 /* HWPanModalPresentationDelegate.h */, - C917ABB653A9CB7D7518FCE9F40F2F2D /* HWPanModalPresentationDelegate.m */, - 163946A4F251CC5F8129585DD75C0870 /* HWPanModalPresentationUpdateProtocol.h */, - BBD303CA2BE52A14A7809A2F458FE949 /* HWPanModalPresenterProtocol.h */, - 1D7BBE0F835610A258CF510E00DC847F /* HWPanModalShadow.h */, - 29982B3E12912C7BE794585B2B7F77CC /* HWPanModalShadow.m */, - 845117372901F4A5A3D286F10A26B6EC /* HWPresentingVCAnimatedTransitioning.h */, - 62F129163AC40C289B2AEA5C7DEBE679 /* HWShoppingCartPresentingAnimation.h */, - 8F53205FC53C4FCB1F1D5089D62F9DFC /* HWShoppingCartPresentingAnimation.m */, - 40BFEDE02CC0E566BBDC5A631AF4AF85 /* HWVisualEffectView.h */, - B466F948757742572AAEA4DF218BD987 /* HWVisualEffectView.m */, - 3C462ACDAC6DCEE65350D4BC510A2E99 /* KeyValueObserver.h */, - A97B23EA4BC5A09E3AB9062612C11DE8 /* KeyValueObserver.m */, - E634ACC2034218ADC26B5D4109F49AA9 /* UIScrollView+Helper.h */, - C46FC528BD8EF754DE7F229CABF54A73 /* UIScrollView+Helper.m */, - 01DAF6FB6694A07703202991DBBEA497 /* UIView+HW_Frame.h */, - 33A93A838A9C0189A366EF1F2D8FC9A5 /* UIView+HW_Frame.m */, - 819AF2C3BB9CCBDC0A03029D56096EA4 /* UIViewController+LayoutHelper.h */, - 8EE35BE199AAA2D6723052ADC7573E04 /* UIViewController+LayoutHelper.m */, - 9A65EE54330746267B5EE5B6873635DA /* UIViewController+PanModalDefault.h */, - 99AE60DF16539817ECDA464B8C0BF588 /* UIViewController+PanModalDefault.m */, - 581D45C2162C5967784E2A106C696662 /* UIViewController+PanModalPresenter.h */, - 041476A9D72BD942940B39097904435C /* UIViewController+PanModalPresenter.m */, - E2238DC60FAF777CC267A61F86DC909F /* UIViewController+Presentation.h */, - CFCADA560B6CBB7BCDE9CD39CDBE90F2 /* UIViewController+Presentation.m */, - 4140F4CDE908BCC638DE30D6AD7E286D /* Support Files */, - ); - name = HWPanModal; - path = HWPanModal; - sourceTree = ""; - }; - 715D357C6E37AF2321823A40B86843D5 /* Resources */ = { - isa = PBXGroup; - children = ( - 99C1A927375BA228B8AD38FDB36211B8 /* PrivacyInfo.xcprivacy */, + F4AF21DC4288D196E2F556338C3101AE /* PrivacyInfo.xcprivacy */, ); name = Resources; sourceTree = ""; }; - 736D4B336E551C5E1C2C78E683E7C01A /* Masonry */ = { + 54FB6DAEEA2800483CD443ADC094963C /* LSTPopView */ = { isa = PBXGroup; children = ( - 33B1E0CA964F32623BB6975D9AC53C26 /* MASCompositeConstraint.h */, - D52F3A758237EAA29F8DFF3603985B94 /* MASCompositeConstraint.m */, - F4187BCD5B0BEB79E4E3553B6413AF27 /* MASConstraint.h */, - 0EDF4F1BB23D4262A7612DC313B361ED /* MASConstraint.m */, - 5A37D9FEABB61A71285A73CDE4C5E9EE /* MASConstraint+Private.h */, - 32809A6CFD5412906D97C8C7FCB8E331 /* MASConstraintMaker.h */, - E3ED3F5FB825F25AD8EB19CE0AC86B77 /* MASConstraintMaker.m */, - 5B7AF4A837E5E99D79B146178585C2C3 /* MASLayoutConstraint.h */, - 90219DE322B8BCFE6BF680852EBEF4F5 /* MASLayoutConstraint.m */, - F56A3D2CEFC20C7B8AF2EDF3674BEE77 /* Masonry.h */, - 14121BAD9B9FA92863D1125B50D54DF4 /* MASUtilities.h */, - 144086F1366328F4F927C4F459E44619 /* MASViewAttribute.h */, - CCFCCA3349FCD1D6463769CF4AAFD75C /* MASViewAttribute.m */, - DBC5FB408D1CC34D172A8CECF2AE6860 /* MASViewConstraint.h */, - 8862727C1E338311DF7340BC59FC7388 /* MASViewConstraint.m */, - 587CB6117FEDC0DADE247998FA290F62 /* NSArray+MASAdditions.h */, - 0EC3BDE6337E9995ACF80D1DE71F506A /* NSArray+MASAdditions.m */, - 737E319C87B4A4FA348810E15675B757 /* NSArray+MASShorthandAdditions.h */, - 59AF70C47DF0209B5D93F81A25EFB8EC /* NSLayoutConstraint+MASDebugAdditions.h */, - A6C86B0A2BE58730A7EC5C60F201E0CC /* NSLayoutConstraint+MASDebugAdditions.m */, - B71B6DD998C6C529D683056C8285BE11 /* View+MASAdditions.h */, - D9D5E9D7932C124D684E6F1F2A2ECE7D /* View+MASAdditions.m */, - 18F1A2756FCB9AE94DFF016BE720ED41 /* View+MASShorthandAdditions.h */, - 47A1CD68D6C47087933E20DA80B1E693 /* ViewController+MASAdditions.h */, - 099894DB44BB1249366F618379B45D6F /* ViewController+MASAdditions.m */, - 75AE5D307463F134F4307B4BC9AA2EB7 /* Support Files */, + 3558A467522318FD82C582513E547957 /* Code */, + 1724889F583861283992342B8F084070 /* Support Files */, ); - name = Masonry; - path = Masonry; + name = LSTPopView; + path = LSTPopView; sourceTree = ""; }; - 75AE5D307463F134F4307B4BC9AA2EB7 /* Support Files */ = { + 575B9A37FCA1D986BF2159F1DC5640CC /* Pods */ = { isa = PBXGroup; children = ( - EEE3AE806D4D49918C7379264B8B46D1 /* Masonry.modulemap */, - 105C0E572020BAFC2F3F07702779A020 /* Masonry-dummy.m */, - 7D170811DBCC5115CE133F6187C37ADE /* Masonry-Info.plist */, - 65578EBC5788FEE6B04E9151B552D110 /* Masonry-prefix.pch */, - 66EB6235F828F12999A13D8BD6C02127 /* Masonry-umbrella.h */, - 95B0223E2E65A30C6C4B233E336C7DB9 /* Masonry.debug.xcconfig */, - C67403F95732E8793DB36834C4726BFA /* Masonry.release.xcconfig */, + 89D6BC06C1AD7B6FFF6982A03286C710 /* AFNetworking */, + AF98548CB9C337C748F2E8BB9B2CA20B /* Bugly */, + 9417EBD2D308B63C380DB7DDBB4539BC /* DZNEmptyDataSet */, + 78901ACF392301939104361834A904A6 /* FLAnimatedImage */, + 3B43DD955EE30DAEC0EAAF7C261E2B86 /* HWPanModal */, + 64E7B9824C6F286E5F92AAABB42EFBCB /* LookinServer */, + 54FB6DAEEA2800483CD443ADC094963C /* LSTPopView */, + 65AD9332968D1533C04FC8BA5200BFE7 /* LSTTimer */, + C5357083C92AA1ED2F84EF8CC6743655 /* Masonry */, + 6EC8F20A5AD26D138CC780F895C38EFF /* MBProgressHUD */, + 2CEB54752AE867745CB29DF1C930135F /* MJExtension */, + 3781A0D3F34F1F7E995238764CEAD97B /* MJRefresh */, + 035E1FF1C6FC2C70E1C9A7412F5BC07F /* SDWebImage */, + ); + name = Pods; + sourceTree = ""; + }; + 63BB31835B8FFB4B51867F68F6F0E87F /* Serialization */ = { + isa = PBXGroup; + children = ( + B686FCB243BCB66C7BB1F42E6A4B3417 /* AFURLRequestSerialization.h */, + F68CF910ED994D45AAA3B5E5FABB6835 /* AFURLRequestSerialization.m */, + 201F7289F3B83B98F487EC194493B7F3 /* AFURLResponseSerialization.h */, + AFF39BEB58B97CA8F3DFDE7996909112 /* AFURLResponseSerialization.m */, + ); + name = Serialization; + sourceTree = ""; + }; + 64E7B9824C6F286E5F92AAABB42EFBCB /* LookinServer */ = { + isa = PBXGroup; + children = ( + 20214EA91148602FD46C19710C2B91EB /* Core */, + DDE3584A435E1B64AD756057D19173E3 /* Support Files */, + ); + name = LookinServer; + path = LookinServer; + sourceTree = ""; + }; + 65AD9332968D1533C04FC8BA5200BFE7 /* LSTTimer */ = { + isa = PBXGroup; + children = ( + 9CC6285CEC9BC9D5CBF28149790EF660 /* LSTTimer.h */, + 0F067A700BA9565969A60D7617155FBC /* LSTTimer.m */, + 7248D0DA123118E28F34C00E89F7FE76 /* Support Files */, + ); + name = LSTTimer; + path = LSTTimer; + sourceTree = ""; + }; + 6EC8F20A5AD26D138CC780F895C38EFF /* MBProgressHUD */ = { + isa = PBXGroup; + children = ( + CD29BD8633F552915B08BF15C7E0DFFF /* MBProgressHUD.h */, + 1B77702D1A0EF9DC4542AD40D9D3062E /* MBProgressHUD.m */, + 83190A88E8E738BE07B1966ADE3CB3CD /* Support Files */, + ); + name = MBProgressHUD; + path = MBProgressHUD; + sourceTree = ""; + }; + 7248D0DA123118E28F34C00E89F7FE76 /* Support Files */ = { + isa = PBXGroup; + children = ( + B896A10F9115068B682B35E4774898B6 /* LSTTimer.modulemap */, + F9F21BFD087BDB0FF37B51B916F0A3DC /* LSTTimer-dummy.m */, + 3AF690E545719F23D7E97E6C1F82121E /* LSTTimer-Info.plist */, + A4F699C3287866E6143CDE3B9C0C8BAA /* LSTTimer-prefix.pch */, + 93D6767143B7C5D00675B75D54B0AFEF /* LSTTimer-umbrella.h */, + 8769FA429275709C356B4C8A5DDEC26E /* LSTTimer.debug.xcconfig */, + CB1BEFB1C0257A74B80CAF80DB336894 /* LSTTimer.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LSTTimer"; + sourceTree = ""; + }; + 755B3574C116B6B21DA3F9684A3E744A /* Support Files */ = { + isa = PBXGroup; + children = ( + 473462854899532931D29986CBD25F4A /* Masonry.modulemap */, + 56A89B114742BBA3282DA6CDF9871F36 /* Masonry-dummy.m */, + 92F9229FF7CD4EFBE6BB07684D5118E4 /* Masonry-Info.plist */, + 4968882808F027C34D91341E2DBD71E2 /* Masonry-prefix.pch */, + 672AB6E0839CC099E7CA7CF49761A5D7 /* Masonry-umbrella.h */, + 04A09AD12EF8C816FA9546838C3F429E /* Masonry.debug.xcconfig */, + 72FF1B2D48227EDD9EB762579BA5D936 /* Masonry.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/Masonry"; sourceTree = ""; }; - 933CB05F159214207AF50CD044DA7A14 /* Support Files */ = { + 78901ACF392301939104361834A904A6 /* FLAnimatedImage */ = { isa = PBXGroup; children = ( - 4E56D5DDE9402DE57FEF9D81E68DE8B3 /* Bugly.debug.xcconfig */, - 6E87ADD85BCC1C5A4BF0FB2AC7E2A834 /* Bugly.release.xcconfig */, + D1A874AEEF141E292D730F9161627B04 /* FLAnimatedImage.h */, + C1EC495C820AD2FE568E285440075D82 /* FLAnimatedImage.m */, + D37BD8FF05E69B29FC64F9CEB3CA7255 /* FLAnimatedImageView.h */, + 81B71B9BB50BFCB7CBC2B6455296C14B /* FLAnimatedImageView.m */, + 463425673C27CDDB3B6077DA1769E98C /* Support Files */, + ); + name = FLAnimatedImage; + path = FLAnimatedImage; + sourceTree = ""; + }; + 83190A88E8E738BE07B1966ADE3CB3CD /* Support Files */ = { + isa = PBXGroup; + children = ( + 03D72CC56F0CB2FCCB14E1335C16D41B /* MBProgressHUD.modulemap */, + D0B5D7F39DA4B830F1B68A7D9273B85E /* MBProgressHUD-dummy.m */, + FBDB01F2E84A23710184B78970DFEA2D /* MBProgressHUD-Info.plist */, + AE6F296D300159E8673214D526F10584 /* MBProgressHUD-prefix.pch */, + F2AA502A31D7ACB4F28AAE65C3561F31 /* MBProgressHUD-umbrella.h */, + B0B0D3A4B05EE4A8AA2F56AF68EA3ADF /* MBProgressHUD.debug.xcconfig */, + 2B7A32CBCCAE8AB83DA3CB95667709E3 /* MBProgressHUD.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/Bugly"; + path = "../Target Support Files/MBProgressHUD"; sourceTree = ""; }; - 9382AEACA68D989C1D0DAAEF2AA110DB /* Resources */ = { + 8603C039C3D467BEBEE7AC050DDF9435 /* Frameworks */ = { isa = PBXGroup; children = ( - 62640F732378D5BF961D278A8E714FEC /* PrivacyInfo.xcprivacy */, + 4489DCEC1C15912F15C69BF8BADBDA34 /* Bugly.framework */, ); - name = Resources; + name = Frameworks; sourceTree = ""; }; - 9E1956AE0271229C1F82B31B48A1BA2C /* Products */ = { + 89D6BC06C1AD7B6FFF6982A03286C710 /* AFNetworking */ = { + isa = PBXGroup; + children = ( + 654D22CCA8871E0E0A65AB7C50503EB4 /* AFNetworking.h */, + 1F9EEB6CC879BACDBC385C6DBC24F7C9 /* NSURLSession */, + 0C71559E9A729C5B047179B43CABC936 /* Reachability */, + E2525B53F604A89BD6A5BEF73F8706C4 /* Security */, + 63BB31835B8FFB4B51867F68F6F0E87F /* Serialization */, + B1A7537FAC93AE6E20D10C11AA2DD270 /* Support Files */, + C70568B567541D2FA725A12B29BD1DF7 /* UIKit */, + ); + name = AFNetworking; + path = AFNetworking; + sourceTree = ""; + }; + 92804E5AAC2424AC0EE6ED237A2C4B6F /* Products */ = { isa = PBXGroup; children = ( A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */, @@ -2059,6 +2070,8 @@ FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */, 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */, 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */, + 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */, + DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */, 1FFED36A657123030ABB700256D73F15 /* Masonry */, 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */, 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */, @@ -2073,6 +2086,33 @@ name = Products; sourceTree = ""; }; + 9417EBD2D308B63C380DB7DDBB4539BC /* DZNEmptyDataSet */ = { + isa = PBXGroup; + children = ( + 5AD771C5136CD5549FAE44B9E4C2DFD2 /* UIScrollView+EmptyDataSet.h */, + 6AB2A681F27544128FA8BFDF04B2B4BB /* UIScrollView+EmptyDataSet.m */, + C849337A62646C28DD26BB58FA313018 /* Support Files */, + ); + name = DZNEmptyDataSet; + path = DZNEmptyDataSet; + sourceTree = ""; + }; + 96DE1775CF064EDD1FBB4071547380B9 /* Support Files */ = { + isa = PBXGroup; + children = ( + 58F1F1A0BBD025ADF47D37EB3545A1EA /* MJExtension.modulemap */, + F7A5B6B4FC335FF159BAE91EDDEC3320 /* MJExtension-dummy.m */, + 4B01E4A62621F02DCAF2B380FECD12A8 /* MJExtension-Info.plist */, + 75F935C6D49A90EF2E215985C8EBF76F /* MJExtension-prefix.pch */, + 2ACD4F15622D5B40EA4047FEA329658B /* MJExtension-umbrella.h */, + 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */, + 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */, + DDA24856F33C6E655A624699241CFD6D /* ResourceBundle-MJExtension-MJExtension-Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/MJExtension"; + sourceTree = ""; + }; A55E2B2247987FBEC60B3A5F75016BFF /* iOS */ = { isa = PBXGroup; children = ( @@ -2085,90 +2125,60 @@ name = iOS; sourceTree = ""; }; - A56EEB83F090D2B191CD05E50C8A32BD /* AFNetworking */ = { + AABD58CAE3AC5D0D8560E01BA94341F0 /* Support Files */ = { isa = PBXGroup; children = ( - E69955CA9C7B2AA324E3704014745EDF /* AFNetworking.h */, - B09401D6129FEBB97201B6ABDA5724FA /* NSURLSession */, - D37E8DC962E413DE1E613C70A1655127 /* Reachability */, - C90F605C12117A2A24F6BE07FC25F2A6 /* Security */, - 253FE6C203FBC03CF9639A4DBFC761C7 /* Serialization */, - BCA604A91654F989BFB49BA3FB647577 /* Support Files */, - D109E43F6791D67DE5998264DF3E56B3 /* UIKit */, + 04FCA007C5BE63FC5541B26878E3DE79 /* HWPanModal.modulemap */, + 13066DF230EEB3642E5BD7E5097A64F9 /* HWPanModal-dummy.m */, + 2334F40DFDB1BAD377A3B71EE761F938 /* HWPanModal-Info.plist */, + A1A1675F7ED6C653EC09CB7ED0E5281E /* HWPanModal-prefix.pch */, + 5B1C14811A97739A8455D69D9EF8F1AA /* HWPanModal-umbrella.h */, + F2C18394D397CD373A1F089F0924F724 /* HWPanModal.debug.xcconfig */, + 779E8085B0101C4CB480F794DECA558B /* HWPanModal.release.xcconfig */, ); - name = AFNetworking; - path = AFNetworking; + name = "Support Files"; + path = "../Target Support Files/HWPanModal"; sourceTree = ""; }; - A9F9DF7E0CB3C0F72DAC0BD4A3A8E1E8 /* MJRefresh */ = { + AF98548CB9C337C748F2E8BB9B2CA20B /* Bugly */ = { isa = PBXGroup; children = ( - CD81B3BC38825A465F08F0A7FF6B6D56 /* MJRefresh.h */, - 04473A3692FBECA15A32A1C477843F8E /* MJRefreshAutoFooter.h */, - 8F13ED159399F9081ED4E0855D985B3B /* MJRefreshAutoFooter.m */, - C0271A933F5E2DB9D6CC456E988103D1 /* MJRefreshAutoGifFooter.h */, - DF51D23D1444310275D4BB68151F1F60 /* MJRefreshAutoGifFooter.m */, - 61AF436FD61695046BC4D5C853E7CA45 /* MJRefreshAutoNormalFooter.h */, - D78DFC477962A207938C611AE0ACA069 /* MJRefreshAutoNormalFooter.m */, - D74882C4484074AC8872B2A5E438246B /* MJRefreshAutoStateFooter.h */, - A2B45634336BCC349F04126A0EE780B0 /* MJRefreshAutoStateFooter.m */, - 7EABFACBAFD45BC8FA955F5004A0F3F6 /* MJRefreshBackFooter.h */, - 464A4EBDD6079658F375B8BE36A1D224 /* MJRefreshBackFooter.m */, - 4199B5EF9E6D97F0A19FE7422D28A2C6 /* MJRefreshBackGifFooter.h */, - 2ED81178D3D980B0132BE071541BDB51 /* MJRefreshBackGifFooter.m */, - EB89406A9E055C08A7A24CF01C851841 /* MJRefreshBackNormalFooter.h */, - DC6B018BDEA17A60716B1E4180015BC9 /* MJRefreshBackNormalFooter.m */, - F9A2F41CFB36F97D9E0F592411A2F9F1 /* MJRefreshBackStateFooter.h */, - E0854CBF8370AAF7A642A9BE65EA9C79 /* MJRefreshBackStateFooter.m */, - F23E87D1922F53403D673679FAA023CF /* MJRefreshComponent.h */, - C20D9185B54011BBE67FAA2FE147DA10 /* MJRefreshComponent.m */, - 3D16809394CD346845FFB0C9977242B2 /* MJRefreshConfig.h */, - C247A1884F6D32D3F8E2A80759806E33 /* MJRefreshConfig.m */, - 87404200573C5C261B9C829573DF05E9 /* MJRefreshConst.h */, - 2A121A2B21BED90763E2301622A040E4 /* MJRefreshConst.m */, - D8F23CA3052D23EB11B0A898DB4A6E40 /* MJRefreshFooter.h */, - 294EA02B3DDDD7B2B6A77AAC9B06FAE2 /* MJRefreshFooter.m */, - C7C888B99007AD057195C9956BE40388 /* MJRefreshGifHeader.h */, - 168B21798FA2C6BC6767C95E619EFE04 /* MJRefreshGifHeader.m */, - DDF616B9EC8DE21E9AA84880DC51A9CA /* MJRefreshHeader.h */, - DF05C447154DF7BE7ECB7AE07BF863D4 /* MJRefreshHeader.m */, - 64C4273F666802A12C990C543C5413E3 /* MJRefreshNormalHeader.h */, - 3421F5C836952B09AC7AF130FB3D09FC /* MJRefreshNormalHeader.m */, - 6259B042D1D6480734439FF381E14C2B /* MJRefreshNormalTrailer.h */, - 82D7BEE16249F72113581170F4B17105 /* MJRefreshNormalTrailer.m */, - CDBA0F660CF6947CF53C5863681817AB /* MJRefreshStateHeader.h */, - D9713BA6BE14577AE57300E3DD702FD7 /* MJRefreshStateHeader.m */, - 3A4EE28576256BE0B9CC54DFE985D554 /* MJRefreshStateTrailer.h */, - E089B74E2F4B50357B63BC6069272B9D /* MJRefreshStateTrailer.m */, - D1B006E7B08941CF8A2C5843A8B9C99A /* MJRefreshTrailer.h */, - AE579277DE642E9E1019F6392CE1755F /* MJRefreshTrailer.m */, - 43C608DEC890D79C4A758B248B1B7D6E /* NSBundle+MJRefresh.h */, - C0E3D0083F73A4B9E51802D71E12B6D5 /* NSBundle+MJRefresh.m */, - 2867F87918EED9920AE77DAD4BD451AB /* UICollectionViewLayout+MJRefresh.h */, - 140C8B875FF37FDF9A95CB04C9916AF9 /* UICollectionViewLayout+MJRefresh.m */, - 3FA20784164A5FF07C29C2829918C6B8 /* UIScrollView+MJExtension.h */, - B32295E122B71520322E84A41C7EE15B /* UIScrollView+MJExtension.m */, - F1ED191A53A707D9518B3082C0464066 /* UIScrollView+MJRefresh.h */, - D0E66BF426F9E82A8E7F4F5630A42386 /* UIScrollView+MJRefresh.m */, - 7A2B32A1AC63C6D1AF5B5467A6CEC75F /* UIView+MJExtension.h */, - D3C9A4D4BA6E0F5E50F5993BD82CF6E6 /* UIView+MJExtension.m */, - 12EBE327D35A47F2F18FE64995DA4378 /* Resources */, - 22BD1B8E40EAA479D200D4E018A1B387 /* Support Files */, + 8603C039C3D467BEBEE7AC050DDF9435 /* Frameworks */, + 16966B46BC1DE37AE221B0FB44232D79 /* Support Files */, ); - name = MJRefresh; - path = MJRefresh; + name = Bugly; + path = Bugly; sourceTree = ""; }; - B09401D6129FEBB97201B6ABDA5724FA /* NSURLSession */ = { + B1A7537FAC93AE6E20D10C11AA2DD270 /* Support Files */ = { isa = PBXGroup; children = ( - 666595C8EDD80B06B88241CFA60BC1D4 /* AFCompatibilityMacros.h */, - 80F7F70AB42196BE2ECAE3F75289F5CC /* AFHTTPSessionManager.h */, - CE31F60CA05A2FFF39BB47897CB17219 /* AFHTTPSessionManager.m */, - 3B8FA55B1E865165B6CFF4ADBBDE19C4 /* AFURLSessionManager.h */, - 913734C0E85A7287F025E327629CA7FC /* AFURLSessionManager.m */, + 9B6321B292B6BCA48E9BD6268BB60C34 /* AFNetworking.modulemap */, + 1CF307ACF82B2962F9E48DD0D029690F /* AFNetworking-dummy.m */, + C6B393724F3296B6116FF029FBA74D60 /* AFNetworking-Info.plist */, + 0CCA79288E187B2D3860B6A703D2D460 /* AFNetworking-prefix.pch */, + 2CA3017C0C359C5E90091B685A3A59EE /* AFNetworking-umbrella.h */, + 9118BCB61472BB3349D3BC26BBAA9EE0 /* AFNetworking.debug.xcconfig */, + 42D65971D9F40DBD6785D6A1D0AEBFBD /* AFNetworking.release.xcconfig */, ); - name = NSURLSession; + name = "Support Files"; + path = "../Target Support Files/AFNetworking"; + sourceTree = ""; + }; + B739A483873A111E644B8250F33F752D /* Support Files */ = { + isa = PBXGroup; + children = ( + 45AD4A83CCB38F4F8C699AACEC09A405 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */, + 2520B86D707FEED91E8300C772989308 /* SDWebImage.modulemap */, + 244BBBE37C5D845F2BB8EAFBE6D12DE5 /* SDWebImage-dummy.m */, + A6B7C52A59144554A5C4CCBAF9A65AC8 /* SDWebImage-Info.plist */, + C77A046F5E5912D1BF11BAA897F3C198 /* SDWebImage-prefix.pch */, + 6407DC7FD67C9C74E0C3BA6B778AE0CD /* SDWebImage-umbrella.h */, + 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */, + 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SDWebImage"; sourceTree = ""; }; B94D7768568A9992200DB461E8CF687F /* Frameworks */ = { @@ -2179,28 +2189,95 @@ name = Frameworks; sourceTree = ""; }; - BCA604A91654F989BFB49BA3FB647577 /* Support Files */ = { + BE86B84F4BC9982281F5D2A106314CE2 /* Support Files */ = { isa = PBXGroup; children = ( - 0A7EA19F3D14069449EA7F1B04E206C1 /* AFNetworking.modulemap */, - 8B00C7E369E9AC7974F4EC937246BBA4 /* AFNetworking-dummy.m */, - DBA1D9F210D421679049394348DAE50E /* AFNetworking-Info.plist */, - 9AC629B4407B73FD1B84C0611D1E18CE /* AFNetworking-prefix.pch */, - 52498B1644296C61B2FE7621C339AC58 /* AFNetworking-umbrella.h */, - 6E7FB45CA71B8CA83A3493DEA84881AB /* AFNetworking.debug.xcconfig */, - 3A8B099A5081203885BD7E80C8282B95 /* AFNetworking.release.xcconfig */, + BAF401BA2295E570793228F6E0B37E3F /* MJRefresh.modulemap */, + 882CA8EEAEB3525FB7AD66F6FFC2CF6A /* MJRefresh-dummy.m */, + B21F4D087C3795EA326FE588C03028CC /* MJRefresh-Info.plist */, + A923EA60F7DA10F8B88FCD5E16702406 /* MJRefresh-prefix.pch */, + 63277FA9AFB139990459DF6C57B238F5 /* MJRefresh-umbrella.h */, + 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */, + 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */, + DF4516C3B5E735B563E9749DFA6BCB51 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/AFNetworking"; + path = "../Target Support Files/MJRefresh"; sourceTree = ""; }; - C90F605C12117A2A24F6BE07FC25F2A6 /* Security */ = { + C5357083C92AA1ED2F84EF8CC6743655 /* Masonry */ = { isa = PBXGroup; children = ( - 441DC5BA33205114F293CCFD73DE308D /* AFSecurityPolicy.h */, - C93CA5E20848AEFCB61E12D54CCA6ADF /* AFSecurityPolicy.m */, + 00F09038ADB7D3ACE57173DD781066A5 /* MASCompositeConstraint.h */, + F738F2BE3FA2AD49A9764CC72FDBAFB2 /* MASCompositeConstraint.m */, + 44DDF1AA5625A95CA1C76B7546758226 /* MASConstraint.h */, + 1ADF5834236B788D4ADA4E85DBD68395 /* MASConstraint.m */, + 3D2A884E58C9EFE4F57508CA7855F449 /* MASConstraint+Private.h */, + D7117B22CB4967C93BC27DD5B1BA9865 /* MASConstraintMaker.h */, + 8FBE26B2A8BA76D5AA3E371D3CA2EAE6 /* MASConstraintMaker.m */, + 2C6B8E558F2970AA962D063345B79D19 /* MASLayoutConstraint.h */, + 82512BA24900AE369D9A35A08C7187CC /* MASLayoutConstraint.m */, + FE45E33A4A0C09CD0EBB222B7E40EE72 /* Masonry.h */, + 996E03E4CC36DB69F10AD9C8F02472C6 /* MASUtilities.h */, + 5593F84C8F2583B27ACE6E149D4B8B0E /* MASViewAttribute.h */, + 051A3BFDC2997068DD4E7A11FEBAE63E /* MASViewAttribute.m */, + 5A03E64C6033C8C1C7D8822CDE785EEB /* MASViewConstraint.h */, + B12BB85356FB25DB1C8CA459600D3F8E /* MASViewConstraint.m */, + 14454326E9CB6046C0CA3ABA3A33F187 /* NSArray+MASAdditions.h */, + FD16DAAD0E6C1AF6207145BC463DF81D /* NSArray+MASAdditions.m */, + B71D1DE227720C6548D26CB1380A595F /* NSArray+MASShorthandAdditions.h */, + 9005237D68B29ED337A382B01C2917F8 /* NSLayoutConstraint+MASDebugAdditions.h */, + 361FBE2595D99942EB88F5C0D34EB2DA /* NSLayoutConstraint+MASDebugAdditions.m */, + A732383A60ACA7498BD810AAC8E31192 /* View+MASAdditions.h */, + 7CF635A9AE952B4C70F06837B227DDCC /* View+MASAdditions.m */, + 2019C0149E4FA95B56F04C424C11298A /* View+MASShorthandAdditions.h */, + 5973F7F7FB04C5938E91F05D46F22B54 /* ViewController+MASAdditions.h */, + FD22D0365334ED54585130432CEF0912 /* ViewController+MASAdditions.m */, + 755B3574C116B6B21DA3F9684A3E744A /* Support Files */, ); - name = Security; + name = Masonry; + path = Masonry; + sourceTree = ""; + }; + C70568B567541D2FA725A12B29BD1DF7 /* UIKit */ = { + isa = PBXGroup; + children = ( + AB771D1A9F6BE6B15418DB387EE5ADF3 /* AFAutoPurgingImageCache.h */, + 352F171C72D103D96370080978C50788 /* AFAutoPurgingImageCache.m */, + EF6748BE01C63A0BA85DC20DBF82AD80 /* AFImageDownloader.h */, + B1ABBFCC8D2F6B393D3F4389129E97F5 /* AFImageDownloader.m */, + A0368DACE23383F23784ADE51EC66773 /* AFNetworkActivityIndicatorManager.h */, + F0CB265D0463DC2290A542EFCE210632 /* AFNetworkActivityIndicatorManager.m */, + E382492BA0D4E5C9BEF289F10F029CAA /* UIActivityIndicatorView+AFNetworking.h */, + 37526D876665DA3E019DF167F09B21F4 /* UIActivityIndicatorView+AFNetworking.m */, + C8667A6D81C45427108730E481B7134F /* UIButton+AFNetworking.h */, + 77A510DEE4CCFDB66B19F133A209CDF3 /* UIButton+AFNetworking.m */, + 09060CD8F1658C398DC40CC0221DB178 /* UIImageView+AFNetworking.h */, + 6EFC403B9948A5A5D2DC7D8B3D9188A9 /* UIImageView+AFNetworking.m */, + 17E50DA329E2F435CC41C2257BD0C866 /* UIKit+AFNetworking.h */, + DA7F2EDBF237046CD345C29806E0A756 /* UIProgressView+AFNetworking.h */, + FA56E3002035BE556C5ED858D43F49DD /* UIProgressView+AFNetworking.m */, + 01CCBFAC5118E8E6A44DA067EF8F2523 /* UIRefreshControl+AFNetworking.h */, + A0FE1EF8C4E4226EA31F342E982E620B /* UIRefreshControl+AFNetworking.m */, + FC504494ABD0D1144D620FD1501F0E00 /* WKWebView+AFNetworking.h */, + E8284A1808A9A014FA6F2F4E23F36835 /* WKWebView+AFNetworking.m */, + ); + name = UIKit; + sourceTree = ""; + }; + C849337A62646C28DD26BB58FA313018 /* Support Files */ = { + isa = PBXGroup; + children = ( + 99462BD5694E37EA26675903E46200AD /* DZNEmptyDataSet.modulemap */, + 979F4BB7A6CE1AF72F02D7E7F5EC0D7F /* DZNEmptyDataSet-dummy.m */, + 2EE28E5F80B5EB3B89F864114E429417 /* DZNEmptyDataSet-Info.plist */, + C7CA2BC79CB47B27F4A1481476747F49 /* DZNEmptyDataSet-prefix.pch */, + 972173A04BB5350B482CEE39EFFBE0EF /* DZNEmptyDataSet-umbrella.h */, + 1FABCE7CC795C2D70EA3AAEE06EDD595 /* DZNEmptyDataSet.debug.xcconfig */, + 1FABA21668D0F7EA5314EF00C93346A5 /* DZNEmptyDataSet.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/DZNEmptyDataSet"; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -2208,105 +2285,45 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, B94D7768568A9992200DB461E8CF687F /* Frameworks */, - 1F3B1AE789621929A19F036CE8E0A834 /* Pods */, - 9E1956AE0271229C1F82B31B48A1BA2C /* Products */, + 575B9A37FCA1D986BF2159F1DC5640CC /* Pods */, + 92804E5AAC2424AC0EE6ED237A2C4B6F /* Products */, F7ED90CD818DD0484BF7DB0E1E3B9AB2 /* Targets Support Files */, ); sourceTree = ""; }; - D109E43F6791D67DE5998264DF3E56B3 /* UIKit */ = { + DDE3584A435E1B64AD756057D19173E3 /* Support Files */ = { isa = PBXGroup; children = ( - BF0595213FCD9D5150FF374A286E2BC6 /* AFAutoPurgingImageCache.h */, - A691E14C36224248BF2A3ECF785CAD95 /* AFAutoPurgingImageCache.m */, - 96090B4F5197A5FD0B3684BBF9CE7D69 /* AFImageDownloader.h */, - 3EBA537DA26B64728CA51AC60E7A2FB3 /* AFImageDownloader.m */, - 921FDF9A7596A9183FFD281EEBC18B9D /* AFNetworkActivityIndicatorManager.h */, - 543E7F5FC6CF2C3049F7A173BFB53AFD /* AFNetworkActivityIndicatorManager.m */, - FE0FBCD7807A33AEB43D358FAF90A586 /* UIActivityIndicatorView+AFNetworking.h */, - D9BBE6A2F399A988F5BC26DB0D0BF68C /* UIActivityIndicatorView+AFNetworking.m */, - F46251B17D3526E25AB9571283064201 /* UIButton+AFNetworking.h */, - E448066D92C481C253D5FA5FC624A0D8 /* UIButton+AFNetworking.m */, - A79588184FF24FC5EB3FA3987629C30B /* UIImageView+AFNetworking.h */, - E66397BB19318C841897657B7D33195C /* UIImageView+AFNetworking.m */, - 2E5ECA77AE05E0692E3C292A2212CC73 /* UIKit+AFNetworking.h */, - A137B039D2A317E540FA6772AEB9D840 /* UIProgressView+AFNetworking.h */, - 0B52C0333B4CADD3A0F9EB411374E73E /* UIProgressView+AFNetworking.m */, - EAAB3A74BE098DF24548F19631ED1ECA /* UIRefreshControl+AFNetworking.h */, - 316C4F93113E10BD19E7CE1F7E80F60B /* UIRefreshControl+AFNetworking.m */, - 35BFDB837A13ECB08D0555099C8AE732 /* WKWebView+AFNetworking.h */, - DF251712BA063E8344D1B1CDB785B3C8 /* WKWebView+AFNetworking.m */, - ); - name = UIKit; - sourceTree = ""; - }; - D37E8DC962E413DE1E613C70A1655127 /* Reachability */ = { - isa = PBXGroup; - children = ( - D881DD0CA33CD1E3EFE0136A615F1F65 /* AFNetworkReachabilityManager.h */, - F1D4E5D74AB2CB580743562EDDD74A4B /* AFNetworkReachabilityManager.m */, - ); - name = Reachability; - sourceTree = ""; - }; - D6F7289C9B55F9C4E96A212D2BDD1163 /* Support Files */ = { - isa = PBXGroup; - children = ( - A183E865565BA2B1F53CD0924621E410 /* FLAnimatedImage.modulemap */, - BCB715803528E46AB9661E7F8A956D85 /* FLAnimatedImage-dummy.m */, - 4E443FB99E1E01CD79DABE37EB302AFE /* FLAnimatedImage-Info.plist */, - 0148667426C0D159DF2496AD2E147C13 /* FLAnimatedImage-prefix.pch */, - 058E0E64069CAF10E824026FF1D35605 /* FLAnimatedImage-umbrella.h */, - B87A76839C6A92DD597AFD764D90E24D /* FLAnimatedImage.debug.xcconfig */, - 970ACBBC888D1BD4521806C0B268E7C6 /* FLAnimatedImage.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/FLAnimatedImage"; - sourceTree = ""; - }; - D9F07D6F2272135B5E1B7D613E619612 /* Support Files */ = { - isa = PBXGroup; - children = ( - 6A16069144EAF75D991A4D06E3632B2B /* MBProgressHUD.modulemap */, - AABD4B7A1454CA80B386AD36AEFEB5A7 /* MBProgressHUD-dummy.m */, - 26F9036CA269CB4FF5BD96290F567C79 /* MBProgressHUD-Info.plist */, - CDF036FAEDB3424A0B63A3F64C926C94 /* MBProgressHUD-prefix.pch */, - EB1751B89D4AAC72FB84E06877E9092A /* MBProgressHUD-umbrella.h */, - 550192267AB5C328829C08C69A3B04BC /* MBProgressHUD.debug.xcconfig */, - 27D20C78C9DF6C2E5537332D5CBE55ED /* MBProgressHUD.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/MBProgressHUD"; - sourceTree = ""; - }; - E911B99C127EE9BCD74DF2829FDF7E50 /* FLAnimatedImage */ = { - isa = PBXGroup; - children = ( - 172CDF64113E561EE805F3B18B58DE98 /* FLAnimatedImage.h */, - E1A7A8B90EB2B4D833CF1D550EC9FB29 /* FLAnimatedImage.m */, - 9CD6AE0C7A2E208FF93567A99374869B /* FLAnimatedImageView.h */, - 4A049DB74A9BEE7FA98C208416BBDD60 /* FLAnimatedImageView.m */, - D6F7289C9B55F9C4E96A212D2BDD1163 /* Support Files */, - ); - name = FLAnimatedImage; - path = FLAnimatedImage; - sourceTree = ""; - }; - F70CAA8D03120C833BBEE4DBB0DC6756 /* Support Files */ = { - isa = PBXGroup; - children = ( - E8553D3C121BDD2352FF757D8EC709D3 /* LookinServer.modulemap */, - 701BFF6738F7EE5632E59657442BD101 /* LookinServer-dummy.m */, - D002C48E491E43551029CCF47FC83441 /* LookinServer-Info.plist */, - 793514345B8D9E3CC0E86E9AA48547A2 /* LookinServer-prefix.pch */, - D1EC76CFF0744C55D60E83B26DB4807B /* LookinServer-umbrella.h */, - F915BA2B3AE80D1E58F67A45AB3B3D68 /* LookinServer.debug.xcconfig */, - B5D946A76BE7958D130628335233FAE2 /* LookinServer.release.xcconfig */, + D2892265E5746B87D5D6CDB4D0215238 /* LookinServer.modulemap */, + 802213010DCF77864E95B3A910F64EA0 /* LookinServer-dummy.m */, + 43936D8CC7E56B4026AF09D6B9E1B1BD /* LookinServer-Info.plist */, + 5EF9433AE70A3B3667F4B208CC88432A /* LookinServer-prefix.pch */, + 96AA5B4DE9A3DA12F53F6CB5D9AC99E2 /* LookinServer-umbrella.h */, + EA60319FCBE8ADFF00A52058DBE7C157 /* LookinServer.debug.xcconfig */, + 506D2884030F20EC06A10DCFA7347584 /* LookinServer.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/LookinServer"; sourceTree = ""; }; + E2525B53F604A89BD6A5BEF73F8706C4 /* Security */ = { + isa = PBXGroup; + children = ( + 68BFCD31885FD8664001BB1EFAC74751 /* AFSecurityPolicy.h */, + ED1DD2A27A7141151DAB033BD707A1EF /* AFSecurityPolicy.m */, + ); + name = Security; + sourceTree = ""; + }; + F714764FE1C9470C450626D766B18CA6 /* Resources */ = { + isa = PBXGroup; + children = ( + 4056B0FA7CFCA3F0B3BA1F921297B1CC /* MJRefresh.bundle */, + 28D5D9D40BE7D9F76DB8A620D92D6F6C /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; F7ED90CD818DD0484BF7DB0E1E3B9AB2 /* Targets Support Files */ = { isa = PBXGroup; children = ( @@ -2316,40 +2333,173 @@ name = "Targets Support Files"; sourceTree = ""; }; - FE95D05051075F9F0FE638F52D59284B /* MJExtension */ = { + F83577C0BD1D647CC9CF750D800647CB /* Core */ = { isa = PBXGroup; children = ( - 5FE7A440D01806C72477C1AA0213B946 /* MJExtension.h */, - AC49732B3E41F8772AD10362943A8A97 /* MJExtensionConst.h */, - 790F5BF1A1AB8405DB8FFB5F37D2BA39 /* MJExtensionConst.m */, - 857DB28ACD58B6F0687A1A566D8C2BF1 /* MJFoundation.h */, - 92A1420483F3DAE0607CA7ECEA495C73 /* MJFoundation.m */, - A8E79B2B03D4382C825BD72257BE4101 /* MJProperty.h */, - 5F66416F5FCB58B94BA9CC403B8A778A /* MJProperty.m */, - 145C211EEEAD63D4C0AE8467C821D14F /* MJPropertyKey.h */, - 0371541F4560714A85B237456DEF997B /* MJPropertyKey.m */, - 72E3A740C48B1DF278C345CEB59A5C99 /* MJPropertyType.h */, - C02274A03EA3977CCD31F6436223F923 /* MJPropertyType.m */, - 2BC84A9FA2E5E086A3FCA8C9200491EA /* NSObject+MJClass.h */, - 4BA81BE20AFB7AAED21EEC5D091FF489 /* NSObject+MJClass.m */, - 5A5852584225D29AAB47BA31F0AC9415 /* NSObject+MJCoding.h */, - 8B07F3D2B3B3299BF5A32A4ED4D06683 /* NSObject+MJCoding.m */, - F7095CB50DC7675B616D3B2DAB4F0188 /* NSObject+MJKeyValue.h */, - 38D9966C1D90F995E284375B1712E8FB /* NSObject+MJKeyValue.m */, - 92E26B1FB2A3B34BF0C4C43A02D2EB58 /* NSObject+MJProperty.h */, - 85703DD6475DDAF90847B3E1C0DC9738 /* NSObject+MJProperty.m */, - A60394A4E8FFC5CBCC2FD14258C5085A /* NSString+MJExtension.h */, - D2A792CB950AB99663B25C1BE2C0853A /* NSString+MJExtension.m */, - 9382AEACA68D989C1D0DAAEF2AA110DB /* Resources */, - 5DBA2FE1A0B71A23FCB50AB66BEDCF44 /* Support Files */, + A187D3CE401AEF4272748BA58A834812 /* NSBezierPath+SDRoundedCorners.h */, + 63746C791045958FEE981F032ACCAECE /* NSBezierPath+SDRoundedCorners.m */, + 01B6539E05000228B7BBD9BA57EDF5E3 /* NSButton+WebCache.h */, + DEA09040DACD7A53B041773DD59096FC /* NSButton+WebCache.m */, + 107D93AEC1E186A8F21341BFB523B22C /* NSData+ImageContentType.h */, + AE9EAD92339D5CAFE9DD672B7A3B6E7D /* NSData+ImageContentType.m */, + 1EFEA57CFC8959BF5EF4B795BD808107 /* NSImage+Compatibility.h */, + 9BC9B980A57804E48A923737AE36ACB0 /* NSImage+Compatibility.m */, + 086D3945C39C8554602424E64D1A9F0B /* SDAnimatedImage.h */, + F24C826B62D5E083C9293F7721C463C2 /* SDAnimatedImage.m */, + 6B130ACC8A24ECD0BF3BD07D5AF21E4D /* SDAnimatedImagePlayer.h */, + C82B001CD34AC553F11A55D1E576C902 /* SDAnimatedImagePlayer.m */, + 119E6680DBF287ACAD4F054AA0D5AE17 /* SDAnimatedImageRep.h */, + AB547BD41867170F26173D27CE44DCE6 /* SDAnimatedImageRep.m */, + 3E5C8F44BD62EB86605C88FA434E57ED /* SDAnimatedImageView.h */, + 17FD1B21DCC89D66865655294A85A817 /* SDAnimatedImageView.m */, + 5839F6C7ABFF6E515370151D7E470262 /* SDAnimatedImageView+WebCache.h */, + CE909BA066F9B44E9C2F036FF3FD44FE /* SDAnimatedImageView+WebCache.m */, + 2F61547B42B4881FB5D37EF93F1C324C /* SDAssociatedObject.h */, + 1DBD3AB6DB93D7C2BE4FB5D89E1938FD /* SDAssociatedObject.m */, + 776331A7467F397FCD02F62B233A6E93 /* SDAsyncBlockOperation.h */, + C7E35B5D53702D7A355AD38231170EAB /* SDAsyncBlockOperation.m */, + 9FC0CB167AF5751B03431E60D722046F /* SDCallbackQueue.h */, + 20E25456C8490BA5725AE87E9508AF07 /* SDCallbackQueue.m */, + 1D13B75999F5A8EF9D0BABA6DAF09179 /* SDDeviceHelper.h */, + 343301F4ECFA1778F70E1EC266C1848F /* SDDeviceHelper.m */, + D9FB07B277FA3212774D9D7EF2156759 /* SDDiskCache.h */, + 889630ECFAA2151C2C1F334458A5C110 /* SDDiskCache.m */, + AD1C2B98D240951DA7BD821093E6C395 /* SDDisplayLink.h */, + 110C7A39306E93E5D29F1709FE16720F /* SDDisplayLink.m */, + 622B25C415B746B0A4DE004201B6C241 /* SDFileAttributeHelper.h */, + 31BB750A026F77ECDF9EFB2711DEC741 /* SDFileAttributeHelper.m */, + 387AF8AF8500E50CC311582863B31CFF /* SDGraphicsImageRenderer.h */, + 4FA72F287E0DE573DD735BAE9AD7E816 /* SDGraphicsImageRenderer.m */, + BF5EC4E67D9695435096AE8FFF0726FA /* SDImageAPNGCoder.h */, + 9B9528B0058E986186BACF5E7A40A742 /* SDImageAPNGCoder.m */, + 84DD851B5FDE16625FA07D9C4D1622E4 /* SDImageAssetManager.h */, + CE8561E7F90B3736EA348E5236FECB1C /* SDImageAssetManager.m */, + C685758668AFAC91E0AE4675AEA80600 /* SDImageAWebPCoder.h */, + 3F3611B9193976C6AC5268E458B3F9F6 /* SDImageAWebPCoder.m */, + 3EDF0BD9574A366871EF5B3FBEFB906D /* SDImageCache.h */, + 6F98986A52AAB68B64127A983F8CB7D9 /* SDImageCache.m */, + 5F62EE3A88E154ADAC90DDF6BC60DFB6 /* SDImageCacheConfig.h */, + 9694A97A95DD31F14A6A155FCCFE7837 /* SDImageCacheConfig.m */, + AD7824F87B7A4AC0EB49B7B856736BF2 /* SDImageCacheDefine.h */, + BDC5D95848173A06A25E49216A4BEFDC /* SDImageCacheDefine.m */, + 023A9DE33A4A369492D910BE237BE415 /* SDImageCachesManager.h */, + 9C27FE20E006C874307EF5F2B30AA69E /* SDImageCachesManager.m */, + 79B0D13A04128B711BB3AFF0676EC3D0 /* SDImageCachesManagerOperation.h */, + 315C5770DCC0584893C24972BAEDEB39 /* SDImageCachesManagerOperation.m */, + 51B83EEE0D453B8B01D8275D3EEBF4BF /* SDImageCoder.h */, + A43798E6CE0478C1CA6ECFD6AE110593 /* SDImageCoder.m */, + B0023999B588A745D2530760778D09F9 /* SDImageCoderHelper.h */, + 069FA883A4FACC46317AB2BE1BDE30E4 /* SDImageCoderHelper.m */, + 9FDBCFE0DF35F1346C9E17295438B88A /* SDImageCodersManager.h */, + 5A9184E6EEBE4764FF941193DF28C44D /* SDImageCodersManager.m */, + 5F618581DFE1104C16FA02EB2B00F1B9 /* SDImageFrame.h */, + A8A5F422D3A80975E78C20D9980BBAE7 /* SDImageFrame.m */, + ABF08650352052DEA4797A89BFD856FF /* SDImageFramePool.h */, + 3F01F027ADEF8C49A4605D787E41BD1C /* SDImageFramePool.m */, + 31C99A570F5F1154C55309832EC47D0D /* SDImageGIFCoder.h */, + 37B5AAFF8675170D1D643B53FECA47E3 /* SDImageGIFCoder.m */, + 7F2363FB988E5DC9705FE22B29B7B4F8 /* SDImageGraphics.h */, + A4288DFF17DF27DEEB1590D7281FBBD7 /* SDImageGraphics.m */, + D2E3EA9E3A659E147112B9E7A63EEC56 /* SDImageHEICCoder.h */, + 7859E48715647D45C428FB82F31DB2BA /* SDImageHEICCoder.m */, + 71086CB516DC09CA5D29736469412558 /* SDImageIOAnimatedCoder.h */, + 741B32704926AB941D9209B2D37E2B8F /* SDImageIOAnimatedCoder.m */, + 9358338FB49CFCB7417D22C85E339488 /* SDImageIOAnimatedCoderInternal.h */, + 8A46088339E0DB93FCE586878F070297 /* SDImageIOCoder.h */, + F0F086732258C7153899AB5D8C678B02 /* SDImageIOCoder.m */, + A65F19FCE0D1235D1B87CDFD5146518C /* SDImageLoader.h */, + 2F3AD0011FB2CA087E42B18DDAD25253 /* SDImageLoader.m */, + 7FCA5CF6F4A026896316D8731B3E493F /* SDImageLoadersManager.h */, + 0C895614137416E86433C8E5EAF1D3CD /* SDImageLoadersManager.m */, + 524E9F65E894111FFD9563F30298E596 /* SDImageTransformer.h */, + 97C8222012D0B30C2E5C40B4867A1AAF /* SDImageTransformer.m */, + 8204B00622081F3C51B1FC2D83A2D0D0 /* SDInternalMacros.h */, + 56951EB060616356F951F35CBD9A6E42 /* SDInternalMacros.m */, + 584341F234CCB4128A1A3854A3371179 /* SDMemoryCache.h */, + 5CC308EFB0F9E5B050F606DDD3E7A44F /* SDMemoryCache.m */, + BC5A2383372F42B2452808A886E02C6B /* SDmetamacros.h */, + CC87F6E60998716F313AD85E3F2F0C78 /* SDWeakProxy.h */, + E2E3CFC89381BAE830E4045CE02E25EB /* SDWeakProxy.m */, + F6E7A6844647C14F0728CBB9EC73AF19 /* SDWebImage.h */, + 662D6F244CE3008639589EE4EA829B53 /* SDWebImageCacheKeyFilter.h */, + 8EDBEC1105ABEB5730250B28CB605E44 /* SDWebImageCacheKeyFilter.m */, + C84FAFE47B2E31104A515395A5239442 /* SDWebImageCacheSerializer.h */, + 360B7B34B46811D44994D83FAC09E663 /* SDWebImageCacheSerializer.m */, + 0E376CA03D27B523F7F180B9EC99BD7C /* SDWebImageCompat.h */, + BF559CBB24F4A49720F72A32ADDCCFE2 /* SDWebImageCompat.m */, + 1B4B2DB5DB2A6C79E9C1A5ABA6070B58 /* SDWebImageDefine.h */, + 2BAFAB49E37FE01E69DA8AF02F372885 /* SDWebImageDefine.m */, + D1995E5A7C78EB3AC4764F06A4A7E676 /* SDWebImageDownloader.h */, + 5703D16A54AB62E92D3E21CC6E5EA55B /* SDWebImageDownloader.m */, + 1B2F034522C4ACEB56FB7ECF5D3CDFDB /* SDWebImageDownloaderConfig.h */, + F27AC2454398D7EA8C514D5B2F6469EF /* SDWebImageDownloaderConfig.m */, + A34081EC91EFEC16FB92BEE1A470458E /* SDWebImageDownloaderDecryptor.h */, + 3663272D41C8B58200506DDA7E7A2903 /* SDWebImageDownloaderDecryptor.m */, + 2D7205061D92FA9AEDA20BCF1B6FF9B7 /* SDWebImageDownloaderOperation.h */, + C4D31F6949E2640BBC06F6F5E862EA6B /* SDWebImageDownloaderOperation.m */, + 0E350DE3AE3DE0F5FC5BD9A2EB159387 /* SDWebImageDownloaderRequestModifier.h */, + 23518377A93659DE7C8E586309E28896 /* SDWebImageDownloaderRequestModifier.m */, + FB689A278C80C26E3B3E80EDA3887106 /* SDWebImageDownloaderResponseModifier.h */, + FB095F0736BB4D6DAB423B110675CCD9 /* SDWebImageDownloaderResponseModifier.m */, + 4A980D9B3DB04133A466725A1C6C22F8 /* SDWebImageError.h */, + 70D5B55A578973F4D162548B46979D49 /* SDWebImageError.m */, + C657F16F9FE7919D2B27F05D611C2F2D /* SDWebImageIndicator.h */, + 37B6B4596E25AE5CE5BE1FE14A6AF93B /* SDWebImageIndicator.m */, + 875E237862F4488FBFC692D1AB2DBB91 /* SDWebImageManager.h */, + 92B30D23B01D493E996B4DF061CC3062 /* SDWebImageManager.m */, + DE5FC1FDACC1A466A889091A6DD9D1B4 /* SDWebImageOperation.h */, + E41E643057B645A4E6C5FEA5E52213CB /* SDWebImageOperation.m */, + 9C6E20B7CDAEE04E340BBA081726D5AC /* SDWebImageOptionsProcessor.h */, + 56BB70CC7870B5212EFAD74AF8199F17 /* SDWebImageOptionsProcessor.m */, + B8F37F4AA285AB6E2540A4063D8B802F /* SDWebImagePrefetcher.h */, + 237D10385C2D9391B809DFD74B21A570 /* SDWebImagePrefetcher.m */, + 057F1DBD0EB25FF8CA833DC6F478BF32 /* SDWebImageTransition.h */, + C930EDADB5661C1F591CA4E0A60BCA26 /* SDWebImageTransition.m */, + 1458CC53A93F0D10D4564ECD3E1C2D28 /* SDWebImageTransitionInternal.h */, + 16276D593D3F4D227902AF3A1424A4AC /* UIButton+WebCache.h */, + EEE26007FA20AE54DB39973E3D1D76FF /* UIButton+WebCache.m */, + D5D847654327E7F1E333D40CD9665067 /* UIColor+SDHexString.h */, + 5F9D4F9A4CA404E7287B2F6CBFF382D1 /* UIColor+SDHexString.m */, + 67D554550B250775795416CCAF8BD370 /* UIImage+ExtendedCacheData.h */, + 16A00EF4CD873ABB9D94776FACC7C92F /* UIImage+ExtendedCacheData.m */, + 4D8DA2BACDEA7D78265D10D62F7A3BF7 /* UIImage+ForceDecode.h */, + 8C63EE1B9AB32B647D64489A498987B3 /* UIImage+ForceDecode.m */, + B2770F360CD876399FE83C30619DBC24 /* UIImage+GIF.h */, + 51E9651B0CFE7B40336ABD29412D3C39 /* UIImage+GIF.m */, + E6EDBB7EFC23401D50E3438EB3430A58 /* UIImage+MemoryCacheCost.h */, + 4F3DBAC2BF3E2D408BCB049042B8B067 /* UIImage+MemoryCacheCost.m */, + 3BE50AD720E95B8938AAE668F71561B7 /* UIImage+Metadata.h */, + 610BD8934663142C5DDE2AF00042FD13 /* UIImage+Metadata.m */, + 88C23FF116C3257A27A26A897D5AE6DB /* UIImage+MultiFormat.h */, + 452B8DD5CBF29E80E794E957D7ACEE0F /* UIImage+MultiFormat.m */, + 8B8786CBA6B78647E486B3CA129F2DAD /* UIImage+Transform.h */, + 95F5264D9ED9939AE536B5201D80DB5E /* UIImage+Transform.m */, + 29D938D1AE315B5A7E490702D4DBEED7 /* UIImageView+HighlightedWebCache.h */, + 3F6EA8BCC592FC8C87F6AB86D1783731 /* UIImageView+HighlightedWebCache.m */, + 817B07C3E952A5A5F2082BE15C3C500E /* UIImageView+WebCache.h */, + CE1FC58856D64F439A2DB39A5CBEAF01 /* UIImageView+WebCache.m */, + A0C23E787A5997AF276176CBB988D241 /* UIView+WebCache.h */, + AFC953B00F77A76AF38E0FA2C8AB5F03 /* UIView+WebCache.m */, + 8166AA98A11AE7F3F46DBF2C481F6DF5 /* UIView+WebCacheOperation.h */, + EA5F1011035F011FF8DB93B55405B76E /* UIView+WebCacheOperation.m */, + B354D25F9AAB5A1E64BA7AAED1BA9991 /* UIView+WebCacheState.h */, + EF5BED7A35D904E495E540434D07B398 /* UIView+WebCacheState.m */, + 47E1BAF577BBA403FE7B999A122D3E59 /* Resources */, ); - name = MJExtension; - path = MJExtension; + name = Core; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ + 08C9EEFC6E73AD5D05604531B118C3C4 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 5109F520B2E1FF2F30F9DDF5E584E028 /* Pods-keyBoard-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 09EE4349480B078AFE00E65B49E502BF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2615,6 +2765,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 84D76E7A37ACD9AD8CE52211102311F6 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 713D162A627185DA38847832AB5BDA44 /* LSTPopView.h in Headers */, + DDB268F1408C6AA5860C768310E9B9D6 /* LSTPopView-umbrella.h in Headers */, + D121163078CA9BBE54A83BD73EF784CF /* LSTPopViewProtocol.h in Headers */, + 3E982309E295BB31C065D62750D0F1FD /* UIView+LSTPV.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; A903C05DE36F05DE8EA13A2F4A3D52E8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2654,14 +2815,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B49C4EB87F5DAEC24F2C8B1403D3315A /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 01F66DF95199AFA87E9B4C3B00A4A471 /* Pods-keyBoard-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; B5D73FBBE3085418AA04A3B4B8D080B8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2697,6 +2850,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E882F8283367BD8AAAD8C29752D10A01 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 4DE8A481697088E8BBAEB51042F14ABE /* LSTTimer.h in Headers */, + 3338AA0580424EFB0FE59C3A37702A47 /* LSTTimer-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -2720,27 +2882,29 @@ }; 18BD026D2210082A239FC15D072FD5BF /* Pods-keyBoard */ = { isa = PBXNativeTarget; - buildConfigurationList = 975743647BB264A93D50394F24059A92 /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */; + buildConfigurationList = 8C2F7BD693160E3E0554D67620B26026 /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */; buildPhases = ( - B49C4EB87F5DAEC24F2C8B1403D3315A /* Headers */, - B641D3E85656A81261B69763FFCD5626 /* Sources */, - DC9D1A62ADBAE0D79C65A2AF6F2634B1 /* Frameworks */, - 184141AC8A105A0A90ABD3175CCD912A /* Resources */, + 08C9EEFC6E73AD5D05604531B118C3C4 /* Headers */, + 86BA6B9707AE3B1250A31F523EB8DA55 /* Sources */, + 3131D37BE47B5A01B63EFA14B2A9822F /* Frameworks */, + BA262B4873E56403AF0269D5EAEE5E15 /* Resources */, ); buildRules = ( ); dependencies = ( - A8F760EC7DB6C976198571C488CABDD5 /* PBXTargetDependency */, - D1B8378E4FB863983460E1A5634E5E53 /* PBXTargetDependency */, - 282288FFCFB047F56CB271F52E09E15A /* PBXTargetDependency */, - 5F35B22B5B052239AB059FB5F5850B30 /* PBXTargetDependency */, - 5661EC5C917094D00EA315585BF5EDD9 /* PBXTargetDependency */, - 8829578C6DBA00A542689EF1CC30A5E1 /* PBXTargetDependency */, - F7C768E46E51C280EE423CDB13DC72C5 /* PBXTargetDependency */, - 9B0BD678EE6118D30B2F6730091BCF98 /* PBXTargetDependency */, - 4CAC7F817A11B79D37ED70D30F53DDB1 /* PBXTargetDependency */, - CA2DED65AB5F88553496C34E44FE1523 /* PBXTargetDependency */, - E6914512C526E59C97F2632B494CEE6B /* PBXTargetDependency */, + 31B285B5CDDD3D0B75165B7E60875540 /* PBXTargetDependency */, + CBD95011A36DFDA2919E5B3F37459EAE /* PBXTargetDependency */, + A1343B6079DE025DBF916F7B81708222 /* PBXTargetDependency */, + 74D6D9BB82D0FFCAFC06C440BDAB1F50 /* PBXTargetDependency */, + A707874A71DF7C81F9119F9728626E2F /* PBXTargetDependency */, + AC48B21768E35ECFC605F51956C6C305 /* PBXTargetDependency */, + 579B996E9942825FE7A26DE3FF3B1783 /* PBXTargetDependency */, + A5740B9DC31236AD3E4CAF5F1E336987 /* PBXTargetDependency */, + F59B858EFCDFF0A159DB925DA2871952 /* PBXTargetDependency */, + 610CFF14AC9EFAF66F9721E282831AE2 /* PBXTargetDependency */, + FBD20C5E1BFF0138D14604A3E9892BAE /* PBXTargetDependency */, + E5D2D0ED9FB1C4A09640F1C1E02963E1 /* PBXTargetDependency */, + EF1B1186931F596FE79ABDD95C3DB3DB /* PBXTargetDependency */, ); name = "Pods-keyBoard"; productName = Pods_keyBoard; @@ -2777,7 +2941,7 @@ buildRules = ( ); dependencies = ( - EC9282C4AF523D47EADC56A4CE8904C3 /* PBXTargetDependency */, + 706669DE3EF507E6ED7756D757CB0803 /* PBXTargetDependency */, ); name = SDWebImage; productName = SDWebImage; @@ -2814,7 +2978,7 @@ buildRules = ( ); dependencies = ( - FB60B14E58A37E6A5B293868DF436E6A /* PBXTargetDependency */, + B58F0F72931D247BC05C471A0226C5F1 /* PBXTargetDependency */, ); name = MJExtension; productName = MJExtension; @@ -2839,6 +3003,24 @@ productReference = 1FFED36A657123030ABB700256D73F15 /* Masonry */; productType = "com.apple.product-type.framework"; }; + 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */ = { + isa = PBXNativeTarget; + buildConfigurationList = 7F4FDDAED424001F24F18A5ED96ABA7B /* Build configuration list for PBXNativeTarget "LSTTimer" */; + buildPhases = ( + E882F8283367BD8AAAD8C29752D10A01 /* Headers */, + 7C1E7BC9142AEAACC37BBFA5736E21E6 /* Sources */, + F69A92A5C344308FA427BBAED4888BA0 /* Frameworks */, + 0C2C6D22B659FD9FBD84420DAAD00401 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LSTTimer; + productName = LSTTimer; + productReference = DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */; + productType = "com.apple.product-type.framework"; + }; 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */ = { isa = PBXNativeTarget; buildConfigurationList = E7624967EDC883D80ED3DA81C495736B /* Build configuration list for PBXNativeTarget "LookinServer" */; @@ -2869,7 +3051,7 @@ buildRules = ( ); dependencies = ( - 20CB5E6449D6C45E7421FD50006E7D24 /* PBXTargetDependency */, + DE3981E6419BE407CF93074BF535E2F5 /* PBXTargetDependency */, ); name = MJRefresh; productName = MJRefresh; @@ -2894,13 +3076,32 @@ productReference = 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */; productType = "com.apple.product-type.framework"; }; + 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */ = { + isa = PBXNativeTarget; + buildConfigurationList = 91696E961FC8FD5A148C3EBCD7606569 /* Build configuration list for PBXNativeTarget "LSTPopView" */; + buildPhases = ( + 84D76E7A37ACD9AD8CE52211102311F6 /* Headers */, + FC9E2C7570932C200785305216E8FD25 /* Sources */, + 6E39FC1043D864A0759387AEED07D7AC /* Frameworks */, + 2505A007E2B6A35CF29F55A3EBF40EAD /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + D2AEA24D136504A1C3C238158CDC14AD /* PBXTargetDependency */, + ); + name = LSTPopView; + productName = LSTPopView; + productReference = 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */; + productType = "com.apple.product-type.framework"; + }; 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */ = { isa = PBXNativeTarget; - buildConfigurationList = 1CD347BC63622334B56C46BB2A857CD3 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */; + buildConfigurationList = 33D6375648A0A6BF2A26AA104B964F82 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */; buildPhases = ( - 5D5A1D298E1F729BBBC44CC63B0DAC56 /* Sources */, - 0A90BB8CE318012A50199E336C8F5BCA /* Frameworks */, - A4A3556F6DD3ED0847E4EB40F1F29D75 /* Resources */, + 668D3C1EB9C4184AD9F85DFC1B3DDAAC /* Sources */, + E84EAC027A0FB7CE91306C93FC676BFE /* Frameworks */, + 918668F825F51C44A44BDA0D6E26DE0A /* Resources */, ); buildRules = ( ); @@ -2913,11 +3114,11 @@ }; B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = D3C801997CDC416BBF7A27755D5920DE /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */; + buildConfigurationList = A6F832309249E7B81D966980E5A2AA5B /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */; buildPhases = ( - F04E1A815CD217F3F46E61BEA8513EB5 /* Sources */, - 800727FE9078FBA0703E3E2537345EEF /* Frameworks */, - 4B01C63687493C34FE8AFA03794477F4 /* Resources */, + 81DB13C71F9ED4A7F16A03B68EE00629 /* Sources */, + B4DC6EBA2E0A9BF13EE9B40E41669F40 /* Frameworks */, + FA9EC5705AC7C692DDFA718CB01BC202 /* Resources */, ); buildRules = ( ); @@ -2930,11 +3131,11 @@ }; B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */ = { isa = PBXNativeTarget; - buildConfigurationList = 5857A1746B204B55F2748E4F3555CECF /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */; + buildConfigurationList = FF5CD44349A7EEBF8A674DDD0F0574CF /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */; buildPhases = ( - 90B5FC4585D05C9915A804D4622F608C /* Sources */, - 9FF74FF9D13DB5C45BDD20BC0FD2DEF2 /* Frameworks */, - 695C46F18F8888557C555B60F85D6C1A /* Resources */, + 086E6CDD1E962F391C206FAE038E1A7E /* Sources */, + 30C44AB8C7DCA8E0F90C02BF12AC1ACC /* Frameworks */, + D23FFCFDDE4E84FB67B476373DD24257 /* Resources */, ); buildRules = ( ); @@ -2957,11 +3158,11 @@ buildRules = ( ); dependencies = ( - 7942D083DF422445F42C8432E3A66F69 /* PBXTargetDependency */, - 76FB281B53D21CDDEA2D840BB217651F /* PBXTargetDependency */, - 03C67E3DA284B09832C1A3761E95770C /* PBXTargetDependency */, - 81CCDE623B0FFC2D6E60897CC923A69D /* PBXTargetDependency */, - 7655824DF1BDB2D5AC22F0DC8AD35757 /* PBXTargetDependency */, + D504C3B6398A702186D49FE4B778051E /* PBXTargetDependency */, + D2A120E24B87240E573F8B0FBD3FA160 /* PBXTargetDependency */, + ADBF59F419A1769B237B2671E4975D51 /* PBXTargetDependency */, + 85C2754009A231976C78A0DF13CED0E3 /* PBXTargetDependency */, + 983600180BD0020E52A5E0C267AB52CE /* PBXTargetDependency */, ); name = "Pods-CustomKeyboard"; productName = Pods_CustomKeyboard; @@ -3006,7 +3207,7 @@ mainGroup = CF1408CF629C7361332E53B88F7BD30C; minimizedProjectReferenceProxies = 0; preferredProjectObjectVersion = 77; - productRefGroup = 9E1956AE0271229C1F82B31B48A1BA2C /* Products */; + productRefGroup = 92804E5AAC2424AC0EE6ED237A2C4B6F /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -3016,6 +3217,8 @@ 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */, 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */, 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */, + 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */, + 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */, 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */, 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */, 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */, @@ -3031,7 +3234,7 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 184141AC8A105A0A90ABD3175CCD912A /* Resources */ = { + 0C2C6D22B659FD9FBD84420DAAD00401 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -3046,6 +3249,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 2505A007E2B6A35CF29F55A3EBF40EAD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 27B1683E18D5081CF470BC9A233C7D28 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3070,22 +3280,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 4B01C63687493C34FE8AFA03794477F4 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - CDCDFA7775C6B23ACD5CFB66663214CF /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 695C46F18F8888557C555B60F85D6C1A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 2FF9F5DCB10C6393065EB61DB7441155 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 8DF763B35C7183D33FE173339E261549 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3093,6 +3287,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 918668F825F51C44A44BDA0D6E26DE0A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + F7815C2FBD9D954D0C2F3BF0BD6EB813 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9BB224D4E89ABC2539ABBEBDC9696C8F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3107,11 +3309,18 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A4A3556F6DD3ED0847E4EB40F1F29D75 /* Resources */ = { + BA262B4873E56403AF0269D5EAEE5E15 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - A8C001E34C77D81FAF5FE55956A8293F /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + D23FFCFDDE4E84FB67B476373DD24257 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 719245E09E34B28240B8144650B43701 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3136,6 +3345,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FA9EC5705AC7C692DDFA718CB01BC202 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E8BB439BCA39F3ED41FF185D6A61EA98 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; FD378D1F5CAFCC3C5D44074788563A1C /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3155,6 +3372,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 086E6CDD1E962F391C206FAE038E1A7E /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 090A96B9D443BC38DD5A251A9EE646AE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3284,13 +3508,37 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 5D5A1D298E1F729BBBC44CC63B0DAC56 /* Sources */ = { + 668D3C1EB9C4184AD9F85DFC1B3DDAAC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; + 7C1E7BC9142AEAACC37BBFA5736E21E6 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 8B9B9EACA282C583FCF9A3B8E49DD830 /* LSTTimer.m in Sources */, + 18CDCA86F129B7251D21E8F3FF8656B9 /* LSTTimer-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 81DB13C71F9ED4A7F16A03B68EE00629 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 86BA6B9707AE3B1250A31F523EB8DA55 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 059E13B65EC846A6B5D5F5A68D26D194 /* Pods-keyBoard-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 8AF957863B2E92075C7B36542829939B /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3363,13 +3611,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 90B5FC4585D05C9915A804D4622F608C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; A29E3C9E62E3E86A20CAE1E7632313FC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3379,14 +3620,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B641D3E85656A81261B69763FFCD5626 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - DBF03AD94698149E54474A5EAD083E11 /* Pods-keyBoard-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; D08DDDF416AB9EEE26C8FFEE674F7A12 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3468,10 +3701,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - F04E1A815CD217F3F46E61BEA8513EB5 /* Sources */ = { + FC9E2C7570932C200785305216E8FD25 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 3111CEA93C868CA68CBD351C934FEB80 /* LSTPopView.m in Sources */, + A0B7A3B941134AA95A20F5A85165CC72 /* LSTPopView-dummy.m in Sources */, + BE4F0DF600FBF07E812D262B293CF76C /* UIView+LSTPV.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3488,166 +3724,178 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 03C67E3DA284B09832C1A3761E95770C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MBProgressHUD; - target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = 3D4D160BA53FFAEBFA15602EF206AF18 /* PBXContainerItemProxy */; - }; - 20CB5E6449D6C45E7421FD50006E7D24 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "MJRefresh-MJRefresh.Privacy"; - target = B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */; - targetProxy = 637C06B2D3FCA697F91C75E07050A564 /* PBXContainerItemProxy */; - }; - 282288FFCFB047F56CB271F52E09E15A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DZNEmptyDataSet; - target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = 2A844DF7EB83D82BDFB8EBD48D398A77 /* PBXContainerItemProxy */; - }; - 4CAC7F817A11B79D37ED70D30F53DDB1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJRefresh; - target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; - targetProxy = F862CA9AADBD981FC5FBB9541050A76D /* PBXContainerItemProxy */; - }; - 5661EC5C917094D00EA315585BF5EDD9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = HWPanModal; - target = 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */; - targetProxy = A6418FEFA13B0CC9A6A43072F418FF50 /* PBXContainerItemProxy */; - }; - 5F35B22B5B052239AB059FB5F5850B30 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FLAnimatedImage; - target = 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */; - targetProxy = 53436DF6632E3EA7570FFCAF0043D337 /* PBXContainerItemProxy */; - }; - 7655824DF1BDB2D5AC22F0DC8AD35757 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Masonry; - target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = B6CB86E5B6D367721C43659AE5015027 /* PBXContainerItemProxy */; - }; - 76FB281B53D21CDDEA2D840BB217651F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DZNEmptyDataSet; - target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = AB7581572FF4E1AD0E3EAF6948CD6FDB /* PBXContainerItemProxy */; - }; - 7942D083DF422445F42C8432E3A66F69 /* PBXTargetDependency */ = { + 31B285B5CDDD3D0B75165B7E60875540 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = AFNetworking; target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = E706D6D60256E57E5FB469EB7708C200 /* PBXContainerItemProxy */; + targetProxy = 077F2AA4B2BF11943204812B533088F5 /* PBXContainerItemProxy */; }; - 81CCDE623B0FFC2D6E60897CC923A69D /* PBXTargetDependency */ = { + 579B996E9942825FE7A26DE3FF3B1783 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LSTTimer; + target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; + targetProxy = FBA8C5046E304FE4BB90D14C4A529288 /* PBXContainerItemProxy */; + }; + 610CFF14AC9EFAF66F9721E282831AE2 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MJExtension; target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = B3DE694415E78DB7C365C1C1AFA7DAC6 /* PBXContainerItemProxy */; + targetProxy = 2F4CEC846087978E04621E966B9DFF49 /* PBXContainerItemProxy */; }; - 8829578C6DBA00A542689EF1CC30A5E1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LookinServer; - target = 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */; - targetProxy = AB5F78A9F2AF013979DDC5609581D438 /* PBXContainerItemProxy */; - }; - 9B0BD678EE6118D30B2F6730091BCF98 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJExtension; - target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = EE2CA5E8D8591CAB500C01C15555AC6F /* PBXContainerItemProxy */; - }; - A8F760EC7DB6C976198571C488CABDD5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = B7E9478012E785A9A105D255A83783E4 /* PBXContainerItemProxy */; - }; - CA2DED65AB5F88553496C34E44FE1523 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Masonry; - target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = 16A3AE428B6730C115D886BB1D093565 /* PBXContainerItemProxy */; - }; - D1B8378E4FB863983460E1A5634E5E53 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Bugly; - target = 4A68CFD979D413A619DF631BB121D98F /* Bugly */; - targetProxy = 9C7907B511C5E05A0898367B21C98132 /* PBXContainerItemProxy */; - }; - E6914512C526E59C97F2632B494CEE6B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = 8A15E01E24CFF0D6326188BC70ED8D54 /* PBXContainerItemProxy */; - }; - EC9282C4AF523D47EADC56A4CE8904C3 /* PBXTargetDependency */ = { + 706669DE3EF507E6ED7756D757CB0803 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "SDWebImage-SDWebImage"; target = 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */; - targetProxy = DE04810BEAD33737F5D80FEF4299D57D /* PBXContainerItemProxy */; + targetProxy = 2307258CB6BB82D24A7CA6B7975B1292 /* PBXContainerItemProxy */; }; - F7C768E46E51C280EE423CDB13DC72C5 /* PBXTargetDependency */ = { + 74D6D9BB82D0FFCAFC06C440BDAB1F50 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FLAnimatedImage; + target = 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */; + targetProxy = B57744F595F66358CF4816DD4793C8A6 /* PBXContainerItemProxy */; + }; + 85C2754009A231976C78A0DF13CED0E3 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MJExtension; + target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; + targetProxy = 02DDA276267B945D512FC6AF69590E37 /* PBXContainerItemProxy */; + }; + 983600180BD0020E52A5E0C267AB52CE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = 9F4B8D116BF04BD4F5A8C8D781DA5D62 /* PBXContainerItemProxy */; + }; + A1343B6079DE025DBF916F7B81708222 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DZNEmptyDataSet; + target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; + targetProxy = B12FC64FF473558C45076A0CEB7D47D1 /* PBXContainerItemProxy */; + }; + A5740B9DC31236AD3E4CAF5F1E336987 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LookinServer; + target = 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */; + targetProxy = 92CA63B3B20D5FAC965226A6920F1BE4 /* PBXContainerItemProxy */; + }; + A707874A71DF7C81F9119F9728626E2F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = HWPanModal; + target = 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */; + targetProxy = 5ABBB136A0AE8EE61D30E75F4BE8572E /* PBXContainerItemProxy */; + }; + AC48B21768E35ECFC605F51956C6C305 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LSTPopView; + target = 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */; + targetProxy = 01F386055DA043124AA00537EC691754 /* PBXContainerItemProxy */; + }; + ADBF59F419A1769B237B2671E4975D51 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MBProgressHUD; target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = 48A3998D02E8C6CE503B67AEF4201A9E /* PBXContainerItemProxy */; + targetProxy = 5F98F8D71CDA25588EE186F7253F367F /* PBXContainerItemProxy */; }; - FB60B14E58A37E6A5B293868DF436E6A /* PBXTargetDependency */ = { + B58F0F72931D247BC05C471A0226C5F1 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "MJExtension-MJExtension"; target = B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */; - targetProxy = 3DADDD414405E1608F5E53FA546F0683 /* PBXContainerItemProxy */; + targetProxy = 80217EE617C295C4C81AA1DCF5D85E7E /* PBXContainerItemProxy */; + }; + CBD95011A36DFDA2919E5B3F37459EAE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Bugly; + target = 4A68CFD979D413A619DF631BB121D98F /* Bugly */; + targetProxy = 1C0C3A0BDFA6BDE041DC3D513C5650B3 /* PBXContainerItemProxy */; + }; + D2A120E24B87240E573F8B0FBD3FA160 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DZNEmptyDataSet; + target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; + targetProxy = 5ECDD709038035A28044669BFFE06267 /* PBXContainerItemProxy */; + }; + D2AEA24D136504A1C3C238158CDC14AD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LSTTimer; + target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; + targetProxy = 1B50A2D51242B1B501E7A8FE17921A95 /* PBXContainerItemProxy */; + }; + D504C3B6398A702186D49FE4B778051E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = 7FA3D0787FAE50268674AAEE62D45295 /* PBXContainerItemProxy */; + }; + DE3981E6419BE407CF93074BF535E2F5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "MJRefresh-MJRefresh.Privacy"; + target = B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */; + targetProxy = 9946EDF6CEC75931EE3BCF2D4DC70585 /* PBXContainerItemProxy */; + }; + E5D2D0ED9FB1C4A09640F1C1E02963E1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = DE9FD566A2ADE13D0844AD68D51F7EAF /* PBXContainerItemProxy */; + }; + EF1B1186931F596FE79ABDD95C3DB3DB /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = EC0084E5D95CC67D69BF4291415A7EE1 /* PBXContainerItemProxy */; + }; + F59B858EFCDFF0A159DB925DA2871952 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MBProgressHUD; + target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; + targetProxy = BDE883F6A985897AA115496E325146FA /* PBXContainerItemProxy */; + }; + FBD20C5E1BFF0138D14604A3E9892BAE /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MJRefresh; + target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; + targetProxy = 95E55F6C03A77816AFA1A59466D8CD82 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 0753C1EBCEE9E4DEC8AB43D567EE938D /* Release */ = { + 08509768DC98A9784BD41AE1B13133E6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.release.xcconfig */; + baseConfigurationReference = 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */; buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; + IBSC_MODULE = MJExtension; + INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJExtension; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; + WRAPPER_EXTENSION = bundle; }; - name = Release; + name = Debug; + }; + 139C4D5063C989448E1492598E6DCB05 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; + IBSC_MODULE = MJRefresh; + INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJRefresh.Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; }; 1A69165A21A7A1CC42A38CF8ADE98215 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B5D946A76BE7958D130628335233FAE2 /* LookinServer.release.xcconfig */; + baseConfigurationReference = 506D2884030F20EC06A10DCFA7347584 /* LookinServer.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3722,26 +3970,48 @@ }; name = Release; }; - 25D63BD2ECBD8949C026AD83BA469503 /* Debug */ = { + 2A478E3BD7684211516AEB6E73031711 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8594A6CF7D45F1715A10AC3C18700F18 /* MJRefresh.debug.xcconfig */; + baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; - IBSC_MODULE = MJRefresh; - INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJRefresh.Privacy; + 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-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.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"; - WRAPPER_EXTENSION = bundle; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; 2D1085CA7BD144CABF012FC10C6C9120 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 95B0223E2E65A30C6C4B233E336C7DB9 /* Masonry.debug.xcconfig */; + baseConfigurationReference = 04A09AD12EF8C816FA9546838C3F429E /* Masonry.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3776,9 +4046,9 @@ }; name = Debug; }; - 2DAC11C2887F4A1ADE664F662CA95F65 /* Debug */ = { + 2DD4779BD119802B7DDE3163EB446D6F /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 87352714D54CE9C3DCA836E85ABDE2D9 /* MJExtension.debug.xcconfig */; + baseConfigurationReference = 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; @@ -3791,11 +4061,28 @@ TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Debug; + name = Release; + }; + 30665B5D85CB0DE44CCE0EF52CECD3E6 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; + IBSC_MODULE = MJRefresh; + INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJRefresh.Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; }; 35044A57510DB3F4E442A9C16E980E4A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C354B162321F2CA18DB1B330D092378E /* DZNEmptyDataSet.debug.xcconfig */; + baseConfigurationReference = 1FABCE7CC795C2D70EA3AAEE06EDD595 /* DZNEmptyDataSet.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3832,7 +4119,7 @@ }; 49CEA33268972C89BF290FCBF8F9DFC0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 83ECFAFFBD6F90A4A996E32508211B96 /* DZNEmptyDataSet.release.xcconfig */; + baseConfigurationReference = 1FABA21668D0F7EA5314EF00C93346A5 /* DZNEmptyDataSet.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3868,26 +4155,9 @@ }; name = Release; }; - 4D5526A44FCB4F62B609F8C8BC69F02C /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CE9DC3EBC5E4498B6CBDAA25AFECD440 /* SDWebImage.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; - IBSC_MODULE = SDWebImage; - INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = SDWebImage; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; 51753BD6FE635BB9421BCA4C05F63C6A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 57748DDDE8158306E4B3EAC0E03C99A1 /* MJRefresh.release.xcconfig */; + baseConfigurationReference = 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3926,7 +4196,7 @@ }; 614F7847ADAD2F1EEC9E48FAEC955108 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8594A6CF7D45F1715A10AC3C18700F18 /* MJRefresh.debug.xcconfig */; + baseConfigurationReference = 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -3964,7 +4234,7 @@ }; 618AB008538F74AAF983C04297207BB6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = F915BA2B3AE80D1E58F67A45AB3B3D68 /* LookinServer.debug.xcconfig */; + baseConfigurationReference = EA60319FCBE8ADFF00A52058DBE7C157 /* LookinServer.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4000,7 +4270,7 @@ }; 63708B35D08B13BC40AB51386020974A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3011D5BF791250C05C8D7C5BD12BC772 /* HWPanModal.release.xcconfig */; + baseConfigurationReference = 779E8085B0101C4CB480F794DECA558B /* HWPanModal.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4038,7 +4308,7 @@ }; 67BAB382C3420CD62CB414CAA4D8A5B1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 970ACBBC888D1BD4521806C0B268E7C6 /* FLAnimatedImage.release.xcconfig */; + baseConfigurationReference = DDD6B4DA641B2F94F2D426AC2D4A5E7E /* FLAnimatedImage.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4113,45 +4383,6 @@ }; name = Debug; }; - 7F3047493AFFD2DDF1C7F52CA126CB0E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4218,6 +4449,82 @@ }; name = Debug; }; + 8F481C1C1CF7C89F42A9EFE335DEA2BC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A16C385BAD6F9C544C59D31A650946CC /* LSTPopView.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LSTPopView/LSTPopView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LSTPopView/LSTPopView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LSTPopView/LSTPopView.modulemap"; + PRODUCT_MODULE_NAME = LSTPopView; + PRODUCT_NAME = LSTPopView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 92C888FE2C8775DD87E819591F638CAA /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = CB1BEFB1C0257A74B80CAF80DB336894 /* LSTTimer.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; + PRODUCT_MODULE_NAME = LSTTimer; + PRODUCT_NAME = LSTTimer; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4282,7 +4589,7 @@ }; 9E9FB1E032B56896F9380263D45A0F9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 380B11CB6389CFA1B7904A11C79EDA18 /* MJExtension.release.xcconfig */; + baseConfigurationReference = 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4321,7 +4628,7 @@ }; 9F519E5162C0E51D10B7E999E2FD0125 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D57BF77833CFB4176D299C7D13ACBA75 /* SDWebImage.release.xcconfig */; + baseConfigurationReference = 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4359,7 +4666,7 @@ }; B04295D726C1883ADA40A304483D7E33 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CE9DC3EBC5E4498B6CBDAA25AFECD440 /* SDWebImage.debug.xcconfig */; + baseConfigurationReference = 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4396,7 +4703,7 @@ }; B26FBB655ABB114E4C0D589843814D6C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6E87ADD85BCC1C5A4BF0FB2AC7E2A834 /* Bugly.release.xcconfig */; + baseConfigurationReference = 090BA40A2CB6D8D73A78895D821E7E93 /* Bugly.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -4414,7 +4721,7 @@ }; B429B9740B8EB5894C5BF953D9590A46 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B87A76839C6A92DD597AFD764D90E24D /* FLAnimatedImage.debug.xcconfig */; + baseConfigurationReference = C8974089710AB7F8A65D77241AA70557 /* FLAnimatedImage.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4449,26 +4756,86 @@ }; name = Debug; }; - B57BE885B0BCEA3DA3C659683487FF80 /* Release */ = { + B60B7F89F4C4C73830498E2EEE95F8BB /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D57BF77833CFB4176D299C7D13ACBA75 /* SDWebImage.release.xcconfig */; + baseConfigurationReference = A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.release.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; - IBSC_MODULE = SDWebImage; - INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = SDWebImage; + 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-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.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"; - WRAPPER_EXTENSION = bundle; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Release; }; + BAC0E29E75929E3F1EBBE8FCB244F722 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8769FA429275709C356B4C8A5DDEC26E /* LSTTimer.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; + PRODUCT_MODULE_NAME = LSTTimer; + PRODUCT_NAME = LSTTimer; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; BCD70A0BB22D0C72BAF7207A7D4F44BD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 550192267AB5C328829C08C69A3B04BC /* MBProgressHUD.debug.xcconfig */; + baseConfigurationReference = B0B0D3A4B05EE4A8AA2F56AF68EA3ADF /* MBProgressHUD.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4505,7 +4872,7 @@ }; BDD02D9903A09C2C9D362C7536416CFB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C9DEFB96646787781652ABFE1D5648AF /* HWPanModal.debug.xcconfig */; + baseConfigurationReference = F2C18394D397CD373A1F089F0924F724 /* HWPanModal.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4542,7 +4909,7 @@ }; BE0CDEB7BE0A402663AFCC2111742430 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 27D20C78C9DF6C2E5537332D5CBE55ED /* MBProgressHUD.release.xcconfig */; + baseConfigurationReference = 2B7A32CBCCAE8AB83DA3CB95667709E3 /* MBProgressHUD.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4580,7 +4947,7 @@ }; CBAFED52B4B51F600FAF2141BA449F2E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 4E56D5DDE9402DE57FEF9D81E68DE8B3 /* Bugly.debug.xcconfig */; + baseConfigurationReference = EF66633D19CE6F4EBFF2331E624219EC /* Bugly.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -4597,7 +4964,7 @@ }; CEE7FEC0A1B23DE7053203A448EEB294 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6E7FB45CA71B8CA83A3493DEA84881AB /* AFNetworking.debug.xcconfig */; + baseConfigurationReference = 9118BCB61472BB3349D3BC26BBAA9EE0 /* AFNetworking.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4632,9 +4999,26 @@ }; name = Debug; }; + CF142E310500F5E5BB783606035C0752 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; + IBSC_MODULE = SDWebImage; + INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = SDWebImage; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; D0AB0AEF4014B926FCD853D3AE0A370A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C67403F95732E8793DB36834C4726BFA /* Masonry.release.xcconfig */; + baseConfigurationReference = 72FF1B2D48227EDD9EB762579BA5D936 /* Masonry.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4672,7 +5056,7 @@ }; DA533AA9B577872DAFB44EF2CF26C49A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 3A8B099A5081203885BD7E80C8282B95 /* AFNetworking.release.xcconfig */; + baseConfigurationReference = 42D65971D9F40DBD6785D6A1D0AEBFBD /* AFNetworking.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4708,26 +5092,9 @@ }; name = Release; }; - EA99A70C10B64850E5D1CA0F54E1452C /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 57748DDDE8158306E4B3EAC0E03C99A1 /* MJRefresh.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; - IBSC_MODULE = MJRefresh; - INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJRefresh.Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; EC66105EE15F9DC9B6F20F58FB67957D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 87352714D54CE9C3DCA836E85ABDE2D9 /* MJExtension.debug.xcconfig */; + baseConfigurationReference = 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4763,35 +5130,63 @@ }; name = Debug; }; - EE9EED0DCFA28D7527D73111A3DA2E5C /* Release */ = { + F48613BDFA945AC2A18363244F54E67C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 380B11CB6389CFA1B7904A11C79EDA18 /* MJExtension.release.xcconfig */; + baseConfigurationReference = 0874A58BB3E268A75B1BD3D594CBAA2D /* LSTPopView.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LSTPopView/LSTPopView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LSTPopView/LSTPopView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LSTPopView/LSTPopView.modulemap"; + PRODUCT_MODULE_NAME = LSTPopView; + PRODUCT_NAME = LSTPopView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + FE5E9EA22284A509601F2785ED15C7E8 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; - IBSC_MODULE = MJExtension; - INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJExtension; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; + IBSC_MODULE = SDWebImage; + INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = SDWebImage; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Release; + name = Debug; }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 1CD347BC63622334B56C46BB2A857CD3 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4D5526A44FCB4F62B609F8C8BC69F02C /* Debug */, - B57BE885B0BCEA3DA3C659683487FF80 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 1CF7CA11A791652D6975B2EDE2FC6719 /* Build configuration list for PBXNativeTarget "DZNEmptyDataSet" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4819,6 +5214,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 33D6375648A0A6BF2A26AA104B964F82 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + FE5E9EA22284A509601F2785ED15C7E8 /* Debug */, + CF142E310500F5E5BB783606035C0752 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4837,15 +5241,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 5857A1746B204B55F2748E4F3555CECF /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2DAC11C2887F4A1ADE664F662CA95F65 /* Debug */, - EE9EED0DCFA28D7527D73111A3DA2E5C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 7CEB2E47380AD51987AA02ECD4DFBCD9 /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4855,6 +5250,33 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 7F4FDDAED424001F24F18A5ED96ABA7B /* Build configuration list for PBXNativeTarget "LSTTimer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + BAC0E29E75929E3F1EBBE8FCB244F722 /* Debug */, + 92C888FE2C8775DD87E819591F638CAA /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 8C2F7BD693160E3E0554D67620B26026 /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 2A478E3BD7684211516AEB6E73031711 /* Debug */, + B60B7F89F4C4C73830498E2EEE95F8BB /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 91696E961FC8FD5A148C3EBCD7606569 /* Build configuration list for PBXNativeTarget "LSTPopView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + F48613BDFA945AC2A18363244F54E67C /* Debug */, + 8F481C1C1CF7C89F42A9EFE335DEA2BC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 945C0F2B41CBADE68A142120AE9A4AF3 /* Build configuration list for PBXNativeTarget "MBProgressHUD" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4864,15 +5286,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 975743647BB264A93D50394F24059A92 /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 7F3047493AFFD2DDF1C7F52CA126CB0E /* Debug */, - 0753C1EBCEE9E4DEC8AB43D567EE938D /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 9CC7AA793D9397C15E010F8242EE1046 /* Build configuration list for PBXAggregateTarget "Bugly" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4882,6 +5295,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + A6F832309249E7B81D966980E5A2AA5B /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 139C4D5063C989448E1492598E6DCB05 /* Debug */, + 30665B5D85CB0DE44CCE0EF52CECD3E6 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; AAA1F8799DB68036C3BE983C05FAA2C7 /* Build configuration list for PBXNativeTarget "Masonry" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4900,15 +5322,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D3C801997CDC416BBF7A27755D5920DE /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 25D63BD2ECBD8949C026AD83BA469503 /* Debug */, - EA99A70C10B64850E5D1CA0F54E1452C /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; D47A0ADD8E3841C9330561C3E1664BB3 /* Build configuration list for PBXNativeTarget "HWPanModal" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -4936,6 +5349,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + FF5CD44349A7EEBF8A674DDD0F0574CF /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 08509768DC98A9784BD41AE1B13133E6 /* Debug */, + 2DD4779BD119802B7DDE3163EB446D6F /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; /* End XCConfigurationList section */ }; rootObject = BFDFE7DC352907FC980B868725387E98 /* Project object */; diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LSTPopView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LSTPopView.xcscheme new file mode 100644 index 0000000..d643155 --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LSTPopView.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LSTTimer.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LSTTimer.xcscheme new file mode 100644 index 0000000..72d6d1f --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LSTTimer.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Target Support Files/LSTPopView/LSTPopView-Info.plist b/Pods/Target Support Files/LSTPopView/LSTPopView-Info.plist new file mode 100644 index 0000000..5bfaa83 --- /dev/null +++ b/Pods/Target Support Files/LSTPopView/LSTPopView-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.3.10 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/LSTPopView/LSTPopView-dummy.m b/Pods/Target Support Files/LSTPopView/LSTPopView-dummy.m new file mode 100644 index 0000000..a929a5e --- /dev/null +++ b/Pods/Target Support Files/LSTPopView/LSTPopView-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_LSTPopView : NSObject +@end +@implementation PodsDummy_LSTPopView +@end diff --git a/Pods/Target Support Files/LSTPopView/LSTPopView-prefix.pch b/Pods/Target Support Files/LSTPopView/LSTPopView-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/LSTPopView/LSTPopView-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/Pods/Target Support Files/LSTPopView/LSTPopView-umbrella.h b/Pods/Target Support Files/LSTPopView/LSTPopView-umbrella.h new file mode 100644 index 0000000..cd628a0 --- /dev/null +++ b/Pods/Target Support Files/LSTPopView/LSTPopView-umbrella.h @@ -0,0 +1,19 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "LSTPopView.h" +#import "LSTPopViewProtocol.h" +#import "UIView+LSTPV.h" + +FOUNDATION_EXPORT double LSTPopViewVersionNumber; +FOUNDATION_EXPORT const unsigned char LSTPopViewVersionString[]; + diff --git a/Pods/Target Support Files/LSTPopView/LSTPopView.debug.xcconfig b/Pods/Target Support Files/LSTPopView/LSTPopView.debug.xcconfig new file mode 100644 index 0000000..7c97e36 --- /dev/null +++ b/Pods/Target Support Files/LSTPopView/LSTPopView.debug.xcconfig @@ -0,0 +1,14 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -framework "LSTTimer" -framework "UIKit" +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}/LSTPopView +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/Pods/Target Support Files/LSTPopView/LSTPopView.modulemap b/Pods/Target Support Files/LSTPopView/LSTPopView.modulemap new file mode 100644 index 0000000..3140061 --- /dev/null +++ b/Pods/Target Support Files/LSTPopView/LSTPopView.modulemap @@ -0,0 +1,6 @@ +framework module LSTPopView { + umbrella header "LSTPopView-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/LSTPopView/LSTPopView.release.xcconfig b/Pods/Target Support Files/LSTPopView/LSTPopView.release.xcconfig new file mode 100644 index 0000000..7c97e36 --- /dev/null +++ b/Pods/Target Support Files/LSTPopView/LSTPopView.release.xcconfig @@ -0,0 +1,14 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +OTHER_LDFLAGS = $(inherited) -framework "LSTTimer" -framework "UIKit" +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}/LSTPopView +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/Pods/Target Support Files/LSTTimer/LSTTimer-Info.plist b/Pods/Target Support Files/LSTTimer/LSTTimer-Info.plist new file mode 100644 index 0000000..8de3c32 --- /dev/null +++ b/Pods/Target Support Files/LSTTimer/LSTTimer-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.2.10 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/LSTTimer/LSTTimer-dummy.m b/Pods/Target Support Files/LSTTimer/LSTTimer-dummy.m new file mode 100644 index 0000000..5101afd --- /dev/null +++ b/Pods/Target Support Files/LSTTimer/LSTTimer-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_LSTTimer : NSObject +@end +@implementation PodsDummy_LSTTimer +@end diff --git a/Pods/Target Support Files/LSTTimer/LSTTimer-prefix.pch b/Pods/Target Support Files/LSTTimer/LSTTimer-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/LSTTimer/LSTTimer-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/Pods/Target Support Files/LSTTimer/LSTTimer-umbrella.h b/Pods/Target Support Files/LSTTimer/LSTTimer-umbrella.h new file mode 100644 index 0000000..54b8f60 --- /dev/null +++ b/Pods/Target Support Files/LSTTimer/LSTTimer-umbrella.h @@ -0,0 +1,17 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "LSTTimer.h" + +FOUNDATION_EXPORT double LSTTimerVersionNumber; +FOUNDATION_EXPORT const unsigned char LSTTimerVersionString[]; + diff --git a/Pods/Target Support Files/LSTTimer/LSTTimer.debug.xcconfig b/Pods/Target Support Files/LSTTimer/LSTTimer.debug.xcconfig new file mode 100644 index 0000000..5cd41e5 --- /dev/null +++ b/Pods/Target Support Files/LSTTimer/LSTTimer.debug.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +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}/LSTTimer +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/Pods/Target Support Files/LSTTimer/LSTTimer.modulemap b/Pods/Target Support Files/LSTTimer/LSTTimer.modulemap new file mode 100644 index 0000000..183e011 --- /dev/null +++ b/Pods/Target Support Files/LSTTimer/LSTTimer.modulemap @@ -0,0 +1,6 @@ +framework module LSTTimer { + umbrella header "LSTTimer-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/LSTTimer/LSTTimer.release.xcconfig b/Pods/Target Support Files/LSTTimer/LSTTimer.release.xcconfig new file mode 100644 index 0000000..5cd41e5 --- /dev/null +++ b/Pods/Target Support Files/LSTTimer/LSTTimer.release.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +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}/LSTTimer +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/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown index 05aba23..2a72233 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown @@ -87,6 +87,52 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## LSTPopView + +Copyright (c) 2020 490790096@qq.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + +## LSTTimer + +Copyright (c) 2020 490790096@qq.com + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + ## LookinServer MIT License diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist index 36ad216..2a65449 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist @@ -122,6 +122,64 @@ SOFTWARE. Type PSGroupSpecifier
+ + FooterText + Copyright (c) 2020 490790096@qq.com <LoSenTrad@163.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + License + MIT + Title + LSTPopView + Type + PSGroupSpecifier + + + FooterText + Copyright (c) 2020 490790096@qq.com <LoSenTrad@163.com> + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN +THE SOFTWARE. + + License + MIT + Title + LSTTimer + Type + PSGroupSpecifier + FooterText MIT License diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist index b8b69f9..7026892 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist @@ -3,6 +3,8 @@ ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework ${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework ${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework ${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework +${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework +${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework ${BUILT_PRODUCTS_DIR}/LookinServer/LookinServer.framework ${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework ${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist index 92448c1..44c2c72 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist @@ -2,6 +2,8 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HWPanModal.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTPopView.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTTimer.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LookinServer.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist index 025cf33..a1e87cf 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist @@ -3,6 +3,8 @@ ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework ${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework ${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework ${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework +${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework +${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework ${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework ${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework ${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist index 0d01dd3..12df5ac 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist @@ -2,6 +2,8 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HWPanModal.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTPopView.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTTimer.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh index 7b950ac..fd710bd 100755 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh @@ -180,6 +180,8 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework" install_framework "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework" install_framework "${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework" + install_framework "${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework" + install_framework "${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework" install_framework "${BUILT_PRODUCTS_DIR}/LookinServer/LookinServer.framework" install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework" @@ -192,6 +194,8 @@ if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework" install_framework "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework" install_framework "${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework" + install_framework "${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework" + install_framework "${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework" install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework" diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig index 4a28105..3620983 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "LookinServer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "LSTPopView" -framework "LSTTimer" -framework "LookinServer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig index ca8c010..0e9c332 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_ROOT}/Bugly" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_ROOT}/Bugly" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AFNetworking" -framework "Bugly" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AFNetworking" -framework "Bugly" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "LSTPopView" -framework "LSTTimer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 949e3f3..4038055 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -14,6 +14,8 @@ 0477BD952EBAFF4E0055D639 /* KBURLOpenBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BD932EBAFF4E0055D639 /* KBURLOpenBridge.m */; }; 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */; }; 0477BDF32EBB7B850055D639 /* KBDirectionIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */; }; + 0477BDF72EBC63A80055D639 /* KBTestVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF62EBC63A80055D639 /* KBTestVC.m */; }; + 0477BDFA2EBC66340055D639 /* HomeHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF92EBC66340055D639 /* HomeHeadView.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -103,6 +105,10 @@ 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeSheetVC.m; sourceTree = ""; }; 0477BDF12EBB7B850055D639 /* KBDirectionIndicatorView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBDirectionIndicatorView.h; sourceTree = ""; }; 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBDirectionIndicatorView.m; sourceTree = ""; }; + 0477BDF52EBC63A80055D639 /* KBTestVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBTestVC.h; sourceTree = ""; }; + 0477BDF62EBC63A80055D639 /* KBTestVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBTestVC.m; sourceTree = ""; }; + 0477BDF82EBC66340055D639 /* HomeHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeHeadView.h; sourceTree = ""; }; + 0477BDF92EBC66340055D639 /* HomeHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeHeadView.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -346,6 +352,8 @@ children = ( 0477BDF12EBB7B850055D639 /* KBDirectionIndicatorView.h */, 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */, + 0477BDF82EBC66340055D639 /* HomeHeadView.h */, + 0477BDF92EBC66340055D639 /* HomeHeadView.m */, ); path = V; sourceTree = ""; @@ -361,6 +369,8 @@ 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */, 0477BDEE2EBB76E30055D639 /* HomeSheetVC.h */, 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */, + 0477BDF52EBC63A80055D639 /* KBTestVC.h */, + 0477BDF62EBC63A80055D639 /* KBTestVC.m */, ); path = VC; sourceTree = ""; @@ -804,10 +814,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh\"\n"; @@ -880,11 +894,13 @@ 04FC95D72EB1EA16007BD342 /* BaseTableView.m in Sources */, 0477BDF32EBB7B850055D639 /* KBDirectionIndicatorView.m in Sources */, 04FC95D82EB1EA16007BD342 /* BaseCell.m in Sources */, + 0477BDF72EBC63A80055D639 /* KBTestVC.m in Sources */, 04FC95C92EB1E4C9007BD342 /* BaseNavigationController.m in Sources */, 04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */, 04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */, 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */, 04FC97002EB30A00007BD342 /* KBGuideTopCell.m in Sources */, + 0477BDFA2EBC66340055D639 /* HomeHeadView.m in Sources */, 04FC97032EB30A00007BD342 /* KBGuideKFCell.m in Sources */, 04FC97062EB30A00007BD342 /* KBGuideUserCell.m in Sources */, 04FC97092EB31B14007BD342 /* KBHUD.m in Sources */, diff --git a/keyBoard/Class/Home/V/HomeHeadView.h b/keyBoard/Class/Home/V/HomeHeadView.h new file mode 100644 index 0000000..ddf0bf4 --- /dev/null +++ b/keyBoard/Class/Home/V/HomeHeadView.h @@ -0,0 +1,16 @@ +// +// HomeHeadView.h +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeHeadView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/V/HomeHeadView.m b/keyBoard/Class/Home/V/HomeHeadView.m new file mode 100644 index 0000000..41ce832 --- /dev/null +++ b/keyBoard/Class/Home/V/HomeHeadView.m @@ -0,0 +1,20 @@ +// +// HomeHeadView.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "HomeHeadView.h" + +@implementation HomeHeadView + +/* +// Only override drawRect: if you perform custom drawing. +// An empty implementation adversely affects performance during animation. +- (void)drawRect:(CGRect)rect { + // Drawing code +} +*/ + +@end diff --git a/keyBoard/Class/Home/V/KBDirectionIndicatorView.h b/keyBoard/Class/Home/V/KBDirectionIndicatorView.h index e96f68a..7495077 100644 --- a/keyBoard/Class/Home/V/KBDirectionIndicatorView.h +++ b/keyBoard/Class/Home/V/KBDirectionIndicatorView.h @@ -3,7 +3,7 @@ // keyBoard // // Created by Mac on 2025/11/5. -// +// HomeSheetVC 三角指示器 #import #import diff --git a/keyBoard/Class/Home/VC/HomeSheetVC.m b/keyBoard/Class/Home/VC/HomeSheetVC.m index 67af29e..4e4a5f9 100644 --- a/keyBoard/Class/Home/VC/HomeSheetVC.m +++ b/keyBoard/Class/Home/VC/HomeSheetVC.m @@ -18,6 +18,10 @@ [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor redColor]; + HWBackgroundConfig *config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; + config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; + config.backgroundAlpha = 0.01; + [self.hw_dimmedView reloadConfig:config]; } - (UIView *)customIndicatorView { @@ -55,6 +59,10 @@ return NO; // 在 short 状态禁止继续往下拉(锁住最小高度) } +- (BOOL)allowsTouchEventsPassingThroughTransitionView { + return YES; +} + // 可选:完全不允许拖拽关闭(避免被拉到底消失) - (BOOL)allowsDragToDismiss { return NO; diff --git a/keyBoard/Class/Home/VC/HomeVC.m b/keyBoard/Class/Home/VC/HomeVC.m index a5f09f2..533205e 100644 --- a/keyBoard/Class/Home/VC/HomeVC.m +++ b/keyBoard/Class/Home/VC/HomeVC.m @@ -6,14 +6,12 @@ // #import "HomeVC.h" -#import "KBGuideVC.h" -#import "KBLangTestVC.h" +#import "HomeHeadView.h" #import "HomeSheetVC.h" -@interface HomeVC () -@property (nonatomic, strong) UITextView *textView; // 作为表头,保持原有键盘测试 -@property (nonatomic, strong) BaseTableView *tableView; // 首页列表 -@property (nonatomic, copy) NSArray *items; // 简单数据源 +@interface HomeVC () +@property (nonatomic, strong) HomeHeadView *headView; + @end @implementation HomeVC @@ -21,91 +19,34 @@ - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; - -// CGFloat width = [UIScreen mainScreen].bounds.size.width; -// UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 220)]; -// CGRect frame = CGRectMake(16, 16, width - 32, 188); -// self.textView = [[UITextView alloc] initWithFrame:frame]; -// self.textView.text = KBLocalized(@"home_input_placeholder"); -// self.textView.layer.borderColor = [UIColor blackColor].CGColor; -// self.textView.layer.borderWidth = 0.5; -// [header addSubview:self.textView]; -// -// // 列表 -// self.tableView = [[BaseTableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleInsetGrouped]; -// self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; -// self.tableView.delegate = self; -// self.tableView.dataSource = self; -// self.tableView.tableHeaderView = header; -// [self.view addSubview:self.tableView]; -// -// self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission"), @"皮肤中心" ]; -// -// dispatch_async(dispatch_get_main_queue(), ^{ [self.textView becomeFirstResponder]; }); -// -// [[KBNetworkManager shared] GET:@"app/config" parameters:nil headers:nil completion:^(id _Nullable jsonOrData, NSURLResponse * _Nullable response, NSError * _Nullable error) { -// NSLog(@"===="); -// }]; - + [self.view addSubview:self.headView]; + // 创建sheetVC HomeSheetVC *vc = [HomeSheetVC new]; vc.minHeight = 300; vc.topInset = 100; [self presentPanModal:vc]; } +- (void)setupMas{ + [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.view); + make.top.equalTo(self.view); + + }]; +} + - (void)viewWillAppear:(BOOL)animated{ [super viewWillAppear:animated]; -// self.title = KBLocalized(@"home_title"); -// self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission"), @"皮肤中心" ]; -// [self.tableView reloadData]; + } -- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ -// KBGuideVC *vc = [[KBGuideVC alloc] init]; -// [self.navigationController pushViewController:vc animated:true]; -// [KBHUD showInfo:@"加载中..."]; -// [KBHUD show]; -// [KBHUD showAllowTapToDismiss:true]; -} -#pragma mark - UITableViewDataSource -- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.items.count; } -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - static NSString *cellId = @"home.cell"; - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; - if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId]; } - cell.textLabel.text = self.items[indexPath.row]; - cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; - return cell; -} - -#pragma mark - UITableViewDelegate -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - if (indexPath.row == 0) { - // 多语言测试页 - KBLangTestVC *vc = [KBLangTestVC new]; - [self.navigationController pushViewController:vc animated:YES]; - } else if (indexPath.row == 1) { - // 键盘权限引导页 - KBGuideVC *vc = [KBGuideVC new]; - [self.navigationController pushViewController:vc animated:YES]; - } else if (indexPath.row == 2) { - // 皮肤中心 - UIViewController *vc = [NSClassFromString(@"KBSkinCenterVC") new]; - if (vc) { [self.navigationController pushViewController:vc animated:YES]; } +#pragma mark - lazy +- (HomeHeadView *)headView{ + if (!_headView) { + _headView = [[HomeHeadView alloc] init]; } + return _headView; } -/* -#pragma mark - Navigation - -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. -} -*/ - @end diff --git a/keyBoard/Class/Home/VC/KBTestVC.h b/keyBoard/Class/Home/VC/KBTestVC.h new file mode 100644 index 0000000..d6e38ef --- /dev/null +++ b/keyBoard/Class/Home/VC/KBTestVC.h @@ -0,0 +1,16 @@ +// +// KBTestVC.h +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBTestVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/KBTestVC.m b/keyBoard/Class/Home/VC/KBTestVC.m new file mode 100644 index 0000000..dc9b451 --- /dev/null +++ b/keyBoard/Class/Home/VC/KBTestVC.m @@ -0,0 +1,94 @@ +// +// KBTestVC.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "KBTestVC.h" +#import "KBGuideVC.h" +#import "KBLangTestVC.h" +@interface KBTestVC () +@property (nonatomic, strong) UITextView *textView; // 作为表头,保持原有键盘测试 +@property (nonatomic, strong) BaseTableView *tableView; // 首页列表 +@property (nonatomic, copy) NSArray *items; // 简单数据源 +@end + +@implementation KBTestVC + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor whiteColor]; + + + CGFloat width = [UIScreen mainScreen].bounds.size.width; + UIView *header = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 220)]; + CGRect frame = CGRectMake(16, 16, width - 32, 188); + self.textView = [[UITextView alloc] initWithFrame:frame]; + self.textView.text = KBLocalized(@"home_input_placeholder"); + self.textView.layer.borderColor = [UIColor blackColor].CGColor; + self.textView.layer.borderWidth = 0.5; + [header addSubview:self.textView]; + + // 列表 + self.tableView = [[BaseTableView alloc] initWithFrame:self.view.bounds style:UITableViewStyleInsetGrouped]; + self.tableView.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; + self.tableView.delegate = self; + self.tableView.dataSource = self; + self.tableView.tableHeaderView = header; + [self.view addSubview:self.tableView]; + + self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission"), @"皮肤中心" ]; + + dispatch_async(dispatch_get_main_queue(), ^{ [self.textView becomeFirstResponder]; }); + + [[KBNetworkManager shared] GET:@"app/config" parameters:nil headers:nil completion:^(id _Nullable jsonOrData, NSURLResponse * _Nullable response, NSError * _Nullable error) { + NSLog(@"===="); + }]; +} + +- (void)viewWillAppear:(BOOL)animated{ + [super viewWillAppear:animated]; + self.title = KBLocalized(@"home_title"); + self.items = @[ KBLocalized(@"home_item_lang_test"), KBLocalized(@"home_item_keyboard_permission"), @"皮肤中心" ]; + [self.tableView reloadData]; +} + +- (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ +// KBGuideVC *vc = [[KBGuideVC alloc] init]; +// [self.navigationController pushViewController:vc animated:true]; +// [KBHUD showInfo:@"加载中..."]; +// [KBHUD show]; +// [KBHUD showAllowTapToDismiss:true]; +} + +#pragma mark - UITableViewDataSource +- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView { return 1; } +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { return self.items.count; } +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + static NSString *cellId = @"home.cell"; + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:cellId]; + if (!cell) { cell = [[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:cellId]; } + cell.textLabel.text = self.items[indexPath.row]; + cell.accessoryType = UITableViewCellAccessoryDisclosureIndicator; + return cell; +} + +#pragma mark - UITableViewDelegate +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + if (indexPath.row == 0) { + // 多语言测试页 + KBLangTestVC *vc = [KBLangTestVC new]; + [self.navigationController pushViewController:vc animated:YES]; + } else if (indexPath.row == 1) { + // 键盘权限引导页 + KBGuideVC *vc = [KBGuideVC new]; + [self.navigationController pushViewController:vc animated:YES]; + } else if (indexPath.row == 2) { + // 皮肤中心 + UIViewController *vc = [NSClassFromString(@"KBSkinCenterVC") new]; + if (vc) { [self.navigationController pushViewController:vc animated:YES]; } + } +} +@end From 15fc9621cd728a8049699ca1bee951343487c41c Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 14:02:22 +0800 Subject: [PATCH 07/47] 2 --- Shared/KBConfig.h | 26 +++ keyBoard.xcodeproj/project.pbxproj | 32 +++- keyBoard/Class/Home/V/HomeHeadView.m | 11 +- .../Home/VC/{ => FunctionTest}/KBLangTestVC.h | 0 .../Home/VC/{ => FunctionTest}/KBLangTestVC.m | 0 .../VC/{ => FunctionTest}/KBSkinCenterVC.h | 0 .../VC/{ => FunctionTest}/KBSkinCenterVC.m | 0 .../Home/VC/{ => FunctionTest}/KBTestVC.h | 0 .../Home/VC/{ => FunctionTest}/KBTestVC.m | 0 keyBoard/Class/Home/VC/HomeHotVC.h | 16 ++ keyBoard/Class/Home/VC/HomeHotVC.m | 31 +++ keyBoard/Class/Home/VC/HomeRankVC.h | 16 ++ keyBoard/Class/Home/VC/HomeRankVC.m | 31 +++ keyBoard/Class/Home/VC/HomeSheetVC.m | 179 ++++++++++++++++++ keyBoard/Class/Home/VC/HomeVC.m | 11 +- 15 files changed, 337 insertions(+), 16 deletions(-) rename keyBoard/Class/Home/VC/{ => FunctionTest}/KBLangTestVC.h (100%) rename keyBoard/Class/Home/VC/{ => FunctionTest}/KBLangTestVC.m (100%) rename keyBoard/Class/Home/VC/{ => FunctionTest}/KBSkinCenterVC.h (100%) rename keyBoard/Class/Home/VC/{ => FunctionTest}/KBSkinCenterVC.m (100%) rename keyBoard/Class/Home/VC/{ => FunctionTest}/KBTestVC.h (100%) rename keyBoard/Class/Home/VC/{ => FunctionTest}/KBTestVC.m (100%) create mode 100644 keyBoard/Class/Home/VC/HomeHotVC.h create mode 100644 keyBoard/Class/Home/VC/HomeHotVC.m create mode 100644 keyBoard/Class/Home/VC/HomeRankVC.h create mode 100644 keyBoard/Class/Home/VC/HomeRankVC.m diff --git a/Shared/KBConfig.h b/Shared/KBConfig.h index d4e343d..e525573 100644 --- a/Shared/KBConfig.h +++ b/Shared/KBConfig.h @@ -8,6 +8,11 @@ #ifndef KBConfig_h #define KBConfig_h +// UIKit is needed for CGFloat and UIScreen used by size-adaptation helpers +#if __OBJC__ +#import +#endif + // 基础baseUrl #ifndef KB_BASE_URL #define KB_BASE_URL @"https://m1.apifoxmock.com/m1/5438099-5113192-default/" @@ -45,6 +50,27 @@ #define KB_APP_SCHEME @"kbkeyboardAppExtension" #endif +// --- 尺寸适配(以 375 设计稿为基准) --- +// 用法:传入设计稿上的数值,返回按当前屏幕宽度缩放后的值。 +// 例如:CGFloat padding = KBFit(16); +#ifndef KB_DESIGN_WIDTH +#define KB_DESIGN_WIDTH 375.0 +#endif + +#if __OBJC__ +static inline CGFloat KBScreenWidth(void) { + return [UIScreen mainScreen].bounds.size.width; +} + +static inline CGFloat KBScaleFactor(void) { + return KBScreenWidth() / (CGFloat)KB_DESIGN_WIDTH; +} + +static inline CGFloat KBFit(CGFloat designValue) { + return designValue * KBScaleFactor(); +} +#endif + // --- 常用宏 --- // 弱引用 self(在 block 中避免循环引用):使用处直接写 KBWeakSelf; #ifndef KBWeakSelf diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 4038055..aec26d4 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -16,6 +16,8 @@ 0477BDF32EBB7B850055D639 /* KBDirectionIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */; }; 0477BDF72EBC63A80055D639 /* KBTestVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF62EBC63A80055D639 /* KBTestVC.m */; }; 0477BDFA2EBC66340055D639 /* HomeHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF92EBC66340055D639 /* HomeHeadView.m */; }; + 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDFC2EBC6A170055D639 /* HomeHotVC.m */; }; + 0477BE002EBC6A330055D639 /* HomeRankVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -109,6 +111,10 @@ 0477BDF62EBC63A80055D639 /* KBTestVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBTestVC.m; sourceTree = ""; }; 0477BDF82EBC66340055D639 /* HomeHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeHeadView.h; sourceTree = ""; }; 0477BDF92EBC66340055D639 /* HomeHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeHeadView.m; sourceTree = ""; }; + 0477BDFB2EBC6A170055D639 /* HomeHotVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeHotVC.h; sourceTree = ""; }; + 0477BDFC2EBC6A170055D639 /* HomeHotVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeHotVC.m; sourceTree = ""; }; + 0477BDFE2EBC6A330055D639 /* HomeRankVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeRankVC.h; sourceTree = ""; }; + 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeRankVC.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -241,6 +247,19 @@ path = Utils; sourceTree = ""; }; + 0477BE012EBC6D420055D639 /* FunctionTest */ = { + isa = PBXGroup; + children = ( + 0477BDF52EBC63A80055D639 /* KBTestVC.h */, + 0477BDF62EBC63A80055D639 /* KBTestVC.m */, + A1B2D7002EB8C00100000001 /* KBLangTestVC.h */, + A1B2D7012EB8C00100000001 /* KBLangTestVC.m */, + 0459D1B22EBA284C00F2D189 /* KBSkinCenterVC.h */, + 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */, + ); + path = FunctionTest; + sourceTree = ""; + }; 04A9FE122EB4D0D20020DB6D /* Manager */ = { isa = PBXGroup; children = ( @@ -363,14 +382,13 @@ children = ( 04FC95CD2EB1E7A1007BD342 /* HomeVC.h */, 04FC95CE2EB1E7A1007BD342 /* HomeVC.m */, - A1B2D7002EB8C00100000001 /* KBLangTestVC.h */, - A1B2D7012EB8C00100000001 /* KBLangTestVC.m */, - 0459D1B22EBA284C00F2D189 /* KBSkinCenterVC.h */, - 0459D1B32EBA284C00F2D189 /* KBSkinCenterVC.m */, 0477BDEE2EBB76E30055D639 /* HomeSheetVC.h */, 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */, - 0477BDF52EBC63A80055D639 /* KBTestVC.h */, - 0477BDF62EBC63A80055D639 /* KBTestVC.m */, + 0477BDFB2EBC6A170055D639 /* HomeHotVC.h */, + 0477BDFC2EBC6A170055D639 /* HomeHotVC.m */, + 0477BDFE2EBC6A330055D639 /* HomeRankVC.h */, + 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */, + 0477BE012EBC6D420055D639 /* FunctionTest */, ); path = VC; sourceTree = ""; @@ -885,6 +903,7 @@ files = ( 04FC95E92EB23B67007BD342 /* KBNetworkManager.m in Sources */, 04FC95D22EB1E7AE007BD342 /* MyVC.m in Sources */, + 0477BE002EBC6A330055D639 /* HomeRankVC.m in Sources */, 043FBCD22EAF97630036AFE1 /* KBPermissionViewController.m in Sources */, 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */, 04C6EABE2EAF86530089C901 /* AppDelegate.m in Sources */, @@ -910,6 +929,7 @@ A1B2D7022EB8C00100000001 /* KBLangTestVC.m in Sources */, 04C6EABF2EAF86530089C901 /* main.m in Sources */, 04FC95CC2EB1E780007BD342 /* BaseTabBarController.m in Sources */, + 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */, 0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */, 04FC95F42EB339C1007BD342 /* AppleSignInManager.m in Sources */, 04C6EAC12EAF86530089C901 /* ViewController.m in Sources */, diff --git a/keyBoard/Class/Home/V/HomeHeadView.m b/keyBoard/Class/Home/V/HomeHeadView.m index 41ce832..9fa922d 100644 --- a/keyBoard/Class/Home/V/HomeHeadView.m +++ b/keyBoard/Class/Home/V/HomeHeadView.m @@ -9,12 +9,11 @@ @implementation HomeHeadView -/* -// Only override drawRect: if you perform custom drawing. -// An empty implementation adversely affects performance during animation. -- (void)drawRect:(CGRect)rect { - // Drawing code +- (instancetype)initWithFrame:(CGRect)frame{ + if (self = [super initWithFrame:frame]) { + self.backgroundColor = [UIColor blueColor]; + } + return self; } -*/ @end diff --git a/keyBoard/Class/Home/VC/KBLangTestVC.h b/keyBoard/Class/Home/VC/FunctionTest/KBLangTestVC.h similarity index 100% rename from keyBoard/Class/Home/VC/KBLangTestVC.h rename to keyBoard/Class/Home/VC/FunctionTest/KBLangTestVC.h diff --git a/keyBoard/Class/Home/VC/KBLangTestVC.m b/keyBoard/Class/Home/VC/FunctionTest/KBLangTestVC.m similarity index 100% rename from keyBoard/Class/Home/VC/KBLangTestVC.m rename to keyBoard/Class/Home/VC/FunctionTest/KBLangTestVC.m diff --git a/keyBoard/Class/Home/VC/KBSkinCenterVC.h b/keyBoard/Class/Home/VC/FunctionTest/KBSkinCenterVC.h similarity index 100% rename from keyBoard/Class/Home/VC/KBSkinCenterVC.h rename to keyBoard/Class/Home/VC/FunctionTest/KBSkinCenterVC.h diff --git a/keyBoard/Class/Home/VC/KBSkinCenterVC.m b/keyBoard/Class/Home/VC/FunctionTest/KBSkinCenterVC.m similarity index 100% rename from keyBoard/Class/Home/VC/KBSkinCenterVC.m rename to keyBoard/Class/Home/VC/FunctionTest/KBSkinCenterVC.m diff --git a/keyBoard/Class/Home/VC/KBTestVC.h b/keyBoard/Class/Home/VC/FunctionTest/KBTestVC.h similarity index 100% rename from keyBoard/Class/Home/VC/KBTestVC.h rename to keyBoard/Class/Home/VC/FunctionTest/KBTestVC.h diff --git a/keyBoard/Class/Home/VC/KBTestVC.m b/keyBoard/Class/Home/VC/FunctionTest/KBTestVC.m similarity index 100% rename from keyBoard/Class/Home/VC/KBTestVC.m rename to keyBoard/Class/Home/VC/FunctionTest/KBTestVC.m diff --git a/keyBoard/Class/Home/VC/HomeHotVC.h b/keyBoard/Class/Home/VC/HomeHotVC.h new file mode 100644 index 0000000..59c8c35 --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeHotVC.h @@ -0,0 +1,16 @@ +// +// HomeHotVC.h +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeHotVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/HomeHotVC.m b/keyBoard/Class/Home/VC/HomeHotVC.m new file mode 100644 index 0000000..1725328 --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeHotVC.m @@ -0,0 +1,31 @@ +// +// HomeHotVC.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "HomeHotVC.h" + +@interface HomeHotVC () + +@end + +@implementation HomeHotVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/keyBoard/Class/Home/VC/HomeRankVC.h b/keyBoard/Class/Home/VC/HomeRankVC.h new file mode 100644 index 0000000..e439160 --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeRankVC.h @@ -0,0 +1,16 @@ +// +// HomeRankVC.h +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeRankVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/HomeRankVC.m b/keyBoard/Class/Home/VC/HomeRankVC.m new file mode 100644 index 0000000..802a286 --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeRankVC.m @@ -0,0 +1,31 @@ +// +// HomeRankVC.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "HomeRankVC.h" + +@interface HomeRankVC () + +@end + +@implementation HomeRankVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/keyBoard/Class/Home/VC/HomeSheetVC.m b/keyBoard/Class/Home/VC/HomeSheetVC.m index 4e4a5f9..ae320e8 100644 --- a/keyBoard/Class/Home/VC/HomeSheetVC.m +++ b/keyBoard/Class/Home/VC/HomeSheetVC.m @@ -7,9 +7,24 @@ #import "HomeSheetVC.h" #import "KBDirectionIndicatorView.h" +// 子控制器 +#import "HomeHotVC.h" +#import "HomeRankVC.h" @interface HomeSheetVC () @property (nonatomic, strong) KBDirectionIndicatorView *indicator; + +// 顶部切换按钮与指示条 +@property (nonatomic, strong) UIView *topBar; +@property (nonatomic, strong) UIButton *hotButton; +@property (nonatomic, strong) UIButton *rankButton; +@property (nonatomic, strong) UIView *underlineView; // 选中下划线 + +// 承载子控制器内容 +@property (nonatomic, strong) UIView *containerView; +@property (nonatomic, strong) UIViewController *currentChild; +@property (nonatomic, strong) HomeHotVC *hotVC; +@property (nonatomic, strong) HomeRankVC *rankVC; @end @implementation HomeSheetVC @@ -22,6 +37,11 @@ config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; config.backgroundAlpha = 0.01; [self.hw_dimmedView reloadConfig:config]; + + // 顶部按钮 + 容器 + [self setupTopButtonsAndContainer]; + // 默认展示“热门” + [self switchToIndex:0 animated:NO]; } - (UIView *)customIndicatorView { @@ -32,6 +52,13 @@ - (void)panModalTransitionDidFinish { // 初次展示后按当前状态设定一次朝向 [self.indicator applyPresentationState:self.hw_presentationState]; + // 避免出现内容随弹窗上移的“位移动画”观感: + // 顶部栏在展示动画期间先隐藏,待完成后淡入 + if (self.topBar && self.topBar.alpha < 1.0) { + [UIView animateWithDuration:0.18 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ + self.topBar.alpha = 1.0; + } completion:nil]; + } } - (void)didChangeTransitionToState:(PresentationState)state { @@ -77,5 +104,157 @@ return NO; } +// 出现时不做上推动画(瞬时到位) +- (NSTimeInterval)transitionDuration { + return 0; +} + +// 可选:关闭触觉反馈,避免出现时的轻微震动 +- (BOOL)isHapticFeedbackEnabled { + return NO; +} + + +#pragma mark - UI + +- (void)setupTopButtonsAndContainer { + // 顶部栏 + self.topBar = [[UIView alloc] init]; + self.topBar.backgroundColor = [UIColor colorWithWhite:1 alpha:0.9]; + [self.view addSubview:self.topBar]; + // 首次展示时先隐藏,待转场完成后再淡入,避免“自底向上滑入”的错觉 + self.topBar.alpha = 0.0; + + // 两个按钮 + self.hotButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [self.hotButton setTitle:@"热门" forState:UIControlStateNormal]; + [self.hotButton setTitleColor:[UIColor darkTextColor] forState:UIControlStateNormal]; + [self.hotButton setTitleColor:[UIColor blackColor] forState:UIControlStateSelected]; + self.hotButton.titleLabel.font = [UIFont boldSystemFontOfSize:16]; + self.hotButton.tag = 0; + [self.hotButton addTarget:self action:@selector(onTapTopButton:) forControlEvents:UIControlEventTouchUpInside]; + [self.topBar addSubview:self.hotButton]; + + self.rankButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [self.rankButton setTitle:@"排行" forState:UIControlStateNormal]; + [self.rankButton setTitleColor:[UIColor darkTextColor] forState:UIControlStateNormal]; + [self.rankButton setTitleColor:[UIColor blackColor] forState:UIControlStateSelected]; + self.rankButton.titleLabel.font = [UIFont boldSystemFontOfSize:16]; + self.rankButton.tag = 1; + [self.rankButton addTarget:self action:@selector(onTapTopButton:) forControlEvents:UIControlEventTouchUpInside]; + [self.topBar addSubview:self.rankButton]; + + // 下划线(跟随选中按钮) + self.underlineView = [[UIView alloc] init]; + self.underlineView.backgroundColor = [UIColor blackColor]; + self.underlineView.layer.cornerRadius = 1.0; + [self.topBar addSubview:self.underlineView]; + + // 容器视图 + self.containerView = [[UIView alloc] init]; + self.containerView.backgroundColor = [UIColor whiteColor]; + self.containerView.clipsToBounds = YES; + [self.view addSubview:self.containerView]; + + // Masonry 约束 + CGFloat topPadding = 12; // 与顶部小指示器留点空间 + [self.topBar mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.view); + make.top.equalTo(self.view).offset(topPadding); + make.height.mas_equalTo(44); + }]; + + [self.hotButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.equalTo(self.topBar); + make.left.equalTo(self.topBar); + }]; + [self.rankButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.equalTo(self.topBar); + make.right.equalTo(self.topBar); + make.left.equalTo(self.hotButton.mas_right); + make.width.equalTo(self.hotButton); + }]; + + // 初始先放在“热门”下方,宽度稍小于按钮文字 + [self.underlineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(2); + make.bottom.equalTo(self.topBar.mas_bottom).offset(-2); + make.centerX.equalTo(self.hotButton); + make.width.mas_equalTo(24); + }]; + + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.topBar.mas_bottom).offset(8); + make.left.right.bottom.equalTo(self.view); + }]; +} + +#pragma mark - Action + +- (void)onTapTopButton:(UIButton *)sender { + [self switchToIndex:sender.tag animated:YES]; +} + +#pragma mark - Switch Child + +- (void)switchToIndex:(NSInteger)index animated:(BOOL)animated { + UIViewController *target = (index == 0) ? self.hotVC : self.rankVC; + if (!target) { + if (index == 0) { + self.hotVC = [HomeHotVC new]; + target = self.hotVC; + } else { + self.rankVC = [HomeRankVC new]; + target = self.rankVC; + } + } + + if (self.currentChild == target) { + // 已经是目标 + [self updateButtonStateForIndex:index animated:animated]; + return; + } + + // 移除当前 + if (self.currentChild) { + [self.currentChild willMoveToParentViewController:nil]; + [self.currentChild.view removeFromSuperview]; + [self.currentChild removeFromParentViewController]; + } + + // 添加目标 + [self addChildViewController:target]; + [self.containerView addSubview:target.view]; + target.view.backgroundColor = [UIColor colorWithWhite:0.98 alpha:1]; + [target.view mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.containerView); + }]; + [target didMoveToParentViewController:self]; + self.currentChild = target; + + [self updateButtonStateForIndex:index animated:animated]; +} + +- (void)updateButtonStateForIndex:(NSInteger)index animated:(BOOL)animated { + self.hotButton.selected = (index == 0); + self.rankButton.selected = (index == 1); + + UIButton *btn = (index == 0) ? self.hotButton : self.rankButton; + // 更新下划线位置 + [self.underlineView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(2); + make.bottom.equalTo(self.topBar.mas_bottom).offset(-2); + make.centerX.equalTo(btn); + make.width.mas_equalTo(24); + }]; + + if (animated) { + [UIView animateWithDuration:0.25 animations:^{ + [self.topBar layoutIfNeeded]; + }]; + } else { + [self.topBar layoutIfNeeded]; + } +} @end diff --git a/keyBoard/Class/Home/VC/HomeVC.m b/keyBoard/Class/Home/VC/HomeVC.m index 533205e..639b8d5 100644 --- a/keyBoard/Class/Home/VC/HomeVC.m +++ b/keyBoard/Class/Home/VC/HomeVC.m @@ -19,19 +19,22 @@ - (void)viewDidLoad { [super viewDidLoad]; self.view.backgroundColor = [UIColor whiteColor]; + CGFloat topV = KBFit(500); + [self.view addSubview:self.headView]; + [self setupMas:topV]; // 创建sheetVC - HomeSheetVC *vc = [HomeSheetVC new]; - vc.minHeight = 300; + HomeSheetVC *vc = [[HomeSheetVC alloc] init]; + vc.minHeight = KB_SCREEN_HEIGHT - topV - 30; vc.topInset = 100; [self presentPanModal:vc]; } -- (void)setupMas{ +- (void)setupMas:(CGFloat)headViewTopV{ [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self.view); make.top.equalTo(self.view); - + make.height.mas_equalTo(headViewTopV); }]; } From a1db745b6c4907580e27d9beb76bc41afc1706e7 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 14:59:00 +0800 Subject: [PATCH 08/47] 3 --- keyBoard.xcodeproj/project.pbxproj | 12 ++ keyBoard/Class/Home/V/HomeHotCell.h | 20 +++ keyBoard/Class/Home/V/HomeHotCell.m | 134 +++++++++++++++ keyBoard/Class/Home/V/KBTopThreeView.h | 21 +++ keyBoard/Class/Home/V/KBTopThreeView.m | 220 +++++++++++++++++++++++++ keyBoard/Class/Home/VC/HomeHotVC.h | 3 +- keyBoard/Class/Home/VC/HomeHotVC.m | 88 +++++++++- keyBoard/Class/Home/VC/HomeSheetVC.m | 34 ++-- keyBoard/Class/Home/VC/HomeVC.m | 9 +- 9 files changed, 517 insertions(+), 24 deletions(-) create mode 100644 keyBoard/Class/Home/V/HomeHotCell.h create mode 100644 keyBoard/Class/Home/V/HomeHotCell.m create mode 100644 keyBoard/Class/Home/V/KBTopThreeView.h create mode 100644 keyBoard/Class/Home/V/KBTopThreeView.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index aec26d4..cd059c7 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -14,6 +14,8 @@ 0477BD952EBAFF4E0055D639 /* KBURLOpenBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BD932EBAFF4E0055D639 /* KBURLOpenBridge.m */; }; 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */; }; 0477BDF32EBB7B850055D639 /* KBDirectionIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */; }; + A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */; }; + A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */; }; 0477BDF72EBC63A80055D639 /* KBTestVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF62EBC63A80055D639 /* KBTestVC.m */; }; 0477BDFA2EBC66340055D639 /* HomeHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF92EBC66340055D639 /* HomeHeadView.m */; }; 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDFC2EBC6A170055D639 /* HomeHotVC.m */; }; @@ -107,6 +109,10 @@ 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeSheetVC.m; sourceTree = ""; }; 0477BDF12EBB7B850055D639 /* KBDirectionIndicatorView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBDirectionIndicatorView.h; sourceTree = ""; }; 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBDirectionIndicatorView.m; sourceTree = ""; }; + A1B2E0012EBC7AAA00000001 /* KBTopThreeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBTopThreeView.h; sourceTree = ""; }; + A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBTopThreeView.m; sourceTree = ""; }; + A1B2E0032EBC7AAA00000001 /* HomeHotCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeHotCell.h; sourceTree = ""; }; + A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeHotCell.m; sourceTree = ""; }; 0477BDF52EBC63A80055D639 /* KBTestVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBTestVC.h; sourceTree = ""; }; 0477BDF62EBC63A80055D639 /* KBTestVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBTestVC.m; sourceTree = ""; }; 0477BDF82EBC66340055D639 /* HomeHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeHeadView.h; sourceTree = ""; }; @@ -373,6 +379,10 @@ 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */, 0477BDF82EBC66340055D639 /* HomeHeadView.h */, 0477BDF92EBC66340055D639 /* HomeHeadView.m */, + A1B2E0012EBC7AAA00000001 /* KBTopThreeView.h */, + A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */, + A1B2E0032EBC7AAA00000001 /* HomeHotCell.h */, + A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */, ); path = V; sourceTree = ""; @@ -930,6 +940,8 @@ 04C6EABF2EAF86530089C901 /* main.m in Sources */, 04FC95CC2EB1E780007BD342 /* BaseTabBarController.m in Sources */, 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */, + A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */, + A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */, 0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */, 04FC95F42EB339C1007BD342 /* AppleSignInManager.m in Sources */, 04C6EAC12EAF86530089C901 /* ViewController.m in Sources */, diff --git a/keyBoard/Class/Home/V/HomeHotCell.h b/keyBoard/Class/Home/V/HomeHotCell.h new file mode 100644 index 0000000..8884126 --- /dev/null +++ b/keyBoard/Class/Home/V/HomeHotCell.h @@ -0,0 +1,20 @@ +// +// HomeHotCell.h +// keyBoard +// +// 自定义 cell:左侧序号与圆形头像,占位标题/副标题,右侧加入按钮。 +// + +#import "BaseCell.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeHotCell : BaseCell + +/// 配置数据 +- (void)configWithRank:(NSInteger)rank title:(NSString *)title subtitle:(NSString *)sub joined:(BOOL)joined; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Home/V/HomeHotCell.m b/keyBoard/Class/Home/V/HomeHotCell.m new file mode 100644 index 0000000..950316a --- /dev/null +++ b/keyBoard/Class/Home/V/HomeHotCell.m @@ -0,0 +1,134 @@ +// +// HomeHotCell.m +// keyBoard +// + +#import "HomeHotCell.h" + +@interface HomeHotCell() +// 左侧序号 +@property (nonatomic, strong) UILabel *rankLabel; +// 左侧圆形头像占位 +@property (nonatomic, strong) UIView *avatarView; +// 标题 +@property (nonatomic, strong) UILabel *titleLabel; +// 副标题 +@property (nonatomic, strong) UILabel *subLabel; +// 右侧加入按钮(或已加入勾选) +@property (nonatomic, strong) UIButton *actionButton; +@end + +@implementation HomeHotCell + +- (void)setupUI { + [super setupUI]; + + // 添加控件 + [self.contentView addSubview:self.rankLabel]; + [self.contentView addSubview:self.avatarView]; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.subLabel]; + [self.contentView addSubview:self.actionButton]; + + // 布局(使用 Masonry) + [self.rankLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.contentView).offset(16); + make.centerY.equalTo(self.contentView); + }]; + + [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.rankLabel.mas_right).offset(12); + make.centerY.equalTo(self.contentView); + make.width.height.mas_equalTo(52); + }]; + + [self.actionButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.contentView); + make.right.equalTo(self.contentView).offset(-16); + make.width.mas_equalTo(64); + make.height.mas_equalTo(36); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.avatarView.mas_right).offset(12); + make.top.equalTo(self.avatarView.mas_top).offset(-2); + make.right.lessThanOrEqualTo(self.actionButton.mas_left).offset(-12); + }]; + + [self.subLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.titleLabel); + make.right.equalTo(self.titleLabel); + make.bottom.equalTo(self.avatarView.mas_bottom).offset(2); + }]; +} + +- (void)configWithRank:(NSInteger)rank title:(NSString *)title subtitle:(NSString *)sub joined:(BOOL)joined { + self.rankLabel.text = [NSString stringWithFormat:@"%ld", (long)rank]; + self.titleLabel.text = title ?: @""; + self.subLabel.text = sub ?: @""; + + if (joined) { + // 已加入状态:灰背景、打勾 + [self.actionButton setTitle:@"✓" forState:UIControlStateNormal]; + [self.actionButton setTitleColor:[UIColor colorWithWhite:0.45 alpha:1] forState:UIControlStateNormal]; + self.actionButton.backgroundColor = [UIColor colorWithWhite:0.92 alpha:1]; + } else { + // 可加入状态:绿色加号 + [self.actionButton setTitle:@"+" forState:UIControlStateNormal]; + [self.actionButton setTitleColor:[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] forState:UIControlStateNormal]; + self.actionButton.backgroundColor = [UIColor colorWithRed:0.88 green:0.97 blue:0.93 alpha:1.0]; + } +} + +#pragma mark - Lazy + +- (UILabel *)rankLabel { + if (!_rankLabel) { + _rankLabel = [[UILabel alloc] init]; + _rankLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _rankLabel.textColor = [UIColor colorWithRed:0.15 green:0.55 blue:0.45 alpha:1.0]; + } + return _rankLabel; +} + +- (UIView *)avatarView { + if (!_avatarView) { + _avatarView = [[UIView alloc] init]; + _avatarView.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1]; + _avatarView.layer.cornerRadius = 26; + _avatarView.layer.masksToBounds = YES; + } + return _avatarView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _titleLabel.textColor = [UIColor colorWithWhite:0.1 alpha:1]; + } + return _titleLabel; +} + +- (UILabel *)subLabel { + if (!_subLabel) { + _subLabel = [[UILabel alloc] init]; + _subLabel.font = [UIFont systemFontOfSize:13]; + _subLabel.textColor = [UIColor colorWithWhite:0.5 alpha:1]; + _subLabel.numberOfLines = 1; + } + return _subLabel; +} + +- (UIButton *)actionButton { + if (!_actionButton) { + _actionButton = [UIButton buttonWithType:UIButtonTypeCustom]; + _actionButton.layer.cornerRadius = 18; + _actionButton.layer.masksToBounds = YES; + _actionButton.titleLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightBold]; + } + return _actionButton; +} + +@end + diff --git a/keyBoard/Class/Home/V/KBTopThreeView.h b/keyBoard/Class/Home/V/KBTopThreeView.h new file mode 100644 index 0000000..1b0b882 --- /dev/null +++ b/keyBoard/Class/Home/V/KBTopThreeView.h @@ -0,0 +1,21 @@ +// +// KBTopThreeView.h +// keyBoard +// +// 顶部前三名展示视图:内部横向三栏,样式参考设计图。 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 用于 HomeHot 顶部展示前三名的视图 +@interface KBTopThreeView : UIView + +/// 配置三项内容(数组元素可传 @{ @"title":NSString, @"rank":@(1/2/3) }) +- (void)configWithItems:(NSArray *)items; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Home/V/KBTopThreeView.m b/keyBoard/Class/Home/V/KBTopThreeView.m new file mode 100644 index 0000000..0f2d15d --- /dev/null +++ b/keyBoard/Class/Home/V/KBTopThreeView.m @@ -0,0 +1,220 @@ +// +// KBTopThreeView.m +// keyBoard +// + +#import "KBTopThreeView.h" + +@interface KBTopThreeCardView : UIView +/// 头像占位(圆形描边) +@property (nonatomic, strong) UIView *avatarCircleView; +/// 彩条卡片背景 +@property (nonatomic, strong) UIView *cardView; +/// 勋章数字(1/2/3) +@property (nonatomic, strong) UILabel *medalLabel; +/// 标题 +@property (nonatomic, strong) UILabel *titleLabel; +/// 底部加号按钮 +@property (nonatomic, strong) UIButton *plusButton; + +/// 渲染 +- (void)renderWithTitle:(NSString *)title rank:(NSInteger)rank; +@end + +@implementation KBTopThreeCardView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self setupUI]; + } + return self; +} + +- (void)setupUI { + // 卡片 + [self addSubview:self.cardView]; + // 头像圆圈 + [self addSubview:self.avatarCircleView]; + [self.cardView addSubview:self.medalLabel]; + [self.cardView addSubview:self.titleLabel]; + // 加号按钮 + [self addSubview:self.plusButton]; + + // 布局 + [self.avatarCircleView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self); + make.centerX.equalTo(self); + make.width.height.mas_equalTo(68); + }]; + + [self.cardView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.avatarCircleView.mas_bottom).offset(-34); // 顶部悬浮重叠 + make.left.right.equalTo(self); + make.height.mas_equalTo(146); + }]; + + [self.medalLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.cardView).offset(34 + 15); + make.centerX.equalTo(self.cardView); + make.width.height.mas_equalTo(28); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(self.cardView); + make.top.equalTo(self.medalLabel.mas_bottom).offset(20); + }]; + + [self.plusButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.cardView.mas_bottom).offset(12); + make.centerX.equalTo(self); + make.width.mas_equalTo(52); + make.height.mas_equalTo(28); + make.bottom.equalTo(self.mas_bottom); // 由外部控制总体高度 + }]; +} + +- (void)renderWithTitle:(NSString *)title rank:(NSInteger)rank { + self.titleLabel.text = title.length ? title : @""; + self.medalLabel.text = [NSString stringWithFormat:@"%ld", (long)rank]; + + // 不同名次数的配色 + UIColor *theme; + switch (rank) { + case 1: theme = [UIColor colorWithRed:1.00 green:0.86 blue:0.43 alpha:1.0]; break; // 金 + case 2: theme = [UIColor colorWithRed:0.68 green:0.80 blue:1.00 alpha:1.0]; break; // 蓝 + default: theme = [UIColor colorWithRed:1.00 green:0.78 blue:0.63 alpha:1.0]; break; // 橙 + } + self.cardView.backgroundColor = theme; + self.plusButton.backgroundColor = [theme colorWithAlphaComponent:0.3]; + + // 圆圈描边 + self.avatarCircleView.layer.borderColor = [UIColor colorWithRed:0.83 green:0.95 blue:0.27 alpha:1.0].CGColor; +} + +#pragma mark - Lazy + +- (UIView *)avatarCircleView { + if (!_avatarCircleView) { + _avatarCircleView = [[UIView alloc] init]; + _avatarCircleView.backgroundColor = [UIColor whiteColor]; + _avatarCircleView.layer.cornerRadius = 34; + _avatarCircleView.layer.borderWidth = 2.0; + _avatarCircleView.layer.borderColor = [UIColor colorWithWhite:0.9 alpha:1].CGColor; + // 可在此加入头像 UIImageView + } + return _avatarCircleView; +} + +- (UIView *)cardView { + if (!_cardView) { + _cardView = [[UIView alloc] init]; + _cardView.layer.cornerRadius = 14.0; + _cardView.layer.masksToBounds = YES; + _cardView.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1]; + } + return _cardView; +} + +- (UILabel *)medalLabel { + if (!_medalLabel) { + _medalLabel = [[UILabel alloc] init]; + _medalLabel.textAlignment = NSTextAlignmentCenter; + _medalLabel.font = [UIFont boldSystemFontOfSize:15]; + _medalLabel.textColor = [UIColor whiteColor]; + _medalLabel.backgroundColor = [UIColor colorWithWhite:0.3 alpha:0.7]; + _medalLabel.layer.cornerRadius = 14; + _medalLabel.layer.masksToBounds = YES; + } + return _medalLabel; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textColor = [UIColor colorWithWhite:0.1 alpha:1]; + _titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UIButton *)plusButton { + if (!_plusButton) { + _plusButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_plusButton setTitle:@"+" forState:UIControlStateNormal]; + [_plusButton setTitleColor:[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] forState:UIControlStateNormal]; + _plusButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _plusButton.layer.cornerRadius = 14.0; + _plusButton.layer.masksToBounds = YES; + } + return _plusButton; +} + +@end + + +@interface KBTopThreeView() +@property (nonatomic, strong) KBTopThreeCardView *leftCard; +@property (nonatomic, strong) KBTopThreeCardView *centerCard; +@property (nonatomic, strong) KBTopThreeCardView *rightCard; +@end + +@implementation KBTopThreeView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.backgroundColor = [UIColor colorWithWhite:0.98 alpha:1]; + [self setupUI]; + } + return self; +} + +- (void)setupUI { + [self addSubview:self.leftCard]; + [self addSubview:self.centerCard]; + [self addSubview:self.rightCard]; + + // 横向均分布局 + [self.centerCard mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(self); + make.top.equalTo(self).offset(8); + make.width.equalTo(self.mas_width).multipliedBy(1.0/3.0).offset(-12); + }]; + [self.leftCard mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.centerCard); + make.right.equalTo(self.centerCard.mas_left).offset(-8); + make.width.equalTo(self.centerCard); + }]; + [self.rightCard mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.centerCard); + make.left.equalTo(self.centerCard.mas_right).offset(8); + make.width.equalTo(self.centerCard); + }]; + + // 让最右/最左卡片对齐底部,撑起本视图 + [self.leftCard mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self).offset(-8); }]; + [self.rightCard mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self).offset(-8); }]; +} + +- (void)configWithItems:(NSArray *)items { + // items 顺序任意,这里按 rank 分配:1 放中间,2 左,3 右 + NSString *t1 = @"", *t2 = @"", *t3 = @""; + for (NSDictionary *d in items) { + NSInteger r = [d[@"rank"] integerValue]; + NSString *title = d[@"title"] ?: @""; + if (r == 1) t1 = title; + else if (r == 2) t2 = title; + else if (r == 3) t3 = title; + } + [self.centerCard renderWithTitle:t1 rank:1]; + [self.leftCard renderWithTitle:t2 rank:2]; + [self.rightCard renderWithTitle:t3 rank:3]; +} + +#pragma mark - Lazy +- (KBTopThreeCardView *)leftCard { if (!_leftCard) _leftCard = [KBTopThreeCardView new]; return _leftCard; } +- (KBTopThreeCardView *)centerCard { if (!_centerCard) _centerCard = [KBTopThreeCardView new]; return _centerCard; } +- (KBTopThreeCardView *)rightCard { if (!_rightCard) _rightCard = [KBTopThreeCardView new]; return _rightCard; } + +@end + diff --git a/keyBoard/Class/Home/VC/HomeHotVC.h b/keyBoard/Class/Home/VC/HomeHotVC.h index 59c8c35..2d43462 100644 --- a/keyBoard/Class/Home/VC/HomeHotVC.h +++ b/keyBoard/Class/Home/VC/HomeHotVC.h @@ -10,7 +10,8 @@ NS_ASSUME_NONNULL_BEGIN @interface HomeHotVC : UIViewController - +// 列表 +@property (nonatomic, strong) BaseTableView *tableView; @end NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/HomeHotVC.m b/keyBoard/Class/Home/VC/HomeHotVC.m index 1725328..ef62dc0 100644 --- a/keyBoard/Class/Home/VC/HomeHotVC.m +++ b/keyBoard/Class/Home/VC/HomeHotVC.m @@ -6,6 +6,18 @@ // #import "HomeHotVC.h" +// 视图 +#import "KBTopThreeView.h" +#import "HomeHotCell.h" +#import +@interface HomeHotVC () + +// 顶部前三名视图 +@property (nonatomic, strong) KBTopThreeView *topThreeView; + +@property (nonatomic, strong) NSArray *dataSource; // 简单模拟数据 + +@end @interface HomeHotVC () @@ -15,17 +27,77 @@ - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view. + self.view.backgroundColor = [UIColor whiteColor]; + + // 构建数据(演示) + self.dataSource = @[ + @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, + @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO} + ]; + + // 搭建 UI + [self.view addSubview:self.tableView]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; + + // 顶部前三名作为 tableHeaderView(注意:tableHeaderView 需设定明确高度) + CGFloat headerH = 280.0; + self.topThreeView = [[KBTopThreeView alloc] initWithFrame:CGRectMake(0, 0, KB_SCREEN_WIDTH, headerH)]; + // 示例配置:三个条目的标题 + [self.topThreeView configWithItems:@[ + @{@"title":@"High EQ", @"rank":@1}, + @{@"title":@"Flirt Girls", @"rank":@2}, + @{@"title":@"Humorous", @"rank":@3} + ]]; + self.tableView.tableHeaderView = self.topThreeView; } -/* -#pragma mark - Navigation +#pragma mark - UITableViewDataSource -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.dataSource.count; } -*/ + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + HomeHotCell *cell = [tableView dequeueReusableCellWithIdentifier:HomeHotCell.reuseId forIndexPath:indexPath]; + NSDictionary *item = self.dataSource[indexPath.row]; + // 配置 cell + [cell configWithRank:[item[@"rank"] integerValue] + title:item[@"title"] + subtitle:item[@"sub"] + joined:[item[@"joined"] boolValue]]; + return cell; +} + +#pragma mark - UITableViewDelegate + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 84.0; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; +} + +#pragma mark - Lazy + +- (BaseTableView *)tableView { + if (!_tableView) { + // 使用 BaseTableView,统一默认配置 + _tableView = [[BaseTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.dataSource = self; + _tableView.delegate = self; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // 设计为卡片式,去掉系统分割线 + _tableView.showsVerticalScrollIndicator = NO; + _tableView.contentInset = UIEdgeInsetsMake(8, 0, KB_SafeAreaBottom(), 0); + [_tableView registerClass:HomeHotCell.class forCellReuseIdentifier:HomeHotCell.reuseId]; + } + return _tableView; +} + + @end diff --git a/keyBoard/Class/Home/VC/HomeSheetVC.m b/keyBoard/Class/Home/VC/HomeSheetVC.m index ae320e8..19a9bb5 100644 --- a/keyBoard/Class/Home/VC/HomeSheetVC.m +++ b/keyBoard/Class/Home/VC/HomeSheetVC.m @@ -62,8 +62,8 @@ } - (void)didChangeTransitionToState:(PresentationState)state { - // 每次状态切换完成后刷新朝向 - [self.indicator applyPresentationState:state]; +// // 每次状态切换完成后刷新朝向 +// [self.indicator applyPresentationState:state]; } - (PanModalHeight)shortFormHeight { @@ -86,33 +86,43 @@ return NO; // 在 short 状态禁止继续往下拉(锁住最小高度) } +/// 允许时间穿透 - (BOOL)allowsTouchEventsPassingThroughTransitionView { return YES; } +-(BOOL)shouldAutoSetPanScrollContentInset{ + return NO; +} + + +- (UIScrollView *)panScrollable { + return self.hotVC.tableView; +} + // 可选:完全不允许拖拽关闭(避免被拉到底消失) - (BOOL)allowsDragToDismiss { return NO; } - +// //- (BOOL)showDragIndicator{ // return NO; //} - +// // 点背景不关闭 - (BOOL)allowsTapBackgroundToDismiss { return NO; } -// 出现时不做上推动画(瞬时到位) -- (NSTimeInterval)transitionDuration { - return 0; -} +// 出现时不做上推动画(瞬时到位)开了下拉动画有问题 +//- (NSTimeInterval)transitionDuration { +// return 0; +//} -// 可选:关闭触觉反馈,避免出现时的轻微震动 -- (BOOL)isHapticFeedbackEnabled { - return NO; -} +//// 可选:关闭触觉反馈,避免出现时的轻微震动 +//- (BOOL)isHapticFeedbackEnabled { +// return NO; +//} #pragma mark - UI diff --git a/keyBoard/Class/Home/VC/HomeVC.m b/keyBoard/Class/Home/VC/HomeVC.m index 639b8d5..4d0530c 100644 --- a/keyBoard/Class/Home/VC/HomeVC.m +++ b/keyBoard/Class/Home/VC/HomeVC.m @@ -18,14 +18,17 @@ - (void)viewDidLoad { [super viewDidLoad]; - self.view.backgroundColor = [UIColor whiteColor]; - CGFloat topV = KBFit(500); + self.view.backgroundColor = [UIColor yellowColor]; + CGFloat topV = (500); [self.view addSubview:self.headView]; [self setupMas:topV]; // 创建sheetVC HomeSheetVC *vc = [[HomeSheetVC alloc] init]; - vc.minHeight = KB_SCREEN_HEIGHT - topV - 30; + if (<#condition#>) { + <#statements#> + } + vc.minHeight = KB_SCREEN_HEIGHT - topV; vc.topInset = 100; [self presentPanModal:vc]; } From 41aec6b89efbe0d6a0983cc26fee49ab9335baca Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 15:16:03 +0800 Subject: [PATCH 09/47] 4 --- Shared/KBConfig.h | 1 + keyBoard/Class/Home/VC/HomeVC.m | 9 ++++++--- keyBoard/Class/Shared/KBConfig.h | 28 ++++++++++++++++++++++++++++ keyBoard/KeyBoardPrefixHeader.pch | 30 ++++++++++++++++++++++++++++++ keyBoard/Shared/KBConfig.h | 28 ++++++++++++++++++++++++++++ 5 files changed, 93 insertions(+), 3 deletions(-) diff --git a/Shared/KBConfig.h b/Shared/KBConfig.h index e525573..35a90bb 100644 --- a/Shared/KBConfig.h +++ b/Shared/KBConfig.h @@ -76,3 +76,4 @@ static inline CGFloat KBFit(CGFloat designValue) { #ifndef KBWeakSelf #define KBWeakSelf __weak __typeof(self) weakSelf = self; #endif + diff --git a/keyBoard/Class/Home/VC/HomeVC.m b/keyBoard/Class/Home/VC/HomeVC.m index 4d0530c..c51503d 100644 --- a/keyBoard/Class/Home/VC/HomeVC.m +++ b/keyBoard/Class/Home/VC/HomeVC.m @@ -25,10 +25,13 @@ [self setupMas:topV]; // 创建sheetVC HomeSheetVC *vc = [[HomeSheetVC alloc] init]; - if (<#condition#>) { - <#statements#> + // 使用宏,避免误写成函数指针判断导致恒为 true + if (KB_DEVICE_HAS_NOTCH) { + vc.minHeight = KB_SCREEN_HEIGHT - topV - 34; + }else{ + vc.minHeight = KB_SCREEN_HEIGHT - topV; + } - vc.minHeight = KB_SCREEN_HEIGHT - topV; vc.topInset = 100; [self presentPanModal:vc]; } diff --git a/keyBoard/Class/Shared/KBConfig.h b/keyBoard/Class/Shared/KBConfig.h index b9cc820..88ccf09 100644 --- a/keyBoard/Class/Shared/KBConfig.h +++ b/keyBoard/Class/Shared/KBConfig.h @@ -31,3 +31,31 @@ #ifndef KB_KEYCHAIN_ACCESS_GROUP #define KB_KEYCHAIN_ACCESS_GROUP @"TN6HHV45BB.com.loveKey.nyx.shared" #endif + +// --- 设备特性:是否为带刘海机型(iPhone X 及以后异形屏)--- +// 说明:在 iPhone 12 等机型底部会有 34px 安全区,这里通过安全区来判断是否为“刘海屏”。 +// 注意:使用到 UIKit,这里自行引入,避免依赖 PCH 的包含顺序。 +#import +static inline BOOL KBDeviceHasNotchRuntime(void) { + if (@available(iOS 11.0, *)) { + UIWindow *window = nil; + if (@available(iOS 13.0, *)) { + for (UIScene *scene in UIApplication.sharedApplication.connectedScenes) { + if (scene.activationState == UISceneActivationStateForegroundActive && [scene isKindOfClass:[UIWindowScene class]]) { + UIWindowScene *ws = (UIWindowScene *)scene; + for (UIWindow *w in ws.windows) { if (w.isKeyWindow) { window = w; break; } } + if (window) { break; } + } + } + if (!window) { window = UIApplication.sharedApplication.windows.firstObject; } + } else { + window = UIApplication.sharedApplication.keyWindow; + } + return window.safeAreaInsets.bottom > 0.0; + } + return NO; +} + +#ifndef KB_DEVICE_HAS_NOTCH +#define KB_DEVICE_HAS_NOTCH (KBDeviceHasNotchRuntime()) +#endif diff --git a/keyBoard/KeyBoardPrefixHeader.pch b/keyBoard/KeyBoardPrefixHeader.pch index f229331..3a9d4b2 100644 --- a/keyBoard/KeyBoardPrefixHeader.pch +++ b/keyBoard/KeyBoardPrefixHeader.pch @@ -99,4 +99,34 @@ static inline CGFloat KB_StatusBarHeight(void) { #define KB_IS_IPHONEX_SERIES (KB_SafeAreaBottom() > 0.0) + + +// --- 设备特性:是否为带刘海机型(iPhone X 及以后异形屏)--- +// 说明:在 iPhone 12 等机型底部会有 34px 安全区,这里通过安全区来判断是否为“刘海屏”。 +// 注意:使用到 UIKit,这里自行引入,避免依赖 PCH 的包含顺序。 +#import +static inline BOOL KBDeviceHasNotchRuntime(void) { + if (@available(iOS 11.0, *)) { + UIWindow *window = nil; + if (@available(iOS 13.0, *)) { + for (UIScene *scene in UIApplication.sharedApplication.connectedScenes) { + if (scene.activationState == UISceneActivationStateForegroundActive && [scene isKindOfClass:[UIWindowScene class]]) { + UIWindowScene *ws = (UIWindowScene *)scene; + for (UIWindow *w in ws.windows) { if (w.isKeyWindow) { window = w; break; } } + if (window) { break; } + } + } + if (!window) { window = UIApplication.sharedApplication.windows.firstObject; } + } else { + window = UIApplication.sharedApplication.keyWindow; + } + return window.safeAreaInsets.bottom > 0.0; + } + return NO; +} + +#ifndef KB_DEVICE_HAS_NOTCH +#define KB_DEVICE_HAS_NOTCH (KBDeviceHasNotchRuntime()) +#endif + #endif /* KeyBoardPrefixHeader_pch */ diff --git a/keyBoard/Shared/KBConfig.h b/keyBoard/Shared/KBConfig.h index b9cc820..88ccf09 100644 --- a/keyBoard/Shared/KBConfig.h +++ b/keyBoard/Shared/KBConfig.h @@ -31,3 +31,31 @@ #ifndef KB_KEYCHAIN_ACCESS_GROUP #define KB_KEYCHAIN_ACCESS_GROUP @"TN6HHV45BB.com.loveKey.nyx.shared" #endif + +// --- 设备特性:是否为带刘海机型(iPhone X 及以后异形屏)--- +// 说明:在 iPhone 12 等机型底部会有 34px 安全区,这里通过安全区来判断是否为“刘海屏”。 +// 注意:使用到 UIKit,这里自行引入,避免依赖 PCH 的包含顺序。 +#import +static inline BOOL KBDeviceHasNotchRuntime(void) { + if (@available(iOS 11.0, *)) { + UIWindow *window = nil; + if (@available(iOS 13.0, *)) { + for (UIScene *scene in UIApplication.sharedApplication.connectedScenes) { + if (scene.activationState == UISceneActivationStateForegroundActive && [scene isKindOfClass:[UIWindowScene class]]) { + UIWindowScene *ws = (UIWindowScene *)scene; + for (UIWindow *w in ws.windows) { if (w.isKeyWindow) { window = w; break; } } + if (window) { break; } + } + } + if (!window) { window = UIApplication.sharedApplication.windows.firstObject; } + } else { + window = UIApplication.sharedApplication.keyWindow; + } + return window.safeAreaInsets.bottom > 0.0; + } + return NO; +} + +#ifndef KB_DEVICE_HAS_NOTCH +#define KB_DEVICE_HAS_NOTCH (KBDeviceHasNotchRuntime()) +#endif From 1f4556453958b2a46c1b4bbdb2e64ff26f26099c Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 16:05:28 +0800 Subject: [PATCH 10/47] 5 --- keyBoard.xcodeproj/project.pbxproj | 36 ++- keyBoard/Class/Base/VC/BaseTabBarController.m | 6 +- keyBoard/Class/Home/V/KBPanModalView.h | 19 ++ keyBoard/Class/Home/V/KBPanModalView.m | 267 ++++++++++++++++++ keyBoard/Class/Home/VC/HomeHotVC.m | 4 + keyBoard/Class/Home/VC/HomeMainVC.h | 16 ++ keyBoard/Class/Home/VC/HomeMainVC.m | 58 ++++ keyBoard/Class/Home/VC/HomeRankVC.m | 1 + keyBoard/Class/Home/VC/HomeSheetVC.m | 1 + keyBoard/Class/Home/VC/HomeVC.m | 2 +- 10 files changed, 395 insertions(+), 15 deletions(-) create mode 100644 keyBoard/Class/Home/V/KBPanModalView.h create mode 100644 keyBoard/Class/Home/V/KBPanModalView.m create mode 100644 keyBoard/Class/Home/VC/HomeMainVC.h create mode 100644 keyBoard/Class/Home/VC/HomeMainVC.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index cd059c7..50a4752 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -14,12 +14,12 @@ 0477BD952EBAFF4E0055D639 /* KBURLOpenBridge.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BD932EBAFF4E0055D639 /* KBURLOpenBridge.m */; }; 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */; }; 0477BDF32EBB7B850055D639 /* KBDirectionIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */; }; - A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */; }; - A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */; }; 0477BDF72EBC63A80055D639 /* KBTestVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF62EBC63A80055D639 /* KBTestVC.m */; }; 0477BDFA2EBC66340055D639 /* HomeHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDF92EBC66340055D639 /* HomeHeadView.m */; }; 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDFC2EBC6A170055D639 /* HomeHotVC.m */; }; 0477BE002EBC6A330055D639 /* HomeRankVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */; }; + 0477BE042EBC83130055D639 /* HomeMainVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BE032EBC83130055D639 /* HomeMainVC.m */; }; + 047C650D2EBC8A840035E841 /* KBPanModalView.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C650C2EBC8A840035E841 /* KBPanModalView.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -71,6 +71,8 @@ A1B2C4202EB4B7A100000001 /* KBKeyboardPermissionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C4222EB4B7A100000001 /* KBKeyboardPermissionManager.m */; }; A1B2C4212EB4B7A100000001 /* KBKeyboardPermissionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2C4222EB4B7A100000001 /* KBKeyboardPermissionManager.m */; }; A1B2D7022EB8C00100000001 /* KBLangTestVC.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2D7012EB8C00100000001 /* KBLangTestVC.m */; }; + A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */; }; + A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */; }; ECC9EE02174D86E8D792472F /* Pods_keyBoard.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 967065BB5230E43F293B3AF9 /* Pods_keyBoard.framework */; }; /* End PBXBuildFile section */ @@ -109,10 +111,6 @@ 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeSheetVC.m; sourceTree = ""; }; 0477BDF12EBB7B850055D639 /* KBDirectionIndicatorView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBDirectionIndicatorView.h; sourceTree = ""; }; 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBDirectionIndicatorView.m; sourceTree = ""; }; - A1B2E0012EBC7AAA00000001 /* KBTopThreeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBTopThreeView.h; sourceTree = ""; }; - A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBTopThreeView.m; sourceTree = ""; }; - A1B2E0032EBC7AAA00000001 /* HomeHotCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeHotCell.h; sourceTree = ""; }; - A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeHotCell.m; sourceTree = ""; }; 0477BDF52EBC63A80055D639 /* KBTestVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBTestVC.h; sourceTree = ""; }; 0477BDF62EBC63A80055D639 /* KBTestVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBTestVC.m; sourceTree = ""; }; 0477BDF82EBC66340055D639 /* HomeHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeHeadView.h; sourceTree = ""; }; @@ -121,6 +119,10 @@ 0477BDFC2EBC6A170055D639 /* HomeHotVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeHotVC.m; sourceTree = ""; }; 0477BDFE2EBC6A330055D639 /* HomeRankVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeRankVC.h; sourceTree = ""; }; 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeRankVC.m; sourceTree = ""; }; + 0477BE022EBC83130055D639 /* HomeMainVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeMainVC.h; sourceTree = ""; }; + 0477BE032EBC83130055D639 /* HomeMainVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeMainVC.m; sourceTree = ""; }; + 047C650B2EBC8A840035E841 /* KBPanModalView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBPanModalView.h; sourceTree = ""; }; + 047C650C2EBC8A840035E841 /* KBPanModalView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBPanModalView.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -219,6 +221,10 @@ A1B2C4232EB4B7A100000001 /* KBKeyboardPermissionManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBKeyboardPermissionManager.h; sourceTree = ""; }; A1B2D7002EB8C00100000001 /* KBLangTestVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBLangTestVC.h; sourceTree = ""; }; A1B2D7012EB8C00100000001 /* KBLangTestVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBLangTestVC.m; sourceTree = ""; }; + A1B2E0012EBC7AAA00000001 /* KBTopThreeView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBTopThreeView.h; sourceTree = ""; }; + A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBTopThreeView.m; sourceTree = ""; }; + A1B2E0032EBC7AAA00000001 /* HomeHotCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeHotCell.h; sourceTree = ""; }; + A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeHotCell.m; sourceTree = ""; }; B12EC429812407B9F0E67565 /* Pods-CustomKeyboard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CustomKeyboard.release.xcconfig"; path = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.release.xcconfig"; sourceTree = ""; }; B8CA018AB878499327504AAD /* Pods-CustomKeyboard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CustomKeyboard.debug.xcconfig"; path = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.debug.xcconfig"; sourceTree = ""; }; F67DDBD716E4E616D8CC2C9C /* Pods-keyBoard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-keyBoard.debug.xcconfig"; path = "Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig"; sourceTree = ""; }; @@ -379,10 +385,12 @@ 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */, 0477BDF82EBC66340055D639 /* HomeHeadView.h */, 0477BDF92EBC66340055D639 /* HomeHeadView.m */, - A1B2E0012EBC7AAA00000001 /* KBTopThreeView.h */, - A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */, - A1B2E0032EBC7AAA00000001 /* HomeHotCell.h */, - A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */, + A1B2E0012EBC7AAA00000001 /* KBTopThreeView.h */, + A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */, + A1B2E0032EBC7AAA00000001 /* HomeHotCell.h */, + A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */, + 047C650B2EBC8A840035E841 /* KBPanModalView.h */, + 047C650C2EBC8A840035E841 /* KBPanModalView.m */, ); path = V; sourceTree = ""; @@ -392,6 +400,8 @@ children = ( 04FC95CD2EB1E7A1007BD342 /* HomeVC.h */, 04FC95CE2EB1E7A1007BD342 /* HomeVC.m */, + 0477BE022EBC83130055D639 /* HomeMainVC.h */, + 0477BE032EBC83130055D639 /* HomeMainVC.m */, 0477BDEE2EBB76E30055D639 /* HomeSheetVC.h */, 0477BDEF2EBB76E30055D639 /* HomeSheetVC.m */, 0477BDFB2EBC6A170055D639 /* HomeHotVC.h */, @@ -914,6 +924,7 @@ 04FC95E92EB23B67007BD342 /* KBNetworkManager.m in Sources */, 04FC95D22EB1E7AE007BD342 /* MyVC.m in Sources */, 0477BE002EBC6A330055D639 /* HomeRankVC.m in Sources */, + 047C650D2EBC8A840035E841 /* KBPanModalView.m in Sources */, 043FBCD22EAF97630036AFE1 /* KBPermissionViewController.m in Sources */, 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */, 04C6EABE2EAF86530089C901 /* AppDelegate.m in Sources */, @@ -939,9 +950,10 @@ A1B2D7022EB8C00100000001 /* KBLangTestVC.m in Sources */, 04C6EABF2EAF86530089C901 /* main.m in Sources */, 04FC95CC2EB1E780007BD342 /* BaseTabBarController.m in Sources */, + 0477BE042EBC83130055D639 /* HomeMainVC.m in Sources */, 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */, - A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */, - A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */, + A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */, + A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */, 0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */, 04FC95F42EB339C1007BD342 /* AppleSignInManager.m in Sources */, 04C6EAC12EAF86530089C901 /* ViewController.m in Sources */, diff --git a/keyBoard/Class/Base/VC/BaseTabBarController.m b/keyBoard/Class/Base/VC/BaseTabBarController.m index 68bd70b..b5a0105 100644 --- a/keyBoard/Class/Base/VC/BaseTabBarController.m +++ b/keyBoard/Class/Base/VC/BaseTabBarController.m @@ -7,6 +7,7 @@ #import "BaseTabBarController.h" #import "HomeVC.h" +#import "HomeMainVC.h" #import "MyVC.h" #import "BaseNavigationController.h" #import "KBAuthManager.h" @@ -19,7 +20,7 @@ - (void)viewDidLoad { [super viewDidLoad]; // Setup two tabs: Home & My, each embedded in BaseNavigationController - HomeVC *home = [[HomeVC alloc] init]; + HomeMainVC *home = [[HomeMainVC alloc] init]; home.title = @"首页"; BaseNavigationController *navHome = [[BaseNavigationController alloc] initWithRootViewController:home]; navHome.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"首页" image:nil selectedImage:nil]; @@ -31,7 +32,8 @@ self.viewControllers = @[navHome, navMy]; - [[KBAuthManager shared] saveAccessToken:@"TEST" refreshToken:nil expiryDate:[NSDate dateWithTimeIntervalSinceNow:3600] userIdentifier:nil]; + // 测试储存Token + /*[[KBAuthManager shared] saveAccessToken:@"TEST" refreshToken:nil expiryDate:[NSDate dateWithTimeIntervalSinceNow:3600] userIdentifier:nil]*/; } /* diff --git a/keyBoard/Class/Home/V/KBPanModalView.h b/keyBoard/Class/Home/V/KBPanModalView.h new file mode 100644 index 0000000..e902fce --- /dev/null +++ b/keyBoard/Class/Home/V/KBPanModalView.h @@ -0,0 +1,19 @@ +// +// KBPanModalView.h +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import +#import + +#import "HWPanModalContentView.h" +NS_ASSUME_NONNULL_BEGIN + +@interface KBPanModalView : HWPanModalContentView +@property (nonatomic, assign) CGFloat minHeight; // 例如 150 +@property (nonatomic, assign) CGFloat topInset; // 例如 100 +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m new file mode 100644 index 0000000..5fe71e9 --- /dev/null +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -0,0 +1,267 @@ +// +// KBPanModalView.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "KBPanModalView.h" +#import "KBDirectionIndicatorView.h" +// 子控制器 +#import "HomeHotVC.h" +#import "HomeRankVC.h" +@interface KBPanModalView() +@property (nonatomic, strong) KBDirectionIndicatorView *indicator; +// 顶部切换按钮与指示条 +@property (nonatomic, strong) UIView *topBar; +@property (nonatomic, strong) UIButton *hotButton; +@property (nonatomic, strong) UIButton *rankButton; +@property (nonatomic, strong) UIView *underlineView; // 选中下划线 + +// 承载子控制器内容 +@property (nonatomic, strong) UIView *containerView; +@property (nonatomic, strong) UIViewController *currentChild; +@property (nonatomic, strong) HomeHotVC *hotVC; +@property (nonatomic, strong) HomeRankVC *rankVC; +@end +@implementation KBPanModalView + +- (instancetype)initWithFrame:(CGRect)frame{ + if (self = [super initWithFrame:frame]) { + self.backgroundColor = [UIColor redColor]; + HWBackgroundConfig *config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; + config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; + config.backgroundAlpha = 0.01; + [self.hw_dimmedView reloadConfig:config]; + // 顶部按钮 + 容器 + [self setupTopButtonsAndContainer]; + // 默认展示“热门” + [self switchToIndex:0 animated:NO]; + } + return self; +} + +- (UIView *)customIndicatorView { + if (!_indicator) _indicator = [KBDirectionIndicatorView new]; + return _indicator; +} + +//- (void)panModalTransitionDidFinish { +// // 初次展示后按当前状态设定一次朝向 +// [self.indicator applyPresentationState:self.hw_presentationState]; +// // 避免出现内容随弹窗上移的“位移动画”观感: +// // 顶部栏在展示动画期间先隐藏,待完成后淡入 +// if (self.topBar && self.topBar.alpha < 1.0) { +// [UIView animateWithDuration:0.18 delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ +// self.topBar.alpha = 1.0; +// } completion:nil]; +// } +//} + +- (void)didChangeTransitionToState:(PresentationState)state { +// // 每次状态切换完成后刷新朝向 +// [self.indicator applyPresentationState:state]; +} + +- (PanModalHeight)shortFormHeight { + return PanModalHeightMake(PanModalHeightTypeContent, self.minHeight ?: 300); +} + +- (PanModalHeight)longFormHeight { + return PanModalHeightMake(PanModalHeightTypeMaxTopInset, self.topInset ?: 100); +} + +- (PresentationState)originPresentationState { + return PresentationStateShort; // 初始就以最小高度展示 +} + +- (BOOL)anchorModalToLongForm { + return YES; // 到 long 后不再继续往上拖 +} + +- (BOOL)allowsPullDownWhenShortState { + return NO; // 在 short 状态禁止继续往下拉(锁住最小高度) +} + +/// 允许时间穿透 +- (BOOL)allowsTouchEventsPassingThroughTransitionView { + return YES; +} + +-(BOOL)shouldAutoSetPanScrollContentInset{ + return NO; +} + + +- (UIScrollView *)panScrollable { + return self.hotVC.tableView; +} + +// 可选:完全不允许拖拽关闭(避免被拉到底消失) +- (BOOL)allowsDragToDismiss { + return NO; +} +// +//- (BOOL)showDragIndicator{ +// return NO; +//} +// +// 点背景不关闭 +- (BOOL)allowsTapBackgroundToDismiss { + return NO; +} + +// 出现时不做上推动画(瞬时到位)开了下拉动画有问题 +//- (NSTimeInterval)transitionDuration { +// return 0; +//} + +//// 可选:关闭触觉反馈,避免出现时的轻微震动 +//- (BOOL)isHapticFeedbackEnabled { +// return NO; +//} + + +#pragma mark - UI + +- (void)setupTopButtonsAndContainer { + // 顶部栏 + self.topBar = [[UIView alloc] init]; + self.topBar.backgroundColor = [UIColor colorWithWhite:1 alpha:0.9]; + [self addSubview:self.topBar]; + // 首次展示时先隐藏,待转场完成后再淡入,避免“自底向上滑入”的错觉 + self.topBar.alpha = 0.0; + + // 两个按钮 + self.hotButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [self.hotButton setTitle:@"热门" forState:UIControlStateNormal]; + [self.hotButton setTitleColor:[UIColor darkTextColor] forState:UIControlStateNormal]; + [self.hotButton setTitleColor:[UIColor blackColor] forState:UIControlStateSelected]; + self.hotButton.titleLabel.font = [UIFont boldSystemFontOfSize:16]; + self.hotButton.tag = 0; + [self.hotButton addTarget:self action:@selector(onTapTopButton:) forControlEvents:UIControlEventTouchUpInside]; + [self.topBar addSubview:self.hotButton]; + + self.rankButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [self.rankButton setTitle:@"排行" forState:UIControlStateNormal]; + [self.rankButton setTitleColor:[UIColor darkTextColor] forState:UIControlStateNormal]; + [self.rankButton setTitleColor:[UIColor blackColor] forState:UIControlStateSelected]; + self.rankButton.titleLabel.font = [UIFont boldSystemFontOfSize:16]; + self.rankButton.tag = 1; + [self.rankButton addTarget:self action:@selector(onTapTopButton:) forControlEvents:UIControlEventTouchUpInside]; + [self.topBar addSubview:self.rankButton]; + + // 下划线(跟随选中按钮) + self.underlineView = [[UIView alloc] init]; + self.underlineView.backgroundColor = [UIColor blackColor]; + self.underlineView.layer.cornerRadius = 1.0; + [self.topBar addSubview:self.underlineView]; + + // 容器视图 + self.containerView = [[UIView alloc] init]; + self.containerView.backgroundColor = [UIColor whiteColor]; + self.containerView.clipsToBounds = YES; + [self addSubview:self.containerView]; + + // Masonry 约束 + CGFloat topPadding = 12; // 与顶部小指示器留点空间 + [self.topBar mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self); + make.top.equalTo(self).offset(topPadding); + make.height.mas_equalTo(44); + }]; + + [self.hotButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.equalTo(self.topBar); + make.left.equalTo(self.topBar); + }]; + [self.rankButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.bottom.equalTo(self.topBar); + make.right.equalTo(self.topBar); + make.left.equalTo(self.hotButton.mas_right); + make.width.equalTo(self.hotButton); + }]; + + // 初始先放在“热门”下方,宽度稍小于按钮文字 + [self.underlineView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(2); + make.bottom.equalTo(self.topBar.mas_bottom).offset(-2); + make.centerX.equalTo(self.hotButton); + make.width.mas_equalTo(24); + }]; + + [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.topBar.mas_bottom).offset(8); + make.left.right.bottom.equalTo(self); + }]; +} + +#pragma mark - Action + +- (void)onTapTopButton:(UIButton *)sender { + [self switchToIndex:sender.tag animated:YES]; + [self hw_panModalSetNeedsLayoutUpdate]; +} + +#pragma mark - Switch Child + +- (void)switchToIndex:(NSInteger)index animated:(BOOL)animated { + UIViewController *target = (index == 0) ? self.hotVC : self.rankVC; + if (!target) { + if (index == 0) { + self.hotVC = [HomeHotVC new]; + target = self.hotVC; + } else { + self.rankVC = [HomeRankVC new]; + target = self.rankVC; + } + } + + if (self.currentChild == target) { + // 已经是目标 + [self updateButtonStateForIndex:index animated:animated]; + return; + } + + // 移除当前 + if (self.currentChild) { + [self.currentChild willMoveToParentViewController:nil]; + [self.currentChild.view removeFromSuperview]; + [self.currentChild removeFromParentViewController]; + } + + // 添加目标 +// [self addChildViewController:target]; + [self.containerView addSubview:target.view]; + target.view.backgroundColor = [UIColor colorWithWhite:0.98 alpha:1]; + [target.view mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.containerView); + }]; + [target didMoveToParentViewController:self]; + self.currentChild = target; + + [self updateButtonStateForIndex:index animated:animated]; +} + +- (void)updateButtonStateForIndex:(NSInteger)index animated:(BOOL)animated { + self.hotButton.selected = (index == 0); + self.rankButton.selected = (index == 1); + + UIButton *btn = (index == 0) ? self.hotButton : self.rankButton; + // 更新下划线位置 + [self.underlineView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(2); + make.bottom.equalTo(self.topBar.mas_bottom).offset(-2); + make.centerX.equalTo(btn); + make.width.mas_equalTo(24); + }]; + + if (animated) { + [UIView animateWithDuration:0.25 animations:^{ + [self.topBar layoutIfNeeded]; + }]; + } else { + [self.topBar layoutIfNeeded]; + } +} +@end diff --git a/keyBoard/Class/Home/VC/HomeHotVC.m b/keyBoard/Class/Home/VC/HomeHotVC.m index ef62dc0..602e7b0 100644 --- a/keyBoard/Class/Home/VC/HomeHotVC.m +++ b/keyBoard/Class/Home/VC/HomeHotVC.m @@ -9,6 +9,8 @@ // 视图 #import "KBTopThreeView.h" #import "HomeHotCell.h" +#import "HomeRankVC.h" + #import @interface HomeHotVC () @@ -80,6 +82,8 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; + HomeRankVC *vc = [[HomeRankVC alloc] init]; + [self.navigationController pushViewController:vc animated:true]; } #pragma mark - Lazy diff --git a/keyBoard/Class/Home/VC/HomeMainVC.h b/keyBoard/Class/Home/VC/HomeMainVC.h new file mode 100644 index 0000000..fb78ed1 --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeMainVC.h @@ -0,0 +1,16 @@ +// +// HomeMainVC.h +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeMainVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/HomeMainVC.m b/keyBoard/Class/Home/VC/HomeMainVC.m new file mode 100644 index 0000000..ccacb9a --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeMainVC.m @@ -0,0 +1,58 @@ +// +// HomeMainVC.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "HomeMainVC.h" +#import "HomeHeadView.h" +#import "KBPanModalView.h" + +@interface HomeMainVC () +@property (nonatomic, strong) HomeHeadView *headView; + +@end + +@implementation HomeMainVC + +- (void)viewDidLoad { + [super viewDidLoad]; + + self.view.backgroundColor = [UIColor yellowColor]; + CGFloat topV = (500); + +// [self.view addSubview:self.headView]; +// [self setupMas:topV]; + // 创建sheetVC + KBPanModalView *simplePanModalView = [[KBPanModalView alloc] init]; + // 使用宏,避免误写成函数指针判断导致恒为 true + if (KB_DEVICE_HAS_NOTCH) { + simplePanModalView.minHeight = KB_SCREEN_HEIGHT - topV - 34; + }else{ + simplePanModalView.minHeight = KB_SCREEN_HEIGHT - topV; +// + } + simplePanModalView.topInset = 100; + [simplePanModalView presentInView:self.view]; +} + +- (void)setupMas:(CGFloat)headViewTopV{ + [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.view); + make.top.equalTo(self.view); + make.height.mas_equalTo(headViewTopV); + }]; +} + + +#pragma mark - lazy +- (HomeHeadView *)headView{ + if (!_headView) { + _headView = [[HomeHeadView alloc] init]; + } + return _headView; +} + + +@end diff --git a/keyBoard/Class/Home/VC/HomeRankVC.m b/keyBoard/Class/Home/VC/HomeRankVC.m index 802a286..bd13aa3 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.m +++ b/keyBoard/Class/Home/VC/HomeRankVC.m @@ -16,6 +16,7 @@ - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. + self.view.backgroundColor = [UIColor grayColor]; } /* diff --git a/keyBoard/Class/Home/VC/HomeSheetVC.m b/keyBoard/Class/Home/VC/HomeSheetVC.m index 19a9bb5..61a36e0 100644 --- a/keyBoard/Class/Home/VC/HomeSheetVC.m +++ b/keyBoard/Class/Home/VC/HomeSheetVC.m @@ -203,6 +203,7 @@ - (void)onTapTopButton:(UIButton *)sender { [self switchToIndex:sender.tag animated:YES]; + [self hw_panModalSetNeedsLayoutUpdate]; } #pragma mark - Switch Child diff --git a/keyBoard/Class/Home/VC/HomeVC.m b/keyBoard/Class/Home/VC/HomeVC.m index c51503d..94f4f45 100644 --- a/keyBoard/Class/Home/VC/HomeVC.m +++ b/keyBoard/Class/Home/VC/HomeVC.m @@ -30,7 +30,7 @@ vc.minHeight = KB_SCREEN_HEIGHT - topV - 34; }else{ vc.minHeight = KB_SCREEN_HEIGHT - topV; - +// } vc.topInset = 100; [self presentPanModal:vc]; From a75afbe4c1aa6e9c540417b46ea1635bccac5d5b Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 16:57:28 +0800 Subject: [PATCH 11/47] =?UTF-8?q?=E5=88=9B=E5=BB=BAnav=E5=AE=8F=20?= =?UTF-8?q?=E5=8E=BB=E9=99=A4tabbar=E9=80=8F=E6=98=8E?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyBoard/Class/Base/VC/BaseTabBarController.m | 14 ++++++ keyBoard/Class/Home/VC/HomeHotVC.m | 6 ++- keyBoard/KeyBoardPrefixHeader.pch | 43 +++++++++++++++++++ 3 files changed, 62 insertions(+), 1 deletion(-) diff --git a/keyBoard/Class/Base/VC/BaseTabBarController.m b/keyBoard/Class/Base/VC/BaseTabBarController.m index b5a0105..daabefe 100644 --- a/keyBoard/Class/Base/VC/BaseTabBarController.m +++ b/keyBoard/Class/Base/VC/BaseTabBarController.m @@ -19,6 +19,8 @@ - (void)viewDidLoad { [super viewDidLoad]; + + [self setupTabbarAppearance]; // Setup two tabs: Home & My, each embedded in BaseNavigationController HomeMainVC *home = [[HomeMainVC alloc] init]; home.title = @"首页"; @@ -36,6 +38,18 @@ /*[[KBAuthManager shared] saveAccessToken:@"TEST" refreshToken:nil expiryDate:[NSDate dateWithTimeIntervalSinceNow:3600] userIdentifier:nil]*/; } +- (void)setupTabbarAppearance{ + // 让 TabBar 不透明,子控制器 view 不再延伸到 TabBar 下 + self.tabBar.translucent = NO; + if (@available(iOS 15.0, *)) { + UITabBarAppearance *a = [UITabBarAppearance new]; + [a configureWithOpaqueBackground]; + a.backgroundColor = [UIColor whiteColor]; + self.tabBar.standardAppearance = a; + self.tabBar.scrollEdgeAppearance = a; + } +} + /* #pragma mark - Navigation diff --git a/keyBoard/Class/Home/VC/HomeHotVC.m b/keyBoard/Class/Home/VC/HomeHotVC.m index 602e7b0..402ec42 100644 --- a/keyBoard/Class/Home/VC/HomeHotVC.m +++ b/keyBoard/Class/Home/VC/HomeHotVC.m @@ -83,7 +83,11 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; HomeRankVC *vc = [[HomeRankVC alloc] init]; - [self.navigationController pushViewController:vc animated:true]; +// [self.navigationController pushViewController:vc animated:true]; + UINavigationController *nav = KB_CURRENT_NAV; + [nav pushViewController:vc animated:true]; + NSLog(@"==="); + } #pragma mark - Lazy diff --git a/keyBoard/KeyBoardPrefixHeader.pch b/keyBoard/KeyBoardPrefixHeader.pch index 3a9d4b2..6f7a6ad 100644 --- a/keyBoard/KeyBoardPrefixHeader.pch +++ b/keyBoard/KeyBoardPrefixHeader.pch @@ -129,4 +129,47 @@ static inline BOOL KBDeviceHasNotchRuntime(void) { #define KB_DEVICE_HAS_NOTCH (KBDeviceHasNotchRuntime()) #endif +// --- 获取当前可用的 UINavigationController --- +// 说明: +// 1. 优先取最顶层可见 VC(见 UIViewController+Extension),再解析其所在的导航容器; +// 2. 兼容被 UITabBarController 包裹、直接为 UINavigationController、或普通 VC 嵌套等场景; +// 3. 若无法获取,返回 nil。 +static inline __kindof UINavigationController *KB_CurrentNavigationController(void) { + UIViewController *top = [UIViewController kb_topMostViewController]; + if (!top) { + UIWindow *w = KB_KeyWindow(); + top = w.rootViewController; + } + if (!top) return nil; + + // 直接就是导航控制器 + if ([top isKindOfClass:[UINavigationController class]]) { + return (UINavigationController *)top; + } + // 顶层是 TabBar,取选中的子控制器 + if ([top isKindOfClass:[UITabBarController class]]) { + UITabBarController *tab = (UITabBarController *)top; + UIViewController *sel = tab.selectedViewController ?: tab.viewControllers.firstObject; + if ([sel isKindOfClass:[UINavigationController class]]) return (UINavigationController *)sel; + return sel.navigationController ?: nil; + } + // 普通 VC,取其所属导航 + if (top.navigationController) return top.navigationController; + + // 兜底:尝试从 root 解析 + UIViewController *root = KB_KeyWindow().rootViewController; + if ([root isKindOfClass:[UINavigationController class]]) return (UINavigationController *)root; + if ([root isKindOfClass:[UITabBarController class]]) { + UIViewController *sel = ((UITabBarController *)root).selectedViewController; + if ([sel isKindOfClass:[UINavigationController class]]) return (UINavigationController *)sel; + return sel.navigationController ?: nil; + } + return nil; +} + +// 简便宏:直接当做属性来用,例如:`[KB_CURRENT_NAV pushViewController:vc animated:YES];` +#ifndef KB_CURRENT_NAV +#define KB_CURRENT_NAV (KB_CurrentNavigationController()) +#endif + #endif /* KeyBoardPrefixHeader_pch */ From 6ba1339c0b2c1be73f7e2c6ff789599dca9b5d1d Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 19:19:12 +0800 Subject: [PATCH 12/47] =?UTF-8?q?=E4=BF=AE=E6=94=B9UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Podfile | 2 + Podfile.lock | 10 +- Pods/JXCategoryView/LICENSE | 21 + Pods/JXCategoryView/README.md | 296 + .../Sources/Base/JXCategoryBaseCell.h | 29 + .../Sources/Base/JXCategoryBaseCell.m | 98 + .../Sources/Base/JXCategoryBaseCellModel.h | 31 + .../Sources/Base/JXCategoryBaseCellModel.m | 13 + .../Sources/Base/JXCategoryBaseView.h | 222 + .../Sources/Base/JXCategoryBaseView.m | 697 ++ .../Sources/Common/JXCategoryCollectionView.h | 24 + .../Sources/Common/JXCategoryCollectionView.m | 52 + .../Sources/Common/JXCategoryFactory.h | 18 + .../Sources/Common/JXCategoryFactory.m | 29 + .../Common/JXCategoryIndicatorParamsModel.h | 31 + .../Common/JXCategoryIndicatorParamsModel.m | 13 + .../Common/JXCategoryIndicatorProtocol.h | 49 + .../Common/JXCategoryListContainerRTLCell.h | 16 + .../Common/JXCategoryListContainerRTLCell.m | 23 + .../Common/JXCategoryListContainerView.h | 122 + .../Common/JXCategoryListContainerView.m | 547 ++ .../Sources/Common/JXCategoryViewAnimator.h | 24 + .../Sources/Common/JXCategoryViewAnimator.m | 75 + .../Sources/Common/JXCategoryViewDefines.h | 43 + .../Sources/Common/UIColor+JXAdd.h | 18 + .../Sources/Common/UIColor+JXAdd.m | 35 + .../Sources/Dot/JXCategoryDotCell.h | 13 + .../Sources/Dot/JXCategoryDotCell.m | 64 + .../Sources/Dot/JXCategoryDotCellModel.h | 27 + .../Sources/Dot/JXCategoryDotCellModel.m | 13 + .../Sources/Dot/JXCategoryDotView.h | 30 + .../Sources/Dot/JXCategoryDotView.m | 52 + .../Sources/Image/JXCategoryImageCell.h | 15 + .../Sources/Image/JXCategoryImageCell.m | 97 + .../Sources/Image/JXCategoryImageCellModel.h | 32 + .../Sources/Image/JXCategoryImageCellModel.m | 13 + .../Sources/Image/JXCategoryImageView.h | 32 + .../Sources/Image/JXCategoryImageView.m | 104 + .../JXCategoryIndicatorBackgroundView.h | 14 + .../JXCategoryIndicatorBackgroundView.m | 101 + .../JXCategoryIndicatorBallView.h | 17 + .../JXCategoryIndicatorBallView.m | 199 + .../JXCategoryIndicatorComponentView.h | 113 + .../JXCategoryIndicatorComponentView.m | 81 + .../JXCategoryIndicatorDotLineView.h | 17 + .../JXCategoryIndicatorDotLineView.m | 148 + .../JXCategoryIndicatorImageView.h | 20 + .../JXCategoryIndicatorImageView.m | 117 + .../JXCategoryIndicatorLineView.h | 28 + .../JXCategoryIndicatorLineView.m | 202 + .../JXCategoryIndicatorRainbowLineView.h | 30 + .../JXCategoryIndicatorRainbowLineView.m | 38 + .../JXCategoryIndicatorTriangleView.h | 14 + .../JXCategoryIndicatorTriangleView.m | 109 + .../Indicator/JXCategoryIndicatorCell.h | 13 + .../Indicator/JXCategoryIndicatorCell.m | 52 + .../Indicator/JXCategoryIndicatorCellModel.h | 24 + .../Indicator/JXCategoryIndicatorCellModel.m | 13 + .../Indicator/JXCategoryIndicatorView.h | 48 + .../Indicator/JXCategoryIndicatorView.m | 209 + Pods/JXCategoryView/Sources/JXCategoryView.h | 23 + .../Sources/Number/JXCategoryNumberCell.h | 13 + .../Sources/Number/JXCategoryNumberCell.m | 62 + .../Number/JXCategoryNumberCellModel.h | 25 + .../Number/JXCategoryNumberCellModel.m | 37 + .../Sources/Number/JXCategoryNumberView.h | 60 + .../Sources/Number/JXCategoryNumberView.m | 61 + .../Sources/PrivacyInfo.xcprivacy | 14 + .../Sources/RLTManager/RTLManager.h | 20 + .../Sources/RLTManager/RTLManager.m | 26 + .../Sources/Title/JXCategoryTitleCell.h | 27 + .../Sources/Title/JXCategoryTitleCell.m | 240 + .../Sources/Title/JXCategoryTitleCellModel.h | 44 + .../Sources/Title/JXCategoryTitleCellModel.m | 31 + .../Sources/Title/JXCategoryTitleView.h | 63 + .../Sources/Title/JXCategoryTitleView.m | 164 + .../TitleImage/JXCategoryTitleImageCell.h | 15 + .../TitleImage/JXCategoryTitleImageCell.m | 148 + .../JXCategoryTitleImageCellModel.h | 43 + .../JXCategoryTitleImageCellModel.m | 13 + .../TitleImage/JXCategoryTitleImageView.h | 42 + .../TitleImage/JXCategoryTitleImageView.m | 126 + .../JXCategoryTitleVerticalZoomCell.h | 17 + .../JXCategoryTitleVerticalZoomCell.m | 45 + .../JXCategoryTitleVerticalZoomCellModel.h | 19 + .../JXCategoryTitleVerticalZoomCellModel.m | 13 + .../JXCategoryTitleVerticalZoomView.h | 34 + .../JXCategoryTitleVerticalZoomView.m | 94 + Pods/JXPagingView/LICENSE | 21 + Pods/JXPagingView/README.md | 294 + .../JXPagerView/JXPagerListContainerView.h | 128 + .../JXPagerView/JXPagerListContainerView.m | 597 ++ .../JXPagerView/JXPagerListRefreshView.h | 14 + .../JXPagerView/JXPagerListRefreshView.m | 109 + .../JXPagerView/JXPagerMainTableView.h | 19 + .../JXPagerView/JXPagerMainTableView.m | 25 + .../Sources/JXPagerView/JXPagerSmoothView.h | 91 + .../Sources/JXPagerView/JXPagerSmoothView.m | 361 + .../Sources/JXPagerView/JXPagerView.h | 131 + .../Sources/JXPagerView/JXPagerView.m | 409 ++ .../Sources/PrivacyInfo.xcprivacy | 14 + Pods/Manifest.lock | 10 +- Pods/Pods.xcodeproj/project.pbxproj | 6376 ++++++++++------- .../JXCategoryView-JXCategoryView.xcscheme | 58 + .../xcschemes/JXCategoryView.xcscheme | 58 + .../JXPagingView-JXPagerView.xcscheme | 58 + .../xcschemes/JXPagingView.xcscheme | 58 + .../JXCategoryView/JXCategoryView-Info.plist | 26 + .../JXCategoryView/JXCategoryView-dummy.m | 5 + .../JXCategoryView/JXCategoryView-prefix.pch | 12 + .../JXCategoryView/JXCategoryView-umbrella.h | 59 + .../JXCategoryView.debug.xcconfig | 12 + .../JXCategoryView/JXCategoryView.modulemap | 6 + .../JXCategoryView.release.xcconfig | 12 + ...e-JXCategoryView-JXCategoryView-Info.plist | 24 + .../JXPagingView/JXPagingView-Info.plist | 26 + .../JXPagingView/JXPagingView-dummy.m | 5 + .../JXPagingView/JXPagingView-prefix.pch | 12 + .../JXPagingView/JXPagingView-umbrella.h | 21 + .../JXPagingView/JXPagingView.debug.xcconfig | 12 + .../JXPagingView/JXPagingView.modulemap | 6 + .../JXPagingView.release.xcconfig | 12 + ...Bundle-JXPagerView-JXPagingView-Info.plist | 24 + .../Pods-keyBoard-acknowledgements.markdown | 50 + .../Pods-keyBoard-acknowledgements.plist | 62 + ...rd-frameworks-Debug-input-files.xcfilelist | 2 + ...d-frameworks-Debug-output-files.xcfilelist | 2 + ...-frameworks-Release-input-files.xcfilelist | 2 + ...frameworks-Release-output-files.xcfilelist | 2 + .../Pods-keyBoard/Pods-keyBoard-frameworks.sh | 4 + .../Pods-keyBoard.debug.xcconfig | 8 +- .../Pods-keyBoard.release.xcconfig | 8 +- keyBoard.xcodeproj/project.pbxproj | 208 + keyBoard/Assets.xcassets/Tabbar/Contents.json | 6 + .../Tabbar/tab_home.imageset/Contents.json | 22 + .../Tabbar/tab_home.imageset/tab_home@2x.png | Bin 0 -> 1624 bytes .../Tabbar/tab_home.imageset/tab_home@3x.png | Bin 0 -> 2898 bytes .../tab_home_selected.imageset/Contents.json | 22 + .../tab_home_selected@2x.png | Bin 0 -> 2371 bytes .../tab_home_selected@3x.png | Bin 0 -> 4436 bytes .../Tabbar/tab_my.imageset/Contents.json | 22 + .../Tabbar/tab_my.imageset/tab_my@2x.png | Bin 0 -> 2838 bytes .../Tabbar/tab_my.imageset/tab_my@3x.png | Bin 0 -> 5373 bytes .../tab_my_selected.imageset/Contents.json | 22 + .../tab_my_selected@2x.png | Bin 0 -> 3899 bytes .../tab_my_selected@3x.png | Bin 0 -> 7363 bytes .../Tabbar/tab_shequ.imageset/Contents.json | 22 + .../tab_shequ.imageset/tab_shequ@2x.png | Bin 0 -> 3080 bytes .../tab_shequ.imageset/tab_shequ@3x.png | Bin 0 -> 5847 bytes .../tab_shequ_selected.imageset/Contents.json | 22 + .../tab_shequ_selected@2x.png | Bin 0 -> 3800 bytes .../tab_shequ_selected@3x.png | Bin 0 -> 7077 bytes .../Tabbar/tab_shop.imageset/Contents.json | 22 + .../Tabbar/tab_shop.imageset/tab_shop@2x.png | Bin 0 -> 1652 bytes .../Tabbar/tab_shop.imageset/tab_shop@3x.png | Bin 0 -> 3157 bytes .../tab_shop_selected.imageset/Contents.json | 22 + .../tab_shop_selected@2x.png | Bin 0 -> 2239 bytes .../tab_shop_selected@3x.png | Bin 0 -> 4299 bytes keyBoard/Class/Base/VC/BaseTabBarController.m | 3 + keyBoard/Class/Community/VC/KBCommunityVC.h | 16 + keyBoard/Class/Community/VC/KBCommunityVC.m | 31 + keyBoard/Class/Home/V/KBPanModalView.m | 22 +- keyBoard/Class/Home/VC/HomeRankContentVC.h | 18 + keyBoard/Class/Home/VC/HomeRankContentVC.m | 96 + keyBoard/Class/Home/VC/HomeRankVC.h | 8 +- keyBoard/Class/Home/VC/HomeRankVC.m | 129 +- keyBoard/Class/Home/VC/HomeVC.m | 8 +- .../Class/Resource/Images/Indicator/boat.png | Bin 0 -> 21478 bytes .../Class/Resource/Images/Indicator/city.png | Bin 0 -> 38236 bytes .../Class/Resource/Images/Indicator/light.png | Bin 0 -> 44813 bytes .../Class/Resource/Images/Indicator/lotus.png | Bin 0 -> 178089 bytes .../Class/Resource/Images/Indicator/river.png | Bin 0 -> 19245 bytes .../Resource/Images/Indicator/seaWave.png | Bin 0 -> 62773 bytes .../Class/Resource/Images/JXCategoryView.png | Bin 0 -> 2968 bytes .../Images/JXCategoryViewStructure.png | Bin 0 -> 13546 bytes keyBoard/Class/Resource/Images/apple.png | Bin 0 -> 2032 bytes .../Class/Resource/Images/apple_selected.png | Bin 0 -> 1488 bytes keyBoard/Class/Resource/Images/arrow_down.png | Bin 0 -> 155 bytes keyBoard/Class/Resource/Images/arrow_up.png | Bin 0 -> 156 bytes keyBoard/Class/Resource/Images/carrot.png | Bin 0 -> 1953 bytes .../Class/Resource/Images/carrot_selected.png | Bin 0 -> 1305 bytes keyBoard/Class/Resource/Images/crab.png | Bin 0 -> 3581 bytes .../Class/Resource/Images/crab_selected.png | Bin 0 -> 2195 bytes keyBoard/Class/Resource/Images/filter.png | Bin 0 -> 228 bytes keyBoard/Class/Resource/Images/football.png | Bin 0 -> 65011 bytes keyBoard/Class/Resource/Images/grape.png | Bin 0 -> 3350 bytes .../Class/Resource/Images/grape_selected.png | Bin 0 -> 1915 bytes keyBoard/Class/Resource/Images/lobster.png | Bin 0 -> 4499 bytes .../Resource/Images/lobster_selected.png | Bin 0 -> 2856 bytes keyBoard/Class/Resource/Images/lufei.jpg | Bin 0 -> 72830 bytes keyBoard/Class/Resource/Images/watermelon.png | Bin 0 -> 3531 bytes .../Resource/Images/watermelon_selected.png | Bin 0 -> 1953 bytes keyBoard/Class/Shop/VC/KBShopVC.h | 16 + keyBoard/Class/Shop/VC/KBShopVC.m | 31 + keyBoard/KeyBoardPrefixHeader.pch | 3 + 195 files changed, 13443 insertions(+), 2729 deletions(-) create mode 100644 Pods/JXCategoryView/LICENSE create mode 100644 Pods/JXCategoryView/README.md create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.h create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.m create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.h create mode 100644 Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryFactory.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryFactory.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorProtocol.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.h create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.m create mode 100644 Pods/JXCategoryView/Sources/Common/JXCategoryViewDefines.h create mode 100644 Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.h create mode 100644 Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.m create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.h create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.m create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.h create mode 100644 Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.m create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.h create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.m create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageView.h create mode 100644 Pods/JXCategoryView/Sources/Image/JXCategoryImageView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.h create mode 100644 Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.m create mode 100644 Pods/JXCategoryView/Sources/JXCategoryView.h create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.h create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.m create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.h create mode 100644 Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.m create mode 100644 Pods/JXCategoryView/Sources/PrivacyInfo.xcprivacy create mode 100644 Pods/JXCategoryView/Sources/RLTManager/RTLManager.h create mode 100644 Pods/JXCategoryView/Sources/RLTManager/RTLManager.m create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.h create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.m create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.h create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.m create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.h create mode 100644 Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.m create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.h create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.m create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.h create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.m create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.h create mode 100644 Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.m create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h create mode 100644 Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m create mode 100644 Pods/JXPagingView/LICENSE create mode 100644 Pods/JXPagingView/README.md create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.h create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.m create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.h create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.m create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.h create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.m create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.h create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.m create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerView.h create mode 100644 Pods/JXPagingView/Sources/JXPagerView/JXPagerView.m create mode 100644 Pods/JXPagingView/Sources/PrivacyInfo.xcprivacy create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView-JXCategoryView.xcscheme create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView.xcscheme create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView-JXPagerView.xcscheme create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView.xcscheme create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView-Info.plist create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView-dummy.m create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView-prefix.pch create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView-umbrella.h create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView.debug.xcconfig create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView.modulemap create mode 100644 Pods/Target Support Files/JXCategoryView/JXCategoryView.release.xcconfig create mode 100644 Pods/Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView-Info.plist create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView-dummy.m create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView-prefix.pch create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView-umbrella.h create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView.debug.xcconfig create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView.modulemap create mode 100644 Pods/Target Support Files/JXPagingView/JXPagingView.release.xcconfig create mode 100644 Pods/Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist create mode 100644 keyBoard/Assets.xcassets/Tabbar/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/tab_shequ_selected@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shequ_selected.imageset/tab_shequ_selected@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/tab_shop@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop.imageset/tab_shop@3x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@2x.png create mode 100644 keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@3x.png create mode 100644 keyBoard/Class/Community/VC/KBCommunityVC.h create mode 100644 keyBoard/Class/Community/VC/KBCommunityVC.m create mode 100644 keyBoard/Class/Home/VC/HomeRankContentVC.h create mode 100644 keyBoard/Class/Home/VC/HomeRankContentVC.m create mode 100644 keyBoard/Class/Resource/Images/Indicator/boat.png create mode 100644 keyBoard/Class/Resource/Images/Indicator/city.png create mode 100644 keyBoard/Class/Resource/Images/Indicator/light.png create mode 100644 keyBoard/Class/Resource/Images/Indicator/lotus.png create mode 100644 keyBoard/Class/Resource/Images/Indicator/river.png create mode 100644 keyBoard/Class/Resource/Images/Indicator/seaWave.png create mode 100644 keyBoard/Class/Resource/Images/JXCategoryView.png create mode 100644 keyBoard/Class/Resource/Images/JXCategoryViewStructure.png create mode 100644 keyBoard/Class/Resource/Images/apple.png create mode 100644 keyBoard/Class/Resource/Images/apple_selected.png create mode 100644 keyBoard/Class/Resource/Images/arrow_down.png create mode 100644 keyBoard/Class/Resource/Images/arrow_up.png create mode 100644 keyBoard/Class/Resource/Images/carrot.png create mode 100644 keyBoard/Class/Resource/Images/carrot_selected.png create mode 100644 keyBoard/Class/Resource/Images/crab.png create mode 100644 keyBoard/Class/Resource/Images/crab_selected.png create mode 100644 keyBoard/Class/Resource/Images/filter.png create mode 100644 keyBoard/Class/Resource/Images/football.png create mode 100644 keyBoard/Class/Resource/Images/grape.png create mode 100644 keyBoard/Class/Resource/Images/grape_selected.png create mode 100644 keyBoard/Class/Resource/Images/lobster.png create mode 100644 keyBoard/Class/Resource/Images/lobster_selected.png create mode 100644 keyBoard/Class/Resource/Images/lufei.jpg create mode 100644 keyBoard/Class/Resource/Images/watermelon.png create mode 100644 keyBoard/Class/Resource/Images/watermelon_selected.png create mode 100644 keyBoard/Class/Shop/VC/KBShopVC.h create mode 100644 keyBoard/Class/Shop/VC/KBShopVC.m diff --git a/Podfile b/Podfile index 4795336..b4c0cbf 100644 --- a/Podfile +++ b/Podfile @@ -10,6 +10,8 @@ target 'keyBoard' do pod 'Bugly', :configurations => ['Release'] pod 'DZNEmptyDataSet', '1.8.1' pod 'FLAnimatedImage', '~> 1.0.17' + pod 'JXPagingView/Pager', '~> 2.1.3' + pod 'JXCategoryView', '~> 1.6.8' pod 'HWPanModal', '~> 0.9.9' pod 'LSTPopView', '~> 0.3.10' pod 'LookinServer', :configurations => ['Debug'] diff --git a/Podfile.lock b/Podfile.lock index a8812f6..9ed0f51 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -18,6 +18,8 @@ PODS: - DZNEmptyDataSet (1.8.1) - FLAnimatedImage (1.0.17) - HWPanModal (0.9.9) + - JXCategoryView (1.6.8) + - JXPagingView/Pager (2.1.3) - LookinServer (1.2.8): - LookinServer/Core (= 1.2.8) - LookinServer/Core (1.2.8) @@ -41,6 +43,8 @@ DEPENDENCIES: - DZNEmptyDataSet (= 1.8.1) - FLAnimatedImage (~> 1.0.17) - HWPanModal (~> 0.9.9) + - JXCategoryView + - JXPagingView/Pager (~> 2.1.3) - LookinServer - LSTPopView (~> 0.3.10) - Masonry (= 1.1.0) @@ -56,6 +60,8 @@ SPEC REPOS: - DZNEmptyDataSet - FLAnimatedImage - HWPanModal + - JXCategoryView + - JXPagingView - LookinServer - LSTPopView - LSTTimer @@ -71,6 +77,8 @@ SPEC CHECKSUMS: DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2 + JXCategoryView: 262d503acea0b1278c79a1c25b7332ffaef4d518 + JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80 LSTPopView: 9379f00f6ce7d1fc620b50ab00ed3ef97b2d4d52 LSTTimer: caf8f02ff366ca175cf4c1778d26c166183c1b6f @@ -80,6 +88,6 @@ SPEC CHECKSUMS: MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: c50284c86c4e30cee59c186e48767667019dcb61 +PODFILE CHECKSUM: ce689000a7b9b24f5d74cc50a93350665c3af035 COCOAPODS: 1.16.2 diff --git a/Pods/JXCategoryView/LICENSE b/Pods/JXCategoryView/LICENSE new file mode 100644 index 0000000..0fdb1e7 --- /dev/null +++ b/Pods/JXCategoryView/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Pods/JXCategoryView/README.md b/Pods/JXCategoryView/README.md new file mode 100644 index 0000000..2fae2c3 --- /dev/null +++ b/Pods/JXCategoryView/README.md @@ -0,0 +1,296 @@ +
+ +[![platform](https://img.shields.io/badge/platform-iOS-blue.svg?style=plastic)](#) +[![languages](https://img.shields.io/badge/language-objective--c-blue.svg)](#) +[![cocoapods](https://img.shields.io/badge/cocoapods-supported-4BC51D.svg?style=plastic)](https://cocoapods.org/pods/JXCategoryView) +[![support](https://img.shields.io/badge/support-ios%208%2B-orange.svg)](#) + +A powerful and easy to use category view (segmentedcontrol, segmentview, pagingview, pagerview, pagecontrol) (腾讯新闻、今日头条、QQ 音乐、网易云音乐、京东、爱奇艺、腾讯视频、淘宝、天猫、简书、微博等所有主流 APP 分类切换滚动视图) + +与其他的同类三方库对比的优点: +- 使用协议封装指示器逻辑,可以随心所欲地自定义指示器效果; +- 提供更加全面丰富、高度自定义的效果; +- 使用子类化管理 cell 样式,逻辑更清晰,扩展更简单; +- 高度封装列表容器,使用便捷,完美支持列表的生命周期调用; + +## Swift版本 + +如果你在找 Swift 版本,请点击查看 [JXSegmentedView](https://github.com/pujiaxin33/JXSegmentedView)。 + +## 效果预览 + +### 指示器效果预览 + +说明 | Gif | +----|------| +LineView | | +LineView延长 | | +LineView延长+偏移 | | +LineView🌈彩虹风格 | | +DotLineView点线效果 | | +BallView QQ黏性红点 | | +TriangleView 三角形底部 | | +TriangleView 三角形顶部 | | +BackgroundView椭圆形 | | +BackgroundView椭圆形+阴影 | | +BackgroundView长方形 | | +BackgroundView遮罩有背景 | | +BackgroundView遮罩无背景 | | +BackgroundView渐变色 | | +ImageView底部(小船) | | +ImageView背景(最佳男歌手) | | +ImageView滚动效果(足球) | | +混合使用 | | + +以下均支持上下位置切换: +`JXCategoryIndicatorLineView`、`JXCategoryIndicatorImageView`、`JXCategoryIndicatorBallView`、`JXCategoryIndicatorTriangleView` + +### Cell样式效果预览 + +说明 | Gif | +----|------| +颜色渐变 | | +大小缩放 | | +大小缩放+底部锚点 | | +大小缩放+顶部锚点 | | +大小缩放+字体粗细 | | +大小缩放+点击动画 | | +大小缩放+cell宽度缩放 | | +TitleImage_Top | | +TitleImage_Left | | +TitleImage_Bottom | | +TitleImage_Right | | +cell图文混用 | | +Image | | +数字 | | +红点 | | +多行文本 | | +多行富文本 | | +Cell背景色渐变 | | +分割线 | | + +### 特殊效果预览 + +说明 | Gif | +----|------| +数据源过少
averageCellSpacingEnabled默认为YES | | +数据源过少
averageCellSpacingEnabled为NO | | +SegmentedControl
参考[`SegmentedControlViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/SegmentedControl/SegmentedControlViewController.m)类 | | +导航栏使用
参考[`NaviSegmentedControlViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/SegmentedControl/NaviSegmentedControlViewController.m)类 | | +嵌套使用
参考[`NestViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/Nest/NestViewController.m)类 | | +个人主页(上下左右滚动、header悬浮)
参考[`PagingViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/PagingView/Example/PagingViewController.m)类
更多样式请点击查看[JXPagingView库](https://github.com/pujiaxin33/JXPagingView) | | +垂直列表滚动
参考[`VerticalListViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/VerticalListView/VerticalListViewController.m)类
高仿腾讯视频
支持UITableView,参考[`VerticalListTableViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/VerticalListView/VerticalListTableViewController.m)
(背景色异常是录屏软件bug) | | +| 垂直缩放(仿网易圈圈、脉脉首页)
参考[`ScrollZoomViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/ScrollZoom/ScrollZoomViewController.m)类 | | +数据源刷新&列表数据加载
参考[`LoadDataListContainerViewController`](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/LoadData/LoadDataListContainerViewController.m)类 | | +上下滚动隐藏导航栏 | | +京东首页-滚动渐变变小 | | + +### 自定义效果预览 + +收录来自其他使用者的自定义示例,这些自定义类只在 Demo 项目里面,Pod 库并没有这些文件。所以,如果你需要使用这些自定义效果,请通过文件导入的方式。 + +目的: +- 参考学习如何自定义; +- 直接修改自定义示例类以快速实现自己的需求。 + +欢迎提 PullRequest 进行收录你的自定义效果。 + +| 说明 | Gif | +| ----|------| +| Spring动画指示器 | | +| 富文本数量cell | | +| 左右对齐指示器 | | +| 秒杀时间线cell | | +| 京东商品排序cell | | +| title背景块cell | | + +## 要求 + +- iOS 9.0+ +- Xcode 9+ +- Objective-C + +## 安装 + +### 手动 + +Clone 代码,把 Sources 文件夹拖入项目,`#import "JXCategoryView.h"` 就可以使用了。 + +### CocoaPods + +```ruby +target '' do + pod 'JXCategoryView' +end +``` +先执行 `pod repo update`,再执行 `pod install`。 + +## 结构图 + + + +## 使用 + +### JXCategoryTitleView 使用示例 + +1. 初始化 `JXCategoryTitleView`: +```Objective-C +self.categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, WindowsSize.width, 50)]; +self.categoryView.delegate = self; +[self.view addSubview:self.categoryView]; +``` + +2. 配置 `JXCategoryTitleView` 的属性: +```Objective-C +self.categoryView.titles = @[@"螃蟹", @"麻辣小龙虾", @"苹果"...]; +self.categoryView.titleColorGradientEnabled = YES; +``` + +3. 添加指示器: +```Objective-C +JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; +lineView.indicatorColor = [UIColor redColor]; +lineView.indicatorWidth = JXCategoryViewAutomaticDimension; +self.categoryView.indicators = @[lineView]; +``` + +4. 实现 `JXCategoryViewDelegate` 代理(可选) +```Objective-C +// 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。 +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index; + +// 点击选中的情况才会调用该方法 +- (void)categoryView:(JXCategoryBaseView *)categoryView didClickSelectedItemAtIndex:(NSInteger)index; + +// 滚动选中的情况才会调用该方法 +- (void)categoryView:(JXCategoryBaseView *)categoryView didScrollSelectedItemAtIndex:(NSInteger)index; + +// 正在滚动中的回调 +- (void)categoryView:(JXCategoryBaseView *)categoryView scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio; +``` + +### 列表容器使用示例 + +#### `JXCategoryListContainerView` 封装类使用示例 + +`JXCategoryListContainerView` 是对列表视图高度封装的类,具有以下优点: + +- 相对于直接使用 `UIScrollView` 自定义,封装度高、代码集中、使用简单; +- 列表懒加载:当显示某个列表的时候,才进行列表初始化。而不是一次性加载全部列表,性能更优; +- 支持列表的 `willAppear`、`didAppear`、`willDisappear`、`didDisappear` 生命周期方法调用; + +1. 初始化 `JXCategoryListContainerView` 并关联到 `categoryView`: +```Objective-C +self.listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; +[self.view addSubview:self.listContainerView]; +// 关联到 categoryView +self.categoryView.listContainer = self.listContainerView; +``` + +2. 实现 `JXCategoryListContainerViewDelegate` 代理方法: +```Objective-C +// 返回列表的数量 +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} +// 根据下标 index 返回对应遵守并实现 `JXCategoryListContentViewDelegate` 协议的列表实例 +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + return [[ListViewController alloc] init]; +} +``` + +3. 列表实现 `JXCategoryListContentViewDelegate` 代理方法 +不管列表是 `UIView` 还是 `UIViewController` 都可以,提高使用灵活性,更便于现有的业务接入。 +```Objective-C +// 返回列表视图 +// 如果列表是 VC,就返回 VC.view +// 如果列表是 View,就返回 View 自己 +- (UIView *)listView { + return self.view; +} +``` + + +具体点击 [LoadDataListContainerViewController](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/LoadData/LoadDataListContainerViewController.m) 查看源代码了解 + +#### 直接使用 UIScrollView 自定义 + +因为代码量较多且分散,所有不推荐使用该方法。要正确使用需要注意的地方比较多,尤其对于刚接触 iOS 的同学来说不太友好。 + +不直接贴代码了,具体点击 [LoadDataListCustomViewController](https://github.com/pujiaxin33/JXCategoryView/tree/master/Example/Example/Examples/LoadData/LoadDataListCustomViewController.m) 查看源代码了解。 + + +## 常见问题和答案 + +❗️❗️❗️这里面包含了许多常见问题和答案,使用之前请务必浏览此文档,或者遇到问题先看此文档❗️❗️❗️ + +[常见问题和答案总文档](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md) + +- [个人主页效果更丰富的示例:JXPagingView](https://github.com/pujiaxin33/JXPagingView) +- [侧滑手势处理](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BE%A7%E6%BB%91%E6%89%8B%E5%8A%BF%E5%A4%84%E7%90%86.md) +- [列表的生命周期方法处理](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E5%88%97%E8%A1%A8%E7%9A%84%E7%94%9F%E5%91%BD%E5%91%A8%E6%9C%9F%E6%96%B9%E6%B3%95%E5%A4%84%E7%90%86.md) +- [`JXCategoryListContainerType`的`scrollView`和`collectionView`对比](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#jxcategorylistcontainertype%E7%9A%84scrollview%E5%92%8Ccollectionview%E5%AF%B9%E6%AF%94) +- [cell左滑删除](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#cell%E5%B7%A6%E6%BB%91%E5%88%A0%E9%99%A4) +- [`FDFullscreenPopGesture`等全屏手势处理](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E5%85%A8%E5%B1%8F%E6%89%8B%E5%8A%BF%E5%A4%84%E7%90%86.md) +- [JXCategoryView数据源刷新](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#jxcategoryview%E6%95%B0%E6%8D%AE%E6%BA%90%E5%88%B7%E6%96%B0) +- [`reloadDataWithoutListContainer`方法使用说明](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#reloaddatawithoutlistcontainer%E6%96%B9%E6%B3%95%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E) +- [listContainer或contentScrollView关联说明](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#listcontainer%E6%88%96contentscrollview%E5%85%B3%E8%81%94%E8%AF%B4%E6%98%8E) +- [点击切换列表的动画控制](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E7%82%B9%E5%87%BB%E5%88%87%E6%8D%A2%E5%88%97%E8%A1%A8%E7%9A%84%E5%8A%A8%E7%94%BB%E6%8E%A7%E5%88%B6) +- [列表cell点击跳转示例](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E5%88%97%E8%A1%A8cell%E7%82%B9%E5%87%BB%E8%B7%B3%E8%BD%AC%E7%A4%BA%E4%BE%8B) +- [列表调用`presentViewController`方法](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E5%88%97%E8%A1%A8%E8%B0%83%E7%94%A8presentviewcontroller%E6%96%B9%E6%B3%95) +- [代码选中指定index](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E4%BB%A3%E7%A0%81%E9%80%89%E4%B8%AD%E6%8C%87%E5%AE%9Aindex) +- [JXCategoryView.collectionView高度取整说明](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#jxcategoryviewcollectionview%E9%AB%98%E5%BA%A6%E5%8F%96%E6%95%B4%E8%AF%B4%E6%98%8E) +- [对父VC的automaticallyAdjustsScrollViewInsets属性设置为NO](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E5%AF%B9%E7%88%B6vc%E7%9A%84automaticallyadjustsscrollviewinsets%E5%B1%9E%E6%80%A7%E8%AE%BE%E7%BD%AE%E4%B8%BAno) +- [`JXCategoryListContainerView`内部使用`UIViewController`当做列表容器使用说明](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#jxcategorylistcontainerview%E5%86%85%E9%83%A8%E4%BD%BF%E7%94%A8uiviewcontroller%E5%BD%93%E5%81%9A%E5%88%97%E8%A1%A8%E5%AE%B9%E5%99%A8%E4%BD%BF%E7%94%A8%E8%AF%B4%E6%98%8E) +- [使用多行文本](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E4%BD%BF%E7%94%A8%E5%A4%9A%E8%A1%8C%E6%96%87%E6%9C%AC) +- [列表容器禁止左右滑动](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E5%88%97%E8%A1%A8%E5%AE%B9%E5%99%A8%E7%A6%81%E6%AD%A2%E5%B7%A6%E5%8F%B3%E6%BB%91%E5%8A%A8) +- [单个cell刷新 ](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E5%8D%95%E4%B8%AAcell%E5%88%B7%E6%96%B0) +- [点击item时指示器和列表滚动时效果一致](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E7%82%B9%E5%87%BBitem%E6%97%B6%E6%8C%87%E7%A4%BA%E5%99%A8%E5%92%8C%E5%88%97%E8%A1%A8%E6%BB%9A%E5%8A%A8%E6%97%B6%E6%95%88%E6%9E%9C%E4%B8%80%E8%87%B4) +- [自定义建议](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E4%BD%BF%E7%94%A8%E6%B3%A8%E6%84%8F%E4%BA%8B%E9%A1%B9.md#%E8%87%AA%E5%AE%9A%E4%B9%89%E5%BB%BA%E8%AE%AE) + +## 指示器样式自定义 + +- 需要继承 `JXCategoryIndicatorProtocol` 协议,点击参看 [JXCategoryIndicatorProtocol](https://github.com/pujiaxin33/JXCategoryView/blob/master/Sources/Common/JXCategoryIndicatorProtocol.h); +- 提供了继承 `JXCategoryIndicatorProtocol` 协议的基类 `JXCategoryIndicatorComponentView`,里面提供了许多基础属性。点击参看 [JXCategoryIndicatorComponentView](https://github.com/pujiaxin33/JXCategoryView/blob/master/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m); +- 自定义指示器,请参考已实现的指示器视图,多尝试、多思考,再有问题请提 Issue 或加入反馈 QQ 群。 + +## Cell 自定义 + +- 任何子类化需求,view、cell、cellModel 三个都要子类化,即使某个子类 cell 什么事情都不做。用于维护继承链,以免以后子类化都不知道要继承谁了; +- 如果你想完全自定义 cell 里面的内容,那就继承 `JXCategoryIndicatorView`、`JXCategoryIndicatorCell、`JXCategoryIndicatorCellModel`,就像`JXCategoryTitleView`、`JXCategoryTitleCell、`JXCategoryTitleCellModel`那样去做; +- 如果你只是在父类进行一些微调,那就继承目标 view、cell、cellModel,对 cell 原有控件微调、或者加入新的控件皆可。就像 `JXCategoryTitleImageView` 系列、`JXCategoryTitleAttributeView` 系列那样去做; +- Cell 自定义,请参考已实现的 cell 样式,多尝试、多思考,再有问题请提 Issue 或加入反馈 QQ 群 + +## 常用属性说明 + +[常用属性说明文档地址](https://github.com/pujiaxin33/JXCategoryView/blob/master/Document/%E5%B8%B8%E7%94%A8%E5%B1%9E%E6%80%A7%E8%AF%B4%E6%98%8E.md) + +## 更新记录 + +- 2018.8.21 发布1.0.0版本,更新内容:使用POP(面向协议编程)重构指示器视图;[迁移指南](https://github.com/pujiaxin33/JXCategoryView/blob/master/Migration/1.0.0.md) +- 2018.8.22 发布1.0.1版本,更新内容:删除zoomEnabled,新增titleLabelZoomEnabled、imageZoomEnabled; +- 2018.8.23 发布1.0.2版本,更新内容:添加cellWidthZoomEnabled实现腾讯视频效果; +- 2018.8.24 发布1.0.3版本,更新内容:添加垂直列表滚动效果、指示器添加verticalMargin属性、JXCategoryViewDelegate代理方法优化; +- 2018.9.4 发布1.0.4版本,更新内容:修复bug、添加cell图文混用示例; +- 2018.12.19 发布1.1.7版本,更新内容:添加`JXCategoryListContainerView`,高度封装列表逻辑,支持懒加载列表,提升初始化性能; +- 2019.1.24 发布1.2.2版本,更新内容:非兼容更新接口`- (BOOL)selectCellAtIndex:(NSInteger)index selectedType:(JXCategoryCellSelectedType)selectedType`,自定义有用到该接口的请及时更新。 +- 2019.6.21 发布1.3.13版本,更新内容:将`JXCategoryListCollectionContainerView.dataSource`移动到m实现文件,添加`- (instancetype)initWithDataSource:(id)dataSource`初始化方法。 +- 2019.7.20 发布1.3.16版本,删除代理方法`- (void)categoryView:(JXCategoryBaseView *)categoryView didClickedItemContentScrollViewTransitionToIndex:(NSInteger)index;`,请使用`contentScrollViewClickTransitionAnimationEnabled`属性。`JXCategoryTitleVerticalZoomView`进行了重构,内容左边距只需要使用`contentEdgeLeft`属性即可。 +- 2019.9.11 发布1.4.0版本,删除一波被标记为弃用的属性和方法;完善列表的生命周期方法的调用;`JXCategoryListCollectionContainerView`类新增和必须要调用`- (void)scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio selectedIndex:(NSInteger)selectedIndex`和`- (void)didClickSelectedItemAtIndex:(NSInteger)index`两个方法。 +- 2019.9.19 发布1.5.0版本,重构列表容器,具体修改请参考[1.5.0版本迁移指南](https://github.com/pujiaxin33/JXCategoryView/blob/master/Migration/1.5.0%E7%89%88%E6%9C%AC%E8%BF%81%E7%A7%BB%E6%8C%87%E5%8D%97.md) + +## 补充 + +如果刚开始使用`JXCategoryView`,当开发过程中需要支持某种特性时,请务必先搜索使用文档或者源代码。确认是否已经实现支持了想要的特性。请别不要文档和源代码都没有看,就直接提问,这对于大家都是一种时间浪费。如果没有支持想要的特性,欢迎提Issue讨论,或者自己实现提一个PullRequest。 + +该仓库保持随时更新,对于主流新的分类选择效果会第一时间支持。使用过程中,有任何建议或问题,可以通过以下方式联系我:
+邮箱:317437084@qq.com
+QQ群: 112440473 + + + +喜欢就star❤️一下吧 + +## License + +JXCategoryView is released under the MIT license. diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.h b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.h new file mode 100644 index 0000000..ba630f3 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.h @@ -0,0 +1,29 @@ +// +// JXCategoryBaseCell.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXCategoryBaseCellModel.h" +#import "JXCategoryViewAnimator.h" +#import "JXCategoryViewDefines.h" + +@interface JXCategoryBaseCell : UICollectionViewCell + +@property (nonatomic, strong, readonly) JXCategoryBaseCellModel *cellModel; +@property (nonatomic, strong, readonly) JXCategoryViewAnimator *animator; + +- (void)initializeViews NS_REQUIRES_SUPER; + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel NS_REQUIRES_SUPER; + +- (BOOL)checkCanStartSelectedAnimation:(JXCategoryBaseCellModel *)cellModel; + +- (void)addSelectedAnimationBlock:(JXCategoryCellSelectedAnimationBlock)block; + +- (void)startSelectedAnimationIfNeeded:(JXCategoryBaseCellModel *)cellModel; + +@end diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.m b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.m new file mode 100644 index 0000000..ea63aac --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCell.m @@ -0,0 +1,98 @@ +// +// JXCategoryBaseCell.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryBaseCell.h" +#import "RTLManager.h" + +@interface JXCategoryBaseCell () +@property (nonatomic, strong) JXCategoryBaseCellModel *cellModel; +@property (nonatomic, strong) JXCategoryViewAnimator *animator; +@property (nonatomic, strong) NSMutableArray *animationBlockArray; +@end + +@implementation JXCategoryBaseCell + +#pragma mark - Initialize + +- (void)dealloc { + [self.animator stop]; +} + +- (void)prepareForReuse { + [super prepareForReuse]; + + [self.animator stop]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initializeViews]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self initializeViews]; + } + return self; +} + +#pragma mark - Public + +- (void)initializeViews { + _animationBlockArray = [NSMutableArray array]; + + [RTLManager horizontalFlipViewIfNeeded:self]; + [RTLManager horizontalFlipViewIfNeeded:self.contentView]; +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + self.cellModel = cellModel; + + if (cellModel.isSelectedAnimationEnabled) { + [self.animationBlockArray removeLastObject]; + if ([self checkCanStartSelectedAnimation:cellModel]) { + self.animator = [[JXCategoryViewAnimator alloc] init]; + self.animator.duration = cellModel.selectedAnimationDuration; + } else { + [self.animator stop]; + } + } +} + +- (BOOL)checkCanStartSelectedAnimation:(JXCategoryBaseCellModel *)cellModel { + BOOL canStartSelectedAnimation = ((cellModel.selectedType == JXCategoryCellSelectedTypeCode) || (cellModel.selectedType == JXCategoryCellSelectedTypeClick)); + return canStartSelectedAnimation; +} + +- (void)addSelectedAnimationBlock:(JXCategoryCellSelectedAnimationBlock)block { + [self.animationBlockArray addObject:block]; +} + +- (void)startSelectedAnimationIfNeeded:(JXCategoryBaseCellModel *)cellModel { + if (cellModel.isSelectedAnimationEnabled && [self checkCanStartSelectedAnimation:cellModel]) { + // 需要更新 isTransitionAnimating,用于处理在过滤时,禁止响应点击,避免界面异常。 + cellModel.transitionAnimating = YES; + __weak typeof(self)weakSelf = self; + self.animator.progressCallback = ^(CGFloat percent) { + for (JXCategoryCellSelectedAnimationBlock block in weakSelf.animationBlockArray) { + block(percent); + } + }; + self.animator.completeCallback = ^{ + cellModel.transitionAnimating = NO; + [weakSelf.animationBlockArray removeAllObjects]; + }; + [self.animator start]; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.h b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.h new file mode 100644 index 0000000..af82301 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.h @@ -0,0 +1,31 @@ +// +// JXCategoryBaseCellModel.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import +#import "JXCategoryViewDefines.h" + +@interface JXCategoryBaseCellModel : NSObject + +@property (nonatomic, assign) NSUInteger index; +@property (nonatomic, assign) CGFloat cellWidth; +@property (nonatomic, assign) CGFloat cellSpacing; +@property (nonatomic, assign, getter=isSelected) BOOL selected; + +@property (nonatomic, assign, getter=isCellWidthZoomEnabled) BOOL cellWidthZoomEnabled; +@property (nonatomic, assign) CGFloat cellWidthNormalZoomScale; +@property (nonatomic, assign) CGFloat cellWidthCurrentZoomScale; +@property (nonatomic, assign) CGFloat cellWidthSelectedZoomScale; + +@property (nonatomic, assign, getter=isSelectedAnimationEnabled) BOOL selectedAnimationEnabled; +@property (nonatomic, assign) NSTimeInterval selectedAnimationDuration; +@property (nonatomic, assign) JXCategoryCellSelectedType selectedType; + +@property (nonatomic, assign, getter=isTransitionAnimating) BOOL transitionAnimating; + +@end diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.m b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.m new file mode 100644 index 0000000..9b6e520 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryBaseCellModel.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryBaseCellModel.h" + +@implementation JXCategoryBaseCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.h b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.h new file mode 100644 index 0000000..27a54fe --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.h @@ -0,0 +1,222 @@ +// +// JXCategoryView.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXCategoryBaseCell.h" +#import "JXCategoryBaseCellModel.h" +#import "JXCategoryCollectionView.h" +#import "JXCategoryViewDefines.h" + +@class JXCategoryBaseView; + +@protocol JXCategoryViewListContainer +- (void)setDefaultSelectedIndex:(NSInteger)index; +- (UIScrollView *)contentScrollView; +- (void)reloadData; +- (void)didClickSelectedItemAtIndex:(NSInteger)index; +@end + +@protocol JXCategoryViewDelegate + +@optional + +//为什么会把选中代理分为三个,因为有时候只关心点击选中的,有时候只关心滚动选中的,有时候只关心选中。所以具体情况,使用对应方法。 +/** + 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。 + + @param categoryView categoryView对象 + @param index 选中的index + */ +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index; + +/** + 点击选中的情况才会调用该方法 + + @param categoryView categoryView对象 + @param index 选中的index + */ +- (void)categoryView:(JXCategoryBaseView *)categoryView didClickSelectedItemAtIndex:(NSInteger)index; + +/** + 滚动选中的情况才会调用该方法 + + @param categoryView categoryView对象 + @param index 选中的index + */ +- (void)categoryView:(JXCategoryBaseView *)categoryView didScrollSelectedItemAtIndex:(NSInteger)index; + +/** + 控制能否点击Item + + @param categoryView categoryView对象 + @param index 准备点击的index + @return 能否点击 + */ +- (BOOL)categoryView:(JXCategoryBaseView *)categoryView canClickItemAtIndex:(NSInteger)index; + +/** + 正在滚动中的回调 + + @param categoryView categoryView对象 + @param leftIndex 正在滚动中,相对位置处于左边的index + @param rightIndex 正在滚动中,相对位置处于右边的index + @param ratio 从左往右计算的百分比 + */ +- (void)categoryView:(JXCategoryBaseView *)categoryView scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio; + +@end + +@interface JXCategoryBaseView : UIView + +@property (nonatomic, strong, readonly) JXCategoryCollectionView *collectionView; + +@property (nonatomic, strong) NSArray *dataSource; + +@property (nonatomic, weak) id delegate; + +/** + 高封装度的列表容器,使用该类可以让列表拥有完成的生命周期、自动同步defaultSelectedIndex、自动调用reloadData。 + */ +@property (nonatomic, weak) id listContainer; + +/** + 推荐使用封装度更高的listContainer属性。如果使用contentScrollView请参考`LoadDataListCustomViewController`使用示例。 + */ +@property (nonatomic, strong) UIScrollView *contentScrollView; + +@property (nonatomic, assign) NSInteger defaultSelectedIndex; //修改初始化的时候默认选择的index + +@property (nonatomic, assign, readonly) NSInteger selectedIndex; + +@property (nonatomic, assign, getter=isContentScrollViewClickTransitionAnimationEnabled) BOOL contentScrollViewClickTransitionAnimationEnabled; //点击cell进行contentScrollView切换时是否需要动画。默认为YES + +@property (nonatomic, assign) CGFloat contentEdgeInsetLeft; //整体内容的左边距,默认JXCategoryViewAutomaticDimension(等于cellSpacing) + +@property (nonatomic, assign) CGFloat contentEdgeInsetRight; //整体内容的右边距,默认JXCategoryViewAutomaticDimension(等于cellSpacing) + +@property (nonatomic, assign) CGFloat cellWidth; //默认JXCategoryViewAutomaticDimension + +@property (nonatomic, assign) CGFloat cellWidthIncrement; //cell宽度补偿。默认:0 + +@property (nonatomic, assign) CGFloat cellSpacing; //cell之间的间距,默认20 + +@property (nonatomic, assign, getter=isAverageCellSpacingEnabled) BOOL averageCellSpacingEnabled; //当collectionView.contentSize.width小于JXCategoryBaseView的宽度,是否将cellSpacing均分。默认为YES。 + +//cell宽度是否缩放 +@property (nonatomic, assign, getter=isCellWidthZoomEnabled) BOOL cellWidthZoomEnabled; //默认为NO + +@property (nonatomic, assign, getter=isCellWidthZoomScrollGradientEnabled) BOOL cellWidthZoomScrollGradientEnabled; //手势滚动过程中,是否需要更新cell的宽度。默认为YES + +@property (nonatomic, assign) CGFloat cellWidthZoomScale; //默认1.2,cellWidthZoomEnabled为YES才生效 + +@property (nonatomic, assign, getter=isSelectedAnimationEnabled) BOOL selectedAnimationEnabled; //是否开启点击或代码选中动画。默认为NO。自定义的cell选中动画需要自己实现。(仅点击或调用selectItemAtIndex选中才有效,滚动选中无效) + +@property (nonatomic, assign) NSTimeInterval selectedAnimationDuration; //cell选中动画的时间。默认0.25 + +/** + 选中目标index的item + + @param index 目标index + */ +- (void)selectItemAtIndex:(NSInteger)index; + +/** + 初始化的时候无需调用。比如页面初始化之后,根据网络接口异步回调回来数据,重新配置categoryView,需要调用该方法进行刷新。 + */ +- (void)reloadData; + +/** + 重新配置categoryView但是不需要reload listContainer。特殊情况是该方法。 + */ +- (void)reloadDataWithoutListContainer; + +/** + 刷新指定的index的cell + 内部会触发`- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index`方法进行cellModel刷新 + + @param index 指定cell的index + */ +- (void)reloadCellAtIndex:(NSInteger)index; + +@end + + + +@interface JXCategoryBaseView (UISubclassingBaseHooks) + +/** + 获取目标cell当前的frame,反应当前真实的frame受到cellWidthSelectedZoomScale的影响。 + */ +- (CGRect)getTargetCellFrame:(NSInteger)targetIndex; + +/** + 获取目标cell的选中时的frame,其他cell的状态都当做普通状态处理。 + */ +- (CGRect)getTargetSelectedCellFrame:(NSInteger)targetIndex selectedType:(JXCategoryCellSelectedType)selectedType; +- (void)initializeData NS_REQUIRES_SUPER; +- (void)initializeViews NS_REQUIRES_SUPER; + +/** + reloadData方法调用,重新生成数据源赋值到self.dataSource + */ +- (void)refreshDataSource; + +/** + reloadData方法调用,根据数据源重新刷新状态; + */ +- (void)refreshState NS_REQUIRES_SUPER; + +/** + 选中某个item时,刷新将要选中与取消选中的cellModel + + @param selectedCellModel 将要选中的cellModel + @param unselectedCellModel 取消选中的cellModel + */ +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel NS_REQUIRES_SUPER; + +/** + 关联的contentScrollView的contentOffset发生了改变 + + @param contentOffset 偏移量 + */ +- (void)contentOffsetOfContentScrollViewDidChanged:(CGPoint)contentOffset NS_REQUIRES_SUPER; + +/** + 选中某一个item的时候调用,该方法用于子类重载。 + 如果外部要选中某个index,请使用`- (void)selectItemAtIndex:(NSUInteger)index;` + + @param index 选中的index + @param selectedType JXCategoryCellSelectedType + @return 返回值为NO,表示触发内部某些判断(点击了同一个cell),子类无需后续操作。 + */ +- (BOOL)selectCellAtIndex:(NSInteger)index selectedType:(JXCategoryCellSelectedType)selectedType NS_REQUIRES_SUPER; + +/** + reloadData时,返回每个cell的宽度 + + @param index 目标index + @return cellWidth + */ +- (CGFloat)preferredCellWidthAtIndex:(NSInteger)index; + +/** + 返回自定义cell的class + + @return cell class + */ +- (Class)preferredCellClass; + +/** + refreshState时调用,重置cellModel的状态 + + @param cellModel 待重置的cellModel + @param index cellModel在数组中的index + */ +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index NS_REQUIRES_SUPER; + +@end diff --git a/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.m b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.m new file mode 100644 index 0000000..4d0b7bd --- /dev/null +++ b/Pods/JXCategoryView/Sources/Base/JXCategoryBaseView.m @@ -0,0 +1,697 @@ +// +// JXCategoryBaseView.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryBaseView.h" +#import "JXCategoryFactory.h" +#import "JXCategoryViewAnimator.h" +#import "RTLManager.h" + +struct DelegateFlags { + unsigned int didSelectedItemAtIndexFlag : 1; + unsigned int didClickSelectedItemAtIndexFlag : 1; + unsigned int didScrollSelectedItemAtIndexFlag : 1; + unsigned int canClickItemAtIndexFlag : 1; + unsigned int scrollingFromLeftIndexToRightIndexFlag : 1; +}; + +@interface JXCategoryBaseView () + +@property (nonatomic, strong) JXCategoryCollectionView *collectionView; +@property (nonatomic, assign) struct DelegateFlags delegateFlags; +@property (nonatomic, assign) NSInteger selectedIndex; +@property (nonatomic, assign) CGFloat innerCellSpacing; +@property (nonatomic, assign) CGPoint lastContentViewContentOffset; +@property (nonatomic, strong) JXCategoryViewAnimator *animator; +// 正在滚动中的目标index。用于处理正在滚动列表的时候,立即点击item,会导致界面显示异常。 +@property (nonatomic, assign) NSInteger scrollingTargetIndex; +@property (nonatomic, assign, getter=isNeedReloadByBecomeActive) BOOL needReloadByBecomeActive; +@property (nonatomic, assign, getter=isFirstLayoutSubviews) BOOL firstLayoutSubviews; +@property (nonatomic, assign, getter=isNeedConfigAutomaticallyAdjustsScrollViewInsets) BOOL needConfigAutomaticallyAdjustsScrollViewInsets; + +@end + +@implementation JXCategoryBaseView + +- (void)dealloc { + if (self.contentScrollView) { + [self.contentScrollView removeObserver:self forKeyPath:@"contentOffset"]; + } + [[NSNotificationCenter defaultCenter] removeObserver:self name:UIApplicationDidBecomeActiveNotification object:nil]; + [self.animator stop]; +} + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self initializeData]; + [self initializeViews]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self initializeData]; + [self initializeViews]; + } + return self; +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + [super willMoveToSuperview:newSuperview]; + + [self configAutomaticallyAdjustsScrollViewInsets:newSuperview]; +} + +- (void)reloadData { + [self reloadDataWithoutListContainer]; + [self.listContainer reloadData]; +} + +- (void)reloadDataWithoutListContainer { + [self refreshDataSource]; + [self refreshState]; + [self.collectionView.collectionViewLayout invalidateLayout]; + [self.collectionView reloadData]; +} + +- (void)reloadCellAtIndex:(NSInteger)index { + if (index < 0 || index >= self.dataSource.count) { + return; + } + JXCategoryBaseCellModel *cellModel = self.dataSource[index]; + cellModel.selectedType = JXCategoryCellSelectedTypeUnknown; + [self refreshCellModel:cellModel index:index]; + JXCategoryBaseCell *cell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + [cell reloadData:cellModel]; +} + +- (void)selectItemAtIndex:(NSInteger)index { + [self selectCellAtIndex:index selectedType:JXCategoryCellSelectedTypeCode]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + //部分使用者为了适配不同的手机屏幕尺寸,JXCategoryView的宽高比要求保持一样,所以它的高度就会因为不同宽度的屏幕而不一样。计算出来的高度,有时候会是位数很长的浮点数,如果把这个高度设置给UICollectionView就会触发内部的一个错误。所以,为了规避这个问题,在这里对高度统一向下取整。 + //如果向下取整导致了你的页面异常,请自己重新设置JXCategoryView的高度,保证为整数即可。 + CGRect targetFrame = CGRectMake(0, 0, self.bounds.size.width, floor(self.bounds.size.height)); + if (self.isFirstLayoutSubviews) { + if (self.bounds.size.width == 0 || self.bounds.size.height == 0) { + return; + } + if (self.isNeedConfigAutomaticallyAdjustsScrollViewInsets) { + [self configAutomaticallyAdjustsScrollViewInsets:self.superview]; + } + self.firstLayoutSubviews = NO; + self.collectionView.frame = targetFrame; + [self reloadDataWithoutListContainer]; + }else { + if (!CGRectEqualToRect(self.collectionView.frame, targetFrame)) { + self.collectionView.frame = targetFrame; + [self refreshState]; + [self.collectionView.collectionViewLayout invalidateLayout]; + [self.collectionView reloadData]; + } + } +} + +#pragma mark - Setter + +- (void)setDelegate:(id)delegate { + _delegate = delegate; + + _delegateFlags.didSelectedItemAtIndexFlag = [delegate respondsToSelector:@selector(categoryView:didSelectedItemAtIndex:)]; + _delegateFlags.didClickSelectedItemAtIndexFlag = [delegate respondsToSelector:@selector(categoryView:didClickSelectedItemAtIndex:)]; + _delegateFlags.didScrollSelectedItemAtIndexFlag = [delegate respondsToSelector:@selector(categoryView:didScrollSelectedItemAtIndex:)]; + _delegateFlags.canClickItemAtIndexFlag = [delegate respondsToSelector:@selector(categoryView:canClickItemAtIndex:)]; + _delegateFlags.scrollingFromLeftIndexToRightIndexFlag = [delegate respondsToSelector:@selector(categoryView:scrollingFromLeftIndex:toRightIndex:ratio:)]; +} + +- (void)setDefaultSelectedIndex:(NSInteger)defaultSelectedIndex { + _defaultSelectedIndex = defaultSelectedIndex; + + self.selectedIndex = defaultSelectedIndex; + [self.listContainer setDefaultSelectedIndex:defaultSelectedIndex]; +} + +- (void)setContentScrollView:(UIScrollView *)contentScrollView { + if (_contentScrollView != nil) { + [_contentScrollView removeObserver:self forKeyPath:@"contentOffset"]; + } + _contentScrollView = contentScrollView; + + self.contentScrollView.scrollsToTop = NO; + [self.contentScrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil]; +} + +- (void)setListContainer:(id)listContainer { + _listContainer = listContainer; + [listContainer setDefaultSelectedIndex:self.defaultSelectedIndex]; + self.contentScrollView = [listContainer contentScrollView]; +} + +#pragma mark - + +- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { + return 1; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.dataSource.count; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + return [collectionView dequeueReusableCellWithReuseIdentifier:NSStringFromClass([self preferredCellClass]) forIndexPath:indexPath]; +} + +- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { + JXCategoryBaseCellModel *cellModel = self.dataSource[indexPath.item]; + cellModel.selectedType = JXCategoryCellSelectedTypeUnknown; + [(JXCategoryBaseCell *)cell reloadData:cellModel]; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + BOOL isTransitionAnimating = NO; + for (JXCategoryBaseCellModel *cellModel in self.dataSource) { + if (cellModel.isTransitionAnimating) { + isTransitionAnimating = YES; + break; + } + } + if (!isTransitionAnimating) { + //当前没有正在过渡的item,才允许点击选中 + [self clickSelectItemAtIndex:indexPath.row]; + } +} + +#pragma mark - + +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { + return UIEdgeInsetsMake(0, [self getContentEdgeInsetLeft], 0, [self getContentEdgeInsetRight]); +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return CGSizeMake(self.dataSource[indexPath.item].cellWidth, self.collectionView.bounds.size.height); +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { + return self.innerCellSpacing; +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { + return self.innerCellSpacing; +} + +#pragma mark - KVO + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if ([keyPath isEqualToString:@"contentOffset"]) { + CGPoint contentOffset = [change[NSKeyValueChangeNewKey] CGPointValue]; + if ((self.contentScrollView.isTracking || self.contentScrollView.isDecelerating)) { + //只处理用户滚动的情况 + [self contentOffsetOfContentScrollViewDidChanged:contentOffset]; + } + self.lastContentViewContentOffset = contentOffset; + } +} + +#pragma mark - Private + +- (void)configAutomaticallyAdjustsScrollViewInsets:(UIView *)view { + UIResponder *next = view; + while (next != nil) { + if ([next isKindOfClass:[UIViewController class]]) { +#pragma clang diagnostic push +#pragma clang diagnostic ignored "-Wdeprecated-declarations" + ((UIViewController *)next).automaticallyAdjustsScrollViewInsets = NO; +#pragma clang diagnostic pop + self.needConfigAutomaticallyAdjustsScrollViewInsets = NO; + break; + } + next = next.nextResponder; + } +} + +- (CGFloat)getContentEdgeInsetLeft { + if (self.contentEdgeInsetLeft == JXCategoryViewAutomaticDimension) { + return self.innerCellSpacing; + } + return self.contentEdgeInsetLeft; +} + +- (CGFloat)getContentEdgeInsetRight { + if (self.contentEdgeInsetRight == JXCategoryViewAutomaticDimension) { + return self.innerCellSpacing; + } + return self.contentEdgeInsetRight; +} + +- (CGFloat)getCellWidthAtIndex:(NSInteger)index { + return [self preferredCellWidthAtIndex:index] + self.cellWidthIncrement; +} + +- (void)clickSelectItemAtIndex:(NSInteger)index { + if (self.delegateFlags.canClickItemAtIndexFlag && ![self.delegate categoryView:self canClickItemAtIndex:index]) { + return; + } + + [self selectCellAtIndex:index selectedType:JXCategoryCellSelectedTypeClick]; +} + +- (void)scrollSelectItemAtIndex:(NSInteger)index { + [self selectCellAtIndex:index selectedType:JXCategoryCellSelectedTypeScroll]; +} + +- (void)applicationDidBecomeActive:(NSNotification *)notification { + if (self.isNeedReloadByBecomeActive) { + self.needReloadByBecomeActive = NO; + [self reloadData]; + } +} + +@end + +@implementation JXCategoryBaseView (UISubclassingBaseHooks) + +- (CGRect)getTargetCellFrame:(NSInteger)targetIndex { + CGFloat x = [self getContentEdgeInsetLeft]; + for (int i = 0; i < targetIndex; i ++) { + JXCategoryBaseCellModel *cellModel = self.dataSource[i]; + CGFloat cellWidth; + if (cellModel.isTransitionAnimating && cellModel.isCellWidthZoomEnabled) { + //正在进行动画的时候,cellWidthCurrentZoomScale是随着动画渐变的,而没有立即更新到目标值 + if (cellModel.isSelected) { + cellWidth = [self getCellWidthAtIndex:cellModel.index]*cellModel.cellWidthSelectedZoomScale; + }else { + cellWidth = [self getCellWidthAtIndex:cellModel.index]*cellModel.cellWidthNormalZoomScale; + } + }else { + cellWidth = cellModel.cellWidth; + } + x += cellWidth + self.innerCellSpacing; + } + CGFloat width; + JXCategoryBaseCellModel *selectedCellModel = self.dataSource[targetIndex]; + if (selectedCellModel.isTransitionAnimating && selectedCellModel.isCellWidthZoomEnabled) { + width = [self getCellWidthAtIndex:selectedCellModel.index]*selectedCellModel.cellWidthSelectedZoomScale; + }else { + width = selectedCellModel.cellWidth; + } + return CGRectMake(x, 0, width, self.bounds.size.height); +} + +- (CGRect)getTargetSelectedCellFrame:(NSInteger)targetIndex selectedType:(JXCategoryCellSelectedType)selectedType { + CGFloat x = [self getContentEdgeInsetLeft]; + for (int i = 0; i < targetIndex; i ++) { + JXCategoryBaseCellModel *cellModel = self.dataSource[i]; + x += [self getCellWidthAtIndex:cellModel.index] + self.innerCellSpacing; + } + CGFloat cellWidth = 0; + JXCategoryBaseCellModel *selectedCellModel = self.dataSource[targetIndex]; + if (selectedCellModel.cellWidthZoomEnabled) { + cellWidth = [self getCellWidthAtIndex:targetIndex]*selectedCellModel.cellWidthSelectedZoomScale; + }else { + cellWidth = [self getCellWidthAtIndex:targetIndex]; + } + return CGRectMake(x, 0, cellWidth, self.bounds.size.height); +} + +- (void)initializeData { + _firstLayoutSubviews = YES; + _dataSource = [NSMutableArray array]; + _selectedIndex = 0; + _cellWidth = JXCategoryViewAutomaticDimension; + _cellWidthIncrement = 0; + _cellSpacing = 20; + _averageCellSpacingEnabled = YES; + _cellWidthZoomEnabled = NO; + _cellWidthZoomScale = 1.2; + _cellWidthZoomScrollGradientEnabled = YES; + _contentEdgeInsetLeft = JXCategoryViewAutomaticDimension; + _contentEdgeInsetRight = JXCategoryViewAutomaticDimension; + _lastContentViewContentOffset = CGPointZero; + _selectedAnimationEnabled = NO; + _selectedAnimationDuration = 0.25; + _scrollingTargetIndex = -1; + _contentScrollViewClickTransitionAnimationEnabled = YES; + _needReloadByBecomeActive = NO; +} + +- (void)initializeViews { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + _collectionView = [[JXCategoryCollectionView alloc] initWithFrame:self.bounds collectionViewLayout:layout]; + self.collectionView.backgroundColor = [UIColor clearColor]; + self.collectionView.showsHorizontalScrollIndicator = NO; + self.collectionView.showsVerticalScrollIndicator = NO; + self.collectionView.scrollsToTop = NO; + self.collectionView.dataSource = self; + self.collectionView.delegate = self; + [self.collectionView registerClass:[self preferredCellClass] forCellWithReuseIdentifier:NSStringFromClass([self preferredCellClass])]; + if (@available(iOS 10.0, *)) { + self.collectionView.prefetchingEnabled = NO; + } + if (@available(iOS 11.0, *)) { + if ([self.collectionView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) { + self.collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + } + if ([RTLManager supportRTL]) { + self.collectionView.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; + [RTLManager horizontalFlipView:self.collectionView]; + } + [self addSubview:self.collectionView]; + + [[NSNotificationCenter defaultCenter] addObserver:self selector:@selector(applicationDidBecomeActive:) name:UIApplicationDidBecomeActiveNotification object:nil]; +} + +- (void)refreshDataSource {} + +- (void)refreshState { + if (self.selectedIndex < 0 || self.selectedIndex >= self.dataSource.count) { + self.defaultSelectedIndex = 0; + } + + self.innerCellSpacing = self.cellSpacing; + //总的内容宽度(左边距+cell总宽度+总cellSpacing+右边距) + __block CGFloat totalItemWidth = [self getContentEdgeInsetLeft]; + //总的cell宽度 + CGFloat totalCellWidth = 0; + for (int i = 0; i < self.dataSource.count; i++) { + JXCategoryBaseCellModel *cellModel = self.dataSource[i]; + cellModel.index = i; + cellModel.cellWidthZoomEnabled = self.cellWidthZoomEnabled; + cellModel.cellWidthNormalZoomScale = 1; + cellModel.cellWidthSelectedZoomScale = self.cellWidthZoomScale; + cellModel.selectedAnimationEnabled = self.selectedAnimationEnabled; + cellModel.selectedAnimationDuration = self.selectedAnimationDuration; + cellModel.cellSpacing = self.innerCellSpacing; + if (i == self.selectedIndex) { + cellModel.selected = YES; + cellModel.cellWidthCurrentZoomScale = cellModel.cellWidthSelectedZoomScale; + }else { + cellModel.selected = NO; + cellModel.cellWidthCurrentZoomScale = cellModel.cellWidthNormalZoomScale; + } + if (self.isCellWidthZoomEnabled) { + cellModel.cellWidth = [self getCellWidthAtIndex:i]*cellModel.cellWidthCurrentZoomScale; + }else { + cellModel.cellWidth = [self getCellWidthAtIndex:i]; + } + totalCellWidth += cellModel.cellWidth; + if (i == self.dataSource.count - 1) { + totalItemWidth += cellModel.cellWidth + [self getContentEdgeInsetRight]; + }else { + totalItemWidth += cellModel.cellWidth + self.innerCellSpacing; + } + [self refreshCellModel:cellModel index:i]; + } + + if (self.isAverageCellSpacingEnabled && totalItemWidth < self.bounds.size.width) { + //如果总的内容宽度都没有超过视图宽度,就将cellSpacing等分 + NSInteger cellSpacingItemCount = self.dataSource.count - 1; + CGFloat totalCellSpacingWidth = self.bounds.size.width - totalCellWidth; + //如果内容左边距是Automatic,就加1 + if (self.contentEdgeInsetLeft == JXCategoryViewAutomaticDimension) { + cellSpacingItemCount += 1; + }else { + totalCellSpacingWidth -= self.contentEdgeInsetLeft; + } + //如果内容右边距是Automatic,就加1 + if (self.contentEdgeInsetRight == JXCategoryViewAutomaticDimension) { + cellSpacingItemCount += 1; + }else { + totalCellSpacingWidth -= self.contentEdgeInsetRight; + } + + CGFloat cellSpacing = 0; + if (cellSpacingItemCount > 0) { + cellSpacing = totalCellSpacingWidth/cellSpacingItemCount; + } + self.innerCellSpacing = cellSpacing; + [self.dataSource enumerateObjectsUsingBlock:^(JXCategoryBaseCellModel * _Nonnull obj, NSUInteger idx, BOOL * _Nonnull stop) { + obj.cellSpacing = self.innerCellSpacing; + }]; + } + + //---------------------定位collectionView到当前选中的位置---------------------- + //因为初始化的时候,collectionView并没有初始化完,cell都没有被加载出来。只有自己手动计算当前选中的index的位置,然后更新到contentOffset + __block CGFloat frameXOfSelectedCell = [self getContentEdgeInsetLeft]; + __block CGFloat selectedCellWidth = 0; + totalItemWidth = [self getContentEdgeInsetLeft]; + [self.dataSource enumerateObjectsUsingBlock:^(JXCategoryBaseCellModel * cellModel, NSUInteger idx, BOOL * _Nonnull stop) { + if (idx < self.selectedIndex) { + frameXOfSelectedCell += cellModel.cellWidth + self.innerCellSpacing; + }else if (idx == self.selectedIndex) { + selectedCellWidth = cellModel.cellWidth; + } + if (idx == self.dataSource.count - 1) { + totalItemWidth += cellModel.cellWidth + [self getContentEdgeInsetRight]; + }else { + totalItemWidth += cellModel.cellWidth + self.innerCellSpacing; + } + }]; + + CGFloat minX = 0; + CGFloat maxX = totalItemWidth - self.bounds.size.width; + CGFloat targetX = frameXOfSelectedCell - self.bounds.size.width/2.0 + selectedCellWidth/2.0; + CGPoint collectionViewContentOffset = self.collectionView.contentOffset; + collectionViewContentOffset.x = MAX(MIN(maxX, targetX), minX); + + [self.collectionView setContentOffset:collectionViewContentOffset + animated:NO]; + //---------------------定位collectionView到当前选中的位置---------------------- + + if (CGRectEqualToRect(self.contentScrollView.frame, CGRectZero) && self.contentScrollView.superview != nil) { + //某些情况系统会出现JXCategoryView先布局,contentScrollView后布局。就会导致下面指定defaultSelectedIndex失效,所以发现contentScrollView的frame为zero时,强行触发其父视图链里面已经有frame的一个父视图的layoutSubviews方法。 + //比如JXSegmentedListContainerView会将contentScrollView包裹起来使用,该情况需要JXSegmentedListContainerView.superView触发布局更新 + UIView *parentView = self.contentScrollView.superview; + while (parentView != nil && CGRectEqualToRect(parentView.frame, CGRectZero)) { + parentView = parentView.superview; + } + [parentView setNeedsLayout]; + [parentView layoutIfNeeded]; + } + //将contentScrollView的contentOffset定位到当前选中index的位置 + CGPoint contentScrollViewContentOffset = self.contentScrollView.contentOffset; + contentScrollViewContentOffset.x = self.selectedIndex*self.contentScrollView.bounds.size.width; + [self.contentScrollView setContentOffset:contentScrollViewContentOffset animated:NO]; +} + +- (BOOL)selectCellAtIndex:(NSInteger)targetIndex selectedType:(JXCategoryCellSelectedType)selectedType { + if (targetIndex < 0 || targetIndex >= self.dataSource.count) { + return NO; + } + + self.needReloadByBecomeActive = NO; + if (self.selectedIndex == targetIndex) { + //目标index和当前选中的index相等,就不需要处理后续的选中更新逻辑,只需要回调代理方法即可。 + if (selectedType == JXCategoryCellSelectedTypeCode) { + [self.listContainer didClickSelectedItemAtIndex:targetIndex]; + }else if (selectedType == JXCategoryCellSelectedTypeClick) { + [self.listContainer didClickSelectedItemAtIndex:targetIndex]; + if (self.delegateFlags.didClickSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didClickSelectedItemAtIndex:targetIndex]; + } + }else if (selectedType == JXCategoryCellSelectedTypeScroll) { + if (self.delegateFlags.didScrollSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didScrollSelectedItemAtIndex:targetIndex]; + } + } + if (self.delegateFlags.didSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didSelectedItemAtIndex:targetIndex]; + } + self.scrollingTargetIndex = -1; + return NO; + } + + //通知子类刷新当前选中的和将要选中的cellModel + JXCategoryBaseCellModel *lastCellModel = self.dataSource[self.selectedIndex]; + lastCellModel.selectedType = selectedType; + JXCategoryBaseCellModel *selectedCellModel = self.dataSource[targetIndex]; + selectedCellModel.selectedType = selectedType; + [self refreshSelectedCellModel:selectedCellModel unselectedCellModel:lastCellModel]; + + //刷新当前选中的和将要选中的cell + JXCategoryBaseCell *lastCell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:self.selectedIndex inSection:0]]; + [lastCell reloadData:lastCellModel]; + JXCategoryBaseCell *selectedCell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0]]; + [selectedCell reloadData:selectedCellModel]; + + if (self.scrollingTargetIndex != -1 && self.scrollingTargetIndex != targetIndex) { + JXCategoryBaseCellModel *scrollingTargetCellModel = self.dataSource[self.scrollingTargetIndex]; + scrollingTargetCellModel.selected = NO; + scrollingTargetCellModel.selectedType = selectedType; + [self refreshSelectedCellModel:selectedCellModel unselectedCellModel:scrollingTargetCellModel]; + JXCategoryBaseCell *scrollingTargetCell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:self.scrollingTargetIndex inSection:0]]; + [scrollingTargetCell reloadData:scrollingTargetCellModel]; + } + + if (self.isCellWidthZoomEnabled) { + [self.collectionView.collectionViewLayout invalidateLayout]; + //延时为了解决cellwidth变化,点击最后几个cell,scrollToItem会出现位置偏移bu。需要等cellWidth动画渐变结束后再滚动到index的cell位置。 + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(self.selectedAnimationDuration * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES]; + }); + } else { + [self.collectionView scrollToItemAtIndexPath:[NSIndexPath indexPathForItem:targetIndex inSection:0] atScrollPosition:UICollectionViewScrollPositionCenteredHorizontally animated:YES]; + } + + if (selectedType == JXCategoryCellSelectedTypeClick || + selectedType == JXCategoryCellSelectedTypeCode) { + CGPoint offset = self.contentScrollView.contentOffset; + offset.x = + targetIndex*self.contentScrollView.bounds.size.width; + [self.contentScrollView setContentOffset:offset + animated:self.isContentScrollViewClickTransitionAnimationEnabled]; + } + + self.selectedIndex = targetIndex; + if (selectedType == JXCategoryCellSelectedTypeCode) { + [self.listContainer didClickSelectedItemAtIndex:targetIndex]; + } else if (selectedType == JXCategoryCellSelectedTypeClick) { + [self.listContainer didClickSelectedItemAtIndex:targetIndex]; + if (self.delegateFlags.didClickSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didClickSelectedItemAtIndex:targetIndex]; + } + } else if(selectedType == JXCategoryCellSelectedTypeScroll) { + if (self.delegateFlags.didScrollSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didScrollSelectedItemAtIndex:targetIndex]; + } + } + if (self.delegateFlags.didSelectedItemAtIndexFlag) { + [self.delegate categoryView:self didSelectedItemAtIndex:targetIndex]; + } + self.scrollingTargetIndex = -1; + + return YES; +} + + +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel { + selectedCellModel.selected = YES; + unselectedCellModel.selected = NO; + + if (self.isCellWidthZoomEnabled) { + if (selectedCellModel.selectedType == JXCategoryCellSelectedTypeCode || + selectedCellModel.selectedType == JXCategoryCellSelectedTypeClick) { + self.animator = [[JXCategoryViewAnimator alloc] init]; + self.animator.duration = self.selectedAnimationDuration; + __weak typeof(self) weakSelf = self; + self.animator.progressCallback = ^(CGFloat percent) { + selectedCellModel.transitionAnimating = YES; + unselectedCellModel.transitionAnimating = YES; + selectedCellModel.cellWidthCurrentZoomScale = [JXCategoryFactory interpolationFrom:selectedCellModel.cellWidthNormalZoomScale to:selectedCellModel.cellWidthSelectedZoomScale percent:percent]; + selectedCellModel.cellWidth = [weakSelf getCellWidthAtIndex:selectedCellModel.index] * selectedCellModel.cellWidthCurrentZoomScale; + unselectedCellModel.cellWidthCurrentZoomScale = [JXCategoryFactory interpolationFrom:unselectedCellModel.cellWidthSelectedZoomScale to:unselectedCellModel.cellWidthNormalZoomScale percent:percent]; + unselectedCellModel.cellWidth = [weakSelf getCellWidthAtIndex:unselectedCellModel.index] * unselectedCellModel.cellWidthCurrentZoomScale; + [weakSelf.collectionView.collectionViewLayout invalidateLayout]; + }; + self.animator.completeCallback = ^{ + selectedCellModel.transitionAnimating = NO; + unselectedCellModel.transitionAnimating = NO; + }; + [self.animator start]; + } else { + selectedCellModel.cellWidthCurrentZoomScale = selectedCellModel.cellWidthSelectedZoomScale; + selectedCellModel.cellWidth = [self getCellWidthAtIndex:selectedCellModel.index] * selectedCellModel.cellWidthCurrentZoomScale; + unselectedCellModel.cellWidthCurrentZoomScale = unselectedCellModel.cellWidthNormalZoomScale; + unselectedCellModel.cellWidth = [self getCellWidthAtIndex:unselectedCellModel.index] * unselectedCellModel.cellWidthCurrentZoomScale; + } + } +} + +- (void)contentOffsetOfContentScrollViewDidChanged:(CGPoint)contentOffset { + if (self.dataSource.count == 0) { + return; + } + CGFloat ratio = contentOffset.x/self.contentScrollView.bounds.size.width; + if (ratio > self.dataSource.count - 1 || ratio < 0) { + //超过了边界,不需要处理 + return; + } + if (contentOffset.x == 0 && self.selectedIndex == 0 && self.lastContentViewContentOffset.x == 0) { + //滚动到了最左边,且已经选中了第一个,且之前的contentOffset.x为0 + return; + } + CGFloat maxContentOffsetX = self.contentScrollView.contentSize.width - self.contentScrollView.bounds.size.width; + if (contentOffset.x == maxContentOffsetX && self.selectedIndex == self.dataSource.count - 1 && self.lastContentViewContentOffset.x == maxContentOffsetX) { + //滚动到了最右边,且已经选中了最后一个,且之前的contentOffset.x为maxContentOffsetX + return; + } + ratio = MAX(0, MIN(self.dataSource.count - 1, ratio)); + NSInteger baseIndex = floorf(ratio); + CGFloat remainderRatio = ratio - baseIndex; + + if (remainderRatio == 0) { + //快速滑动翻页,用户一直在拖拽contentScrollView,需要更新选中状态 + //滑动一小段距离,然后放开回到原位,contentOffset同样的值会回调多次。例如在index为1的情况,滑动放开回到原位,contentOffset会多次回调CGPoint(width, 0) + if (!(self.lastContentViewContentOffset.x == contentOffset.x && self.selectedIndex == baseIndex)) { + [self scrollSelectItemAtIndex:baseIndex]; + } + } else { + self.needReloadByBecomeActive = YES; + if (self.animator.isExecuting) { + [self.animator invalid]; + //需要重置之前animator.progessCallback为处理完的状态 + for (JXCategoryBaseCellModel *model in self.dataSource) { + if (model.isSelected) { + model.cellWidthCurrentZoomScale = model.cellWidthSelectedZoomScale; + model.cellWidth = [self getCellWidthAtIndex:model.index] * model.cellWidthCurrentZoomScale; + }else { + model.cellWidthCurrentZoomScale = model.cellWidthNormalZoomScale; + model.cellWidth = [self getCellWidthAtIndex:model.index] * model.cellWidthCurrentZoomScale; + } + } + } + //快速滑动翻页,当remainderRatio没有变成0,但是已经翻页了,需要通过下面的判断,触发选中 + if (fabs(ratio - self.selectedIndex) > 1) { + NSInteger targetIndex = baseIndex; + if (ratio < self.selectedIndex) { + targetIndex = baseIndex + 1; + } + [self scrollSelectItemAtIndex:targetIndex]; + } + + if (self.selectedIndex == baseIndex) { + self.scrollingTargetIndex = baseIndex + 1; + } else { + self.scrollingTargetIndex = baseIndex; + } + + if (self.isCellWidthZoomEnabled && self.isCellWidthZoomScrollGradientEnabled) { + JXCategoryBaseCellModel *leftCellModel = (JXCategoryBaseCellModel *)self.dataSource[baseIndex]; + JXCategoryBaseCellModel *rightCellModel = (JXCategoryBaseCellModel *)self.dataSource[baseIndex + 1]; + leftCellModel.cellWidthCurrentZoomScale = [JXCategoryFactory interpolationFrom:leftCellModel.cellWidthSelectedZoomScale to:leftCellModel.cellWidthNormalZoomScale percent:remainderRatio]; + leftCellModel.cellWidth = [self getCellWidthAtIndex:leftCellModel.index] * leftCellModel.cellWidthCurrentZoomScale; + rightCellModel.cellWidthCurrentZoomScale = [JXCategoryFactory interpolationFrom:rightCellModel.cellWidthNormalZoomScale to:rightCellModel.cellWidthSelectedZoomScale percent:remainderRatio]; + rightCellModel.cellWidth = [self getCellWidthAtIndex:rightCellModel.index] * rightCellModel.cellWidthCurrentZoomScale; + [self.collectionView.collectionViewLayout invalidateLayout]; + } + + if (self.delegateFlags.scrollingFromLeftIndexToRightIndexFlag) { + [self.delegate categoryView:self scrollingFromLeftIndex:baseIndex toRightIndex:baseIndex + 1 ratio:remainderRatio]; + } + } +} + +- (CGFloat)preferredCellWidthAtIndex:(NSInteger)index { + return 0; +} + +- (Class)preferredCellClass { + return JXCategoryBaseCell.class; +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.h b/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.h new file mode 100644 index 0000000..dcf1ccb --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.h @@ -0,0 +1,24 @@ +// +// JXCategoryCollectionView.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXCategoryIndicatorProtocol.h" +@class JXCategoryCollectionView; + +@protocol JXCategoryCollectionViewGestureDelegate +@optional +- (BOOL)categoryCollectionView:(JXCategoryCollectionView *)collectionView gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer; +- (BOOL)categoryCollectionView:(JXCategoryCollectionView *)collectionView gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; +@end + +@interface JXCategoryCollectionView : UICollectionView + +@property (nonatomic, strong) NSArray *> *indicators; +@property (nonatomic, weak) id gestureDelegate; + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.m b/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.m new file mode 100644 index 0000000..e8d4829 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryCollectionView.m @@ -0,0 +1,52 @@ +// +// JXCategoryCollectionView.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryCollectionView.h" + +@interface JXCategoryCollectionView () +@end + +@implementation JXCategoryCollectionView + +- (void)setIndicators:(NSArray *> *)indicators { + for (UIView *indicator in _indicators) { + //先移除之前的indicator + [indicator removeFromSuperview]; + } + + _indicators = indicators; + + for (UIView *indicator in indicators) { + [self addSubview:indicator]; + } +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + for (UIView *view in self.indicators) { + [self sendSubviewToBack:view]; + } +} + +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + if (self.gestureDelegate && [self.gestureDelegate respondsToSelector:@selector(categoryCollectionView:gestureRecognizerShouldBegin:)]) { + return [self.gestureDelegate categoryCollectionView:self gestureRecognizerShouldBegin:gestureRecognizer]; + } + return YES; +} + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + if (self.gestureDelegate && [self.gestureDelegate respondsToSelector:@selector(categoryCollectionView:gestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:)]) { + return [self.gestureDelegate categoryCollectionView:self gestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer]; + } + return NO; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.h b/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.h new file mode 100644 index 0000000..ef28f7e --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.h @@ -0,0 +1,18 @@ +// +// JXCategoryFactory.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import + +@interface JXCategoryFactory : NSObject + ++ (CGFloat)interpolationFrom:(CGFloat)from to:(CGFloat)to percent:(CGFloat)percent; + ++ (UIColor *)interpolationColorFrom:(UIColor *)fromColor to:(UIColor *)toColor percent:(CGFloat)percent; + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.m b/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.m new file mode 100644 index 0000000..c71451e --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryFactory.m @@ -0,0 +1,29 @@ +// +// JXCategoryFactory.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryFactory.h" +#import "UIColor+JXAdd.h" + +@implementation JXCategoryFactory + ++ (CGFloat)interpolationFrom:(CGFloat)from to:(CGFloat)to percent:(CGFloat)percent +{ + percent = MAX(0, MIN(1, percent)); + return from + (to - from)*percent; +} + ++ (UIColor *)interpolationColorFrom:(UIColor *)fromColor to:(UIColor *)toColor percent:(CGFloat)percent +{ + CGFloat red = [self interpolationFrom:fromColor.jx_red to:toColor.jx_red percent:percent]; + CGFloat green = [self interpolationFrom:fromColor.jx_green to:toColor.jx_green percent:percent]; + CGFloat blue = [self interpolationFrom:fromColor.jx_blue to:toColor.jx_blue percent:percent]; + CGFloat alpha = [self interpolationFrom:fromColor.jx_alpha to:toColor.jx_alpha percent:percent]; + return [UIColor colorWithRed:red green:green blue:blue alpha:alpha]; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.h b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.h new file mode 100644 index 0000000..00da754 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.h @@ -0,0 +1,31 @@ +// +// JXCategoryIndicatorParamsModel.h +// JXCategoryView +// +// Created by jiaxin on 2018/12/13. +// Copyright © 2018 jiaxin. All rights reserved. +// + +#import +#import +#import "JXCategoryViewDefines.h" + +/** + 指示器不同情况处理时传递的数据模型,不同情况会对不同的属性赋值,根据不同情况的 api 说明确认。 + + FAQ: 为什么会通过 model 传递数据? + 因为指示器处理逻辑以后会扩展不同的使用场景,会新增参数,如果不通过 model 传递,就会在 api 新增参数,一旦修改 api 改的地方就特别多了,而且会影响到之前自定义实现的开发者。 + */ +@interface JXCategoryIndicatorParamsModel : NSObject + +@property (nonatomic, assign) NSInteger selectedIndex; // 当前选中的 index +@property (nonatomic, assign) CGRect selectedCellFrame; // 当前选中的 cellFrame +@property (nonatomic, assign) NSInteger leftIndex; // 正在过渡中的两个 cell,相对位置在左边的 cell 的 index +@property (nonatomic, assign) CGRect leftCellFrame; // 正在过渡中的两个 cell,相对位置在左边的 cell 的 frame +@property (nonatomic, assign) NSInteger rightIndex; // 正在过渡中的两个 cell,相对位置在右边的 cell 的 index +@property (nonatomic, assign) CGRect rightCellFrame; // 正在过渡中的两个 cell,相对位置在右边的 cell 的 frame +@property (nonatomic, assign) CGFloat percent; // 正在过渡中的两个 cell,从左到右的百分比 +@property (nonatomic, assign) NSInteger lastSelectedIndex; // 之前选中的 index +@property (nonatomic, assign) JXCategoryCellSelectedType selectedType; //cell 被选中类型 + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.m b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.m new file mode 100644 index 0000000..8a0eff0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorParamsModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryIndicatorParamsModel.m +// JXCategoryView +// +// Created by jiaxin on 2018/12/13. +// Copyright © 2018 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorParamsModel.h" + +@implementation JXCategoryIndicatorParamsModel + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorProtocol.h b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorProtocol.h new file mode 100644 index 0000000..b4f9ff0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryIndicatorProtocol.h @@ -0,0 +1,49 @@ +// +// JXCategoryIndicatorProtocol.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import +#import "JXCategoryViewDefines.h" +#import "JXCategoryIndicatorParamsModel.h" + +@protocol JXCategoryIndicatorProtocol + +/** + categoryView 重置状态时调用 + + param selectedIndex 当前选中的 index + param selectedCellFrame 当前选中的 cellFrame + @param model 数据模型 + */ +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model; + +/** + contentScrollView在进行手势滑动时,处理指示器跟随手势变化UI逻辑; + + param selectedIndex 当前选中的index + param leftIndex 正在过渡中的两个cell,相对位置在左边的cell的index + param leftCellFrame 正在过渡中的两个cell,相对位置在左边的cell的frame + param rightIndex 正在过渡中的两个cell,相对位置在右边的cell的index + param rightCellFrame 正在过渡中的两个cell,相对位置在右边的cell的frame + param percent 过渡百分比 + @param model 数据模型 + */ +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model; + +/** + 选中了某一个cell + + param lastSelectedIndex 之前选中的index + param selectedIndex 选中的index + param selectedCellFrame 选中的cellFrame + param selectedType cell被选中类型 + @param model 数据模型 + */ +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model; + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.h b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.h new file mode 100644 index 0000000..75243b4 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.h @@ -0,0 +1,16 @@ +// +// JXCategoryListContainerRTLCell.h +// JXCategoryView +// +// Created by jiaxin on 2020/7/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface JXCategoryListContainerRTLCell : UICollectionViewCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.m b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.m new file mode 100644 index 0000000..403efa9 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerRTLCell.m @@ -0,0 +1,23 @@ +// +// JXCategoryListContainerRTLCell.m +// JXCategoryView +// +// Created by jiaxin on 2020/7/3. +// + +#import "JXCategoryListContainerRTLCell.h" +#import "RTLManager.h" + +@implementation JXCategoryListContainerRTLCell + +- (instancetype)initWithFrame:(CGRect)frame +{ + self = [super initWithFrame:frame]; + if (self) { + [RTLManager horizontalFlipViewIfNeeded:self]; + [RTLManager horizontalFlipViewIfNeeded:self.contentView]; + } + return self; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.h b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.h new file mode 100644 index 0000000..215b3a9 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.h @@ -0,0 +1,122 @@ +// +// JXCategoryListScrollView.h +// JXCategoryView +// +// Created by jiaxin on 2018/9/12. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXCategoryViewDefines.h" +#import "JXCategoryBaseView.h" +@class JXCategoryListContainerView; + +/** + 列表容器视图的类型 + + - ScrollView: UIScrollView。优势:没有其他副作用。劣势:视图内存占用相对大一点。 + - CollectionView: 使用UICollectionView。优势:因为列表被添加到cell上,视图的内存占用更少,适合内存要求特别高的场景。劣势:因为cell重用机制的问题,导致列表下拉刷新视图,会因为被removeFromSuperview而被隐藏。需要参考`LoadDataListCollectionListViewController`类做特殊处理。 + */ +typedef NS_ENUM(NSUInteger, JXCategoryListContainerType) { + JXCategoryListContainerType_ScrollView, + JXCategoryListContainerType_CollectionView, +}; + +@protocol JXCategoryListContentViewDelegate + +/** + 如果列表是VC,就返回VC.view + 如果列表是View,就返回View自己 + + @return 返回列表视图 + */ +- (UIView *)listView; + +@optional + +/** + 可选实现,列表将要显示的时候调用 + */ +- (void)listWillAppear; + +/** + 可选实现,列表显示的时候调用 + */ +- (void)listDidAppear; + +/** + 可选实现,列表将要消失的时候调用 + */ +- (void)listWillDisappear; + +/** + 可选实现,列表消失的时候调用 + */ +- (void)listDidDisappear; + +@end + +@protocol JXCategoryListContainerViewDelegate +/** + 返回list的数量 + + @param listContainerView 列表的容器视图 + @return list的数量 + */ +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView; + +/** + 根据index返回一个对应列表实例,需要是遵从`JXCategoryListContentViewDelegate`协议的对象。 + 你可以代理方法调用的时候初始化对应列表,达到懒加载的效果。这也是默认推荐的初始化列表方法。你也可以提前创建好列表,等该代理方法回调的时候再返回也可以,达到预加载的效果。 + 如果列表是用自定义UIView封装的,就让自定义UIView遵从`JXCategoryListContentViewDelegate`协议,该方法返回自定义UIView即可。 + 如果列表是用自定义UIViewController封装的,就让自定义UIViewController遵从`JXCategoryListContentViewDelegate`协议,该方法返回自定义UIViewController即可。 + + @param listContainerView 列表的容器视图 + @param index 目标下标 + @return 遵从JXCategoryListContentViewDelegate协议的list实例 + */ +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index; + +@optional +/** + 返回自定义UIScrollView或UICollectionView的Class + 某些特殊情况需要自己处理UIScrollView内部逻辑。比如项目用了FDFullscreenPopGesture,需要处理手势相关代理。 + + @param listContainerView JXCategoryListContainerView + @return 自定义UIScrollView实例 + */ +- (Class)scrollViewClassInlistContainerView:(JXCategoryListContainerView *)listContainerView; + +/** + 控制能否初始化对应index的列表。有些业务需求,需要在某些情况才允许初始化某些列表,通过通过该代理实现控制。 + */ +- (BOOL)listContainerView:(JXCategoryListContainerView *)listContainerView canInitListAtIndex:(NSInteger)index; + +- (void)listContainerViewDidScroll:(UIScrollView *)scrollView; +- (void)listContainerViewWillBeginDragging:(UIScrollView *)scrollView; +- (void)listContainerViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; +- (void)listContainerViewWillBeginDecelerating:(UIScrollView *)scrollView; +- (void)listContainerViewDidEndDecelerating:(UIScrollView *)scrollView; + +@end + + +@interface JXCategoryListContainerView : UIView + +@property (nonatomic, assign, readonly) JXCategoryListContainerType containerType; +@property (nonatomic, strong, readonly) UIScrollView *scrollView; +@property (nonatomic, strong, readonly) NSDictionary > *validListDict; //已经加载过的列表字典。key是index,value是对应的列表 +@property (nonatomic, strong) UIColor *listCellBackgroundColor; //默认:[UIColor whiteColor] +/** + 滚动切换的时候,滚动距离超过一页的多少百分比,就触发列表的初始化。默认0.01(即列表显示了一点就触发加载)。范围0~1,开区间不包括0和1 + */ +@property (nonatomic, assign) CGFloat initListPercent; +@property (nonatomic, assign) BOOL bounces; //默认NO + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; +- (instancetype)initWithType:(JXCategoryListContainerType)type delegate:(id)delegate NS_DESIGNATED_INITIALIZER; + +@end + diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.m b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.m new file mode 100644 index 0000000..42081b1 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryListContainerView.m @@ -0,0 +1,547 @@ +// +// JXCategoryListContainerView.m +// JXCategoryView +// +// Created by jiaxin on 2018/9/12. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryListContainerView.h" +#import +#import "RTLManager.h" + +@interface JXCategoryListContainerViewController : UIViewController +@property (copy) void(^viewWillAppearBlock)(void); +@property (copy) void(^viewDidAppearBlock)(void); +@property (copy) void(^viewWillDisappearBlock)(void); +@property (copy) void(^viewDidDisappearBlock)(void); +@end + +@implementation JXCategoryListContainerViewController +- (void)dealloc +{ + self.viewWillAppearBlock = nil; + self.viewDidAppearBlock = nil; + self.viewWillDisappearBlock = nil; + self.viewDidDisappearBlock = nil; +} +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + self.viewWillAppearBlock(); +} +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + self.viewDidAppearBlock(); +} +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + self.viewWillDisappearBlock(); +} +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + self.viewDidDisappearBlock(); +} +- (BOOL)shouldAutomaticallyForwardAppearanceMethods { return NO; } +@end + +@interface JXCategoryListContainerView () +@property (nonatomic, weak) id delegate; +@property (nonatomic, strong) UIScrollView *scrollView; +@property (nonatomic, assign) NSInteger currentIndex; +@property (nonatomic, strong) NSMutableDictionary > *validListDict; +@property (nonatomic, assign) NSInteger willAppearIndex; +@property (nonatomic, assign) NSInteger willDisappearIndex; +@property (nonatomic, strong) UICollectionView *collectionView; +@property (nonatomic, strong) JXCategoryListContainerViewController *containerVC; +@end + +@implementation JXCategoryListContainerView + +- (instancetype)initWithType:(JXCategoryListContainerType)type delegate:(id)delegate{ + self = [super initWithFrame:CGRectZero]; + if (self) { + _containerType = type; + _delegate = delegate; + _validListDict = [NSMutableDictionary dictionary]; + _willAppearIndex = -1; + _willDisappearIndex = -1; + _initListPercent = 0.01; + [self initializeViews]; + } + return self; +} + +- (void)initializeViews { + _listCellBackgroundColor = [UIColor whiteColor]; + _containerVC = [[JXCategoryListContainerViewController alloc] init]; + self.containerVC.view.backgroundColor = [UIColor clearColor]; + [self addSubview:self.containerVC.view]; + __weak typeof(self) weakSelf = self; + self.containerVC.viewWillAppearBlock = ^{ + [weakSelf listWillAppear:weakSelf.currentIndex]; + }; + self.containerVC.viewDidAppearBlock = ^{ + [weakSelf listDidAppear:weakSelf.currentIndex]; + }; + self.containerVC.viewWillDisappearBlock = ^{ + [weakSelf listWillDisappear:weakSelf.currentIndex]; + }; + self.containerVC.viewDidDisappearBlock = ^{ + [weakSelf listDidDisappear:weakSelf.currentIndex]; + }; + if (self.containerType == JXCategoryListContainerType_ScrollView) { + if (self.delegate && + [self.delegate respondsToSelector:@selector(scrollViewClassInlistContainerView:)] && + [[self.delegate scrollViewClassInlistContainerView:self] isKindOfClass:object_getClass([UIScrollView class])]) { + _scrollView = (UIScrollView *)[[[self.delegate scrollViewClassInlistContainerView:self] alloc] init]; + }else { + _scrollView = [[UIScrollView alloc] init]; + } + self.scrollView.delegate = self; + self.scrollView.pagingEnabled = YES; + self.scrollView.showsHorizontalScrollIndicator = NO; + self.scrollView.showsVerticalScrollIndicator = NO; + self.scrollView.scrollsToTop = NO; + self.scrollView.bounces = NO; + if (@available(iOS 11.0, *)) { + if ([self.scrollView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) { + self.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + } + [RTLManager horizontalFlipViewIfNeeded:self.scrollView]; + [self.containerVC.view addSubview:self.scrollView]; + }else { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 0; + if (self.delegate && + [self.delegate respondsToSelector:@selector(scrollViewClassInlistContainerView:)] && + [[self.delegate scrollViewClassInlistContainerView:self] isKindOfClass:object_getClass([UICollectionView class])]) { + _collectionView = (UICollectionView *)[[[self.delegate scrollViewClassInlistContainerView:self] alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + }else { + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + } + self.collectionView.pagingEnabled = YES; + self.collectionView.showsHorizontalScrollIndicator = NO; + self.collectionView.showsVerticalScrollIndicator = NO; + self.collectionView.scrollsToTop = NO; + self.collectionView.bounces = NO; + self.collectionView.dataSource = self; + self.collectionView.delegate = self; + [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"]; + if (@available(iOS 10.0, *)) { + self.collectionView.prefetchingEnabled = NO; + } + if (@available(iOS 11.0, *)) { + if ([self.collectionView respondsToSelector:@selector(setContentInsetAdjustmentBehavior:)]) { + self.collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + } + if ([RTLManager supportRTL]) { + self.collectionView.semanticContentAttribute = UISemanticContentAttributeForceLeftToRight; + [RTLManager horizontalFlipView:self.collectionView]; + } + [self.containerVC.view addSubview:self.collectionView]; + //让外部统一访问scrollView + _scrollView = _collectionView; + } +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + [super willMoveToSuperview:newSuperview]; + + UIResponder *next = newSuperview; + while (next != nil) { + if ([next isKindOfClass:[UIViewController class]]) { + [((UIViewController *)next) addChildViewController:self.containerVC]; + break; + } + next = next.nextResponder; + } +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + self.containerVC.view.frame = self.bounds; + if (self.containerType == JXCategoryListContainerType_ScrollView) { + if (CGRectEqualToRect(self.scrollView.frame, CGRectZero) || !CGSizeEqualToSize(self.scrollView.bounds.size, self.bounds.size)) { + self.scrollView.frame = self.bounds; + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + [_validListDict enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull index, id _Nonnull list, BOOL * _Nonnull stop) { + [list listView].frame = CGRectMake(index.intValue*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + }]; + CGPoint scrollViewContentOffset = self.scrollView.contentOffset; + scrollViewContentOffset.x = self.currentIndex*self.scrollView.bounds.size.width; + self.scrollView.contentOffset = scrollViewContentOffset; + }else { + self.scrollView.frame = self.bounds; + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + } + }else { + if (CGRectEqualToRect(self.collectionView.frame, CGRectZero) || !CGSizeEqualToSize(self.collectionView.bounds.size, self.bounds.size)) { + [self.collectionView.collectionViewLayout invalidateLayout]; + self.collectionView.frame = self.bounds; + [self.collectionView reloadData]; + CGPoint collectionViewContentOffset = self.collectionView.contentOffset; + collectionViewContentOffset.x = + self.collectionView.bounds.size.width*self.currentIndex; + [self.collectionView setContentOffset:collectionViewContentOffset animated:NO]; + }else { + self.collectionView.frame = self.bounds; + } + } +} + + +- (void)setinitListPercent:(CGFloat)initListPercent { + _initListPercent = initListPercent; + if (initListPercent <= 0 || initListPercent >= 1) { + NSAssert(NO, @"initListPercent值范围为开区间(0,1),即不包括0和1"); + } +} + +- (void)setBounces:(BOOL)bounces { + _bounces = bounces; + self.scrollView.bounces = bounces; +} + +#pragma mark - UICollectionViewDelegate, UICollectionViewDataSource + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return [self.delegate numberOfListsInlistContainerView:self]; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath]; + cell.contentView.backgroundColor = self.listCellBackgroundColor; + + UIView* listView = nil; + id list = _validListDict[@(indexPath.item)]; + if (list != nil) { + //fixme:如果list是UIViewController,如果这里的frame修改是`[list listView].frame = cell.bounds;`。那么就必须给list vc添加如下代码: + //- (void)loadView { + // self.view = [[UIView alloc] init]; + //} + //所以,总感觉是把UIViewController当做普通view使用,导致了系统内部的bug。所以,缓兵之计就是用下面的方法,暂时解决问题。 + listView = [list listView]; + if ([list isKindOfClass:[UIViewController class]]) { + listView.frame = cell.contentView.bounds; + } else { + listView.frame = cell.bounds; + } + } + + BOOL isAdded = NO; + for (UIView *subview in cell.contentView.subviews) { + if( listView != subview ) { + [subview removeFromSuperview]; + } else { + isAdded = YES; + } + } + + if( !isAdded && listView ) { + [cell.contentView addSubview:listView]; + } + + // 针对 RTL 布局 + if ([UIView userInterfaceLayoutDirectionForSemanticContentAttribute:self.semanticContentAttribute] + == UIUserInterfaceLayoutDirectionRightToLeft) { + cell.contentView.transform = CGAffineTransformMakeScale(-1, 1); + } + + return cell; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return self.bounds.size; +} + +#pragma mark - UIScrollViewDelegate + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewDidScroll:)]) { + [self.delegate listContainerViewDidScroll:scrollView]; + } + + if (!scrollView.isDragging && !scrollView.isTracking && !scrollView.isDecelerating) { + return; + } + CGFloat ratio = scrollView.contentOffset.x/scrollView.bounds.size.width; + NSInteger maxCount = round(scrollView.contentSize.width/scrollView.bounds.size.width); + NSInteger leftIndex = floorf(ratio); + leftIndex = MAX(0, MIN(maxCount - 1, leftIndex)); + NSInteger rightIndex = leftIndex + 1; + if (ratio < 0 || rightIndex >= maxCount) { + [self listDidAppearOrDisappear:scrollView]; + return; + } + CGFloat remainderRatio = ratio - leftIndex; + if (rightIndex == self.currentIndex) { + //当前选中的在右边,用户正在从右边往左边滑动 + if (self.validListDict[@(leftIndex)] == nil && remainderRatio < (1 - self.initListPercent)) { + [self initListIfNeededAtIndex:leftIndex]; + }else if (self.validListDict[@(leftIndex)] != nil) { + if (self.willAppearIndex == -1) { + self.willAppearIndex = leftIndex; + [self listWillAppear:self.willAppearIndex]; + } + } + if (self.willDisappearIndex == -1) { + self.willDisappearIndex = rightIndex; + [self listWillDisappear:self.willDisappearIndex]; + } + }else { + //当前选中的在左边,用户正在从左边往右边滑动 + if (self.validListDict[@(rightIndex)] == nil && remainderRatio > self.initListPercent) { + [self initListIfNeededAtIndex:rightIndex]; + }else if (self.validListDict[@(rightIndex)] != nil) { + if (self.willAppearIndex == -1) { + self.willAppearIndex = rightIndex; + [self listWillAppear:self.willAppearIndex]; + } + } + if (self.willDisappearIndex == -1) { + self.willDisappearIndex = leftIndex; + [self listWillDisappear:self.willDisappearIndex]; + } + } + [self listDidAppearOrDisappear:scrollView]; +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + //滑动到一半又取消滑动处理 + if (self.willDisappearIndex != -1) { + [self listWillAppear:self.willDisappearIndex]; + [self listWillDisappear:self.willAppearIndex]; + [self listDidAppear:self.willDisappearIndex]; + [self listDidDisappear:self.willAppearIndex]; + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + } + + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewDidEndDecelerating:)]) { + [self.delegate listContainerViewDidEndDecelerating:scrollView]; + } +} + +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView +{ + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWillBeginDragging:)]) { + [self.delegate listContainerViewWillBeginDragging:scrollView]; + } +} + +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate +{ + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewDidEndDragging:willDecelerate:)]) { + [self.delegate listContainerViewDidEndDragging:scrollView willDecelerate:decelerate]; + } +} + +- (void)scrollViewWillBeginDecelerating:(UIScrollView *)scrollView +{ + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWillBeginDecelerating:)]) { + [self.delegate listContainerViewWillBeginDecelerating:scrollView]; + } +} + +#pragma mark - JXCategoryViewListContainer + +- (UIScrollView *)contentScrollView { + return self.scrollView; +} + +- (void)setDefaultSelectedIndex:(NSInteger)index { + self.currentIndex = index; +} + +- (void)didClickSelectedItemAtIndex:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + self.willAppearIndex = -1; + self.willDisappearIndex = -1; + if (self.currentIndex != index) { + [self listWillDisappear:self.currentIndex]; + [self listDidDisappear:self.currentIndex]; + [self listWillAppear:index]; + [self listDidAppear:index]; + } +} + +- (void)reloadData { + for (id list in _validListDict.allValues) { + [[list listView] removeFromSuperview]; + if ([list isKindOfClass:[UIViewController class]]) { + [(UIViewController *)list removeFromParentViewController]; + } + } + [_validListDict removeAllObjects]; + + if (self.containerType == JXCategoryListContainerType_ScrollView) { + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + }else { + [self.collectionView reloadData]; + } + [self listWillAppear:self.currentIndex]; + [self listDidAppear:self.currentIndex]; +} + +#pragma mark - Private + +- (void)initListIfNeededAtIndex:(NSInteger)index { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerView:canInitListAtIndex:)]) { + BOOL canInitList = [self.delegate listContainerView:self canInitListAtIndex:index]; + if (!canInitList) { + return; + } + } + id list = _validListDict[@(index)]; + if (list != nil) { + //列表已经创建好了 + return; + } + list = [self.delegate listContainerView:self initListForIndex:index]; + if ([list isKindOfClass:[UIViewController class]]) { + [self.containerVC addChildViewController:(UIViewController *)list]; + } + _validListDict[@(index)] = list; + + if (self.containerType == JXCategoryListContainerType_ScrollView) { + [list listView].frame = CGRectMake(index*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + [self.scrollView addSubview:[list listView]]; + [RTLManager horizontalFlipViewIfNeeded:[list listView]]; + }else { + UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + [list listView].frame = cell.contentView.bounds; + [cell.contentView addSubview:[list listView]]; + } +} + +- (void)listWillAppear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list == nil) { + //当前列表未被创建(页面初始化或通过点击触发的listWillAppear) + BOOL canInitList = YES; + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerView:canInitListAtIndex:)]) { + canInitList = [self.delegate listContainerView:self canInitListAtIndex:index]; + } + if (!canInitList) { + return; + } + list = [self.delegate listContainerView:self initListForIndex:index]; + if ([list isKindOfClass:[UIViewController class]]) { + [self.containerVC addChildViewController:(UIViewController *)list]; + } + _validListDict[@(index)] = list; + if (self.containerType == JXCategoryListContainerType_ScrollView) { + if ([list listView].superview == nil) { + [list listView].frame = CGRectMake(index*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + [self.scrollView addSubview:[list listView]]; + [RTLManager horizontalFlipViewIfNeeded:[list listView]]; + } + }else { + UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + [list listView].frame = cell.contentView.bounds; + [cell.contentView addSubview:[list listView]]; + } + } + + if (list && [list respondsToSelector:@selector(listWillAppear)]) { + [list listWillAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:YES animated:NO]; + } +} + +- (void)listDidAppear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + self.currentIndex = index; + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidAppear)]) { + [list listDidAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC endAppearanceTransition]; + } +} + +- (void)listWillDisappear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listWillDisappear)]) { + [list listWillDisappear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:NO animated:NO]; + } +} + +- (void)listDidDisappear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidDisappear)]) { + [list listDidDisappear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC endAppearanceTransition]; + } +} + +- (BOOL)checkIndexValid:(NSInteger)index { + NSUInteger count = [self.delegate numberOfListsInlistContainerView:self]; + if (count <= 0 || index >= count) { + return NO; + } + return YES; +} + +- (void)listDidAppearOrDisappear:(UIScrollView *)scrollView { + CGFloat currentIndexPercent = scrollView.contentOffset.x/scrollView.bounds.size.width; + if (self.willAppearIndex != -1 || self.willDisappearIndex != -1) { + NSInteger disappearIndex = self.willDisappearIndex; + NSInteger appearIndex = self.willAppearIndex; + if (self.willAppearIndex > self.willDisappearIndex) { + //将要出现的列表在右边 + if (currentIndexPercent >= self.willAppearIndex) { + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + [self listDidDisappear:disappearIndex]; + [self listDidAppear:appearIndex]; + } + }else { + //将要出现的列表在左边 + if (currentIndexPercent <= self.willAppearIndex) { + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + [self listDidDisappear:disappearIndex]; + [self listDidAppear:appearIndex]; + } + } + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.h b/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.h new file mode 100644 index 0000000..2c7acae --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.h @@ -0,0 +1,24 @@ +// +// JXCategoryViewAnimator.h +// JXCategoryView +// +// Created by jiaxin on 2019/1/24. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import +#import + +@interface JXCategoryViewAnimator : NSObject + +@property (nonatomic, assign) NSTimeInterval duration; +@property (nonatomic, copy) void(^progressCallback)(CGFloat percent); +@property (nonatomic, copy) void(^completeCallback)(void); +@property (readonly, getter=isExecuting) BOOL executing; + +- (void)start; +- (void)stop; +- (void)invalid; + +@end + diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.m b/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.m new file mode 100644 index 0000000..fc26144 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryViewAnimator.m @@ -0,0 +1,75 @@ +// +// JXCategoryViewAnimator.m +// JXCategoryView +// +// Created by jiaxin on 2019/1/24. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryViewAnimator.h" + +@interface JXCategoryViewAnimator () +@property (nonatomic, strong) CADisplayLink *displayLink; +@property (nonatomic, assign) CFTimeInterval firstTimestamp; +@property (readwrite, getter=isExecuting) BOOL executing; +@end + +@implementation JXCategoryViewAnimator + +#pragma mark - Initialize + +- (void)dealloc { + self.progressCallback = nil; + self.completeCallback = nil; +} + +- (instancetype)init { + self = [super init]; + if (self) { + _executing = NO; + _duration = 0.25; + _displayLink = [CADisplayLink displayLinkWithTarget:self selector:@selector(processDisplayLink:)]; + } + return self; +} + +#pragma mark - Public + +- (void)start { + [self.displayLink addToRunLoop:[NSRunLoop mainRunLoop] forMode:NSRunLoopCommonModes]; + self.executing = YES; +} + +- (void)stop { + !self.progressCallback ?: self.progressCallback(1); + [self.displayLink invalidate]; + !self.completeCallback ?: self.completeCallback(); + self.executing = NO; +} + +- (void)invalid { + [self.displayLink invalidate]; + !self.completeCallback ?: self.completeCallback(); + self.executing = NO; +} + +#pragma mark - Actions + +- (void)processDisplayLink:(CADisplayLink *)sender { + if (self.firstTimestamp == 0) { + self.firstTimestamp = sender.timestamp; + return; + } + CGFloat percent = (sender.timestamp - self.firstTimestamp)/self.duration; + if (percent >= 1) { + !self.progressCallback ?: self.progressCallback(percent); + [self.displayLink invalidate]; + !self.completeCallback ?: self.completeCallback(); + self.executing = NO; + }else { + !self.progressCallback ?: self.progressCallback(percent); + self.executing = YES; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Common/JXCategoryViewDefines.h b/Pods/JXCategoryView/Sources/Common/JXCategoryViewDefines.h new file mode 100644 index 0000000..ec3a60c --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/JXCategoryViewDefines.h @@ -0,0 +1,43 @@ +// +// JXCategoryViewDefines.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import + +static const CGFloat JXCategoryViewAutomaticDimension = -1; + +typedef void(^JXCategoryCellSelectedAnimationBlock)(CGFloat percent); + +// 指示器的位置 +typedef NS_ENUM(NSUInteger, JXCategoryComponentPosition) { + JXCategoryComponentPosition_Bottom, + JXCategoryComponentPosition_Top +}; + +// cell 被选中的类型 +typedef NS_ENUM(NSUInteger, JXCategoryCellSelectedType) { + JXCategoryCellSelectedTypeUnknown, // 未知,不是选中(cellForRow方法里面、两个cell过渡时) + JXCategoryCellSelectedTypeClick, // 点击选中 + JXCategoryCellSelectedTypeCode, // 调用方法 selectItemAtIndex: 选中 + JXCategoryCellSelectedTypeScroll // 通过滚动到某个 cell 选中 +}; + +// cell 标题锚点位置 +typedef NS_ENUM(NSUInteger, JXCategoryTitleLabelAnchorPointStyle) { + JXCategoryTitleLabelAnchorPointStyleCenter, + JXCategoryTitleLabelAnchorPointStyleTop, + JXCategoryTitleLabelAnchorPointStyleBottom +}; + +// 指示器滚动样式 +typedef NS_ENUM(NSUInteger, JXCategoryIndicatorScrollStyle) { + JXCategoryIndicatorScrollStyleSimple, // 简单滚动,即从当前位置过渡到目标位置 + JXCategoryIndicatorScrollStyleSameAsUserScroll // 和用户左右滚动列表时的效果一样 +}; + +#define JXCategoryViewDeprecated(instead) NS_DEPRECATED(2_0, 2_0, 2_0, 2_0, instead) diff --git a/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.h b/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.h new file mode 100644 index 0000000..06e1c14 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.h @@ -0,0 +1,18 @@ +// +// UIColor+JXAdd.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import + +@interface UIColor (JXAdd) + +@property (nonatomic, assign, readonly) CGFloat jx_red; +@property (nonatomic, assign, readonly) CGFloat jx_green; +@property (nonatomic, assign, readonly) CGFloat jx_blue; +@property (nonatomic, assign, readonly) CGFloat jx_alpha; + +@end diff --git a/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.m b/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.m new file mode 100644 index 0000000..f76c11b --- /dev/null +++ b/Pods/JXCategoryView/Sources/Common/UIColor+JXAdd.m @@ -0,0 +1,35 @@ +// +// UIColor+JXAdd.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "UIColor+JXAdd.h" + +@implementation UIColor (JXAdd) + +- (CGFloat)jx_red { + CGFloat r = 0, g, b, a; + [self getRed:&r green:&g blue:&b alpha:&a]; + return r; +} + +- (CGFloat)jx_green { + CGFloat r, g = 0, b, a; + [self getRed:&r green:&g blue:&b alpha:&a]; + return g; +} + +- (CGFloat)jx_blue { + CGFloat r, g, b = 0, a; + [self getRed:&r green:&g blue:&b alpha:&a]; + return b; +} + +- (CGFloat)jx_alpha { + return CGColorGetAlpha(self.CGColor); +} + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.h b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.h new file mode 100644 index 0000000..14d3019 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.h @@ -0,0 +1,13 @@ +// +// JXCategoryDotCell.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCell.h" + +@interface JXCategoryDotCell : JXCategoryTitleCell + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.m b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.m new file mode 100644 index 0000000..2022acd --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCell.m @@ -0,0 +1,64 @@ +// +// JXCategoryDotCell.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryDotCell.h" +#import "JXCategoryDotCellModel.h" + +@interface JXCategoryDotCell () +@property (nonatomic, strong) UIView *dot; +@end + +@implementation JXCategoryDotCell + +- (void)initializeViews { + [super initializeViews]; + + _dot = [[UIView alloc] init]; + [self.contentView addSubview:self.dot]; + self.dot.translatesAutoresizingMaskIntoConstraints = NO; +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryDotCellModel *myCellModel = (JXCategoryDotCellModel *)cellModel; + self.dot.hidden = !myCellModel.dotHidden; + self.dot.backgroundColor = myCellModel.dotColor; + self.dot.layer.cornerRadius = myCellModel.dotCornerRadius; + [NSLayoutConstraint deactivateConstraints:self.dot.constraints]; + [self.dot.widthAnchor constraintEqualToConstant:myCellModel.dotSize.width].active = YES; + [self.dot.heightAnchor constraintEqualToConstant:myCellModel.dotSize.height].active = YES; + switch (myCellModel.relativePosition) { + case JXCategoryDotRelativePosition_TopLeft: + { + [self.dot.centerXAnchor constraintEqualToAnchor:self.titleLabel.leadingAnchor constant:myCellModel.dotOffset.x].active = YES; + [self.dot.centerYAnchor constraintEqualToAnchor:self.titleLabel.topAnchor constant:myCellModel.dotOffset.y].active = YES; + } + break; + case JXCategoryDotRelativePosition_TopRight: + { + [self.dot.centerXAnchor constraintEqualToAnchor:self.titleLabel.trailingAnchor constant:myCellModel.dotOffset.x].active = YES; + [self.dot.centerYAnchor constraintEqualToAnchor:self.titleLabel.topAnchor constant:myCellModel.dotOffset.y].active = YES; + } + break; + case JXCategoryDotRelativePosition_BottomLeft: + { + [self.dot.centerXAnchor constraintEqualToAnchor:self.titleLabel.leadingAnchor constant:myCellModel.dotOffset.x].active = YES; + [self.dot.centerYAnchor constraintEqualToAnchor:self.titleLabel.bottomAnchor constant:myCellModel.dotOffset.y].active = YES; + } + break; + case JXCategoryDotRelativePosition_BottomRight: + { + [self.dot.centerXAnchor constraintEqualToAnchor:self.titleLabel.trailingAnchor constant:myCellModel.dotOffset.x].active = YES; + [self.dot.centerYAnchor constraintEqualToAnchor:self.titleLabel.bottomAnchor constant:myCellModel.dotOffset.y].active = YES; + } + break; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.h b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.h new file mode 100644 index 0000000..b0531a9 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.h @@ -0,0 +1,27 @@ +// +// JXCategoryDotCellModel.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCellModel.h" + +typedef NS_ENUM(NSUInteger, JXCategoryDotRelativePosition) { + JXCategoryDotRelativePosition_TopLeft = 0, + JXCategoryDotRelativePosition_TopRight, + JXCategoryDotRelativePosition_BottomLeft, + JXCategoryDotRelativePosition_BottomRight, +}; + +@interface JXCategoryDotCellModel : JXCategoryTitleCellModel + +@property (nonatomic, assign) BOOL dotHidden; +@property (nonatomic, assign) JXCategoryDotRelativePosition relativePosition; +@property (nonatomic, assign) CGSize dotSize; +@property (nonatomic, assign) CGFloat dotCornerRadius; +@property (nonatomic, strong) UIColor *dotColor; +@property (nonatomic, assign) CGPoint dotOffset; + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.m b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.m new file mode 100644 index 0000000..054cbfc --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryDotCellModel.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryDotCellModel.h" + +@implementation JXCategoryDotCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.h b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.h new file mode 100644 index 0000000..1cc9ad9 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.h @@ -0,0 +1,30 @@ +// +// JXCategoryDotView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleView.h" +#import "JXCategoryDotCell.h" +#import "JXCategoryDotCellModel.h" + +@interface JXCategoryDotView : JXCategoryTitleView + +//相对于titleLabel的位置,默认:JXCategoryDotRelativePosition_TopRight +@property (nonatomic, assign) JXCategoryDotRelativePosition relativePosition; +//@[@(布尔值)]数组,控制红点是否显示 +@property (nonatomic, strong) NSArray *dotStates; +//红点的尺寸。默认:CGSizeMake(10, 10) +@property (nonatomic, assign) CGSize dotSize; +//红点的圆角值。默认:JXCategoryViewAutomaticDimension(self.dotSize.height/2) +@property (nonatomic, assign) CGFloat dotCornerRadius; +//红点的颜色。默认:[UIColor redColor] +@property (nonatomic, strong) UIColor *dotColor; +/** + 红点 x,y方向的偏移 (+值:水平方向向右,竖直方向向下) + */ +@property (nonatomic, assign) CGPoint dotOffset; + +@end diff --git a/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.m b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.m new file mode 100644 index 0000000..847aadb --- /dev/null +++ b/Pods/JXCategoryView/Sources/Dot/JXCategoryDotView.m @@ -0,0 +1,52 @@ +// +// JXCategoryDotView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryDotView.h" + +@implementation JXCategoryDotView + +- (void)initializeData { + [super initializeData]; + + _relativePosition = JXCategoryDotRelativePosition_TopRight; + _dotSize = CGSizeMake(10, 10); + _dotCornerRadius = JXCategoryViewAutomaticDimension; + _dotColor = [UIColor redColor]; + _dotOffset = CGPointZero; +} + +- (Class)preferredCellClass { + return [JXCategoryDotCell class]; +} + +- (void)refreshDataSource { + NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:self.titles.count]; + for (int i = 0; i < self.titles.count; i++) { + JXCategoryDotCellModel *cellModel = [[JXCategoryDotCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = [NSArray arrayWithArray:tempArray]; +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryDotCellModel *myCellModel = (JXCategoryDotCellModel *)cellModel; + myCellModel.dotHidden = [self.dotStates[index] boolValue]; + myCellModel.relativePosition = self.relativePosition; + myCellModel.dotSize = self.dotSize; + myCellModel.dotColor = self.dotColor; + myCellModel.dotOffset = self.dotOffset; + if (self.dotCornerRadius == JXCategoryViewAutomaticDimension) { + myCellModel.dotCornerRadius = self.dotSize.height/2; + }else { + myCellModel.dotCornerRadius = self.dotCornerRadius; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.h b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.h new file mode 100644 index 0000000..f0dc162 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.h @@ -0,0 +1,15 @@ +// +// JXCategoryImageCell.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorCell.h" + +@interface JXCategoryImageCell : JXCategoryIndicatorCell + +@property (nonatomic, strong) UIImageView *imageView; + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.m b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.m new file mode 100644 index 0000000..7384759 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCell.m @@ -0,0 +1,97 @@ +// +// JXCategoryImageCell.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryImageCell.h" +#import "JXCategoryImageCellModel.h" + +@interface JXCategoryImageCell() +@property (nonatomic, strong) id currentImageInfo; +@property (nonatomic, strong) NSString *currentImageName; +@property (nonatomic, strong) NSURL *currentImageURL; +@end + +@implementation JXCategoryImageCell + +- (void)prepareForReuse { + [super prepareForReuse]; + + self.currentImageInfo = nil; + self.currentImageName = nil; + self.currentImageURL = nil; +} + +- (void)initializeViews { + [super initializeViews]; + + _imageView = [[UIImageView alloc] init]; + _imageView.contentMode = UIViewContentModeScaleAspectFit; + [self.contentView addSubview:_imageView]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + JXCategoryImageCellModel *myCellModel = (JXCategoryImageCellModel *)self.cellModel; + self.imageView.bounds = CGRectMake(0, 0, myCellModel.imageSize.width, myCellModel.imageSize.height); + self.imageView.center = self.contentView.center; + if (myCellModel.imageCornerRadius && (myCellModel.imageCornerRadius != 0)) { + self.imageView.layer.cornerRadius = myCellModel.imageCornerRadius; + self.imageView.layer.masksToBounds = YES; + } +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryImageCellModel *myCellModel = (JXCategoryImageCellModel *)cellModel; + //因为`- (void)reloadData:(JXCategoryBaseCellModel *)cellModel`方法会回调多次,尤其是左右滚动的时候会调用无数次,如果每次都触发图片加载,会非常消耗性能。所以只会在图片发生了变化的时候,才进行图片加载。 + if (myCellModel.loadImageBlock != nil) { + id currentImageInfo = myCellModel.imageInfo; + if (myCellModel.isSelected) { + currentImageInfo = myCellModel.selectedImageInfo; + } + if (currentImageInfo && ![currentImageInfo isEqual:self.currentImageInfo]) { + self.currentImageInfo = currentImageInfo; + if (myCellModel.loadImageBlock) { + myCellModel.loadImageBlock(self.imageView, currentImageInfo); + } + } + } else { + NSString *currentImageName; + NSURL *currentImageURL; + if (myCellModel.imageName) { + currentImageName = myCellModel.imageName; + } else if (myCellModel.imageURL) { + currentImageURL = myCellModel.imageURL; + } + if (myCellModel.isSelected) { + if (myCellModel.selectedImageName) { + currentImageName = myCellModel.selectedImageName; + } else if (myCellModel.selectedImageURL) { + currentImageURL = myCellModel.selectedImageURL; + } + } + if (currentImageName && ![currentImageName isEqualToString:self.currentImageName]) { + self.currentImageName = currentImageName; + self.imageView.image = [UIImage imageNamed:currentImageName]; + } else if (currentImageURL && ![currentImageURL.absoluteString isEqualToString:self.currentImageURL.absoluteString]) { + self.currentImageURL = currentImageURL; + if (myCellModel.loadImageCallback) { + myCellModel.loadImageCallback(self.imageView, currentImageURL); + } + } + } + + if (myCellModel.isImageZoomEnabled) { + self.imageView.transform = CGAffineTransformMakeScale(myCellModel.imageZoomScale, myCellModel.imageZoomScale); + }else { + self.imageView.transform = CGAffineTransformIdentity; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.h b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.h new file mode 100644 index 0000000..0d79fdf --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.h @@ -0,0 +1,32 @@ +// +// JXCategoryImageCellModel.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorCellModel.h" + +@interface JXCategoryImageCellModel : JXCategoryIndicatorCellModel + +@property (nonatomic, strong) id imageInfo; +@property (nonatomic, strong) id selectedImageInfo; +@property (nonatomic, copy) void(^loadImageBlock)(UIImageView *imageView, id info); + +@property (nonatomic, assign) CGSize imageSize; + +@property (nonatomic, assign) CGFloat imageCornerRadius; + +@property (nonatomic, assign, getter=isImageZoomEnabled) BOOL imageZoomEnabled; + +@property (nonatomic, assign) CGFloat imageZoomScale; + +/// 以下属性将会被弃用 +@property (nonatomic, copy) NSString *imageName; //加载bundle内的图片 +@property (nonatomic, strong) NSURL *imageURL; //图片URL +@property (nonatomic, copy) NSString *selectedImageName; +@property (nonatomic, strong) NSURL *selectedImageURL; +@property (nonatomic, copy) void(^loadImageCallback)(UIImageView *imageView, NSURL *imageURL); + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.m b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.m new file mode 100644 index 0000000..a7dbec7 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryImageCellModel.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryImageCellModel.h" + +@implementation JXCategoryImageCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.h b/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.h new file mode 100644 index 0000000..a4324d6 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.h @@ -0,0 +1,32 @@ +// +// JXCategoryImageView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorView.h" +#import "JXCategoryImageCell.h" +#import "JXCategoryImageCellModel.h" + +@interface JXCategoryImageView : JXCategoryIndicatorView + +//imageInfo数组可以传入imageName字符串或者image的URL地址等,然后会通过loadImageBlock透传回来,把imageView对于图片的加载过程完全交给使用者决定。 +@property (nonatomic, strong) NSArray *imageInfoArray; +@property (nonatomic, strong) NSArray *selectedImageInfoArray; +@property (nonatomic, copy) void(^loadImageBlock)(UIImageView *imageView, id info); + +@property (nonatomic, assign) CGSize imageSize; //默认值为 CGSizeMake(20, 20) +@property (nonatomic, assign) CGFloat imageCornerRadius; //图片圆角 +@property (nonatomic, assign, getter=isImageZoomEnabled) BOOL imageZoomEnabled; //默认值为 NO +@property (nonatomic, assign) CGFloat imageZoomScale; //默认值为 1.2,imageZoomEnabled 为 YES 时才生效 + +//下面的属性将会被弃用,请使用`imageInfoArray`、`selectedImageInfoArray`、`loadImageBlock`属性完成需求。 +@property (nonatomic, strong) NSArray *imageNames; +@property (nonatomic, strong) NSArray *imageURLs; +@property (nonatomic, strong) NSArray *selectedImageNames; +@property (nonatomic, strong) NSArray *selectedImageURLs; +@property (nonatomic, copy) void(^loadImageCallback)(UIImageView *imageView, NSURL *imageURL); //使用imageURL从远端下载图片进行加载,建议使用SDWebImage等第三方库进行下载。 + +@end diff --git a/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.m b/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.m new file mode 100644 index 0000000..9c39b02 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Image/JXCategoryImageView.m @@ -0,0 +1,104 @@ +// +// JXCategoryImageView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/20. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryImageView.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryImageView + +- (void)dealloc { + self.loadImageBlock = nil; + self.loadImageCallback = nil; +} + +- (void)initializeData { + [super initializeData]; + + _imageSize = CGSizeMake(20, 20); + _imageZoomEnabled = NO; + _imageZoomScale = 1.2; + _imageCornerRadius = 0; +} + +- (Class)preferredCellClass { + return [JXCategoryImageCell class]; +} + +- (void)refreshDataSource { + NSUInteger count = 0; + if (self.imageInfoArray.count > 0) { + count = self.imageInfoArray.count; + }else if (self.imageNames.count > 0) { + count = self.imageNames.count; + }else { + count = self.imageURLs.count; + } + NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:count]; + for (int i = 0; i < count; i++) { + JXCategoryImageCellModel *cellModel = [[JXCategoryImageCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = [NSArray arrayWithArray:tempArray]; +} + +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel { + [super refreshSelectedCellModel:selectedCellModel unselectedCellModel:unselectedCellModel]; + + JXCategoryImageCellModel *myUnselectedCellModel = (JXCategoryImageCellModel *)unselectedCellModel; + myUnselectedCellModel.imageZoomScale = 1.0; + + JXCategoryImageCellModel *myselectedCellModel = (JXCategoryImageCellModel *)selectedCellModel; + myselectedCellModel.imageZoomScale = self.imageZoomScale; +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryImageCellModel *myCellModel = (JXCategoryImageCellModel *)cellModel; + myCellModel.loadImageBlock = self.loadImageBlock; + myCellModel.loadImageCallback = self.loadImageCallback; + myCellModel.imageSize = self.imageSize; + myCellModel.imageCornerRadius = self.imageCornerRadius; + if (self.imageInfoArray && self.imageInfoArray.count != 0) { + myCellModel.imageInfo = self.imageInfoArray[index]; + }else if (self.imageNames && self.imageNames.count != 0) { + myCellModel.imageName = self.imageNames[index]; + }else if (self.imageURLs && self.imageURLs.count != 0) { + myCellModel.imageURL = self.imageURLs[index]; + } + if (self.selectedImageInfoArray && self.selectedImageInfoArray.count != 0) { + myCellModel.selectedImageInfo = self.selectedImageInfoArray[index]; + }else if (self.selectedImageNames && self.selectedImageNames.count != 0) { + myCellModel.selectedImageName = self.selectedImageNames[index]; + }else if (self.selectedImageURLs && self.selectedImageURLs.count != 0) { + myCellModel.selectedImageURL = self.selectedImageURLs[index]; + } + myCellModel.imageZoomEnabled = self.imageZoomEnabled; + myCellModel.imageZoomScale = ((index == self.selectedIndex) ? self.imageZoomScale : 1.0); +} + +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio { + [super refreshLeftCellModel:leftCellModel rightCellModel:rightCellModel ratio:ratio]; + + JXCategoryImageCellModel *leftModel = (JXCategoryImageCellModel *)leftCellModel; + JXCategoryImageCellModel *rightModel = (JXCategoryImageCellModel *)rightCellModel; + + if (self.isImageZoomEnabled) { + leftModel.imageZoomScale = [JXCategoryFactory interpolationFrom:self.imageZoomScale to:1.0 percent:ratio]; + rightModel.imageZoomScale = [JXCategoryFactory interpolationFrom:1.0 to:self.imageZoomScale percent:ratio]; + } +} + +- (CGFloat)preferredCellWidthAtIndex:(NSInteger)index { + if (self.cellWidth == JXCategoryViewAutomaticDimension) { + return self.imageSize.width; + } + return self.cellWidth; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h new file mode 100644 index 0000000..e423efb --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h @@ -0,0 +1,14 @@ +// +// JXCategoryIndicatorBackgroundView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +/// BackgroundView 样式的指示器 +@interface JXCategoryIndicatorBackgroundView : JXCategoryIndicatorComponentView + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m new file mode 100644 index 0000000..4f4942f --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m @@ -0,0 +1,101 @@ +// +// JXCategoryIndicatorBackgroundView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorBackgroundView.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryIndicatorBackgroundView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (void)configureDefaulteValue { + self.indicatorWidth = JXCategoryViewAutomaticDimension; + self.indicatorHeight = JXCategoryViewAutomaticDimension; + self.indicatorCornerRadius = JXCategoryViewAutomaticDimension; + self.indicatorColor = [UIColor lightGrayColor]; + self.indicatorWidthIncrement = 10; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + self.layer.cornerRadius = [self indicatorCornerRadiusValue:model.selectedCellFrame]; + self.backgroundColor = self.indicatorColor; + + CGFloat width = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat height = [self indicatorHeightValue:model.selectedCellFrame]; + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - width)/2; + CGFloat y = (model.selectedCellFrame.size.height - height)/2 - self.verticalMargin; + self.frame = CGRectMake(x, y, width, height); +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetX = 0; + CGFloat targetWidth = [self indicatorWidthValue:leftCellFrame]; + + if (percent == 0) { + targetX = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidth)/2.0; + }else { + CGFloat leftWidth = targetWidth; + CGFloat rightWidth = [self indicatorWidthValue:rightCellFrame]; + + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - leftWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - rightWidth)/2; + + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:percent]; + + if (self.indicatorWidth == JXCategoryViewAutomaticDimension) { + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:rightWidth percent:percent]; + } + } + + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect toFrame = self.frame; + toFrame.origin.x = targetX; + toFrame.size.width = targetWidth; + self.frame = toFrame; + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGFloat width = [self indicatorWidthValue:model.selectedCellFrame]; + CGRect toFrame = self.frame; + toFrame.origin.x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - width)/2; + toFrame.size.width = width; + + if (self.isScrollEnabled) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ + self.frame = toFrame; + } completion:^(BOOL finished) { + }]; + }else { + self.frame = toFrame; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h new file mode 100644 index 0000000..777d8a3 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h @@ -0,0 +1,17 @@ +// +// JXCategoryIndicatorBallView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +/// QQ 小红点样式的指示器 +@interface JXCategoryIndicatorBallView : JXCategoryIndicatorComponentView + +// 球沿的 X 轴方向上的偏移量。默认值为 20 +@property (nonatomic, assign) CGFloat ballScrollOffsetX; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m new file mode 100644 index 0000000..afaeff0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m @@ -0,0 +1,199 @@ +// +// JXCategoryIndicatorBallView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/21. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorBallView.h" +#import "JXCategoryFactory.h" + +@interface JXCategoryIndicatorBallView () +@property (nonatomic, strong) UIView *smallBall; +@property (nonatomic, strong) UIView *bigBall; +@property (nonatomic, strong) CAShapeLayer *shapeLayer; +@end + +@implementation JXCategoryIndicatorBallView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureIndicatorBall]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureIndicatorBall]; + } + return self; +} + +- (void)configureIndicatorBall { + self.indicatorWidth = 15; + self.indicatorHeight = 15; + _ballScrollOffsetX = 20; + + _smallBall = [[UIView alloc] init]; + [self addSubview:self.smallBall]; + + _bigBall = [[UIView alloc] init]; + [self addSubview:self.bigBall]; + + _shapeLayer = [CAShapeLayer layer]; + [self.layer addSublayer:self.shapeLayer]; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + CGFloat ballWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat ballHeight = [self indicatorHeightValue:model.selectedCellFrame]; + + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + self.shapeLayer.fillColor = self.indicatorColor.CGColor; + [CATransaction commit]; + + self.smallBall.backgroundColor = self.indicatorColor; + self.smallBall.layer.cornerRadius = ballHeight/2; + self.bigBall.backgroundColor = self.indicatorColor; + self.bigBall.layer.cornerRadius = ballHeight/2; + + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - ballWidth)/2; + CGFloat y = self.superview.bounds.size.height - ballHeight - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + self.smallBall.frame = CGRectMake(x, y, ballWidth, ballHeight); + self.bigBall.frame = CGRectMake(x, y, ballWidth, ballHeight); +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + CGFloat ballWidth = [self indicatorWidthValue:model.leftCellFrame]; + CGFloat ballHeight = [self indicatorHeightValue:model.leftCellFrame]; + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetXOfBigBall = 0; + CGFloat targetXOfSmallBall = leftCellFrame.origin.x + (leftCellFrame.size.width - ballWidth)/2; + CGFloat targetWidthOfSmallBall = ballWidth; + + if (percent == 0) { + targetXOfBigBall = leftCellFrame.origin.x + (leftCellFrame.size.width - ballWidth)/2.0; + targetXOfSmallBall = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidthOfSmallBall)/2.0; + }else { + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - ballWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - ballWidth)/2; + + //前50%,移动bigBall的x,缩小smallBall;后50%,移动bigBall的x,缩小smallBall,移动smallBall的x + if (percent <= 0.5) { + targetXOfBigBall = [JXCategoryFactory interpolationFrom:leftX to:(rightX - self.ballScrollOffsetX) percent:percent*2]; + targetWidthOfSmallBall = [JXCategoryFactory interpolationFrom:ballWidth to:ballWidth/2 percent:percent*2]; + }else { + targetXOfBigBall = [JXCategoryFactory interpolationFrom:(rightX - self.ballScrollOffsetX) to:rightX percent:(percent - 0.5)*2]; + targetWidthOfSmallBall = [JXCategoryFactory interpolationFrom:ballWidth/2 to:0 percent:(percent - 0.5)*2]; + targetXOfSmallBall = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:(percent - 0.5)*2]; + } + } + + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect bigBallFrame = self.bigBall.frame; + bigBallFrame.origin.x = targetXOfBigBall; + self.bigBall.frame = bigBallFrame; + self.bigBall.layer.cornerRadius = bigBallFrame.size.height/2; + + CGFloat targetYOfSmallBall = self.superview.bounds.size.height - ballHeight/2 - targetWidthOfSmallBall/2 - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + targetYOfSmallBall = ballHeight/2 - targetWidthOfSmallBall/2 + self.verticalMargin; + } + self.smallBall.frame = CGRectMake(targetXOfSmallBall, targetYOfSmallBall, targetWidthOfSmallBall, targetWidthOfSmallBall); + self.smallBall.layer.cornerRadius = targetWidthOfSmallBall/2; + + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + self.shapeLayer.path = [self getBezierPathWithSmallCir:self.smallBall andBigCir:self.bigBall].CGPath; + [CATransaction commit]; + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGFloat ballWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat ballHeight = [self indicatorHeightValue:model.selectedCellFrame]; + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - ballWidth)/2; + CGFloat y = self.superview.bounds.size.height - ballHeight - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + CGRect toFrame = CGRectMake(x, y, ballWidth, ballHeight); + + if (self.isScrollEnabled) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ + self.smallBall.frame = toFrame; + self.bigBall.frame = toFrame; + self.smallBall.layer.cornerRadius = ballHeight/2; + self.bigBall.layer.cornerRadius = ballHeight/2; + } completion:^(BOOL finished) { + + }]; + }else { + self.smallBall.frame = toFrame; + self.bigBall.frame = toFrame; + self.smallBall.layer.cornerRadius = ballHeight/2; + self.bigBall.layer.cornerRadius = ballHeight/2; + } +} + +- (UIBezierPath *)getBezierPathWithSmallCir:(UIView *)smallCir andBigCir:(UIView *)bigCir{ + // 获取最小的圆 + if (bigCir.frame.size.width < smallCir.frame.size.width) { + UIView *view = bigCir; + bigCir = smallCir; + smallCir = view; + } + // 获取小圆的信息 + CGFloat d = self.bigBall.center.x - self.smallBall.center.x; + if (d == 0) { + return nil; + } + CGFloat x1 = smallCir.center.x; + CGFloat y1 = smallCir.center.y; + CGFloat r1 = smallCir.bounds.size.width/2; + + // 获取大圆的信息 + CGFloat x2 = bigCir.center.x; + CGFloat y2 = bigCir.center.y; + CGFloat r2 = bigCir.bounds.size.width/2; + + // 获取三角函数 + CGFloat sinA = (y2 - y1)/d; + CGFloat cosA = (x2 - x1)/d; + + // 获取矩形四个点 + CGPoint pointA = CGPointMake(x1 - sinA*r1, y1 + cosA * r1); + CGPoint pointB = CGPointMake(x1 + sinA*r1, y1 - cosA * r1); + CGPoint pointC = CGPointMake(x2 + sinA*r2, y2 - cosA * r2); + CGPoint pointD = CGPointMake(x2 - sinA*r2, y2 + cosA * r2); + + // 获取控制点,以便画出曲线 + CGPoint pointO = CGPointMake(pointA.x + d / 2 * cosA , pointA.y + d / 2 * sinA); + CGPoint pointP = CGPointMake(pointB.x + d / 2 * cosA , pointB.y + d / 2 * sinA); + + // 创建路径 + UIBezierPath *path =[UIBezierPath bezierPath]; + [path moveToPoint:pointA]; + [path addLineToPoint:pointB]; + [path addQuadCurveToPoint:pointC controlPoint:pointP]; + [path addLineToPoint:pointD]; + [path addQuadCurveToPoint:pointA controlPoint:pointO]; + return path; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h new file mode 100644 index 0000000..6b2906e --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h @@ -0,0 +1,113 @@ +// +// JXCategoryComponentBaseView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXCategoryIndicatorProtocol.h" +#import "JXCategoryViewDefines.h" + +@interface JXCategoryIndicatorComponentView : UIView + +/** + 指示器的位置 + + 可设置的枚举类型: + - 底部:JXCategoryComponentPosition_Bottom + - 顶部:JXCategoryComponentPosition_Top + */ +@property (nonatomic, assign) JXCategoryComponentPosition componentPosition; + +/** + 指示器的宽度 + + 默认值为 JXCategoryViewAutomaticDimension(表示与 cell 的宽度相等)。 + 内部通过 `- (CGFloat)indicatorWidthValue:(CGRect)cellFrame` 方法获取实际的值。 + */ +@property (nonatomic, assign) CGFloat indicatorWidth; + +/** + 指示器的宽度增量 + + 例如:需求是指示器宽度比 cell 宽度多 10pt。就可以将该属性赋值为 10。 + 最终指示器的宽度 = indicatorWidth + indicatorWidthIncrement。 + */ +@property (nonatomic, assign) CGFloat indicatorWidthIncrement; + +/** + 指示器的高度 + + 默认值为 3。 + 内部通过 `- (CGFloat)indicatorHeightValue:(CGRect)cellFrame` 方法获取实际的值。 + */ +@property (nonatomic, assign) CGFloat indicatorHeight; + +/** + 指示器的 CornerRadius 圆角半径 + + 默认值为 JXCategoryViewAutomaticDimension (等于 indicatorHeight/2)。 + 内部通过 `- (CGFloat)indicatorCornerRadiusValue:(CGRect)cellFrame` 方法获取实际的值。 + */ +@property (nonatomic, assign) CGFloat indicatorCornerRadius; + +/** + 指示器的颜色 + */ +@property (nonatomic, strong) UIColor *indicatorColor; + +/** + 指示器在垂直方向上的偏移量 + + 数值越大越靠近中心。默认值为 0。 + */ +@property (nonatomic, assign) CGFloat verticalMargin; + +/** + 是否允许手势滚动 + + 点击切换的时候,是否允许滚动,默认值为 YES。 + */ +@property (nonatomic, assign, getter=isScrollEnabled) BOOL scrollEnabled; + +/** + 指示器滚动样式 + + 点击切换的时候,如果允许滚动,分为简单滚动和复杂滚动。 + 默认值为 JXCategoryIndicatorScrollStyleSimple + 目前仅JXCategoryIndicatorLineView、JXCategoryIndicatorDotLineView支持,其他子类暂不支持。 + */ +@property (nonatomic, assign) JXCategoryIndicatorScrollStyle scrollStyle; + +/** + 滚动动画的时间,默认值为 0.25s + */ +@property (nonatomic, assign) NSTimeInterval scrollAnimationDuration; + +/** + 传入 cellFrame 获取指示器的最终宽度 + + @param cellFrame cellFrame + @return 指示器的最终宽度 + */ +- (CGFloat)indicatorWidthValue:(CGRect)cellFrame; + +/** + 传入 cellFrame 获取指示器的最终高度 + + @param cellFrame cellFrame + @return 指示器的最终高度 + */ +- (CGFloat)indicatorHeightValue:(CGRect)cellFrame; + +/** + 传入 cellFrame 获取指示器的最终圆角 + + @param cellFrame cellFrame + @return 指示器的最终圆角 + */ +- (CGFloat)indicatorCornerRadiusValue:(CGRect)cellFrame; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m new file mode 100644 index 0000000..f9111d3 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m @@ -0,0 +1,81 @@ +// +// JXCategoryComponentBaseView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +@implementation JXCategoryIndicatorComponentView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureDefaultValue]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureDefaultValue]; + } + return self; +} + +- (void)configureDefaultValue { + _componentPosition = JXCategoryComponentPosition_Bottom; + _scrollEnabled = YES; + _verticalMargin = 0; + _scrollAnimationDuration = 0.25; + _indicatorWidth = JXCategoryViewAutomaticDimension; + _indicatorWidthIncrement = 0; + _indicatorHeight = 3; + _indicatorCornerRadius = JXCategoryViewAutomaticDimension; + _indicatorColor = [UIColor redColor]; + _scrollStyle = JXCategoryIndicatorScrollStyleSimple; +} + +#pragma mark - Public + +- (CGFloat)indicatorWidthValue:(CGRect)cellFrame { + if (self.indicatorWidth == JXCategoryViewAutomaticDimension) { + return cellFrame.size.width + self.indicatorWidthIncrement; + } + return self.indicatorWidth + self.indicatorWidthIncrement; +} + +- (CGFloat)indicatorHeightValue:(CGRect)cellFrame { + if (self.indicatorHeight == JXCategoryViewAutomaticDimension) { + return cellFrame.size.height; + } + return self.indicatorHeight; +} + +- (CGFloat)indicatorCornerRadiusValue:(CGRect)cellFrame { + if (self.indicatorCornerRadius == JXCategoryViewAutomaticDimension) { + return [self indicatorHeightValue:cellFrame]/2; + } + return self.indicatorCornerRadius; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h new file mode 100644 index 0000000..e58bbdb --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h @@ -0,0 +1,17 @@ +// +// JXCategoryIndicatorDotLineView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/22. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +/// 点线效果的指示器 +@interface JXCategoryIndicatorDotLineView : JXCategoryIndicatorComponentView + +// 线状态的最大宽度,默认值为 50 +@property (nonatomic, assign) CGFloat lineWidth; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m new file mode 100644 index 0000000..3a680e4 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m @@ -0,0 +1,148 @@ +// +// JXCategoryIndicatorDotLineView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/22. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorDotLineView.h" +#import "JXCategoryFactory.h" +#import "JXCategoryViewAnimator.h" + +@interface JXCategoryIndicatorDotLineView () +@property (nonatomic, strong) JXCategoryViewAnimator *animator; +@end + +@implementation JXCategoryIndicatorDotLineView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (void)configureDefaulteValue { + self.indicatorWidth = 10; + self.indicatorHeight = 10; + _lineWidth = 50; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + CGFloat dotWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat dotHeight = [self indicatorHeightValue:model.selectedCellFrame]; + self.backgroundColor = self.indicatorColor; + self.layer.cornerRadius = [self indicatorHeightValue:model.selectedCellFrame]/2; + + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - dotWidth)/2; + CGFloat y = self.superview.bounds.size.height - dotHeight - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + self.frame = CGRectMake(x, y, dotWidth, dotHeight); +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + if (self.animator.isExecuting) { + [self.animator invalid]; + self.animator = nil; + } + CGFloat dotWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetX = 0; + CGFloat targetWidth = dotWidth; + CGFloat leftWidth = dotWidth; + CGFloat rightWidth = dotWidth; + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - leftWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - rightWidth)/2; + CGFloat centerX = leftX + (rightX - leftX - self.lineWidth)/2; + + //前50%,移动x,增加宽度;后50%,移动x并减小width + if (percent <= 0.5) { + targetX = [JXCategoryFactory interpolationFrom:leftX to:centerX percent:percent*2]; + targetWidth = [JXCategoryFactory interpolationFrom:dotWidth to:self.lineWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:centerX to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:self.lineWidth to:dotWidth percent:(percent - 0.5)*2]; + } + + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect frame = self.frame; + frame.origin.x = targetX; + frame.size.width = targetWidth; + self.frame = frame; + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGFloat dotWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - dotWidth)/2; + CGRect targetIndicatorFrame = self.frame; + targetIndicatorFrame.origin.x = x; + if (self.isScrollEnabled) { + if (self.scrollStyle == JXCategoryIndicatorScrollStyleSameAsUserScroll && (model.selectedType == JXCategoryCellSelectedTypeClick | model.selectedType == JXCategoryCellSelectedTypeCode)) { + if (self.animator.isExecuting) { + [self.animator invalid]; + self.animator = nil; + } + CGFloat leftX = 0; + CGFloat rightX = 0; + BOOL isNeedReversePercent = NO; + if (self.frame.origin.x > model.selectedCellFrame.origin.x) { + leftX = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - dotWidth)/2;; + rightX = self.frame.origin.x; + isNeedReversePercent = YES; + }else { + leftX = self.frame.origin.x; + rightX = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - dotWidth)/2; + } + CGFloat centerX = leftX + (rightX - leftX - self.lineWidth)/2; + __weak typeof(self) weakSelf = self; + self.animator = [[JXCategoryViewAnimator alloc] init]; + self.animator.progressCallback = ^(CGFloat percent) { + if (isNeedReversePercent) { + percent = 1 - percent; + } + CGFloat targetX = 0; + CGFloat targetWidth = 0; + if (percent <= 0.5) { + targetX = [JXCategoryFactory interpolationFrom:leftX to:centerX percent:percent*2]; + targetWidth = [JXCategoryFactory interpolationFrom:dotWidth to:self.lineWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:centerX to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:self.lineWidth to:dotWidth percent:(percent - 0.5)*2]; + } + CGRect toFrame = weakSelf.frame; + toFrame.origin.x = targetX; + toFrame.size.width = targetWidth; + weakSelf.frame = toFrame; + }; + [self.animator start]; + }else if (self.scrollStyle == JXCategoryIndicatorScrollStyleSimple) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ + self.frame = targetIndicatorFrame; + } completion: nil]; + } + }else { + self.frame = targetIndicatorFrame; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h new file mode 100644 index 0000000..04a1738 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h @@ -0,0 +1,20 @@ +// +// JXCategoryIndicatorImageView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +@interface JXCategoryIndicatorImageView : JXCategoryIndicatorComponentView + +// 指示器图片 +@property (nonatomic, strong, readonly) UIImageView *indicatorImageView; +// 图片是否开启滚动,默认值为 NO +@property (nonatomic, assign) BOOL indicatorImageViewRollEnabled; +// 图片的尺寸,默认值为 CGSizeMake(30, 20) +@property (nonatomic, assign) CGSize indicatorImageViewSize; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m new file mode 100644 index 0000000..02dc891 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m @@ -0,0 +1,117 @@ +// +// JXCategoryIndicatorImageView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorImageView.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryIndicatorImageView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self setupIndicatorImageView]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self setupIndicatorImageView]; + } + return self; +} + +- (void)setupIndicatorImageView { + _indicatorImageViewSize = CGSizeMake(30, 20); + _indicatorImageViewRollEnabled = NO; + + _indicatorImageView = [[UIImageView alloc] init]; + self.indicatorImageView.frame = CGRectMake(0, 0, self.indicatorImageViewSize.width, self.indicatorImageViewSize.height); + self.indicatorImageView.contentMode = UIViewContentModeScaleAspectFit; + [self addSubview:self.indicatorImageView]; +} + +#pragma mark - Custom Accessors + +- (void)setIndicatorImageViewSize:(CGSize)indicatorImageViewSize { + _indicatorImageViewSize = indicatorImageViewSize; + + self.indicatorImageView.frame = CGRectMake(0, 0, self.indicatorImageViewSize.width, self.indicatorImageViewSize.height); +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - self.indicatorImageViewSize.width)/2; + CGFloat y = self.superview.bounds.size.height - self.indicatorImageViewSize.height - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + self.frame = CGRectMake(x, y, self.indicatorImageViewSize.width, self.indicatorImageViewSize.height); +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetWidth = self.indicatorImageViewSize.width; + CGFloat targetX = 0; + + if (percent == 0) { + targetX = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidth)/2.0; + }else { + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - targetWidth)/2; + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:percent]; + } + + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect frame = self.frame; + frame.origin.x = targetX; + self.frame = frame; + + if (self.indicatorImageViewRollEnabled) { + self.indicatorImageView.transform = CGAffineTransformMakeRotation(M_PI*2*percent); + } + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGRect toFrame = self.frame; + toFrame.origin.x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - self.indicatorImageViewSize.width)/2; + if (self.isScrollEnabled) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ + self.frame = toFrame; + } completion:^(BOOL finished) { + }]; + if (self.indicatorImageViewRollEnabled && (model.selectedType == JXCategoryCellSelectedTypeCode || model.selectedType == JXCategoryCellSelectedTypeClick)) { + [self.indicatorImageView.layer removeAnimationForKey:@"rotate"]; + CABasicAnimation *rotateAnimation = [CABasicAnimation animationWithKeyPath:@"transform.rotation.z"]; + if (model.selectedIndex > model.lastSelectedIndex) { + rotateAnimation.fromValue = @(0); + rotateAnimation.toValue = @(M_PI*2); + }else { + rotateAnimation.fromValue = @(M_PI*2); + rotateAnimation.toValue = @(0); + } + rotateAnimation.fillMode = kCAFillModeBackwards; + rotateAnimation.removedOnCompletion = YES; + rotateAnimation.duration = 0.25; + [self.indicatorImageView.layer addAnimation:rotateAnimation forKey:@"rotate"]; + } + }else { + self.frame = toFrame; + } +} + + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h new file mode 100644 index 0000000..54c784a --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h @@ -0,0 +1,28 @@ +// +// JXCategoryIndicatorLineView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +typedef NS_ENUM(NSUInteger, JXCategoryIndicatorLineStyle) { + JXCategoryIndicatorLineStyle_Normal = 0, + JXCategoryIndicatorLineStyle_Lengthen = 1, + JXCategoryIndicatorLineStyle_LengthenOffset = 2, +}; + +@interface JXCategoryIndicatorLineView : JXCategoryIndicatorComponentView + +@property (nonatomic, assign) JXCategoryIndicatorLineStyle lineStyle; + +/** + line 滚动时沿 x 轴方向上的偏移量,默认值为 10。 + + lineStyle 为 JXCategoryIndicatorLineStyle_LengthenOffset 有用。 + */ +@property (nonatomic, assign) CGFloat lineScrollOffsetX; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m new file mode 100644 index 0000000..87ffbe6 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m @@ -0,0 +1,202 @@ +// +// JXCategoryIndicatorLineView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorLineView.h" +#import "JXCategoryFactory.h" +#import "JXCategoryViewDefines.h" +#import "JXCategoryViewAnimator.h" + +@interface JXCategoryIndicatorLineView () +@property (nonatomic, strong) JXCategoryViewAnimator *animator; +@end + +@implementation JXCategoryIndicatorLineView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (void)configureDefaulteValue { + _lineStyle = JXCategoryIndicatorLineStyle_Normal; + _lineScrollOffsetX = 10; + self.indicatorHeight = 3; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + self.backgroundColor = self.indicatorColor; + self.layer.cornerRadius = [self indicatorCornerRadiusValue:model.selectedCellFrame]; + + CGFloat selectedLineWidth = [self indicatorWidthValue:model.selectedCellFrame]; + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - selectedLineWidth)/2; + CGFloat y = self.superview.bounds.size.height - [self indicatorHeightValue:model.selectedCellFrame] - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + self.frame = CGRectMake(x, y, selectedLineWidth, [self indicatorHeightValue:model.selectedCellFrame]); +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + if (self.animator.isExecuting) { + [self.animator invalid]; + self.animator = nil; + } + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetX = leftCellFrame.origin.x; + CGFloat targetWidth = [self indicatorWidthValue:leftCellFrame]; + + CGFloat leftWidth = targetWidth; + CGFloat rightWidth = [self indicatorWidthValue:rightCellFrame]; + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - leftWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - rightWidth)/2; + + if (self.lineStyle == JXCategoryIndicatorLineStyle_Normal) { + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:percent]; + if (self.indicatorWidth == JXCategoryViewAutomaticDimension) { + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:rightWidth percent:percent]; + } + }else if (self.lineStyle == JXCategoryIndicatorLineStyle_Lengthen) { + CGFloat maxWidth = rightX - leftX + rightWidth; + //前50%,只增加width;后50%,移动x并减小width + if (percent <= 0.5) { + targetX = leftX; + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:maxWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:maxWidth to:rightWidth percent:(percent - 0.5)*2]; + } + }else if (self.lineStyle == JXCategoryIndicatorLineStyle_LengthenOffset) { + //前50%,增加width,并少量移动x;后50%,少量移动x并减小width + CGFloat offsetX = self.lineScrollOffsetX;//x的少量偏移量 + CGFloat maxWidth = rightX - leftX + rightWidth - offsetX*2; + if (percent <= 0.5) { + targetX = [JXCategoryFactory interpolationFrom:leftX to:leftX + offsetX percent:percent*2];; + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:maxWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:(leftX + offsetX) to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:maxWidth to:rightWidth percent:(percent - 0.5)*2]; + } + } + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect frame = self.frame; + frame.origin.x = targetX; + frame.size.width = targetWidth; + self.frame = frame; + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGRect targetIndicatorFrame = self.frame; + CGFloat targetIndicatorWidth = [self indicatorWidthValue:model.selectedCellFrame]; + targetIndicatorFrame.origin.x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - targetIndicatorWidth)/2.0; + targetIndicatorFrame.size.width = targetIndicatorWidth; + if (self.isScrollEnabled) { + if (self.scrollStyle == JXCategoryIndicatorScrollStyleSameAsUserScroll && (model.selectedType == JXCategoryCellSelectedTypeClick | model.selectedType == JXCategoryCellSelectedTypeCode)) { + if (self.animator.isExecuting) { + [self.animator invalid]; + self.animator = nil; + } + CGFloat leftX = 0; + CGFloat rightX = 0; + CGFloat leftWidth = 0; + CGFloat rightWidth = 0; + BOOL isNeedReversePercent = NO; + if (self.frame.origin.x > model.selectedCellFrame.origin.x) { + leftWidth = [self indicatorWidthValue:model.selectedCellFrame]; + rightWidth = self.frame.size.width; + leftX = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - leftWidth)/2;; + rightX = self.frame.origin.x; + isNeedReversePercent = YES; + }else { + leftWidth = self.frame.size.width; + rightWidth = [self indicatorWidthValue:model.selectedCellFrame]; + leftX = self.frame.origin.x; + rightX = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - rightWidth)/2; + } + __weak typeof(self) weakSelf = self; + if (self.lineStyle == JXCategoryIndicatorLineStyle_Normal) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ + self.frame = targetIndicatorFrame; + } completion: nil]; + }else if (self.lineStyle == JXCategoryIndicatorLineStyle_Lengthen) { + CGFloat maxWidth = rightX - leftX + rightWidth; + //前50%,只增加width;后50%,移动x并减小width + self.animator = [[JXCategoryViewAnimator alloc] init]; + self.animator.progressCallback = ^(CGFloat percent) { + if (isNeedReversePercent) { + percent = 1 - percent; + } + CGFloat targetX = 0; + CGFloat targetWidth = 0; + if (percent <= 0.5) { + targetX = leftX; + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:maxWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:maxWidth to:rightWidth percent:(percent - 0.5)*2]; + } + CGRect toFrame = weakSelf.frame; + toFrame.origin.x = targetX; + toFrame.size.width = targetWidth; + weakSelf.frame = toFrame; + }; + [self.animator start]; + }else if (self.lineStyle == JXCategoryIndicatorLineStyle_LengthenOffset) { + //前50%,增加width,并少量移动x;后50%,少量移动x并减小width + CGFloat offsetX = self.lineScrollOffsetX;//x的少量偏移量 + CGFloat maxWidth = rightX - leftX + rightWidth - offsetX*2; + self.animator = [[JXCategoryViewAnimator alloc] init]; + self.animator.progressCallback = ^(CGFloat percent) { + if (isNeedReversePercent) { + percent = 1 - percent; + } + CGFloat targetX = 0; + CGFloat targetWidth = 0; + if (percent <= 0.5) { + targetX = [JXCategoryFactory interpolationFrom:leftX to:leftX + offsetX percent:percent*2];; + targetWidth = [JXCategoryFactory interpolationFrom:leftWidth to:maxWidth percent:percent*2]; + }else { + targetX = [JXCategoryFactory interpolationFrom:(leftX + offsetX) to:rightX percent:(percent - 0.5)*2]; + targetWidth = [JXCategoryFactory interpolationFrom:maxWidth to:rightWidth percent:(percent - 0.5)*2]; + } + CGRect toFrame = weakSelf.frame; + toFrame.origin.x = targetX; + toFrame.size.width = targetWidth; + weakSelf.frame = toFrame; + }; + [self.animator start]; + } + }else if (self.scrollStyle == JXCategoryIndicatorScrollStyleSimple) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveEaseOut animations:^{ + self.frame = targetIndicatorFrame; + } completion: nil]; + } + }else { + self.frame = targetIndicatorFrame; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h new file mode 100644 index 0000000..5fe134e --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h @@ -0,0 +1,30 @@ +// +// JXCategoryIndicatorRainbowLineView.h +// JXCategoryView +// +// Created by jiaxin on 2018/12/13. +// Copyright © 2018 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorLineView.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + 彩虹效果的指示器 + + !!!: 会无视 JXCategoryIndicatorLineView 的 indicatorColor 属性,以 indicatorColors 为准。 + */ +@interface JXCategoryIndicatorRainbowLineView : JXCategoryIndicatorLineView + +/** + 指示器颜色数组 + + 数量需要与 cell 的数量相等。没有提供默认值,必须要赋值该属性。 + categoryView 在 reloadData 的时候,也要一并更新该属性,不然会出现数组越界。 + */ +@property (nonatomic, strong) NSArray *indicatorColors; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m new file mode 100644 index 0000000..9978c8c --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m @@ -0,0 +1,38 @@ +// +// JXCategoryIndicatorRainbowLineView.m +// JXCategoryView +// +// Created by jiaxin on 2018/12/13. +// Copyright © 2018 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorRainbowLineView.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryIndicatorRainbowLineView + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + [super jx_refreshState:model]; + + UIColor *color = self.indicatorColors[model.selectedIndex]; + self.backgroundColor = color; +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + [super jx_contentScrollViewDidScroll:model]; + + UIColor *leftColor = self.indicatorColors[model.leftIndex]; + UIColor *rightColor = self.indicatorColors[model.rightIndex]; + UIColor *color = [JXCategoryFactory interpolationColorFrom:leftColor to:rightColor percent:model.percent]; + self.backgroundColor = color; +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + [super jx_selectedCell:model]; + + UIColor *color = self.indicatorColors[model.selectedIndex]; + self.backgroundColor = color; +} + + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h new file mode 100644 index 0000000..e4dfdb2 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h @@ -0,0 +1,14 @@ +// +// JXCategoryIndicatorTriangleView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorComponentView.h" + +/// 三角形样式的指示器 +@interface JXCategoryIndicatorTriangleView : JXCategoryIndicatorComponentView + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m new file mode 100644 index 0000000..96f5ab0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m @@ -0,0 +1,109 @@ +// +// JXCategoryIndicatorTriangleView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/17. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorTriangleView.h" +#import "JXCategoryFactory.h" + +@interface JXCategoryIndicatorTriangleView () +@property (nonatomic, strong) CAShapeLayer *triangleLayer; +@end + +@implementation JXCategoryIndicatorTriangleView + +#pragma mark - Initialize + +- (instancetype)initWithFrame:(CGRect)frame { + self = [super initWithFrame:frame]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (instancetype)initWithCoder:(NSCoder *)coder { + self = [super initWithCoder:coder]; + if (self) { + [self configureDefaulteValue]; + } + return self; +} + +- (void)configureDefaulteValue { + self.indicatorWidth = 14; + self.indicatorHeight = 10; + + _triangleLayer = [CAShapeLayer layer]; + [self.layer addSublayer:self.triangleLayer]; +} + +#pragma mark - JXCategoryIndicatorProtocol + +- (void)jx_refreshState:(JXCategoryIndicatorParamsModel *)model { + CGFloat x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - [self indicatorWidthValue:model.selectedCellFrame])/2; + CGFloat y = self.superview.bounds.size.height - [self indicatorHeightValue:model.selectedCellFrame] - self.verticalMargin; + if (self.componentPosition == JXCategoryComponentPosition_Top) { + y = self.verticalMargin; + } + self.frame = CGRectMake(x, y, [self indicatorWidthValue:model.selectedCellFrame], [self indicatorHeightValue:model.selectedCellFrame]); + + [CATransaction begin]; + [CATransaction setDisableActions:NO]; + self.triangleLayer.fillColor = self.indicatorColor.CGColor; + self.triangleLayer.frame = self.bounds; + UIBezierPath *path = [UIBezierPath bezierPath]; + if (self.componentPosition == JXCategoryComponentPosition_Bottom) { + [path moveToPoint:CGPointMake(self.bounds.size.width/2, 0)]; + [path addLineToPoint:CGPointMake(0, self.bounds.size.height)]; + [path addLineToPoint:CGPointMake(self.bounds.size.width, self.bounds.size.height)]; + } else { + [path moveToPoint:CGPointMake(0, 0)]; + [path addLineToPoint:CGPointMake(self.bounds.size.width, 0)]; + [path addLineToPoint:CGPointMake(self.bounds.size.width/2, self.bounds.size.height)]; + } + [path closePath]; + self.triangleLayer.path = path.CGPath; + [CATransaction commit]; +} + +- (void)jx_contentScrollViewDidScroll:(JXCategoryIndicatorParamsModel *)model { + CGRect rightCellFrame = model.rightCellFrame; + CGRect leftCellFrame = model.leftCellFrame; + CGFloat percent = model.percent; + CGFloat targetWidth = [self indicatorWidthValue:model.leftCellFrame]; + CGFloat targetX = 0; + + if (percent == 0) { + targetX = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidth)/2.0; + } else { + CGFloat leftX = leftCellFrame.origin.x + (leftCellFrame.size.width - targetWidth)/2; + CGFloat rightX = rightCellFrame.origin.x + (rightCellFrame.size.width - targetWidth)/2; + targetX = [JXCategoryFactory interpolationFrom:leftX to:rightX percent:percent]; + } + + //允许变动frame的情况:1、允许滚动;2、不允许滚动,但是已经通过手势滚动切换一页内容了; + if (self.isScrollEnabled == YES || (self.isScrollEnabled == NO && percent == 0)) { + CGRect frame = self.frame; + frame.origin.x = targetX; + self.frame = frame; + } +} + +- (void)jx_selectedCell:(JXCategoryIndicatorParamsModel *)model { + CGRect toFrame = self.frame; + toFrame.origin.x = model.selectedCellFrame.origin.x + (model.selectedCellFrame.size.width - [self indicatorWidthValue:model.selectedCellFrame])/2; + if (self.isScrollEnabled) { + [UIView animateWithDuration:self.scrollAnimationDuration delay:0 options:UIViewAnimationOptionCurveLinear animations:^{ + self.frame = toFrame; + } completion:^(BOOL finished) { + }]; + } else { + self.frame = toFrame; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.h b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.h new file mode 100644 index 0000000..27796d5 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.h @@ -0,0 +1,13 @@ +// +// JXCategoryComponetCell.h +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryBaseCell.h" + +@interface JXCategoryIndicatorCell : JXCategoryBaseCell + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m new file mode 100644 index 0000000..390701f --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m @@ -0,0 +1,52 @@ +// +// JXCategoryComponetCell.m +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryIndicatorCell.h" +#import "JXCategoryIndicatorCellModel.h" + +@interface JXCategoryIndicatorCell () +@property (nonatomic, strong) UIView *separatorLine; +@end + +@implementation JXCategoryIndicatorCell + +- (void)initializeViews { + [super initializeViews]; + + self.separatorLine = [[UIView alloc] init]; + self.separatorLine.hidden = YES; + [self.contentView addSubview:self.separatorLine]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + JXCategoryIndicatorCellModel *model = (JXCategoryIndicatorCellModel *)self.cellModel; + CGFloat lineWidth = model.separatorLineSize.width; + CGFloat lineHeight = model.separatorLineSize.height; + + self.separatorLine.frame = CGRectMake(self.bounds.size.width - lineWidth + self.cellModel.cellSpacing/2, (self.bounds.size.height - lineHeight)/2.0, lineWidth, lineHeight); +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryIndicatorCellModel *model = (JXCategoryIndicatorCellModel *)cellModel; + self.separatorLine.backgroundColor = model.separatorLineColor; + self.separatorLine.hidden = !model.isSepratorLineShowEnabled; + + if (model.isCellBackgroundColorGradientEnabled) { + if (model.isSelected) { + self.contentView.backgroundColor = model.cellBackgroundSelectedColor; + }else { + self.contentView.backgroundColor = model.cellBackgroundUnselectedColor; + } + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.h b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.h new file mode 100644 index 0000000..21effb0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.h @@ -0,0 +1,24 @@ +// +// JXCategoryComponentCellModel.h +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import +#import "JXCategoryBaseCellModel.h" + +@interface JXCategoryIndicatorCellModel : JXCategoryBaseCellModel + +@property (nonatomic, assign, getter=isSepratorLineShowEnabled) BOOL sepratorLineShowEnabled; +@property (nonatomic, strong) UIColor *separatorLineColor; +@property (nonatomic, assign) CGSize separatorLineSize; + +@property (nonatomic, assign) CGRect backgroundViewMaskFrame; // 底部指示器的 frame 转换到 cell 的 frame + +@property (nonatomic, assign, getter=isCellBackgroundColorGradientEnabled) BOOL cellBackgroundColorGradientEnabled; +@property (nonatomic, strong) UIColor *cellBackgroundSelectedColor; +@property (nonatomic, strong) UIColor *cellBackgroundUnselectedColor; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.m b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.m new file mode 100644 index 0000000..d79d6f4 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryComponentCellModel.m +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryIndicatorCellModel.h" + +@implementation JXCategoryIndicatorCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.h b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.h new file mode 100644 index 0000000..a172268 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.h @@ -0,0 +1,48 @@ +// +// JXCategoryComponentView.h +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryBaseView.h" +#import "JXCategoryIndicatorCell.h" +#import "JXCategoryIndicatorCellModel.h" +#import "JXCategoryIndicatorProtocol.h" + +@interface JXCategoryIndicatorView : JXCategoryBaseView + +@property (nonatomic, strong) NSArray *> *indicators; + +//----------------------ellBackgroundColor-----------------------// +//cell的背景色是否渐变。默认:NO +@property (nonatomic, assign, getter=isCellBackgroundColorGradientEnabled) BOOL cellBackgroundColorGradientEnabled; +//cell普通状态的背景色。默认:[UIColor clearColor] +@property (nonatomic, strong) UIColor *cellBackgroundUnselectedColor; +//cell选中状态的背景色。默认:[UIColor grayColor] +@property (nonatomic, strong) UIColor *cellBackgroundSelectedColor; + +//----------------------separatorLine-----------------------// +//是否显示分割线。默认为NO +@property (nonatomic, assign, getter=isSeparatorLineShowEnabled) BOOL separatorLineShowEnabled; +//分割线颜色。默认为[UIColor lightGrayColor] +@property (nonatomic, strong) UIColor *separatorLineColor; +//分割线的size。默认为CGSizeMake(1/[UIScreen mainScreen].scale, 20) +@property (nonatomic, assign) CGSize separatorLineSize; + +@end + +@interface JXCategoryIndicatorView (UISubclassingIndicatorHooks) + +/** + 当contentScrollView滚动时候,处理跟随手势的过渡效果。 + 根据cellModel的左右位置、是否选中、ratio进行过滤数据计算。 + + @param leftCellModel 左边的cellModel + @param rightCellModel 右边的cellModel + @param ratio 从左往右方向计算的百分比 + */ +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio NS_REQUIRES_SUPER; + +@end diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.m b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.m new file mode 100644 index 0000000..861ccde --- /dev/null +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorView.m @@ -0,0 +1,209 @@ +// +// JXCategoryIndicatorView.m +// DQGuess +// +// Created by jiaxin on 2018/7/25. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryIndicatorView.h" +#import "JXCategoryIndicatorBackgroundView.h" +#import "JXCategoryFactory.h" + +@interface JXCategoryIndicatorView() + +@end + +@implementation JXCategoryIndicatorView + +- (void)initializeData { + [super initializeData]; + + _separatorLineShowEnabled = NO; + _separatorLineColor = [UIColor lightGrayColor]; + _separatorLineSize = CGSizeMake(1/[UIScreen mainScreen].scale, 20); + _cellBackgroundColorGradientEnabled = NO; + _cellBackgroundUnselectedColor = [UIColor whiteColor]; + _cellBackgroundSelectedColor = [UIColor lightGrayColor]; +} + +- (void)initializeViews { + [super initializeViews]; +} + +- (void)setIndicators:(NSArray *> *)indicators { + _indicators = indicators; + + self.collectionView.indicators = indicators; +} + +- (void)refreshState { + [super refreshState]; + + CGRect selectedCellFrame = CGRectZero; + JXCategoryIndicatorCellModel *selectedCellModel; + for (int i = 0; i < self.dataSource.count; i++) { + JXCategoryIndicatorCellModel *cellModel = (JXCategoryIndicatorCellModel *)self.dataSource[i]; + cellModel.sepratorLineShowEnabled = self.isSeparatorLineShowEnabled; + cellModel.separatorLineColor = self.separatorLineColor; + cellModel.separatorLineSize = self.separatorLineSize; + cellModel.backgroundViewMaskFrame = CGRectZero; + cellModel.cellBackgroundColorGradientEnabled = self.isCellBackgroundColorGradientEnabled; + cellModel.cellBackgroundSelectedColor = self.cellBackgroundSelectedColor; + cellModel.cellBackgroundUnselectedColor = self.cellBackgroundUnselectedColor; + if (i == self.dataSource.count - 1) { + cellModel.sepratorLineShowEnabled = NO; + } + if (i == self.selectedIndex) { + selectedCellModel = cellModel; + selectedCellFrame = [self getTargetCellFrame:i]; + } + } + + for (UIView *indicator in self.indicators) { + if (self.dataSource.count <= 0) { + indicator.hidden = YES; + } else { + indicator.hidden = NO; + JXCategoryIndicatorParamsModel *indicatorParamsModel = [[JXCategoryIndicatorParamsModel alloc] init]; + indicatorParamsModel.selectedIndex = self.selectedIndex; + indicatorParamsModel.selectedCellFrame = selectedCellFrame; + [indicator jx_refreshState:indicatorParamsModel]; + + if ([indicator isKindOfClass:[JXCategoryIndicatorBackgroundView class]]) { + CGRect maskFrame = indicator.frame; + maskFrame.origin.x = maskFrame.origin.x - selectedCellFrame.origin.x; + selectedCellModel.backgroundViewMaskFrame = maskFrame; + } + } + } +} + +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel { + [super refreshSelectedCellModel:selectedCellModel unselectedCellModel:unselectedCellModel]; + + JXCategoryIndicatorCellModel *myUnselectedCellModel = (JXCategoryIndicatorCellModel *)unselectedCellModel; + myUnselectedCellModel.backgroundViewMaskFrame = CGRectZero; + myUnselectedCellModel.cellBackgroundUnselectedColor = self.cellBackgroundUnselectedColor; + myUnselectedCellModel.cellBackgroundSelectedColor = self.cellBackgroundSelectedColor; + + JXCategoryIndicatorCellModel *myselectedCellModel = (JXCategoryIndicatorCellModel *)selectedCellModel; + myselectedCellModel.cellBackgroundUnselectedColor = self.cellBackgroundUnselectedColor; + myselectedCellModel.cellBackgroundSelectedColor = self.cellBackgroundSelectedColor; +} + +- (void)contentOffsetOfContentScrollViewDidChanged:(CGPoint)contentOffset { + [super contentOffsetOfContentScrollViewDidChanged:contentOffset]; + + CGFloat ratio = contentOffset.x/self.contentScrollView.bounds.size.width; + if (ratio > self.dataSource.count - 1 || ratio < 0) { + //超过了边界,不需要处理 + return; + } + ratio = MAX(0, MIN(self.dataSource.count - 1, ratio)); + NSInteger baseIndex = floorf(ratio); + if (baseIndex + 1 >= self.dataSource.count) { + //右边越界了,不需要处理 + return; + } + CGFloat remainderRatio = ratio - baseIndex; + + CGRect leftCellFrame = [self getTargetCellFrame:baseIndex]; + CGRect rightCellFrame = [self getTargetCellFrame:baseIndex + 1]; + + JXCategoryIndicatorParamsModel *indicatorParamsModel = [[JXCategoryIndicatorParamsModel alloc] init]; + indicatorParamsModel.selectedIndex = self.selectedIndex; + indicatorParamsModel.leftIndex = baseIndex; + indicatorParamsModel.leftCellFrame = leftCellFrame; + indicatorParamsModel.rightIndex = baseIndex + 1; + indicatorParamsModel.rightCellFrame = rightCellFrame; + indicatorParamsModel.percent = remainderRatio; + if (remainderRatio == 0) { + for (UIView *indicator in self.indicators) { + [indicator jx_contentScrollViewDidScroll:indicatorParamsModel]; + } + } else { + JXCategoryIndicatorCellModel *leftCellModel = (JXCategoryIndicatorCellModel *)self.dataSource[baseIndex]; + leftCellModel.selectedType = JXCategoryCellSelectedTypeUnknown; + JXCategoryIndicatorCellModel *rightCellModel = (JXCategoryIndicatorCellModel *)self.dataSource[baseIndex + 1]; + rightCellModel.selectedType = JXCategoryCellSelectedTypeUnknown; + [self refreshLeftCellModel:leftCellModel rightCellModel:rightCellModel ratio:remainderRatio]; + + for (UIView *indicator in self.indicators) { + [indicator jx_contentScrollViewDidScroll:indicatorParamsModel]; + if ([indicator isKindOfClass:[JXCategoryIndicatorBackgroundView class]]) { + CGRect leftMaskFrame = indicator.frame; + leftMaskFrame.origin.x = leftMaskFrame.origin.x - leftCellFrame.origin.x; + leftCellModel.backgroundViewMaskFrame = leftMaskFrame; + + CGRect rightMaskFrame = indicator.frame; + rightMaskFrame.origin.x = rightMaskFrame.origin.x - rightCellFrame.origin.x; + rightCellModel.backgroundViewMaskFrame = rightMaskFrame; + } + } + + JXCategoryBaseCell *leftCell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:baseIndex inSection:0]]; + [leftCell reloadData:leftCellModel]; + JXCategoryBaseCell *rightCell = (JXCategoryBaseCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:baseIndex + 1 inSection:0]]; + [rightCell reloadData:rightCellModel]; + } +} + +- (BOOL)selectCellAtIndex:(NSInteger)index selectedType:(JXCategoryCellSelectedType)selectedType { + NSInteger lastSelectedIndex = self.selectedIndex; + BOOL result = [super selectCellAtIndex:index selectedType:selectedType]; + if (!result) { + return NO; + } + + CGRect clickedCellFrame = [self getTargetSelectedCellFrame:index selectedType:selectedType]; + + JXCategoryIndicatorCellModel *selectedCellModel = (JXCategoryIndicatorCellModel *)self.dataSource[index]; + selectedCellModel.selectedType = selectedType; + for (UIView *indicator in self.indicators) { + JXCategoryIndicatorParamsModel *indicatorParamsModel = [[JXCategoryIndicatorParamsModel alloc] init]; + indicatorParamsModel.lastSelectedIndex = lastSelectedIndex; + indicatorParamsModel.selectedIndex = index; + indicatorParamsModel.selectedCellFrame = clickedCellFrame; + indicatorParamsModel.selectedType = selectedType; + [indicator jx_selectedCell:indicatorParamsModel]; + if ([indicator isKindOfClass:[JXCategoryIndicatorBackgroundView class]]) { + CGRect maskFrame = indicator.frame; + maskFrame.origin.x = maskFrame.origin.x - clickedCellFrame.origin.x; + selectedCellModel.backgroundViewMaskFrame = maskFrame; + } + } + + JXCategoryIndicatorCell *selectedCell = (JXCategoryIndicatorCell *)[self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + [selectedCell reloadData:selectedCellModel]; + + return YES; +} + +@end + +@implementation JXCategoryIndicatorView (UISubclassingIndicatorHooks) + +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio { + if (self.isCellBackgroundColorGradientEnabled) { + //处理cell背景色渐变 + JXCategoryIndicatorCellModel *leftModel = (JXCategoryIndicatorCellModel *)leftCellModel; + JXCategoryIndicatorCellModel *rightModel = (JXCategoryIndicatorCellModel *)rightCellModel; + if (leftModel.isSelected) { + leftModel.cellBackgroundSelectedColor = [JXCategoryFactory interpolationColorFrom:self.cellBackgroundSelectedColor to:self.cellBackgroundUnselectedColor percent:ratio]; + leftModel.cellBackgroundUnselectedColor = self.cellBackgroundUnselectedColor; + }else { + leftModel.cellBackgroundUnselectedColor = [JXCategoryFactory interpolationColorFrom:self.cellBackgroundSelectedColor to:self.cellBackgroundUnselectedColor percent:ratio]; + leftModel.cellBackgroundSelectedColor = self.cellBackgroundSelectedColor; + } + if (rightModel.isSelected) { + rightModel.cellBackgroundSelectedColor = [JXCategoryFactory interpolationColorFrom:self.cellBackgroundUnselectedColor to:self.cellBackgroundSelectedColor percent:ratio]; + rightModel.cellBackgroundUnselectedColor = self.cellBackgroundUnselectedColor; + }else { + rightModel.cellBackgroundUnselectedColor = [JXCategoryFactory interpolationColorFrom:self.cellBackgroundUnselectedColor to:self.cellBackgroundSelectedColor percent:ratio]; + rightModel.cellBackgroundSelectedColor = self.cellBackgroundSelectedColor; + } + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/JXCategoryView.h b/Pods/JXCategoryView/Sources/JXCategoryView.h new file mode 100644 index 0000000..d90c0cc --- /dev/null +++ b/Pods/JXCategoryView/Sources/JXCategoryView.h @@ -0,0 +1,23 @@ + + +#import "JXCategoryBaseView.h" +#import "JXCategoryIndicatorView.h" +#import "JXCategoryTitleView.h" +#import "JXCategoryImageView.h" +#import "JXCategoryTitleImageView.h" +#import "JXCategoryNumberView.h" +#import "JXCategoryDotView.h" + +#import "JXCategoryFactory.h" +#import "JXCategoryIndicatorProtocol.h" +#import "JXCategoryViewDefines.h" +#import "JXCategoryListContainerView.h" + +#import "JXCategoryIndicatorComponentView.h" +#import "JXCategoryIndicatorLineView.h" +#import "JXCategoryIndicatorTriangleView.h" +#import "JXCategoryIndicatorImageView.h" +#import "JXCategoryIndicatorBackgroundView.h" +#import "JXCategoryIndicatorBallView.h" +#import "JXCategoryIndicatorRainbowLineView.h" + diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.h b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.h new file mode 100644 index 0000000..acbc2db --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.h @@ -0,0 +1,13 @@ +// +// JXCategoryNumberCell.h +// DQGuess +// +// Created by jiaxin on 2018/4/9. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryTitleCell.h" + +@interface JXCategoryNumberCell : JXCategoryTitleCell +@property (nonatomic, strong) UILabel *numberLabel; +@end diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.m b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.m new file mode 100644 index 0000000..e9bcbd4 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCell.m @@ -0,0 +1,62 @@ +// +// JXCategoryNumberCell.m +// DQGuess +// +// Created by jiaxin on 2018/4/9. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryNumberCell.h" +#import "JXCategoryNumberCellModel.h" + +@interface JXCategoryNumberCell () +@property (nonatomic, strong) NSLayoutConstraint *numberCenterXConstraint; +@property (nonatomic, strong) NSLayoutConstraint *numberCenterYConstraint; +@property (nonatomic, strong) NSLayoutConstraint *numberHeightConstraint; +@property (nonatomic, strong) NSLayoutConstraint *numberWidthConstraint; +@end + +@implementation JXCategoryNumberCell + +- (void)prepareForReuse { + [super prepareForReuse]; + + self.numberLabel.text = nil; +} + +- (void)initializeViews { + [super initializeViews]; + + self.numberLabel = [[UILabel alloc] init]; + self.numberLabel.textAlignment = NSTextAlignmentCenter; + self.numberLabel.layer.masksToBounds = YES; + [self.contentView addSubview:self.numberLabel]; + self.numberLabel.translatesAutoresizingMaskIntoConstraints = NO; + self.numberCenterXConstraint = [self.numberLabel.centerXAnchor constraintEqualToAnchor:self.titleLabel.trailingAnchor]; + self.numberCenterYConstraint = [self.numberLabel.centerYAnchor constraintEqualToAnchor:self.titleLabel.topAnchor]; + self.numberHeightConstraint = [self.numberLabel.heightAnchor constraintEqualToConstant:0]; + self.numberWidthConstraint = [self.numberLabel.widthAnchor constraintEqualToConstant:0]; + [NSLayoutConstraint activateConstraints:@[self.numberCenterXConstraint, self.numberCenterYConstraint, self.numberWidthConstraint, self.numberHeightConstraint]]; +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryNumberCellModel *myCellModel = (JXCategoryNumberCellModel *)cellModel; + self.numberLabel.hidden = (myCellModel.count == 0); + self.numberLabel.backgroundColor = myCellModel.numberBackgroundColor; + self.numberLabel.font = myCellModel.numberLabelFont; + self.numberLabel.textColor = myCellModel.numberTitleColor; + self.numberLabel.text = myCellModel.numberString; + self.numberLabel.layer.cornerRadius = myCellModel.numberLabelHeight/2.0; + self.numberHeightConstraint.constant = myCellModel.numberLabelHeight; + self.numberCenterXConstraint.constant = myCellModel.numberLabelOffset.x; + self.numberCenterYConstraint.constant = myCellModel.numberLabelOffset.y; + if (myCellModel.count < 10 && myCellModel.shouldMakeRoundWhenSingleNumber) { + self.numberWidthConstraint.constant = myCellModel.numberLabelHeight; + }else { + self.numberWidthConstraint.constant = myCellModel.numberStringWidth + myCellModel.numberLabelWidthIncrement; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.h b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.h new file mode 100644 index 0000000..0622a64 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.h @@ -0,0 +1,25 @@ +// +// JXCategoryNumberCellModel.h +// DQGuess +// +// Created by jiaxin on 2018/4/24. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryTitleCellModel.h" + +@interface JXCategoryNumberCellModel : JXCategoryTitleCellModel + +@property (nonatomic, assign) NSInteger count; +@property (nonatomic, copy) NSString *numberString; +@property (nonatomic, assign, readonly) CGFloat numberStringWidth; +@property (nonatomic, copy) void(^numberStringFormatterBlock)(NSInteger number); +@property (nonatomic, strong) UIColor *numberBackgroundColor; +@property (nonatomic, strong) UIColor *numberTitleColor; +@property (nonatomic, assign) CGFloat numberLabelWidthIncrement; +@property (nonatomic, assign) CGFloat numberLabelHeight; +@property (nonatomic, strong) UIFont *numberLabelFont; +@property (nonatomic, assign) CGPoint numberLabelOffset; +@property (nonatomic, assign) BOOL shouldMakeRoundWhenSingleNumber; + +@end diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.m b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.m new file mode 100644 index 0000000..43a940a --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberCellModel.m @@ -0,0 +1,37 @@ +// +// JXCategoryNumberCellModel.m +// DQGuess +// +// Created by jiaxin on 2018/4/24. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryNumberCellModel.h" + +@implementation JXCategoryNumberCellModel + +- (void)setNumberString:(NSString *)numberString { + _numberString = numberString; + + [self updateNumberSizeWidthIfNeeded]; +} + +- (void)setNumberLabelHeight:(CGFloat)numberLabelHeight { + _numberLabelHeight = numberLabelHeight; + + [self updateNumberSizeWidthIfNeeded]; +} + +- (void)setNumberLabelFont:(UIFont *)numberLabelFont { + _numberLabelFont = numberLabelFont; + + [self updateNumberSizeWidthIfNeeded]; +} + +- (void)updateNumberSizeWidthIfNeeded { + if (self.numberLabelFont != nil) { + _numberStringWidth = [self.numberString boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, self.numberLabelHeight) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : self.numberLabelFont} context:nil].size.width; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.h b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.h new file mode 100644 index 0000000..af033a4 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.h @@ -0,0 +1,60 @@ +// +// JXCategoryNumberView.h +// DQGuess +// +// Created by jiaxin on 2018/4/9. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryTitleView.h" +#import "JXCategoryNumberCell.h" +#import "JXCategoryNumberCellModel.h" + +@interface JXCategoryNumberView : JXCategoryTitleView + +/** + 需要与titles的count对应 + */ +@property (nonatomic, strong) NSArray *counts; + +/** + 内部默认不会格式化数字,直接转成字符串显示。比如业务需要数字超过999显示999+,可以通过该block实现。 + */ +@property (nonatomic, copy) NSString *(^numberStringFormatterBlock)(NSInteger number); + +/** + numberLabel的font,默认:[UIFont systemFontOfSize:11] + */ +@property (nonatomic, strong) UIFont *numberLabelFont; + +/** + 数字的背景色,默认:[UIColor colorWithRed:241/255.0 green:147/255.0 blue:95/255.0 alpha:1] + */ +@property (nonatomic, strong) UIColor *numberBackgroundColor; + +/** + 数字的title颜色,默认:[UIColor whiteColor] + */ +@property (nonatomic, strong) UIColor *numberTitleColor; + +/** + numberLabel的宽度补偿,label真实的宽度是文字内容的宽度加上补偿的宽度,默认:10 + */ +@property (nonatomic, assign) CGFloat numberLabelWidthIncrement; + +/** + numberLabel的高度,默认:14 + */ +@property (nonatomic, assign) CGFloat numberLabelHeight; + +/** + numberLabel x,y方向的偏移 (+值:水平方向向右,竖直方向向下) + */ +@property (nonatomic, assign) CGPoint numberLabelOffset; + +/** +当是单一数字时,是否让numberLabel变成圆。即numberLabel的宽度等于高度,cornerRadius等于高度/2。当为true,单一数字时会忽略numberLabelWidthIncrement属性。默认为NO; +*/ +@property (nonatomic, assign) BOOL shouldMakeRoundWhenSingleNumber; + +@end diff --git a/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.m b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.m new file mode 100644 index 0000000..c7a7b40 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Number/JXCategoryNumberView.m @@ -0,0 +1,61 @@ +// +// JXCategoryNumberView.m +// DQGuess +// +// Created by jiaxin on 2018/4/9. +// Copyright © 2018年 jingbo. All rights reserved. +// + +#import "JXCategoryNumberView.h" + +@implementation JXCategoryNumberView + +- (void)dealloc { + self.numberStringFormatterBlock = nil; +} + +- (void)initializeData { + [super initializeData]; + + self.cellSpacing = 25; + _numberTitleColor = [UIColor whiteColor]; + _numberBackgroundColor = [UIColor colorWithRed:241/255.0 green:147/255.0 blue:95/255.0 alpha:1]; + _numberLabelHeight = 14; + _numberLabelWidthIncrement = 10; + _numberLabelFont = [UIFont systemFontOfSize:11]; + _shouldMakeRoundWhenSingleNumber = NO; +} + +- (Class)preferredCellClass { + return [JXCategoryNumberCell class]; +} + +- (void)refreshDataSource { + NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:self.titles.count]; + for (int i = 0; i < self.titles.count; i++) { + JXCategoryNumberCellModel *cellModel = [[JXCategoryNumberCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = [NSArray arrayWithArray:tempArray]; +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryNumberCellModel *myCellModel = (JXCategoryNumberCellModel *)cellModel; + myCellModel.count = [self.counts[index] integerValue]; + if (self.numberStringFormatterBlock != nil) { + myCellModel.numberString = self.numberStringFormatterBlock(myCellModel.count); + }else { + myCellModel.numberString = [NSString stringWithFormat:@"%ld", (long)myCellModel.count]; + } + myCellModel.numberBackgroundColor = self.numberBackgroundColor; + myCellModel.numberTitleColor = self.numberTitleColor; + myCellModel.numberLabelHeight = self.numberLabelHeight; + myCellModel.numberLabelOffset = self.numberLabelOffset; + myCellModel.numberLabelWidthIncrement = self.numberLabelWidthIncrement; + myCellModel.numberLabelFont = self.numberLabelFont; + myCellModel.shouldMakeRoundWhenSingleNumber = self.shouldMakeRoundWhenSingleNumber; +} + +@end diff --git a/Pods/JXCategoryView/Sources/PrivacyInfo.xcprivacy b/Pods/JXCategoryView/Sources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..9021190 --- /dev/null +++ b/Pods/JXCategoryView/Sources/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyAccessedAPITypes + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/Pods/JXCategoryView/Sources/RLTManager/RTLManager.h b/Pods/JXCategoryView/Sources/RLTManager/RTLManager.h new file mode 100644 index 0000000..6c0471e --- /dev/null +++ b/Pods/JXCategoryView/Sources/RLTManager/RTLManager.h @@ -0,0 +1,20 @@ +// +// RTLManager.h +// JXCategoryView +// +// Created by jiaxin on 2020/7/3. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface RTLManager : NSObject + ++ (BOOL)supportRTL; ++ (void)horizontalFlipView:(UIView *)view; ++ (void)horizontalFlipViewIfNeeded:(UIView *)view; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/RLTManager/RTLManager.m b/Pods/JXCategoryView/Sources/RLTManager/RTLManager.m new file mode 100644 index 0000000..9ce9eab --- /dev/null +++ b/Pods/JXCategoryView/Sources/RLTManager/RTLManager.m @@ -0,0 +1,26 @@ +// +// RTLManager.m +// JXCategoryView +// +// Created by jiaxin on 2020/7/3. +// + +#import "RTLManager.h" + +@implementation RTLManager + ++ (BOOL)supportRTL { + return [UIView userInterfaceLayoutDirectionForSemanticContentAttribute:UIView.appearance.semanticContentAttribute] == UIUserInterfaceLayoutDirectionRightToLeft; +} + ++ (void)horizontalFlipView:(UIView *)view { + view.transform = CGAffineTransformMakeScale(-1, 1); +} + ++ (void)horizontalFlipViewIfNeeded:(UIView *)view { + if ([self supportRTL]) { + [self horizontalFlipView:view]; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.h b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.h new file mode 100644 index 0000000..8ab54d6 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.h @@ -0,0 +1,27 @@ +// +// JXCategoryTitleCell.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorCell.h" +#import "JXCategoryViewDefines.h" +@class JXCategoryTitleCellModel; + +@interface JXCategoryTitleCell : JXCategoryIndicatorCell + +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UILabel *maskTitleLabel; +@property (nonatomic, strong) NSLayoutConstraint *titleLabelCenterX; +@property (nonatomic, strong) NSLayoutConstraint *titleLabelCenterY; +@property (nonatomic, strong) NSLayoutConstraint *maskTitleLabelCenterX; + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleZoomAnimationBlock:(JXCategoryTitleCellModel *)cellModel baseScale:(CGFloat)baseScale; + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleStrokeWidthAnimationBlock:(JXCategoryTitleCellModel *)cellModel attributedString:(NSMutableAttributedString *)attributedString; + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleColorAnimationBlock:(JXCategoryTitleCellModel *)cellModel; + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.m b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.m new file mode 100644 index 0000000..ae2b446 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCell.m @@ -0,0 +1,240 @@ +// +// JXCategoryTitleCell.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCell.h" +#import "JXCategoryTitleCellModel.h" +#import "JXCategoryFactory.h" +#import "RTLManager.h" + +@interface JXCategoryTitleCell () +@property (nonatomic, strong) CALayer *titleMaskLayer; +@property (nonatomic, strong) CALayer *maskTitleMaskLayer; +@property (nonatomic, strong) NSLayoutConstraint *maskTitleLabelCenterY; +@end + +@implementation JXCategoryTitleCell + +- (void)initializeViews { + [super initializeViews]; + + self.isAccessibilityElement = true; + self.accessibilityTraits = UIAccessibilityTraitButton; + _titleLabel = [[UILabel alloc] init]; + self.titleLabel.clipsToBounds = YES; + self.titleLabel.textAlignment = NSTextAlignmentCenter; + self.titleLabel.translatesAutoresizingMaskIntoConstraints = NO; + [self.contentView addSubview:self.titleLabel]; + + self.titleLabelCenterX = [self.titleLabel.centerXAnchor constraintEqualToAnchor:self.contentView.centerXAnchor constant:0]; + self.titleLabelCenterY = [self.titleLabel.centerYAnchor constraintEqualToAnchor:self.contentView.centerYAnchor constant:0]; + + _titleMaskLayer = [CALayer layer]; + self.titleMaskLayer.backgroundColor = [UIColor redColor].CGColor; + + _maskTitleLabel = [[UILabel alloc] init]; + self.maskTitleLabel.hidden = YES; + self.maskTitleLabel.translatesAutoresizingMaskIntoConstraints = NO; + self.maskTitleLabel.textAlignment = NSTextAlignmentCenter; + [self.contentView addSubview:self.maskTitleLabel]; + + self.maskTitleLabelCenterX = [self.maskTitleLabel.centerXAnchor constraintEqualToAnchor:self.contentView.centerXAnchor]; + self.maskTitleLabelCenterY = [self.maskTitleLabel.centerYAnchor constraintEqualToAnchor:self.contentView.centerYAnchor]; + + _maskTitleMaskLayer = [CALayer layer]; + self.maskTitleMaskLayer.backgroundColor = [UIColor redColor].CGColor; + self.maskTitleLabel.layer.mask = self.maskTitleMaskLayer; + + [NSLayoutConstraint activateConstraints:@[self.titleLabelCenterX, self.titleLabelCenterY, self.maskTitleLabelCenterX, self.maskTitleLabelCenterY]]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + JXCategoryTitleCellModel *myCellModel = (JXCategoryTitleCellModel *)self.cellModel; + switch (myCellModel.titleLabelAnchorPointStyle) { + case JXCategoryTitleLabelAnchorPointStyleCenter: { + self.titleLabel.layer.anchorPoint = CGPointMake(0.5, 0.5); + self.maskTitleLabel.layer.anchorPoint = CGPointMake(0.5, 0.5); + self.titleLabelCenterY.constant = 0 + myCellModel.titleLabelVerticalOffset; + break; + } + case JXCategoryTitleLabelAnchorPointStyleTop: { + self.titleLabel.layer.anchorPoint = CGPointMake(0.5, 0); + self.maskTitleLabel.layer.anchorPoint = CGPointMake(0.5, 0); + CGFloat percent = (myCellModel.titleLabelCurrentZoomScale - myCellModel.titleLabelNormalZoomScale)/(myCellModel.titleLabelSelectedZoomScale - myCellModel.titleLabelNormalZoomScale); + self.titleLabelCenterY.constant = -myCellModel.titleHeight/2 - myCellModel.titleLabelVerticalOffset - myCellModel.titleLabelZoomSelectedVerticalOffset*percent; + break; + } + case JXCategoryTitleLabelAnchorPointStyleBottom: { + self.titleLabel.layer.anchorPoint = CGPointMake(0.5, 1); + self.maskTitleLabel.layer.anchorPoint = CGPointMake(0.5, 1); + CGFloat percent = (myCellModel.titleLabelCurrentZoomScale - myCellModel.titleLabelNormalZoomScale)/(myCellModel.titleLabelSelectedZoomScale - myCellModel.titleLabelNormalZoomScale); + self.titleLabelCenterY.constant = myCellModel.titleHeight/2 + myCellModel.titleLabelVerticalOffset + myCellModel.titleLabelZoomSelectedVerticalOffset*percent; + break; + } + } +} + + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryTitleCellModel *myCellModel = (JXCategoryTitleCellModel *)cellModel; + self.accessibilityLabel = myCellModel.title; + self.titleLabel.numberOfLines = myCellModel.titleNumberOfLines; + self.maskTitleLabel.numberOfLines = myCellModel.titleNumberOfLines; + + if (myCellModel.isTitleLabelZoomEnabled) { + //先把font设置为缩放的最大值,再缩小到最小值,最后根据当前的titleLabelZoomScale值,进行缩放更新。这样就能避免transform从小到大时字体模糊 + UIFont *maxScaleFont = [UIFont fontWithDescriptor:myCellModel.titleFont.fontDescriptor size:myCellModel.titleFont.pointSize*myCellModel.titleLabelSelectedZoomScale]; + CGFloat baseScale = myCellModel.titleFont.lineHeight/maxScaleFont.lineHeight; + if (myCellModel.isSelectedAnimationEnabled && [self checkCanStartSelectedAnimation:myCellModel]) { + JXCategoryCellSelectedAnimationBlock block = [self preferredTitleZoomAnimationBlock:myCellModel baseScale:baseScale]; + [self addSelectedAnimationBlock:block]; + } else { + self.titleLabel.font = maxScaleFont; + self.maskTitleLabel.font = maxScaleFont; + CGAffineTransform currentTransform = CGAffineTransformMakeScale(baseScale*myCellModel.titleLabelCurrentZoomScale, baseScale*myCellModel.titleLabelCurrentZoomScale); + self.titleLabel.transform = currentTransform; + self.maskTitleLabel.transform = currentTransform; + } + } else { + if (myCellModel.isSelected) { + self.titleLabel.font = myCellModel.titleSelectedFont; + self.maskTitleLabel.font = myCellModel.titleSelectedFont; + } else { + self.titleLabel.font = myCellModel.titleFont; + self.maskTitleLabel.font = myCellModel.titleFont; + } + } + + NSString *titleString = myCellModel.title ? myCellModel.title : @""; + NSMutableAttributedString *attributedString = [[NSMutableAttributedString alloc] initWithString:titleString]; + if (myCellModel.isTitleLabelStrokeWidthEnabled) { + if (myCellModel.isSelectedAnimationEnabled && [self checkCanStartSelectedAnimation:myCellModel]) { + JXCategoryCellSelectedAnimationBlock block = [self preferredTitleStrokeWidthAnimationBlock:myCellModel attributedString:attributedString]; + [self addSelectedAnimationBlock:block]; + } else { + [attributedString addAttribute:NSStrokeWidthAttributeName value:@(myCellModel.titleLabelCurrentStrokeWidth) range:NSMakeRange(0, titleString.length)]; + self.titleLabel.attributedText = attributedString; + self.maskTitleLabel.attributedText = attributedString; + } + } else { + self.titleLabel.attributedText = attributedString; + self.maskTitleLabel.attributedText = attributedString; + } + + if (myCellModel.isTitleLabelMaskEnabled) { + self.maskTitleLabel.hidden = NO; + self.titleLabel.textColor = myCellModel.titleNormalColor; + self.maskTitleLabel.textColor = myCellModel.titleSelectedColor; + [self.contentView setNeedsLayout]; + [self.contentView layoutIfNeeded]; + + CGRect topMaskframe = myCellModel.backgroundViewMaskFrame; + //将相对于cell的backgroundViewMaskFrame转换为相对于maskTitleLabel + //使用self.bounds.size.width而不是self.contentView.bounds.size.width。因为某些情况下,会出现self.bounds是正确的,而self.contentView.bounds还是重用前的状态。 + topMaskframe.origin.y = 0; + CGRect bottomMaskFrame = topMaskframe; + CGFloat maskStartX = 0; + if (self.maskTitleLabel.bounds.size.width >= self.bounds.size.width) { + topMaskframe.origin.x -= (self.maskTitleLabel.bounds.size.width -self.bounds.size.width)/2; + bottomMaskFrame.size.width = self.maskTitleLabel.bounds.size.width; + maskStartX = -(self.maskTitleLabel.bounds.size.width -self.bounds.size.width)/2; + } else { + bottomMaskFrame.size.width = self.bounds.size.width; + topMaskframe.origin.x -= (self.bounds.size.width -self.maskTitleLabel.bounds.size.width)/2; + maskStartX = 0; + } + bottomMaskFrame.origin.x = topMaskframe.origin.x; + if (topMaskframe.origin.x > maskStartX) { + bottomMaskFrame.origin.x = topMaskframe.origin.x - bottomMaskFrame.size.width; + } else { + bottomMaskFrame.origin.x = CGRectGetMaxX(topMaskframe); + } + + // 适配RTL布局(镜像x值) + if ([RTLManager supportRTL]) { + topMaskframe.origin.x = self.maskTitleMaskLayer.superlayer.frame.size.width - CGRectGetMaxX(topMaskframe); + bottomMaskFrame.origin.x = self.titleMaskLayer.superlayer.frame.size.width - CGRectGetMaxX(bottomMaskFrame); + } + + [CATransaction begin]; + [CATransaction setDisableActions:YES]; + if (topMaskframe.size.width > 0 && CGRectIntersectsRect(topMaskframe, self.maskTitleLabel.frame)) { + self.titleLabel.layer.mask = self.titleMaskLayer; + self.maskTitleMaskLayer.frame = topMaskframe; + self.titleMaskLayer.frame = bottomMaskFrame; + } else { + self.maskTitleMaskLayer.frame = topMaskframe; + self.titleLabel.layer.mask = nil; + } + [CATransaction commit]; + } else { + self.maskTitleLabel.hidden = YES; + self.titleLabel.layer.mask = nil; + if (myCellModel.isSelectedAnimationEnabled && [self checkCanStartSelectedAnimation:myCellModel]) { + JXCategoryCellSelectedAnimationBlock block = [self preferredTitleColorAnimationBlock:myCellModel]; + [self addSelectedAnimationBlock:block]; + } else { + self.titleLabel.textColor = myCellModel.titleCurrentColor; + } + } + + [self startSelectedAnimationIfNeeded:myCellModel]; +} + +#pragma mark - Public + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleZoomAnimationBlock:(JXCategoryTitleCellModel *)cellModel baseScale:(CGFloat)baseScale { + __weak typeof(self) weakSelf = self; + return ^(CGFloat percent) { + if (cellModel.isSelected) { + //将要选中,scale从小到大插值渐变 + cellModel.titleLabelCurrentZoomScale = [JXCategoryFactory interpolationFrom:cellModel.titleLabelNormalZoomScale to:cellModel.titleLabelSelectedZoomScale percent:percent]; + } else { + //将要取消选中,scale从大到小插值渐变 + cellModel.titleLabelCurrentZoomScale = [JXCategoryFactory interpolationFrom:cellModel.titleLabelSelectedZoomScale to:cellModel.titleLabelNormalZoomScale percent:percent]; + } + CGAffineTransform currentTransform = CGAffineTransformMakeScale(baseScale*cellModel.titleLabelCurrentZoomScale, baseScale*cellModel.titleLabelCurrentZoomScale); + weakSelf.titleLabel.transform = currentTransform; + weakSelf.maskTitleLabel.transform = currentTransform; + }; +} + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleStrokeWidthAnimationBlock:(JXCategoryTitleCellModel *)cellModel attributedString:(NSMutableAttributedString *)attributedString { + __weak typeof(self) weakSelf = self; + return ^(CGFloat percent) { + if (cellModel.isSelected) { + //将要选中,StrokeWidth从小到大插值渐变 + cellModel.titleLabelCurrentStrokeWidth = [JXCategoryFactory interpolationFrom:cellModel.titleLabelNormalStrokeWidth to:cellModel.titleLabelSelectedStrokeWidth percent:percent]; + } else { + //将要取消选中,StrokeWidth从大到小插值渐变 + cellModel.titleLabelCurrentStrokeWidth = [JXCategoryFactory interpolationFrom:cellModel.titleLabelSelectedStrokeWidth to:cellModel.titleLabelNormalStrokeWidth percent:percent]; + } + [attributedString addAttribute:NSStrokeWidthAttributeName value:@(cellModel.titleLabelCurrentStrokeWidth) range:NSMakeRange(0, attributedString.string.length)]; + weakSelf.titleLabel.attributedText = attributedString; + weakSelf.maskTitleLabel.attributedText = attributedString; + }; +} + +- (JXCategoryCellSelectedAnimationBlock)preferredTitleColorAnimationBlock:(JXCategoryTitleCellModel *)cellModel { + __weak typeof(self) weakSelf = self; + return ^(CGFloat percent) { + if (cellModel.isSelected) { + //将要选中,textColor从titleNormalColor到titleSelectedColor插值渐变 + cellModel.titleCurrentColor = [JXCategoryFactory interpolationColorFrom:cellModel.titleNormalColor to:cellModel.titleSelectedColor percent:percent]; + } else { + //将要取消选中,textColor从titleSelectedColor到titleNormalColor插值渐变 + cellModel.titleCurrentColor = [JXCategoryFactory interpolationColorFrom:cellModel.titleSelectedColor to:cellModel.titleNormalColor percent:percent]; + } + weakSelf.titleLabel.textColor = cellModel.titleCurrentColor; + }; +} + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.h b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.h new file mode 100644 index 0000000..ea7a298 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.h @@ -0,0 +1,44 @@ +// +// JXCategoryTitleCellModel.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorCellModel.h" +#import +#import "JXCategoryViewDefines.h" + +@interface JXCategoryTitleCellModel : JXCategoryIndicatorCellModel + +@property (nonatomic, copy) NSString *title; + +@property (nonatomic, assign, readonly) CGFloat titleHeight; + +@property (nonatomic, assign) NSInteger titleNumberOfLines; +@property (nonatomic, assign) CGFloat titleLabelVerticalOffset; + +@property (nonatomic, strong) UIColor *titleNormalColor; +@property (nonatomic, strong) UIColor *titleCurrentColor; +@property (nonatomic, strong) UIColor *titleSelectedColor; + +@property (nonatomic, strong) UIFont *titleFont; +@property (nonatomic, strong) UIFont *titleSelectedFont; + +@property (nonatomic, assign, getter=isTitleLabelMaskEnabled) BOOL titleLabelMaskEnabled; +@property (nonatomic, assign, getter=isTitleLabelZoomEnabled) BOOL titleLabelZoomEnabled; + +@property (nonatomic, assign) CGFloat titleLabelNormalZoomScale; +@property (nonatomic, assign) CGFloat titleLabelCurrentZoomScale; +@property (nonatomic, assign) CGFloat titleLabelSelectedZoomScale; +@property (nonatomic, assign) CGFloat titleLabelZoomSelectedVerticalOffset; + +@property (nonatomic, assign, getter=isTitleLabelStrokeWidthEnabled) BOOL titleLabelStrokeWidthEnabled; +@property (nonatomic, assign) CGFloat titleLabelNormalStrokeWidth; +@property (nonatomic, assign) CGFloat titleLabelCurrentStrokeWidth; +@property (nonatomic, assign) CGFloat titleLabelSelectedStrokeWidth; + +@property (nonatomic, assign) JXCategoryTitleLabelAnchorPointStyle titleLabelAnchorPointStyle; + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.m b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.m new file mode 100644 index 0000000..bf0a27c --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleCellModel.m @@ -0,0 +1,31 @@ +// +// JXCategoryTitleCellModel.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCellModel.h" + +@implementation JXCategoryTitleCellModel + +- (void)setTitle:(NSString *)title { + _title = title; + + [self updateNumberSizeWidthIfNeeded]; +} + +- (void)setTitleFont:(UIFont *)titleFont { + _titleFont = titleFont; + + [self updateNumberSizeWidthIfNeeded]; +} + +- (void)updateNumberSizeWidthIfNeeded { + if (self.titleFont) { + _titleHeight = [self.title boundingRectWithSize:CGSizeMake(CGFLOAT_MAX, CGFLOAT_MAX) options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : self.titleFont} context:nil].size.height; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.h b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.h new file mode 100644 index 0000000..33af07b --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.h @@ -0,0 +1,63 @@ +// +// JXCategoryView.h +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryIndicatorView.h" +#import "JXCategoryTitleCell.h" +#import "JXCategoryTitleCellModel.h" +#import "JXCategoryViewDefines.h" + +@class JXCategoryTitleView; + +@protocol JXCategoryTitleViewDataSource +@optional +// 如果将JXCategoryTitleView嵌套进UITableView的cell,每次重用的时候,JXCategoryTitleView进行reloadData时,会重新计算所有的title宽度。所以该应用场景,需要UITableView的cellModel缓存titles的文字宽度,再通过该代理方法返回给JXCategoryTitleView。 +// 如果实现了该方法就以该方法返回的宽度为准,不触发内部默认的文字宽度计算。 +- (CGFloat)categoryTitleView:(JXCategoryTitleView *)titleView widthForTitle:(NSString *)title; +@end + + +@interface JXCategoryTitleView : JXCategoryIndicatorView + +@property (nonatomic, weak) id titleDataSource; + +@property (nonatomic, strong) NSArray *titles; + +@property (nonatomic, assign) NSInteger titleNumberOfLines; //默认:1 + +@property (nonatomic, strong) UIColor *titleColor; //默认:[UIColor blackColor] + +@property (nonatomic, strong) UIColor *titleSelectedColor; //默认:[UIColor redColor] + +@property (nonatomic, strong) UIFont *titleFont; //默认:[UIFont systemFontOfSize:15] + +@property (nonatomic, strong) UIFont *titleSelectedFont; //文字被选中的字体。默认:与titleFont一样 + +@property (nonatomic, assign, getter=isTitleColorGradientEnabled) BOOL titleColorGradientEnabled; //默认:NO,title的颜色是否渐变过渡 + +@property (nonatomic, assign, getter=isTitleLabelMaskEnabled) BOOL titleLabelMaskEnabled; //默认:NO,titleLabel是否遮罩过滤。 + +//----------------------titleLabelZoomEnabled-----------------------// +@property (nonatomic, assign, getter=isTitleLabelZoomEnabled) BOOL titleLabelZoomEnabled; //默认为NO。为YES时titleSelectedFont失效,以titleFont为准。 + +@property (nonatomic, assign, getter=isTitleLabelZoomScrollGradientEnabled) BOOL titleLabelZoomScrollGradientEnabled; //手势滚动中,是否需要更新状态。默认为YES + +@property (nonatomic, assign) CGFloat titleLabelZoomScale; //默认1.2,titleLabelZoomEnabled为YES才生效。是对字号的缩放,比如titleFont的pointSize为10,放大之后字号就是10*1.2=12。 + +@property (nonatomic, assign) CGFloat titleLabelZoomSelectedVerticalOffset; //titleLabelZoomEnabled设置为YES,会对titleLabel进行transform缩放,当titleLabelZoomScale过大时(比如设置为2),选中的文本被放大之后底部会有很大的空白,从视觉上看就跟其他未选中的文本不在一个水平线上。这个时候就可以用这个值进行调整。 + +//----------------------titleLabelStrokeWidth-----------------------// +@property (nonatomic, assign, getter=isTitleLabelStrokeWidthEnabled) BOOL titleLabelStrokeWidthEnabled; //默认:NO + +@property (nonatomic, assign) CGFloat titleLabelSelectedStrokeWidth; //默认:-3,用于控制字体的粗细(底层通过NSStrokeWidthAttributeName实现)。使用该属性,务必让titleFont和titleSelectedFont设置为一样的!!! + +//----------------------titleLabel缩放中心位置-----------------------// +@property (nonatomic, assign) CGFloat titleLabelVerticalOffset; //titleLabel锚点垂直方向的位置偏移,数值越大越偏离中心,默认为:0 + +@property (nonatomic, assign) JXCategoryTitleLabelAnchorPointStyle titleLabelAnchorPointStyle; //titleLabel锚点位置,用于调整titleLabel缩放时的基准位置。默认为:JXCategoryTitleLabelAnchorPointStyleCenter + +@end diff --git a/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.m b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.m new file mode 100644 index 0000000..ac2d5a0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/Title/JXCategoryTitleView.m @@ -0,0 +1,164 @@ +// +// JXCategoryView.m +// UI系列测试 +// +// Created by jiaxin on 2018/3/15. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleView.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryTitleView + +- (void)initializeData { + [super initializeData]; + + _titleNumberOfLines = 1; + _titleLabelZoomEnabled = NO; + _titleLabelZoomScale = 1.2; + _titleColor = [UIColor blackColor]; + _titleSelectedColor = [UIColor redColor]; + _titleFont = [UIFont systemFontOfSize:15]; + _titleColorGradientEnabled = NO; + _titleLabelMaskEnabled = NO; + _titleLabelZoomScrollGradientEnabled = YES; + _titleLabelStrokeWidthEnabled = NO; + _titleLabelSelectedStrokeWidth = -3; + _titleLabelVerticalOffset = 0; + _titleLabelAnchorPointStyle = JXCategoryTitleLabelAnchorPointStyleCenter; +} + +- (UIFont *)titleSelectedFont { + if (_titleSelectedFont) { + return _titleSelectedFont; + } + return self.titleFont; +} + +#pragma mark - Override + +- (Class)preferredCellClass { + return [JXCategoryTitleCell class]; +} + +- (void)refreshDataSource { + NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:self.titles.count]; + for (int i = 0; i < self.titles.count; i++) { + JXCategoryTitleCellModel *cellModel = [[JXCategoryTitleCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = [NSArray arrayWithArray:tempArray]; +} + +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel { + [super refreshSelectedCellModel:selectedCellModel unselectedCellModel:unselectedCellModel]; + + JXCategoryTitleCellModel *myUnselectedCellModel = (JXCategoryTitleCellModel *)unselectedCellModel; + JXCategoryTitleCellModel *myselectedCellModel = (JXCategoryTitleCellModel *)selectedCellModel; + if (self.isSelectedAnimationEnabled && (selectedCellModel.selectedType == JXCategoryCellSelectedTypeClick || selectedCellModel.selectedType == JXCategoryCellSelectedTypeCode)) { + //开启了动画过渡,且cell在屏幕内,current的属性值会在cell里面进行动画插值更新 + //1、当unselectedCell在屏幕外的时候,还是需要在这里更新值 + //2、当selectedCell在屏幕外的时候,还是需要在这里更新值(比如调用selectItemAtIndex方法选中的时候) + BOOL isUnselectedCellVisible = NO; + BOOL isSelectedCellVisible = NO; + NSArray *indexPaths = [self.collectionView indexPathsForVisibleItems]; + for (NSIndexPath *indexPath in indexPaths) { + if (indexPath.item == myUnselectedCellModel.index) { + isUnselectedCellVisible = YES; + continue; + } else if (indexPath.item == myselectedCellModel.index) { + isSelectedCellVisible = YES; + continue; + } + } + if (!isUnselectedCellVisible) { + //但是当unselectedCell在屏幕外时,不会在cell里面通过动画插值更新,在这里直接更新 + myUnselectedCellModel.titleCurrentColor = myUnselectedCellModel.titleNormalColor; + myUnselectedCellModel.titleLabelCurrentZoomScale = myUnselectedCellModel.titleLabelNormalZoomScale; + myUnselectedCellModel.titleLabelCurrentStrokeWidth = myUnselectedCellModel.titleLabelNormalStrokeWidth; + } + if (!isSelectedCellVisible) { + //但是当selectedCell在屏幕外时,不会在cell里面通过动画插值更新,在这里直接更新 + myselectedCellModel.titleCurrentColor = myselectedCellModel.titleSelectedColor; + myselectedCellModel.titleLabelCurrentZoomScale = myselectedCellModel.titleLabelSelectedZoomScale; + myselectedCellModel.titleLabelCurrentStrokeWidth = myselectedCellModel.titleLabelSelectedStrokeWidth; + } + } else { + //没有开启动画,可以直接更新属性 + myselectedCellModel.titleCurrentColor = myselectedCellModel.titleSelectedColor; + myselectedCellModel.titleLabelCurrentZoomScale = myselectedCellModel.titleLabelSelectedZoomScale; + myselectedCellModel.titleLabelCurrentStrokeWidth = myselectedCellModel.titleLabelSelectedStrokeWidth; + + myUnselectedCellModel.titleCurrentColor = myUnselectedCellModel.titleNormalColor; + myUnselectedCellModel.titleLabelCurrentZoomScale = myUnselectedCellModel.titleLabelNormalZoomScale; + myUnselectedCellModel.titleLabelCurrentStrokeWidth = myUnselectedCellModel.titleLabelNormalStrokeWidth; + } +} + +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio { + [super refreshLeftCellModel:leftCellModel rightCellModel:rightCellModel ratio:ratio]; + + JXCategoryTitleCellModel *leftModel = (JXCategoryTitleCellModel *)leftCellModel; + JXCategoryTitleCellModel *rightModel = (JXCategoryTitleCellModel *)rightCellModel; + + if (self.isTitleLabelZoomEnabled && self.isTitleLabelZoomScrollGradientEnabled) { + leftModel.titleLabelCurrentZoomScale = [JXCategoryFactory interpolationFrom:self.titleLabelZoomScale to:1.0 percent:ratio]; + rightModel.titleLabelCurrentZoomScale = [JXCategoryFactory interpolationFrom:1.0 to:self.titleLabelZoomScale percent:ratio]; + } + + if (self.isTitleLabelStrokeWidthEnabled) { + leftModel.titleLabelCurrentStrokeWidth = [JXCategoryFactory interpolationFrom:leftModel.titleLabelSelectedStrokeWidth to:leftModel.titleLabelNormalStrokeWidth percent:ratio]; + rightModel.titleLabelCurrentStrokeWidth = [JXCategoryFactory interpolationFrom:rightModel.titleLabelNormalStrokeWidth to:rightModel.titleLabelSelectedStrokeWidth percent:ratio]; + } + + if (self.isTitleColorGradientEnabled) { + leftModel.titleCurrentColor = [JXCategoryFactory interpolationColorFrom:self.titleSelectedColor to:self.titleColor percent:ratio]; + rightModel.titleCurrentColor = [JXCategoryFactory interpolationColorFrom:self.titleColor to:self.titleSelectedColor percent:ratio]; + } +} + +- (CGFloat)preferredCellWidthAtIndex:(NSInteger)index { + if (self.cellWidth == JXCategoryViewAutomaticDimension) { + if (self.titleDataSource && [self.titleDataSource respondsToSelector:@selector(categoryTitleView:widthForTitle:)]) { + return [self.titleDataSource categoryTitleView:self widthForTitle:self.titles[index]]; + } else { + return ceilf([self.titles[index] boundingRectWithSize:CGSizeMake(MAXFLOAT, self.bounds.size.height) options:NSStringDrawingUsesLineFragmentOrigin|NSStringDrawingUsesFontLeading attributes:@{NSFontAttributeName : self.titleFont} context:nil].size.width); + } + } else { + return self.cellWidth; + } +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryTitleCellModel *model = (JXCategoryTitleCellModel *)cellModel; + model.title = self.titles[index]; + model.titleNumberOfLines = self.titleNumberOfLines; + model.titleFont = self.titleFont; + model.titleSelectedFont = self.titleSelectedFont; + model.titleNormalColor = self.titleColor; + model.titleSelectedColor = self.titleSelectedColor; + model.titleLabelMaskEnabled = self.isTitleLabelMaskEnabled; + model.titleLabelZoomEnabled = self.isTitleLabelZoomEnabled; + model.titleLabelNormalZoomScale = 1; + model.titleLabelZoomSelectedVerticalOffset = self.titleLabelZoomSelectedVerticalOffset; + model.titleLabelSelectedZoomScale = self.titleLabelZoomScale; + model.titleLabelStrokeWidthEnabled = self.isTitleLabelStrokeWidthEnabled; + model.titleLabelNormalStrokeWidth = 0; + model.titleLabelSelectedStrokeWidth = self.titleLabelSelectedStrokeWidth; + model.titleLabelVerticalOffset = self.titleLabelVerticalOffset; + model.titleLabelAnchorPointStyle = self.titleLabelAnchorPointStyle; + if (index == self.selectedIndex) { + model.titleCurrentColor = model.titleSelectedColor; + model.titleLabelCurrentZoomScale = model.titleLabelSelectedZoomScale; + model.titleLabelCurrentStrokeWidth= model.titleLabelSelectedStrokeWidth; + }else { + model.titleCurrentColor = model.titleNormalColor; + model.titleLabelCurrentZoomScale = model.titleLabelNormalZoomScale; + model.titleLabelCurrentStrokeWidth = model.titleLabelNormalStrokeWidth; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.h b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.h new file mode 100644 index 0000000..e430a67 --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.h @@ -0,0 +1,15 @@ +// +// JXCategoryImageCell.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCell.h" + +@interface JXCategoryTitleImageCell : JXCategoryTitleCell + +@property (nonatomic, strong) UIImageView *imageView; + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.m b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.m new file mode 100644 index 0000000..ae6c39d --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCell.m @@ -0,0 +1,148 @@ +// +// JXCategoryImageCell.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleImageCell.h" +#import "JXCategoryTitleImageCellModel.h" + +@interface JXCategoryTitleImageCell() +@property (nonatomic, strong) id currentImageInfo; +@property (nonatomic, strong) NSString *currentImageName; +@property (nonatomic, strong) NSURL *currentImageURL; +@property (nonatomic, strong) UIStackView *stackView; +@property (nonatomic, strong) NSLayoutConstraint *imageViewWidthConstraint; +@property (nonatomic, strong) NSLayoutConstraint *imageViewHeightConstraint; +@end + +@implementation JXCategoryTitleImageCell + +- (void)prepareForReuse { + [super prepareForReuse]; + + self.currentImageInfo = nil; + self.currentImageName = nil; + self.currentImageURL = nil; +} + +- (void)initializeViews { + [super initializeViews]; + + [self.titleLabel removeFromSuperview]; + + _imageView = [[UIImageView alloc] init]; + self.imageView.translatesAutoresizingMaskIntoConstraints = NO; + self.imageView.contentMode = UIViewContentModeScaleAspectFit; + self.imageViewWidthConstraint = [self.imageView.widthAnchor constraintEqualToConstant:0]; + self.imageViewWidthConstraint.active = YES; + self.imageViewHeightConstraint = [self.imageView.heightAnchor constraintEqualToConstant:0]; + self.imageViewHeightConstraint.active = YES; + + _stackView = [[UIStackView alloc] init]; + self.stackView.alignment = UIStackViewAlignmentCenter; + [self.contentView addSubview:self.stackView]; + self.stackView.translatesAutoresizingMaskIntoConstraints = NO; + [self.stackView.centerXAnchor constraintEqualToAnchor:self.contentView.centerXAnchor].active = YES; + [self.stackView.centerYAnchor constraintEqualToAnchor:self.contentView.centerYAnchor].active = YES; +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryTitleImageCellModel *myCellModel = (JXCategoryTitleImageCellModel *)cellModel; + + self.titleLabel.hidden = NO; + self.imageView.hidden = NO; + [self.stackView removeArrangedSubview:self.titleLabel]; + [self.stackView removeArrangedSubview:self.imageView]; + CGSize imageSize = myCellModel.imageSize; + self.imageViewWidthConstraint.constant = imageSize.width; + self.imageViewHeightConstraint.constant = imageSize.height; + self.stackView.spacing = myCellModel.titleImageSpacing; + + switch (myCellModel.imageType) { + case JXCategoryTitleImageType_TopImage: { + self.stackView.axis = UILayoutConstraintAxisVertical; + [self.stackView addArrangedSubview:self.imageView]; + [self.stackView addArrangedSubview:self.titleLabel]; + break; + } + case JXCategoryTitleImageType_LeftImage: { + self.stackView.axis = UILayoutConstraintAxisHorizontal; + [self.stackView addArrangedSubview:self.imageView]; + [self.stackView addArrangedSubview:self.titleLabel]; + break; + } + case JXCategoryTitleImageType_BottomImage: { + self.stackView.axis = UILayoutConstraintAxisVertical; + [self.stackView addArrangedSubview:self.titleLabel]; + [self.stackView addArrangedSubview:self.imageView]; + break; + } + case JXCategoryTitleImageType_RightImage: { + self.stackView.axis = UILayoutConstraintAxisHorizontal; + [self.stackView addArrangedSubview:self.titleLabel]; + [self.stackView addArrangedSubview:self.imageView]; + break; + } + case JXCategoryTitleImageType_OnlyImage: { + self.titleLabel.hidden = YES; + [self.stackView addArrangedSubview:self.imageView]; + break; + } + case JXCategoryTitleImageType_OnlyTitle: { + self.imageView.hidden = YES; + [self.stackView addArrangedSubview:self.titleLabel]; + break; + } + } + + //因为`- (void)reloadData:(JXCategoryBaseCellModel *)cellModel`方法会回调多次,尤其是左右滚动的时候会调用无数次,如果每次都触发图片加载,会非常消耗性能。所以只会在图片发生了变化的时候,才进行图片加载。 + if (myCellModel.loadImageBlock != nil) { + id currentImageInfo = myCellModel.imageInfo; + if (myCellModel.isSelected) { + currentImageInfo = myCellModel.selectedImageInfo; + } + if (currentImageInfo && ![currentImageInfo isEqual:self.currentImageInfo]) { + self.currentImageInfo = currentImageInfo; + if (myCellModel.loadImageBlock) { + myCellModel.loadImageBlock(self.imageView, currentImageInfo); + } + } + }else { + NSString *currentImageName; + NSURL *currentImageURL; + if (myCellModel.imageName) { + currentImageName = myCellModel.imageName; + } else if (myCellModel.imageURL) { + currentImageURL = myCellModel.imageURL; + } + if (myCellModel.isSelected) { + if (myCellModel.selectedImageName) { + currentImageName = myCellModel.selectedImageName; + } else if (myCellModel.selectedImageURL) { + currentImageURL = myCellModel.selectedImageURL; + } + } + if (currentImageName && ![currentImageName isEqualToString:self.currentImageName]) { + self.currentImageName = currentImageName; + self.imageView.image = [UIImage imageNamed:currentImageName]; + } else if (currentImageURL && ![currentImageURL.absoluteString isEqualToString:self.currentImageURL.absoluteString]) { + self.currentImageURL = currentImageURL; + if (myCellModel.loadImageCallback) { + myCellModel.loadImageCallback(self.imageView, currentImageURL); + } + } + } + + if (myCellModel.isImageZoomEnabled) { + self.imageView.transform = CGAffineTransformMakeScale(myCellModel.imageZoomScale, myCellModel.imageZoomScale); + } else { + self.imageView.transform = CGAffineTransformIdentity; + } +} + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.h b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.h new file mode 100644 index 0000000..bd0111a --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.h @@ -0,0 +1,43 @@ +// +// JXCategoryTitleImageCellModel.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCellModel.h" + +typedef NS_ENUM(NSUInteger, JXCategoryTitleImageType) { + JXCategoryTitleImageType_TopImage = 0, + JXCategoryTitleImageType_LeftImage, + JXCategoryTitleImageType_BottomImage, + JXCategoryTitleImageType_RightImage, + JXCategoryTitleImageType_OnlyImage, + JXCategoryTitleImageType_OnlyTitle, +}; + +@interface JXCategoryTitleImageCellModel : JXCategoryTitleCellModel + +@property (nonatomic, assign) JXCategoryTitleImageType imageType; + +@property (nonatomic, strong) id imageInfo; +@property (nonatomic, strong) id selectedImageInfo; +@property (nonatomic, copy) void(^loadImageBlock)(UIImageView *imageView, id info); + +@property (nonatomic, assign) CGSize imageSize; //默认CGSizeMake(20, 20) + +@property (nonatomic, assign) CGFloat titleImageSpacing; //titleLabel和ImageView的间距,默认5 + +@property (nonatomic, assign, getter=isImageZoomEnabled) BOOL imageZoomEnabled; + +@property (nonatomic, assign) CGFloat imageZoomScale; + +/// 以下属性将会被弃用 +@property (nonatomic, copy) NSString *imageName; //加载bundle内的图片 +@property (nonatomic, strong) NSURL *imageURL; //图片URL +@property (nonatomic, copy) NSString *selectedImageName; +@property (nonatomic, strong) NSURL *selectedImageURL; +@property (nonatomic, copy) void(^loadImageCallback)(UIImageView *imageView, NSURL *imageURL); + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.m b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.m new file mode 100644 index 0000000..ecf3539 --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryTitleImageCellModel.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleImageCellModel.h" + +@implementation JXCategoryTitleImageCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.h b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.h new file mode 100644 index 0000000..9a48f43 --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.h @@ -0,0 +1,42 @@ +// +// JXCategoryTitleImageView.h +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleView.h" +#import "JXCategoryTitleImageCell.h" +#import "JXCategoryTitleImageCellModel.h" + +@interface JXCategoryTitleImageView : JXCategoryTitleView + +//imageInfo数组可以传入imageName字符串或者image的URL地址等,然后会通过loadImageBlock透传回来,把imageView对于图片的加载过程完全交给使用者决定。 +@property (nonatomic, strong) NSArray *imageInfoArray; +@property (nonatomic, strong) NSArray *selectedImageInfoArray; +@property (nonatomic, copy) void(^loadImageBlock)(UIImageView *imageView, id info); +//图片尺寸。默认CGSizeMake(20, 20) +@property (nonatomic, assign) CGSize imageSize; +//titleLabel和ImageView的间距,默认5 +@property (nonatomic, assign) CGFloat titleImageSpacing; +//图片是否缩放。默认为NO +@property (nonatomic, assign, getter=isImageZoomEnabled) BOOL imageZoomEnabled; +//图片缩放的最大scale。默认1.2,imageZoomEnabled为YES才生效 +@property (nonatomic, assign) CGFloat imageZoomScale; +//默认@[JXCategoryTitleImageType_LeftImage...] +@property (nonatomic, strong) NSArray *imageTypes; + +//下面的属性将会被弃用,请使用`imageInfoArray`、`selectedImageInfoArray`、`loadImageBlock`属性完成需求。 +//普通状态下的imageNames,通过[UIImage imageNamed:]方法加载 +@property (nonatomic, strong) NSArray *imageNames; +//选中状态下的imageNames,通过[UIImage imageNamed:]方法加载。可选 +@property (nonatomic, strong) NSArray *selectedImageNames; +//普通状态下的imageURLs,通过loadImageCallback回调加载 +@property (nonatomic, strong) NSArray *imageURLs; +//选中状态下的selectedImageURLs,通过loadImageCallback回调加载 +@property (nonatomic, strong) NSArray *selectedImageURLs; +//使用imageURL从远端下载图片进行加载,建议使用SDWebImage等第三方库进行下载。 +@property (nonatomic, copy) void(^loadImageCallback)(UIImageView *imageView, NSURL *imageURL); + +@end diff --git a/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.m b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.m new file mode 100644 index 0000000..ad2f560 --- /dev/null +++ b/Pods/JXCategoryView/Sources/TitleImage/JXCategoryTitleImageView.m @@ -0,0 +1,126 @@ +// +// JXCategoryTitleImageView.m +// JXCategoryView +// +// Created by jiaxin on 2018/8/8. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleImageView.h" +#import "JXCategoryTitleImageCell.h" +#import "JXCategoryTitleImageCellModel.h" +#import "JXCategoryFactory.h" + +@implementation JXCategoryTitleImageView + +- (void)dealloc { + self.loadImageBlock = nil; + self.loadImageCallback = nil; +} + +- (void)initializeData { + [super initializeData]; + + _imageSize = CGSizeMake(20, 20); + _titleImageSpacing = 5; + _imageZoomEnabled = NO; + _imageZoomScale = 1.2; +} + +- (Class)preferredCellClass { + return [JXCategoryTitleImageCell class]; +} + +- (void)refreshDataSource { + NSMutableArray *tempArray = [NSMutableArray arrayWithCapacity:self.titles.count]; + for (int i = 0; i < self.titles.count; i++) { + JXCategoryTitleImageCellModel *cellModel = [[JXCategoryTitleImageCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = [NSArray arrayWithArray:tempArray]; + + if (!self.imageTypes || (self.imageTypes.count == 0)) { + NSMutableArray *types = [NSMutableArray arrayWithCapacity:self.titles.count]; + for (int i = 0; i< self.titles.count; i++) { + [types addObject:@(JXCategoryTitleImageType_LeftImage)]; + } + self.imageTypes = [NSArray arrayWithArray:types]; + } +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryTitleImageCellModel *myCellModel = (JXCategoryTitleImageCellModel *)cellModel; + myCellModel.loadImageBlock = self.loadImageBlock; + myCellModel.loadImageCallback = self.loadImageCallback; + myCellModel.imageType = [self.imageTypes[index] integerValue]; + myCellModel.imageSize = self.imageSize; + myCellModel.titleImageSpacing = self.titleImageSpacing; + if (self.imageInfoArray && self.imageInfoArray.count != 0) { + myCellModel.imageInfo = self.imageInfoArray[index]; + }else if (self.imageNames && self.imageNames.count != 0) { + myCellModel.imageName = self.imageNames[index]; + }else if (self.imageURLs && self.imageURLs.count != 0) { + myCellModel.imageURL = self.imageURLs[index]; + } + if (self.selectedImageInfoArray && self.selectedImageInfoArray.count != 0) { + myCellModel.selectedImageInfo = self.selectedImageInfoArray[index]; + }else if (self.selectedImageNames && self.selectedImageNames.count != 0) { + myCellModel.selectedImageName = self.selectedImageNames[index]; + }else if (self.selectedImageURLs && self.selectedImageURLs.count != 0) { + myCellModel.selectedImageURL = self.selectedImageURLs[index]; + } + myCellModel.imageZoomEnabled = self.imageZoomEnabled; + myCellModel.imageZoomScale = ((index == self.selectedIndex) ? self.imageZoomScale : 1.0); +} + +- (void)refreshSelectedCellModel:(JXCategoryBaseCellModel *)selectedCellModel unselectedCellModel:(JXCategoryBaseCellModel *)unselectedCellModel { + [super refreshSelectedCellModel:selectedCellModel unselectedCellModel:unselectedCellModel]; + + JXCategoryTitleImageCellModel *myUnselectedCellModel = (JXCategoryTitleImageCellModel *)unselectedCellModel; + myUnselectedCellModel.imageZoomScale = 1.0; + + JXCategoryTitleImageCellModel *myselectedCellModel = (JXCategoryTitleImageCellModel *)selectedCellModel; + myselectedCellModel.imageZoomScale = self.imageZoomScale; +} + +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel rightCellModel:(JXCategoryBaseCellModel *)rightCellModel ratio:(CGFloat)ratio { + [super refreshLeftCellModel:leftCellModel rightCellModel:rightCellModel ratio:ratio]; + + JXCategoryTitleImageCellModel *leftModel = (JXCategoryTitleImageCellModel *)leftCellModel; + JXCategoryTitleImageCellModel *rightModel = (JXCategoryTitleImageCellModel *)rightCellModel; + + if (self.isImageZoomEnabled) { + leftModel.imageZoomScale = [JXCategoryFactory interpolationFrom:self.imageZoomScale to:1.0 percent:ratio]; + rightModel.imageZoomScale = [JXCategoryFactory interpolationFrom:1.0 to:self.imageZoomScale percent:ratio]; + } +} + +- (CGFloat)preferredCellWidthAtIndex:(NSInteger)index { + if (self.cellWidth == JXCategoryViewAutomaticDimension) { + CGFloat titleWidth = [super preferredCellWidthAtIndex:index]; + JXCategoryTitleImageType type = [self.imageTypes[index] integerValue]; + CGFloat cellWidth = 0; + switch (type) { + case JXCategoryTitleImageType_OnlyTitle: + cellWidth = titleWidth; + break; + case JXCategoryTitleImageType_OnlyImage: + cellWidth = self.imageSize.width; + break; + case JXCategoryTitleImageType_LeftImage: + case JXCategoryTitleImageType_RightImage: + cellWidth = titleWidth + self.titleImageSpacing + self.imageSize.width; + break; + case JXCategoryTitleImageType_TopImage: + case JXCategoryTitleImageType_BottomImage: + cellWidth = MAX(titleWidth, self.imageSize.width); + break; + } + return cellWidth; + } + return self.cellWidth; +} + +@end diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h new file mode 100644 index 0000000..804a6fb --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h @@ -0,0 +1,17 @@ +// +// JXCategoryTitleVerticalZoomCell.h +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCell.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JXCategoryTitleVerticalZoomCell : JXCategoryTitleCell + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m new file mode 100644 index 0000000..3d13438 --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m @@ -0,0 +1,45 @@ +// +// JXCategoryTitleVerticalZoomCell.m +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleVerticalZoomCell.h" +#import "JXCategoryTitleVerticalZoomCellModel.h" + +@implementation JXCategoryTitleVerticalZoomCell + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + + JXCategoryTitleVerticalZoomCellModel *myCellModel = (JXCategoryTitleVerticalZoomCellModel *)cellModel; + + if (myCellModel.isTitleLabelZoomEnabled) { + //先把font设置为缩放的最大值,再缩小到最小值,最后根据当前的titleLabelZoomScale值,进行缩放更新。这样就能避免transform从小到大时字体模糊 + UIFont *maxScaleFont = [UIFont fontWithDescriptor:myCellModel.titleFont.fontDescriptor size:myCellModel.titleFont.pointSize*myCellModel.maxVerticalFontScale]; + CGFloat baseScale = myCellModel.titleFont.lineHeight/maxScaleFont.lineHeight; + if (myCellModel.isSelectedAnimationEnabled && [self checkCanStartSelectedAnimation:myCellModel]) { + JXCategoryCellSelectedAnimationBlock block = [self preferredTitleZoomAnimationBlock:myCellModel baseScale:baseScale]; + [self addSelectedAnimationBlock:block]; + } else { + self.titleLabel.font = maxScaleFont; + self.maskTitleLabel.font = maxScaleFont; + CGAffineTransform currentTransform = CGAffineTransformMakeScale(baseScale*myCellModel.titleLabelCurrentZoomScale, baseScale*myCellModel.titleLabelCurrentZoomScale); + self.titleLabel.transform = currentTransform; + self.maskTitleLabel.transform = currentTransform; + } + } else { + if (myCellModel.isSelected) { + self.titleLabel.font = myCellModel.titleSelectedFont; + self.maskTitleLabel.font = myCellModel.titleSelectedFont; + }else { + self.titleLabel.font = myCellModel.titleFont; + self.maskTitleLabel.font = myCellModel.titleFont; + } + } + + [self.titleLabel sizeToFit]; +} +@end diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h new file mode 100644 index 0000000..3c7ea4b --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h @@ -0,0 +1,19 @@ +// +// JXCategoryTitleVerticalZoomCellModel.h +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleCellModel.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface JXCategoryTitleVerticalZoomCellModel : JXCategoryTitleCellModel + +@property (nonatomic, assign) CGFloat maxVerticalFontScale; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m new file mode 100644 index 0000000..3bf0ba0 --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m @@ -0,0 +1,13 @@ +// +// JXCategoryTitleVerticalZoomCellModel.m +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleVerticalZoomCellModel.h" + +@implementation JXCategoryTitleVerticalZoomCellModel + +@end diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h new file mode 100644 index 0000000..e3eb813 --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h @@ -0,0 +1,34 @@ +// +// JXCategoryTitleVerticalZoomView.h +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleView.h" + +NS_ASSUME_NONNULL_BEGIN + +/** + 垂直方向的缩放值范围:minVerticalFontScale~maxVerticalFontScale; + 垂直方向cellSpacing范围:minVerticalCellSpacing~maxVerticalCellSpacing,用于达到缩小时cell更加紧凑 + 根据UI设计师给你的参数,去多次尝试设置上面的值来达到同样的效果。多尝试几次就知道每个属性设置之后的效果。 + */ +@interface JXCategoryTitleVerticalZoomView : JXCategoryTitleView + +@property (nonatomic, assign) CGFloat maxVerticalFontScale; //垂直方向最大的缩放值 +@property (nonatomic, assign) CGFloat minVerticalFontScale; //垂直方向最小的缩放值 +@property (nonatomic, assign) CGFloat maxVerticalCellSpacing; //垂直方向最大的cellSpacing +@property (nonatomic, assign) CGFloat minVerticalCellSpacing; //垂直方向最小的cellSpacing + +/** + 当前列表滚动时,根据当前垂直方向categoryView高度变化的百分比,刷新布局 + + @param percent 当前垂直方向categoryView高度变化百分比 + */ +- (void)listDidScrollWithVerticalHeightPercent:(CGFloat)percent; + +@end + +NS_ASSUME_NONNULL_END diff --git a/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m new file mode 100644 index 0000000..b8fe745 --- /dev/null +++ b/Pods/JXCategoryView/Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m @@ -0,0 +1,94 @@ +// +// JXCategoryTitleVerticalZoomView.m +// JXCategoryView +// +// Created by jiaxin on 2019/2/14. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXCategoryTitleVerticalZoomView.h" +#import "JXCategoryTitleVerticalZoomCellModel.h" +#import "JXCategoryTitleVerticalZoomCell.h" +#import "JXCategoryFactory.h" + +@interface JXCategoryTitleVerticalZoomView () +@property (nonatomic, assign) CGFloat currentVerticalScale; //当前垂直方向的缩放基准值 +@end + +@implementation JXCategoryTitleVerticalZoomView + +- (void)initializeData { + [super initializeData]; + + _maxVerticalFontScale = 2; + _minVerticalFontScale = 1.3; + _currentVerticalScale = _maxVerticalFontScale; + self.cellWidthZoomEnabled = YES; + self.cellWidthZoomScale = _maxVerticalFontScale; + self.contentEdgeInsetLeft = 15; + self.titleLabelZoomScale = _currentVerticalScale; + self.titleLabelZoomEnabled = YES; + self.selectedAnimationEnabled = YES; + _maxVerticalCellSpacing = 20; + _minVerticalCellSpacing = 10; + self.cellSpacing = _maxVerticalCellSpacing; +} + +- (void)listDidScrollWithVerticalHeightPercent:(CGFloat)percent { + CGFloat currentScale = [JXCategoryFactory interpolationFrom:self.minVerticalFontScale to:self.maxVerticalFontScale percent:percent]; + BOOL shouldReloadData = NO; + if (self.currentVerticalScale != currentScale) { + //有变化才允许reloadData + shouldReloadData = YES; + } + self.currentVerticalScale = currentScale; + self.cellWidthZoomScale = currentScale; + self.cellSpacing = [JXCategoryFactory interpolationFrom:self.minVerticalCellSpacing to:self.maxVerticalCellSpacing percent:percent]; + if (shouldReloadData) { + [self refreshDataSource]; + [self refreshState]; + [self.collectionView.collectionViewLayout invalidateLayout]; + [self.collectionView reloadData]; + } +} + +- (void)setCurrentVerticalScale:(CGFloat)currentVerticalScale { + _currentVerticalScale = currentVerticalScale; + + self.titleLabelZoomScale = currentVerticalScale; +} + +- (void)setMaxVerticalCellSpacing:(CGFloat)maxVerticalCellSpacing { + _maxVerticalCellSpacing = maxVerticalCellSpacing; + + self.cellSpacing = maxVerticalCellSpacing; +} + +- (void)setMaxVerticalFontScale:(CGFloat)maxVerticalFontScale { + _maxVerticalFontScale = maxVerticalFontScale; + + self.titleLabelZoomScale = maxVerticalFontScale; + self.cellWidthZoomScale = maxVerticalFontScale; +} + +- (Class)preferredCellClass { + return [JXCategoryTitleVerticalZoomCell class]; +} + +- (void)refreshDataSource { + NSMutableArray *tempArray = [NSMutableArray array]; + for (int i = 0; i < self.titles.count; i++) { + JXCategoryTitleVerticalZoomCellModel *cellModel = [[JXCategoryTitleVerticalZoomCellModel alloc] init]; + [tempArray addObject:cellModel]; + } + self.dataSource = tempArray; +} + +- (void)refreshCellModel:(JXCategoryBaseCellModel *)cellModel index:(NSInteger)index { + [super refreshCellModel:cellModel index:index]; + + JXCategoryTitleVerticalZoomCellModel *model = (JXCategoryTitleVerticalZoomCellModel *)cellModel; + model.maxVerticalFontScale = self.maxVerticalFontScale; +} + +@end diff --git a/Pods/JXPagingView/LICENSE b/Pods/JXPagingView/LICENSE new file mode 100644 index 0000000..0fdb1e7 --- /dev/null +++ b/Pods/JXPagingView/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Pods/JXPagingView/README.md b/Pods/JXPagingView/README.md new file mode 100644 index 0000000..b8f2efd --- /dev/null +++ b/Pods/JXPagingView/README.md @@ -0,0 +1,294 @@ +# JXPagingView + +类似微博主页、简书主页、QQ联系人页面等效果。多页面嵌套,既可以上下滑动,也可以左右滑动切换页面。支持HeaderView悬浮、支持下拉刷新、上拉加载更多。 + +## 功能特点 + +- 支持OC与Swift; +- 支持列表懒加载,等到列表真正显示的时候才加载,而不是一次性加载所有列表; +- 支持首页下拉刷新、列表视图下拉刷新、列表视图上拉加载更多; +- 支持悬浮SectionHeader的垂直位置调整; +- 支持从顶部用力往上滚动,下面的列表会跟着滚动,而不会突然卡主,需要使用`JXPagerSmoothView`类; +- 列表封装简洁,只要遵从`JXPagingViewListViewDelegate`协议即可。UIView、UIViewController等都可以; +- 使用JXCategoryView/JXSegmentedView分类控制器,几乎支持所有主流效果、高度自定义、可灵活扩展; +- 支持横竖屏切换; +- 支持点击状态栏滚动当前列表到顶部; +- 支持列表显示和消失的生命周期方法; +- isListHorizontalScrollEnabled属性控制列表是否可以左右滑动,默认YES; +- 支持`FDFullscreenPopGesture`等全屏手势兼容处理; + +## 预览 + +| 效果 | 预览图 | +|-------|-------| +| **头图缩放**
参考[ZoomViewController](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagerViewExample-OC/JXPagerViewExample-OC/Example/Zoom/ZoomViewController.m)类 | ![Zoom](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/Zoom.gif) | +| **主页下拉刷新&列表上拉加载更多**
参考[RefreshViewController](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagerViewExample-OC/JXPagerViewExample-OC/Example/Refresh/RefreshViewController.m)类 | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/Refresh.gif) | +| **列表下拉刷新**
参考[ListRefreshViewController](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagerViewExample-OC/JXPagerViewExample-OC/Example/Refresh/ListRefreshViewController.m)类 | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/ListRefresh.gif) | +| **悬浮sectionHeader位置调整** | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/PinSectionHeaderPosition.gif) | +| **导航栏隐藏**
参考[NaviBarHiddenViewController](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagerViewExample-OC/JXPagerViewExample-OC/Example/NavigationBarHidden/NaviBarHiddenViewController.m)类 | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/NaviHidden.gif) | +| **CollectionView列表示例**
参考[CollectionViewViewController.swift](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagingViewExample/JXPagingViewExample/Example/CollectionView/CollectionViewViewController.swift)类
只有swift的demo工程有该示例 | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/CollectionViewList.gif) | +| **HeaderView更新高度示例**
参考[HeightChangeAnimationViewController.swift](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagingViewExample/JXPagingViewExample/Example/HeightChange/HeightChangeAnimationViewController.swift)类
只有swift demo工程才有该示例 | ![Refresh](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/HeaderViewHeightChange.gif) | +| **PagingView嵌套CategoryView**
参考[NestViewController](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagerViewExample-OC/JXPagerViewExample-OC/Example/Nest/NestViewController.m)类
只有 **OC!OC!OC!** 的demo工程才有该示例
操作比较特殊,如果需要此效果,
请认真参考源码,有问题多试试
参考NestViewController.h类 | ![Nest](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/Nest.gif) | +| **CategoryView嵌套PagingView**
参考[NestViewController.swift](https://github.com/pujiaxin33/JXPagingView/tree/master/Examples/JXPagingViewExample/JXPagingViewExample/Example/CategoryNestPaging/NestViewController.swift)类
只有 **Swift!Swift!Swift!** 的demo工程才有该示例
操作比较特殊,如果需要此效果,
请认真参考源码,有问题多试试
参考NestViewController.swift类 | ![Nest](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/CategoryNestPaging.gif) | +| **点击状态栏** | ![Zoom](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/StatusBarClicked.gif) | +| **横竖屏旋转** | ![Zoom](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/ScreenRotate.gif) | +| **JXPageListView**
顶部需要自定义cell的场景,类似于电商APP首页,滑动到列表最底部才是分类控制器
该效果是另一个库,点击查看[JXPageListView](https://github.com/pujiaxin33/JXPageListView)
该效果是另一个库,点击查看[JXPageListView](https://github.com/pujiaxin33/JXPageListView)
该效果是另一个库,点击查看[JXPageListView](https://github.com/pujiaxin33/JXPageListView) | ![list](https://github.com/pujiaxin33/JXPageListView/blob/master/JXPageListView/Gif/headerLoading.gif) | +| **JXPagerSmoothView**
类似淘宝、转转首页
从顶部用力往上滚动,下面的列表会继续滚动 | ![smooth](https://github.com/pujiaxin33/JXExampleImages/blob/master/JXPaingView/smooth.gif) | + +## 安装 + +### 手动 + +**Swift版本:** Clone代码,拖入JXPagingView-Swift文件夹,使用`JXPagingView`类; + +**OC版本:** Clone代码,拖入JXPagerView文件夹,使用`JXPagerView`类; + +### CocoaPods + +- **Swift版本** + +支持swift版本:5.0+ + +```ruby +target '' do + pod 'JXPagingView/Paging' +end +``` + +- **OC版本** +```ruby +target '' do + pod 'JXPagingView/Pager' +end +``` + +Swift与OC的仓库地址不一样,请注意选择! + +先`pod repo update`然后再`pod install` + + +## 使用 + +swift版本使用类似,只是类名及相关API更改为`JXPagingView`,具体细节请查看Swfit工程。 + +### 1、初始化`JXCategoryTitleView`和`JXPagerView` + +```Objective-C +self.categoryView = [[JXCategoryTitleView alloc] initWithFrame:frame]; +//配置categoryView,细节参考源码 + +self.pagerView = [[JXPagerView alloc] initWithDelegate:self]; +[self.view addSubview:self.pagerView]; + +//⚠️⚠️⚠️将pagerView的listContainerView和categoryView.listContainer进行关联,这样列表就可以和categoryView联动了。⚠️⚠️⚠️ +self.categoryView.listContainer = (id)self.pagerView.listContainerView; +``` + +**Swift版本列表关联代码** +```Swift +//给JXPagingListContainerView添加extension,表示遵从JXSegmentedViewListContainer的协议 +extension JXPagingListContainerView: JXSegmentedViewListContainer {} +//⚠️⚠️⚠️将pagingView的listContainerView和segmentedView.listContainer进行关联,这样列表就可以和categoryView联动了。⚠️⚠️⚠️ +segmentedView.listContainer = pagingView.listContainerView +``` + +### 2、实现`JXPagerViewDelegate`协议 + +```Objective-C +/** + 返回tableHeaderView的高度,因为内部需要比对判断,只能是整型数 + */ +- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { + return JXTableHeaderViewHeight; +} + +/** + 返回tableHeaderView + */ +- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { + return self.userHeaderView; +} + + +/** + 返回悬浮HeaderView的高度,因为内部需要比对判断,只能是整型数 + */ +- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return JXheightForHeaderInSection; +} + + +/** + 返回悬浮HeaderView + */ +- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return self.categoryView; +} + +/** + 返回列表的数量 + */ +- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { + //和categoryView的item数量一致 + return self.titles.count; +} + +/** + 根据index初始化一个对应列表实例。注意:一定要是新生成的实例!!! + 只要遵循JXPagerViewListViewDelegate即可,无论你返回的是UIView还是UIViewController都可以。 + */ +- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { + TestListBaseView *listView = [[TestListBaseView alloc] init]; + if (index == 0) { + listView.dataSource = @[@"橡胶火箭", @"橡胶火箭炮", @"橡胶机关枪"...].mutableCopy; + }else if (index == 1) { + listView.dataSource = @[@"吃烤肉", @"吃鸡腿肉", @"吃牛肉", @"各种肉"].mutableCopy; + }else { + listView.dataSource = @[@"【剑士】罗罗诺亚·索隆", @"【航海士】娜美", @"【狙击手】乌索普"...].mutableCopy; + } + [listView beginFirstRefresh]; + return listView; +} +``` + +### 3、实现`JXPagerViewListViewDelegate`协议 + +列表可以是任意类,UIView、UIViewController等等都可以,只要实现了`JXPagerViewListViewDelegate`协议就行。 + +⚠️⚠️⚠️一定要保证`scrollCallback`的正确回调,许多朋友都容易疏忽这一点,导致异常,务必重点注意! + +下面的使用代码参考的是`TestListBaseView`类 + +```Objective-C +/** + 返回listView。如果是vc包裹的就是vc.view;如果是自定义view包裹的,就是自定义view自己。 + */ +- (UIView *)listView { + return self; +} + +/** + 返回listView内部持有的UIScrollView或UITableView或UICollectionView + 主要用于mainTableView已经显示了header,listView的contentOffset需要重置时,内部需要访问到外部传入进来的listView内的scrollView + */ +- (UIScrollView *)listScrollView { + return self.tableView; +} + + +/** + 当listView内部持有的UIScrollView或UITableView或UICollectionView的代理方法`scrollViewDidScroll`回调时,需要调用该代理方法传入的callback + */ +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { + self.scrollCallback = callback; +} +``` + +### 4、列表回调处理 + +`TestListBaseView`在其`tableView`的滚动回调中,通过调用上面持有的scrollCallback,把列表的滚动事件回调给JXPagerView内部。 +```Objective-C +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + !self.scrollCallback ?: self.scrollCallback(scrollView); +} +``` + +## 实现原理 + +[实现原理](https://github.com/pujiaxin33/JXPagingView/blob/master/Document/JXPagingView%E5%8E%9F%E7%90%86.md) + +## `JXPagerSmoothView` + +如果你需要类似于**淘宝**、**转转**首页从顶部header用力往上滚动之后,下面的列表会跟着滚动的效果。因为`JXPagerView`的实现原理限制,当用户从顶部header的位置用力往上滚动,`JXPagerView`会在`JXCategoryView`刚好在顶部的时候突然停住。这个时候就需要使用`JXPagerSmoothView`,swift版本叫`JXPagingSmoothView`。 + +因为与`JXPagerView`的原理完全不同,所以各自会有一些特性的区别,但是从使用体验来说,是完全一致的。具体使用细节请参考demo示例。 + +实现原理参考[JXPagerSmoothView文章解析](https://juejin.im/post/5ddb2fe4f265da7def5424c7) + + +## 特殊说明 + +### JXCategoryView、JXSegmentedView +悬浮的HeaderView,用的是我写的:[OC版本-JXCategoryView](https://github.com/pujiaxin33/JXCategoryView) 、[Swift版本-JXSegmentedView](https://github.com/pujiaxin33/JXSegmentedView)。几乎实现了所有主流效果,而且非常容易自定义扩展,强烈推荐阅读。 + + +### 头图缩放说明 +头图缩放原理,参考这个库:[JXTableViewZoomHeaderImageView](https://github.com/pujiaxin33/JXTableViewZoomHeaderImageView) + +### 列表下拉刷新说明 + +需要使用`JXPagerListRefreshView`类(是`JXPagerView`的子类) + +### JXPagerListContainerType说明 + +UIScrollView:优势:没有其他副作用。劣势:实时的视图内存占用相对大一点,因为所有加载之后的列表视图都在视图层级里面。 +UICollectionView:优势:因为列表被添加到cell上,实时的视图内存占用更少,适合内存要求特别高的场景。劣势:因为cell重用机制的问题,导致列表被移除屏幕外之后,会被放入缓存区,而不存在于视图层级中。如果刚好你的列表使用了下拉刷新视图,在快速切换过程中,就会导致下拉刷新回调不成功的问题。(使用MJRefresh会出现此问题)一句话概括:使用CollectionView的时候,就不要让列表使用下拉刷新加载。 + +### 关于下方列表视图的代理方法`- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath`有时候需要点击两次才回调 + +出现步骤:当手指放在下方列表视图往下拉,直到TableHeaderView完全显示。 + +原因:经过上面的步骤之后,手指已经离开屏幕且列表视图已经完全静止,UIScrollView的isDragging属性却依然是true。就导致了后续的第一次点击,让系统认为当前UIScrollView依然在滚动,该点击就让UIScrollView停止下来,没有继续转发给UITableView,就没有转化成didSelectRow事件。 + +解决方案:经过N种尝试之后,还是没有回避掉系统的`isDragging`异常为true的bug。大家可以在自定义cell最下方放置一个与cell同大小的button,把button的touchUpInside事件当做`didSelectRow`的回调。因为UIButton在响应链中的优先级要高于UIGestureRecognizer。 + +代码:请参考`TestTableViewCell`类的配置。 + +### 指定默认选中index + +默认显示index=2的列表,代码如下: +``` +self.pagerView.defaultSelectedIndex = 2; +self.categoryView.defaultSelectedIndex = 2; +``` + +### 顶部轮播图手势处理 + +如果TableHeaderView添加了轮播图,获取其他可以横向滚动的UIScrollView。如果不处理,就会出现左右滚动轮播图的时候又可以触发整个页面的上下滚动。为了规避该问题,请参考示例仓库中`BannerViewController`类的处理方法。即可同一时间只允许左右滚动或者上下滚动。 + +### 关于列表用UIViewController封装且要支持横竖屏的tips + +在列表UIViewController类里面一定要加上下面这段代码:(不要问我为什么,我也不知道,谁知道系统内部是怎么操作的,反正加上就没毛病了) +``` +- (void)loadView { + self.view = [[UIView alloc] init]; +} +``` + +### `JXPagerSmoothView` header有UITextField或者`UITextView` +详情参考OC版本示例【滚动延续 Header有输入框】 + +列表自定义子类化`UITableView`或者`UICollectionView`,然后重载`scrollRectToVisible`方法,示例代码如下。 +```Object-C +@implementation TestTableView +- (void)scrollRectToVisible:(CGRect)rect animated:(BOOL)animated { + [self setContentOffset:CGPointMake(self.contentOffset.x, rect.origin.y) animated:animated]; +} +@end +``` + +### `FDFullscreenPopGesture`等全屏手势兼容处理 + +[全屏手势兼容处理文档,点击查看 ❗️❗️❗️](https://github.com/pujiaxin33/JXPagingView/blob/master/Document/%E5%85%A8%E5%B1%8F%E6%89%8B%E5%8A%BF%E5%A4%84%E7%90%86.md) + + +## 迁移指南 +- **0.0.9版本**:将下面两个API的返回值修改为了NSUInteger(swift版本为Int),之前版本是CGFloat,升级为0.0.9及以上的时候,记得修改一下使用地方的返回值类型,不然会引起crash。 + - `- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView` + - `- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView` +- **1.0.0版本**: + 删除代理方法`- (NSArray > *)listViewsInPagerView:(JXPagerView *)pagerView;`,请参考示例使用下面两个代理方法: + - `- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView;` + - `- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index;` +- **2.0.0版本**:`JXPagerListContainerView`进行了重构,列表拥有了完整的生命周期方法。列表是`UIViewController`类,`viewWillAppear`等生命周期方法将会正确触发。 +- + - 删除了collectionView,用`scrollView`属性替换。 + - 和`CategoryView`的联动绑定代码更新为`self.categoryView.listContainer = (id)self.pagerView.listContainerView;`。 + - `JXPagerView`新增`- (instancetype)initWithDelegate:(id)delegate listContainerType:(JXPagerListContainerType)type`初始化方法,可以指定列表容器为`UIScrollView`或者`UICollectionView`; + + +## 补充 + +有不明白的地方,建议多看下源码。再有疑问的,欢迎提Issue交流🤝 + + diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.h b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.h new file mode 100644 index 0000000..6287361 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.h @@ -0,0 +1,128 @@ +// +// JXCategoryListScrollView.h +// JXCategoryView +// +// Created by jiaxin on 2018/9/12. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +@class JXPagerListContainerView; +@class JXPagerListContainerScrollView; + +@protocol JXPagerViewListViewDelegate + +/** + 返回listView。如果是vc包裹的就是vc.view;如果是自定义view包裹的,就是自定义view自己。 + + @return UIView + */ +- (UIView *)listView; + +/** + 返回listView内部持有的UIScrollView或UITableView或UICollectionView + 主要用于mainTableView已经显示了header,listView的contentOffset需要重置时,内部需要访问到外部传入进来的listView内的scrollView + + @return listView内部持有的UIScrollView或UITableView或UICollectionView + */ +- (UIScrollView *)listScrollView; + +/** + 当listView内部持有的UIScrollView或UITableView或UICollectionView的代理方法`scrollViewDidScroll`回调时,需要调用该代理方法传入的callback + + @param callback `scrollViewDidScroll`回调时调用的callback + */ +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *scrollView))callback; + +@optional + +- (void)listScrollViewWillResetContentOffset; +- (void)listWillAppear; +- (void)listDidAppear; +- (void)listWillDisappear; +- (void)listDidDisappear; + +@end + +/** + 列表容器视图的类型 + + - ScrollView: UIScrollView。优势:没有其他副作用。劣势:实时的视图内存占用相对大一点,因为所有加载之后的列表视图都在视图层级里面。 + - CollectionView: 使用UICollectionView。优势:因为列表被添加到cell上,实时的视图内存占用更少,适合内存要求特别高的场景。劣势:因为cell重用机制的问题,导致列表被移除屏幕外之后,会被放入缓存区,而不存在于视图层级中。如果刚好你的列表使用了下拉刷新视图,在快速切换过程中,就会导致下拉刷新回调不成功的问题。一句话概括:使用CollectionView的时候,就不要让列表使用下拉刷新加载。 + */ +typedef NS_ENUM(NSUInteger, JXPagerListContainerType) { + JXPagerListContainerType_ScrollView, + JXPagerListContainerType_CollectionView, +}; + +@protocol JXPagerListContainerViewDelegate +/** + 返回list的数量 + + @param listContainerView 列表的容器视图 + @return list的数量 + */ +- (NSInteger)numberOfListsInlistContainerView:(JXPagerListContainerView *)listContainerView; + +/** + 根据index返回一个对应列表实例,需要是遵从`JXPagerViewListViewDelegate`协议的对象。 + 你可以代理方法调用的时候初始化对应列表,达到懒加载的效果。这也是默认推荐的初始化列表方法。你也可以提前创建好列表,等该代理方法回调的时候再返回也可以,达到预加载的效果。 + 如果列表是用自定义UIView封装的,就让自定义UIView遵从`JXPagerViewListViewDelegate`协议,该方法返回自定义UIView即可。 + 如果列表是用自定义UIViewController封装的,就让自定义UIViewController遵从`JXPagerViewListViewDelegate`协议,该方法返回自定义UIViewController即可。 + + @param listContainerView 列表的容器视图 + @param index 目标下标 + @return 遵从JXPagerViewListViewDelegate协议的list实例 + */ +- (id)listContainerView:(JXPagerListContainerView *)listContainerView initListForIndex:(NSInteger)index; + +@optional +/** + 返回自定义UIScrollView或UICollectionView的Class + 某些特殊情况需要自己处理UIScrollView内部逻辑。比如项目用了FDFullscreenPopGesture,需要处理手势相关代理。 + + @param listContainerView JXPagerListContainerView + @return 自定义UIScrollView实例 + */ +- (Class)scrollViewClassInlistContainerView:(JXPagerListContainerView *)listContainerView; + +/** + 控制能否初始化对应index的列表。有些业务需求,需要在某些情况才允许初始化某些列表,通过通过该代理实现控制。 + */ +- (BOOL)listContainerView:(JXPagerListContainerView *)listContainerView canInitListAtIndex:(NSInteger)index; +- (void)listContainerViewDidScroll:(UIScrollView *)scrollView; +- (void)listContainerViewWillBeginDragging:(JXPagerListContainerView *)listContainerView; +- (void)listContainerViewWDidEndScroll:(JXPagerListContainerView *)listContainerView; +- (void)listContainerView:(JXPagerListContainerView *)listContainerView listDidAppearAtIndex:(NSInteger)index; + +@end + +@interface JXPagerListContainerView : UIView + +@property (nonatomic, assign, readonly) JXPagerListContainerType containerType; +@property (nonatomic, strong, readonly) UIScrollView *scrollView; +@property (nonatomic, strong, readonly) NSDictionary > *validListDict; //已经加载过的列表字典。key是index,value是对应的列表 +@property (nonatomic, strong) UIColor *listCellBackgroundColor; //默认:[UIColor whiteColor] +/** + 滚动切换的时候,滚动距离超过一页的多少百分比,就触发列表的初始化。默认0.01(即列表显示了一点就触发加载)。范围0~1,开区间不包括0和1 + */ +@property (nonatomic, assign) CGFloat initListPercent; +///当使用Category嵌套Paging的时候,需要设置为YES,默认为NO; +@property (nonatomic, assign, getter=isCategoryNestPagingEnabled) BOOL categoryNestPagingEnabled; +@property (nonatomic, assign, readonly) NSInteger currentIndex; + +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; +- (instancetype)initWithType:(JXPagerListContainerType)type delegate:(id)delegate NS_DESIGNATED_INITIALIZER; + +@end + +@interface JXPagerListContainerView (ListContainer) +- (void)setDefaultSelectedIndex:(NSInteger)index; +- (UIScrollView *)contentScrollView; +- (void)reloadData; +- (void)scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio selectedIndex:(NSInteger)selectedIndex; +- (void)didClickSelectedItemAtIndex:(NSInteger)index; +@end + diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.m b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.m new file mode 100644 index 0000000..14358b7 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListContainerView.m @@ -0,0 +1,597 @@ +// +// JXPagerListContainerView.m +// JXCategoryView +// +// Created by jiaxin on 2018/9/12. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXPagerListContainerView.h" +#import + +@interface JXPagerListContainerScrollView: UIScrollView +@property (nonatomic, assign, getter=isCategoryNestPagingEnabled) BOOL categoryNestPagingEnabled; +@end +@implementation JXPagerListContainerScrollView +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + if (self.isCategoryNestPagingEnabled) { + if ([gestureRecognizer isMemberOfClass:NSClassFromString(@"UIScrollViewPanGestureRecognizer")]) { + CGFloat velocityX = [(UIPanGestureRecognizer *)gestureRecognizer velocityInView:gestureRecognizer.view].x; + //x大于0就是往右滑 + if (velocityX > 0) { + if (self.contentOffset.x == 0) { + return NO; + } + }else if (velocityX < 0) { + //x小于0就是往左滑 + if (self.contentOffset.x + self.bounds.size.width == self.contentSize.width) { + return NO; + } + } + } + } + return YES; +} +@end + +@interface JXPagerListContainerCollectionView: UICollectionView +@property (nonatomic, assign, getter=isCategoryNestPagingEnabled) BOOL categoryNestPagingEnabled; +@end +@implementation JXPagerListContainerCollectionView +- (BOOL)gestureRecognizerShouldBegin:(UIGestureRecognizer *)gestureRecognizer { + if (self.isCategoryNestPagingEnabled) { + if ([gestureRecognizer isMemberOfClass:NSClassFromString(@"UIScrollViewPanGestureRecognizer")]) { + CGFloat velocityX = [(UIPanGestureRecognizer *)gestureRecognizer velocityInView:gestureRecognizer.view].x; + //x大于0就是往右滑 + if (velocityX > 0) { + if (self.contentOffset.x == 0) { + return NO; + } + }else if (velocityX < 0) { + //x小于0就是往左滑 + if (self.contentOffset.x + self.bounds.size.width == self.contentSize.width) { + return NO; + } + } + } + } + return YES; +} +@end + +@interface JXPagerListContainerViewController : UIViewController +@property (copy) void(^viewWillAppearBlock)(void); +@property (copy) void(^viewDidAppearBlock)(void); +@property (copy) void(^viewWillDisappearBlock)(void); +@property (copy) void(^viewDidDisappearBlock)(void); +@end + +@implementation JXPagerListContainerViewController +- (void)dealloc +{ + self.viewWillAppearBlock = nil; + self.viewDidAppearBlock = nil; + self.viewWillDisappearBlock = nil; + self.viewDidDisappearBlock = nil; +} +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + self.viewWillAppearBlock(); +} +- (void)viewDidAppear:(BOOL)animated { + [super viewDidAppear:animated]; + self.viewDidAppearBlock(); +} +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + self.viewWillDisappearBlock(); +} +- (void)viewDidDisappear:(BOOL)animated { + [super viewDidDisappear:animated]; + self.viewDidDisappearBlock(); +} +- (BOOL)shouldAutomaticallyForwardAppearanceMethods { return NO; } +@end + +@interface JXPagerListContainerView () +@property (nonatomic, weak) id delegate; +@property (nonatomic, strong) UIScrollView *scrollView; +@property (nonatomic, assign) NSInteger currentIndex; +@property (nonatomic, strong) NSMutableDictionary > *validListDict; +@property (nonatomic, assign) NSInteger willAppearIndex; +@property (nonatomic, assign) NSInteger willDisappearIndex; +@property (nonatomic, strong) UICollectionView *collectionView; +@property (nonatomic, strong) JXPagerListContainerViewController *containerVC; +@end + +@implementation JXPagerListContainerView + +- (instancetype)initWithType:(JXPagerListContainerType)type delegate:(id)delegate{ + self = [super initWithFrame:CGRectZero]; + if (self) { + _containerType = type; + _delegate = delegate; + _validListDict = [NSMutableDictionary dictionary]; + _willAppearIndex = -1; + _willDisappearIndex = -1; + _initListPercent = 0.01; + [self initializeViews]; + } + return self; +} + +- (void)initializeViews { + _listCellBackgroundColor = [UIColor whiteColor]; + _containerVC = [[JXPagerListContainerViewController alloc] init]; + self.containerVC.view.backgroundColor = [UIColor clearColor]; + [self addSubview:self.containerVC.view]; + __weak typeof(self) weakSelf = self; + self.containerVC.viewWillAppearBlock = ^{ + [weakSelf listWillAppear:weakSelf.currentIndex]; + }; + self.containerVC.viewDidAppearBlock = ^{ + [weakSelf listDidAppear:weakSelf.currentIndex]; + }; + self.containerVC.viewWillDisappearBlock = ^{ + [weakSelf listWillDisappear:weakSelf.currentIndex]; + }; + self.containerVC.viewDidDisappearBlock = ^{ + [weakSelf listDidDisappear:weakSelf.currentIndex]; + }; + if (self.containerType == JXPagerListContainerType_ScrollView) { + if (self.delegate && + [self.delegate respondsToSelector:@selector(scrollViewClassInlistContainerView:)] && + [[self.delegate scrollViewClassInlistContainerView:self] isKindOfClass:object_getClass([UIScrollView class])]) { + _scrollView = (UIScrollView *)[[[self.delegate scrollViewClassInlistContainerView:self] alloc] init]; + }else { + _scrollView = [[JXPagerListContainerScrollView alloc] init]; + } + self.scrollView.backgroundColor = [UIColor clearColor]; + self.scrollView.delegate = self; + self.scrollView.pagingEnabled = YES; + self.scrollView.showsHorizontalScrollIndicator = NO; + self.scrollView.showsVerticalScrollIndicator = NO; + self.scrollView.scrollsToTop = NO; + self.scrollView.bounces = NO; + if (@available(iOS 11.0, *)) { + self.scrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [self.containerVC.view addSubview:self.scrollView]; + }else { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 0; + if (self.delegate && + [self.delegate respondsToSelector:@selector(scrollViewClassInlistContainerView:)] && + [[self.delegate scrollViewClassInlistContainerView:self] isKindOfClass:object_getClass([UICollectionView class])]) { + _collectionView = (UICollectionView *)[[[self.delegate scrollViewClassInlistContainerView:self] alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + }else { + _collectionView = [[JXPagerListContainerCollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + } + self.collectionView.backgroundColor = [UIColor clearColor]; + self.collectionView.pagingEnabled = YES; + self.collectionView.showsHorizontalScrollIndicator = NO; + self.collectionView.showsVerticalScrollIndicator = NO; + self.collectionView.scrollsToTop = NO; + self.collectionView.bounces = NO; + self.collectionView.dataSource = self; + self.collectionView.delegate = self; + [self.collectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:@"cell"]; + if (@available(iOS 10.0, *)) { + self.collectionView.prefetchingEnabled = NO; + } + if (@available(iOS 11.0, *)) { + self.collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + [self.containerVC.view addSubview:self.collectionView]; + //让外部统一访问scrollView + _scrollView = _collectionView; + } +} + +- (void)willMoveToSuperview:(UIView *)newSuperview { + [super willMoveToSuperview:newSuperview]; + + UIResponder *next = newSuperview; + while (next != nil) { + if ([next isKindOfClass:[UIViewController class]]) { + [((UIViewController *)next) addChildViewController:self.containerVC]; + break; + } + next = next.nextResponder; + } +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + self.containerVC.view.frame = self.bounds; + if (self.containerType == JXPagerListContainerType_ScrollView) { + if (CGRectEqualToRect(self.scrollView.frame, CGRectZero) || !CGSizeEqualToSize(self.scrollView.bounds.size, self.bounds.size)) { + self.scrollView.frame = self.bounds; + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + [_validListDict enumerateKeysAndObjectsUsingBlock:^(NSNumber * _Nonnull index, id _Nonnull list, BOOL * _Nonnull stop) { + [list listView].frame = CGRectMake(index.intValue*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + }]; + self.scrollView.contentOffset = CGPointMake(self.currentIndex*self.scrollView.bounds.size.width, 0); + }else { + self.scrollView.frame = self.bounds; + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + } + }else { + if (CGRectEqualToRect(self.collectionView.frame, CGRectZero) || !CGSizeEqualToSize(self.collectionView.bounds.size, self.bounds.size)) { + self.collectionView.frame = self.bounds; + [self.collectionView.collectionViewLayout invalidateLayout]; + [self.collectionView reloadData]; + [self.collectionView setContentOffset:CGPointMake(self.collectionView.bounds.size.width*self.currentIndex, 0) animated:NO]; + }else { + self.collectionView.frame = self.bounds; + } + } +} + + +- (void)setinitListPercent:(CGFloat)initListPercent { + _initListPercent = initListPercent; + if (initListPercent <= 0 || initListPercent >= 1) { + NSAssert(NO, @"initListPercent值范围为开区间(0,1),即不包括0和1"); + } +} + +- (void)setCategoryNestPagingEnabled:(BOOL)categoryNestPagingEnabled { + _categoryNestPagingEnabled = categoryNestPagingEnabled; + if ([self.scrollView isKindOfClass:[JXPagerListContainerScrollView class]]) { + ((JXPagerListContainerScrollView *)self.scrollView).categoryNestPagingEnabled = categoryNestPagingEnabled; + }else if ([self.scrollView isKindOfClass:[JXPagerListContainerCollectionView class]]) { + ((JXPagerListContainerCollectionView *)self.scrollView).categoryNestPagingEnabled = categoryNestPagingEnabled; + } +} + +#pragma mark - UICollectionViewDelegate, UICollectionViewDataSource + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return [self.delegate numberOfListsInlistContainerView:self]; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"cell" forIndexPath:indexPath]; + cell.contentView.backgroundColor = self.listCellBackgroundColor; + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + id list = _validListDict[@(indexPath.item)]; + if (list != nil) { + //fixme:如果list是UIViewController,如果这里的frame修改是`[list listView].frame = cell.bounds;`。那么就必须给list vc添加如下代码: + //- (void)loadView { + // self.view = [[UIView alloc] init]; + //} + //所以,总感觉是把UIViewController当做普通view使用,导致了系统内部的bug。所以,缓兵之计就是用下面的方法,暂时解决问题。 + if ([list isKindOfClass:[UIViewController class]]) { + [list listView].frame = cell.contentView.bounds; + } else { + [list listView].frame = cell.bounds; + } + [cell.contentView addSubview:[list listView]]; + } + return cell; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return self.bounds.size; +} + +#pragma mark - UIScrollViewDelegate + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewDidScroll:)]) { + [self.delegate listContainerViewDidScroll:scrollView]; + } + if (!scrollView.isDragging && !scrollView.isTracking && !scrollView.isDecelerating) { + return; + } + CGFloat ratio = scrollView.contentOffset.x/scrollView.bounds.size.width; + NSInteger maxCount = round(scrollView.contentSize.width/scrollView.bounds.size.width); + NSInteger leftIndex = floorf(ratio); + leftIndex = MAX(0, MIN(maxCount - 1, leftIndex)); + NSInteger rightIndex = leftIndex + 1; + if (ratio < 0 || rightIndex >= maxCount) { + [self listDidAppearOrDisappear:scrollView]; + return; + } + CGFloat remainderRatio = ratio - leftIndex; + if (rightIndex == self.currentIndex) { + //当前选中的在右边,用户正在从右边往左边滑动 + if (self.validListDict[@(leftIndex)] == nil && remainderRatio < (1 - self.initListPercent)) { + [self initListIfNeededAtIndex:leftIndex]; + }else if (self.validListDict[@(leftIndex)] != nil) { + if (self.willAppearIndex == -1) { + self.willAppearIndex = leftIndex; + [self listWillAppear:self.willAppearIndex]; + } + } + if (self.willDisappearIndex == -1) { + self.willDisappearIndex = rightIndex; + [self listWillDisappear:self.willDisappearIndex]; + } + }else { + //当前选中的在左边,用户正在从左边往右边滑动 + if (self.validListDict[@(rightIndex)] == nil && remainderRatio > self.initListPercent) { + [self initListIfNeededAtIndex:rightIndex]; + }else if (self.validListDict[@(rightIndex)] != nil) { + if (self.willAppearIndex == -1) { + self.willAppearIndex = rightIndex; + [self listWillAppear:self.willAppearIndex]; + } + } + if (self.willDisappearIndex == -1) { + self.willDisappearIndex = leftIndex; + [self listWillDisappear:self.willDisappearIndex]; + } + } + [self listDidAppearOrDisappear:scrollView]; +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + if (self.willDisappearIndex != -1) { + [self listWillAppear:self.willDisappearIndex]; + [self listWillDisappear:self.willAppearIndex]; + [self listDidAppear:self.willDisappearIndex]; + [self listDidDisappear:self.willAppearIndex]; + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWDidEndScroll:)]) { + [self.delegate listContainerViewWDidEndScroll:self]; + } +} + +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWillBeginDragging:)]) { + [self.delegate listContainerViewWillBeginDragging:self]; + } +} + +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { + if (!decelerate) { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWDidEndScroll:)]) { + [self.delegate listContainerViewWDidEndScroll:self]; + } + } +} + +- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerViewWDidEndScroll:)]) { + [self.delegate listContainerViewWDidEndScroll:self]; + } +} + +#pragma mark - JXCategoryViewListContainer + +- (UIScrollView *)contentScrollView { + return self.scrollView; +} + +- (void)setDefaultSelectedIndex:(NSInteger)index { + self.currentIndex = index; +} + +- (void)scrollingFromLeftIndex:(NSInteger)leftIndex toRightIndex:(NSInteger)rightIndex ratio:(CGFloat)ratio selectedIndex:(NSInteger)selectedIndex { +} + +- (void)didClickSelectedItemAtIndex:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + self.willAppearIndex = -1; + self.willDisappearIndex = -1; + if (self.currentIndex != index) { + [self listWillDisappear:self.currentIndex]; + [self listDidDisappear:self.currentIndex]; + [self listWillAppear:index]; + [self listDidAppear:index]; + } +} + +- (void)reloadData { + for (id list in _validListDict.allValues) { + [[list listView] removeFromSuperview]; + if ([list isKindOfClass:[UIViewController class]]) { + [(UIViewController *)list removeFromParentViewController]; + } + } + [_validListDict removeAllObjects]; + + if (self.containerType == JXPagerListContainerType_ScrollView) { + self.scrollView.contentSize = CGSizeMake(self.scrollView.bounds.size.width*[self.delegate numberOfListsInlistContainerView:self], self.scrollView.bounds.size.height); + }else { + [self.collectionView reloadData]; + } + [self listWillAppear:self.currentIndex]; + [self listDidAppear:self.currentIndex]; +} + +#pragma mark - Private + +- (void)initListIfNeededAtIndex:(NSInteger)index { + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerView:canInitListAtIndex:)]) { + BOOL canInitList = [self.delegate listContainerView:self canInitListAtIndex:index]; + if (!canInitList) { + return; + } + } + id list = _validListDict[@(index)]; + if (list != nil) { + //列表已经创建好了 + return; + } + list = [self.delegate listContainerView:self initListForIndex:index]; + if ([list isKindOfClass:[UIViewController class]]) { + [self.containerVC addChildViewController:(UIViewController *)list]; + } + _validListDict[@(index)] = list; + + switch (self.containerType) { + case JXPagerListContainerType_ScrollView: { + [list listView].frame = CGRectMake(index*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + [self.scrollView addSubview:[list listView]]; + break; + } + case JXPagerListContainerType_CollectionView: { + UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + if (cell != nil) { + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + [list listView].frame = cell.contentView.bounds; + [cell.contentView addSubview:[list listView]]; + } + break; + } + + } +} + +- (void)listWillAppear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list != nil) { + if (list && [list respondsToSelector:@selector(listWillAppear)]) { + [list listWillAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:YES animated:NO]; + } + }else { + //当前列表未被创建(页面初始化或通过点击触发的listWillAppear) + BOOL canInitList = YES; + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerView:canInitListAtIndex:)]) { + canInitList = [self.delegate listContainerView:self canInitListAtIndex:index]; + } + if (canInitList) { + id list = _validListDict[@(index)]; + if (list == nil) { + list = [self.delegate listContainerView:self initListForIndex:index]; + if ([list isKindOfClass:[UIViewController class]]) { + [self.containerVC addChildViewController:(UIViewController *)list]; + } + _validListDict[@(index)] = list; + } + if (self.containerType == JXPagerListContainerType_ScrollView) { + if ([list listView].superview == nil) { + [list listView].frame = CGRectMake(index*self.scrollView.bounds.size.width, 0, self.scrollView.bounds.size.width, self.scrollView.bounds.size.height); + [self.scrollView addSubview:[list listView]]; + + if (list && [list respondsToSelector:@selector(listWillAppear)]) { + [list listWillAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:YES animated:NO]; + } + } + }else { + UICollectionViewCell *cell = [self.collectionView cellForItemAtIndexPath:[NSIndexPath indexPathForItem:index inSection:0]]; + for (UIView *subview in cell.contentView.subviews) { + [subview removeFromSuperview]; + } + [list listView].frame = cell.contentView.bounds; + [cell.contentView addSubview:[list listView]]; + + if (list && [list respondsToSelector:@selector(listWillAppear)]) { + [list listWillAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:YES animated:NO]; + } + } + } + } +} + +- (void)listDidAppear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + self.currentIndex = index; + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidAppear)]) { + [list listDidAppear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC endAppearanceTransition]; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(listContainerView:listDidAppearAtIndex:)]) { + [self.delegate listContainerView:self listDidAppearAtIndex:index]; + } +} + +- (void)listWillDisappear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listWillDisappear)]) { + [list listWillDisappear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC beginAppearanceTransition:NO animated:NO]; + } +} + +- (void)listDidDisappear:(NSInteger)index { + if (![self checkIndexValid:index]) { + return; + } + id list = _validListDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidDisappear)]) { + [list listDidDisappear]; + } + if ([list isKindOfClass:[UIViewController class]]) { + UIViewController *listVC = (UIViewController *)list; + [listVC endAppearanceTransition]; + } +} + +- (BOOL)checkIndexValid:(NSInteger)index { + NSUInteger count = [self.delegate numberOfListsInlistContainerView:self]; + if (count <= 0 || index >= count) { + return NO; + } + return YES; +} + +- (void)listDidAppearOrDisappear:(UIScrollView *)scrollView { + CGFloat currentIndexPercent = scrollView.contentOffset.x/scrollView.bounds.size.width; + if (self.willAppearIndex != -1 || self.willDisappearIndex != -1) { + NSInteger disappearIndex = self.willDisappearIndex; + NSInteger appearIndex = self.willAppearIndex; + if (self.willAppearIndex > self.willDisappearIndex) { + //将要出现的列表在右边 + if (currentIndexPercent >= self.willAppearIndex) { + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + [self listDidDisappear:disappearIndex]; + [self listDidAppear:appearIndex]; + } + }else { + //将要出现的列表在左边 + if (currentIndexPercent <= self.willAppearIndex) { + self.willDisappearIndex = -1; + self.willAppearIndex = -1; + [self listDidDisappear:disappearIndex]; + [self listDidAppear:appearIndex]; + } + } + } +} + +@end + + diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.h b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.h new file mode 100644 index 0000000..e347531 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.h @@ -0,0 +1,14 @@ +// +// JXPagingListRefreshView.h +// JXPagingView +// +// Created by jiaxin on 2018/8/28. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXPagerView.h" + +@interface JXPagerListRefreshView : JXPagerView + +@end diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.m b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.m new file mode 100644 index 0000000..c5b371c --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerListRefreshView.m @@ -0,0 +1,109 @@ +// +// JXPagerListRefreshView.m +// JXPagerView +// +// Created by jiaxin on 2018/8/28. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXPagerListRefreshView.h" + +@interface JXPagerListRefreshView() +@property (nonatomic, assign) CGFloat lastScrollingListViewContentOffsetY; +@end + +@implementation JXPagerListRefreshView + +- (instancetype)initWithDelegate:(id)delegate listContainerType:(JXPagerListContainerType)type { + self = [super initWithDelegate:delegate listContainerType:type]; + if (self) { + self.mainTableView.bounces = NO; + } + return self; +} + +- (void)preferredProcessListViewDidScroll:(UIScrollView *)scrollView { + BOOL shouldProcess = YES; + if (self.currentScrollingListView.contentOffset.y > self.lastScrollingListViewContentOffsetY) { + //往上滚动 + }else { + //往下滚动 + if (self.mainTableView.contentOffset.y == 0) { + shouldProcess = NO; + }else { + if (self.mainTableView.contentOffset.y < self.mainTableViewMaxContentOffsetY) { + //mainTableView的header还没有消失,让listScrollView一直为0 + if (self.currentList && [self.currentList respondsToSelector:@selector(listScrollViewWillResetContentOffset)]) { + [self.currentList listScrollViewWillResetContentOffset]; + } + [self setListScrollViewToMinContentOffsetY:self.currentScrollingListView]; + if (self.automaticallyDisplayListVerticalScrollIndicator) { + self.currentScrollingListView.showsVerticalScrollIndicator = NO; + } + } + } + } + if (shouldProcess) { + if (self.mainTableView.contentOffset.y < self.mainTableViewMaxContentOffsetY) { + //处于下拉刷新的状态,scrollView.contentOffset.y为负数,就重置为0 + if (self.currentScrollingListView.contentOffset.y > [self minContentOffsetYInListScrollView:self.currentScrollingListView]) { + //mainTableView的header还没有消失,让listScrollView一直为0 + if (self.currentList && [self.currentList respondsToSelector:@selector(listScrollViewWillResetContentOffset)]) { + [self.currentList listScrollViewWillResetContentOffset]; + } + [self setListScrollViewToMinContentOffsetY:self.currentScrollingListView]; + if (self.automaticallyDisplayListVerticalScrollIndicator) { + self.currentScrollingListView.showsVerticalScrollIndicator = NO; + } + } + } else { + //mainTableView的header刚好消失,固定mainTableView的位置,显示listScrollView的滚动条 + self.mainTableView.contentOffset = CGPointMake(0, self.mainTableViewMaxContentOffsetY); + if (self.automaticallyDisplayListVerticalScrollIndicator) { + self.currentScrollingListView.showsVerticalScrollIndicator = YES; + } + } + } + self.lastScrollingListViewContentOffsetY = self.currentScrollingListView.contentOffset.y; +} + +- (void)preferredProcessMainTableViewDidScroll:(UIScrollView *)scrollView { + if (self.pinSectionHeaderVerticalOffset != 0) { + if (!(self.currentScrollingListView != nil && self.currentScrollingListView.contentOffset.y > [self minContentOffsetYInListScrollView:self.currentScrollingListView])) { + //没有处于滚动某一个listView的状态 + if (scrollView.contentOffset.y <= 0) { + self.mainTableView.bounces = NO; + self.mainTableView.contentOffset = CGPointZero; + return; + }else { + self.mainTableView.bounces = YES; + } + } + } + if (self.currentScrollingListView != nil && self.currentScrollingListView.contentOffset.y > [self minContentOffsetYInListScrollView:self.currentScrollingListView]) { + //mainTableView的header已经滚动不见,开始滚动某一个listView,那么固定mainTableView的contentOffset,让其不动 + [self setMainTableViewToMaxContentOffsetY]; + } + + if (scrollView.contentOffset.y < self.mainTableViewMaxContentOffsetY) { + //mainTableView已经显示了header,listView的contentOffset需要重置 + for (id list in self.validListDict.allValues) { + //正在下拉刷新时,不需要重置 + UIScrollView *listScrollView = [list listScrollView]; + if (listScrollView.contentOffset.y > 0) { + if ([list respondsToSelector:@selector(listScrollViewWillResetContentOffset)]) { + [list listScrollViewWillResetContentOffset]; + } + [self setListScrollViewToMinContentOffsetY:listScrollView]; + } + } + } + + if (scrollView.contentOffset.y > self.mainTableViewMaxContentOffsetY && self.currentScrollingListView.contentOffset.y == [self minContentOffsetYInListScrollView:self.currentScrollingListView]) { + //当往上滚动mainTableView的headerView时,滚动到底时,修复listView往上小幅度滚动 + [self setMainTableViewToMaxContentOffsetY]; + } +} + + +@end diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.h b/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.h new file mode 100644 index 0000000..baf5cf4 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.h @@ -0,0 +1,19 @@ +// +// JXPagingMainTableView.h +// JXPagingView +// +// Created by jiaxin on 2018/8/27. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import + +@protocol JXPagerMainTableViewGestureDelegate + +- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer; + +@end + +@interface JXPagerMainTableView : UITableView +@property (nonatomic, weak) id gestureDelegate; +@end diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.m b/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.m new file mode 100644 index 0000000..8cd9fe6 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerMainTableView.m @@ -0,0 +1,25 @@ +// +// JXPagerMainTableView.m +// JXPagerView +// +// Created by jiaxin on 2018/8/27. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXPagerMainTableView.h" + +@interface JXPagerMainTableView () + +@end + +@implementation JXPagerMainTableView + +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + if (self.gestureDelegate && [self.gestureDelegate respondsToSelector:@selector(mainTableViewGestureRecognizer:shouldRecognizeSimultaneouslyWithGestureRecognizer:)]) { + return [self.gestureDelegate mainTableViewGestureRecognizer:gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:otherGestureRecognizer]; + }else { + return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]; + } +} + +@end diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.h b/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.h new file mode 100644 index 0000000..246b8e5 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.h @@ -0,0 +1,91 @@ +// +// JXPagerSmoothView.h +// JXPagerViewExample-OC +// +// Created by jiaxin on 2019/11/15. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import + +@class JXPagerSmoothView; + +@protocol JXPagerSmoothViewListViewDelegate +/** +返回listView。如果是vc包裹的就是vc.view;如果是自定义view包裹的,就是自定义view自己。 +*/ +- (UIView *)listView; +/** + 返回JXPagerSmoothViewListViewDelegate内部持有的UIScrollView或UITableView或UICollectionView + */ +- (UIScrollView *)listScrollView; + +@optional +- (void)listDidAppear; +- (void)listDidDisappear; + +@end + +@protocol JXPagerSmoothViewDataSource + +/** + 返回页面header的高度 + */ +- (CGFloat)heightForPagerHeaderInPagerView:(JXPagerSmoothView *)pagerView; + +/** + 返回页面header视图 + */ +- (UIView *)viewForPagerHeaderInPagerView:(JXPagerSmoothView *)pagerView; + +/** + 返回悬浮视图的高度 + */ +- (CGFloat)heightForPinHeaderInPagerView:(JXPagerSmoothView *)pagerView; + +/** + 返回悬浮视图 + */ +- (UIView *)viewForPinHeaderInPagerView:(JXPagerSmoothView *)pagerView; + +/** + 返回列表的数量 + */ +- (NSInteger)numberOfListsInPagerView:(JXPagerSmoothView *)pagerView; + +/** + 根据index初始化一个对应列表实例,需要是遵从`JXPagerSmoothViewListViewDelegate`协议的对象。 + 如果列表是用自定义UIView封装的,就让自定义UIView遵从`JXPagerSmoothViewListViewDelegate`协议,该方法返回自定义UIView即可。 + 如果列表是用自定义UIViewController封装的,就让自定义UIViewController遵从`JXPagerSmoothViewListViewDelegate`协议,该方法返回自定义UIViewController即可。 + + @param pagerView pagerView description + @param index index description + @return 新生成的列表实例 + */ +- (id)pagerView:(JXPagerSmoothView *)pagerView initListAtIndex:(NSInteger)index; + +@end + +@protocol JXPagerSmoothViewDelegate +- (void)pagerSmoothViewDidScroll:(UIScrollView *)scrollView; +@end + +@interface JXPagerSmoothView : UIView + +/** + 当前已经加载过的列表:key就是@(index)值,value是对应的列表。 + */ +@property (nonatomic, strong, readonly) NSDictionary > *listDict; +@property (nonatomic, strong, readonly) UICollectionView *listCollectionView; +@property (nonatomic, assign) NSInteger defaultSelectedIndex; +@property (nonatomic, weak) id delegate; + +- (instancetype)initWithDataSource:(id)dataSource NS_DESIGNATED_INITIALIZER; +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; + +- (void)reloadData; + +@end + diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.m b/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.m new file mode 100644 index 0000000..69856c0 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerSmoothView.m @@ -0,0 +1,361 @@ +// +// JXPagerSmoothView.m +// JXPagerViewExample-OC +// +// Created by jiaxin on 2019/11/15. +// Copyright © 2019 jiaxin. All rights reserved. +// + +#import "JXPagerSmoothView.h" + +static NSString *JXPagerSmoothViewCollectionViewCellIdentifier = @"cell"; + +@interface JXPagerSmoothCollectionView : UICollectionView +@property (nonatomic, strong) UIView *pagerHeaderContainerView; +@end +@implementation JXPagerSmoothCollectionView +- (BOOL)gestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldReceiveTouch:(UITouch *)touch { + CGPoint point = [touch locationInView:self.pagerHeaderContainerView]; + if (CGRectContainsPoint(self.pagerHeaderContainerView.bounds, point)) { + return NO; + } + return YES; +} +@end + +@interface JXPagerSmoothView () + +@property (nonatomic, weak) id dataSource; +@property (nonatomic, strong) JXPagerSmoothCollectionView *listCollectionView; +@property (nonatomic, strong) NSMutableDictionary > *listDict; +@property (nonatomic, strong) NSMutableDictionary *listHeaderDict; +@property (nonatomic, assign, getter=isSyncListContentOffsetEnabled) BOOL syncListContentOffsetEnabled; +@property (nonatomic, strong) UIView *pagerHeaderContainerView; +@property (nonatomic, assign) CGFloat currentPagerHeaderContainerViewY; +@property (nonatomic, assign) NSInteger currentIndex; +@property (nonatomic, strong) UIScrollView *currentListScrollView; +@property (nonatomic, assign) CGFloat heightForPagerHeader; +@property (nonatomic, assign) CGFloat heightForPinHeader; +@property (nonatomic, assign) CGFloat heightForPagerHeaderContainerView; +@property (nonatomic, assign) CGFloat currentListInitializeContentOffsetY; +@property (nonatomic, strong) UIScrollView *singleScrollView; +@end + +@implementation JXPagerSmoothView + +- (void)dealloc +{ + for (id list in self.listDict.allValues) { + [[list listScrollView] removeObserver:self forKeyPath:@"contentOffset"]; + [[list listScrollView] removeObserver:self forKeyPath:@"contentSize"]; + } +} + +- (instancetype)initWithDataSource:(id)dataSource +{ + self = [super initWithFrame:CGRectZero]; + if (self) { + _dataSource = dataSource; + _listDict = [NSMutableDictionary dictionary]; + _listHeaderDict = [NSMutableDictionary dictionary]; + [self initializeViews]; + } + return self; +} + +- (void)initializeViews { + self.pagerHeaderContainerView = [[UIView alloc] init]; + + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.scrollDirection = UICollectionViewScrollDirectionHorizontal; + layout.minimumLineSpacing = 0; + layout.minimumInteritemSpacing = 0; + _listCollectionView = [[JXPagerSmoothCollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + self.listCollectionView.dataSource = self; + self.listCollectionView.delegate = self; + self.listCollectionView.pagingEnabled = YES; + self.listCollectionView.bounces = NO; + self.listCollectionView.showsHorizontalScrollIndicator = NO; + self.listCollectionView.scrollsToTop = NO; + [self.listCollectionView registerClass:[UICollectionViewCell class] forCellWithReuseIdentifier:JXPagerSmoothViewCollectionViewCellIdentifier]; + if (@available(iOS 10.0, *)) { + self.listCollectionView.prefetchingEnabled = NO; + } + if (@available(iOS 11.0, *)) { + self.listCollectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + _listCollectionView.pagerHeaderContainerView = self.pagerHeaderContainerView; + [self addSubview:self.listCollectionView]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + self.listCollectionView.frame = self.bounds; + if (CGRectEqualToRect(self.pagerHeaderContainerView.frame, CGRectZero)) { + [self reloadData]; + } + if (self.singleScrollView != nil) { + self.singleScrollView.frame = self.bounds; + } +} + +- (void)reloadData { + self.currentListScrollView = nil; + self.currentIndex = self.defaultSelectedIndex; + self.currentPagerHeaderContainerViewY = 0; + self.syncListContentOffsetEnabled = NO; + + [self.listHeaderDict removeAllObjects]; + for (id list in self.listDict.allValues) { + [[list listScrollView] removeObserver:self forKeyPath:@"contentOffset"]; + [[list listScrollView] removeObserver:self forKeyPath:@"contentSize"]; + [[list listView] removeFromSuperview]; + } + [_listDict removeAllObjects]; + + self.heightForPagerHeader = [self.dataSource heightForPagerHeaderInPagerView:self]; + self.heightForPinHeader = [self.dataSource heightForPinHeaderInPagerView:self]; + self.heightForPagerHeaderContainerView = self.heightForPagerHeader + self.heightForPinHeader; + + UIView *pagerHeader = [self.dataSource viewForPagerHeaderInPagerView:self]; + UIView *pinHeader = [self.dataSource viewForPinHeaderInPagerView:self]; + [self.pagerHeaderContainerView addSubview:pagerHeader]; + [self.pagerHeaderContainerView addSubview:pinHeader]; + + self.pagerHeaderContainerView.frame = CGRectMake(0, 0, self.bounds.size.width, self.heightForPagerHeaderContainerView); + pagerHeader.frame = CGRectMake(0, 0, self.bounds.size.width, self.heightForPagerHeader); + pinHeader.frame = CGRectMake(0, self.heightForPagerHeader, self.bounds.size.width, self.heightForPinHeader); + [self.listCollectionView setContentOffset:CGPointMake(self.listCollectionView.bounds.size.width*self.defaultSelectedIndex, 0) animated:NO]; + [self.listCollectionView reloadData]; + + if ([self.dataSource numberOfListsInPagerView:self] == 0) { + self.singleScrollView = [[UIScrollView alloc] init]; + [self addSubview:self.singleScrollView]; + [self.singleScrollView addSubview:pagerHeader]; + self.singleScrollView.contentSize = CGSizeMake(self.bounds.size.width, self.heightForPagerHeader); + }else if (self.singleScrollView != nil) { + [self.singleScrollView removeFromSuperview]; + self.singleScrollView = nil; + } +} + +#pragma mark - UICollectionViewDataSource & UICollectionViewDelegateFlowLayout + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + return self.bounds.size; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return [self.dataSource numberOfListsInPagerView:self]; +} + +- (UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + UICollectionViewCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:JXPagerSmoothViewCollectionViewCellIdentifier forIndexPath:indexPath]; + id list = self.listDict[@(indexPath.item)]; + if (list == nil) { + list = [self.dataSource pagerView:self initListAtIndex:indexPath.item]; + _listDict[@(indexPath.item)] = list; + [[list listView] setNeedsLayout]; + [[list listView] layoutIfNeeded]; + UIScrollView *listScrollView = [list listScrollView]; + if ([listScrollView isKindOfClass:[UITableView class]]) { + ((UITableView *)listScrollView).estimatedRowHeight = 0; + ((UITableView *)listScrollView).estimatedSectionFooterHeight = 0; + ((UITableView *)listScrollView).estimatedSectionHeaderHeight = 0; + } + if (@available(iOS 11.0, *)) { + listScrollView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + listScrollView.contentInset = UIEdgeInsetsMake(self.heightForPagerHeaderContainerView, 0, 0, 0); + self.currentListInitializeContentOffsetY = -listScrollView.contentInset.top + MIN(-self.currentPagerHeaderContainerViewY, self.heightForPagerHeader); + listScrollView.contentOffset = CGPointMake(0, self.currentListInitializeContentOffsetY); + UIView *listHeader = [[UIView alloc] initWithFrame:CGRectMake(0, -self.heightForPagerHeaderContainerView, self.bounds.size.width, self.heightForPagerHeaderContainerView)]; + [listScrollView addSubview:listHeader]; + if (self.pagerHeaderContainerView.superview == nil) { + [listHeader addSubview:self.pagerHeaderContainerView]; + } + self.listHeaderDict[@(indexPath.item)] = listHeader; + [listScrollView addObserver:self forKeyPath:@"contentOffset" options:NSKeyValueObservingOptionNew context:nil]; + [listScrollView addObserver:self forKeyPath:@"contentSize" options:NSKeyValueObservingOptionNew context:nil]; + } + for (id listItem in self.listDict.allValues) { + [listItem listScrollView].scrollsToTop = (listItem == list); + } + UIView *listView = [list listView]; + if (listView != nil && listView.superview != cell.contentView) { + for (UIView *view in cell.contentView.subviews) { + [view removeFromSuperview]; + } + listView.frame = cell.contentView.bounds; + [cell.contentView addSubview:listView]; + } + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { + [self listDidAppear:indexPath.item]; +} + +- (void)collectionView:(UICollectionView *)collectionView didEndDisplayingCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { + [self listDidDisappear:indexPath.item]; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerSmoothViewDidScroll:)]) { + [self.delegate pagerSmoothViewDidScroll:scrollView]; + } + CGFloat indexPercent = scrollView.contentOffset.x/scrollView.bounds.size.width; + NSInteger index = floor(indexPercent); + UIScrollView *listScrollView = [self.listDict[@(index)] listScrollView]; + if (indexPercent - index == 0 && index != self.currentIndex && !(scrollView.isDragging || scrollView.isDecelerating) && listScrollView.contentOffset.y <= -self.heightForPinHeader) { + [self horizontalScrollDidEndAtIndex:index]; + }else { + //左右滚动的时候,就把listHeaderContainerView添加到self,达到悬浮在顶部的效果 + if (self.pagerHeaderContainerView.superview != self) { + self.pagerHeaderContainerView.frame = CGRectMake(0, self.currentPagerHeaderContainerViewY, self.pagerHeaderContainerView.bounds.size.width, self.pagerHeaderContainerView.bounds.size.height); + [self addSubview:self.pagerHeaderContainerView]; + } + } + if (index != self.currentIndex) { + self.currentIndex = index; + } +} + +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { + if (!decelerate) { + NSInteger index = scrollView.contentOffset.x/scrollView.bounds.size.width; + [self horizontalScrollDidEndAtIndex:index]; + } +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + NSInteger index = scrollView.contentOffset.x/scrollView.bounds.size.width; + [self horizontalScrollDidEndAtIndex:index]; +} + +#pragma mark - KVO + +- (void)observeValueForKeyPath:(NSString *)keyPath ofObject:(id)object change:(NSDictionary *)change context:(void *)context { + if ([keyPath isEqualToString:@"contentOffset"]) { + UIScrollView *scrollView = (UIScrollView *)object; + if (scrollView != nil) { + [self listDidScroll:scrollView]; + } + }else if([keyPath isEqualToString:@"contentSize"]) { + UIScrollView *scrollView = (UIScrollView *)object; + if (scrollView != nil) { + CGFloat minContentSizeHeight = self.bounds.size.height - self.heightForPinHeader; + if (minContentSizeHeight > scrollView.contentSize.height) { + scrollView.contentSize = CGSizeMake(scrollView.contentSize.width, minContentSizeHeight); + //新的scrollView第一次加载的时候重置contentOffset + if (_currentListScrollView != nil && scrollView != _currentListScrollView) { + scrollView.contentOffset = CGPointMake(0, self.currentListInitializeContentOffsetY); + } + } + } + }else { + [super observeValueForKeyPath:keyPath ofObject:object change:change context:context]; + } +} + +#pragma mark - Event + +- (void)listDidScroll:(UIScrollView *)scrollView { + if (self.listCollectionView.isDragging || self.listCollectionView.isDecelerating) { + return; + } + NSInteger listIndex = [self listIndexForListScrollView:scrollView]; + if (listIndex != self.currentIndex) { + return; + } + self.currentListScrollView = scrollView; + CGFloat contentOffsetY = scrollView.contentOffset.y + self.heightForPagerHeaderContainerView; + if (contentOffsetY < self.heightForPagerHeader) { + self.syncListContentOffsetEnabled = YES; + self.currentPagerHeaderContainerViewY = -contentOffsetY; + for (id list in self.listDict.allValues) { + if ([list listScrollView] != self.currentListScrollView) { + [[list listScrollView] setContentOffset:scrollView.contentOffset animated:NO]; + } + } + UIView *listHeader = [self listHeaderForListScrollView:scrollView]; + if (self.pagerHeaderContainerView.superview != listHeader) { + self.pagerHeaderContainerView.frame = CGRectMake(0, 0, self.pagerHeaderContainerView.bounds.size.width, self.pagerHeaderContainerView.bounds.size.height); + [listHeader addSubview:self.pagerHeaderContainerView]; + } + }else { + if (self.pagerHeaderContainerView.superview != self) { + self.pagerHeaderContainerView.frame = CGRectMake(0, -self.heightForPagerHeader, self.pagerHeaderContainerView.bounds.size.width, self.pagerHeaderContainerView.bounds.size.height); + [self addSubview:self.pagerHeaderContainerView]; + } + if (self.isSyncListContentOffsetEnabled) { + self.syncListContentOffsetEnabled = NO; + self.currentPagerHeaderContainerViewY = -self.heightForPagerHeader; + for (id list in self.listDict.allValues) { + if ([list listScrollView] != scrollView) { + [[list listScrollView] setContentOffset:CGPointMake(0, -self.heightForPinHeader) animated:NO]; + } + } + } + } +} + +#pragma mark - Private + +- (UIView *)listHeaderForListScrollView:(UIScrollView *)scrollView { + for (NSNumber *index in self.listDict) { + if ([self.listDict[index] listScrollView] == scrollView) { + return self.listHeaderDict[index]; + } + } + return nil; +} + +- (NSInteger)listIndexForListScrollView:(UIScrollView *)scrollView { + for (NSNumber *index in self.listDict) { + if ([self.listDict[index] listScrollView] == scrollView) { + return [index integerValue]; + } + } + return 0; +} + +- (void)listDidAppear:(NSInteger)index { + NSUInteger count = [self.dataSource numberOfListsInPagerView:self]; + if (count <= 0 || index >= count) { + return; + } + + id list = self.listDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidAppear)]) { + [list listDidAppear]; + } +} + +- (void)listDidDisappear:(NSInteger)index { + NSUInteger count = [self.dataSource numberOfListsInPagerView:self]; + if (count <= 0 || index >= count) { + return; + } + id list = self.listDict[@(index)]; + if (list && [list respondsToSelector:@selector(listDidDisappear)]) { + [list listDidDisappear]; + } +} + +/// 列表左右切换滚动结束之后,需要把pagerHeaderContainerView添加到当前index的列表上面 +- (void)horizontalScrollDidEndAtIndex:(NSInteger)index { + self.currentIndex = index; + UIView *listHeader = self.listHeaderDict[@(index)]; + UIScrollView *listScrollView = [self.listDict[@(index)] listScrollView]; + if (listHeader != nil && listScrollView.contentOffset.y <= -self.heightForPinHeader) { + for (id listItem in self.listDict.allValues) { + [listItem listScrollView].scrollsToTop = ([listItem listScrollView] == listScrollView); + } + self.pagerHeaderContainerView.frame = CGRectMake(0, 0, self.pagerHeaderContainerView.bounds.size.width, self.pagerHeaderContainerView.bounds.size.height); + [listHeader addSubview:self.pagerHeaderContainerView]; + } +} + +@end diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.h b/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.h new file mode 100644 index 0000000..3dd6c6a --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.h @@ -0,0 +1,131 @@ +// +// JXPagerView.h +// JXPagerView +// +// Created by jiaxin on 2018/8/27. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import +#import "JXPagerMainTableView.h" +#import "JXPagerListContainerView.h" +@class JXPagerView; + +@protocol JXPagerViewDelegate + +/** + 返回tableHeaderView的高度,因为内部需要比对判断,只能是整型数 + */ +- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView; + +/** + 返回tableHeaderView + */ +- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView; + +/** + 返回悬浮HeaderView的高度,因为内部需要比对判断,只能是整型数 + */ +- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView; + +/** + 返回悬浮HeaderView。我用的是自己封装的JXCategoryView(Github:https://github.com/pujiaxin33/JXCategoryView),你也可以选择其他的三方库或者自己写 + */ +- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView; + +/** + 返回列表的数量 + */ +- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView; + +/** + 根据index初始化一个对应列表实例,需要是遵从`JXPagerViewListViewDelegate`协议的对象。 + 如果列表是用自定义UIView封装的,就让自定义UIView遵从`JXPagerViewListViewDelegate`协议,该方法返回自定义UIView即可。 + 如果列表是用自定义UIViewController封装的,就让自定义UIViewController遵从`JXPagerViewListViewDelegate`协议,该方法返回自定义UIViewController即可。 + 注意:一定要是新生成的实例!!! + + @param pagerView pagerView description + @param index index description + @return 新生成的列表实例 + */ +- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index; + +@optional + +/// 返回对应index的列表唯一标识 +/// @param pagerView pagerView description +/// @param index index description +- (NSString *)pagerView:(JXPagerView *)pagerView listIdentifierAtIndex:(NSInteger)index; +- (void)mainTableViewDidScroll:(UIScrollView *)scrollView __attribute__ ((deprecated)); +- (void)pagerView:(JXPagerView *)pagerView mainTableViewDidScroll:(UIScrollView *)scrollView; +- (void)pagerView:(JXPagerView *)pagerView mainTableViewWillBeginDragging:(UIScrollView *)scrollView; +- (void)pagerView:(JXPagerView *)pagerView mainTableViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate; +- (void)pagerView:(JXPagerView *)pagerView mainTableViewDidEndDecelerating:(UIScrollView *)scrollView; +- (void)pagerView:(JXPagerView *)pagerView mainTableViewDidEndScrollingAnimation:(UIScrollView *)scrollView; + +/** + 返回自定义UIScrollView或UICollectionView的Class + 某些特殊情况需要自己处理列表容器内UIScrollView内部逻辑。比如项目用了FDFullscreenPopGesture,需要处理手势相关代理。 + + @param pagerView JXPagerView + @return 自定义UIScrollView实例 + */ +- (Class)scrollViewClassInlistContainerViewInPagerView:(JXPagerView *)pagerView; + +@end + +@interface JXPagerView : UIView +/** + 需要和self.categoryView.defaultSelectedIndex保持一致 + */ +@property (nonatomic, assign) NSInteger defaultSelectedIndex; +@property (nonatomic, strong, readonly) JXPagerMainTableView *mainTableView; +@property (nonatomic, strong, readonly) JXPagerListContainerView *listContainerView; +/** + 当前已经加载过可用的列表字典,key就是index值,value是对应的列表。 + */ +@property (nonatomic, strong, readonly) NSDictionary > *validListDict; +/** + 顶部固定sectionHeader的垂直偏移量。数值越大越往下沉。 + */ +@property (nonatomic, assign) NSInteger pinSectionHeaderVerticalOffset; +/** + 是否允许列表左右滑动。默认:YES + */ +@property (nonatomic, assign) BOOL isListHorizontalScrollEnabled; +/** + 是否允许当前列表自动显示或隐藏列表是垂直滚动指示器。YES:悬浮的headerView滚动到顶部开始滚动列表时,就会显示,反之隐藏。NO:内部不会处理列表的垂直滚动指示器。默认为:YES。 + */ +@property (nonatomic, assign) BOOL automaticallyDisplayListVerticalScrollIndicator; +/** + 当allowsCacheList为true时,请务必实现代理方法`- (NSString *)pagerView:(JXPagerView *)pagerView listIdentifierAtIndex:(NSInteger)index` + */ +@property (nonatomic, assign) BOOL allowsCacheList; + +- (instancetype)initWithDelegate:(id)delegate; +- (instancetype)initWithDelegate:(id)delegate listContainerType:(JXPagerListContainerType)type NS_DESIGNATED_INITIALIZER; +- (instancetype)init NS_UNAVAILABLE; +- (instancetype)initWithFrame:(CGRect)frame NS_UNAVAILABLE; +- (instancetype)initWithCoder:(NSCoder *)aDecoder NS_UNAVAILABLE; +- (void)reloadData; +- (void)resizeTableHeaderViewHeightWithAnimatable:(BOOL)animatable duration:(NSTimeInterval)duration curve:(UIViewAnimationCurve)curve; + +@end + +/** +暴露给子类使用,请勿直接使用相关属性和方法! +*/ +@interface JXPagerView (UISubclassingGet) +@property (nonatomic, strong, readonly) UIScrollView *currentScrollingListView; +@property (nonatomic, strong, readonly) id currentList; +@property (nonatomic, assign, readonly) CGFloat mainTableViewMaxContentOffsetY; +@end + +@interface JXPagerView (UISubclassingHooks) +- (void)preferredProcessListViewDidScroll:(UIScrollView *)scrollView; +- (void)preferredProcessMainTableViewDidScroll:(UIScrollView *)scrollView; +- (void)setMainTableViewToMaxContentOffsetY; +- (void)setListScrollViewToMinContentOffsetY:(UIScrollView *)scrollView; +- (CGFloat)minContentOffsetYInListScrollView:(UIScrollView *)scrollView; +@end + diff --git a/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.m b/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.m new file mode 100644 index 0000000..cb57ae7 --- /dev/null +++ b/Pods/JXPagingView/Sources/JXPagerView/JXPagerView.m @@ -0,0 +1,409 @@ +// +// JXPagerView.m +// JXPagerView +// +// Created by jiaxin on 2018/8/27. +// Copyright © 2018年 jiaxin. All rights reserved. +// + +#import "JXPagerView.h" +@class JXPagerListContainerScrollView; +@class JXPagerListContainerCollectionView; + +@interface JXPagerView () +@property (nonatomic, weak) id delegate; +@property (nonatomic, strong) JXPagerMainTableView *mainTableView; +@property (nonatomic, strong) JXPagerListContainerView *listContainerView; +@property (nonatomic, strong) UIScrollView *currentScrollingListView; +@property (nonatomic, strong) id currentList; +@property (nonatomic, strong) NSMutableDictionary > *validListDict; +@property (nonatomic, strong) UIView *tableHeaderContainerView; +@property (nonatomic, strong) NSMutableDictionary> *listCache; +@end + +@implementation JXPagerView + +- (instancetype)initWithDelegate:(id)delegate { + return [self initWithDelegate:delegate listContainerType:JXPagerListContainerType_CollectionView]; +} + +- (instancetype)initWithDelegate:(id)delegate listContainerType:(JXPagerListContainerType)type { + self = [super initWithFrame:CGRectZero]; + if (self) { + _delegate = delegate; + _validListDict = [NSMutableDictionary dictionary]; + _automaticallyDisplayListVerticalScrollIndicator = YES; + _isListHorizontalScrollEnabled = YES; + + _mainTableView = [[JXPagerMainTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + self.mainTableView.showsVerticalScrollIndicator = NO; + self.mainTableView.showsHorizontalScrollIndicator = NO; + self.mainTableView.separatorStyle = UITableViewCellSeparatorStyleNone; + self.mainTableView.scrollsToTop = NO; + self.mainTableView.dataSource = self; + self.mainTableView.delegate = self; + [self refreshTableHeaderView]; + [self.mainTableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; + if (@available(iOS 11.0, *)) { + self.mainTableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } +#if __IPHONE_OS_VERSION_MAX_ALLOWED >= 150000 + if (@available(iOS 15.0, *)) { + self.mainTableView.sectionHeaderTopPadding = 0; + } +#endif + [self addSubview:self.mainTableView]; + + _listContainerView = [[JXPagerListContainerView alloc] initWithType:type delegate:self]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + + if (!CGRectEqualToRect(self.bounds, self.mainTableView.frame)) { + self.mainTableView.frame = self.bounds; + [self.mainTableView reloadData]; + } +} + +- (void)setDefaultSelectedIndex:(NSInteger)defaultSelectedIndex { + _defaultSelectedIndex = defaultSelectedIndex; + + self.listContainerView.defaultSelectedIndex = defaultSelectedIndex; +} + +- (void)setIsListHorizontalScrollEnabled:(BOOL)isListHorizontalScrollEnabled { + _isListHorizontalScrollEnabled = isListHorizontalScrollEnabled; + + self.listContainerView.scrollView.scrollEnabled = isListHorizontalScrollEnabled; +} + +- (void)reloadData { + self.currentList = nil; + self.currentScrollingListView = nil; + [_validListDict removeAllObjects]; + //根据新数据删除不需要的list + if (self.allowsCacheList) { + NSMutableArray *newListIdentifierArray = [NSMutableArray array]; + if (self.delegate && [self.delegate respondsToSelector:@selector(numberOfListsInPagerView:)]) { + NSInteger listCount = [self.delegate numberOfListsInPagerView:self]; + for (NSInteger index = 0; index < listCount; index ++) { + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:listIdentifierAtIndex:)]) { + NSString *listIdentifier = [self.delegate pagerView:self listIdentifierAtIndex:index]; + [newListIdentifierArray addObject:listIdentifier]; + } + } + } + NSArray *existedKeys = self.listCache.allKeys; + for (NSString *listIdentifier in existedKeys) { + if (![newListIdentifierArray containsObject:listIdentifier]) { + [self.listCache removeObjectForKey:listIdentifier]; + } + } + } + [self refreshTableHeaderView]; + if (self.pinSectionHeaderVerticalOffset != 0 && self.mainTableView.contentOffset.y > self.pinSectionHeaderVerticalOffset) { + self.mainTableView.contentOffset = CGPointZero; + } + [self.mainTableView reloadData]; + [self.listContainerView reloadData]; +} + +- (void)resizeTableHeaderViewHeightWithAnimatable:(BOOL)animatable duration:(NSTimeInterval)duration curve:(UIViewAnimationCurve)curve { + if (animatable) { + UIViewAnimationOptions options = UIViewAnimationOptionCurveLinear; + switch (curve) { + case UIViewAnimationCurveEaseIn: options = UIViewAnimationOptionCurveEaseIn; break; + case UIViewAnimationCurveEaseOut: options = UIViewAnimationOptionCurveEaseOut; break; + case UIViewAnimationCurveEaseInOut: options = UIViewAnimationOptionCurveEaseInOut; break; + default: break; + } + [UIView animateWithDuration:duration delay:0 options:options animations:^{ + CGRect frame = self.tableHeaderContainerView.bounds; + frame.size.height = [self.delegate tableHeaderViewHeightInPagerView:self]; + self.tableHeaderContainerView.frame = frame; + self.mainTableView.tableHeaderView = self.tableHeaderContainerView; + [self.mainTableView setNeedsLayout]; + [self.mainTableView layoutIfNeeded]; + } completion:^(BOOL finished) { }]; + }else { + CGRect frame = self.tableHeaderContainerView.bounds; + frame.size.height = [self.delegate tableHeaderViewHeightInPagerView:self]; + self.tableHeaderContainerView.frame = frame; + self.mainTableView.tableHeaderView = self.tableHeaderContainerView; + } +} + +#pragma mark - Private + +- (void)refreshTableHeaderView { + UIView *tableHeaderView = [self.delegate tableHeaderViewInPagerView:self]; + UIView *containerView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 0, [self.delegate tableHeaderViewHeightInPagerView:self])]; + [containerView addSubview:tableHeaderView]; + tableHeaderView.translatesAutoresizingMaskIntoConstraints = NO; + NSLayoutConstraint *top = [NSLayoutConstraint constraintWithItem:tableHeaderView attribute:NSLayoutAttributeTop relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeTop multiplier:1 constant:0]; + NSLayoutConstraint *leading = [NSLayoutConstraint constraintWithItem:tableHeaderView attribute:NSLayoutAttributeLeading relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeLeading multiplier:1 constant:0]; + NSLayoutConstraint *bottom = [NSLayoutConstraint constraintWithItem:tableHeaderView attribute:NSLayoutAttributeBottom relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeBottom multiplier:1 constant:0]; + NSLayoutConstraint *trailing = [NSLayoutConstraint constraintWithItem:tableHeaderView attribute:NSLayoutAttributeTrailing relatedBy:NSLayoutRelationEqual toItem:containerView attribute:NSLayoutAttributeTrailing multiplier:1 constant:0]; + [containerView addConstraints:@[top, leading, bottom, trailing]]; + self.tableHeaderContainerView = containerView; + self.mainTableView.tableHeaderView = containerView; +} + +- (void)adjustMainScrollViewToTargetContentInsetIfNeeded:(UIEdgeInsets)insets { + if (UIEdgeInsetsEqualToEdgeInsets(insets, self.mainTableView.contentInset) == NO) { + self.mainTableView.delegate = nil; + self.mainTableView.contentInset = insets; + self.mainTableView.delegate = self; + } +} + +- (void)listViewDidScroll:(UIScrollView *)scrollView { + self.currentScrollingListView = scrollView; + [self preferredProcessListViewDidScroll:scrollView]; +} + +//仅用于处理设置了pinSectionHeaderVerticalOffset,又添加了MJRefresh的下拉刷新。这种情况会导致JXPagingView和MJRefresh来回设置contentInset值。针对这种及其特殊的情况,就内部特殊处理了。通过下面的判断条件,来判定当前是否处于下拉刷新中。请勿让pinSectionHeaderVerticalOffset和下拉刷新设置的contentInset.top值相同。 +//具体原因参考:https://github.com/pujiaxin33/JXPagingView/issues/203 +- (BOOL)isSetMainScrollViewContentInsetToZeroEnabled:(UIScrollView *)scrollView { + //scrollView.contentInset.top不为0,且scrollView.contentInset.top不等于pinSectionHeaderVerticalOffset,即可认为列表正在刷新。所以这里必须要保证pinSectionHeaderVerticalOffset和MJRefresh的mj_insetT的值不相等。 + BOOL isRefreshing = scrollView.contentInset.top != 0 && scrollView.contentInset.top != self.pinSectionHeaderVerticalOffset; + return !isRefreshing; +} + +#pragma mark - UITableViewDataSource, UITableViewDelegate + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return 1; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return MAX(self.bounds.size.height - [self.delegate heightForPinSectionHeaderInPagerView:self] - self.pinSectionHeaderVerticalOffset, 0); +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; + cell.selectionStyle = UITableViewCellSelectionStyleNone; + cell.backgroundColor = [UIColor clearColor]; + if (self.listContainerView.superview != cell.contentView) { + [cell.contentView addSubview:self.listContainerView]; + } + if (!CGRectEqualToRect(self.listContainerView.frame, cell.bounds)) { + self.listContainerView.frame = cell.bounds; + } + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForHeaderInSection:(NSInteger)section { + return [self.delegate heightForPinSectionHeaderInPagerView:self]; +} + +- (UIView *)tableView:(UITableView *)tableView viewForHeaderInSection:(NSInteger)section { + return [self.delegate viewForPinSectionHeaderInPagerView:self]; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForFooterInSection:(NSInteger)section { + return 1; +} + +- (UIView *)tableView:(UITableView *)tableView viewForFooterInSection:(NSInteger)section { + UIView *footer = [[UIView alloc] initWithFrame:CGRectZero]; + footer.backgroundColor = [UIColor clearColor]; + return footer; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + if (self.pinSectionHeaderVerticalOffset != 0) { + if (!(self.currentScrollingListView != nil && self.currentScrollingListView.contentOffset.y > [self minContentOffsetYInListScrollView:self.currentScrollingListView])) { + //没有处于滚动某一个listView的状态 + if (scrollView.contentOffset.y >= self.pinSectionHeaderVerticalOffset) { + //固定的位置就是contentInset.top + [self adjustMainScrollViewToTargetContentInsetIfNeeded:UIEdgeInsetsMake(self.pinSectionHeaderVerticalOffset, 0, 0, 0)]; + }else { + if ([self isSetMainScrollViewContentInsetToZeroEnabled:scrollView]) { + [self adjustMainScrollViewToTargetContentInsetIfNeeded:UIEdgeInsetsZero]; + } + } + } + } + [self preferredProcessMainTableViewDidScroll:scrollView]; + if (self.delegate && [self.delegate respondsToSelector:@selector(mainTableViewDidScroll:)]) { + #pragma GCC diagnostic push + #pragma GCC diagnostic ignored "-Wdeprecated-declarations" + [self.delegate mainTableViewDidScroll:scrollView]; + #pragma GCC diagnostic pop + } + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:mainTableViewDidScroll:)]) { + [self.delegate pagerView:self mainTableViewDidScroll:scrollView]; + } +} + +- (void)scrollViewWillBeginDragging:(UIScrollView *)scrollView { + self.listContainerView.scrollView.scrollEnabled = NO; + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:mainTableViewWillBeginDragging:)]) { + [self.delegate pagerView:self mainTableViewWillBeginDragging:scrollView]; + } +} + +- (void)scrollViewDidEndDragging:(UIScrollView *)scrollView willDecelerate:(BOOL)decelerate { + if (self.isListHorizontalScrollEnabled && !decelerate) { + self.listContainerView.scrollView.scrollEnabled = YES; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:mainTableViewDidEndDragging:willDecelerate:)]) { + [self.delegate pagerView:self mainTableViewDidEndDragging:scrollView willDecelerate:decelerate]; + } +} + +- (void)scrollViewDidEndDecelerating:(UIScrollView *)scrollView { + if (self.isListHorizontalScrollEnabled) { + self.listContainerView.scrollView.scrollEnabled = YES; + } + if ([self isSetMainScrollViewContentInsetToZeroEnabled:scrollView]) { + if (self.mainTableView.contentInset.top != 0 && self.pinSectionHeaderVerticalOffset != 0) { + [self adjustMainScrollViewToTargetContentInsetIfNeeded:UIEdgeInsetsZero]; + } + } + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:mainTableViewDidEndDecelerating:)]) { + [self.delegate pagerView:self mainTableViewDidEndDecelerating:scrollView]; + } +} + +- (void)scrollViewDidEndScrollingAnimation:(UIScrollView *)scrollView { + if (self.isListHorizontalScrollEnabled) { + self.listContainerView.scrollView.scrollEnabled = YES; + } + if (self.delegate && [self.delegate respondsToSelector:@selector(pagerView:mainTableViewDidEndScrollingAnimation:)]) { + [self.delegate pagerView:self mainTableViewDidEndScrollingAnimation:scrollView]; + } +} + +#pragma mark - JXPagerListContainerViewDelegate + +- (NSInteger)numberOfListsInlistContainerView:(JXPagerListContainerView *)listContainerView { + return [self.delegate numberOfListsInPagerView:self]; +} + +- (id)listContainerView:(JXPagerListContainerView *)listContainerView initListForIndex:(NSInteger)index { + id list = self.validListDict[@(index)]; + if (list == nil) { + if (self.allowsCacheList && self.delegate && [self.delegate respondsToSelector:@selector(pagerView:listIdentifierAtIndex:)]) { + NSString *listIdentifier = [self.delegate pagerView:self listIdentifierAtIndex:index]; + list = self.listCache[listIdentifier]; + } + } + if (list == nil) { + list = [self.delegate pagerView:self initListAtIndex:index]; + __weak typeof(self)weakSelf = self; + __weak typeof(id) weakList = list; + [list listViewDidScrollCallback:^(UIScrollView *scrollView) { + weakSelf.currentList = weakList; + [weakSelf listViewDidScroll:scrollView]; + }]; + _validListDict[@(index)] = list; + if (self.allowsCacheList && self.delegate && [self.delegate respondsToSelector:@selector(pagerView:listIdentifierAtIndex:)]) { + NSString *listIdentifier = [self.delegate pagerView:self listIdentifierAtIndex:index]; + self.listCache[listIdentifier] = list; + } + } + return list; +} + + +- (void)listContainerViewWillBeginDragging:(JXPagerListContainerView *)listContainerView { + self.mainTableView.scrollEnabled = NO; +} + +- (void)listContainerViewWDidEndScroll:(JXPagerListContainerView *)listContainerView { + self.mainTableView.scrollEnabled = YES; +} + +- (void)listContainerView:(JXPagerListContainerView *)listContainerView listDidAppearAtIndex:(NSInteger)index { + self.currentScrollingListView = [self.validListDict[@(index)] listScrollView]; + for (id listItem in self.validListDict.allValues) { + if (listItem == self.validListDict[@(index)]) { + [listItem listScrollView].scrollsToTop = YES; + }else { + [listItem listScrollView].scrollsToTop = NO; + } + } +} + +- (Class)scrollViewClassInlistContainerView:(JXPagerListContainerView *)listContainerView { + if (self.delegate && [self.delegate respondsToSelector:@selector(scrollViewClassInlistContainerViewInPagerView:)]) { + return [self.delegate scrollViewClassInlistContainerViewInPagerView:self]; + } + return nil; +} + +@end + +@implementation JXPagerView (UISubclassingGet) + +- (CGFloat)mainTableViewMaxContentOffsetY { + return [self.delegate tableHeaderViewHeightInPagerView:self] - self.pinSectionHeaderVerticalOffset; +} + +@end + +@implementation JXPagerView (UISubclassingHooks) + +- (void)preferredProcessListViewDidScroll:(UIScrollView *)scrollView { + if (self.mainTableView.contentOffset.y < self.mainTableViewMaxContentOffsetY) { + //mainTableView的header还没有消失,让listScrollView一直为0 + if (self.currentList && [self.currentList respondsToSelector:@selector(listScrollViewWillResetContentOffset)]) { + [self.currentList listScrollViewWillResetContentOffset]; + } + [self setListScrollViewToMinContentOffsetY:scrollView]; + if (self.automaticallyDisplayListVerticalScrollIndicator) { + scrollView.showsVerticalScrollIndicator = NO; + } + }else { + //mainTableView的header刚好消失,固定mainTableView的位置,显示listScrollView的滚动条 + self.mainTableView.contentOffset = CGPointMake(0, self.mainTableViewMaxContentOffsetY); + if (self.automaticallyDisplayListVerticalScrollIndicator) { + scrollView.showsVerticalScrollIndicator = YES; + } + } +} + +- (void)preferredProcessMainTableViewDidScroll:(UIScrollView *)scrollView { + if (self.currentScrollingListView != nil && self.currentScrollingListView.contentOffset.y > [self minContentOffsetYInListScrollView:self.currentScrollingListView]) { + //mainTableView的header已经滚动不见,开始滚动某一个listView,那么固定mainTableView的contentOffset,让其不动 + [self setMainTableViewToMaxContentOffsetY]; + } + + if (scrollView.contentOffset.y < self.mainTableViewMaxContentOffsetY) { + //mainTableView已经显示了header,listView的contentOffset需要重置 + for (id list in self.validListDict.allValues) { + if ([list respondsToSelector:@selector(listScrollViewWillResetContentOffset)]) { + [list listScrollViewWillResetContentOffset]; + } + [self setListScrollViewToMinContentOffsetY:[list listScrollView]]; + } + } + + if (scrollView.contentOffset.y > self.mainTableViewMaxContentOffsetY && self.currentScrollingListView.contentOffset.y == [self minContentOffsetYInListScrollView:self.currentScrollingListView]) { + //当往上滚动mainTableView的headerView时,滚动到底时,修复listView往上小幅度滚动 + [self setMainTableViewToMaxContentOffsetY]; + } +} + +- (void)setMainTableViewToMaxContentOffsetY { + self.mainTableView.contentOffset = CGPointMake(0, self.mainTableViewMaxContentOffsetY); +} + +- (void)setListScrollViewToMinContentOffsetY:(UIScrollView *)scrollView { + scrollView.contentOffset = CGPointMake(scrollView.contentOffset.x, [self minContentOffsetYInListScrollView:scrollView]); +} + +- (CGFloat)minContentOffsetYInListScrollView:(UIScrollView *)scrollView { + if (@available(iOS 11.0, *)) { + return -scrollView.adjustedContentInset.top; + } + return -scrollView.contentInset.top; +} + + +@end diff --git a/Pods/JXPagingView/Sources/PrivacyInfo.xcprivacy b/Pods/JXPagingView/Sources/PrivacyInfo.xcprivacy new file mode 100644 index 0000000..9021190 --- /dev/null +++ b/Pods/JXPagingView/Sources/PrivacyInfo.xcprivacy @@ -0,0 +1,14 @@ + + + + + NSPrivacyAccessedAPITypes + + NSPrivacyTrackingDomains + + NSPrivacyCollectedDataTypes + + NSPrivacyTracking + + + diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index a8812f6..9ed0f51 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -18,6 +18,8 @@ PODS: - DZNEmptyDataSet (1.8.1) - FLAnimatedImage (1.0.17) - HWPanModal (0.9.9) + - JXCategoryView (1.6.8) + - JXPagingView/Pager (2.1.3) - LookinServer (1.2.8): - LookinServer/Core (= 1.2.8) - LookinServer/Core (1.2.8) @@ -41,6 +43,8 @@ DEPENDENCIES: - DZNEmptyDataSet (= 1.8.1) - FLAnimatedImage (~> 1.0.17) - HWPanModal (~> 0.9.9) + - JXCategoryView + - JXPagingView/Pager (~> 2.1.3) - LookinServer - LSTPopView (~> 0.3.10) - Masonry (= 1.1.0) @@ -56,6 +60,8 @@ SPEC REPOS: - DZNEmptyDataSet - FLAnimatedImage - HWPanModal + - JXCategoryView + - JXPagingView - LookinServer - LSTPopView - LSTTimer @@ -71,6 +77,8 @@ SPEC CHECKSUMS: DZNEmptyDataSet: 9525833b9e68ac21c30253e1d3d7076cc828eaa7 FLAnimatedImage: bbf914596368867157cc71b38a8ec834b3eeb32b HWPanModal: b57a6717d3cdcd666bff44f9dd2a5be9f4d6f5d2 + JXCategoryView: 262d503acea0b1278c79a1c25b7332ffaef4d518 + JXPagingView: afdd2e9af09c90160dd232b970d603cc6e7ddd0e LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80 LSTPopView: 9379f00f6ce7d1fc620b50ab00ed3ef97b2d4d52 LSTTimer: caf8f02ff366ca175cf4c1778d26c166183c1b6f @@ -80,6 +88,6 @@ SPEC CHECKSUMS: MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: c50284c86c4e30cee59c186e48767667019dcb61 +PODFILE CHECKSUM: ce689000a7b9b24f5d74cc50a93350665c3af035 COCOAPODS: 1.16.2 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 244981e..323828f 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -19,1319 +19,1565 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 0005259AEE76604A26E43EA994475B68 /* HWShoppingCartPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 8927ADAF60DF7D3D91B390580BD36295 /* HWShoppingCartPresentingAnimation.m */; }; - 00DAE48C9A4FBCD1FCAA922CA57B45F9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 23518377A93659DE7C8E586309E28896 /* SDWebImageDownloaderRequestModifier.m */; }; - 01D2F1D0ABE13AAB2CDC0C25E378E964 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D37BD8FF05E69B29FC64F9CEB3CA7255 /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 021ACCD4343D154E4782A5ECE222A8DF /* LookinIvarTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 587808BB0F9012792B17999F0BB495C4 /* LookinIvarTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 03623FBDBE9F6B422E9A5C6EAD321A58 /* HWPanModalPresenterProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 093706FD3573E105CD2368D496C2DF76 /* HWPanModalPresenterProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 042D40751BD2F51FBE9FECD4707CBBE9 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D13B75999F5A8EF9D0BABA6DAF09179 /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0453019EC6578A67B82CF569EC765546 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 622B25C415B746B0A4DE004201B6C241 /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 059E13B65EC846A6B5D5F5A68D26D194 /* Pods-keyBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */; }; - 05E2B7C1DB7528A0BBEA1521BE0DBAF1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 5593F84C8F2583B27ACE6E149D4B8B0E /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 06C4E233E7977DB81A24482E69B2D7D7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 95F5264D9ED9939AE536B5201D80DB5E /* UIImage+Transform.m */; }; - 0845A6CB7AE77A99CC475BD14101FE87 /* LookinAttrType.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E3DC362C663E7C7DAB5B7DC796C5507 /* LookinAttrType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08719ABCE689ED74FE7486B1E49DAA6C /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = BE11DDB27A20A87C02AE0F91342FA9E9 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 089F3C4BAA46A37EC5763DD312771021 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 71086CB516DC09CA5D29736469412558 /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08D50C5AC969A3701B6F9137CF3A10F1 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 8C63EE1B9AB32B647D64489A498987B3 /* UIImage+ForceDecode.m */; }; - 09A2ACBC8CE1761652EAA20886AEFE10 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 51B83EEE0D453B8B01D8275D3EEBF4BF /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0A7342FACEBA0077F1B06178940883DB /* HWPanModal.h in Headers */ = {isa = PBXBuildFile; fileRef = 53EC2576F6D68ECA3E1920A896AE4E4F /* HWPanModal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B0E6CECDF516BC83756C1D5515A725B /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C7E35B5D53702D7A355AD38231170EAB /* SDAsyncBlockOperation.m */; }; - 0B449236AF25C6C11B0DE3D6D0E4A19B /* LookinEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = D85D1D9B369469B71D9FE49138927707 /* LookinEventHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BE3B8DB6034364E7CF3AE9D01C7C0B4 /* CALayer+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = B53B6AA90E9FBFBBE4E4275DE10531D3 /* CALayer+Lookin.m */; }; - 0C79142D1349DD9A969F47A0A8AAA0CB /* Lookin_PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = C2641A163910BF7346FA6273237FDB7D /* Lookin_PTProtocol.m */; }; - 0EF10747EF2A02413E84BD5EF7C87A4B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = A4685A3F7A42EE78A5B66190A100B3C2 /* MJRefreshNormalHeader.m */; }; - 0F1D0F5DCC8C94A4C684DF846D14F436 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 237D10385C2D9391B809DFD74B21A570 /* SDWebImagePrefetcher.m */; }; - 0FF9F459ED16719292443A4C99B52B20 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 6F98986A52AAB68B64127A983F8CB7D9 /* SDImageCache.m */; }; - 10017B43AC38C3A89D7AC1376C6E7066 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FCA5CF6F4A026896316D8731B3E493F /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 104D9196010D2A8C52C0C19E9C9D52E8 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D0B5D7F39DA4B830F1B68A7D9273B85E /* MBProgressHUD-dummy.m */; }; - 117F4B6F653A8DA2637C5C93B4993884 /* Peertalk.h in Headers */ = {isa = PBXBuildFile; fileRef = 141D1CCF79DF1688C14B5C5A4CACC6E0 /* Peertalk.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 11C929E6BFB46F981685446F26DCE605 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = FFF8ADD6067D862411385E3BFF71A8DA /* MJRefreshAutoFooter.m */; }; - 11D4DC1FCE5647EEA8484AA4A880AF8F /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B77702D1A0EF9DC4542AD40D9D3062E /* MBProgressHUD.m */; }; - 126496714AD564062A8C10787CC01B8B /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 77EBE36C10B9452DC1931AC9779D7F79 /* MJFoundation.m */; }; - 12EC136F97CCCDD8C3765925FABA52CD /* HWPanModalHeight.h in Headers */ = {isa = PBXBuildFile; fileRef = C49E916A72175489DFFC49A15E87403D /* HWPanModalHeight.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14943D0EE97A4966510A86F5C3FC66A5 /* MJExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ACD4F15622D5B40EA4047FEA329658B /* MJExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14CA284AC4FF1EED75E785641EE98034 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F62EE3A88E154ADAC90DDF6BC60DFB6 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 150116E888969E8304BA3E2BB6529461 /* LookinHierarchyFile.h in Headers */ = {isa = PBXBuildFile; fileRef = D4EB28525886DCE45DC1BBE08F77BCDF /* LookinHierarchyFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0005259AEE76604A26E43EA994475B68 /* HWShoppingCartPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 62C28B0ACA1E8D749FA6E65D70CFCB2D /* HWShoppingCartPresentingAnimation.m */; }; + 00DAE48C9A4FBCD1FCAA922CA57B45F9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 02986FE530B6F5FD0ABF721900839DA5 /* SDWebImageDownloaderRequestModifier.m */; }; + 01D2F1D0ABE13AAB2CDC0C25E378E964 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = BD89A8E0323AB57CE283C150C3D4C556 /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 020FEDA58170EE1ABDF9E268D373CF4F /* JXCategoryNumberView.m in Sources */ = {isa = PBXBuildFile; fileRef = 44CB5B4F2C2351C8F32C675C94C2EAC0 /* JXCategoryNumberView.m */; }; + 021ACCD4343D154E4782A5ECE222A8DF /* LookinIvarTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 765DBAD68AB5F355FB80870758AFB22C /* LookinIvarTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 03623FBDBE9F6B422E9A5C6EAD321A58 /* HWPanModalPresenterProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = E8DC9FFB899510CE978017ADFAFE6D87 /* HWPanModalPresenterProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 042D40751BD2F51FBE9FECD4707CBBE9 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F246E4D58E65C83AB3493871F692FC9C /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0453019EC6578A67B82CF569EC765546 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3201B19667C12026E1C92EA1DD973BB7 /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 05E2B7C1DB7528A0BBEA1521BE0DBAF1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E18E15D3A7901E5A84136DADC023216 /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 05EEA40D460AB9A5A6E8D33AAAEF801E /* JXPagingView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AFBCBD9F77FD5CF26B2BEBE02B1E19D9 /* JXPagingView-dummy.m */; }; + 060B00D5B019369654AEAB7C116DC119 /* LSTTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = C4A783F974F95D31DCCDA721D4F965EC /* LSTTimer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 06C4E233E7977DB81A24482E69B2D7D7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = A67C49E3D329D82553E5FEBB4951ABD7 /* UIImage+Transform.m */; }; + 0845A6CB7AE77A99CC475BD14101FE87 /* LookinAttrType.h in Headers */ = {isa = PBXBuildFile; fileRef = D7DFD14540146731FB9E466FA1EB81F0 /* LookinAttrType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08719ABCE689ED74FE7486B1E49DAA6C /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D9AA9876374637F32E00BE13AA1880 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 089F3C4BAA46A37EC5763DD312771021 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 390647665D633FF246584D1E27162F0D /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08D50C5AC969A3701B6F9137CF3A10F1 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6645D9E2FCEC9ED435B284460DEDDF89 /* UIImage+ForceDecode.m */; }; + 09A2ACBC8CE1761652EAA20886AEFE10 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 471A02E298FA363A6051045C83C8BE05 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A7342FACEBA0077F1B06178940883DB /* HWPanModal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6260795D5ABBA18F8EFECC2CEB871872 /* HWPanModal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0AA1842830C770B1E299BAC977E813D9 /* JXCategoryIndicatorRainbowLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = FD5B9F06C28C32AA434A5A2FFACDF89A /* JXCategoryIndicatorRainbowLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0B0E6CECDF516BC83756C1D5515A725B /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E8666C77464C3B683AB0F8D4DEA6951 /* SDAsyncBlockOperation.m */; }; + 0B449236AF25C6C11B0DE3D6D0E4A19B /* LookinEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E97B2ACE11733D7DD5ECA116979B91D5 /* LookinEventHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0BE3B8DB6034364E7CF3AE9D01C7C0B4 /* CALayer+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 673B42B9F094B1F5ED808EE1BA26FC30 /* CALayer+Lookin.m */; }; + 0C312924F0A07471A1D04AD15D32BF3A /* JXCategoryIndicatorRainbowLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = CC8BAAD188938B05A876ECFEAA39F2E6 /* JXCategoryIndicatorRainbowLineView.m */; }; + 0C79142D1349DD9A969F47A0A8AAA0CB /* Lookin_PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 9545413A1EE5D2E50A21E8D9794A771A /* Lookin_PTProtocol.m */; }; + 0D6EFFD314E70C1E547970D8CEF11131 /* JXPagerMainTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 119B8F0EF70910D693FCCA816529E357 /* JXPagerMainTableView.m */; }; + 0EF10747EF2A02413E84BD5EF7C87A4B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = CAD02815855109CE0DDD83222F913EF8 /* MJRefreshNormalHeader.m */; }; + 0F1D0F5DCC8C94A4C684DF846D14F436 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = E48A50CB4DE0A87DE4F3E1BFE24DC7B7 /* SDWebImagePrefetcher.m */; }; + 0FF9F459ED16719292443A4C99B52B20 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 11EEC0D59FA31FAAD209A208EB338575 /* SDImageCache.m */; }; + 10017B43AC38C3A89D7AC1376C6E7066 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E889A3C02C6D9C2F5501AF30759E916C /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 104D9196010D2A8C52C0C19E9C9D52E8 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 93081A25D8BCD8327365F5FAC77C46F3 /* MBProgressHUD-dummy.m */; }; + 117F4B6F653A8DA2637C5C93B4993884 /* Peertalk.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FDFBF5B5FE03EAE7CBA31ED300F848E /* Peertalk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11AD210D385F977383AFB974D3CDEF53 /* JXCategoryListContainerRTLCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C36F83AF55E2873F497777F59071760 /* JXCategoryListContainerRTLCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11C929E6BFB46F981685446F26DCE605 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BE6EFE785E6216D9C7C1D6B7A4EEA5EA /* MJRefreshAutoFooter.m */; }; + 11D4DC1FCE5647EEA8484AA4A880AF8F /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = DB3619AB8798CD8CAE31E140F80F2DC0 /* MBProgressHUD.m */; }; + 126496714AD564062A8C10787CC01B8B /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A7EBF5198D90CFC9C01A0BA03924D8 /* MJFoundation.m */; }; + 12EC136F97CCCDD8C3765925FABA52CD /* HWPanModalHeight.h in Headers */ = {isa = PBXBuildFile; fileRef = 5731585BDD8DA229201CF537357BCA56 /* HWPanModalHeight.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1399CD097E164E2C7A6882F0C8FFA525 /* JXCategoryIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D6F5B88F49EB151A388B58319A67E2A1 /* JXCategoryIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14943D0EE97A4966510A86F5C3FC66A5 /* MJExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AE09548D63659FAE72F5C6F1EBF230FC /* MJExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14CA284AC4FF1EED75E785641EE98034 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 94DB79C6893EAE9D1A7D3559B485BCC5 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 150116E888969E8304BA3E2BB6529461 /* LookinHierarchyFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 63000DF25140BBB4F03EDFC289F2B197 /* LookinHierarchyFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15B27182B591769C57B55544260DC886 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 165F1C9CBD621828C788A3018D0426C5 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = BF5EC4E67D9695435096AE8FFF0726FA /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 165F1C9CBD621828C788A3018D0426C5 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = FB334521D7F08199DE839AB68A37105C /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 168889E3E897E6D6102A2AA7F7C47496 /* JXCategoryIndicatorComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B0139E3193D3960F1A46D73064CA34A /* JXCategoryIndicatorComponentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16D7DCB7CC985C33EEC41B371C029C84 /* SDWebImage-SDWebImage in Resources */ = {isa = PBXBuildFile; fileRef = CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */; }; - 1708C1D28B421C4AD310426D1695CE77 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = F24C826B62D5E083C9293F7721C463C2 /* SDAnimatedImage.m */; }; - 1754DD5511A7BF462B116F70B0D4006A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E41E643057B645A4E6C5FEA5E52213CB /* SDWebImageOperation.m */; }; - 1830558A4D2D63C8E76BC3136D8213F9 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 67D554550B250775795416CCAF8BD370 /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 18660FA595DBE133BB784E813A7122A8 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 7859E48715647D45C428FB82F31DB2BA /* SDImageHEICCoder.m */; }; - 186B573F1BEB8A23419A02814A7741DB /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 65EE0AA02CCB84E9D0C6987A57196DE0 /* MJRefreshFooter.m */; }; - 18AD90784D549657DF51BC8377DA3085 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = FB689A278C80C26E3B3E80EDA3887106 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 18CDCA86F129B7251D21E8F3FF8656B9 /* LSTTimer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F9F21BFD087BDB0FF37B51B916F0A3DC /* LSTTimer-dummy.m */; }; - 1B52E938D7999FC0CDA2AA22674948EB /* LookinAttributesGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AA6F90EC76FE7C2ACDF3266FD792D7A /* LookinAttributesGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B6CE67196EE181E6B56788EFC7E00D3 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C99A570F5F1154C55309832EC47D0D /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1BC44E2FDD197D5210A23C9CCF1A906B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = BF559CBB24F4A49720F72A32ADDCCFE2 /* SDWebImageCompat.m */; }; - 1C5CCB87E5B9C500F07A8244D7906295 /* LookinAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CA040E4FC9E6D5254278E66354DE0995 /* LookinAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C8B70C74291A3076746C3B18781568E /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 79B0D13A04128B711BB3AFF0676EC3D0 /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E03AEFAD237B8966FCFA45B3312FEE7 /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = EAE44CAA3E728CD13C43CF7D34627D80 /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = C7586CB0CDC6CAF19F6A64083B6C8C0F /* HWPanModalPresentationController.m */; }; - 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 56A664809217C1D10A7EC649E972D6AB /* HWPanModalPresentableHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B6CB7D56E64BDB8EB50D17E5CEC7C8F /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EC3AEA15AE416A53357261B37C622BD /* LKS_TraceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A75ADFE775EE09236D1DF5672ACB9A4C /* LKS_TraceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1ECC5F320AEFB120081358B4FFB7442F /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = F72D861CBD81CE860AF0AE80BBE0D883 /* NSString+MJExtension.m */; }; - 1EDC6F899051F0E858270F7556AF2F12 /* UIVisualEffectView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 80E15D4BAC4857AD45CC8CDC40384F0F /* UIVisualEffectView+LookinServer.m */; }; - 1EDF5F5B68D4A76CE59D5B6CC7B6C469 /* LookinAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 074925B1189A88BAA6297431490B8041 /* LookinAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FD36A180D43C773D95D8E5BF719494C /* LookinDisplayItemDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = FADEEDA2729187D0D3E4FF58DCAE4F5E /* LookinDisplayItemDetail.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FDEA3FFA45F29C1331723E9579D66A5 /* LookinAutoLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 0175DE132412321B3302CBE48CE0F712 /* LookinAutoLayoutConstraint.m */; }; - 2055774CD703B52DABFB1CC588394A94 /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = F7A5B6B4FC335FF159BAE91EDDEC3320 /* MJExtension-dummy.m */; }; - 20D618EF3EA5E3BE96DA24D36E3CA9EF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 776331A7467F397FCD02F62B233A6E93 /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 20E738E52B4712385489A62374C74C7F /* Lookin_PTUSBHub.m in Sources */ = {isa = PBXBuildFile; fileRef = 899D158EA21A86AFAE75EACD2CFC106B /* Lookin_PTUSBHub.m */; }; - 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EE2F8245BCEBA174A7A8891FBE03ECB /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 0041D895443AAAA3D1BCD4056EBB4F37 /* UIViewController+LayoutHelper.m */; }; - 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B099323376948696DA373792CC4983D /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2460C08042AF8B7D0492A062F755986E /* NSString+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 4610142EAB51ECDD8FC137942A59F231 /* NSString+Lookin.m */; }; - 24E8E4ED0B5D988E3346E6638619F4E4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = A8A5F422D3A80975E78C20D9980BBAE7 /* SDImageFrame.m */; }; - 24E963C1D6245F98BAC8A0ACCB7DE987 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = AB93341F4852834DE8BA29DAB3E69371 /* NSBundle+MJRefresh.m */; }; + 1708C1D28B421C4AD310426D1695CE77 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B609960A71B1FE2AB814B679D9E7609 /* SDAnimatedImage.m */; }; + 17341EDF872432C3966B77976F3E0470 /* JXCategoryTitleVerticalZoomCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 60A68C8A5D160FE046F60DF6C446111D /* JXCategoryTitleVerticalZoomCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1754DD5511A7BF462B116F70B0D4006A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = ED2932A528EF3931C345CFE64B9F95D6 /* SDWebImageOperation.m */; }; + 1830558A4D2D63C8E76BC3136D8213F9 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 75B6A4916D912131001F61C28CCA6565 /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 18660FA595DBE133BB784E813A7122A8 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3125F7D904D9F1F20C7699EF5186B19F /* SDImageHEICCoder.m */; }; + 186B573F1BEB8A23419A02814A7741DB /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CE7B5832F4AC9648A3CEB7DD03473E4 /* MJRefreshFooter.m */; }; + 18AD90784D549657DF51BC8377DA3085 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = EC33F9EE9311F0E41E69AB2D40770217 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B52E938D7999FC0CDA2AA22674948EB /* LookinAttributesGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 57D32F597DFAC06B9198FA1F48D2995D /* LookinAttributesGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B6CE67196EE181E6B56788EFC7E00D3 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 911E6F5D1D17453D35BE3FA4A9086972 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1BC44E2FDD197D5210A23C9CCF1A906B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 64891F4568CD87380D133019B00B2324 /* SDWebImageCompat.m */; }; + 1C0FA6017CAD67C1A80FFA70024FC6FD /* JXCategoryIndicatorCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CF64931699D303A3C9AE1FFC4682E257 /* JXCategoryIndicatorCell.m */; }; + 1C1BC9F0555B36914FF5278D30152DE6 /* JXCategoryNumberView.h in Headers */ = {isa = PBXBuildFile; fileRef = C6B6ABC9B259D86AA3C2451E682BE701 /* JXCategoryNumberView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C5CCB87E5B9C500F07A8244D7906295 /* LookinAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 908BDA99457974AD8998A674A0C0FB12 /* LookinAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C8B70C74291A3076746C3B18781568E /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DC4AC8D166AB2BD8B557BFA9FA9872C /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = A8105D73597438386DADF22233AAD4B3 /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EB1D88070F8207A333D4573DA43A15 /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 94D99E2E2730992302FB9BAA7CCE2A1C /* HWPanModalPresentationController.m */; }; + 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFBC54BDE2AC21397492351C31C587A /* HWPanModalPresentableHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1DC161351EBD409CC622E826340E4FD8 /* JXCategoryTitleVerticalZoomCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 54CBDA1EBC8A896E6DB3A15D5332DB1C /* JXCategoryTitleVerticalZoomCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 9777292C62AA2375C63BAEF75D1F940C /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EC3AEA15AE416A53357261B37C622BD /* LKS_TraceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1278AB0B776862F23D89B7E8596E3598 /* LKS_TraceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1ECC5F320AEFB120081358B4FFB7442F /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B4EF64EB8018D8E9CE7C8CB5FACCD5B /* NSString+MJExtension.m */; }; + 1EDC6F899051F0E858270F7556AF2F12 /* UIVisualEffectView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CE6BF39C6199FC5B55217046DDE2CDB /* UIVisualEffectView+LookinServer.m */; }; + 1EDF5F5B68D4A76CE59D5B6CC7B6C469 /* LookinAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 659E6E588427268237F9F2C40D2F6CBD /* LookinAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1F778CA18D1F4A50D9F15280B25D10EB /* JXCategoryTitleImageCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = DDAA59B8AF34E0C4765874AEE69571F7 /* JXCategoryTitleImageCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FD36A180D43C773D95D8E5BF719494C /* LookinDisplayItemDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E7F18004D9337D64F0F606975492DF4 /* LookinDisplayItemDetail.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FDEA3FFA45F29C1331723E9579D66A5 /* LookinAutoLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA1EEEB5386D6FCA6523BE43601C382 /* LookinAutoLayoutConstraint.m */; }; + 2055774CD703B52DABFB1CC588394A94 /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D4A62A4549AC17B0296FF7D29E15454 /* MJExtension-dummy.m */; }; + 20D5706AD3ED295B4FBACD8825DC3A1E /* JXPagerListRefreshView.h in Headers */ = {isa = PBXBuildFile; fileRef = 359AD735B8CFD982730F6CEB0F56A487 /* JXPagerListRefreshView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 20D618EF3EA5E3BE96DA24D36E3CA9EF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9820AAA1C732351179414BB46300A1B7 /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 20E738E52B4712385489A62374C74C7F /* Lookin_PTUSBHub.m in Sources */ = {isa = PBXBuildFile; fileRef = BC38AB7DAEDA3DEEFFAC64BDA7FA3C88 /* Lookin_PTUSBHub.m */; }; + 20FBBC12322412237D48D3695D98E043 /* JXCategoryDotView.m in Sources */ = {isa = PBXBuildFile; fileRef = EED2C7FD129EA6F065286A12502B79B7 /* JXCategoryDotView.m */; }; + 2175B894008D948C762468307BA677B8 /* RTLManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E5EA191D7CFA74A3FEAFB27130A3FEC7 /* RTLManager.m */; }; + 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 23648E3B16301958DD4429C021EB223C /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 22C38AE7AB145224FF646303AFED11D2 /* JXCategoryDotCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = ABD4819FE00A1A954ABDDF0893C72587 /* JXCategoryDotCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 76724C714C93839E6993DF68B545F17B /* UIViewController+LayoutHelper.m */; }; + 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A56B5A6CAF35241FF9D41CAC7DC1D6D2 /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2395CE03CE80FC5F9A7F61C48270618B /* JXCategoryViewAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = B46184374613AB561CB67E0F1EF14DD8 /* JXCategoryViewAnimator.m */; }; + 2460C08042AF8B7D0492A062F755986E /* NSString+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EC522C5B6A10C53A05FE81CED85983 /* NSString+Lookin.m */; }; + 24E8E4ED0B5D988E3346E6638619F4E4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEC3302C39E58E44D49A12FA8699A84 /* SDImageFrame.m */; }; + 24E963C1D6245F98BAC8A0ACCB7DE987 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 824A8DE6460C98A565B1EDD8B4432F50 /* NSBundle+MJRefresh.m */; }; 2567FE276DB76481DEFC7DDFE7D775CC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 261C31F4038EC00D5961218C97905E21 /* LookinConnectionResponseAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = BAD931CF8729677FC0BD6248B49E6631 /* LookinConnectionResponseAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 27212D06F5EDE3BB10264D93075B2275 /* LookinDashboardBlueprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 140B9E97F5B5BEB056AA3A4DFFA9891B /* LookinDashboardBlueprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2759D8D4FCE58812ADECB348E369C6F0 /* LKS_MultiplatformAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = E78C9A636C9E4C5CFBDECBA5127AF367 /* LKS_MultiplatformAdapter.m */; }; - 27CC45A4ABE5B40723D35310D05CD146 /* LKS_EventHandlerMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = BFD36E41E270B32316CAE346D73B1BB4 /* LKS_EventHandlerMaker.m */; }; - 288CD3416B265CAC1300D7938167AE66 /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = A73F313A18713E36B251C92C66806CE8 /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 288D796F3F7B9F42690E24A3B1018B2C /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 741B32704926AB941D9209B2D37E2B8F /* SDImageIOAnimatedCoder.m */; }; - 28BA9702905AA2B4C1E9E4878032D4E4 /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = AE979EFDEE516846488B7EE0D6F7EED8 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 29F7F0E98FD26A96364DBACD7D5F237A /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = D1995E5A7C78EB3AC4764F06A4A7E676 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2A24F241D7D74FF6DEA953F9DD49391C /* LKS_EventHandlerMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = E19751E7E128A05C5F94C54CB5222006 /* LKS_EventHandlerMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2CDC7B9EAD356E35FEAF526EEA6A8E91 /* LookinWeakContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = ACDFCFE3242922DD1C6F9C0911E0A56B /* LookinWeakContainer.m */; }; - 2D0E2E3CDCB12399497B4F31D4C20E3E /* HWShoppingCartPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = D9879EAF15EB971D024F6726C4E07562 /* HWShoppingCartPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2DC44A09A6C9D6DC7D1BDA2DFCF99EE3 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = EF96CCDE1944CF562A65CA60FCBAD8CC /* MJRefreshConfig.m */; }; - 2DDA5F044BC698BC5D48A7CFDDBF71E3 /* LookinAttributeModification.m in Sources */ = {isa = PBXBuildFile; fileRef = 624CC6F33BF93A1458307F73823C3E10 /* LookinAttributeModification.m */; }; - 2DDD48230ED9E8068C7E439D79B99A8E /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 8204B00622081F3C51B1FC2D83A2D0D0 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2E86A7C77E43AEA4697979F1F848E68D /* LKS_RequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AE403DA6C5955C67D130890FCA703778 /* LKS_RequestHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EC1750C894F036194B90CFD26072B0C /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = D1A874AEEF141E292D730F9161627B04 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EFF1EFA2FF0D2F1AE44A9DDBB932425 /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AD771C5136CD5549FAE44B9E4C2DFD2 /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2F6D9BEA582A2DBB70A6C3B2FC2DB91E /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = FB095F0736BB4D6DAB423B110675CCD9 /* SDWebImageDownloaderResponseModifier.m */; }; - 3111CEA93C868CA68CBD351C934FEB80 /* LSTPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 80A4C5F30966DCCAF12719455CE5BA94 /* LSTPopView.m */; }; - 3127F22BF0A5465D472669272D586BDC /* HWPanModalIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = BF679003FB79C12E8A8221EC19044EC3 /* HWPanModalIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3187FF0C251D1B78BE87F64F6F6E944A /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = C930EDADB5661C1F591CA4E0A60BCA26 /* SDWebImageTransition.m */; }; - 31DC2EC78AD1F8241AE6051EF9E73B0A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BAFAB49E37FE01E69DA8AF02F372885 /* SDWebImageDefine.m */; }; - 320DE42AF3CFE11FF785FEB1A7E6547B /* SDImageFramePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F01F027ADEF8C49A4605D787E41BD1C /* SDImageFramePool.m */; }; - 321F87DA34863DC5C977323BAEDB2B55 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = BE0B0E1A9A292EDE11246C6685B3FF8A /* NSObject+MJCoding.m */; }; - 325CA20B9271F3E008234E1518B79061 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 63277FA9AFB139990459DF6C57B238F5 /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 261C31F4038EC00D5961218C97905E21 /* LookinConnectionResponseAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 989150BD3DA7E7AE5D05E2F37E778A8D /* LookinConnectionResponseAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 266352AA446DAE8C9502E83810C174D9 /* JXCategoryImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7778E8300903006F261959B2010A06D2 /* JXCategoryImageView.m */; }; + 27212D06F5EDE3BB10264D93075B2275 /* LookinDashboardBlueprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D31ED01216EF87422BD04709990AFA0 /* LookinDashboardBlueprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2759D8D4FCE58812ADECB348E369C6F0 /* LKS_MultiplatformAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FBD8AFE7FA55EAB140791EC34C18CD4 /* LKS_MultiplatformAdapter.m */; }; + 27CC45A4ABE5B40723D35310D05CD146 /* LKS_EventHandlerMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C21A04AB85F6948BCB44480387E46C5 /* LKS_EventHandlerMaker.m */; }; + 288CD3416B265CAC1300D7938167AE66 /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 367088C36E8BF33957802AE4A6256CC1 /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 288D796F3F7B9F42690E24A3B1018B2C /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3504487D6CA5438A7FB00D149564DDFC /* SDImageIOAnimatedCoder.m */; }; + 28BA9702905AA2B4C1E9E4878032D4E4 /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 55A76B2979ED12495977612719BE47A2 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 29F7F0E98FD26A96364DBACD7D5F237A /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 402826B784C1198142F399AD251F2A3A /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2A24F241D7D74FF6DEA953F9DD49391C /* LKS_EventHandlerMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = E5AA796F8B4298B625A467D39523F40F /* LKS_EventHandlerMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2CDC7B9EAD356E35FEAF526EEA6A8E91 /* LookinWeakContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 16464E573FCB8AFF2E7DB58E7A507D73 /* LookinWeakContainer.m */; }; + 2D0E2E3CDCB12399497B4F31D4C20E3E /* HWShoppingCartPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = B9C3A1374DADDEAE813F69F05F5A2564 /* HWShoppingCartPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2DC44A09A6C9D6DC7D1BDA2DFCF99EE3 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 42EF67A85226C8C14C983E81C71F392D /* MJRefreshConfig.m */; }; + 2DDA5F044BC698BC5D48A7CFDDBF71E3 /* LookinAttributeModification.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B35D70EDD8A3E56FE6F0E6934A400CC /* LookinAttributeModification.m */; }; + 2DDD48230ED9E8068C7E439D79B99A8E /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3422D3CB84719A98D68CD9DE2857E694 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2E86A7C77E43AEA4697979F1F848E68D /* LKS_RequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D007BE64FBA88DB3F5D92E0EAEDEAD /* LKS_RequestHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EC1750C894F036194B90CFD26072B0C /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 761A654F557EA15B24079623AF9184F9 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EC7BA321016EC71EA595E4BAF0B7E8B /* JXCategoryDotCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 98D2F9331639FC6D12A4091DD5F47C96 /* JXCategoryDotCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EDA227454079ED3F6371BF34AFD4735 /* JXCategoryIndicatorCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3875C6FE72ED2368D3701E9901F883B7 /* JXCategoryIndicatorCellModel.m */; }; + 2EEB29D2C570F11620D4CF90D7DFD569 /* Pods-keyBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EFF1EFA2FF0D2F1AE44A9DDBB932425 /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 797DE6794620B6AD238FF0B8B61A1B32 /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2F6D9BEA582A2DBB70A6C3B2FC2DB91E /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC2FF6B1D45486A6893E456C4B85E05 /* SDWebImageDownloaderResponseModifier.m */; }; + 3111CEA93C868CA68CBD351C934FEB80 /* LSTPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2F1B06BC651834D7B3EA1FBC96E466 /* LSTPopView.m */; }; + 3127F22BF0A5465D472669272D586BDC /* HWPanModalIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C8BABB078FC5FF697A3609C777FC51FC /* HWPanModalIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3187FF0C251D1B78BE87F64F6F6E944A /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = BFEF7CB304E59179EBDA954FA636E74D /* SDWebImageTransition.m */; }; + 31DC2EC78AD1F8241AE6051EF9E73B0A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C599636DAB63CB63CC65E368E1BAAFC /* SDWebImageDefine.m */; }; + 31FA8264AA5553AB85039530B1FB8C4B /* JXCategoryNumberCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 874DD2FA3B20B6BCBCBEE03BEEBE1281 /* JXCategoryNumberCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 320DE42AF3CFE11FF785FEB1A7E6547B /* SDImageFramePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E8C0DD47533304FD7479FB5A47A4E3B /* SDImageFramePool.m */; }; + 321F87DA34863DC5C977323BAEDB2B55 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FD309B3FADE968B4258080AC443EFCB /* NSObject+MJCoding.m */; }; + 325CA20B9271F3E008234E1518B79061 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7626DD9951DC84318DF6E875CD7A8C20 /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 327BA3DDA513422E632D3DA4A8FC60EC /* MJRefresh-MJRefresh.Privacy in Resources */ = {isa = PBXBuildFile; fileRef = 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */; }; - 32ACEDCEBE0507A82D6323114A1C74F1 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 817B07C3E952A5A5F2082BE15C3C500E /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32F2B91621A2F8F9AD7C8E2B224D73F6 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 3663272D41C8B58200506DDA7E7A2903 /* SDWebImageDownloaderDecryptor.m */; }; - 32FF240AE9443A1D2CFE27F50B55F591 /* LKS_MultiplatformAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 73EFE9F07FF04A733446FD7A74A02718 /* LKS_MultiplatformAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 332F2099D726E75CEFAF1F734104A066 /* LookinWeakContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = AA356D7B80B205861FCCD6FECB42DDE3 /* LookinWeakContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3331A013D48A5063B483A51B7E9068ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E95EEB52B039FDCAE4992EC84BF70332 /* AFURLSessionManager.m */; }; - 3338AA0580424EFB0FE59C3A37702A47 /* LSTTimer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 93D6767143B7C5D00675B75D54B0AFEF /* LSTTimer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 33D3587AF629B2FA21554DA002D6ACB8 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C27FE20E006C874307EF5F2B30AA69E /* SDImageCachesManager.m */; }; - 34B28D4F0168194B6EFAC0520EB7A7F4 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EFEA57CFC8959BF5EF4B795BD808107 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353C1D03325B8F3E65F985DA29245F18 /* UIViewController+LayoutHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F369D00927FCA59283AE71B174D2D1D /* UIViewController+LayoutHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35D42759A562C482EA5DF574F75CF3B8 /* NSArray+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 81A6154946F38EFB8836E3145513AAE9 /* NSArray+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3679603CE8336E00A0BFAA39E10A92D0 /* HWPanModalShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 57AA794BD50692239409E574C7FD0846 /* HWPanModalShadow.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36B3F095DFFC8D2AF2C0A8C523173927 /* HWPanModalContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = F5D51DADE6BB30185CA5DE0A026B674A /* HWPanModalContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36F4B09E7C71DCC5CEC6057814033C37 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A0C23E787A5997AF276176CBB988D241 /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32ACEDCEBE0507A82D6323114A1C74F1 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F21EDB4000AA52958FC207353BC36367 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32F2B91621A2F8F9AD7C8E2B224D73F6 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = DBE1F0821F32567F3E84359D65C8422C /* SDWebImageDownloaderDecryptor.m */; }; + 32FF240AE9443A1D2CFE27F50B55F591 /* LKS_MultiplatformAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 06BE908D1EBE4269ACB69B26DE9B834E /* LKS_MultiplatformAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 332F2099D726E75CEFAF1F734104A066 /* LookinWeakContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 886E6269011F3D0F924F30F32F08508F /* LookinWeakContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3331A013D48A5063B483A51B7E9068ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 55E89941A6B7A73D479A0770A9C96C14 /* AFURLSessionManager.m */; }; + 33D3587AF629B2FA21554DA002D6ACB8 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 25A5CCE05BC1D97AB685203E1D41C4B0 /* SDImageCachesManager.m */; }; + 34B28D4F0168194B6EFAC0520EB7A7F4 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = F55015AACD21AF6274741BBDAC6148E2 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 353C1D03325B8F3E65F985DA29245F18 /* UIViewController+LayoutHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 23A344AF55814873B0105902E9FBBB2A /* UIViewController+LayoutHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 35D42759A562C482EA5DF574F75CF3B8 /* NSArray+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = B937D529B74DB9581A000F395FF3B6F7 /* NSArray+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3679603CE8336E00A0BFAA39E10A92D0 /* HWPanModalShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 039AC3B9A6AA2BDAB5EB71E7A54C1EF5 /* HWPanModalShadow.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36B3F095DFFC8D2AF2C0A8C523173927 /* HWPanModalContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = A87C5BAF6B8038E9EE8A33551A798606 /* HWPanModalContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36F4B09E7C71DCC5CEC6057814033C37 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 8179AB093F869B4BCCBBF8427F69555B /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3777CD89D444CBBB48AE323B303F3FC7 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */; }; - 37B890ABDC7DD441E6AA662325D412E6 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 44DDF1AA5625A95CA1C76B7546758226 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3800EA1B83FDE869FB2E4B049F519962 /* UIViewController+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D72EC9997A8CA1698A3020135CE8BC2E /* UIViewController+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 381E0DBE152CA0D9C66310CB77A20A83 /* HWPanModalInteractiveAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 31F540B1617ECFBBE3A0FB1043BFB861 /* HWPanModalInteractiveAnimator.m */; }; - 38938E604A7D708E6378A44063EF3512 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CE1FC58856D64F439A2DB39A5CBEAF01 /* UIImageView+WebCache.m */; }; - 392F62298E0D8C669229E132D791BBF5 /* UIImageView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 98AC0F8649D533FEA089C0D7C8018ABC /* UIImageView+LookinServer.m */; }; - 3A1AD84C0DC3C256418CC46739024E96 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5A2383372F42B2452808A886E02C6B /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3A2FCB914F6EADED828FF05F7E9132AE /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = FC070F9BCE8A8D0A21448F82A7DD5F5A /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B1C72DC480AB19BD55B6275750D62FE /* NSSet+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 5CD0546B82DCACC9EF9FE9B72325B901 /* NSSet+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B8EDFF69A68ABD3735E0C6931CA5C95 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 595622377DEA1856384D2D262C52C73F /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3BB69CB142D744367868F834912993CB /* UITextField+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 27339E9CA8A7C6DC7F3E8B828C3D0038 /* UITextField+LookinServer.m */; }; - 3BD85ED8999015326D93D8EEADCCF910 /* HWPanModalPresentationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D1699A762F8D719D2565E3B0B508554 /* HWPanModalPresentationDelegate.m */; }; - 3C7815EEC599DD7D42FDEF19B2FF1563 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6E20B7CDAEE04E340BBA081726D5AC /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C7EAECB8C573E714C818BA04EB33773 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 88C23FF116C3257A27A26A897D5AE6DB /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C8F2F868D0C361CAF43E53CDB8EB631 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = C84FAFE47B2E31104A515395A5239442 /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3CA9E838F014DC32CFCF6AD36F5D7E58 /* HWPanModalInteractiveAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 10A8507648AC9DE21CFA0929B1ED0404 /* HWPanModalInteractiveAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3D0BBFEC1921CE71BC240DC18D8BE540 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = 97C8222012D0B30C2E5C40B4867A1AAF /* SDImageTransformer.m */; }; - 3E3D09700A62280A9EB8D65B97335ED8 /* LKS_CustomDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = C0E2F76DB6A01DBF448BF55D94414007 /* LKS_CustomDisplayItemsMaker.m */; }; - 3E982309E295BB31C065D62750D0F1FD /* UIView+LSTPV.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C39336AE39057C3014C954C694C278F /* UIView+LSTPV.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3FF7252DD60182221BB1E5A167C41A07 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = FA56E3002035BE556C5ED858D43F49DD /* UIProgressView+AFNetworking.m */; }; - 40AD5D0AB3ABF7F3A5A4A98BC5B84419 /* LookinAttributesSection.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B55BC4062AFBC21B6F27CA6801F7F45 /* LookinAttributesSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 416DA8B2997381F954DBA6E6A53DA4A2 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = AE9EAD92339D5CAFE9DD672B7A3B6E7D /* NSData+ImageContentType.m */; }; - 41A4AAE7E6024E7AAB83DD22FB42D34D /* UIColor+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1998A1E21783C0F00F27637B63C88F21 /* UIColor+LookinServer.m */; }; - 425C9EA28FBEB7F7FC09A3F4A88C5955 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = 70D5B55A578973F4D162548B46979D49 /* SDWebImageError.m */; }; - 4334CCEA5B7EA16A4EF26702D287CB07 /* UIScrollView+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B6E38C872CB24F91AFE94F3DF5EFCC2 /* UIScrollView+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 442F468E261A1106C291BF52BDBF9DB7 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 29AAA748545CCD9E566E6F15C52A44CB /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 447BBB1BCA8E0F2D23634888BED6DA81 /* LookinDashboardBlueprint.m in Sources */ = {isa = PBXBuildFile; fileRef = A28F16D63BCA40F7DC78734CFE3A235D /* LookinDashboardBlueprint.m */; }; - 44CD842019B1CEA681F820F37A30B7C4 /* SDImageFramePool.h in Headers */ = {isa = PBXBuildFile; fileRef = ABF08650352052DEA4797A89BFD856FF /* SDImageFramePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4503182D5F8EF2F02609862026D2D455 /* HWVisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D7D197A108D97B04C3BA390CD4499D8 /* HWVisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 452C940762F65B125C216F73B369F583 /* MJRefreshStateTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = E5BBE1866B6FDB7D5307A6075BE5F347 /* MJRefreshStateTrailer.m */; }; + 37B890ABDC7DD441E6AA662325D412E6 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = ED6F94603AF0AF72D292CADE8ABCEEB3 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3800EA1B83FDE869FB2E4B049F519962 /* UIViewController+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3753072CB1EE987F4CDC7E86385B9A99 /* UIViewController+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 381E0DBE152CA0D9C66310CB77A20A83 /* HWPanModalInteractiveAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BE68C7303DE07C8DA01573CDDE9003F /* HWPanModalInteractiveAnimator.m */; }; + 38938E604A7D708E6378A44063EF3512 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1600286757D192233397A2BF1A2371 /* UIImageView+WebCache.m */; }; + 392F62298E0D8C669229E132D791BBF5 /* UIImageView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C560A21071D707C98AE6CD75AED8BFD /* UIImageView+LookinServer.m */; }; + 3A1AD84C0DC3C256418CC46739024E96 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A6A16B78780399804F5DD15816ADE2B /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3A2FCB914F6EADED828FF05F7E9132AE /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 47F474CA83A8EC338136568BDBFF8343 /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B1C72DC480AB19BD55B6275750D62FE /* NSSet+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = D40E6AE30D19137ABA0A5D046329BCCD /* NSSet+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B62431BEF820E7FC779F344AB2A1D17 /* JXCategoryIndicatorLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1711B81346B8ED1944B5A8A478A4CF3F /* JXCategoryIndicatorLineView.m */; }; + 3B8EDFF69A68ABD3735E0C6931CA5C95 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B2D84B5B7090CE22D8AFB107E403CA13 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BB69CB142D744367868F834912993CB /* UITextField+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 877837A5816B3B110C5B763CCBD0ECFD /* UITextField+LookinServer.m */; }; + 3BD85ED8999015326D93D8EEADCCF910 /* HWPanModalPresentationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6749EA453DC312E08B14CE8AFDB79F3C /* HWPanModalPresentationDelegate.m */; }; + 3BF23DD02B40D2A2E98FF9D042A5AF4E /* Pods-keyBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */; }; + 3C7815EEC599DD7D42FDEF19B2FF1563 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCD0CB41F1E259546B6F8A9BFF05378 /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C7EAECB8C573E714C818BA04EB33773 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 35DC020855ECA02C5E2568299594E9C0 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C8F2F868D0C361CAF43E53CDB8EB631 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = E95C47EFA2CADA467B5A46831F0EA87A /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CA9E838F014DC32CFCF6AD36F5D7E58 /* HWPanModalInteractiveAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DAB18271BAF2DB3E49BCAF049FC4F01 /* HWPanModalInteractiveAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CE13969772F4180701A575FAB98E978 /* JXPagingView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E262E36BEDDEA0E7B4F4A870DA4314 /* JXPagingView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D0BBFEC1921CE71BC240DC18D8BE540 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = AC558AE5F168E24878BD4ACF3EE1274A /* SDImageTransformer.m */; }; + 3E3D09700A62280A9EB8D65B97335ED8 /* LKS_CustomDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = E74AC99A06CC9DE9D81D54044B013F98 /* LKS_CustomDisplayItemsMaker.m */; }; + 3E982309E295BB31C065D62750D0F1FD /* UIView+LSTPV.h in Headers */ = {isa = PBXBuildFile; fileRef = A5262AA56B4C8511CBA390D4808E37F2 /* UIView+LSTPV.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3FF7252DD60182221BB1E5A167C41A07 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E152B4E044E172623798E791ACCC157E /* UIProgressView+AFNetworking.m */; }; + 40AD5D0AB3ABF7F3A5A4A98BC5B84419 /* LookinAttributesSection.h in Headers */ = {isa = PBXBuildFile; fileRef = B74F835090D47DFE066B4DAD231882AC /* LookinAttributesSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 416DA8B2997381F954DBA6E6A53DA4A2 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 2132EF8C73164960BCAFD57CF9C7A53F /* NSData+ImageContentType.m */; }; + 41A4AAE7E6024E7AAB83DD22FB42D34D /* UIColor+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = C626E0F07BD081EBE5955DEA5669BF14 /* UIColor+LookinServer.m */; }; + 425C9EA28FBEB7F7FC09A3F4A88C5955 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = F8A31B7D92D4FBD879F8C39ED3139439 /* SDWebImageError.m */; }; + 4281CC31F4D4EAE690F999C778F17E5B /* JXCategoryViewAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = E0A4E94FB3CF9B468E72117C85C2E773 /* JXCategoryViewAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 431023914A5D2653ABAE7AB54880C9AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 4334CCEA5B7EA16A4EF26702D287CB07 /* UIScrollView+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 22613DFB1026F3E41B141E34C637D600 /* UIScrollView+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4424E7517B86FE622BCD3D5040FC579C /* JXCategoryTitleCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B67A73E7EE0522188FAE4145324D19 /* JXCategoryTitleCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 442F468E261A1106C291BF52BDBF9DB7 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 195B648C25562B52954B1E7C1D8964C3 /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 447BBB1BCA8E0F2D23634888BED6DA81 /* LookinDashboardBlueprint.m in Sources */ = {isa = PBXBuildFile; fileRef = 2783C33881FB9ED3037D4D66B93FAD7E /* LookinDashboardBlueprint.m */; }; + 44CD842019B1CEA681F820F37A30B7C4 /* SDImageFramePool.h in Headers */ = {isa = PBXBuildFile; fileRef = F86F79271CDA27370B63C4004FB83EF7 /* SDImageFramePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4503182D5F8EF2F02609862026D2D455 /* HWVisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5B799F7FC71DC9649AD62AE8B34DC7 /* HWVisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 452C940762F65B125C216F73B369F583 /* MJRefreshStateTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = B26771C31428D52F8DFB859AE1AC3503 /* MJRefreshStateTrailer.m */; }; 4571A0EA37DC84F39E3830D38A1531AB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - 45E1583D7EF53489B82C4CA2AD1AD0CF /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 2288D70D4609F065E784F156F613AB62 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 464A0100327C8531D86BDC31737CCF75 /* LookinAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D832408A734647A9D2C62473FE11EFB /* LookinAppInfo.m */; }; - 4688743B7B845309486559EB7BD5D147 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E376CA03D27B523F7F180B9EC99BD7C /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 475B4F3E71C293065AAFDB1888696CF6 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = F47E18ADFFC71918AE70F42C18C32A89 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 48916DE9521F627589300512ECC2D4A5 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = DEA09040DACD7A53B041773DD59096FC /* NSButton+WebCache.m */; }; - 4A15ABB502D625EBE3E63100664AB822 /* LookinCodingValueType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DCD76BA1FFEFDEEE2F9331ECD0796D4 /* LookinCodingValueType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 45E1583D7EF53489B82C4CA2AD1AD0CF /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 17D9582F158C09F75D84ECE893151E91 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 464A0100327C8531D86BDC31737CCF75 /* LookinAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = CB40236F7A3DB0EECDBA370753BEDDD4 /* LookinAppInfo.m */; }; + 4688743B7B845309486559EB7BD5D147 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = AB253C473EBD2DF633A230C7FAA304B7 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 475B4F3E71C293065AAFDB1888696CF6 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = C746AE302AD12A4D0F6E287CACA690C6 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 48916DE9521F627589300512ECC2D4A5 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A970B89D7ECEFF994ACF22A5493E001 /* NSButton+WebCache.m */; }; + 48EB84614F04E6089393ADDFA4BA8603 /* LSTTimer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F5F8D57BABE5A9AD2D0BC75B55D1A52 /* LSTTimer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4A15ABB502D625EBE3E63100664AB822 /* LookinCodingValueType.h in Headers */ = {isa = PBXBuildFile; fileRef = F2698AC3972900E338490644A2E03A2A /* LookinCodingValueType.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4A2D7878579537881DD3859B3359F702 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */; }; - 4ACC15DF96D179E48E4276AE3C540C7C /* KeyValueObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = 05E1785189AB18B6B47ECD584144AA0F /* KeyValueObserver.m */; }; - 4B2C2AE16AE3DDA7417AFCF7952588F1 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 84DD851B5FDE16625FA07D9C4D1622E4 /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4D2C79AB2D24CFEC864F08D913CE7692 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A9184E6EEBE4764FF941193DF28C44D /* SDImageCodersManager.m */; }; - 4DA2C6099343CD55160ECB3EBDDFE1DF /* NSObject+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 64BE9723ECB5FEB2D176E2AB31482F57 /* NSObject+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DCA75BFE1558CE59DFC56607E49B3D2 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 62C98AF2DC89D542692AC64CD9F01818 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E5F47A6ED542F1D0EAA4DD94091B61C /* HWPanModalContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DE8A481697088E8BBAEB51042F14ABE /* LSTTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CC6285CEC9BC9D5CBF28149790EF660 /* LSTTimer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E3EF6841A6A45FD5C11031ED861CFF06 /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C55508E3B8FCF1A927848A4CFAA53D0 /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = E6EDBB7EFC23401D50E3438EB3430A58 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50096BAC0F3270FB111E76D32714E579 /* Image+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = CDEC5449CBECD6C324B9864AD284EC55 /* Image+Lookin.m */; }; - 506FC58999564A737C745F2590E9B4D5 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 981BA7AE91A568EC43916303978CE501 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5106193FDEA44A08AAAAB9B8A227CBE9 /* HWPanModalPanGestureDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = DE26DBA97E2F7B5B4805533E6C020C30 /* HWPanModalPanGestureDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5109F520B2E1FF2F30F9DDF5E584E028 /* Pods-keyBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5111A0A0934551CD2B9DDB1A1CA79FA7 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = AB547BD41867170F26173D27CE44DCE6 /* SDAnimatedImageRep.m */; }; - 512B9661FC34235E0EEB3A6D3E319B88 /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = 8D9EC3F78C9EBFBAA2A4A0F3EE3D27AB /* MJPropertyType.m */; }; - 5163FC6D715F6881B1FA1AB13DCEF870 /* UICollectionViewLayout+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A350736EF0F4C89A3E43AA0BED8AC36 /* UICollectionViewLayout+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5174DD2019966DFDC21B8864453ED3DE /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = E1732483C75B01353EF9D04684480EE4 /* NSObject+MJClass.m */; }; - 523235228A1C021C67F2E3776A922DC5 /* MJRefreshTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = F8A410A1A4222EF3876A4FA11492EF05 /* MJRefreshTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 526485EF6D2B62B24DB59122FB94BD42 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 343301F4ECFA1778F70E1EC266C1848F /* SDDeviceHelper.m */; }; - 5308E660E723C11E7691D311FD59C459 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 110C7A39306E93E5D29F1709FE16720F /* SDDisplayLink.m */; }; - 53433003112C4FE271EC985803862B61 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = 662D6F244CE3008639589EE4EA829B53 /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 53C1722650FCAB2637867D0DC31FC3CB /* Lookin_PTUSBHub.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F886C315967D7AADA95C37B717FE5A2 /* Lookin_PTUSBHub.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 541AD3B0F5EA216EE730ECC6E8B84C31 /* HWPanModalPresentationAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0004D14E99E5CD92EA09732F82694FF5 /* HWPanModalPresentationAnimator.m */; }; - 5490C03887ACF6C4EAC25ADFBB509CE5 /* NSSet+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = E8EA132DBE319D046C6BEFA0C4AB4940 /* NSSet+Lookin.m */; }; - 54E268C32915CF908E7AA776909B45EB /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = E114D2723BCB64ADA9A307B95F5DE640 /* MJRefreshConst.m */; }; - 55F7C7F055A18044497F8C88CAE34118 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 315C5770DCC0584893C24972BAEDEB39 /* SDImageCachesManagerOperation.m */; }; - 561420A20DC0A84258A902E9EB69A15A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A20F0D257E58B1A870FF109778CD4B25 /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 564714D075CF51356D3D8437846AA6EB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = F68CF910ED994D45AAA3B5E5FABB6835 /* AFURLRequestSerialization.m */; }; - 56D8A7EAE4D72FF6C23421CAB6F21504 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = C02050360407C95F57A46E3425089760 /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56E800EB3B2BE8AE0BA45A30974D7920 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 56A89B114742BBA3282DA6CDF9871F36 /* Masonry-dummy.m */; }; - 56F1B543BC54204336CB5E50B60F719F /* Color+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = C246D6EBE3F2F29765C86C55F130AD3F /* Color+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5735091665AC18FAD028EB68786A85AE /* LKS_CustomAttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = D2ADA0495E5FE9068CEDD520D7AB4D72 /* LKS_CustomAttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 58F7CE37BB4CB3BE806B68A502E6E1A7 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = CC87F6E60998716F313AD85E3F2F0C78 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 596180E0EC9F46D12BA840DC4AA62659 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F3DBAC2BF3E2D408BCB049042B8B067 /* UIImage+MemoryCacheCost.m */; }; - 597E390C0BBB75B8045B651C487C2034 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F3611B9193976C6AC5268E458B3F9F6 /* SDImageAWebPCoder.m */; }; - 5A6D3BE92C77ED70C397567996DFAEB9 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0E7B3F97FDF9522DB3E4FADD3DB88700 /* AFHTTPSessionManager.m */; }; - 5A8BC91257FF6B36237BF09A7A6EADF6 /* LookinObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 683586601FF42469125B58BBB8DF2429 /* LookinObject.m */; }; - 5AF22814CD055B553AD9D78BE54B94E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = DA7F2EDBF237046CD345C29806E0A756 /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5B08596E856E4CC2F34A8A2372F9F764 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = FD16DAAD0E6C1AF6207145BC463DF81D /* NSArray+MASAdditions.m */; }; - 5BB6B99986FD7111B3AEBE931C7F507B /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C53F73CEF747A7A78B5CACAF16E5FCE /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5BD5D9B8F61C124A62C75D9AC36A07BD /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 53CC6A09F682C54055F6035F0D6E29FA /* MJRefreshTrailer.m */; }; - 5C8279C226EB028B044C5A0F4AC5A91A /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F61547B42B4881FB5D37EF93F1C324C /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5D0DEC179A7B4143769C663082E2662A /* LKS_ExportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A12BDC5E6446CAD91BA1C47C211ED2E /* LKS_ExportManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DCBA14510E091D6A1CE499B08B794B5 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 3BE50AD720E95B8938AAE668F71561B7 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DFCBADAC7D0FAC82C84A6C8E7BF1DA6 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 5909B734EE0396CAA42A403A6DCD4D27 /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E10328A83E05D0015D7459FAAEF121D /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 387AF8AF8500E50CC311582863B31CFF /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F45735DF355530CC955066D3C007E19 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A03E64C6033C8C1C7D8822CDE785EEB /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F5426608460A8B17C1AE5C2351BAA19 /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AB2A681F27544128FA8BFDF04B2B4BB /* UIScrollView+EmptyDataSet.m */; }; - 5FDC4239F7B651092BF582D0F460BAD4 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = E0B73DB737A3D2CAAA90EA20B4BB23B3 /* UIView+MJExtension.m */; }; - 6002CB94684D7C786700D2A294146AEC /* Color+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 19D6F69255AF25D760BE89366830A6F7 /* Color+Lookin.m */; }; - 61461B0D9D7B81C3F8D24066D9A19DCE /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 81E56B3079089075E57FE56264F80F1E /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61507E402F1F7C58BF119995A0479A22 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = B71D1DE227720C6548D26CB1380A595F /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 616A8338C42FB01748DF1BDDA944858D /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = AFC953B00F77A76AF38E0FA2C8AB5F03 /* UIView+WebCache.m */; }; - 61857C821395B868C65A8FFE4DA1B4E3 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D9760D282FEC09C3A5774993001829 /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61EAFBCDC83B2C603918B3C9D9A73A18 /* LookinConnectionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = DC490DD3FFABA4122C58404F7DFAD348 /* LookinConnectionAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 62FE895DF9D65A2955A275D909ECBE18 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 17FD1B21DCC89D66865655294A85A817 /* SDAnimatedImageView.m */; }; - 6525ECE1CAFC1259F9E6E5FDDE6CF218 /* UIVisualEffectView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 96B0036686E5E0170AC065045503F785 /* UIVisualEffectView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4ACC15DF96D179E48E4276AE3C540C7C /* KeyValueObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = E1F236D1BF028AEAD75A9FB3C9DCAE0F /* KeyValueObserver.m */; }; + 4B2C2AE16AE3DDA7417AFCF7952588F1 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D3543E70B7F1B6F0CB25AB731CA0DFBE /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4C8C34A09D61A3881DFB1A544A2CA2A5 /* JXCategoryFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E96574DDD94EB958E64B0AD7C7B20F2 /* JXCategoryFactory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4D2C79AB2D24CFEC864F08D913CE7692 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D1EF86D80B6333688465CCC41BA33F7 /* SDImageCodersManager.m */; }; + 4DA2C6099343CD55160ECB3EBDDFE1DF /* NSObject+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FD83B41506E28893BC297C4BDAB1B46 /* NSObject+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DCA75BFE1558CE59DFC56607E49B3D2 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = E9598F4E504AE0DA98A0B2DC305F1C83 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CAA34C64434033ACBB7F68A74F4D15B /* HWPanModalContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E0FBD829EB07B8D5D2A5F6115457BE7 /* LSTTimer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C181D8B9B1142624BE8BFFA787AA2854 /* LSTTimer-dummy.m */; }; + 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C2FE2279B0EA1E9F949E0AF58D09E3B /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC6F317480167EA6C97C3ED771D57CA /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4ECE7F80A917130DE4045E25D741EAF9 /* JXCategoryTitleCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3545C9AC3AD500CD4E48A3E2630C521B /* JXCategoryTitleCellModel.m */; }; + 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = 06EFD395C240E38E2ED0DCAF40CE73FC /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50096BAC0F3270FB111E76D32714E579 /* Image+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = FB1E7E734FDF6F7CAC668B6BD6A2A014 /* Image+Lookin.m */; }; + 506FC58999564A737C745F2590E9B4D5 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F31829B35104CCEC70FD712B1D4D4E2 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5106193FDEA44A08AAAAB9B8A227CBE9 /* HWPanModalPanGestureDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 95BD516A8F354C5C9CD65BFD30C9BED7 /* HWPanModalPanGestureDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5111A0A0934551CD2B9DDB1A1CA79FA7 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = FBF4C669CA968A448B7E1DD3A141A41C /* SDAnimatedImageRep.m */; }; + 512B9661FC34235E0EEB3A6D3E319B88 /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4688EE09ADCEE19CD4BDF95833F7E81D /* MJPropertyType.m */; }; + 5163FC6D715F6881B1FA1AB13DCEF870 /* UICollectionViewLayout+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = F0FF9B39CB74F30B336CF7D4085E2AE0 /* UICollectionViewLayout+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5174DD2019966DFDC21B8864453ED3DE /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BA563F965A1054AC53D0F3D5BD3AFE /* NSObject+MJClass.m */; }; + 523235228A1C021C67F2E3776A922DC5 /* MJRefreshTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A91961A508CA556983A4A3F57FB3133 /* MJRefreshTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 526485EF6D2B62B24DB59122FB94BD42 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF942497E18FEE75DD2CDC6779A790A /* SDDeviceHelper.m */; }; + 52E60EE26D065DB63D272298AC8867DF /* JXCategoryTitleVerticalZoomView.h in Headers */ = {isa = PBXBuildFile; fileRef = 059C3C014AA92686FDCE895211A108CE /* JXCategoryTitleVerticalZoomView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5308E660E723C11E7691D311FD59C459 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A0FA60F5E41A8B04C442FE582DA298 /* SDDisplayLink.m */; }; + 53433003112C4FE271EC985803862B61 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = C205DB74EDBD3C80FB36923BD2255DBB /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 53C1722650FCAB2637867D0DC31FC3CB /* Lookin_PTUSBHub.h in Headers */ = {isa = PBXBuildFile; fileRef = 3416384E4A531494C7B12CDD1AEA74A1 /* Lookin_PTUSBHub.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 541AD3B0F5EA216EE730ECC6E8B84C31 /* HWPanModalPresentationAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 15D78A0355CAA0B846DBC1DAC7B101F4 /* HWPanModalPresentationAnimator.m */; }; + 546DE9D8142C6D8554E083C6FD65D0BE /* JXCategoryIndicatorTriangleView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3381742E54E03DCDB9DD644DF65C4689 /* JXCategoryIndicatorTriangleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5490C03887ACF6C4EAC25ADFBB509CE5 /* NSSet+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = C02B6DB0CED9923894E4B972F8B03882 /* NSSet+Lookin.m */; }; + 54E268C32915CF908E7AA776909B45EB /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 7032D81BB8B12F48732F1EBEA7A020D7 /* MJRefreshConst.m */; }; + 55910DBCDF99E39955BE01EAD8251081 /* JXCategoryImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC311E0F10AA1170D905B6C90AE765F /* JXCategoryImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 55F7C7F055A18044497F8C88CAE34118 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E6B846D03C97210EDD55850D04A8F27A /* SDImageCachesManagerOperation.m */; }; + 561420A20DC0A84258A902E9EB69A15A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A96A60100BE610809D6E0C7741CF992C /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 564714D075CF51356D3D8437846AA6EB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F3C5B0B7D11631504E27D25E8CB5A2 /* AFURLRequestSerialization.m */; }; + 56D8A7EAE4D72FF6C23421CAB6F21504 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E2D9F4632DB7036D701CB57007800AB /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56E800EB3B2BE8AE0BA45A30974D7920 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 99302CD0854353E1FA9C8EE70F3FCF59 /* Masonry-dummy.m */; }; + 56F1B543BC54204336CB5E50B60F719F /* Color+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = EEB6F4442CB80A88D94B35721714C121 /* Color+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5735091665AC18FAD028EB68786A85AE /* LKS_CustomAttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B2ACD52F18B25CE1FB40A0F1DF81B4A /* LKS_CustomAttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 579DDC4FE78455D88E0350C3268D96C4 /* JXCategoryIndicatorComponentView.m in Sources */ = {isa = PBXBuildFile; fileRef = D4E6C9FAE7DD5348F64FBD66AA03DA5B /* JXCategoryIndicatorComponentView.m */; }; + 58F7CE37BB4CB3BE806B68A502E6E1A7 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 45880427FEDFE00B81EA46DB6F5AFD52 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 596180E0EC9F46D12BA840DC4AA62659 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 5107F5A871AC7AEDAD8C78C1F1AB8E40 /* UIImage+MemoryCacheCost.m */; }; + 597E390C0BBB75B8045B651C487C2034 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E5DB75D5C223CDC5703FA115447A148 /* SDImageAWebPCoder.m */; }; + 5A6D3BE92C77ED70C397567996DFAEB9 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DA5F48CB9575D0E2C775D8D7C262C14 /* AFHTTPSessionManager.m */; }; + 5A8BC91257FF6B36237BF09A7A6EADF6 /* LookinObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 05B3B08A0927761DC2CBA02E9412CD21 /* LookinObject.m */; }; + 5AF22814CD055B553AD9D78BE54B94E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7446E6EDA4118B08C0D538CAA41C47AA /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B08596E856E4CC2F34A8A2372F9F764 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D3CF8B366EB9A41FEDB94035F404215D /* NSArray+MASAdditions.m */; }; + 5BB6B99986FD7111B3AEBE931C7F507B /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 02E945EEF3757BDF2B47E65C51C4D6D6 /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BD5D9B8F61C124A62C75D9AC36A07BD /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5128E7CF3F35BE25186575F63661EEF6 /* MJRefreshTrailer.m */; }; + 5C8279C226EB028B044C5A0F4AC5A91A /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C0ECED1A3FCBB93D40B1BFFF5AE2F27D /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5CAB535753B28B463140F421E9B00136 /* JXCategoryIndicatorCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BF9910B7B2FF86AF620A45955A338072 /* JXCategoryIndicatorCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5D0DEC179A7B4143769C663082E2662A /* LKS_ExportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3C413B4ED21D886E50FCBC0761408E /* LKS_ExportManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DCBA14510E091D6A1CE499B08B794B5 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA0FACBE46F43AB7A99266BBBF20510 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DF02901155278BE109057E17C7C1D99 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 360A9029323DBF687A82BCD2C22F386C /* PrivacyInfo.xcprivacy */; }; + 5DFCBADAC7D0FAC82C84A6C8E7BF1DA6 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 13B6B935F583A1ED5234B7E3DF044521 /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E10328A83E05D0015D7459FAAEF121D /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3653F678D1C9DBE34F6262A65263C642 /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5EE53074B8A35D48AB76CAF38C88A37A /* JXCategoryView.h in Headers */ = {isa = PBXBuildFile; fileRef = DACFBFCC588CFB73AE8A6DB153DEA42F /* JXCategoryView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F45735DF355530CC955066D3C007E19 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = DEDFC34DB720F4FD92E634E486425845 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F5426608460A8B17C1AE5C2351BAA19 /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F77AB571A5252972C84B67134918B5F /* UIScrollView+EmptyDataSet.m */; }; + 5FDC4239F7B651092BF582D0F460BAD4 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 239F725CB21A7ABF0EDB35FC92732A5C /* UIView+MJExtension.m */; }; + 6002CB94684D7C786700D2A294146AEC /* Color+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = F2A8643D9113999359ADC6C79DA48111 /* Color+Lookin.m */; }; + 61461B0D9D7B81C3F8D24066D9A19DCE /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B0E298E792EE24705C7E8457669228 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61507E402F1F7C58BF119995A0479A22 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A8DC30D2C209AB66D8E812915E6F319 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 616A8338C42FB01748DF1BDDA944858D /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = ECA422AB0F45E3F4B650188FEE476C8C /* UIView+WebCache.m */; }; + 61857C821395B868C65A8FFE4DA1B4E3 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = E5B1C13BB84FC1E79BC9BB233B793A5A /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61EAFBCDC83B2C603918B3C9D9A73A18 /* LookinConnectionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = F3AD144DF03231D478D237DCFC615D36 /* LookinConnectionAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6204F3E4E75772BB6CAB13CD53D9D93E /* JXPagerSmoothView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F178706A5ED2B8C0CCCEA56CC4A04B6 /* JXPagerSmoothView.m */; }; + 620A0FFFDE5AEF215E28135566106BA4 /* JXCategoryBaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = 72F67C5C9E4A93AFE6FF113487609183 /* JXCategoryBaseView.m */; }; + 62FE895DF9D65A2955A275D909ECBE18 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 635235003B3FEDB8B457A8FFF46C69E3 /* SDAnimatedImageView.m */; }; + 6525ECE1CAFC1259F9E6E5FDDE6CF218 /* UIVisualEffectView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D013F3B6606D04CFD12051F02350DB55 /* UIVisualEffectView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 659D38386A3E09422812283BF27D71D1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 67178A8153B1A2F1D0D544B8093E23C5 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = CE909BA066F9B44E9C2F036FF3FD44FE /* SDAnimatedImageView+WebCache.m */; }; - 676775CB29378BB6CA3CA5992E9C6A99 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 9358338FB49CFCB7417D22C85E339488 /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 67FCC0F9B42B1C20A66E99A3D56BED18 /* LookinStaticAsyncUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = F522B03B0E818BE677108EC202F41472 /* LookinStaticAsyncUpdateTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 683D708C157C95ADB467BDD2230BD4E3 /* UITextField+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 529CC0A76A69631EEA57BEAB673D76B9 /* UITextField+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 68C3E98F8B9D6035962F29AE025DA891 /* UIImage+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A73FC0CD1FAD2820E17CD48DE8962BA /* UIImage+LookinServer.m */; }; - 69345CBCB31076EBF8A2C5885AF973AB /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 758F54E0A75ADEC48F8924BFE16AEB3B /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 694B8697854A776E32032999B2EF1FEA /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 610BD8934663142C5DDE2AF00042FD13 /* UIImage+Metadata.m */; }; - 6960FF2C4D61A09722930B33B1C7135D /* LKS_ObjectRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 20466880B35C5065EE68BED96801035F /* LKS_ObjectRegistry.m */; }; - 69A06A02F52EB26259FAD1DF6B121BE1 /* SDCallbackQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 20E25456C8490BA5725AE87E9508AF07 /* SDCallbackQueue.m */; }; - 69AB6A513D5F36D7360FEF4FDA1D60D0 /* UIView+WebCacheState.h in Headers */ = {isa = PBXBuildFile; fileRef = B354D25F9AAB5A1E64BA7AAED1BA9991 /* UIView+WebCacheState.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69E353C99C6EEA3C93CCF2E526460B9D /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C92B663B045144AB6926F9C7A3DA791 /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69F6E66A089C40FB1063DE15499BCFDE /* LKS_Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = FFB946957EE60C8096CD34FFD7880091 /* LKS_Helper.m */; }; - 6A19379E3B0370EDA447743C9B1A1379 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 29D938D1AE315B5A7E490702D4DBEED7 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6B0978C9398336656EE309E62060AEAB /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = CE8561E7F90B3736EA348E5236FECB1C /* SDImageAssetManager.m */; }; - 6B5C3592B5E911E833D067D0BC785B1A /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F618581DFE1104C16FA02EB2B00F1B9 /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6BC2A615678C8BAE9F34ABA68BFDEF78 /* LKS_AttrModificationPatchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = FE4F3AC67FEAA51E07D9DCC83CAEB3D5 /* LKS_AttrModificationPatchHandler.m */; }; - 6C57809DCEA4B6C0CA79918A69FD75DE /* LKS_ConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 499DFA9F01A96B26620A744AC7C94DB7 /* LKS_ConnectionManager.m */; }; - 6C85CA8D99E50C137D056B6057DAC58A /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = A0FE1EF8C4E4226EA31F342E982E620B /* UIRefreshControl+AFNetworking.m */; }; - 6CA0B4A9E7B2957063163BC673F355CD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 352F171C72D103D96370080978C50788 /* AFAutoPurgingImageCache.m */; }; - 6CE8701D161A4BC0860FAF3951762A34 /* LookinHierarchyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A370DF72E817BB512D9A327AC45F76B /* LookinHierarchyFile.m */; }; - 6D637D02F5EE50D21C8548061956C898 /* UIViewController+Presentation.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F7C5007915361DF90A13BBA8CD3EFF /* UIViewController+Presentation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6DE6C7F0FA965828E4FCE687BF75FBBE /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 02B660DF025FBF070A8248624E25ED79 /* MJRefreshAutoNormalFooter.m */; }; - 6E4DE8085E69AD1DDB49B059DCE286DB /* HWBackgroundConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 11A5C3D2E3080F2A5EECFB7F1FC6C319 /* HWBackgroundConfig.m */; }; - 6E66305665DBCFBCF5B2480BF705D500 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 057F1DBD0EB25FF8CA833DC6F478BF32 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EFC0630CB2761A2B1FC47176CCD62D1 /* LookinCustomDisplayItemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 47C4451B7E17B800D4088E7182C1025D /* LookinCustomDisplayItemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EFEEE3AE22E97DCEC4F5A3B88F56FC7 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F3AD0011FB2CA087E42B18DDAD25253 /* SDImageLoader.m */; }; - 6F3637EE643EABB1DE9212EA68649A64 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F9D4F9A4CA404E7287B2F6CBFF382D1 /* UIColor+SDHexString.m */; }; - 7053A9EB6335BEAC9EFDF2D5320E6E2A /* UIView+HW_Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = 109CFCE9774385E51695E82E530412B8 /* UIView+HW_Frame.m */; }; - 7074EA7FCC90B4967A437F5C43496828 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = AD1C2B98D240951DA7BD821093E6C395 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 711D32EF4A9901567A488291603BF906 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = F6E7A6844647C14F0728CBB9EC73AF19 /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 713D162A627185DA38847832AB5BDA44 /* LSTPopView.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EFF087B37DC1EFC63580C904061AC41 /* LSTPopView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 71538A1D21015F459964BA625D5EE90A /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D6996A5821977C26F6D8F02DE8CF8CD /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 717F76926C7BCB5B10C3037AD9239084 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = F0F086732258C7153899AB5D8C678B02 /* SDImageIOCoder.m */; }; - 719245E09E34B28240B8144650B43701 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = B647311E2487029EA920B923258697D2 /* PrivacyInfo.xcprivacy */; }; - 71BEB1D9532900291A5A24B1C038516F /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = D5D847654327E7F1E333D40CD9665067 /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 71F2B8CBB99087F348C472230200586F /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FA72F287E0DE573DD735BAE9AD7E816 /* SDGraphicsImageRenderer.m */; }; + 6630C0B541E50903F9AD81FD847CFE7A /* JXCategoryIndicatorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = 74444E41B3920B9EB4DA66DCD2975612 /* JXCategoryIndicatorBackgroundView.m */; }; + 67178A8153B1A2F1D0D544B8093E23C5 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D547696F5943987BC61D389F16B201E8 /* SDAnimatedImageView+WebCache.m */; }; + 676775CB29378BB6CA3CA5992E9C6A99 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 06077AACB035D8452C9F730B2E1F00DF /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 67FCC0F9B42B1C20A66E99A3D56BED18 /* LookinStaticAsyncUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A769F7014A1F30EE6690E054898162 /* LookinStaticAsyncUpdateTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 683D708C157C95ADB467BDD2230BD4E3 /* UITextField+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 94807C278EC259800EBCD3A346749877 /* UITextField+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 68C3E98F8B9D6035962F29AE025DA891 /* UIImage+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E075739451FCFAA914670EB353642C16 /* UIImage+LookinServer.m */; }; + 69345CBCB31076EBF8A2C5885AF973AB /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C0E4900E01624D5262A1ED1DF2F6D35 /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694B8697854A776E32032999B2EF1FEA /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5C2096D95608EEB566217452868E46 /* UIImage+Metadata.m */; }; + 6960FF2C4D61A09722930B33B1C7135D /* LKS_ObjectRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 8127266FF8D9AAE89CDF3511D05BB245 /* LKS_ObjectRegistry.m */; }; + 69A06A02F52EB26259FAD1DF6B121BE1 /* SDCallbackQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E8762E22AB8C87B76E6D94D44665136 /* SDCallbackQueue.m */; }; + 69AB6A513D5F36D7360FEF4FDA1D60D0 /* UIView+WebCacheState.h in Headers */ = {isa = PBXBuildFile; fileRef = B072B2B3BF7FE061CC694AE00BCF5858 /* UIView+WebCacheState.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69E353C99C6EEA3C93CCF2E526460B9D /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 241FDB4FE9E3CE45C4854F0FEB6F8BAF /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69F6E66A089C40FB1063DE15499BCFDE /* LKS_Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 38A98EA0745C9E839DCFD56B22BF1256 /* LKS_Helper.m */; }; + 6A19379E3B0370EDA447743C9B1A1379 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 806C18993732E8D418AEA50EC6162EDC /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B0978C9398336656EE309E62060AEAB /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F94B604866DB37515D32D88635EFEE2 /* SDImageAssetManager.m */; }; + 6B5C3592B5E911E833D067D0BC785B1A /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C3B1F50C3A3E82B67AE98F2BAAD5C3C /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B9D333C18DDBF4E7CC889F7FDE05EEA /* JXCategoryDotView.h in Headers */ = {isa = PBXBuildFile; fileRef = 50BCF4AA1A75105CC04AA446B0DB9B40 /* JXCategoryDotView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6BC2A615678C8BAE9F34ABA68BFDEF78 /* LKS_AttrModificationPatchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 908A8A591A12931E59C177277E1D126D /* LKS_AttrModificationPatchHandler.m */; }; + 6BE86A0FFB0D69C6098CC75E1FB4E8B5 /* JXCategoryIndicatorCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B3FF5D113848A5A9AC244C579FF1441 /* JXCategoryIndicatorCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6BF5DB46D42D8B9D536C870EC77BF4A3 /* JXCategoryIndicatorBallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A60D0CF9AE4E6671E2A6BBECEE57E4D /* JXCategoryIndicatorBallView.m */; }; + 6C57809DCEA4B6C0CA79918A69FD75DE /* LKS_ConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F1C50876E480E256FAA99FC38F2BC478 /* LKS_ConnectionManager.m */; }; + 6C76DB1B99B98C951F687DE80FE6F463 /* JXPagerListRefreshView.m in Sources */ = {isa = PBXBuildFile; fileRef = 603287955CE071E6EBDC96A98AB97750 /* JXPagerListRefreshView.m */; }; + 6C85CA8D99E50C137D056B6057DAC58A /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = BEC06B30EADD5F0931B350F94CD4D15C /* UIRefreshControl+AFNetworking.m */; }; + 6CA0B4A9E7B2957063163BC673F355CD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A984C0F36AC5CCB478D87C1F7E4019D /* AFAutoPurgingImageCache.m */; }; + 6CE8701D161A4BC0860FAF3951762A34 /* LookinHierarchyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 16E6E00D729B1498CE18200F50778930 /* LookinHierarchyFile.m */; }; + 6D637D02F5EE50D21C8548061956C898 /* UIViewController+Presentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 201E2681B892F05C3D7CAFE9E9927D15 /* UIViewController+Presentation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6DE6C7F0FA965828E4FCE687BF75FBBE /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D2CC2D1F9AB2D4CFC68B6327C2793C5 /* MJRefreshAutoNormalFooter.m */; }; + 6E4DE8085E69AD1DDB49B059DCE286DB /* HWBackgroundConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = ED71DE4537C6ECADC81696A80C943E64 /* HWBackgroundConfig.m */; }; + 6E66305665DBCFBCF5B2480BF705D500 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 28EBA38DF7DE3C55A1DCF1C9536E3712 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EFC0630CB2761A2B1FC47176CCD62D1 /* LookinCustomDisplayItemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CF0E98CA3E42AAC3B854E232BB1AF7FB /* LookinCustomDisplayItemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EFEEE3AE22E97DCEC4F5A3B88F56FC7 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = FA395F2DBB98D70F218443EA65E0D442 /* SDImageLoader.m */; }; + 6F3637EE643EABB1DE9212EA68649A64 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = E29E39BBB558CC51A6DB91379351B72E /* UIColor+SDHexString.m */; }; + 6F3A575F2B9E1CEB696248B9CB96F357 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = C1227D6957584FA14F5EFE311854C54A /* PrivacyInfo.xcprivacy */; }; + 6F75FDB9BE37C9A8473F97B1696B5D09 /* JXCategoryListContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = E25EECD78C776DB2FDB519D3AA7CB0BD /* JXCategoryListContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7053A9EB6335BEAC9EFDF2D5320E6E2A /* UIView+HW_Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = B444EEABD213A46C07AC5F1B8D73FBF1 /* UIView+HW_Frame.m */; }; + 7074EA7FCC90B4967A437F5C43496828 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C74D4E7CA539C956587A3615702D24 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 70D30BC7134E3C8006BF0B6A4B438057 /* JXCategoryTitleImageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 639A45B880AEBFE1C16D4A9F3AA3D49C /* JXCategoryTitleImageCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 711D32EF4A9901567A488291603BF906 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BB4D65769822C57911F4A84B9F8FADFA /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 713D162A627185DA38847832AB5BDA44 /* LSTPopView.h in Headers */ = {isa = PBXBuildFile; fileRef = BF40FB09CDD92326BB3177C14DF172AD /* LSTPopView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 71538A1D21015F459964BA625D5EE90A /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = F7CD4CF41A222A66B3E435AB32DF697D /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 717F76926C7BCB5B10C3037AD9239084 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D2F471FC57FF6DD1F698134B35D27C95 /* SDImageIOCoder.m */; }; + 71BEB1D9532900291A5A24B1C038516F /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = 368AF39857A6659131D7CD15698E6867 /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 71F2B8CBB99087F348C472230200586F /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = FC52B8F222678A49BF1BA307CD9A7777 /* SDGraphicsImageRenderer.m */; }; + 72157F8282836C3F6D65008E2F193655 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; 723D1925C39764631641D0DBFDF6833B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 724991CA89C46BAFBC08264D94D86484 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B686FCB243BCB66C7BB1F42E6A4B3417 /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7276688DEA6FB95D4DEB7F3D019C3958 /* HWPageSheetPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = FF47B51E8368756DB1E42F174494224F /* HWPageSheetPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 728107C8D8479AADE986F4EC23233DC3 /* UIScrollView+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 66C0C4029B17B8E45FF492CEEBD834E3 /* UIScrollView+Helper.m */; }; - 73B19D03C7B7DF1C944544165F742D82 /* HWPanModalContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5030EF25D193EB41CCA5DF24FE48C1DF /* HWPanModalContainerView.m */; }; - 74ABF19BACB99F862DB62AA14508AFA0 /* LookinAttributesGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = C5830BBF390FC8D9CCA3C6BDBE65DD04 /* LookinAttributesGroup.m */; }; - 74C474676C69A80BEC29B0F55FDF4D19 /* UIView+WebCacheState.m in Sources */ = {isa = PBXBuildFile; fileRef = EF5BED7A35D904E495E540434D07B398 /* UIView+WebCacheState.m */; }; - 74E069F8C9E22C0E37F261A5AB03A613 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = F27AC2454398D7EA8C514D5B2F6469EF /* SDWebImageDownloaderConfig.m */; }; - 752822FE3F5092322D18FEC4533B79A9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 5703D16A54AB62E92D3E21CC6E5EA55B /* SDWebImageDownloader.m */; }; - 75771A97B77FA30A0175A81B480F80EF /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D8DA2BACDEA7D78265D10D62F7A3BF7 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76019F9FDD44B8F79261AD55C8728164 /* UIView+HW_Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = C387114CB39CEE512E07F38E4439D4D8 /* UIView+HW_Frame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76C8C631DF9AC2F667369EEA0CE46522 /* HWDimmedView.h in Headers */ = {isa = PBXBuildFile; fileRef = E164F75EDECDE7B82945FA657EA41708 /* HWDimmedView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 772CF8E9CD02ECA4275B6173E2110E80 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 2019C0149E4FA95B56F04C424C11298A /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 724991CA89C46BAFBC08264D94D86484 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = DC285A6C8053D7E2AE423BE51B24E8AE /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7276688DEA6FB95D4DEB7F3D019C3958 /* HWPageSheetPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = DD3CC2F2CD0FD607BD99AA89E970269A /* HWPageSheetPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 728107C8D8479AADE986F4EC23233DC3 /* UIScrollView+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = CCA4AAE27B9CAF06CC2B0A3C0A3F0594 /* UIScrollView+Helper.m */; }; + 73B19D03C7B7DF1C944544165F742D82 /* HWPanModalContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BB86632EEB3EB44D0413B3A6F7F6875 /* HWPanModalContainerView.m */; }; + 74ABF19BACB99F862DB62AA14508AFA0 /* LookinAttributesGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E02457FB07FECD161E03C2A1A8B72B3 /* LookinAttributesGroup.m */; }; + 74C474676C69A80BEC29B0F55FDF4D19 /* UIView+WebCacheState.m in Sources */ = {isa = PBXBuildFile; fileRef = FF6C98975F33C466CDCC506B95080046 /* UIView+WebCacheState.m */; }; + 74E069F8C9E22C0E37F261A5AB03A613 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 47655EC4466A20F4BEC0C76B8F4C5440 /* SDWebImageDownloaderConfig.m */; }; + 752822FE3F5092322D18FEC4533B79A9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FED06425BD958CD54FC4A96C6FF1992 /* SDWebImageDownloader.m */; }; + 75771A97B77FA30A0175A81B480F80EF /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = D843F393C308E0D3BCB88A0B04FDB291 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76019F9FDD44B8F79261AD55C8728164 /* UIView+HW_Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = B63B552A0A52E65141ED8027A3FCCB0D /* UIView+HW_Frame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76C8C631DF9AC2F667369EEA0CE46522 /* HWDimmedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 017032FDD415E1762246EBCDD2228351 /* HWDimmedView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 772CF8E9CD02ECA4275B6173E2110E80 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D93DBFF5810549335063D430FB33721 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 780EDF2615923E89C179EB5A60D2DA41 /* JXCategoryCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6999AA4E4990D39E732B0FABF0CBB3CA /* JXCategoryCollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7873F2F89CD0A435FAB776BC27BFB56A /* MJExtension-MJExtension in Resources */ = {isa = PBXBuildFile; fileRef = 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */; }; - 78A3C3994AFFC6A2D4970AEB6D797CE5 /* LKS_HierarchyDetailsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D3831111080859754E7A75FF007ED40F /* LKS_HierarchyDetailsHandler.m */; }; - 7902D28FC9EF5AFEB452F508C7F266B1 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CBF9C8DF911E4E9B2C6A4628B5BC93B /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 79534562F85AA71041043B395DE14AD0 /* HWPanModalContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = DD391D4FA7F38A97455407F9DA5DA8F0 /* HWPanModalContentView.m */; }; - 7989A6E79BFA78440C39F568D972305C /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 710E437843F202473C82F6B19F6E51D8 /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A4EB9ED5D4E03170FFE61FCB299687B /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = C82B001CD34AC553F11A55D1E576C902 /* SDAnimatedImagePlayer.m */; }; - 7C45DBA62EE045C4922404182F6393B8 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A980D9B3DB04133A466725A1C6C22F8 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C53FB6BBB0CBAA879F1603B0FEDB80B /* LookinAttributesSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 0531DC0648DD160A9576D09368C28017 /* LookinAttributesSection.m */; }; - 7C5505A2D3F2A697A5F324787061F4B7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D2A884E58C9EFE4F57508CA7855F449 /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C8782A3078662BC2EF639A9608A2C82 /* LKS_InbuiltAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 83E75619300BC832136529DA87152075 /* LKS_InbuiltAttrModificationHandler.m */; }; - 7D736CE5AD0A987D2A7D2FD72E31BF41 /* CALayer+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = B68B9359B3F4863CD16BC4AF1031EDD1 /* CALayer+LookinServer.m */; }; - 7E4F0978B25350B2B28678A0BE7B3785 /* LKS_HierarchyDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 310204C87FE20FAAF183EEE0D555B729 /* LKS_HierarchyDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E8A564A958AF81E5F63F34B8E550E58 /* LookinAttributeModification.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C8B71EAA1C160D9B20E934869F7E16 /* LookinAttributeModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E8284A1808A9A014FA6F2F4E23F36835 /* WKWebView+AFNetworking.m */; }; - 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 01CCBFAC5118E8E6A44DA067EF8F2523 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 995AA67533265367D116C78944065262 /* UIViewController+PanModalPresenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 2C694B3CF0214D5165615510B34C3812 /* NSObject+MJKeyValue.m */; }; - 7FF8A56511E71D6FEC966BF9FEE135B5 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A0368DACE23383F23784ADE51EC66773 /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80EBFDD01E84CE4E8AE5BAE9CB3C7C1D /* HWPanModalAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 7AF90BBEF3A681BE8314F80257F1182C /* HWPanModalAnimator.m */; }; - 810C8D7902163BBA0185A4A112B2DFD6 /* LKS_TraceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A251837ED47D22FF5ACBFA97F91D4A /* LKS_TraceManager.m */; }; - 813BE4C96A6D39C13EC50C6CD164F0AF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = D7117B22CB4967C93BC27DD5B1BA9865 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 81A5635CEA2AD9623E30CAE9AFC3BF65 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 77EC014BA0072D21D1B86EE5C78C59EA /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 821FF6B43F7ADAB6B60459D2966B33CB /* CALayer+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = A701AEED09FE2183269AA89DFA8E4B7A /* CALayer+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83530BF68848CD2C4A79A1FD69B304A5 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 37B5AAFF8675170D1D643B53FECA47E3 /* SDImageGIFCoder.m */; }; + 78A3C3994AFFC6A2D4970AEB6D797CE5 /* LKS_HierarchyDetailsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6736D1FBB305C05AEAB982F817CD80C1 /* LKS_HierarchyDetailsHandler.m */; }; + 7902D28FC9EF5AFEB452F508C7F266B1 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = DEDB698B7BC2AF63B53722CF1D2D8E57 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 79534562F85AA71041043B395DE14AD0 /* HWPanModalContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 77BA4318333FADE07B128DB446EA0F64 /* HWPanModalContentView.m */; }; + 79701CF51014A7C02D810F9DAEFE6D79 /* JXCategoryTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 057CD48F09C7A5468D77A9691A639803 /* JXCategoryTitleCell.m */; }; + 7989A6E79BFA78440C39F568D972305C /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 1325B9E2F97C77F3E9191898C4045E7E /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7A4EB9ED5D4E03170FFE61FCB299687B /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8532F3DD3C373C14A106D14F67A3C301 /* SDAnimatedImagePlayer.m */; }; + 7C45DBA62EE045C4922404182F6393B8 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 109DC293F90D678E22D453F41A197049 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C53FB6BBB0CBAA879F1603B0FEDB80B /* LookinAttributesSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 97428E2E54CAC989DD7A12908613EE16 /* LookinAttributesSection.m */; }; + 7C5505A2D3F2A697A5F324787061F4B7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C2B7AF68C3BEF4AD97A93A90F9EFF44 /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C8782A3078662BC2EF639A9608A2C82 /* LKS_InbuiltAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = DC0451732A9C9A896EEC15BEC88B3151 /* LKS_InbuiltAttrModificationHandler.m */; }; + 7D1E98BE9558F6E5E29B0E81EC526A90 /* JXCategoryImageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E2875C79F8461486A975B000C1ABDE3 /* JXCategoryImageCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7D736CE5AD0A987D2A7D2FD72E31BF41 /* CALayer+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E1921A1332A20D950700741950E97126 /* CALayer+LookinServer.m */; }; + 7E4F0978B25350B2B28678A0BE7B3785 /* LKS_HierarchyDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = A9B0E721EBB3914236D06250E333F1E9 /* LKS_HierarchyDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E8A564A958AF81E5F63F34B8E550E58 /* LookinAttributeModification.h in Headers */ = {isa = PBXBuildFile; fileRef = C9F0D4D92726FF95FE428AA975E93DE2 /* LookinAttributeModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D675E9EED90BA5941D43EB2C520A01B8 /* WKWebView+AFNetworking.m */; }; + 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D000260D6BB658E0BB519087E88F883 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = B46DF40E1300BE3FC009F0D7D5CF5ED0 /* UIViewController+PanModalPresenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CE2A9B22B9FC87A02A230599E72D4F1 /* NSObject+MJKeyValue.m */; }; + 7FF8A56511E71D6FEC966BF9FEE135B5 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7965DB1FD06E64A9C5B34CB6D9909B3A /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80EBFDD01E84CE4E8AE5BAE9CB3C7C1D /* HWPanModalAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D7B291E3BCDB41106F548FA3B84901 /* HWPanModalAnimator.m */; }; + 810C8D7902163BBA0185A4A112B2DFD6 /* LKS_TraceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 36457C61634F1414F6DDF4C701ABF567 /* LKS_TraceManager.m */; }; + 8128D2BD3AC890F75E7AD243AA104C13 /* JXCategoryIndicatorParamsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = AAFEF3383472BCA83D71A7DAAC5522CC /* JXCategoryIndicatorParamsModel.m */; }; + 813BE4C96A6D39C13EC50C6CD164F0AF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 979A3BAC302F65855776332D6027B80C /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 81A5635CEA2AD9623E30CAE9AFC3BF65 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 10B904BAC9CC3925EE6B4E2130826A6F /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 821FF6B43F7ADAB6B60459D2966B33CB /* CALayer+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 732327FB0ADC252437B580203795D95F /* CALayer+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 83530BF68848CD2C4A79A1FD69B304A5 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE77C4D90418C342647C55D75A5C1AE8 /* SDImageGIFCoder.m */; }; 83A4F2816C1B3F072E1A26A34C3BC4AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 84065EC0D4446E7448D1BCFB4040230E /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; 8414CFEEB64ACA817EB88D2FEADDA3B3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 854807558DCB972EDDFC1D00032BA6E4 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B2F034522C4ACEB56FB7ECF5D3CDFDB /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 85AB23275E9D19394969235E5DC2300E /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B6DBCFC84C1E1F5D3AF983520203544 /* MJRefreshHeader.m */; }; - 85BB8B4B5C29C5EEC52282F33A4CAF23 /* LookinCustomAttrModification.m in Sources */ = {isa = PBXBuildFile; fileRef = D9F0FAF97F68F13F21EE3D8E18046926 /* LookinCustomAttrModification.m */; }; - 85C0B4EE334B9972299E62DE61A4BB56 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C895614137416E86433C8E5EAF1D3CD /* SDImageLoadersManager.m */; }; - 860CB3A5D2E13B946CD2EFB7F749C4CF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = E382492BA0D4E5C9BEF289F10F029CAA /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 864972FB0DF4B464B1B505AA5F788E91 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 56951EB060616356F951F35CBD9A6E42 /* SDInternalMacros.m */; }; - 88473AE7C22F952DACB39FA0758D1624 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 584341F234CCB4128A1A3854A3371179 /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8872BEB0954C0254A792469F4DBC9891 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = EA8BD469A978049C96BA8554A1F6D2D6 /* MJRefreshAutoStateFooter.m */; }; - 88A23DF6F5638AC66C28C4102824E8B5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 9BC9B980A57804E48A923737AE36ACB0 /* NSImage+Compatibility.m */; }; - 89B88FAD396608AAA9F935E471BB3CB9 /* LKS_HierarchyDetailsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C7B7F069BA04D7981F13F5FA41B3BAB5 /* LKS_HierarchyDetailsHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 89EAB8D0452D0E2114ED971B10D98CC3 /* LKS_HierarchyDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = B772F3922ED9C416DBFEA6651FBB3930 /* LKS_HierarchyDisplayItemsMaker.m */; }; - 8A256CA266FB314BBD4DB2287DAEF247 /* LookinAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 25283803DB6704A7DFB24BD626A74C6E /* LookinAttribute.m */; }; - 8AF38EDB1E9BF0D334AEB23C488870B8 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 107D93AEC1E186A8F21341BFB523B22C /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B9B9EACA282C583FCF9A3B8E49DD830 /* LSTTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F067A700BA9565969A60D7617155FBC /* LSTTimer.m */; }; - 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 5973F7F7FB04C5938E91F05D46F22B54 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 854807558DCB972EDDFC1D00032BA6E4 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = E138C277A1DD60E5BB20AB4EC7CEBDB2 /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 85AB23275E9D19394969235E5DC2300E /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2B6D97C6E9B5572232985B40BDA6C4 /* MJRefreshHeader.m */; }; + 85BB8B4B5C29C5EEC52282F33A4CAF23 /* LookinCustomAttrModification.m in Sources */ = {isa = PBXBuildFile; fileRef = F6CC661C43717D8BBB4405FD037BDC03 /* LookinCustomAttrModification.m */; }; + 85C0B4EE334B9972299E62DE61A4BB56 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F518DFA534AD602991065542FADB29 /* SDImageLoadersManager.m */; }; + 85ED10431A6C01970A3DAD8A8C9BF25F /* JXPagerView.h in Headers */ = {isa = PBXBuildFile; fileRef = D3F906D47799FB7ED8D4AA1C036BF3BC /* JXPagerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 860CB3A5D2E13B946CD2EFB7F749C4CF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 81D4FD0C7D7C987D10815371E729DAC0 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 864972FB0DF4B464B1B505AA5F788E91 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 123714F0F2335CBE901933785D4D26FB /* SDInternalMacros.m */; }; + 874CE8F3650D220092077846A46598E6 /* JXCategoryTitleImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FBDD10C8770914A56998AB2021E385B /* JXCategoryTitleImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88197D535BEBB0F4B71F106AE300631D /* JXCategoryBaseView.h in Headers */ = {isa = PBXBuildFile; fileRef = 173BFB44F7DA63CD3AF5A497970B8203 /* JXCategoryBaseView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88473AE7C22F952DACB39FA0758D1624 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 82BDCD67CE12306B5AF6A9E3DB88E0DA /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8872BEB0954C0254A792469F4DBC9891 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 401F0F0AAEEDDA40C2D25DB817C9B5C6 /* MJRefreshAutoStateFooter.m */; }; + 88889F5DA04EB4FA08125742B5E522DA /* JXCategoryTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = E42238B57F88C70438DE479E184E4352 /* JXCategoryTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88A23DF6F5638AC66C28C4102824E8B5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 102C92CE02746A6588B44F852322AB39 /* NSImage+Compatibility.m */; }; + 89B88FAD396608AAA9F935E471BB3CB9 /* LKS_HierarchyDetailsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 21696AB985A15DE2C63BD9A8CD978F59 /* LKS_HierarchyDetailsHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 89EAB8D0452D0E2114ED971B10D98CC3 /* LKS_HierarchyDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D3112C49688EF3F713F0D64A22E6E66 /* LKS_HierarchyDisplayItemsMaker.m */; }; + 8A256CA266FB314BBD4DB2287DAEF247 /* LookinAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDA744A029AF23E45515CE37C056256 /* LookinAttribute.m */; }; + 8AF38EDB1E9BF0D334AEB23C488870B8 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4561971E2CF7A1F1B00AC6091B3448DE /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8B47B7F220A2B9E121EFF5A28B477972 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 8B990235A0006E1F9C1E6F68AD81F77C /* JXCategoryView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CBA389E7DB380F4012EFBD733C81D43A /* JXCategoryView-dummy.m */; }; + 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D48043130F64D218A676B16D2CDA0ED8 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8D2CBEBF5F1DA6766A833CCD0BF02B5B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */; }; - 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8786CBA6B78647E486B3CA129F2DAD /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = B5C750768FB8EE26E8F613C1D910045B /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8F30C8026F48C60D5B2CAE9CFC166004 /* Pods-CustomKeyboard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */; }; - 8FF7B6477BFA6E6ABA168E1417291D5F /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = F738F2BE3FA2AD49A9764CC72FDBAFB2 /* MASCompositeConstraint.m */; }; - 906DCE66CD5BD236081D468616199BB7 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 56BB70CC7870B5212EFAD74AF8199F17 /* SDWebImageOptionsProcessor.m */; }; - 91AAF555B286FBF53E4F98D092B406BD /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 1458CC53A93F0D10D4564ECD3E1C2D28 /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 91E8B94F8E02ABF5197DF5AE7D0B3934 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = A34081EC91EFEC16FB92BEE1A470458E /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928371B066E1211CE87089668D5BCB4C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = D9FB07B277FA3212774D9D7EF2156759 /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928A1ED0692DF0229F66A87135F93F2A /* LKS_CustomAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 30A4A3709BA82F970D60FE150EDB33D1 /* LKS_CustomAttrModificationHandler.m */; }; - 9345137ED10358B60E37D05FB6165759 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 31BB750A026F77ECDF9EFB2711DEC741 /* SDFileAttributeHelper.m */; }; - 9358FC6C6DA728AEE250D8E7DD236946 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = A14004EB25D5BC99B439F5543C20E8CF /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 93E8C78EAE0B7613201813966B8E04E2 /* Image+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = E1CED825638D1B3169A0C8EE7A57C720 /* Image+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 955B87902E039163281C4F47C95DB851 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = E49B94A4D72DB4B81F4E8CDC098BC388 /* MJRefreshBackNormalFooter.m */; }; - 96E97174F4614FFA0649085022CB4AFE /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 244BBBE37C5D845F2BB8EAFBE6D12DE5 /* SDWebImage-dummy.m */; }; - 97235408E59E16C18B6BDA1D29E1CB26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 92B30D23B01D493E996B4DF061CC3062 /* SDWebImageManager.m */; }; - 97385A64CA020489951EF769392C6DCF /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = EA5F1011035F011FF8DB93B55405B76E /* UIView+WebCacheOperation.m */; }; - 9887678D7D6BC165694560D92AF2C31A /* LookinConnectionResponseAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8983C7CF18477B6B6E981751F1C09853 /* LookinConnectionResponseAttachment.m */; }; + 8FF4E9A492CA258F45C0BC51F6F69650 /* JXCategoryTitleImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D4AA530BA675D0E78BDD9644338B48A3 /* JXCategoryTitleImageCell.m */; }; + 8FF7B6477BFA6E6ABA168E1417291D5F /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = FD6EC1E4FB3615CE938900B23CEAD0F8 /* MASCompositeConstraint.m */; }; + 906DCE66CD5BD236081D468616199BB7 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A632B4F7EA06C55CADB3BF7C49D7860 /* SDWebImageOptionsProcessor.m */; }; + 91AAF555B286FBF53E4F98D092B406BD /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A543722998E5C6171A0B4A729D11BBB /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 91AFF41167C616A131F2E24563B8DDD8 /* JXPagingView-JXPagerView in Resources */ = {isa = PBXBuildFile; fileRef = E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */; }; + 91BEBD471C408E6C72763AFB6926242B /* JXCategoryTitleImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8618BF2AA2A260801FDF48131074A906 /* JXCategoryTitleImageView.m */; }; + 91E8B94F8E02ABF5197DF5AE7D0B3934 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5716AF79F54782358457FBB452B73975 /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 928371B066E1211CE87089668D5BCB4C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CAD21419CFC8A372DB941E7983ADDD9D /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 928A1ED0692DF0229F66A87135F93F2A /* LKS_CustomAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 29CA4DC7FB25B91EAA2B3847B7BB46A9 /* LKS_CustomAttrModificationHandler.m */; }; + 9345137ED10358B60E37D05FB6165759 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 41B90877BBAECA72C2F67A5E39E1E87A /* SDFileAttributeHelper.m */; }; + 9358FC6C6DA728AEE250D8E7DD236946 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 1326C5B7B2B67B2A6E9A785F1ECEA87F /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 93E2C24501FAE3C3B886B9879786EF22 /* JXCategoryTitleVerticalZoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D390F38F6574F6D973E2C4A52D004A1 /* JXCategoryTitleVerticalZoomCell.m */; }; + 93E8C78EAE0B7613201813966B8E04E2 /* Image+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 17FBA36FB2D4DFAA4437CEE5C69F4BBE /* Image+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 940CD731A431894B0EE4E3283E6F352F /* JXCategoryBaseCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 51E7542749774862B8EB9AAB7010F1AA /* JXCategoryBaseCellModel.m */; }; + 955B87902E039163281C4F47C95DB851 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = C55730A1966B5DF338B0554ACC4B0B16 /* MJRefreshBackNormalFooter.m */; }; + 95CCA80D6790CF64F974A53E815420F8 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 75A91D4BB6118442A9B7E27598AE7C99 /* PrivacyInfo.xcprivacy */; }; + 96C1D55B3436C158B4CBB4E3D0AE53EE /* UIColor+JXAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 137AD002D5B6FA89785842F03034A5B1 /* UIColor+JXAdd.m */; }; + 96E97174F4614FFA0649085022CB4AFE /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B82D87F3DD4A8EB4C508E0BFA04090 /* SDWebImage-dummy.m */; }; + 97235408E59E16C18B6BDA1D29E1CB26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED4FAFE5BD7891D4471852209337077 /* SDWebImageManager.m */; }; + 97385A64CA020489951EF769392C6DCF /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A19BDA4E648916460C20489D6D183F0 /* UIView+WebCacheOperation.m */; }; + 9887678D7D6BC165694560D92AF2C31A /* LookinConnectionResponseAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED1A3436209E7EBF3356CEC094C7391 /* LookinConnectionResponseAttachment.m */; }; 98AB6B8EB7FF096BCE87488C5AB3DF1C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 9A7FB1E975A5955C896E6B195C521804 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = C59475012E53558600AFA4F7685E8F9E /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A89C16038149623A1DF06D47E7F953A /* LookinStaticAsyncUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = D08B8F280C5811F6505EA1AE7983082B /* LookinStaticAsyncUpdateTask.m */; }; - 9B06400877E40C173F5A1C9761F288CB /* UITextView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = DE9ADECB39002B8ABC9BF590B430634B /* UITextView+LookinServer.m */; }; - 9B1EF09A8A473D92C1258B00791BF5F0 /* UIView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = B51F28BC73CA22D31949B1635AF8CAE1 /* UIView+LookinServer.m */; }; - 9B3420DEB8A0CCB9E1241A669AEFCA8E /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 086D3945C39C8554602424E64D1A9F0B /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9B9343E8599EE5196BA75E842DCB48B7 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = A187D3CE401AEF4272748BA58A834812 /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9BBBDC6BB6583BCAA75242231B62B530 /* HWPanModalPresentationUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 70ABAEE0904B02D3CE9045A0A088E18F /* HWPanModalPresentationUpdateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9CE425B89294BE2C13E70A86E75B15CF /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 889630ECFAA2151C2C1F334458A5C110 /* SDDiskCache.m */; }; - 9D422527A25BAE6A207DEFE11958ABBC /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B7C62DACFDBE481DDA82F7BE3396A68 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D859B99561C389C0F494428F66F1871 /* HWDimmedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 10D1C021B7050EF6841A364EE9A0A570 /* HWDimmedView.m */; }; - 9DDDCFC08B54A61C519DA78F94464E6B /* LookinHierarchyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 274EF5BCECE08045C7BB130E4D6ED8E4 /* LookinHierarchyInfo.m */; }; - 9DF446F8CA5BC4D4098766EC9063012C /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = DE5FC1FDACC1A466A889091A6DD9D1B4 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFFD4780CA32B8E53D9F4FBC8B3F5AC /* LookinAttrIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = AA574A6EA7EECCE7D1E086B964FA3C65 /* LookinAttrIdentifiers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E3C5CB1C97B2ED16218956999BFF7AC /* LookinTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 20C42B1A5A080256AC39DD86D000ACD5 /* LookinTuple.m */; }; - 9E6B00AF2ECE462D4D3C42AFC02F2AD7 /* LookinEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 79D13E836577BF8A934C5D3D24826BD0 /* LookinEventHandler.m */; }; - 9EBA682DA814406E9E5EF300587AF341 /* LookinAutoLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = D1F143BC4A879AC2B9896478CE4FF798 /* LookinAutoLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F89DCAA4092F3897E43E89842069A26 /* LKS_AttrModificationPatchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FED881DC5D7531317A8A2A309D96815F /* LKS_AttrModificationPatchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9FB234EB4D8B5BCC699DB491E204594F /* LKS_GestureTargetActionsSearcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D9DDC30D49B9BC3DFA8D9BC83722C14 /* LKS_GestureTargetActionsSearcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A078A275FFFA48D620074790DA3CA6CE /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = B4E40A4D926E9D870172CB05C27151FC /* MJRefreshStateHeader.m */; }; + 9A7FB1E975A5955C896E6B195C521804 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E42525F0D8B91406B2C7015E3E52B29 /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9A89C16038149623A1DF06D47E7F953A /* LookinStaticAsyncUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = EC9D66F9AD565D0A6E6595CFC812165E /* LookinStaticAsyncUpdateTask.m */; }; + 9B06400877E40C173F5A1C9761F288CB /* UITextView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3791DA4B477B236E8816C08DD01E3B45 /* UITextView+LookinServer.m */; }; + 9B1EF09A8A473D92C1258B00791BF5F0 /* UIView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E9CB22320707CAEB4EE4C1DF62EB9E1A /* UIView+LookinServer.m */; }; + 9B3420DEB8A0CCB9E1241A669AEFCA8E /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 167D63F7114C5D501803C08C617324CA /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B9343E8599EE5196BA75E842DCB48B7 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 32CCCC7F014C0FE2CA551D9AF48EEF89 /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9BBBDC6BB6583BCAA75242231B62B530 /* HWPanModalPresentationUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B98EB1E5D5490C1C17C90E124262C80 /* HWPanModalPresentationUpdateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CE425B89294BE2C13E70A86E75B15CF /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 45505B1DFA133379CEE6DD6D8148013D /* SDDiskCache.m */; }; + 9D422527A25BAE6A207DEFE11958ABBC /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C25E996193BA4D1FCBB5C2A7812FB9 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D859B99561C389C0F494428F66F1871 /* HWDimmedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6194A35582043CD8893F293567547D72 /* HWDimmedView.m */; }; + 9DDDCFC08B54A61C519DA78F94464E6B /* LookinHierarchyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D8B581D78D02F65425434F924BB64B3 /* LookinHierarchyInfo.m */; }; + 9DF446F8CA5BC4D4098766EC9063012C /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ECB40CAF1E6F3F4A5F02F74E30B95E8 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9DFFD4780CA32B8E53D9F4FBC8B3F5AC /* LookinAttrIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B857386E2ABDB8C3FD8B5797430DF26 /* LookinAttrIdentifiers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9E3C5CB1C97B2ED16218956999BFF7AC /* LookinTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A60F6547480237BC04A6287158556B4 /* LookinTuple.m */; }; + 9E6B00AF2ECE462D4D3C42AFC02F2AD7 /* LookinEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CAEC579F15CFFDB2E384C98A046EA76 /* LookinEventHandler.m */; }; + 9E7FD4501C2EF7FBF3379D21E46DB07B /* JXCategoryBaseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B08ADE1A4FFE94FDBBE13FE7CC2C1E5 /* JXCategoryBaseCell.m */; }; + 9EBA682DA814406E9E5EF300587AF341 /* LookinAutoLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FFD17C3FF6DE53EF72736C597DF5B82 /* LookinAutoLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F89DCAA4092F3897E43E89842069A26 /* LKS_AttrModificationPatchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F0B0B2E800350D0E38B61EF43E6CE75 /* LKS_AttrModificationPatchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9FB234EB4D8B5BCC699DB491E204594F /* LKS_GestureTargetActionsSearcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 029DB3501B51C5C14FA8EC0A89559639 /* LKS_GestureTargetActionsSearcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A078A275FFFA48D620074790DA3CA6CE /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 119F71892BB85FDC29B99AE148231087 /* MJRefreshStateHeader.m */; }; A0ADDB3C7DF96DF0E6BC53086778A103 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - A0B7A3B941134AA95A20F5A85165CC72 /* LSTPopView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 93DAC06B5293787BAAAA04E673812C59 /* LSTPopView-dummy.m */; }; - A0E0DC76F51300E7EB1EBA5492DE854D /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EFC403B9948A5A5D2DC7D8B3D9188A9 /* UIImageView+AFNetworking.m */; }; - A1560247914C760D9EE5F7A2392CC06C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = B2770F360CD876399FE83C30619DBC24 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A0B7A3B941134AA95A20F5A85165CC72 /* LSTPopView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E0EEAE3EFB0492B434EC2A704903DE /* LSTPopView-dummy.m */; }; + A0E0DC76F51300E7EB1EBA5492DE854D /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 156CBD2266287775279363430A374818 /* UIImageView+AFNetworking.m */; }; + A1560247914C760D9EE5F7A2392CC06C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 21199D87A8FB4561900F6BC425147989 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; A1A1266FD70CEB545FD7602CC33F2F7B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */; }; - A1ACD509069144C27542774A41FE0243 /* UITableView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2701A816C2728A79FA904E6F2AC8ADEB /* UITableView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1DC9EFDF50DF0EAF24D9D7C219AD2C1 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F69E397FB4534DAE86CE36E624729DC /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1E44277704AD68E867FD7C955A6632D /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = AA75F2BBB1F8188D75855FF34D8A7AE3 /* MJRefreshBackGifFooter.m */; }; - A324722BA42F21E98F158EA6C133D715 /* LookinServerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EAFD6E7E63CC2D3E074450E9124493C /* LookinServerDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A3EA39A13714B3103B82F4066A642F53 /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = C88E60EA597845949F0925B844477F63 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6728DA26A7C457B78A7A3CCFA9D9A10 /* UILabel+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 589A748D16780600B35F1BC7E7CEB243 /* UILabel+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6B2B022993BBC55550CFBB0A0C78209 /* LookinConnectionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 03BAE9F573ECB0A822C6757CBF10AB0E /* LookinConnectionAttachment.m */; }; - A6FCF74348D1907891FBDE3F2E331136 /* DZNEmptyDataSet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 972173A04BB5350B482CEE39EFFBE0EF /* DZNEmptyDataSet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A760FF1452F08B787F0997D91F4A2C98 /* HWPageSheetPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 25AB23A95A2135A43EF14C148E707F7A /* HWPageSheetPresentingAnimation.m */; }; - A839428F403C52D8AA3466B65E20C27A /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 01B6539E05000228B7BBD9BA57EDF5E3 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A86CC1AFDFDD692DC4EE66F57C0F39E6 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = B90789CA4A099321E01CFF8CB566B5F3 /* UIScrollView+MJRefresh.m */; }; - A8AD2AE9695630E93DE504211EBAFBF1 /* LKS_CustomDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 40D46544DD0F8DC61B909F5E02739172 /* LKS_CustomDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A92AB5E65CA85947368E46E6627F1BFB /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = EEE26007FA20AE54DB39973E3D1D76FF /* UIButton+WebCache.m */; }; - A93BA1C5A4FFEF3ACF371690485A2703 /* NSObject+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D3649A7CA35A3580F58B4481D9820AF /* NSObject+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9609EEBDD5FD40292925E80ED84D5DF /* LookinServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 802213010DCF77864E95B3A910F64EA0 /* LookinServer-dummy.m */; }; - A9A49E4A3BE8882F60DF32BAF39DE191 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 875E237862F4488FBFC692D1AB2DBB91 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9BEDE2ADF9D1E0D0D1A241806A1A486 /* LKSConfigManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6233A7302725D50AFE344EFD05C9C870 /* LKSConfigManager.m */; }; - AA1EA8F0F0470F1596B1FFA58ABF3375 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = C4D31F6949E2640BBC06F6F5E862EA6B /* SDWebImageDownloaderOperation.m */; }; - ABCB80C4813C849FC93D57676820C907 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = AD7824F87B7A4AC0EB49B7B856736BF2 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC14E56ECA7A4980A8E1CA68E800B12C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = B8F37F4AA285AB6E2540A4063D8B802F /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC710813CB6A1DAEEE45914402F864D2 /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 636EE1928B5BC8BC35DF1648C1BF1467 /* MJProperty.m */; }; - AD01931D200C49153984E27CBCEFE9D1 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = C1EC495C820AD2FE568E285440075D82 /* FLAnimatedImage.m */; }; - AE69A3B75BEEB9E2C54168BF0C502BC6 /* LKS_RequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 13527772A4A54A71A31658A3E36E2474 /* LKS_RequestHandler.m */; }; - AE7B02645B8F769CA5F215EE8F7CC5B0 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A732383A60ACA7498BD810AAC8E31192 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF185CDCA462AD6450543676951C82F9 /* LKS_ObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = BFFCEECD2573D5472737D9AFB10A0BB2 /* LKS_ObjectRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AFD1D411A9387DCEC6F0034653E23787 /* DZNEmptyDataSet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 979F4BB7A6CE1AF72F02D7E7F5EC0D7F /* DZNEmptyDataSet-dummy.m */; }; - AFDC0B8255B2F3CED8E609F8A3BD1CDB /* LKS_AttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 581F1A0410E8F8E85A8C2E596B4C7F40 /* LKS_AttrGroupsMaker.m */; }; - B01F27CEAE1971DEC56A8811FE669EB6 /* UIViewController+Presentation.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D36CFCB34B6B2FF494AB70EC5024CFA /* UIViewController+Presentation.m */; }; - B030B558BE97E0225652EFB8C8FA431F /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = AB771D1A9F6BE6B15418DB387EE5ADF3 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1ACD509069144C27542774A41FE0243 /* UITableView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 40380EFCFB5E34558C193A723D077BE3 /* UITableView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1BFCC1BC5107F5F72BDBDB98E12559C /* JXCategoryViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = C617C2D863C4AC28AF0370EDC02120A9 /* JXCategoryViewDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1C02A0C13BE4A139BC38BBE20217FA2 /* JXCategoryView-JXCategoryView in Resources */ = {isa = PBXBuildFile; fileRef = BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */; }; + A1DC9EFDF50DF0EAF24D9D7C219AD2C1 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = BE09431A1BE57A882CA02B1E434916A8 /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1E44277704AD68E867FD7C955A6632D /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A8EB0FE66AD3E48C10CDD802521D146 /* MJRefreshBackGifFooter.m */; }; + A324722BA42F21E98F158EA6C133D715 /* LookinServerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = D03FDB7D5A636ED3DC51EF05677C546A /* LookinServerDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A325C7E5098EB5641EF49D279EA9EF03 /* JXCategoryTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 202D2DE7A9C3209A4BF4D407CF1AB06A /* JXCategoryTitleView.m */; }; + A3EA39A13714B3103B82F4066A642F53 /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A50C0A5F4CA1B3AF632BFE12460FC6 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A643679AC9795083558C6D8E33AF6151 /* JXCategoryBaseCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A08646B05BD58116699CDFD07CA2977 /* JXCategoryBaseCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6728DA26A7C457B78A7A3CCFA9D9A10 /* UILabel+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 015571B1499F434BC7171DE7EA094577 /* UILabel+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6B2B022993BBC55550CFBB0A0C78209 /* LookinConnectionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 595E9691CC1A487C44431E51893A1D01 /* LookinConnectionAttachment.m */; }; + A6FCF74348D1907891FBDE3F2E331136 /* DZNEmptyDataSet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A05508640C7796358B45E0B5C0C73183 /* DZNEmptyDataSet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A760FF1452F08B787F0997D91F4A2C98 /* HWPageSheetPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = C947209A5CDFABA11FEBE5D709864961 /* HWPageSheetPresentingAnimation.m */; }; + A839428F403C52D8AA3466B65E20C27A /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A7095DB3527991440F374C9F9DB5050 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A86CC1AFDFDD692DC4EE66F57C0F39E6 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AFDFE95B53BDA0F282212CF3E9B940F /* UIScrollView+MJRefresh.m */; }; + A8AD2AE9695630E93DE504211EBAFBF1 /* LKS_CustomDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 230F8C4FD68EA2D95EA48F31DA295CE9 /* LKS_CustomDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A92AB5E65CA85947368E46E6627F1BFB /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 21C74D93A3238750FF610EABE13EB50F /* UIButton+WebCache.m */; }; + A93BA1C5A4FFEF3ACF371690485A2703 /* NSObject+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B26E1BE3EBF37131688F5656289ACA2 /* NSObject+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9609EEBDD5FD40292925E80ED84D5DF /* LookinServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F4DF3FAFAFDE0BEC7606CB8D4C2C98B /* LookinServer-dummy.m */; }; + A9A49E4A3BE8882F60DF32BAF39DE191 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 32DEFB57DAEAFA1A97A9826678533D16 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9BEDE2ADF9D1E0D0D1A241806A1A486 /* LKSConfigManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 17DDB1AC9EC1929E6B6DFC0CFA9D927D /* LKSConfigManager.m */; }; + AA1EA8F0F0470F1596B1FFA58ABF3375 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D68B54EB4EEB9AF6B9ED16CAB83E16BA /* SDWebImageDownloaderOperation.m */; }; + ABCB80C4813C849FC93D57676820C907 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8A3FC6E6388A4864974A3D3B9C02F6 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC14E56ECA7A4980A8E1CA68E800B12C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = C63ECE6EA6AB3C1B9F676C1A2510CA67 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC710813CB6A1DAEEE45914402F864D2 /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = C9DDC2FE19D7DC5621872F440C5E8A37 /* MJProperty.m */; }; + AD01931D200C49153984E27CBCEFE9D1 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = CE3837EC7E52B2C2855416D01CB974C7 /* FLAnimatedImage.m */; }; + AD395F6BD7F53258A431E9479D07C6AF /* JXCategoryTitleImageCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 04AE87BD26EBAF13B558201544C0E822 /* JXCategoryTitleImageCellModel.m */; }; + ADAB2E78F005C6413F9F3699D60CF727 /* LSTTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = EF426A2B87D32263A2C56A13732C8201 /* LSTTimer.m */; }; + AE69A3B75BEEB9E2C54168BF0C502BC6 /* LKS_RequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 15E765BB9B77EA9AC2800F30D2802C1C /* LKS_RequestHandler.m */; }; + AE7B02645B8F769CA5F215EE8F7CC5B0 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E44ED3A05255119AA352B7DE0C64E994 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF17C7BD3344504E243E234004B4593E /* JXCategoryIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = FD4AB223CCA1E3159EE2C805605A0657 /* JXCategoryIndicatorView.m */; }; + AF185CDCA462AD6450543676951C82F9 /* LKS_ObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A2FC8CB1CFEB2812A4E5E466940232C /* LKS_ObjectRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AFD1D411A9387DCEC6F0034653E23787 /* DZNEmptyDataSet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FFFC6DDC16F58E87A8A30CA92223320F /* DZNEmptyDataSet-dummy.m */; }; + AFDC0B8255B2F3CED8E609F8A3BD1CDB /* LKS_AttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C4B5B00D7224F098F6B2FE0962E5086 /* LKS_AttrGroupsMaker.m */; }; + B01F27CEAE1971DEC56A8811FE669EB6 /* UIViewController+Presentation.m in Sources */ = {isa = PBXBuildFile; fileRef = C806BECAA1C722F04FE4A89D9B14A0E0 /* UIViewController+Presentation.m */; }; + B030B558BE97E0225652EFB8C8FA431F /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F7FE08919F8BE5AACFB3A1E812E57C03 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; B03761E468C3B0F1BFEB2401CF2D5245 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - B09F08548ACA8379445F6525011EE219 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AE63A9BC3D50E34C84263A87F782ACA /* MJRefreshBackStateFooter.m */; }; - B2704AFFC5CC053154839DB44924D255 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 069FA883A4FACC46317AB2BE1BDE30E4 /* SDImageCoderHelper.m */; }; - B2B5444DFE63D2835A7561C1D64C9344 /* LKS_CustomAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = CB56ABA66093040F0D62AF378BB66DBE /* LKS_CustomAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B2BC43DEC8DE2B9234693FE3782AB76C /* LKSConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0D53461EC25E2C6DAE3F3C2ABD951A2B /* LKSConfigManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B331CE2D3DEB461E738B886086A365F9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 7F2363FB988E5DC9705FE22B29B7B4F8 /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B48A975992E58328254C494F133DE467 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 690D12C73095E1091E4B6AB8B11A064E /* NSObject+MJProperty.m */; }; - B4F231C5CBAB3D4A184699D0066E0E83 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = C685758668AFAC91E0AE4675AEA80600 /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B565C08CE947CF591B1D3582272D5E1D /* LKS_CustomAttrSetterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04D3C87C11221ADDA77670ED0731D145 /* LKS_CustomAttrSetterManager.m */; }; - B59E60FBC9665FC1061B88B8E6FD9FAF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 672AB6E0839CC099E7CA7CF49761A5D7 /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5AF87C11A465F666473F6191D173905 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 8166AA98A11AE7F3F46DBF2C481F6DF5 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5C521FFB8E09DFE348238E21556842F /* UILabel+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = FA721DB25EC176AA8EF0102082B67F5A /* UILabel+LookinServer.m */; }; - B66356D4E7E43B3D15324569AA7EBB05 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2D7205061D92FA9AEDA20BCF1B6FF9B7 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B680C2604BD8BC9644AE7C67BC46B9BB /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C6B8E558F2970AA962D063345B79D19 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B741DBE2A466E6211F879EF997D9322D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FDBCFE0DF35F1346C9E17295438B88A /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B79864F972C51037B350802D8CD48024 /* LKS_GestureTargetActionsSearcher.m in Sources */ = {isa = PBXBuildFile; fileRef = BC24AF9FD32062D15DE214E94B0E828F /* LKS_GestureTargetActionsSearcher.m */; }; - B81566F19789EBD9BE2714E2A6059D36 /* LookinDisplayItem.m in Sources */ = {isa = PBXBuildFile; fileRef = B36F0D1046FE48DF23AE7AB21CD678D3 /* LookinDisplayItem.m */; }; - B8CA1F338C44C633916650FD85DA5A30 /* HWPanModalPresentationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 3C880A37C8BD02476827078E98C08810 /* HWPanModalPresentationController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B95C63A039D9D08896421291DEBD3AEB /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EDBEC1105ABEB5730250B28CB605E44 /* SDWebImageCacheKeyFilter.m */; }; - B987864019E987FE32AB26A9CF2C8E12 /* UIViewController+PanModalDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 4816EA2348DC71F3330B4D2743758FEF /* UIViewController+PanModalDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B98BC635A537547CD8CA9B77C750304F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - BA904ABA8ED36CC4E5EB2B2004CA1F18 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 00F09038ADB7D3ACE57173DD781066A5 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BACAA91A92F35CD7E7795232A83F21D1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F0CB265D0463DC2290A542EFCE210632 /* AFNetworkActivityIndicatorManager.m */; }; - BADA31750A2136D073EDA4461DBE1EEA /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 16276D593D3F4D227902AF3A1424A4AC /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBA61EF31BFDFA6FCA34DC4EBE6E1D9A /* NSString+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = CEFEE7CEBA57AF6426BA05F18F444C4E /* NSString+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBF5FDA7D647517E2F904FE8E5596D96 /* LKS_AttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 54E07E4DAA97DEDC8F59F58429664909 /* LKS_AttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC2F9B1D6986FEB23B4FB1288B512538 /* MJRefreshNormalTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4082EEAE9AC1F17D236D83E99200EA70 /* MJRefreshNormalTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC5458210A973BC7A29D1F45D458A14B /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CA3017C0C359C5E90091B685A3A59EE /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC7A1933CCF40C3C5E2E4A70AD2D0657 /* LookinDisplayItemDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = DA876A02B80932A6284AB2ACAB8135A6 /* LookinDisplayItemDetail.m */; }; - BCDC1E1D46DD124B5726A064D2EE66A3 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 452B8DD5CBF29E80E794E957D7ACEE0F /* UIImage+MultiFormat.m */; }; - BCEFDE57BB0E0B36731C8D39FFA1BE2C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E350DE3AE3DE0F5FC5BD9A2EB159387 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD2F6B06ADB5136DA881D1B918367125 /* UIViewController+PanModalPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = D3576B2FF83DF230E75AA05AB2DB6B4D /* UIViewController+PanModalPresenter.m */; }; - BD30193C1E3D7B1F17B1B1F3F08BE655 /* UICollectionViewLayout+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = C45F5D95A727E9121E38DFEFADA82094 /* UICollectionViewLayout+MJRefresh.m */; }; - BDBE494BAC544843982C3CA96A6C41DD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B130ACC8A24ECD0BF3BD07D5AF21E4D /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BE4F0DF600FBF07E812D262B293CF76C /* UIView+LSTPV.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CE9728E85B8432ED072CD0DC7926F20 /* UIView+LSTPV.m */; }; - BF0C3D2782FE1425C2F1F8827132A94B /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A5823526F694533978DE523241FEDE9 /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF22D137EF6324675FA50080C5D93C00 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 14454326E9CB6046C0CA3ABA3A33F187 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BFAC671767912906E90060B0F4BED5FB /* LookinCustomAttrModification.h in Headers */ = {isa = PBXBuildFile; fileRef = AA4F3775DDC9BAD8BC30D51376A765F0 /* LookinCustomAttrModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C04D578067F77AAB6717D32712CC39A2 /* HWPanModal-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B1C14811A97739A8455D69D9EF8F1AA /* HWPanModal-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C0D7926E41A294ACA98D7B033B283919 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = FC504494ABD0D1144D620FD1501F0E00 /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C16483526F6C6287240A75EDCB7E2F2F /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = DCB59AEF88556057BC2FD85427D2EFE7 /* FLAnimatedImage-dummy.m */; }; - C1D9802BE2A6410FFDFB1650FB9BA317 /* LookinDisplayItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 48B9B4465675824F9DA134FE2253901E /* LookinDisplayItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C1DD8C6A64F948E4C53560C76B995DA4 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E5C8F44BD62EB86605C88FA434E57ED /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2033A68F13923BF9B3EE19F39FC1411 /* UIColor+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D52AD9DE99C02DF34E22E59E4A970F45 /* UIColor+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2068AEACC2D9C7F1FFE41AA25B12A68 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 996E03E4CC36DB69F10AD9C8F02472C6 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2840BF1950FF7EE2DCD6D55F768A49C /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 51E9651B0CFE7B40336ABD29412D3C39 /* UIImage+GIF.m */; }; + B09F08548ACA8379445F6525011EE219 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = DD1439668AF92748DEFAD18BF418CE55 /* MJRefreshBackStateFooter.m */; }; + B0F512045830FAB66AE7526E35501800 /* JXCategoryImageCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = D4C17E87C77E85F28C83D98FAB4AB7F4 /* JXCategoryImageCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2704AFFC5CC053154839DB44924D255 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC5ED786070BB7777881EF2B55FF369 /* SDImageCoderHelper.m */; }; + B2B5444DFE63D2835A7561C1D64C9344 /* LKS_CustomAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 137E45FE90DEED579DF255BB11ADABF4 /* LKS_CustomAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2BC43DEC8DE2B9234693FE3782AB76C /* LKSConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D16058E57E3F07CA628E8A17A3B944C1 /* LKSConfigManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B331CE2D3DEB461E738B886086A365F9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EF3518EEE6DB69526EE34FF9D58DFD /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B48A975992E58328254C494F133DE467 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = CFD12B92C17E28346EDC2EC75D0BF494 /* NSObject+MJProperty.m */; }; + B4F231C5CBAB3D4A184699D0066E0E83 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DC870A534B766E7815C7744EE9E7E3E1 /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B565C08CE947CF591B1D3582272D5E1D /* LKS_CustomAttrSetterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 567674319F769F7E8B80920BBBD444B6 /* LKS_CustomAttrSetterManager.m */; }; + B59E60FBC9665FC1061B88B8E6FD9FAF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CBDE62F720E1751DB8B8E4DF3B0E9F /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5AF87C11A465F666473F6191D173905 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 634BE374E20F830B5B77550EFCF89612 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5C521FFB8E09DFE348238E21556842F /* UILabel+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E285AA5C9AFC477B5336B5AC2C863D1 /* UILabel+LookinServer.m */; }; + B61728EFE4A95013413ED38D371A33B0 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 187A3F425AA5E5A93F8784E11F9E28CF /* PrivacyInfo.xcprivacy */; }; + B66356D4E7E43B3D15324569AA7EBB05 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B89E97BE59B9448BC63E348FA77F055 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B680C2604BD8BC9644AE7C67BC46B9BB /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D56371580E6496005BC9D35C2C49570 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B741DBE2A466E6211F879EF997D9322D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B5308ADA544D7E6FCE86EFD21D5CBB /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B79864F972C51037B350802D8CD48024 /* LKS_GestureTargetActionsSearcher.m in Sources */ = {isa = PBXBuildFile; fileRef = BC88BA608872DDF711D78498FD36C1AA /* LKS_GestureTargetActionsSearcher.m */; }; + B81566F19789EBD9BE2714E2A6059D36 /* LookinDisplayItem.m in Sources */ = {isa = PBXBuildFile; fileRef = BCE8E065BE01E56E0D55097E36AB8FC2 /* LookinDisplayItem.m */; }; + B8CA1F338C44C633916650FD85DA5A30 /* HWPanModalPresentationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 195F1795B17C3F026E46BBEF64C1EA67 /* HWPanModalPresentationController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B948DCB652CEF1509FBE410D85844A53 /* JXCategoryView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 84C7B13561A207799480933E11856D99 /* JXCategoryView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B95C63A039D9D08896421291DEBD3AEB /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 34C31D8DFEC22296E69E97BC5CEAE316 /* SDWebImageCacheKeyFilter.m */; }; + B987864019E987FE32AB26A9CF2C8E12 /* UIViewController+PanModalDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BAC219B4754C1E13B6929143780BE52 /* UIViewController+PanModalDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BA904ABA8ED36CC4E5EB2B2004CA1F18 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = F451B2E12A8192978BB7FB1B45BF1E04 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BACAA91A92F35CD7E7795232A83F21D1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A5FC57ACB22E21DCA20F2B582D18A03F /* AFNetworkActivityIndicatorManager.m */; }; + BADA31750A2136D073EDA4461DBE1EEA /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C4CB24406FFC32C73C615D12F0532C7 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BBA61EF31BFDFA6FCA34DC4EBE6E1D9A /* NSString+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 06AB57BB46CC82FE3257276649BAF8EA /* NSString+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BBF5FDA7D647517E2F904FE8E5596D96 /* LKS_AttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = BE10A2A4B13E0F15A962DBEA161DE595 /* LKS_AttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC2F9B1D6986FEB23B4FB1288B512538 /* MJRefreshNormalTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 342267EEBD80FDDCEAA647EFBE0EB6BD /* MJRefreshNormalTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC5458210A973BC7A29D1F45D458A14B /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A1067B051CF7A4C36817E6F668A3E7A6 /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC7A1933CCF40C3C5E2E4A70AD2D0657 /* LookinDisplayItemDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = F90D97C684BADB3FE9796E626B98C43A /* LookinDisplayItemDetail.m */; }; + BCDC1E1D46DD124B5726A064D2EE66A3 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 5734E5CBE9E63CD37E71A375796587B5 /* UIImage+MultiFormat.m */; }; + BCEEAFC24178DE5AABACC74245CE1739 /* JXCategoryIndicatorDotLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 898DE7614EA3416744425477D130D9C7 /* JXCategoryIndicatorDotLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BCEFDE57BB0E0B36731C8D39FFA1BE2C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = AF302A5E7BA56F9F631A8591DA72D3C3 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD2F6B06ADB5136DA881D1B918367125 /* UIViewController+PanModalPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = B05FD8A103E2A06EE08BE59B38FC36B4 /* UIViewController+PanModalPresenter.m */; }; + BD30193C1E3D7B1F17B1B1F3F08BE655 /* UICollectionViewLayout+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 99CBD01AD35AF793B343AC0ACF2CF164 /* UICollectionViewLayout+MJRefresh.m */; }; + BD7E02AB6057AD5A6AC513C34D508135 /* JXCategoryIndicatorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF91306ED7817FCE47628D37A94BF1B /* JXCategoryIndicatorBackgroundView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BDBE494BAC544843982C3CA96A6C41DD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BEAAFCDD4CD23AABA4CD7359454B646 /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BE4F0DF600FBF07E812D262B293CF76C /* UIView+LSTPV.m in Sources */ = {isa = PBXBuildFile; fileRef = A4D8DE877E59C1B5596F10D0213ADC5D /* UIView+LSTPV.m */; }; + BE7F6E08A9BDA2EF6FA625EB5CD685EC /* JXCategoryCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = D9DA60EBF6A57B0D3224E3ACD3E51971 /* JXCategoryCollectionView.m */; }; + BF0C3D2782FE1425C2F1F8827132A94B /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C9F5466A18204DE825F30433C784EDB /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BF22D137EF6324675FA50080C5D93C00 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C07CC30774DAAE34D68C477CE151A36 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BFAC671767912906E90060B0F4BED5FB /* LookinCustomAttrModification.h in Headers */ = {isa = PBXBuildFile; fileRef = 06A633B376D525417B93138405029540 /* LookinCustomAttrModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BFD8EC99CD8DA66E3C6C0B3EE8CC4859 /* JXCategoryNumberCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = C74AFAA0D49E0563D9312CEA70CCF8B3 /* JXCategoryNumberCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C04D578067F77AAB6717D32712CC39A2 /* HWPanModal-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 83FBF1722FEB1FC5E339C64BC2275D81 /* HWPanModal-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C07F8A334C739FD38D9CB5C5239D683F /* JXCategoryTitleCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C34880EFF82114AECCB354A57C47E7C /* JXCategoryTitleCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C0D7926E41A294ACA98D7B033B283919 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 21E66554273E5793F0BC4D1CD5A058CD /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C16483526F6C6287240A75EDCB7E2F2F /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E3535B97DCD1B05E059D045B16700F34 /* FLAnimatedImage-dummy.m */; }; + C1D9802BE2A6410FFDFB1650FB9BA317 /* LookinDisplayItem.h in Headers */ = {isa = PBXBuildFile; fileRef = FED61E621A88CB9CE3C421FDEB1106FC /* LookinDisplayItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C1DD8C6A64F948E4C53560C76B995DA4 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = BEE43BCA7C1A101BFC7A5856F8793387 /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2033A68F13923BF9B3EE19F39FC1411 /* UIColor+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A34A08E72CC7EE2DEDDC6F48148CD79 /* UIColor+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2068AEACC2D9C7F1FFE41AA25B12A68 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E54C32C4CB68C01C57E81C03350F4B2 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C22BFD04EAB76981E7F112D57A1F5E79 /* JXCategoryNumberCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B8FD707DDEC1F98F5C5FE19647F0592 /* JXCategoryNumberCell.m */; }; + C2840BF1950FF7EE2DCD6D55F768A49C /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 35205291EDA412911A7CCBF5DB6087EB /* UIImage+GIF.m */; }; C2F8C43CFD4C890405F217DA7E00C839 /* Pods-CustomKeyboard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2FE60A10C792613E45031AE6E851ECB /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = B12BB85356FB25DB1C8CA459600D3F8E /* MASViewConstraint.m */; }; - C4CC01ED368863C6E3220988FBC6CEFB /* LKS_CustomAttrSetterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = BC686BE8B7F5AC6B3A652ABBA6EAE87A /* LKS_CustomAttrSetterManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C60DB44F719853DE3B7157960DAF9270 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 5A4E8FC1A8280B0B2C51BA4C08DA78B3 /* MJRefreshComponent.m */; }; - C6A100159974349FEAAC99B82BE0F872 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = A65F19FCE0D1235D1B87CDFD5146518C /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6FEC1088121FEA7DDC3384B7ECF3B44 /* LKS_Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2262EDBC98A2795DB2EE27FB7D953E2C /* LKS_Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2FE60A10C792613E45031AE6E851ECB /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = CF9BCBE90C3B7C448764C897685CB0E3 /* MASViewConstraint.m */; }; + C4CC01ED368863C6E3220988FBC6CEFB /* LKS_CustomAttrSetterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 38E107BE978505B98A952E3564F532AA /* LKS_CustomAttrSetterManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C60DB44F719853DE3B7157960DAF9270 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F81509596D525489E9AA55CE4C0B4C1 /* MJRefreshComponent.m */; }; + C6A100159974349FEAAC99B82BE0F872 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CE19B5D21ECCFC76311F186D2B3F651 /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6FEC1088121FEA7DDC3384B7ECF3B44 /* LKS_Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = FA6406A6E74DC06D367BE38EA6C60243 /* LKS_Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; C71935C30C1AEDF32B96670BD8FA64CE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - C857B8D2D0BAA5A8A764F9E1C4B85807 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = FD22D0365334ED54585130432CEF0912 /* ViewController+MASAdditions.m */; }; - C8771885BEA9EA0BD2E2C474587325E2 /* LKS_ExportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DC75CCA31193BB63063F364267DBCF2D /* LKS_ExportManager.m */; }; - C8EC35DFB0945DBE2F2FF9ECFE6D9711 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 361FBE2595D99942EB88F5C0D34EB2DA /* NSLayoutConstraint+MASDebugAdditions.m */; }; - C93E972E75F84674690300123984EC43 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DBD3AB6DB93D7C2BE4FB5D89E1938FD /* SDAssociatedObject.m */; }; - C992A335399F942237E754EE65C40CA5 /* LookinObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 47F9AD4ED221D6EEDB441FAF35299C66 /* LookinObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C993A4D0CFA51E567F458CA65C1298AA /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = F2AA502A31D7ACB4F28AAE65C3561F31 /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9A72F0A93329C42B77395B0F6CEA26C /* HWPanModalPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A4F0899D1AD5593F9373F8225D28188 /* HWPanModalPresentable.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9B63C6ED2ED691EA83D3EE65939444B /* Lookin_PTProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 7577D873945C0C370C14EE971C3509FB /* Lookin_PTProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9E19D164C26414115CC969ED9A303C1 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 82512BA24900AE369D9A35A08C7187CC /* MASLayoutConstraint.m */; }; - C9E8C9372C2DA29D302B058BE3AE9877 /* CALayer+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A89D8D8B71AD9A723D88B13AF519A214 /* CALayer+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA1E0DCDF679EA2DE2ED0915426E1D04 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = E2E3CFC89381BAE830E4045CE02E25EB /* SDWeakProxy.m */; }; - CA56274BE7CBB3E759E0364785DF9799 /* Lookin_PTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 39D285C0DD3F1106B921412AD679ADEC /* Lookin_PTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CE86196C00DC1D658B6CB7D47A0233AA /* LKS_ConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DF4E1CE47903B976C738C7A1DB7C650 /* LKS_ConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CF7005F2C42AC2E2DD6D437D52C7048B /* HWPresentingVCAnimatedTransitioning.h in Headers */ = {isa = PBXBuildFile; fileRef = FCCAFE3B7FF5BB1E728A5F5834F651D8 /* HWPresentingVCAnimatedTransitioning.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CFF8D1A5E4C2097EF05E1021FE112886 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 37B6B4596E25AE5CE5BE1FE14A6AF93B /* SDWebImageIndicator.m */; }; - D06BB547D59D183FD1DDD84DEBAC9EE8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 360B7B34B46811D44994D83FAC09E663 /* SDWebImageCacheSerializer.m */; }; - D091F05269EE0566B665B00C7D912F8E /* Lookin_PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 230DC3B27944D3472C6A06DA7EEAF194 /* Lookin_PTChannel.m */; }; - D121163078CA9BBE54A83BD73EF784CF /* LSTPopViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 76DC37DEAFA5D12B1D7F9040EFB03DA5 /* LSTPopViewProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D1230E19DD1507E6370B80DF6653AC2A /* NSArray+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FBCAF641C4059BE19811532C4E3A0A2 /* NSArray+Lookin.m */; }; - D2AF9A7FD73B95960FDA4FD06C4BED08 /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 07752F7C2A34B933346F7E8E9D95461C /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2CD8848F856EC9942A76610AAE66F0A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A46088339E0DB93FCE586878F070297 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D3615499AFE4D2A8EC2E773F4D8A82B2 /* KeyValueObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = AF32E35E8F4552F6AF08F140AD085FE4 /* KeyValueObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D559CC4D0695CEE05F3B4C1C06475044 /* UIImageView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = EBD791825D3A6F564E4BA3B31B0F2BFB /* UIImageView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D5C046C46961BE465293625D6B870620 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CF307ACF82B2962F9E48DD0D029690F /* AFNetworking-dummy.m */; }; - D62A672EEB252581BD972DDA862BE1DD /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6407DC7FD67C9C74E0C3BA6B778AE0CD /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D662C83ECE8BEDA5FFB52F3575CA3E1A /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EDF0BD9574A366871EF5B3FBEFB906D /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C74589E03918328E4D27EFCBF6C4A0B8 /* JXCategoryBaseCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 65F97EE1352D7FC02982C03FB1D0FBEB /* JXCategoryBaseCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C857B8D2D0BAA5A8A764F9E1C4B85807 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BABE1F324CED82D14350741682D422B /* ViewController+MASAdditions.m */; }; + C8685678D1B020F87365D022216FFE29 /* JXCategoryIndicatorImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D5D75E71D2ABCC5D3DDCC662DACBFAED /* JXCategoryIndicatorImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C8771885BEA9EA0BD2E2C474587325E2 /* LKS_ExportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 44ABB514E2C8BB7AA8881283E1F0FE47 /* LKS_ExportManager.m */; }; + C8EC35DFB0945DBE2F2FF9ECFE6D9711 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 25A7097BBC72B099A6C5D8BE403878A8 /* NSLayoutConstraint+MASDebugAdditions.m */; }; + C922BFFF717515E5878910DF4078CE1E /* JXCategoryIndicatorDotLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4AC84F5855EC104608477917DF3145 /* JXCategoryIndicatorDotLineView.m */; }; + C93E972E75F84674690300123984EC43 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 9421B0E41FC583CAD966F98C60445BAB /* SDAssociatedObject.m */; }; + C992A335399F942237E754EE65C40CA5 /* LookinObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B1D41519ED222707112BD66393CC6B2 /* LookinObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C993A4D0CFA51E567F458CA65C1298AA /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D5100072476E008E3F5E024784855C6A /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9A72F0A93329C42B77395B0F6CEA26C /* HWPanModalPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 83D5AD11F2E32B53BA1869D6DE812341 /* HWPanModalPresentable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9B63C6ED2ED691EA83D3EE65939444B /* Lookin_PTProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = FB5DC78AEFAB6098819933CF81AAB15B /* Lookin_PTProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9E19D164C26414115CC969ED9A303C1 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = EB21E143FD58D712C16E9026FBFFE194 /* MASLayoutConstraint.m */; }; + C9E8C9372C2DA29D302B058BE3AE9877 /* CALayer+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 26925632A670841DDFC5067C12B16515 /* CALayer+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA1E0DCDF679EA2DE2ED0915426E1D04 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = C5A9A86ABA54140CD0A5B6CD44C79740 /* SDWeakProxy.m */; }; + CA56274BE7CBB3E759E0364785DF9799 /* Lookin_PTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 35269DC2485E9AA07A892FDEB96B16C7 /* Lookin_PTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA9AFE3460622CC65F75A2DDE845F6E9 /* JXPagerSmoothView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A2E4F46AFE1B8413F8C1C81323B5831 /* JXPagerSmoothView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CE2AF36EBB17CDA2652CBADD4A7ABF82 /* JXCategoryImageCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EC57F0405D7809ECABB52C0C041C6F2F /* JXCategoryImageCellModel.m */; }; + CE86196C00DC1D658B6CB7D47A0233AA /* LKS_ConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 60913F6F25D56976457BFFCFF2C2FADC /* LKS_ConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CEC9EF043F69710AC29940EB4E1E2B19 /* RTLManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E752820782AF474A360AC65F5EFA79D /* RTLManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CF7005F2C42AC2E2DD6D437D52C7048B /* HWPresentingVCAnimatedTransitioning.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AEB6DDDE2B74ABEB1D68CE037D784DC /* HWPresentingVCAnimatedTransitioning.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CFF8D1A5E4C2097EF05E1021FE112886 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A8F3B5ED5052E8AFF569E50436DC3C0 /* SDWebImageIndicator.m */; }; + D06BB547D59D183FD1DDD84DEBAC9EE8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BEFA0A1959620AC394975A01082A23B /* SDWebImageCacheSerializer.m */; }; + D08901EA319887BE6D694F8333BE8D1F /* JXCategoryIndicatorTriangleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E17CF24E4278604BB723E30B9997957 /* JXCategoryIndicatorTriangleView.m */; }; + D091F05269EE0566B665B00C7D912F8E /* Lookin_PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 69AE4F19374B51CFBF6330CC5F82B32A /* Lookin_PTChannel.m */; }; + D0E37358C3DCF2A8A572C4F38BB0569B /* JXCategoryListContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 29EA07EA8EF3C7818A9505A783C4FF02 /* JXCategoryListContainerView.m */; }; + D121163078CA9BBE54A83BD73EF784CF /* LSTPopViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F35F0E5B188FD04E8E889503DEA5841 /* LSTPopViewProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D1230E19DD1507E6370B80DF6653AC2A /* NSArray+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = D4BC45247918896A52CA0C54F038B447 /* NSArray+Lookin.m */; }; + D2AF9A7FD73B95960FDA4FD06C4BED08 /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BDE2764DE3EEF78845A18DB898232DC0 /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2CD8848F856EC9942A76610AAE66F0A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 31894250FE81D510485178A2F984B715 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D31558927DE3F62D1BB1FC416E6F237D /* JXCategoryDotCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EF3A8DFB97BB54D169F6E8AC578F498C /* JXCategoryDotCellModel.m */; }; + D3615499AFE4D2A8EC2E773F4D8A82B2 /* KeyValueObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E70DDAD553B6A4AC2379D01C3F133EF /* KeyValueObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D380F9C945002DBF2E7D64983ABDC890 /* JXPagerListContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = CF85D3EF505C17C565E691AC344CCE5C /* JXPagerListContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D559CC4D0695CEE05F3B4C1C06475044 /* UIImageView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F45F2EB9AE5E2D5BDC0F9860DB695385 /* UIImageView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D5C046C46961BE465293625D6B870620 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 17CD950341D8F0132ADFEDC39B7267A7 /* AFNetworking-dummy.m */; }; + D62A672EEB252581BD972DDA862BE1DD /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5409A465D5BE745D21B9F8847B798BD5 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D662C83ECE8BEDA5FFB52F3575CA3E1A /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BCAF03C4FF87945F86C061039CB2443F /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; D663837F4347AF58660EE6F7FD426ECE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - D737D93725B0E072027AB6DA9C4DDDEC /* HWPanModalAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = CF585038948BE5BD9FDE25D090C77A52 /* HWPanModalAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D788BA4B9E8186271BA75CA52B30502C /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CF635A9AE952B4C70F06837B227DDCC /* View+MASAdditions.m */; }; - D7B3E8948DB04BD8FB6748419DA03EA9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 5839F6C7ABFF6E515370151D7E470262 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D89C7D5455E3E8E2D7EC6B880253BD9B /* LookinIvarTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DDCF4465DE05312EF540D3B5319ADAF /* LookinIvarTrace.m */; }; - D90607B4E56247B19B14462E487BA86E /* MJRefreshNormalTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = CF5E2B29305178430BD510351FDD6C99 /* MJRefreshNormalTrailer.m */; }; - D90DED0F5638B1C44F4B6C62D600D240 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A75653F7F6754FE7D26DA5C94A641DE8 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D90DF1376DF5E2EA644313BCD2E03058 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 4056B0FA7CFCA3F0B3BA1F921297B1CC /* MJRefresh.bundle */; }; + D737D93725B0E072027AB6DA9C4DDDEC /* HWPanModalAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 42F934D080B2CC7F2CD859E2B472A585 /* HWPanModalAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D788BA4B9E8186271BA75CA52B30502C /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 903038F34EE93C82A3EF6A1F6BDF857B /* View+MASAdditions.m */; }; + D7B3E8948DB04BD8FB6748419DA03EA9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 13D84A2503CDD440D0A0063FF97A2EB4 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D89C7D5455E3E8E2D7EC6B880253BD9B /* LookinIvarTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 89DA873F803BF9043720F615E8BC4CD5 /* LookinIvarTrace.m */; }; + D90607B4E56247B19B14462E487BA86E /* MJRefreshNormalTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = DD3BFE6DB15E8FF64920F720EA31EEDE /* MJRefreshNormalTrailer.m */; }; + D90DED0F5638B1C44F4B6C62D600D240 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = D40BB639047461966566FFED666B3ACF /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D90DF1376DF5E2EA644313BCD2E03058 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 43F4AA149B8B7307ED5DA363EBC93DBF /* MJRefresh.bundle */; }; + D93EA925FC24665584B3653514A56706 /* JXCategoryIndicatorImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = A2C056F5D1231FA94F92AA3712D545C2 /* JXCategoryIndicatorImageView.m */; }; D968461E31E8FF3FF6BA1DC621B0433B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - DBA9500CBBA5FF6FCBBA115AE4D12152 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 9005237D68B29ED337A382B01C2917F8 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBA9500CBBA5FF6FCBBA115AE4D12152 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A75069F0A291D74DCBF8F50AA213D806 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; DBB7D12AC159E50D059772E4B6CF1D2F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - DBD9152526A180771BF7D7CD209B957E /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 68BFCD31885FD8664001BB1EFAC74751 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DCCBFE0D3914D33369C19AC135AB54AA /* HWBackgroundConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 3583F45BB2A021FDC55DB56C5C606CB1 /* HWBackgroundConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD7F63D4E4640C7386877BB787740272 /* LookinServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 96AA5B4DE9A3DA12F53F6CB5D9AC99E2 /* LookinServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDA16FB9C21AD941442357DAE6939530 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 17E50DA329E2F435CC41C2257BD0C866 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDB268F1408C6AA5860C768310E9B9D6 /* LSTPopView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = E90228ED50408CEB55B1257A093A4B1A /* LSTPopView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DE5A78F116018E2AC54714238276574D /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 37526D876665DA3E019DF167F09B21F4 /* UIActivityIndicatorView+AFNetworking.m */; }; - DE98ECCCA7106A4EA575EF34830D41FF /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 882CA8EEAEB3525FB7AD66F6FFC2CF6A /* MJRefresh-dummy.m */; }; - DEA09692CF813A23899CD4949A9B6801 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 119E6680DBF287ACAD4F054AA0D5AE17 /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DED9ADFC8CC65243FC54E008A853742C /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = F032CA5D8067C46163CF052F106C2A2D /* MJPropertyKey.m */; }; - DF2B15402CE105F5A8CE48BBDCFFD5DD /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 1ADF5834236B788D4ADA4E85DBD68395 /* MASConstraint.m */; }; - DF525E5405FAD3B98B0C2D966EB2DD95 /* UIViewController+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = F69E813A3DBBC0717A1A31E2B15A0606 /* UIViewController+LookinServer.m */; }; - E0B48B9D5D45AF3500FC718459D66E6C /* LookinDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 610E7F99F72A12BE4DBEF2C1ABF10115 /* LookinDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E0BCF21E9FA59F638C13ECCECC4D9690 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CC308EFB0F9E5B050F606DDD3E7A44F /* SDMemoryCache.m */; }; - E1B4145C5201DB66B65520B36849067C /* HWPanModal-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 13066DF230EEB3642E5BD7E5097A64F9 /* HWPanModal-dummy.m */; }; - E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 654D22CCA8871E0E0A65AB7C50503EB4 /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = E02C6844FCB15EFA12DE7936E2D89768 /* UIScrollView+MJExtension.m */; }; - E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = C8667A6D81C45427108730E481B7134F /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4773572BED239AA7D618F1C05BAF51E /* HWPanModalPresentationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 165D33815F330DB72870682C820A790B /* HWPanModalPresentationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4F1B478580D6D7328BC29607BDE46F6 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = 16A00EF4CD873ABB9D94776FACC7C92F /* UIImage+ExtendedCacheData.m */; }; - E50613C67DD02AF6EA825DA0B31EFFAD /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = A4288DFF17DF27DEEB1590D7281FBBD7 /* SDImageGraphics.m */; }; - E55B3151D86660E28CEABC3CDE6B1508 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 77A510DEE4CCFDB66B19F133A209CDF3 /* UIButton+AFNetworking.m */; }; - E5B057BC87284367918B2DB9CA084B4E /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 55CB47F746B1E99E4F1E11247844A401 /* MJRefreshAutoGifFooter.m */; }; - E7520DAA65004368C61453B8A2740295 /* HWPanModalShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 883D06418312C016F973700D20558656 /* HWPanModalShadow.m */; }; - E76969F9B01139118427505B18F9CD21 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = D2E3EA9E3A659E147112B9E7A63EEC56 /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E7FEAB9F421F7EBAF021F792D8E9C4D6 /* LookinCustomDisplayItemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8B417F374DC024262C256083E5EB6F70 /* LookinCustomDisplayItemInfo.m */; }; - E82964ED7092CDCDAD08BC596A57B43A /* UIImage+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = E9004778D6831458C102A879DA83C285 /* UIImage+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E8AB529B9E0B4C23921344F6C4ABFEA4 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = A43798E6CE0478C1CA6ECFD6AE110593 /* SDImageCoder.m */; }; - E8BB439BCA39F3ED41FF185D6A61EA98 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 28D5D9D40BE7D9F76DB8A620D92D6F6C /* PrivacyInfo.xcprivacy */; }; - E930A5612DC6D120BE040AD17C6D1BCD /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = 051A3BFDC2997068DD4E7A11FEBAE63E /* MASViewAttribute.m */; }; - E97B2C62D3EE772504A939BEE7D6B459 /* HWPanModalPresentationAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 93A142314C8E6BF405461AFD41E16D08 /* HWPanModalPresentationAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EA82B6D97C9C5D0558047AF552D63203 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B4B2DB5DB2A6C79E9C1A5ABA6070B58 /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBD9152526A180771BF7D7CD209B957E /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD36233DB657DAA0ACBB8EEEAEB38EA /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DCCBFE0D3914D33369C19AC135AB54AA /* HWBackgroundConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = ACC63F439241C64C221C18A8991C569B /* HWBackgroundConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD7F63D4E4640C7386877BB787740272 /* LookinServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A98C5DE93CCDA0FE6E6A916B05B69DCC /* LookinServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDA16FB9C21AD941442357DAE6939530 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AD6EDFD2A6C9CC51CFC6A4BAA9C72A9 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDB268F1408C6AA5860C768310E9B9D6 /* LSTPopView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DBE3855004E17CACAC82F75DF8EFEBD4 /* LSTPopView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DE5A78F116018E2AC54714238276574D /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = FE8EB43019635F8DC34B96037E258505 /* UIActivityIndicatorView+AFNetworking.m */; }; + DE98ECCCA7106A4EA575EF34830D41FF /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D58A6363674921528AA6EC052D65C890 /* MJRefresh-dummy.m */; }; + DEA09692CF813A23899CD4949A9B6801 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 807026E96F55910EB566C0F4535DF3EB /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DED9ADFC8CC65243FC54E008A853742C /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = C8B51A0410EE632DF42E1C298E25B221 /* MJPropertyKey.m */; }; + DF2B15402CE105F5A8CE48BBDCFFD5DD /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A94C1FE25186BE811E6EC878BFA019B /* MASConstraint.m */; }; + DF525E5405FAD3B98B0C2D966EB2DD95 /* UIViewController+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 920CD059C1364A6BD18420074E635F40 /* UIViewController+LookinServer.m */; }; + E038F02D08E33A673A360ED34648A027 /* JXCategoryDotCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BEB32B7BEE20F8A74F80D03511F02260 /* JXCategoryDotCell.m */; }; + E0B48B9D5D45AF3500FC718459D66E6C /* LookinDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = AFC299E1B60C8759EA1F35B7A91019A4 /* LookinDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E0BCF21E9FA59F638C13ECCECC4D9690 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B7AD3647BEEBE4C691B28F5746D51E7D /* SDMemoryCache.m */; }; + E0DB14976CA6F6E604FD5E4EDF3378E7 /* JXPagerListContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BC6BE1672FC4A4AA70F4CBD7E23C808 /* JXPagerListContainerView.m */; }; + E1B4145C5201DB66B65520B36849067C /* HWPanModal-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EE80578D9DB416BD158323BE4D5C76F4 /* HWPanModal-dummy.m */; }; + E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B56A01456E5166288620482B2A2180C /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 433A3E0D94E768912FBBE36F7C961678 /* UIScrollView+MJExtension.m */; }; + E2DF1B379D9444D40D78320E90B1DC07 /* JXCategoryIndicatorLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CDFF5EFD0FE66B2DEECF2E904EBEC1 /* JXCategoryIndicatorLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = A2309A5B4A1B9C14AF7AEDEC1036F76E /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E42D6EF120A5C17DA2F6FD6473CE7E7A /* JXCategoryTitleVerticalZoomCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6549E81907E05317DA862F329B2D4DDC /* JXCategoryTitleVerticalZoomCellModel.m */; }; + E4773572BED239AA7D618F1C05BAF51E /* HWPanModalPresentationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 82C5C527FD40FDC2434064E6DE931921 /* HWPanModalPresentationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4B688B8A0D07AFB883A52250CA874A1 /* JXCategoryNumberCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = F15C652E7FDB0BE287A551718B00B6A8 /* JXCategoryNumberCellModel.m */; }; + E4F1B478580D6D7328BC29607BDE46F6 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = C1F534C5FFF39633128C9B99F1BBF1B5 /* UIImage+ExtendedCacheData.m */; }; + E50613C67DD02AF6EA825DA0B31EFFAD /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = 2504FFB7834ECCFC15329B28F3C9A331 /* SDImageGraphics.m */; }; + E516B5B11193439E020DD2A908700B79 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + E52DCE394A6E02B6BA11FA64624F68F3 /* JXCategoryIndicatorParamsModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E5F2B584A65C9246E3E8A7A856FF44D /* JXCategoryIndicatorParamsModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E55B3151D86660E28CEABC3CDE6B1508 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C519E29CD93815AEE0C119E2109F0A2 /* UIButton+AFNetworking.m */; }; + E5B057BC87284367918B2DB9CA084B4E /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D7FC4156E6779F82E6B8036FA7A1307 /* MJRefreshAutoGifFooter.m */; }; + E7520DAA65004368C61453B8A2740295 /* HWPanModalShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FD7A1D3C3D9D8E6D3476B7C2093A431 /* HWPanModalShadow.m */; }; + E76969F9B01139118427505B18F9CD21 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F050843F5053FDD98D8FE72C1E28A5F /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E77175BDAE33AADF66766B28AA710247 /* JXPagerMainTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8087FD233990CE787D9977700977D0B8 /* JXPagerMainTableView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7FEAB9F421F7EBAF021F792D8E9C4D6 /* LookinCustomDisplayItemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0F258366D8ED06A7D9EAD3DFCD004E /* LookinCustomDisplayItemInfo.m */; }; + E82964ED7092CDCDAD08BC596A57B43A /* UIImage+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = DB3CBBCBF7B8B49A86FAC8D0A1741C77 /* UIImage+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E8AB529B9E0B4C23921344F6C4ABFEA4 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7E450C43D308EE4C1B879D0B60A4BF /* SDImageCoder.m */; }; + E930A5612DC6D120BE040AD17C6D1BCD /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = AAF02F3D4DFB903955A463298716DCE2 /* MASViewAttribute.m */; }; + E97B2C62D3EE772504A939BEE7D6B459 /* HWPanModalPresentationAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 552D2F14AF7B393E80A67680A66A34D4 /* HWPanModalPresentationAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA82B6D97C9C5D0558047AF552D63203 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0013F9906622545E27B913F2092F22 /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; EABCB60A26B06BF576E50BBD2F89A385 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - EB3DF628891F7D6AB114718AF760CB2A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 09060CD8F1658C398DC40CC0221DB178 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB646114ABEA7A4D6C2A724404778670 /* LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A8107C05A5879CBA4916F6AD4685D772 /* LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC8E84A8FFADDCA562A8608D141D9027 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 741395EF99DABB64E0E04129DB222FD2 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC9B34262AED632D7EFB49804337648E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = FE45E33A4A0C09CD0EBB222B7E40EE72 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECE64B732F9FA7C402DDEEC58DCB9D98 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B9528B0058E986186BACF5E7A40A742 /* SDImageAPNGCoder.m */; }; - ED8991A8AE7C04362C2BED3875DC1656 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = AFF39BEB58B97CA8F3DFDE7996909112 /* AFURLResponseSerialization.m */; }; - ED8F64FF98CFAE0B12CF60A1B0E6BAF8 /* SDCallbackQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FC0CB167AF5751B03431E60D722046F /* SDCallbackQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EDB9E11998290348E4DFB5140D678942 /* HWPanContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 802FB1A32618485AA28D17584662FBAF /* HWPanContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE6E8FE636D2C02E3D2FC1E8555B4612 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B25FB3699225E9D90B118E0F624383B /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EED016DE8173CD38CC01D88CD2628984 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = DA0B23D302091DCF531627DB2F06A5BA /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EF6A6C725598F572A70C5FCEE328C184 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 524E9F65E894111FFD9563F30298E596 /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB3DF628891F7D6AB114718AF760CB2A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E1682EACA92F366216BAB7320C375AA /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB646114ABEA7A4D6C2A724404778670 /* LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E80EA469F2079302F38A991886C4B5A /* LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC078D5CD76868BDE0F67BBEAFFEA217 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 1C37C8F103EDECD09126133069B80115 /* PrivacyInfo.xcprivacy */; }; + EC8E84A8FFADDCA562A8608D141D9027 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FAF0BE8296496D28F5C6AA6974B39E8 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC9B34262AED632D7EFB49804337648E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 56642F6C221107F2F8D033758EEB482A /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC9B8D81AEAF11E16149869246F7D4C1 /* JXCategoryFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E9F380E4292210FA99A8F5918C667C3 /* JXCategoryFactory.m */; }; + ECC6BC85943DB873215826A344A462FD /* JXCategoryIndicatorBallView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A0C74EF09B54680C98CCBF1F2BD297A /* JXCategoryIndicatorBallView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ECE64B732F9FA7C402DDEEC58DCB9D98 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 92B0AD9AA2CE09EEB0EF8C040E103B97 /* SDImageAPNGCoder.m */; }; + ED8991A8AE7C04362C2BED3875DC1656 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F3CA71777F849F0196634A7AB215BDC /* AFURLResponseSerialization.m */; }; + ED8F64FF98CFAE0B12CF60A1B0E6BAF8 /* SDCallbackQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 491DFACE04BF80FD0F37C4ECFE908522 /* SDCallbackQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDB9E11998290348E4DFB5140D678942 /* HWPanContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB0E506E749384DE93170FA1EE1FD3B /* HWPanContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE101918DFCDC1D6728BF910DB5AF29A /* JXPagerView.m in Sources */ = {isa = PBXBuildFile; fileRef = D31BFB25B2F3620735E09AC6DE1CBFE3 /* JXPagerView.m */; }; + EE6E8FE636D2C02E3D2FC1E8555B4612 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 367DF77D41DE010B9FA86137928C7C44 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EED016DE8173CD38CC01D88CD2628984 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = EE1A5661BE1EACFB3D2C7F19D51BF011 /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EEF0BF7E53148EB20BED242061BDC5ED /* JXCategoryTitleVerticalZoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B4337532A4911F88E85BB14DE78FBB7 /* JXCategoryTitleVerticalZoomView.m */; }; + EF6A6C725598F572A70C5FCEE328C184 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 61080F57DD92AB8ABC811791B547090C /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; F1A04C26FAF235FD6B0AF30E7ACD5DD5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - F1D845E22D5B8FC6AFC3C2E41DA1B6DF /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A1CAA004ADB375344EE1C0A0FF7E804F /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2AD91050B1FE3C8BC78567F1FDE3ED5 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 201F7289F3B83B98F487EC194493B7F3 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2C9F9038FBEFD951516694AE873A2B9 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = CD29BD8633F552915B08BF15C7E0DFFF /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3263D294D688533EB974E37C61F1E24 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BF099C561E70E7E4EDAC96628F02E58 /* MJExtensionConst.m */; }; - F3AECEF6D3BB919B3E7392942E1BC58B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = AFFA5747833468A5901D8AA31E822627 /* MJRefreshBackFooter.m */; }; - F3DA1005917E252B306712DAAA287FB0 /* UIViewController+PanModalDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 0DDEE4190CA21B03ED83225BEC5FAC7D /* UIViewController+PanModalDefault.m */; }; - F3F4A6309BD95DFAA4DCC60A4E07C515 /* UITableView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = FF06402E5B9C49B794955B31F8067263 /* UITableView+LookinServer.m */; }; - F47EBDD360E642A0499A767BC7C17B4B /* HWPanIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 88E8C1FFE2A2D6CB9741EF2354A3B30E /* HWPanIndicatorView.m */; }; - F49CB22863CCFEC7817D259F27F91C57 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = C657F16F9FE7919D2B27F05D611C2F2D /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F53BE4449AE5896F76325E4DCB6D0B13 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 023A9DE33A4A369492D910BE237BE415 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F600BB873FD4764BAA9E02826F804486 /* FLAnimatedImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 56083A8D73CF98D49960B5783A36797F /* FLAnimatedImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F60F90EAF35CFF40DF1C33557965787D /* MJRefreshStateTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = F83A870FD420501FBBA293B2D6A26AD0 /* MJRefreshStateTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F62B0711DA506CCB3DF79F65134566C7 /* Lookin_PTPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = CF38798B2D107B8F8B096B856DF98A24 /* Lookin_PTPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F68889CD481716EE5D6B75EBD8FD53A6 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = B0023999B588A745D2530760778D09F9 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A0D6EA1B5DC3FE04DC4A1B0A914121 /* UIView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EDC641564DA302B6FFCBFCFFFAC5BA7 /* UIView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A2DEEA8E8B92D365AFDDBD5E8C1218 /* NSObject+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 85937FAC419CB28614ECAA70CE249673 /* NSObject+Lookin.m */; }; - F6A34F74BE7FE816114D7F3902296AF2 /* HWVisualEffectView.m in Sources */ = {isa = PBXBuildFile; fileRef = C15066DB017692FFB93D6BF3C34128D3 /* HWVisualEffectView.m */; }; - F6D1C960368EB1E067ABD0BFF707FC56 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FBE26B2A8BA76D5AA3E371D3CA2EAE6 /* MASConstraintMaker.m */; }; - F7623E7C314AA5010D8D0BD6ED4AAAD4 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = B1ABBFCC8D2F6B393D3F4389129E97F5 /* AFImageDownloader.m */; }; - F7815C2FBD9D954D0C2F3BF0BD6EB813 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = F4AF21DC4288D196E2F556338C3101AE /* PrivacyInfo.xcprivacy */; }; - F8616FAFEE1124368CB96473CE20CDB4 /* LookinAttrIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = CB96704A28B66FFCFA6B43392123348C /* LookinAttrIdentifiers.m */; }; - F8F1B1196CAA5114BA9A95AA7E6D6AEB /* UIBlurEffect+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 62ED382544D99079829F5E202E6E84A7 /* UIBlurEffect+LookinServer.m */; }; - F9789D86D3279D71B398B550F27C3EFF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = ED1DD2A27A7141151DAB033BD707A1EF /* AFSecurityPolicy.m */; }; - FA3021DED76B9B182CC9195A60EB1209 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 63746C791045958FEE981F032ACCAECE /* NSBezierPath+SDRoundedCorners.m */; }; - FA6DA93357E2E9E9AADDFB3E39DEB6C2 /* NSObject+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 18C899184976415922E8F39B277C1766 /* NSObject+LookinServer.m */; }; + F1ABB5428A1CCF2EAC42A4C3B388F25D /* JXCategoryIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 658F3554D0CFB5BC5E252408F8CD5317 /* JXCategoryIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F1D845E22D5B8FC6AFC3C2E41DA1B6DF /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 60461DAD42E3B1F75AD82553A6C40C64 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2AD91050B1FE3C8BC78567F1FDE3ED5 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = BBB6E7BC9BF649910D7654B98B396BD4 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2C9F9038FBEFD951516694AE873A2B9 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = A98C848E174628ED3A950CA220B4CB9A /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3263D294D688533EB974E37C61F1E24 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 47A777C7602E23E11AE500103D52A253 /* MJExtensionConst.m */; }; + F3AECEF6D3BB919B3E7392942E1BC58B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A5E3A2C0C49EB165C854762A832D48A /* MJRefreshBackFooter.m */; }; + F3DA1005917E252B306712DAAA287FB0 /* UIViewController+PanModalDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 3474F65ACB0FE00EF732580936B91D06 /* UIViewController+PanModalDefault.m */; }; + F3F4A6309BD95DFAA4DCC60A4E07C515 /* UITableView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 95E2C10E638AC6421FE377F88DA72A45 /* UITableView+LookinServer.m */; }; + F43396B5CB23638E5509B3ED61AE6192 /* JXCategoryListContainerRTLCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C70C9B1AD0F41A4C5E9026F5AF7F65F /* JXCategoryListContainerRTLCell.m */; }; + F458385338076D8734DD74BE4A94B33F /* UIColor+JXAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = F904F7CF43AB518217FB1AB9236020D4 /* UIColor+JXAdd.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F47EBDD360E642A0499A767BC7C17B4B /* HWPanIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EF0D4A56B002AB1528A77EBDA7EC804 /* HWPanIndicatorView.m */; }; + F49CB22863CCFEC7817D259F27F91C57 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = AD28EF542A0B7F210E7C92D1D9DEC003 /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F53BE4449AE5896F76325E4DCB6D0B13 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D744043462D81E4ED2BB1ECAE8E9F696 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F600BB873FD4764BAA9E02826F804486 /* FLAnimatedImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 87DD67829823038B4E0D04582C0CB95C /* FLAnimatedImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F60F90EAF35CFF40DF1C33557965787D /* MJRefreshStateTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 846CA0BB8166DB9008D71F59F4A301EA /* MJRefreshStateTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F62B0711DA506CCB3DF79F65134566C7 /* Lookin_PTPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DD8CB4B9EF9002F59BC7DE12F17ED7E /* Lookin_PTPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F68889CD481716EE5D6B75EBD8FD53A6 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = C7E392E347A9555F1447E0FBB3E777E5 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A0D6EA1B5DC3FE04DC4A1B0A914121 /* UIView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = DC82DAFD220FAA7899CE21078C2C649D /* UIView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A2DEEA8E8B92D365AFDDBD5E8C1218 /* NSObject+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = D52171C8DB630868289299203B4ECD0C /* NSObject+Lookin.m */; }; + F6A34F74BE7FE816114D7F3902296AF2 /* HWVisualEffectView.m in Sources */ = {isa = PBXBuildFile; fileRef = DACDF6DBB7030D05CC43C7DB516265EE /* HWVisualEffectView.m */; }; + F6D1C960368EB1E067ABD0BFF707FC56 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = CDE98EE96840F02E6074E842D456A2E3 /* MASConstraintMaker.m */; }; + F7623E7C314AA5010D8D0BD6ED4AAAD4 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 25A773C46121E6091EEB9AC88DC4E2A2 /* AFImageDownloader.m */; }; + F847E3C26E5AC43CD73364AD3DF49AFE /* JXCategoryImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B7498A05A9D7A9FEE19E027CABE6B9DD /* JXCategoryImageCell.m */; }; + F8616FAFEE1124368CB96473CE20CDB4 /* LookinAttrIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = 41EF7420DD5FC6E4D1134632895868F3 /* LookinAttrIdentifiers.m */; }; + F8F1B1196CAA5114BA9A95AA7E6D6AEB /* UIBlurEffect+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 98EB3787337AAE5AD71D422A832D852F /* UIBlurEffect+LookinServer.m */; }; + F9789D86D3279D71B398B550F27C3EFF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2458E327D6233EBA29A07B3E63113146 /* AFSecurityPolicy.m */; }; + FA3021DED76B9B182CC9195A60EB1209 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = C5A25B7B454717DB3993591B5E8B612E /* NSBezierPath+SDRoundedCorners.m */; }; + FA6DA93357E2E9E9AADDFB3E39DEB6C2 /* NSObject+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = C5719A8B6A945982F0856B5A616B379E /* NSObject+LookinServer.m */; }; FB6E014B34F33B89E5060DA1F00168A5 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */; }; - FC32143CA2A916F032F2B569313315AA /* HWPanContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = BFC6D8F98A0A99B4F62553DD6B2DE362 /* HWPanContainerView.m */; }; - FCDEC6A53CF5517E1AF5B331FD65F6D9 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 9694A97A95DD31F14A6A155FCCFE7837 /* SDImageCacheConfig.m */; }; - FCEE5BD645E95FF55468C4AB6D17CFDA /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F6EA8BCC592FC8C87F6AB86D1783731 /* UIImageView+HighlightedWebCache.m */; }; - FD3AF10F8723DABEE406D25592B5F562 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 81B71B9BB50BFCB7CBC2B6455296C14B /* FLAnimatedImageView.m */; }; - FDACBA49610EA6F39CABB7FE44B137D1 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = EF6748BE01C63A0BA85DC20DBF82AD80 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FC32143CA2A916F032F2B569313315AA /* HWPanContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2310AA8AAF9A85F5E639409B8AF0F292 /* HWPanContainerView.m */; }; + FCDEC6A53CF5517E1AF5B331FD65F6D9 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = AEB0E8A16F89DAA71F5718EDBF3E2A83 /* SDImageCacheConfig.m */; }; + FCEE5BD645E95FF55468C4AB6D17CFDA /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D5019FBBC4DC80F31FB68B1820A427 /* UIImageView+HighlightedWebCache.m */; }; + FD3AF10F8723DABEE406D25592B5F562 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = B4121F7B04BCCD0FB01ED16A27F6E571 /* FLAnimatedImageView.m */; }; + FDACBA49610EA6F39CABB7FE44B137D1 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = FA94CFBBBF3DC429BAF55FD9493336B4 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; FDD4C4D4F03502D5CB0B8763009A0948 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */; }; - FE07C069C2E3543002CEB5D751ABA9AC /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EDACCA592A0A0FC0428384009A75BD5 /* AFNetworkReachabilityManager.m */; }; - FEA8BA4F82CCBD1D28DCC7EF39FB4096 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = BDC5D95848173A06A25E49216A4BEFDC /* SDImageCacheDefine.m */; }; - FEE3D901B4A4638F9E00935144E982B3 /* HWPanModalPresentableHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B876DE6F099D679F03040B8EF24E5C82 /* HWPanModalPresentableHandler.m */; }; - FEE883575278D5BE8F185437AB5DB3BB /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 820CCFAA740875554C05F59A0958E53B /* MJRefreshGifHeader.m */; }; - FF106518AFECA24E74B1D649E4F9AC70 /* HWPanIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 03CB4C12A5B494B4ECDEC92BC32E7490 /* HWPanIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FFC6D50089FA32FD7AAF25747E56EA60 /* LKS_CustomAttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BC0E1D78C95F4CC731325A284A8FC80 /* LKS_CustomAttrGroupsMaker.m */; }; + FE07C069C2E3543002CEB5D751ABA9AC /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 81D1103F43F39D4BF9AE80E76478FA69 /* AFNetworkReachabilityManager.m */; }; + FEA8BA4F82CCBD1D28DCC7EF39FB4096 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DB3789FF1142F1817E52B4F6C9BA1B6 /* SDImageCacheDefine.m */; }; + FEE3D901B4A4638F9E00935144E982B3 /* HWPanModalPresentableHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B8E404753BE7BE627A458AE982427654 /* HWPanModalPresentableHandler.m */; }; + FEE883575278D5BE8F185437AB5DB3BB /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = A1E84842FBF29954156976CB6DD0F275 /* MJRefreshGifHeader.m */; }; + FF106518AFECA24E74B1D649E4F9AC70 /* HWPanIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DE32E1B12FEE2A9EAE1F5A67697D6E8 /* HWPanIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FFC6D50089FA32FD7AAF25747E56EA60 /* LKS_CustomAttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CF7F647B9D3AA2FB234C1CC5BB53582 /* LKS_CustomAttrGroupsMaker.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 01F386055DA043124AA00537EC691754 /* PBXContainerItemProxy */ = { + 0A1A465C500FD28324C60FF2111766F1 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8B7D23DD98E41BAE91418E9E85F191D6; remoteInfo = LSTPopView; }; - 02DDA276267B945D512FC6AF69590E37 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; - remoteInfo = MJExtension; - }; - 077F2AA4B2BF11943204812B533088F5 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; - }; - 1B50A2D51242B1B501E7A8FE17921A95 /* PBXContainerItemProxy */ = { + 0CEF032AE3DE8459AABC366D5EAD57AC /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; remoteInfo = LSTTimer; }; - 1C0C3A0BDFA6BDE041DC3D513C5650B3 /* PBXContainerItemProxy */ = { + 2635D33260052793F7319FAC3997C416 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; + remoteInfo = LSTTimer; + }; + 36EAD987437C03F015C383238BF3C1B7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; + remoteInfo = DZNEmptyDataSet; + }; + 398B300FAF20E4012B54089285C6D68D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + 39F2619DE86130266FA45394FE5C260D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; + }; + 4262F1710F9698DFC113026BA2E31021 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4A68CFD979D413A619DF631BB121D98F; remoteInfo = Bugly; }; - 2307258CB6BB82D24A7CA6B7975B1292 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 94CFBA7D633ECA58DF85C327B035E6A3; - remoteInfo = "SDWebImage-SDWebImage"; - }; - 2F4CEC846087978E04621E966B9DFF49 /* PBXContainerItemProxy */ = { + 4E0DD9B103CA9ED24B513A6147DEDB93 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; remoteInfo = MJExtension; }; - 5ABBB136A0AE8EE61D30E75F4BE8572E /* PBXContainerItemProxy */ = { + 648F8AAC5DF3351FEF10F1C29B3E11DF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 31DCABABCA873FBA7A92FEB47D71ED8E; - remoteInfo = HWPanModal; + remoteGlobalIDString = 8BEAFAA726C1965864B79B4B441AA513; + remoteInfo = JXCategoryView; }; - 5ECDD709038035A28044669BFFE06267 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; - remoteInfo = DZNEmptyDataSet; - }; - 5F98F8D71CDA25588EE186F7253F367F /* PBXContainerItemProxy */ = { + 686994C0035F8FADAF6A6C4E910239B2 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; remoteInfo = MBProgressHUD; }; - 7FA3D0787FAE50268674AAEE62D45295 /* PBXContainerItemProxy */ = { + 6DB0C5460735B353E7FB2A7058DEB8F3 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; + remoteGlobalIDString = C4E1020AF425614337737213AA26DBD5; + remoteInfo = JXPagingView; }; - 80217EE617C295C4C81AA1DCF5D85E7E /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32AF3F43989CBA171BB1FB3957A4509; - remoteInfo = "MJExtension-MJExtension"; - }; - 92CA63B3B20D5FAC965226A6920F1BE4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; - remoteInfo = LookinServer; - }; - 95E55F6C03A77816AFA1A59466D8CD82 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; - remoteInfo = MJRefresh; - }; - 9946EDF6CEC75931EE3BCF2D4DC70585 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B26054DF1DEA11585A231AF6D1D80D5E; - remoteInfo = "MJRefresh-MJRefresh.Privacy"; - }; - 9F4B8D116BF04BD4F5A8C8D781DA5D62 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; - }; - B12FC64FF473558C45076A0CEB7D47D1 /* PBXContainerItemProxy */ = { + 6FA747ECA11691BE7229C287223E399A /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; remoteInfo = DZNEmptyDataSet; }; - B57744F595F66358CF4816DD4793C8A6 /* PBXContainerItemProxy */ = { + 79523FDE8CA807F68BC7DF678B3199B5 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4A8E8992707D01510894596DB9BCCA00; - remoteInfo = FLAnimatedImage; + remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; + remoteInfo = MJExtension; }; - BDE883F6A985897AA115496E325146FA /* PBXContainerItemProxy */ = { + 7B014B80CCB8DDBC4906B5D8D3002093 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; - remoteInfo = MBProgressHUD; + remoteGlobalIDString = E79E29F55A2453370D27112480FCF6A2; + remoteInfo = "JXCategoryView-JXCategoryView"; }; - DE9FD566A2ADE13D0844AD68D51F7EAF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; - }; - EC0084E5D95CC67D69BF4291415A7EE1 /* PBXContainerItemProxy */ = { + 803F302DC5C2EA85B4CBBDCD27A43286 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; remoteInfo = SDWebImage; }; - FBA8C5046E304FE4BB90D14C4A529288 /* PBXContainerItemProxy */ = { + 9E88A4DD9EF59B6718F28ECC701DF551 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; - remoteInfo = LSTTimer; + remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; + remoteInfo = MJRefresh; + }; + AE8D5D579627FAFF8F43B7CEFE066FF2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; + remoteInfo = LookinServer; + }; + B296FC77430103DDB971813228C8D4EF /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 94CFBA7D633ECA58DF85C327B035E6A3; + remoteInfo = "SDWebImage-SDWebImage"; + }; + C279C7A3A264FD3391C8C73B80D3A426 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B26054DF1DEA11585A231AF6D1D80D5E; + remoteInfo = "MJRefresh-MJRefresh.Privacy"; + }; + C389A17163C51915594BC17BC8BF9DE0 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 16704C6B67439DA959DB043702C75A7A; + remoteInfo = "JXPagingView-JXPagerView"; + }; + CE0514BD8BDC97E49F2A38CD065EDCFC /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4A8E8992707D01510894596DB9BCCA00; + remoteInfo = FLAnimatedImage; + }; + D89A563DA511A2A01EFDD5299EBCEE42 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B32AF3F43989CBA171BB1FB3957A4509; + remoteInfo = "MJExtension-MJExtension"; + }; + DB3A9F97FFF5759DFB4E243D0C12B290 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 31DCABABCA873FBA7A92FEB47D71ED8E; + remoteInfo = HWPanModal; + }; + EF1EC9615D03559D465834BE2D7F527F /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + F121CDAC85A6DCADB4F82D081323C7C5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; + }; + F9F28B72CAD6F7E15F267C3F8D685EA8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; + remoteInfo = MBProgressHUD; }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 0004D14E99E5CD92EA09732F82694FF5 /* HWPanModalPresentationAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationAnimator.m; path = Sources/Animator/HWPanModalPresentationAnimator.m; sourceTree = ""; }; - 0041D895443AAAA3D1BCD4056EBB4F37 /* UIViewController+LayoutHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LayoutHelper.m"; path = "Sources/Presentable/UIViewController+LayoutHelper.m"; sourceTree = ""; }; - 00F09038ADB7D3ACE57173DD781066A5 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; - 0175DE132412321B3302CBE48CE0F712 /* LookinAutoLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAutoLayoutConstraint.m; path = Src/Main/Shared/LookinAutoLayoutConstraint.m; sourceTree = ""; }; - 01B6539E05000228B7BBD9BA57EDF5E3 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; - 01CCBFAC5118E8E6A44DA067EF8F2523 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; - 023A9DE33A4A369492D910BE237BE415 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; - 02B660DF025FBF070A8248624E25ED79 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; - 03BAE9F573ECB0A822C6757CBF10AB0E /* LookinConnectionAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionAttachment.m; path = Src/Main/Shared/LookinConnectionAttachment.m; sourceTree = ""; }; - 03CB4C12A5B494B4ECDEC92BC32E7490 /* HWPanIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanIndicatorView.h; path = Sources/View/HWPanIndicatorView.h; sourceTree = ""; }; - 03D72CC56F0CB2FCCB14E1335C16D41B /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; - 04A09AD12EF8C816FA9546838C3F429E /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; - 04A251837ED47D22FF5ACBFA97F91D4A /* LKS_TraceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_TraceManager.m; path = Src/Main/Server/Others/LKS_TraceManager.m; sourceTree = ""; }; - 04D3C87C11221ADDA77670ED0731D145 /* LKS_CustomAttrSetterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrSetterManager.m; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.m; sourceTree = ""; }; - 04FCA007C5BE63FC5541B26878E3DE79 /* HWPanModal.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HWPanModal.modulemap; sourceTree = ""; }; - 051A3BFDC2997068DD4E7A11FEBAE63E /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; - 0531DC0648DD160A9576D09368C28017 /* LookinAttributesSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesSection.m; path = Src/Main/Shared/LookinAttributesSection.m; sourceTree = ""; }; - 057F1DBD0EB25FF8CA833DC6F478BF32 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; - 05E1785189AB18B6B47ECD584144AA0F /* KeyValueObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KeyValueObserver.m; path = Sources/KVO/KeyValueObserver.m; sourceTree = ""; }; - 069FA883A4FACC46317AB2BE1BDE30E4 /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; - 074925B1189A88BAA6297431490B8041 /* LookinAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttribute.h; path = Src/Main/Shared/LookinAttribute.h; sourceTree = ""; }; - 07752F7C2A34B933346F7E8E9D95461C /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; - 086D3945C39C8554602424E64D1A9F0B /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; - 0874A58BB3E268A75B1BD3D594CBAA2D /* LSTPopView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.debug.xcconfig; sourceTree = ""; }; - 09060CD8F1658C398DC40CC0221DB178 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - 090BA40A2CB6D8D73A78895D821E7E93 /* Bugly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.release.xcconfig; sourceTree = ""; }; - 093706FD3573E105CD2368D496C2DF76 /* HWPanModalPresenterProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresenterProtocol.h; path = Sources/Presenter/HWPanModalPresenterProtocol.h; sourceTree = ""; }; - 0AE63A9BC3D50E34C84263A87F782ACA /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; + 00B67A73E7EE0522188FAE4145324D19 /* JXCategoryTitleCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleCell.h; path = Sources/Title/JXCategoryTitleCell.h; sourceTree = ""; }; + 015571B1499F434BC7171DE7EA094577 /* UILabel+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+LookinServer.h"; path = "Src/Main/Server/Category/UILabel+LookinServer.h"; sourceTree = ""; }; + 017032FDD415E1762246EBCDD2228351 /* HWDimmedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWDimmedView.h; path = Sources/View/HWDimmedView.h; sourceTree = ""; }; + 0210A2376F4634FAF99E871533D6AD1C /* LSTTimer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTTimer.modulemap; sourceTree = ""; }; + 02986FE530B6F5FD0ABF721900839DA5 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; + 029DB3501B51C5C14FA8EC0A89559639 /* LKS_GestureTargetActionsSearcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_GestureTargetActionsSearcher.h; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.h; sourceTree = ""; }; + 02E945EEF3757BDF2B47E65C51C4D6D6 /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; + 035807D7A9181D8E0DF6FAF1E2D6B33C /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; + 039AC3B9A6AA2BDAB5EB71E7A54C1EF5 /* HWPanModalShadow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalShadow.h; path = Sources/View/HWPanModalShadow.h; sourceTree = ""; }; + 04A50C0A5F4CA1B3AF632BFE12460FC6 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; + 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.release.xcconfig; sourceTree = ""; }; + 04AE87BD26EBAF13B558201544C0E822 /* JXCategoryTitleImageCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageCellModel.m; path = Sources/TitleImage/JXCategoryTitleImageCellModel.m; sourceTree = ""; }; + 057CD48F09C7A5468D77A9691A639803 /* JXCategoryTitleCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleCell.m; path = Sources/Title/JXCategoryTitleCell.m; sourceTree = ""; }; + 059C3C014AA92686FDCE895211A108CE /* JXCategoryTitleVerticalZoomView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomView.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h; sourceTree = ""; }; + 05B3B08A0927761DC2CBA02E9412CD21 /* LookinObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinObject.m; path = Src/Main/Shared/LookinObject.m; sourceTree = ""; }; + 06077AACB035D8452C9F730B2E1F00DF /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; + 06A633B376D525417B93138405029540 /* LookinCustomAttrModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomAttrModification.h; path = Src/Main/Shared/LookinCustomAttrModification.h; sourceTree = ""; }; + 06AB57BB46CC82FE3257276649BAF8EA /* NSString+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Lookin.h"; path = "Src/Main/Shared/Category/NSString+Lookin.h"; sourceTree = ""; }; + 06BE908D1EBE4269ACB69B26DE9B834E /* LKS_MultiplatformAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_MultiplatformAdapter.h; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.h; sourceTree = ""; }; + 06EFD395C240E38E2ED0DCAF40CE73FC /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; + 0A19BDA4E648916460C20489D6D183F0 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; + 0A5E3A2C0C49EB165C854762A832D48A /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; + 0A7095DB3527991440F374C9F9DB5050 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; + 0A8F3B5ED5052E8AFF569E50436DC3C0 /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; + 0B08ADE1A4FFE94FDBBE13FE7CC2C1E5 /* JXCategoryBaseCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseCell.m; path = Sources/Base/JXCategoryBaseCell.m; sourceTree = ""; }; + 0B0EEEE5F23AC446F4729522F4FC7A73 /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; + 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; + 0B1D41519ED222707112BD66393CC6B2 /* LookinObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinObject.h; path = Src/Main/Shared/LookinObject.h; sourceTree = ""; }; + 0B35D70EDD8A3E56FE6F0E6934A400CC /* LookinAttributeModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributeModification.m; path = Src/Main/Shared/LookinAttributeModification.m; sourceTree = ""; }; 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-CustomKeyboard"; path = Pods_CustomKeyboard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BF099C561E70E7E4EDAC96628F02E58 /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; + 0BE68C7303DE07C8DA01573CDDE9003F /* HWPanModalInteractiveAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalInteractiveAnimator.m; path = Sources/Animator/HWPanModalInteractiveAnimator.m; sourceTree = ""; }; 0C4AE62ED97252893F28F670D61AFB24 /* Pods-keyBoard-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-keyBoard-Info.plist"; sourceTree = ""; }; - 0C895614137416E86433C8E5EAF1D3CD /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; - 0CCA79288E187B2D3860B6A703D2D460 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; - 0CE9728E85B8432ED072CD0DC7926F20 /* UIView+LSTPV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LSTPV.m"; path = "LSTPopView/Classes/Code/UIView+LSTPV.m"; sourceTree = ""; }; - 0D53461EC25E2C6DAE3F3C2ABD951A2B /* LKSConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKSConfigManager.h; path = Src/Main/Server/Others/LKSConfigManager.h; sourceTree = ""; }; + 0C9F5466A18204DE825F30433C784EDB /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CustomKeyboard.debug.xcconfig"; sourceTree = ""; }; - 0DDEE4190CA21B03ED83225BEC5FAC7D /* UIViewController+PanModalDefault.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalDefault.m"; path = "Sources/Presentable/UIViewController+PanModalDefault.m"; sourceTree = ""; }; - 0E350DE3AE3DE0F5FC5BD9A2EB159387 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; - 0E376CA03D27B523F7F180B9EC99BD7C /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; - 0E5F47A6ED542F1D0EAA4DD94091B61C /* HWPanModalContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContentView.h; path = Sources/View/PanModal/HWPanModalContentView.h; sourceTree = ""; }; + 0D8B581D78D02F65425434F924BB64B3 /* LookinHierarchyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyInfo.m; path = Src/Main/Shared/LookinHierarchyInfo.m; sourceTree = ""; }; + 0E2875C79F8461486A975B000C1ABDE3 /* JXCategoryImageCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageCell.h; path = Sources/Image/JXCategoryImageCell.h; sourceTree = ""; }; 0E732C0D026ACBC7DBD039DC3BDC2BCE /* Pods-keyBoard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-keyBoard.modulemap"; sourceTree = ""; }; - 0E7B3F97FDF9522DB3E4FADD3DB88700 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; - 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; - 0F067A700BA9565969A60D7617155FBC /* LSTTimer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTTimer.m; path = LSTTimer/Classes/LSTTimer.m; sourceTree = ""; }; - 107D93AEC1E186A8F21341BFB523B22C /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; - 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.release.xcconfig; sourceTree = ""; }; - 109CFCE9774385E51695E82E530412B8 /* UIView+HW_Frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+HW_Frame.m"; path = "Sources/Category/UIView+HW_Frame.m"; sourceTree = ""; }; - 10A8507648AC9DE21CFA0929B1ED0404 /* HWPanModalInteractiveAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalInteractiveAnimator.h; path = Sources/Animator/HWPanModalInteractiveAnimator.h; sourceTree = ""; }; - 10D1C021B7050EF6841A364EE9A0A570 /* HWDimmedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWDimmedView.m; path = Sources/View/HWDimmedView.m; sourceTree = ""; }; - 110C7A39306E93E5D29F1709FE16720F /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; - 119E6680DBF287ACAD4F054AA0D5AE17 /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; - 11A5C3D2E3080F2A5EECFB7F1FC6C319 /* HWBackgroundConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWBackgroundConfig.m; path = Sources/View/HWBackgroundConfig.m; sourceTree = ""; }; - 13066DF230EEB3642E5BD7E5097A64F9 /* HWPanModal-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HWPanModal-dummy.m"; sourceTree = ""; }; - 13527772A4A54A71A31658A3E36E2474 /* LKS_RequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_RequestHandler.m; path = Src/Main/Server/Connection/LKS_RequestHandler.m; sourceTree = ""; }; - 140B9E97F5B5BEB056AA3A4DFFA9891B /* LookinDashboardBlueprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDashboardBlueprint.h; path = Src/Main/Shared/LookinDashboardBlueprint.h; sourceTree = ""; }; - 141D1CCF79DF1688C14B5C5A4CACC6E0 /* Peertalk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Peertalk.h; path = Src/Main/Shared/Peertalk/Peertalk.h; sourceTree = ""; }; - 14454326E9CB6046C0CA3ABA3A33F187 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; - 1458CC53A93F0D10D4564ECD3E1C2D28 /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; - 16276D593D3F4D227902AF3A1424A4AC /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; - 165D33815F330DB72870682C820A790B /* HWPanModalPresentationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationDelegate.h; path = Sources/Delegate/HWPanModalPresentationDelegate.h; sourceTree = ""; }; - 16A00EF4CD873ABB9D94776FACC7C92F /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; - 17E50DA329E2F435CC41C2257BD0C866 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; - 17FD1B21DCC89D66865655294A85A817 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; - 18C899184976415922E8F39B277C1766 /* NSObject+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+LookinServer.m"; path = "Src/Main/Server/Category/NSObject+LookinServer.m"; sourceTree = ""; }; - 1998A1E21783C0F00F27637B63C88F21 /* UIColor+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+LookinServer.m"; path = "Src/Main/Server/Category/UIColor+LookinServer.m"; sourceTree = ""; }; - 19D6F69255AF25D760BE89366830A6F7 /* Color+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Color+Lookin.m"; path = "Src/Main/Shared/Category/Color+Lookin.m"; sourceTree = ""; }; - 1A370DF72E817BB512D9A327AC45F76B /* LookinHierarchyFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyFile.m; path = Src/Main/Shared/LookinHierarchyFile.m; sourceTree = ""; }; - 1ADF5834236B788D4ADA4E85DBD68395 /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; - 1B2F034522C4ACEB56FB7ECF5D3CDFDB /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; - 1B4B2DB5DB2A6C79E9C1A5ABA6070B58 /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; - 1B77702D1A0EF9DC4542AD40D9D3062E /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; - 1CF307ACF82B2962F9E48DD0D029690F /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; - 1D13B75999F5A8EF9D0BABA6DAF09179 /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; - 1D36CFCB34B6B2FF494AB70EC5024CFA /* UIViewController+Presentation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Presentation.m"; path = "Sources/Presentable/UIViewController+Presentation.m"; sourceTree = ""; }; + 0E752820782AF474A360AC65F5EFA79D /* RTLManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RTLManager.h; path = Sources/RLTManager/RTLManager.h; sourceTree = ""; }; + 0E90E49C067121A7254AE81E49E663A2 /* JXPagingView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXPagingView-prefix.pch"; sourceTree = ""; }; + 0F050843F5053FDD98D8FE72C1E28A5F /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; + 0FABDACBA6BA6926D5F19E502E77474E /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; + 102C92CE02746A6588B44F852322AB39 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; + 109DC293F90D678E22D453F41A197049 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; + 10B904BAC9CC3925EE6B4E2130826A6F /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; + 119B8F0EF70910D693FCCA816529E357 /* JXPagerMainTableView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerMainTableView.m; path = Sources/JXPagerView/JXPagerMainTableView.m; sourceTree = ""; }; + 119F71892BB85FDC29B99AE148231087 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; + 11EEC0D59FA31FAAD209A208EB338575 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; + 12142FAAA1C74097D8F4441EAD4066E1 /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; + 123714F0F2335CBE901933785D4D26FB /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; + 1278AB0B776862F23D89B7E8596E3598 /* LKS_TraceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_TraceManager.h; path = Src/Main/Server/Others/LKS_TraceManager.h; sourceTree = ""; }; + 1325B9E2F97C77F3E9191898C4045E7E /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; + 1326C5B7B2B67B2A6E9A785F1ECEA87F /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; + 137AD002D5B6FA89785842F03034A5B1 /* UIColor+JXAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+JXAdd.m"; path = "Sources/Common/UIColor+JXAdd.m"; sourceTree = ""; }; + 137E45FE90DEED579DF255BB11ADABF4 /* LKS_CustomAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.h; sourceTree = ""; }; + 13B6B935F583A1ED5234B7E3DF044521 /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; + 13B82D87F3DD4A8EB4C508E0BFA04090 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + 13D84A2503CDD440D0A0063FF97A2EB4 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; + 156CBD2266287775279363430A374818 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + 15D78A0355CAA0B846DBC1DAC7B101F4 /* HWPanModalPresentationAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationAnimator.m; path = Sources/Animator/HWPanModalPresentationAnimator.m; sourceTree = ""; }; + 15D9AA9876374637F32E00BE13AA1880 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; + 15E765BB9B77EA9AC2800F30D2802C1C /* LKS_RequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_RequestHandler.m; path = Src/Main/Server/Connection/LKS_RequestHandler.m; sourceTree = ""; }; + 16464E573FCB8AFF2E7DB58E7A507D73 /* LookinWeakContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinWeakContainer.m; path = Src/Main/Shared/LookinWeakContainer.m; sourceTree = ""; }; + 167D63F7114C5D501803C08C617324CA /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; + 16E6E00D729B1498CE18200F50778930 /* LookinHierarchyFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyFile.m; path = Src/Main/Shared/LookinHierarchyFile.m; sourceTree = ""; }; + 1711B81346B8ED1944B5A8A478A4CF3F /* JXCategoryIndicatorLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m; sourceTree = ""; }; + 173BFB44F7DA63CD3AF5A497970B8203 /* JXCategoryBaseView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseView.h; path = Sources/Base/JXCategoryBaseView.h; sourceTree = ""; }; + 17CD950341D8F0132ADFEDC39B7267A7 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; + 17D9582F158C09F75D84ECE893151E91 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; + 17DDB1AC9EC1929E6B6DFC0CFA9D927D /* LKSConfigManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKSConfigManager.m; path = Src/Main/Server/Others/LKSConfigManager.m; sourceTree = ""; }; + 17FBA36FB2D4DFAA4437CEE5C69F4BBE /* Image+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Image+Lookin.h"; path = "Src/Main/Shared/Category/Image+Lookin.h"; sourceTree = ""; }; + 187A3F425AA5E5A93F8784E11F9E28CF /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJRefresh/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 195B648C25562B52954B1E7C1D8964C3 /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; + 195F1795B17C3F026E46BBEF64C1EA67 /* HWPanModalPresentationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationController.h; path = Sources/Controller/HWPanModalPresentationController.h; sourceTree = ""; }; + 19AE4F199F0E794B9F2956EE4530887A /* MJExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJExtension.modulemap; sourceTree = ""; }; + 1A08646B05BD58116699CDFD07CA2977 /* JXCategoryBaseCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseCell.h; path = Sources/Base/JXCategoryBaseCell.h; sourceTree = ""; }; + 1A1600286757D192233397A2BF1A2371 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; + 1A2B6D97C6E9B5572232985B40BDA6C4 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; + 1B8FD707DDEC1F98F5C5FE19647F0592 /* JXCategoryNumberCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberCell.m; path = Sources/Number/JXCategoryNumberCell.m; sourceTree = ""; }; + 1BABE1F324CED82D14350741682D422B /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; + 1C21A04AB85F6948BCB44480387E46C5 /* LKS_EventHandlerMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_EventHandlerMaker.m; path = Src/Main/Server/Others/LKS_EventHandlerMaker.m; sourceTree = ""; }; + 1C37C8F103EDECD09126133069B80115 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJExtension/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 1C4B5B00D7224F098F6B2FE0962E5086 /* LKS_AttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.m; sourceTree = ""; }; + 1D56371580E6496005BC9D35C2C49570 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; 1D774D8146EBC82B4A77204A273761B8 /* Pods-CustomKeyboard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CustomKeyboard.release.xcconfig"; sourceTree = ""; }; - 1D9DDC30D49B9BC3DFA8D9BC83722C14 /* LKS_GestureTargetActionsSearcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_GestureTargetActionsSearcher.h; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.h; sourceTree = ""; }; - 1DBD3AB6DB93D7C2BE4FB5D89E1938FD /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; - 1E115C24A1085A18B17DA1956923425C /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; - 1EFEA57CFC8959BF5EF4B795BD808107 /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; - 1EFF087B37DC1EFC63580C904061AC41 /* LSTPopView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopView.h; path = LSTPopView/Classes/Code/LSTPopView.h; sourceTree = ""; }; - 1FABA21668D0F7EA5314EF00C93346A5 /* DZNEmptyDataSet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.release.xcconfig; sourceTree = ""; }; - 1FABCE7CC795C2D70EA3AAEE06EDD595 /* DZNEmptyDataSet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.debug.xcconfig; sourceTree = ""; }; + 1E17CF24E4278604BB723E30B9997957 /* JXCategoryIndicatorTriangleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorTriangleView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m; sourceTree = ""; }; + 1E7F18004D9337D64F0F606975492DF4 /* LookinDisplayItemDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItemDetail.h; path = Src/Main/Shared/LookinDisplayItemDetail.h; sourceTree = ""; }; + 1FBD8AFE7FA55EAB140791EC34C18CD4 /* LKS_MultiplatformAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_MultiplatformAdapter.m; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.m; sourceTree = ""; }; + 1FCD0CB41F1E259546B6F8A9BFF05378 /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; + 1FFD17C3FF6DE53EF72736C597DF5B82 /* LookinAutoLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAutoLayoutConstraint.h; path = Src/Main/Shared/LookinAutoLayoutConstraint.h; sourceTree = ""; }; 1FFED36A657123030ABB700256D73F15 /* Masonry */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Masonry; path = Masonry.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2019C0149E4FA95B56F04C424C11298A /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; - 201F7289F3B83B98F487EC194493B7F3 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; - 20466880B35C5065EE68BED96801035F /* LKS_ObjectRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ObjectRegistry.m; path = Src/Main/Server/Others/LKS_ObjectRegistry.m; sourceTree = ""; }; - 20C42B1A5A080256AC39DD86D000ACD5 /* LookinTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinTuple.m; path = Src/Main/Shared/LookinTuple.m; sourceTree = ""; }; - 20E25456C8490BA5725AE87E9508AF07 /* SDCallbackQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDCallbackQueue.m; path = SDWebImage/Core/SDCallbackQueue.m; sourceTree = ""; }; - 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; - 2262EDBC98A2795DB2EE27FB7D953E2C /* LKS_Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_Helper.h; path = Src/Main/Server/Others/LKS_Helper.h; sourceTree = ""; }; - 2288D70D4609F065E784F156F613AB62 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; - 230DC3B27944D3472C6A06DA7EEAF194 /* Lookin_PTChannel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTChannel.m; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.m; sourceTree = ""; }; - 2334F40DFDB1BAD377A3B71EE761F938 /* HWPanModal-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HWPanModal-Info.plist"; sourceTree = ""; }; - 23518377A93659DE7C8E586309E28896 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; - 237D10385C2D9391B809DFD74B21A570 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; - 244BBBE37C5D845F2BB8EAFBE6D12DE5 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - 2520B86D707FEED91E8300C772989308 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; - 25283803DB6704A7DFB24BD626A74C6E /* LookinAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttribute.m; path = Src/Main/Shared/LookinAttribute.m; sourceTree = ""; }; + 201E2681B892F05C3D7CAFE9E9927D15 /* UIViewController+Presentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Presentation.h"; path = "Sources/Presentable/UIViewController+Presentation.h"; sourceTree = ""; }; + 202D2DE7A9C3209A4BF4D407CF1AB06A /* JXCategoryTitleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleView.m; path = Sources/Title/JXCategoryTitleView.m; sourceTree = ""; }; + 20BCC481544CBBCE47AC61F792449041 /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; + 21199D87A8FB4561900F6BC425147989 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; + 2132EF8C73164960BCAFD57CF9C7A53F /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; + 21696AB985A15DE2C63BD9A8CD978F59 /* LKS_HierarchyDetailsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDetailsHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.h; sourceTree = ""; }; + 21C74D93A3238750FF610EABE13EB50F /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; + 21E66554273E5793F0BC4D1CD5A058CD /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; + 2219CD4B41E42AA4B9864251F1CFEF59 /* LSTPopView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTPopView-Info.plist"; sourceTree = ""; }; + 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; + 22613DFB1026F3E41B141E34C637D600 /* UIScrollView+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+Helper.h"; path = "Sources/Category/UIScrollView+Helper.h"; sourceTree = ""; }; + 230F8C4FD68EA2D95EA48F31DA295CE9 /* LKS_CustomDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.h; sourceTree = ""; }; + 2310AA8AAF9A85F5E639409B8AF0F292 /* HWPanContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanContainerView.m; path = Sources/View/HWPanContainerView.m; sourceTree = ""; }; + 231F7AC591603501EC449D697A5C6668 /* JXCategoryView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = JXCategoryView.modulemap; sourceTree = ""; }; + 23648E3B16301958DD4429C021EB223C /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; + 239F725CB21A7ABF0EDB35FC92732A5C /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; + 23A344AF55814873B0105902E9FBBB2A /* UIViewController+LayoutHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LayoutHelper.h"; path = "Sources/Presentable/UIViewController+LayoutHelper.h"; sourceTree = ""; }; + 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXPagingView.release.xcconfig; sourceTree = ""; }; + 241FDB4FE9E3CE45C4854F0FEB6F8BAF /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; + 2458E327D6233EBA29A07B3E63113146 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; + 2504FFB7834ECCFC15329B28F3C9A331 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LookinServer; path = LookinServer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 25AB23A95A2135A43EF14C148E707F7A /* HWPageSheetPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPageSheetPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m; sourceTree = ""; }; - 2701A816C2728A79FA904E6F2AC8ADEB /* UITableView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+LookinServer.h"; path = "Src/Main/Server/Category/UITableView+LookinServer.h"; sourceTree = ""; }; - 27339E9CA8A7C6DC7F3E8B828C3D0038 /* UITextField+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+LookinServer.m"; path = "Src/Main/Server/Category/UITextField+LookinServer.m"; sourceTree = ""; }; - 274EF5BCECE08045C7BB130E4D6ED8E4 /* LookinHierarchyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyInfo.m; path = Src/Main/Shared/LookinHierarchyInfo.m; sourceTree = ""; }; + 25A5CCE05BC1D97AB685203E1D41C4B0 /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; + 25A7097BBC72B099A6C5D8BE403878A8 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; + 25A773C46121E6091EEB9AC88DC4E2A2 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; + 26925632A670841DDFC5067C12B16515 /* CALayer+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+LookinServer.h"; path = "Src/Main/Server/Category/CALayer+LookinServer.h"; sourceTree = ""; }; + 2783C33881FB9ED3037D4D66B93FAD7E /* LookinDashboardBlueprint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDashboardBlueprint.m; path = Src/Main/Shared/LookinDashboardBlueprint.m; sourceTree = ""; }; 281686F4C9CC2C718B45E1DEB7E63948 /* Pods-CustomKeyboard-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CustomKeyboard-acknowledgements.markdown"; sourceTree = ""; }; - 28D5D9D40BE7D9F76DB8A620D92D6F6C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJRefresh/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 29AAA748545CCD9E566E6F15C52A44CB /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; - 29D938D1AE315B5A7E490702D4DBEED7 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; - 2A350736EF0F4C89A3E43AA0BED8AC36 /* UICollectionViewLayout+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+MJRefresh.h"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.h"; sourceTree = ""; }; - 2ACD4F15622D5B40EA4047FEA329658B /* MJExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-umbrella.h"; sourceTree = ""; }; + 28EBA38DF7DE3C55A1DCF1C9536E3712 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; + 294754F45B0BF3519369080425B4F2FD /* LSTTimer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.release.xcconfig; sourceTree = ""; }; + 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXPagingView.debug.xcconfig; sourceTree = ""; }; + 29C25E996193BA4D1FCBB5C2A7812FB9 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; + 29CA4DC7FB25B91EAA2B3847B7BB46A9 /* LKS_CustomAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.m; sourceTree = ""; }; + 29EA07EA8EF3C7818A9505A783C4FF02 /* JXCategoryListContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryListContainerView.m; path = Sources/Common/JXCategoryListContainerView.m; sourceTree = ""; }; + 2A543722998E5C6171A0B4A729D11BBB /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; + 2AD36233DB657DAA0ACBB8EEEAEB38EA /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MJExtension; path = MJExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2B6E38C872CB24F91AFE94F3DF5EFCC2 /* UIScrollView+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+Helper.h"; path = "Sources/Category/UIScrollView+Helper.h"; sourceTree = ""; }; - 2B7A32CBCCAE8AB83DA3CB95667709E3 /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; - 2B7C62DACFDBE481DDA82F7BE3396A68 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; - 2BAFAB49E37FE01E69DA8AF02F372885 /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; - 2C694B3CF0214D5165615510B34C3812 /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; - 2C6B8E558F2970AA962D063345B79D19 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; - 2CA3017C0C359C5E90091B685A3A59EE /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; - 2D1699A762F8D719D2565E3B0B508554 /* HWPanModalPresentationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationDelegate.m; path = Sources/Delegate/HWPanModalPresentationDelegate.m; sourceTree = ""; }; - 2D6996A5821977C26F6D8F02DE8CF8CD /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; - 2D7205061D92FA9AEDA20BCF1B6FF9B7 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; - 2EE28E5F80B5EB3B89F864114E429417 /* DZNEmptyDataSet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DZNEmptyDataSet-Info.plist"; sourceTree = ""; }; - 2F3AD0011FB2CA087E42B18DDAD25253 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; - 2F61547B42B4881FB5D37EF93F1C324C /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; - 30A4A3709BA82F970D60FE150EDB33D1 /* LKS_CustomAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.m; sourceTree = ""; }; - 310204C87FE20FAAF183EEE0D555B729 /* LKS_HierarchyDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.h; sourceTree = ""; }; - 315C5770DCC0584893C24972BAEDEB39 /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; - 31BB750A026F77ECDF9EFB2711DEC741 /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; - 31C99A570F5F1154C55309832EC47D0D /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; - 31F540B1617ECFBBE3A0FB1043BFB861 /* HWPanModalInteractiveAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalInteractiveAnimator.m; path = Sources/Animator/HWPanModalInteractiveAnimator.m; sourceTree = ""; }; - 343301F4ECFA1778F70E1EC266C1848F /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; - 352F171C72D103D96370080978C50788 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; - 3583F45BB2A021FDC55DB56C5C606CB1 /* HWBackgroundConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWBackgroundConfig.h; path = Sources/View/HWBackgroundConfig.h; sourceTree = ""; }; + 2BB86632EEB3EB44D0413B3A6F7F6875 /* HWPanModalContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContainerView.m; path = Sources/View/PanModal/HWPanModalContainerView.m; sourceTree = ""; }; + 2BEAAFCDD4CD23AABA4CD7359454B646 /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; + 2BF8D28C7089A47299DB62B980D954C8 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; + 2CAA34C64434033ACBB7F68A74F4D15B /* HWPanModalContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContentView.h; path = Sources/View/PanModal/HWPanModalContentView.h; sourceTree = ""; }; + 2CE7B5832F4AC9648A3CEB7DD03473E4 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; + 2E5DB75D5C223CDC5703FA115447A148 /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; + 2E70DDAD553B6A4AC2379D01C3F133EF /* KeyValueObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KeyValueObserver.h; path = Sources/KVO/KeyValueObserver.h; sourceTree = ""; }; + 2E80EA469F2079302F38A991886C4B5A /* LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServer.h; path = Src/Main/Server/LookinServer.h; sourceTree = ""; }; + 2E96574DDD94EB958E64B0AD7C7B20F2 /* JXCategoryFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryFactory.h; path = Sources/Common/JXCategoryFactory.h; sourceTree = ""; }; + 2ECB40CAF1E6F3F4A5F02F74E30B95E8 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; + 2ED4FAFE5BD7891D4471852209337077 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; + 2F4A1CCB21DB7EA5A2ACEB11E374FBCA /* JXPagingView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = JXPagingView; path = JXPagingView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + 2FED06425BD958CD54FC4A96C6FF1992 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; + 3125F7D904D9F1F20C7699EF5186B19F /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; + 31894250FE81D510485178A2F984B715 /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; + 3201B19667C12026E1C92EA1DD973BB7 /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; + 32CCCC7F014C0FE2CA551D9AF48EEF89 /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; + 32DEFB57DAEAFA1A97A9826678533D16 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; + 32F3C5B0B7D11631504E27D25E8CB5A2 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; + 3381742E54E03DCDB9DD644DF65C4689 /* JXCategoryIndicatorTriangleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorTriangleView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h; sourceTree = ""; }; + 3415299E0D5D7B9C22E99D16B6F89983 /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJRefresh.modulemap; sourceTree = ""; }; + 3416384E4A531494C7B12CDD1AEA74A1 /* Lookin_PTUSBHub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTUSBHub.h; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.h; sourceTree = ""; }; + 342267EEBD80FDDCEAA647EFBE0EB6BD /* MJRefreshNormalTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h; sourceTree = ""; }; + 3422D3CB84719A98D68CD9DE2857E694 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; + 3474F65ACB0FE00EF732580936B91D06 /* UIViewController+PanModalDefault.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalDefault.m"; path = "Sources/Presentable/UIViewController+PanModalDefault.m"; sourceTree = ""; }; + 34C31D8DFEC22296E69E97BC5CEAE316 /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; + 3504487D6CA5438A7FB00D149564DDFC /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; + 35205291EDA412911A7CCBF5DB6087EB /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; + 35269DC2485E9AA07A892FDEB96B16C7 /* Lookin_PTChannel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTChannel.h; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.h; sourceTree = ""; }; + 3545C9AC3AD500CD4E48A3E2630C521B /* JXCategoryTitleCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleCellModel.m; path = Sources/Title/JXCategoryTitleCellModel.m; sourceTree = ""; }; + 359AD735B8CFD982730F6CEB0F56A487 /* JXPagerListRefreshView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerListRefreshView.h; path = Sources/JXPagerView/JXPagerListRefreshView.h; sourceTree = ""; }; 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-keyBoard.debug.xcconfig"; sourceTree = ""; }; - 360B7B34B46811D44994D83FAC09E663 /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; - 361FBE2595D99942EB88F5C0D34EB2DA /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; - 3663272D41C8B58200506DDA7E7A2903 /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; - 37526D876665DA3E019DF167F09B21F4 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; - 37B5AAFF8675170D1D643B53FECA47E3 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; - 37B6B4596E25AE5CE5BE1FE14A6AF93B /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; - 387AF8AF8500E50CC311582863B31CFF /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; + 35DC020855ECA02C5E2568299594E9C0 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; + 360A9029323DBF687A82BCD2C22F386C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 36457C61634F1414F6DDF4C701ABF567 /* LKS_TraceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_TraceManager.m; path = Src/Main/Server/Others/LKS_TraceManager.m; sourceTree = ""; }; + 3653F678D1C9DBE34F6262A65263C642 /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; + 367088C36E8BF33957802AE4A6256CC1 /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; + 367DF77D41DE010B9FA86137928C7C44 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; + 368AF39857A6659131D7CD15698E6867 /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; + 36A28302FD0C37C0A56E64EA97977A8E /* FLAnimatedImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.debug.xcconfig; sourceTree = ""; }; + 3753072CB1EE987F4CDC7E86385B9A99 /* UIViewController+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LookinServer.h"; path = "Src/Main/Server/Category/UIViewController+LookinServer.h"; sourceTree = ""; }; + 3791DA4B477B236E8816C08DD01E3B45 /* UITextView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+LookinServer.m"; path = "Src/Main/Server/Category/UITextView+LookinServer.m"; sourceTree = ""; }; + 3875C6FE72ED2368D3701E9901F883B7 /* JXCategoryIndicatorCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorCellModel.m; path = Sources/Indicator/JXCategoryIndicatorCellModel.m; sourceTree = ""; }; + 38A98EA0745C9E839DCFD56B22BF1256 /* LKS_Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_Helper.m; path = Src/Main/Server/Others/LKS_Helper.m; sourceTree = ""; }; + 38E107BE978505B98A952E3564F532AA /* LKS_CustomAttrSetterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrSetterManager.h; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.h; sourceTree = ""; }; + 390647665D633FF246584D1E27162F0D /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LSTPopView; path = LSTPopView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 39D285C0DD3F1106B921412AD679ADEC /* Lookin_PTChannel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTChannel.h; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.h; sourceTree = ""; }; - 3AF690E545719F23D7E97E6C1F82121E /* LSTTimer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTTimer-Info.plist"; sourceTree = ""; }; - 3BC0E1D78C95F4CC731325A284A8FC80 /* LKS_CustomAttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.m; sourceTree = ""; }; - 3BE50AD720E95B8938AAE668F71561B7 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; - 3C53F73CEF747A7A78B5CACAF16E5FCE /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; - 3C880A37C8BD02476827078E98C08810 /* HWPanModalPresentationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationController.h; path = Sources/Controller/HWPanModalPresentationController.h; sourceTree = ""; }; + 3A2E4F46AFE1B8413F8C1C81323B5831 /* JXPagerSmoothView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerSmoothView.h; path = Sources/JXPagerView/JXPagerSmoothView.h; sourceTree = ""; }; + 3A8DC30D2C209AB66D8E812915E6F319 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; + 3A8EB0FE66AD3E48C10CDD802521D146 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; + 3A94C1FE25186BE811E6EC878BFA019B /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; + 3B26E1BE3EBF37131688F5656289ACA2 /* NSObject+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+LookinServer.h"; path = "Src/Main/Server/Category/NSObject+LookinServer.h"; sourceTree = ""; }; + 3B2ACD52F18B25CE1FB40A0F1DF81B4A /* LKS_CustomAttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.h; sourceTree = ""; }; + 3B3FF5D113848A5A9AC244C579FF1441 /* JXCategoryIndicatorCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorCellModel.h; path = Sources/Indicator/JXCategoryIndicatorCellModel.h; sourceTree = ""; }; + 3B56A01456E5166288620482B2A2180C /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + 3BC6BE1672FC4A4AA70F4CBD7E23C808 /* JXPagerListContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerListContainerView.m; path = Sources/JXPagerView/JXPagerListContainerView.m; sourceTree = ""; }; 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CustomKeyboard-dummy.m"; sourceTree = ""; }; - 3D2A884E58C9EFE4F57508CA7855F449 /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; - 3D832408A734647A9D2C62473FE11EFB /* LookinAppInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAppInfo.m; path = Src/Main/Shared/LookinAppInfo.m; sourceTree = ""; }; - 3DF4E1CE47903B976C738C7A1DB7C650 /* LKS_ConnectionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ConnectionManager.h; path = Src/Main/Server/Connection/LKS_ConnectionManager.h; sourceTree = ""; }; - 3E5C8F44BD62EB86605C88FA434E57ED /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; - 3EDF0BD9574A366871EF5B3FBEFB906D /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; - 3F01F027ADEF8C49A4605D787E41BD1C /* SDImageFramePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFramePool.m; path = SDWebImage/Private/SDImageFramePool.m; sourceTree = ""; }; - 3F3611B9193976C6AC5268E458B3F9F6 /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; - 3F6EA8BCC592FC8C87F6AB86D1783731 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; - 4056B0FA7CFCA3F0B3BA1F921297B1CC /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; - 4082EEAE9AC1F17D236D83E99200EA70 /* MJRefreshNormalTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h; sourceTree = ""; }; - 40D46544DD0F8DC61B909F5E02739172 /* LKS_CustomDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.h; sourceTree = ""; }; - 42D65971D9F40DBD6785D6A1D0AEBFBD /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; - 43936D8CC7E56B4026AF09D6B9E1B1BD /* LookinServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LookinServer-Info.plist"; sourceTree = ""; }; + 3D1EF86D80B6333688465CCC41BA33F7 /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; + 3D3112C49688EF3F713F0D64A22E6E66 /* LKS_HierarchyDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.m; sourceTree = ""; }; + 3DAB18271BAF2DB3E49BCAF049FC4F01 /* HWPanModalInteractiveAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalInteractiveAnimator.h; path = Sources/Animator/HWPanModalInteractiveAnimator.h; sourceTree = ""; }; + 3E42525F0D8B91406B2C7015E3E52B29 /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; + 3E8FEF4AED255508CB8E745D200EDE89 /* ResourceBundle-JXCategoryView-JXCategoryView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-JXCategoryView-JXCategoryView-Info.plist"; sourceTree = ""; }; + 3EA0FACBE46F43AB7A99266BBBF20510 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; + 3F5F8D57BABE5A9AD2D0BC75B55D1A52 /* LSTTimer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-umbrella.h"; sourceTree = ""; }; + 3F77AB571A5252972C84B67134918B5F /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; + 3FAF0BE8296496D28F5C6AA6974B39E8 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; + 401F0F0AAEEDDA40C2D25DB817C9B5C6 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; + 402826B784C1198142F399AD251F2A3A /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; + 40380EFCFB5E34558C193A723D077BE3 /* UITableView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+LookinServer.h"; path = "Src/Main/Server/Category/UITableView+LookinServer.h"; sourceTree = ""; }; + 41B90877BBAECA72C2F67A5E39E1E87A /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; + 41EF7420DD5FC6E4D1134632895868F3 /* LookinAttrIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttrIdentifiers.m; path = Src/Main/Shared/LookinAttrIdentifiers.m; sourceTree = ""; }; + 42EF67A85226C8C14C983E81C71F392D /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; + 42F934D080B2CC7F2CD859E2B472A585 /* HWPanModalAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalAnimator.h; path = Sources/Animator/HWPanModalAnimator.h; sourceTree = ""; }; + 433A3E0D94E768912FBBE36F7C961678 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MJExtension-MJExtension"; path = MJExtension.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 4489DCEC1C15912F15C69BF8BADBDA34 /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = ""; }; - 44DDF1AA5625A95CA1C76B7546758226 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; - 452B8DD5CBF29E80E794E957D7ACEE0F /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; - 45AD4A83CCB38F4F8C699AACEC09A405 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SDWebImage-SDWebImage-Info.plist"; sourceTree = ""; }; - 4610142EAB51ECDD8FC137942A59F231 /* NSString+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Lookin.m"; path = "Src/Main/Shared/Category/NSString+Lookin.m"; sourceTree = ""; }; - 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; - 473462854899532931D29986CBD25F4A /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Masonry.modulemap; sourceTree = ""; }; - 47C4451B7E17B800D4088E7182C1025D /* LookinCustomDisplayItemInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomDisplayItemInfo.h; path = Src/Main/Shared/LookinCustomDisplayItemInfo.h; sourceTree = ""; }; - 47F9AD4ED221D6EEDB441FAF35299C66 /* LookinObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinObject.h; path = Src/Main/Shared/LookinObject.h; sourceTree = ""; }; - 4816EA2348DC71F3330B4D2743758FEF /* UIViewController+PanModalDefault.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalDefault.h"; path = "Sources/Presentable/UIViewController+PanModalDefault.h"; sourceTree = ""; }; - 48B9B4465675824F9DA134FE2253901E /* LookinDisplayItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItem.h; path = Src/Main/Shared/LookinDisplayItem.h; sourceTree = ""; }; - 4968882808F027C34D91341E2DBD71E2 /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; - 499DFA9F01A96B26620A744AC7C94DB7 /* LKS_ConnectionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ConnectionManager.m; path = Src/Main/Server/Connection/LKS_ConnectionManager.m; sourceTree = ""; }; - 4A4F0899D1AD5593F9373F8225D28188 /* HWPanModalPresentable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentable.h; path = Sources/Presentable/HWPanModalPresentable.h; sourceTree = ""; }; - 4A980D9B3DB04133A466725A1C6C22F8 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; - 4AA6F90EC76FE7C2ACDF3266FD792D7A /* LookinAttributesGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesGroup.h; path = Src/Main/Shared/LookinAttributesGroup.h; sourceTree = ""; }; - 4B01E4A62621F02DCAF2B380FECD12A8 /* MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJExtension-Info.plist"; sourceTree = ""; }; - 4D8DA2BACDEA7D78265D10D62F7A3BF7 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; - 4DCD76BA1FFEFDEEE2F9331ECD0796D4 /* LookinCodingValueType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCodingValueType.h; path = Src/Main/Shared/LookinCodingValueType.h; sourceTree = ""; }; - 4E03AEFAD237B8966FCFA45B3312FEE7 /* LookinHierarchyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyInfo.h; path = Src/Main/Shared/LookinHierarchyInfo.h; sourceTree = ""; }; - 4F3DBAC2BF3E2D408BCB049042B8B067 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; - 4FA72F287E0DE573DD735BAE9AD7E816 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; - 4FBCAF641C4059BE19811532C4E3A0A2 /* NSArray+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Lookin.m"; path = "Src/Main/Shared/Category/NSArray+Lookin.m"; sourceTree = ""; }; - 5030EF25D193EB41CCA5DF24FE48C1DF /* HWPanModalContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContainerView.m; path = Sources/View/PanModal/HWPanModalContainerView.m; sourceTree = ""; }; - 506D2884030F20EC06A10DCFA7347584 /* LookinServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.release.xcconfig; sourceTree = ""; }; - 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; - 51B83EEE0D453B8B01D8275D3EEBF4BF /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; - 51E9651B0CFE7B40336ABD29412D3C39 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; - 524E9F65E894111FFD9563F30298E596 /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; - 529CC0A76A69631EEA57BEAB673D76B9 /* UITextField+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+LookinServer.h"; path = "Src/Main/Server/Category/UITextField+LookinServer.h"; sourceTree = ""; }; + 43F4AA149B8B7307ED5DA363EBC93DBF /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; + 44ABB514E2C8BB7AA8881283E1F0FE47 /* LKS_ExportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ExportManager.m; path = Src/Main/Server/Others/LKS_ExportManager.m; sourceTree = ""; }; + 44CB5B4F2C2351C8F32C675C94C2EAC0 /* JXCategoryNumberView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberView.m; path = Sources/Number/JXCategoryNumberView.m; sourceTree = ""; }; + 45505B1DFA133379CEE6DD6D8148013D /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; + 4561971E2CF7A1F1B00AC6091B3448DE /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; + 45880427FEDFE00B81EA46DB6F5AFD52 /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; + 46461C91DF1586852C84C6489E5ED4BA /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; + 4688EE09ADCEE19CD4BDF95833F7E81D /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; + 471A02E298FA363A6051045C83C8BE05 /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; + 47655EC4466A20F4BEC0C76B8F4C5440 /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; + 47A777C7602E23E11AE500103D52A253 /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; + 47F474CA83A8EC338136568BDBFF8343 /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; + 491DFACE04BF80FD0F37C4ECFE908522 /* SDCallbackQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDCallbackQueue.h; path = SDWebImage/Core/SDCallbackQueue.h; sourceTree = ""; }; + 4A2FC8CB1CFEB2812A4E5E466940232C /* LKS_ObjectRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ObjectRegistry.h; path = Src/Main/Server/Others/LKS_ObjectRegistry.h; sourceTree = ""; }; + 4A970B89D7ECEFF994ACF22A5493E001 /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; + 4A984C0F36AC5CCB478D87C1F7E4019D /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; + 4AA7B1CA514C2D6FAA50ACF865AF4203 /* JXCategoryView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "JXCategoryView-Info.plist"; sourceTree = ""; }; + 4AD6EDFD2A6C9CC51CFC6A4BAA9C72A9 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; + 4B0139E3193D3960F1A46D73064CA34A /* JXCategoryIndicatorComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorComponentView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h; sourceTree = ""; }; + 4B98EB1E5D5490C1C17C90E124262C80 /* HWPanModalPresentationUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationUpdateProtocol.h; path = Sources/Presentable/HWPanModalPresentationUpdateProtocol.h; sourceTree = ""; }; + 4BC6F317480167EA6C97C3ED771D57CA /* UIBlurEffect+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBlurEffect+LookinServer.h"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.h"; sourceTree = ""; }; + 4C4CB24406FFC32C73C615D12F0532C7 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; + 4CF942497E18FEE75DD2CDC6779A790A /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; + 4D000260D6BB658E0BB519087E88F883 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; + 4D4A62A4549AC17B0296FF7D29E15454 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; + 4D93DBFF5810549335063D430FB33721 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; + 4DE32E1B12FEE2A9EAE1F5A67697D6E8 /* HWPanIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanIndicatorView.h; path = Sources/View/HWPanIndicatorView.h; sourceTree = ""; }; + 4E2D9F4632DB7036D701CB57007800AB /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; + 4E5F2B584A65C9246E3E8A7A856FF44D /* JXCategoryIndicatorParamsModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorParamsModel.h; path = Sources/Common/JXCategoryIndicatorParamsModel.h; sourceTree = ""; }; + 4ED1A3436209E7EBF3356CEC094C7391 /* LookinConnectionResponseAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionResponseAttachment.m; path = Src/Main/Shared/LookinConnectionResponseAttachment.m; sourceTree = ""; }; + 4F81509596D525489E9AA55CE4C0B4C1 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; + 50BCF4AA1A75105CC04AA446B0DB9B40 /* JXCategoryDotView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotView.h; path = Sources/Dot/JXCategoryDotView.h; sourceTree = ""; }; + 5107F5A871AC7AEDAD8C78C1F1AB8E40 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; + 5128E7CF3F35BE25186575F63661EEF6 /* MJRefreshTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshTrailer.m; path = MJRefresh/Base/MJRefreshTrailer.m; sourceTree = ""; }; + 51E7542749774862B8EB9AAB7010F1AA /* JXCategoryBaseCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseCellModel.m; path = Sources/Base/JXCategoryBaseCellModel.m; sourceTree = ""; }; 5327DD01C6533D102D66E1636B3827F3 /* Pods-keyBoard-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-keyBoard-acknowledgements.plist"; sourceTree = ""; }; - 53CC6A09F682C54055F6035F0D6E29FA /* MJRefreshTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshTrailer.m; path = MJRefresh/Base/MJRefreshTrailer.m; sourceTree = ""; }; - 53EC2576F6D68ECA3E1920A896AE4E4F /* HWPanModal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModal.h; path = Sources/HWPanModal.h; sourceTree = ""; }; - 54E07E4DAA97DEDC8F59F58429664909 /* LKS_AttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.h; sourceTree = ""; }; - 5593F84C8F2583B27ACE6E149D4B8B0E /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; - 55CB47F746B1E99E4F1E11247844A401 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; - 56083A8D73CF98D49960B5783A36797F /* FLAnimatedImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-umbrella.h"; sourceTree = ""; }; - 56951EB060616356F951F35CBD9A6E42 /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; - 56A664809217C1D10A7EC649E972D6AB /* HWPanModalPresentableHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentableHandler.h; path = Sources/Mediator/HWPanModalPresentableHandler.h; sourceTree = ""; }; - 56A89B114742BBA3282DA6CDF9871F36 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; - 56BB70CC7870B5212EFAD74AF8199F17 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; - 5703D16A54AB62E92D3E21CC6E5EA55B /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; - 57AA794BD50692239409E574C7FD0846 /* HWPanModalShadow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalShadow.h; path = Sources/View/HWPanModalShadow.h; sourceTree = ""; }; - 581F1A0410E8F8E85A8C2E596B4C7F40 /* LKS_AttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.m; sourceTree = ""; }; - 5839F6C7ABFF6E515370151D7E470262 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; - 584341F234CCB4128A1A3854A3371179 /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; - 587808BB0F9012792B17999F0BB495C4 /* LookinIvarTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinIvarTrace.h; path = Src/Base/LookinIvarTrace.h; sourceTree = ""; }; - 589A748D16780600B35F1BC7E7CEB243 /* UILabel+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+LookinServer.h"; path = "Src/Main/Server/Category/UILabel+LookinServer.h"; sourceTree = ""; }; - 58F1F1A0BBD025ADF47D37EB3545A1EA /* MJExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJExtension.modulemap; sourceTree = ""; }; - 5909B734EE0396CAA42A403A6DCD4D27 /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; - 595622377DEA1856384D2D262C52C73F /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; - 5973F7F7FB04C5938E91F05D46F22B54 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; - 5A03E64C6033C8C1C7D8822CDE785EEB /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; - 5A12BDC5E6446CAD91BA1C47C211ED2E /* LKS_ExportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ExportManager.h; path = Src/Main/Server/Others/LKS_ExportManager.h; sourceTree = ""; }; - 5A4E8FC1A8280B0B2C51BA4C08DA78B3 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; - 5A5823526F694533978DE523241FEDE9 /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; - 5A9184E6EEBE4764FF941193DF28C44D /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; - 5AD771C5136CD5549FAE44B9E4C2DFD2 /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; - 5B099323376948696DA373792CC4983D /* UITextView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+LookinServer.h"; path = "Src/Main/Server/Category/UITextView+LookinServer.h"; sourceTree = ""; }; - 5B1C14811A97739A8455D69D9EF8F1AA /* HWPanModal-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-umbrella.h"; sourceTree = ""; }; - 5B6CB7D56E64BDB8EB50D17E5CEC7C8F /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; - 5CC308EFB0F9E5B050F606DDD3E7A44F /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; - 5CD0546B82DCACC9EF9FE9B72325B901 /* NSSet+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSSet+Lookin.h"; path = "Src/Main/Shared/Category/NSSet+Lookin.h"; sourceTree = ""; }; + 5409A465D5BE745D21B9F8847B798BD5 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; + 54CBDA1EBC8A896E6DB3A15D5332DB1C /* JXCategoryTitleVerticalZoomCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomCell.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h; sourceTree = ""; }; + 552D2F14AF7B393E80A67680A66A34D4 /* HWPanModalPresentationAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationAnimator.h; path = Sources/Animator/HWPanModalPresentationAnimator.h; sourceTree = ""; }; + 55A76B2979ED12495977612719BE47A2 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; + 55E89941A6B7A73D479A0770A9C96C14 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; + 56642F6C221107F2F8D033758EEB482A /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; + 567674319F769F7E8B80920BBBD444B6 /* LKS_CustomAttrSetterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrSetterManager.m; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.m; sourceTree = ""; }; + 5716AF79F54782358457FBB452B73975 /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; + 5731585BDD8DA229201CF537357BCA56 /* HWPanModalHeight.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalHeight.h; path = Sources/Presentable/HWPanModalHeight.h; sourceTree = ""; }; + 5734E5CBE9E63CD37E71A375796587B5 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; + 57D32F597DFAC06B9198FA1F48D2995D /* LookinAttributesGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesGroup.h; path = Src/Main/Shared/LookinAttributesGroup.h; sourceTree = ""; }; + 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; + 595E9691CC1A487C44431E51893A1D01 /* LookinConnectionAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionAttachment.m; path = Src/Main/Shared/LookinConnectionAttachment.m; sourceTree = ""; }; + 5A6A16B78780399804F5DD15816ADE2B /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; + 5AEB6DDDE2B74ABEB1D68CE037D784DC /* HWPresentingVCAnimatedTransitioning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPresentingVCAnimatedTransitioning.h; path = Sources/Animator/HWPresentingVCAnimatedTransitioning.h; sourceTree = ""; }; + 5B4EF64EB8018D8E9CE7C8CB5FACCD5B /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; + 5B609960A71B1FE2AB814B679D9E7609 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; + 5C519E29CD93815AEE0C119E2109F0A2 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; + 5C560A21071D707C98AE6CD75AED8BFD /* UIImageView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+LookinServer.m"; path = "Src/Main/Server/Category/UIImageView+LookinServer.m"; sourceTree = ""; }; + 5DA1EEEB5386D6FCA6523BE43601C382 /* LookinAutoLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAutoLayoutConstraint.m; path = Src/Main/Shared/LookinAutoLayoutConstraint.m; sourceTree = ""; }; 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DZNEmptyDataSet; path = DZNEmptyDataSet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5EAFD6E7E63CC2D3E074450E9124493C /* LookinServerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServerDefines.h; path = Src/Main/Server/Others/LookinServerDefines.h; sourceTree = ""; }; - 5EF9433AE70A3B3667F4B208CC88432A /* LookinServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-prefix.pch"; sourceTree = ""; }; - 5F369D00927FCA59283AE71B174D2D1D /* UIViewController+LayoutHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LayoutHelper.h"; path = "Sources/Presentable/UIViewController+LayoutHelper.h"; sourceTree = ""; }; - 5F618581DFE1104C16FA02EB2B00F1B9 /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; - 5F62EE3A88E154ADAC90DDF6BC60DFB6 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; - 5F9D4F9A4CA404E7287B2F6CBFF382D1 /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; - 610BD8934663142C5DDE2AF00042FD13 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; - 610E7F99F72A12BE4DBEF2C1ABF10115 /* LookinDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDefines.h; path = Src/Main/Shared/LookinDefines.h; sourceTree = ""; }; - 622B25C415B746B0A4DE004201B6C241 /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; - 6233A7302725D50AFE344EFD05C9C870 /* LKSConfigManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKSConfigManager.m; path = Src/Main/Server/Others/LKSConfigManager.m; sourceTree = ""; }; - 624CC6F33BF93A1458307F73823C3E10 /* LookinAttributeModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributeModification.m; path = Src/Main/Shared/LookinAttributeModification.m; sourceTree = ""; }; - 62C98AF2DC89D542692AC64CD9F01818 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; - 62ED382544D99079829F5E202E6E84A7 /* UIBlurEffect+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBlurEffect+LookinServer.m"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.m"; sourceTree = ""; }; - 63277FA9AFB139990459DF6C57B238F5 /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = ""; }; - 636EE1928B5BC8BC35DF1648C1BF1467 /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; - 63746C791045958FEE981F032ACCAECE /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; + 5DB99CA546DA98A4F2641B6CD4635589 /* LookinServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-prefix.pch"; sourceTree = ""; }; + 5DEBBB0A3F6FE82FAB648C476116F8AF /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SDWebImage-SDWebImage-Info.plist"; sourceTree = ""; }; + 5E8666C77464C3B683AB0F8D4DEA6951 /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; + 5F31829B35104CCEC70FD712B1D4D4E2 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; + 5F35F0E5B188FD04E8E889503DEA5841 /* LSTPopViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopViewProtocol.h; path = LSTPopView/Classes/Code/LSTPopViewProtocol.h; sourceTree = ""; }; + 5F4DF3FAFAFDE0BEC7606CB8D4C2C98B /* LookinServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LookinServer-dummy.m"; sourceTree = ""; }; + 5FD7A1D3C3D9D8E6D3476B7C2093A431 /* HWPanModalShadow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalShadow.m; path = Sources/View/HWPanModalShadow.m; sourceTree = ""; }; + 603287955CE071E6EBDC96A98AB97750 /* JXPagerListRefreshView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerListRefreshView.m; path = Sources/JXPagerView/JXPagerListRefreshView.m; sourceTree = ""; }; + 60461DAD42E3B1F75AD82553A6C40C64 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; + 60913F6F25D56976457BFFCFF2C2FADC /* LKS_ConnectionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ConnectionManager.h; path = Src/Main/Server/Connection/LKS_ConnectionManager.h; sourceTree = ""; }; + 60A68C8A5D160FE046F60DF6C446111D /* JXCategoryTitleVerticalZoomCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomCellModel.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h; sourceTree = ""; }; + 61080F57DD92AB8ABC811791B547090C /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; + 6194A35582043CD8893F293567547D72 /* HWDimmedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWDimmedView.m; path = Sources/View/HWDimmedView.m; sourceTree = ""; }; + 61A0FA60F5E41A8B04C442FE582DA298 /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; + 61A7EBF5198D90CFC9C01A0BA03924D8 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; + 6260795D5ABBA18F8EFECC2CEB871872 /* HWPanModal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModal.h; path = Sources/HWPanModal.h; sourceTree = ""; }; + 62C28B0ACA1E8D749FA6E65D70CFCB2D /* HWShoppingCartPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWShoppingCartPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m; sourceTree = ""; }; + 62CDFF5EFD0FE66B2DEECF2E904EBEC1 /* JXCategoryIndicatorLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h; sourceTree = ""; }; + 63000DF25140BBB4F03EDFC289F2B197 /* LookinHierarchyFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyFile.h; path = Src/Main/Shared/LookinHierarchyFile.h; sourceTree = ""; }; + 6315771A902975A20B41342DD5234115 /* DZNEmptyDataSet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.debug.xcconfig; sourceTree = ""; }; + 634BE374E20F830B5B77550EFCF89612 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; + 635235003B3FEDB8B457A8FFF46C69E3 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 6407DC7FD67C9C74E0C3BA6B778AE0CD /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; + 639A45B880AEBFE1C16D4A9F3AA3D49C /* JXCategoryTitleImageCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageCell.h; path = Sources/TitleImage/JXCategoryTitleImageCell.h; sourceTree = ""; }; 641251D3092FFCF2B6259BF8676A212E /* Pods-CustomKeyboard-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CustomKeyboard-Info.plist"; sourceTree = ""; }; - 64BE9723ECB5FEB2D176E2AB31482F57 /* NSObject+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Lookin.h"; path = "Src/Main/Shared/Category/NSObject+Lookin.h"; sourceTree = ""; }; - 654D22CCA8871E0E0A65AB7C50503EB4 /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - 65EE0AA02CCB84E9D0C6987A57196DE0 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; - 662D6F244CE3008639589EE4EA829B53 /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; - 66C0C4029B17B8E45FF492CEEBD834E3 /* UIScrollView+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+Helper.m"; path = "Sources/Category/UIScrollView+Helper.m"; sourceTree = ""; }; - 672AB6E0839CC099E7CA7CF49761A5D7 /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; - 67D554550B250775795416CCAF8BD370 /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; - 683586601FF42469125B58BBB8DF2429 /* LookinObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinObject.m; path = Src/Main/Shared/LookinObject.m; sourceTree = ""; }; - 68BFCD31885FD8664001BB1EFAC74751 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; - 690D12C73095E1091E4B6AB8B11A064E /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; - 6AB2A681F27544128FA8BFDF04B2B4BB /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; - 6B130ACC8A24ECD0BF3BD07D5AF21E4D /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; - 6B6DBCFC84C1E1F5D3AF983520203544 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; - 6C39336AE39057C3014C954C694C278F /* UIView+LSTPV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LSTPV.h"; path = "LSTPopView/Classes/Code/UIView+LSTPV.h"; sourceTree = ""; }; - 6EDACCA592A0A0FC0428384009A75BD5 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; - 6EDC641564DA302B6FFCBFCFFFAC5BA7 /* UIView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LookinServer.h"; path = "Src/Main/Server/Category/UIView+LookinServer.h"; sourceTree = ""; }; - 6EFC403B9948A5A5D2DC7D8B3D9188A9 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; - 6F886C315967D7AADA95C37B717FE5A2 /* Lookin_PTUSBHub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTUSBHub.h; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.h; sourceTree = ""; }; - 6F98986A52AAB68B64127A983F8CB7D9 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; - 70ABAEE0904B02D3CE9045A0A088E18F /* HWPanModalPresentationUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationUpdateProtocol.h; path = Sources/Presentable/HWPanModalPresentationUpdateProtocol.h; sourceTree = ""; }; - 70D5B55A578973F4D162548B46979D49 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; - 71086CB516DC09CA5D29736469412558 /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; - 710E437843F202473C82F6B19F6E51D8 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; - 72FF1B2D48227EDD9EB762579BA5D936 /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; - 73EFE9F07FF04A733446FD7A74A02718 /* LKS_MultiplatformAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_MultiplatformAdapter.h; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.h; sourceTree = ""; }; - 741395EF99DABB64E0E04129DB222FD2 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; - 741B32704926AB941D9209B2D37E2B8F /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; - 7577D873945C0C370C14EE971C3509FB /* Lookin_PTProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTProtocol.h; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.h; sourceTree = ""; }; - 758F54E0A75ADEC48F8924BFE16AEB3B /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; - 75F935C6D49A90EF2E215985C8EBF76F /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; - 76DC37DEAFA5D12B1D7F9040EFB03DA5 /* LSTPopViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopViewProtocol.h; path = LSTPopView/Classes/Code/LSTPopViewProtocol.h; sourceTree = ""; }; - 776331A7467F397FCD02F62B233A6E93 /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; - 779E8085B0101C4CB480F794DECA558B /* HWPanModal.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.release.xcconfig; sourceTree = ""; }; - 77A510DEE4CCFDB66B19F133A209CDF3 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; - 77EBE36C10B9452DC1931AC9779D7F79 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; - 77EC014BA0072D21D1B86EE5C78C59EA /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; + 64891F4568CD87380D133019B00B2324 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; + 648C72C63334BCDFD466058863FCDAC9 /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; + 6549E81907E05317DA862F329B2D4DDC /* JXCategoryTitleVerticalZoomCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomCellModel.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m; sourceTree = ""; }; + 658F3554D0CFB5BC5E252408F8CD5317 /* JXCategoryIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorView.h; path = Sources/Indicator/JXCategoryIndicatorView.h; sourceTree = ""; }; + 659E6E588427268237F9F2C40D2F6CBD /* LookinAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttribute.h; path = Src/Main/Shared/LookinAttribute.h; sourceTree = ""; }; + 65F97EE1352D7FC02982C03FB1D0FBEB /* JXCategoryBaseCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseCellModel.h; path = Sources/Base/JXCategoryBaseCellModel.h; sourceTree = ""; }; + 6645D9E2FCEC9ED435B284460DEDDF89 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; + 6736D1FBB305C05AEAB982F817CD80C1 /* LKS_HierarchyDetailsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDetailsHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.m; sourceTree = ""; }; + 673B42B9F094B1F5ED808EE1BA26FC30 /* CALayer+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Lookin.m"; path = "Src/Main/Shared/Category/CALayer+Lookin.m"; sourceTree = ""; }; + 6749EA453DC312E08B14CE8AFDB79F3C /* HWPanModalPresentationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationDelegate.m; path = Sources/Delegate/HWPanModalPresentationDelegate.m; sourceTree = ""; }; + 6999AA4E4990D39E732B0FABF0CBB3CA /* JXCategoryCollectionView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryCollectionView.h; path = Sources/Common/JXCategoryCollectionView.h; sourceTree = ""; }; + 69AE4F19374B51CFBF6330CC5F82B32A /* Lookin_PTChannel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTChannel.m; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.m; sourceTree = ""; }; + 6A2C1D3548C9E3091DE847DA61A18E5B /* ResourceBundle-MJExtension-MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJExtension-MJExtension-Info.plist"; sourceTree = ""; }; + 6A34A08E72CC7EE2DEDDC6F48148CD79 /* UIColor+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+LookinServer.h"; path = "Src/Main/Server/Category/UIColor+LookinServer.h"; sourceTree = ""; }; + 6A632B4F7EA06C55CADB3BF7C49D7860 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; + 6A91961A508CA556983A4A3F57FB3133 /* MJRefreshTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshTrailer.h; path = MJRefresh/Base/MJRefreshTrailer.h; sourceTree = ""; }; + 6B5C2096D95608EEB566217452868E46 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; + 6B857386E2ABDB8C3FD8B5797430DF26 /* LookinAttrIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrIdentifiers.h; path = Src/Main/Shared/LookinAttrIdentifiers.h; sourceTree = ""; }; + 6BEFA0A1959620AC394975A01082A23B /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; + 6C07CC30774DAAE34D68C477CE151A36 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; + 6C2FE2279B0EA1E9F949E0AF58D09E3B /* LKS_InbuiltAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_InbuiltAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.h; sourceTree = ""; }; + 6C338AB8936504A929CF0929B7D23C9F /* MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJExtension-Info.plist"; sourceTree = ""; }; + 6C34880EFF82114AECCB354A57C47E7C /* JXCategoryTitleCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleCellModel.h; path = Sources/Title/JXCategoryTitleCellModel.h; sourceTree = ""; }; + 6C3B1F50C3A3E82B67AE98F2BAAD5C3C /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; + 6C70C9B1AD0F41A4C5E9026F5AF7F65F /* JXCategoryListContainerRTLCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryListContainerRTLCell.m; path = Sources/Common/JXCategoryListContainerRTLCell.m; sourceTree = ""; }; + 6CE2A9B22B9FC87A02A230599E72D4F1 /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; + 6D2CC2D1F9AB2D4CFC68B6327C2793C5 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; + 6D390F38F6574F6D973E2C4A52D004A1 /* JXCategoryTitleVerticalZoomCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomCell.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m; sourceTree = ""; }; + 6DB3789FF1142F1817E52B4F6C9BA1B6 /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; + 6DD8CB4B9EF9002F59BC7DE12F17ED7E /* Lookin_PTPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTPrivate.h; path = Src/Main/Shared/Peertalk/Lookin_PTPrivate.h; sourceTree = ""; }; + 6EF0D4A56B002AB1528A77EBDA7EC804 /* HWPanIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanIndicatorView.m; path = Sources/View/HWPanIndicatorView.m; sourceTree = ""; }; + 6FDFBF5B5FE03EAE7CBA31ED300F848E /* Peertalk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Peertalk.h; path = Src/Main/Shared/Peertalk/Peertalk.h; sourceTree = ""; }; + 7032D81BB8B12F48732F1EBEA7A020D7 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; + 709DA7415B508D723EE552B201284026 /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; + 71D68B7747CE473E42AF5D55F07BB002 /* DZNEmptyDataSet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-prefix.pch"; sourceTree = ""; }; + 72F67C5C9E4A93AFE6FF113487609183 /* JXCategoryBaseView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseView.m; path = Sources/Base/JXCategoryBaseView.m; sourceTree = ""; }; + 731627030A2BE88955F55A35D6DCABC1 /* JXPagingView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = JXPagingView.modulemap; sourceTree = ""; }; + 732327FB0ADC252437B580203795D95F /* CALayer+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+Lookin.h"; path = "Src/Main/Shared/Category/CALayer+Lookin.h"; sourceTree = ""; }; + 74444E41B3920B9EB4DA66DCD2975612 /* JXCategoryIndicatorBackgroundView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorBackgroundView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m; sourceTree = ""; }; + 7446E6EDA4118B08C0D538CAA41C47AA /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; + 75A91D4BB6118442A9B7E27598AE7C99 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 75B6A4916D912131001F61C28CCA6565 /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; + 761A654F557EA15B24079623AF9184F9 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/include/FLAnimatedImage.h; sourceTree = ""; }; + 7626DD9951DC84318DF6E875CD7A8C20 /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = ""; }; + 765DBAD68AB5F355FB80870758AFB22C /* LookinIvarTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinIvarTrace.h; path = Src/Base/LookinIvarTrace.h; sourceTree = ""; }; + 76724C714C93839E6993DF68B545F17B /* UIViewController+LayoutHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LayoutHelper.m"; path = "Sources/Presentable/UIViewController+LayoutHelper.m"; sourceTree = ""; }; + 76DCA3DD0D37AD6B5C7C65D7829AE3A8 /* LSTPopView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTPopView.modulemap; sourceTree = ""; }; + 7707C9BBD69232F1162D6ACABE70B7ED /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; + 7755C313C99E29481B2A9849C31152BE /* DZNEmptyDataSet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.release.xcconfig; sourceTree = ""; }; + 7778E8300903006F261959B2010A06D2 /* JXCategoryImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageView.m; path = Sources/Image/JXCategoryImageView.m; sourceTree = ""; }; + 77BA4318333FADE07B128DB446EA0F64 /* HWPanModalContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContentView.m; path = Sources/View/PanModal/HWPanModalContentView.m; sourceTree = ""; }; 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = HWPanModal; path = HWPanModal.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7859E48715647D45C428FB82F31DB2BA /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; - 79B0D13A04128B711BB3AFF0676EC3D0 /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; - 79D13E836577BF8A934C5D3D24826BD0 /* LookinEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinEventHandler.m; path = Src/Main/Shared/LookinEventHandler.m; sourceTree = ""; }; - 7AF90BBEF3A681BE8314F80257F1182C /* HWPanModalAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalAnimator.m; path = Sources/Animator/HWPanModalAnimator.m; sourceTree = ""; }; - 7CF635A9AE952B4C70F06837B227DDCC /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + 7965DB1FD06E64A9C5B34CB6D9909B3A /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + 797DE6794620B6AD238FF0B8B61A1B32 /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; + 7A60D0CF9AE4E6671E2A6BBECEE57E4D /* JXCategoryIndicatorBallView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorBallView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m; sourceTree = ""; }; + 7A60F6547480237BC04A6287158556B4 /* LookinTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinTuple.m; path = Src/Main/Shared/LookinTuple.m; sourceTree = ""; }; + 7A8A3FC6E6388A4864974A3D3B9C02F6 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; + 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXCategoryView.release.xcconfig; sourceTree = ""; }; + 7B4337532A4911F88E85BB14DE78FBB7 /* JXCategoryTitleVerticalZoomView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomView.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m; sourceTree = ""; }; + 7C0E4900E01624D5262A1ED1DF2F6D35 /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; + 7C2B7AF68C3BEF4AD97A93A90F9EFF44 /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; + 7C36F83AF55E2873F497777F59071760 /* JXCategoryListContainerRTLCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryListContainerRTLCell.h; path = Sources/Common/JXCategoryListContainerRTLCell.h; sourceTree = ""; }; + 7CAEC579F15CFFDB2E384C98A046EA76 /* LookinEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinEventHandler.m; path = Src/Main/Shared/LookinEventHandler.m; sourceTree = ""; }; + 7CF7F647B9D3AA2FB234C1CC5BB53582 /* LKS_CustomAttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.m; sourceTree = ""; }; + 7D7FC4156E6779F82E6B8036FA7A1307 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; + 7E02457FB07FECD161E03C2A1A8B72B3 /* LookinAttributesGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesGroup.m; path = Src/Main/Shared/LookinAttributesGroup.m; sourceTree = ""; }; 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MJRefresh-MJRefresh.Privacy"; path = MJRefresh.Privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 7E3DC362C663E7C7DAB5B7DC796C5507 /* LookinAttrType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrType.h; path = Src/Main/Shared/LookinAttrType.h; sourceTree = ""; }; - 7F2363FB988E5DC9705FE22B29B7B4F8 /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; - 7FCA5CF6F4A026896316D8731B3E493F /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; - 802213010DCF77864E95B3A910F64EA0 /* LookinServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LookinServer-dummy.m"; sourceTree = ""; }; - 802FB1A32618485AA28D17584662FBAF /* HWPanContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanContainerView.h; path = Sources/View/HWPanContainerView.h; sourceTree = ""; }; - 80A4C5F30966DCCAF12719455CE5BA94 /* LSTPopView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTPopView.m; path = LSTPopView/Classes/Code/LSTPopView.m; sourceTree = ""; }; - 80E15D4BAC4857AD45CC8CDC40384F0F /* UIVisualEffectView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIVisualEffectView+LookinServer.m"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.m"; sourceTree = ""; }; - 8166AA98A11AE7F3F46DBF2C481F6DF5 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; - 817B07C3E952A5A5F2082BE15C3C500E /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; - 81A6154946F38EFB8836E3145513AAE9 /* NSArray+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Lookin.h"; path = "Src/Main/Shared/Category/NSArray+Lookin.h"; sourceTree = ""; }; - 81B71B9BB50BFCB7CBC2B6455296C14B /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; - 81E56B3079089075E57FE56264F80F1E /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; - 8204B00622081F3C51B1FC2D83A2D0D0 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; - 820CCFAA740875554C05F59A0958E53B /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; - 82512BA24900AE369D9A35A08C7187CC /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; - 83E75619300BC832136529DA87152075 /* LKS_InbuiltAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_InbuiltAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.m; sourceTree = ""; }; - 84DD851B5FDE16625FA07D9C4D1622E4 /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; - 85937FAC419CB28614ECAA70CE249673 /* NSObject+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Lookin.m"; path = "Src/Main/Shared/Category/NSObject+Lookin.m"; sourceTree = ""; }; - 875E237862F4488FBFC692D1AB2DBB91 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; - 8769FA429275709C356B4C8A5DDEC26E /* LSTTimer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.debug.xcconfig; sourceTree = ""; }; - 882CA8EEAEB3525FB7AD66F6FFC2CF6A /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; - 883D06418312C016F973700D20558656 /* HWPanModalShadow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalShadow.m; path = Sources/View/HWPanModalShadow.m; sourceTree = ""; }; - 889630ECFAA2151C2C1F334458A5C110 /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; - 88C23FF116C3257A27A26A897D5AE6DB /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; - 88E8C1FFE2A2D6CB9741EF2354A3B30E /* HWPanIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanIndicatorView.m; path = Sources/View/HWPanIndicatorView.m; sourceTree = ""; }; - 8927ADAF60DF7D3D91B390580BD36295 /* HWShoppingCartPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWShoppingCartPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m; sourceTree = ""; }; - 8983C7CF18477B6B6E981751F1C09853 /* LookinConnectionResponseAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionResponseAttachment.m; path = Src/Main/Shared/LookinConnectionResponseAttachment.m; sourceTree = ""; }; - 899D158EA21A86AFAE75EACD2CFC106B /* Lookin_PTUSBHub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTUSBHub.m; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.m; sourceTree = ""; }; - 8A46088339E0DB93FCE586878F070297 /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; - 8A73FC0CD1FAD2820E17CD48DE8962BA /* UIImage+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+LookinServer.m"; path = "Src/Main/Server/Category/UIImage+LookinServer.m"; sourceTree = ""; }; - 8B25FB3699225E9D90B118E0F624383B /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; - 8B417F374DC024262C256083E5EB6F70 /* LookinCustomDisplayItemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomDisplayItemInfo.m; path = Src/Main/Shared/LookinCustomDisplayItemInfo.m; sourceTree = ""; }; - 8B8786CBA6B78647E486B3CA129F2DAD /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; + 7E8762E22AB8C87B76E6D94D44665136 /* SDCallbackQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDCallbackQueue.m; path = SDWebImage/Core/SDCallbackQueue.m; sourceTree = ""; }; + 7F178706A5ED2B8C0CCCEA56CC4A04B6 /* JXPagerSmoothView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerSmoothView.m; path = Sources/JXPagerView/JXPagerSmoothView.m; sourceTree = ""; }; + 7FBDD10C8770914A56998AB2021E385B /* JXCategoryTitleImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageView.h; path = Sources/TitleImage/JXCategoryTitleImageView.h; sourceTree = ""; }; + 806C18993732E8D418AEA50EC6162EDC /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + 807026E96F55910EB566C0F4535DF3EB /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; + 8087FD233990CE787D9977700977D0B8 /* JXPagerMainTableView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerMainTableView.h; path = Sources/JXPagerView/JXPagerMainTableView.h; sourceTree = ""; }; + 81157F73840FB0C9186268E78281D33C /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FLAnimatedImage.modulemap; sourceTree = ""; }; + 8127266FF8D9AAE89CDF3511D05BB245 /* LKS_ObjectRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ObjectRegistry.m; path = Src/Main/Server/Others/LKS_ObjectRegistry.m; sourceTree = ""; }; + 8179AB093F869B4BCCBBF8427F69555B /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; + 819B57A54180667AB9476455F95835CA /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; + 81C5F42CC1579DEC553C5D34C274FD68 /* LSTTimer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTTimer-Info.plist"; sourceTree = ""; }; + 81D1103F43F39D4BF9AE80E76478FA69 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; + 81D4FD0C7D7C987D10815371E729DAC0 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; + 824A8DE6460C98A565B1EDD8B4432F50 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; + 82BDCD67CE12306B5AF6A9E3DB88E0DA /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; + 82C5C527FD40FDC2434064E6DE931921 /* HWPanModalPresentationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationDelegate.h; path = Sources/Delegate/HWPanModalPresentationDelegate.h; sourceTree = ""; }; + 82F0AA3C9E3854CEA18B30E16DC474FC /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; + 83B5308ADA544D7E6FCE86EFD21D5CBB /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; + 83D5AD11F2E32B53BA1869D6DE812341 /* HWPanModalPresentable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentable.h; path = Sources/Presentable/HWPanModalPresentable.h; sourceTree = ""; }; + 83FBF1722FEB1FC5E339C64BC2275D81 /* HWPanModal-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-umbrella.h"; sourceTree = ""; }; + 846CA0BB8166DB9008D71F59F4A301EA /* MJRefreshStateTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h; sourceTree = ""; }; + 84C7B13561A207799480933E11856D99 /* JXCategoryView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXCategoryView-umbrella.h"; sourceTree = ""; }; + 8532F3DD3C373C14A106D14F67A3C301 /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; + 85E262E36BEDDEA0E7B4F4A870DA4314 /* JXPagingView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXPagingView-umbrella.h"; sourceTree = ""; }; + 8618BF2AA2A260801FDF48131074A906 /* JXCategoryTitleImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageView.m; path = Sources/TitleImage/JXCategoryTitleImageView.m; sourceTree = ""; }; + 862F24C5813636BD088499E062B47C78 /* HWPanModal-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HWPanModal-Info.plist"; sourceTree = ""; }; + 874DD2FA3B20B6BCBCBEE03BEEBE1281 /* JXCategoryNumberCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberCell.h; path = Sources/Number/JXCategoryNumberCell.h; sourceTree = ""; }; + 877837A5816B3B110C5B763CCBD0ECFD /* UITextField+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+LookinServer.m"; path = "Src/Main/Server/Category/UITextField+LookinServer.m"; sourceTree = ""; }; + 87DD67829823038B4E0D04582C0CB95C /* FLAnimatedImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-umbrella.h"; sourceTree = ""; }; + 886E6269011F3D0F924F30F32F08508F /* LookinWeakContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinWeakContainer.h; path = Src/Main/Shared/LookinWeakContainer.h; sourceTree = ""; }; + 88D5019FBBC4DC80F31FB68B1820A427 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; + 88D7B291E3BCDB41106F548FA3B84901 /* HWPanModalAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalAnimator.m; path = Sources/Animator/HWPanModalAnimator.m; sourceTree = ""; }; + 898DE7614EA3416744425477D130D9C7 /* JXCategoryIndicatorDotLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorDotLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h; sourceTree = ""; }; + 89DA873F803BF9043720F615E8BC4CD5 /* LookinIvarTrace.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinIvarTrace.m; path = Src/Base/LookinIvarTrace.m; sourceTree = ""; }; + 8A0C74EF09B54680C98CCBF1F2BD297A /* JXCategoryIndicatorBallView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorBallView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h; sourceTree = ""; }; + 8A6F594F279129456C02C7701DE5EDC3 /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; + 8B0013F9906622545E27B913F2092F22 /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; + 8B0B848DED77C21AEA127E58094EE39E /* ResourceBundle-JXPagerView-JXPagingView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-JXPagerView-JXPagingView-Info.plist"; sourceTree = ""; }; 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MBProgressHUD; path = MBProgressHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8C63EE1B9AB32B647D64489A498987B3 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; - 8CBF9C8DF911E4E9B2C6A4628B5BC93B /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; - 8D7D197A108D97B04C3BA390CD4499D8 /* HWVisualEffectView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWVisualEffectView.h; path = Sources/View/HWVisualEffectView.h; sourceTree = ""; }; - 8D9EC3F78C9EBFBAA2A4A0F3EE3D27AB /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; - 8DDCF4465DE05312EF540D3B5319ADAF /* LookinIvarTrace.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinIvarTrace.m; path = Src/Base/LookinIvarTrace.m; sourceTree = ""; }; - 8EDBEC1105ABEB5730250B28CB605E44 /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; - 8EE2F8245BCEBA174A7A8891FBE03ECB /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; - 8FBE26B2A8BA76D5AA3E371D3CA2EAE6 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; - 9005237D68B29ED337A382B01C2917F8 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; - 9118BCB61472BB3349D3BC26BBAA9EE0 /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; - 92B30D23B01D493E996B4DF061CC3062 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; - 92F9229FF7CD4EFBE6BB07684D5118E4 /* Masonry-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Masonry-Info.plist"; sourceTree = ""; }; - 9358338FB49CFCB7417D22C85E339488 /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; - 93A142314C8E6BF405461AFD41E16D08 /* HWPanModalPresentationAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationAnimator.h; path = Sources/Animator/HWPanModalPresentationAnimator.h; sourceTree = ""; }; - 93D6767143B7C5D00675B75D54B0AFEF /* LSTTimer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-umbrella.h"; sourceTree = ""; }; - 93DAC06B5293787BAAAA04E673812C59 /* LSTPopView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTPopView-dummy.m"; sourceTree = ""; }; - 95F5264D9ED9939AE536B5201D80DB5E /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; - 9694A97A95DD31F14A6A155FCCFE7837 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; + 8CE6BF39C6199FC5B55217046DDE2CDB /* UIVisualEffectView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIVisualEffectView+LookinServer.m"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.m"; sourceTree = ""; }; + 8E1682EACA92F366216BAB7320C375AA /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + 8E8C0DD47533304FD7479FB5A47A4E3B /* SDImageFramePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFramePool.m; path = SDWebImage/Private/SDImageFramePool.m; sourceTree = ""; }; + 8F0F258366D8ED06A7D9EAD3DFCD004E /* LookinCustomDisplayItemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomDisplayItemInfo.m; path = Src/Main/Shared/LookinCustomDisplayItemInfo.m; sourceTree = ""; }; + 8FD309B3FADE968B4258080AC443EFCB /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; + 903038F34EE93C82A3EF6A1F6BDF857B /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + 908A8A591A12931E59C177277E1D126D /* LKS_AttrModificationPatchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrModificationPatchHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.m; sourceTree = ""; }; + 908BDA99457974AD8998A674A0C0FB12 /* LookinAppInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAppInfo.h; path = Src/Main/Shared/LookinAppInfo.h; sourceTree = ""; }; + 911E6F5D1D17453D35BE3FA4A9086972 /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; + 920CD059C1364A6BD18420074E635F40 /* UIViewController+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LookinServer.m"; path = "Src/Main/Server/Category/UIViewController+LookinServer.m"; sourceTree = ""; }; + 92B0AD9AA2CE09EEB0EF8C040E103B97 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; + 93081A25D8BCD8327365F5FAC77C46F3 /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; + 93A6F66AA21D4921B2C52643DAEF998F /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; + 9421B0E41FC583CAD966F98C60445BAB /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; + 94807C278EC259800EBCD3A346749877 /* UITextField+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+LookinServer.h"; path = "Src/Main/Server/Category/UITextField+LookinServer.h"; sourceTree = ""; }; + 94D99E2E2730992302FB9BAA7CCE2A1C /* HWPanModalPresentationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationController.m; path = Sources/Controller/HWPanModalPresentationController.m; sourceTree = ""; }; + 94DB79C6893EAE9D1A7D3559B485BCC5 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; + 9545413A1EE5D2E50A21E8D9794A771A /* Lookin_PTProtocol.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTProtocol.m; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.m; sourceTree = ""; }; + 956C8FF42F553F12124DED23E19FE31D /* Bugly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.release.xcconfig; sourceTree = ""; }; + 95BD516A8F354C5C9CD65BFD30C9BED7 /* HWPanModalPanGestureDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPanGestureDelegate.h; path = Sources/Presentable/HWPanModalPanGestureDelegate.h; sourceTree = ""; }; + 95E2C10E638AC6421FE377F88DA72A45 /* UITableView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+LookinServer.m"; path = "Src/Main/Server/Category/UITableView+LookinServer.m"; sourceTree = ""; }; + 95EB1D88070F8207A333D4573DA43A15 /* LookinTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinTuple.h; path = Src/Main/Shared/LookinTuple.h; sourceTree = ""; }; 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-keyBoard-dummy.m"; sourceTree = ""; }; - 96AA5B4DE9A3DA12F53F6CB5D9AC99E2 /* LookinServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-umbrella.h"; sourceTree = ""; }; - 96B0036686E5E0170AC065045503F785 /* UIVisualEffectView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIVisualEffectView+LookinServer.h"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.h"; sourceTree = ""; }; - 972173A04BB5350B482CEE39EFFBE0EF /* DZNEmptyDataSet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-umbrella.h"; sourceTree = ""; }; - 979F4BB7A6CE1AF72F02D7E7F5EC0D7F /* DZNEmptyDataSet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DZNEmptyDataSet-dummy.m"; sourceTree = ""; }; - 97C8222012D0B30C2E5C40B4867A1AAF /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; - 981BA7AE91A568EC43916303978CE501 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; - 98AC0F8649D533FEA089C0D7C8018ABC /* UIImageView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+LookinServer.m"; path = "Src/Main/Server/Category/UIImageView+LookinServer.m"; sourceTree = ""; }; - 99462BD5694E37EA26675903E46200AD /* DZNEmptyDataSet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DZNEmptyDataSet.modulemap; sourceTree = ""; }; - 995AA67533265367D116C78944065262 /* UIViewController+PanModalPresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalPresenter.h"; path = "Sources/Presenter/UIViewController+PanModalPresenter.h"; sourceTree = ""; }; - 996E03E4CC36DB69F10AD9C8F02472C6 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; - 9B55BC4062AFBC21B6F27CA6801F7F45 /* LookinAttributesSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesSection.h; path = Src/Main/Shared/LookinAttributesSection.h; sourceTree = ""; }; - 9B6321B292B6BCA48E9BD6268BB60C34 /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; - 9B9528B0058E986186BACF5E7A40A742 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; - 9BC9B980A57804E48A923737AE36ACB0 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; - 9C27FE20E006C874307EF5F2B30AA69E /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; - 9C55508E3B8FCF1A927848A4CFAA53D0 /* UIBlurEffect+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBlurEffect+LookinServer.h"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.h"; sourceTree = ""; }; - 9C6E20B7CDAEE04E340BBA081726D5AC /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; - 9C92B663B045144AB6926F9C7A3DA791 /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; - 9CC6285CEC9BC9D5CBF28149790EF660 /* LSTTimer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTTimer.h; path = LSTTimer/Classes/LSTTimer.h; sourceTree = ""; }; - 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.debug.xcconfig; sourceTree = ""; }; - 9D3649A7CA35A3580F58B4481D9820AF /* NSObject+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+LookinServer.h"; path = "Src/Main/Server/Category/NSObject+LookinServer.h"; sourceTree = ""; }; + 96BA563F965A1054AC53D0F3D5BD3AFE /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; + 97428E2E54CAC989DD7A12908613EE16 /* LookinAttributesSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesSection.m; path = Src/Main/Shared/LookinAttributesSection.m; sourceTree = ""; }; + 9777292C62AA2375C63BAEF75D1F940C /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; + 979A3BAC302F65855776332D6027B80C /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; + 97E0EEAE3EFB0492B434EC2A704903DE /* LSTPopView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTPopView-dummy.m"; sourceTree = ""; }; + 9820AAA1C732351179414BB46300A1B7 /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; + 989150BD3DA7E7AE5D05E2F37E778A8D /* LookinConnectionResponseAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionResponseAttachment.h; path = Src/Main/Shared/LookinConnectionResponseAttachment.h; sourceTree = ""; }; + 98D2F9331639FC6D12A4091DD5F47C96 /* JXCategoryDotCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotCell.h; path = Sources/Dot/JXCategoryDotCell.h; sourceTree = ""; }; + 98EB3787337AAE5AD71D422A832D852F /* UIBlurEffect+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBlurEffect+LookinServer.m"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.m"; sourceTree = ""; }; + 99302CD0854353E1FA9C8EE70F3FCF59 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; + 99CBD01AD35AF793B343AC0ACF2CF164 /* UICollectionViewLayout+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+MJRefresh.m"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.m"; sourceTree = ""; }; + 9AFDFE95B53BDA0F282212CF3E9B940F /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; + 9B2F1B06BC651834D7B3EA1FBC96E466 /* LSTPopView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTPopView.m; path = LSTPopView/Classes/Code/LSTPopView.m; sourceTree = ""; }; + 9B89E97BE59B9448BC63E348FA77F055 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + 9BAC219B4754C1E13B6929143780BE52 /* UIViewController+PanModalDefault.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalDefault.h"; path = "Sources/Presentable/UIViewController+PanModalDefault.h"; sourceTree = ""; }; + 9C599636DAB63CB63CC65E368E1BAAFC /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; + 9CE19B5D21ECCFC76311F186D2B3F651 /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; + 9D31ED01216EF87422BD04709990AFA0 /* LookinDashboardBlueprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDashboardBlueprint.h; path = Src/Main/Shared/LookinDashboardBlueprint.h; sourceTree = ""; }; 9D41AAC213895165C450F5576DE42CB2 /* 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; }; + 9D7E450C43D308EE4C1B879D0B60A4BF /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; + 9DA5F48CB9575D0E2C775D8D7C262C14 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; + 9DC4AC8D166AB2BD8B557BFA9FA9872C /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CustomKeyboard-umbrella.h"; sourceTree = ""; }; + 9E18E15D3A7901E5A84136DADC023216 /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; + 9E285AA5C9AFC477B5336B5AC2C863D1 /* UILabel+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+LookinServer.m"; path = "Src/Main/Server/Category/UILabel+LookinServer.m"; sourceTree = ""; }; + 9E54C32C4CB68C01C57E81C03350F4B2 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; + 9E9F380E4292210FA99A8F5918C667C3 /* JXCategoryFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryFactory.m; path = Sources/Common/JXCategoryFactory.m; sourceTree = ""; }; + 9F0B0B2E800350D0E38B61EF43E6CE75 /* LKS_AttrModificationPatchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrModificationPatchHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.h; sourceTree = ""; }; + 9F3CA71777F849F0196634A7AB215BDC /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* 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; }; - 9F69E397FB4534DAE86CE36E624729DC /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; - 9FC0CB167AF5751B03431E60D722046F /* SDCallbackQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDCallbackQueue.h; path = SDWebImage/Core/SDCallbackQueue.h; sourceTree = ""; }; - 9FDBCFE0DF35F1346C9E17295438B88A /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; - A0368DACE23383F23784ADE51EC66773 /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; - A0C23E787A5997AF276176CBB988D241 /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; - A0FE1EF8C4E4226EA31F342E982E620B /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; - A14004EB25D5BC99B439F5543C20E8CF /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; - A16C385BAD6F9C544C59D31A650946CC /* LSTPopView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.release.xcconfig; sourceTree = ""; }; - A187D3CE401AEF4272748BA58A834812 /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; - A1A1675F7ED6C653EC09CB7ED0E5281E /* HWPanModal-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-prefix.pch"; sourceTree = ""; }; - A1CAA004ADB375344EE1C0A0FF7E804F /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; - A20F0D257E58B1A870FF109778CD4B25 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; - A28F16D63BCA40F7DC78734CFE3A235D /* LookinDashboardBlueprint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDashboardBlueprint.m; path = Src/Main/Shared/LookinDashboardBlueprint.m; sourceTree = ""; }; + 9F94B604866DB37515D32D88635EFEE2 /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; + 9FD83B41506E28893BC297C4BDAB1B46 /* NSObject+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Lookin.h"; path = "Src/Main/Shared/Category/NSObject+Lookin.h"; sourceTree = ""; }; + 9FEF42DD4D5BC001DB0C88A7EB3DB63B /* LookinServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LookinServer-Info.plist"; sourceTree = ""; }; + A020A834828880C972FE2E839A9DD2B4 /* FLAnimatedImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FLAnimatedImage-Info.plist"; sourceTree = ""; }; + A05508640C7796358B45E0B5C0C73183 /* DZNEmptyDataSet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-umbrella.h"; sourceTree = ""; }; + A1067B051CF7A4C36817E6F668A3E7A6 /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; + A1E84842FBF29954156976CB6DD0F275 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; + A2309A5B4A1B9C14AF7AEDEC1036F76E /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + A237C0F799BD0639307F9DF3E58B71CE /* MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJRefresh-Info.plist"; sourceTree = ""; }; + A2C056F5D1231FA94F92AA3712D545C2 /* JXCategoryIndicatorImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorImageView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m; sourceTree = ""; }; A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-keyBoard-umbrella.h"; sourceTree = ""; }; - A34081EC91EFEC16FB92BEE1A470458E /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; - A3F7C5007915361DF90A13BBA8CD3EFF /* UIViewController+Presentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Presentation.h"; path = "Sources/Presentable/UIViewController+Presentation.h"; sourceTree = ""; }; - A4288DFF17DF27DEEB1590D7281FBBD7 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; - A43798E6CE0478C1CA6ECFD6AE110593 /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; - A4685A3F7A42EE78A5B66190A100B3C2 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; - A4F699C3287866E6143CDE3B9C0C8BAA /* LSTTimer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-prefix.pch"; sourceTree = ""; }; + A4D8DE877E59C1B5596F10D0213ADC5D /* UIView+LSTPV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LSTPV.m"; path = "LSTPopView/Classes/Code/UIView+LSTPV.m"; sourceTree = ""; }; A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AFNetworking; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A65F19FCE0D1235D1B87CDFD5146518C /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; - A6B7C52A59144554A5C4CCBAF9A65AC8 /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; + A5262AA56B4C8511CBA390D4808E37F2 /* UIView+LSTPV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LSTPV.h"; path = "LSTPopView/Classes/Code/UIView+LSTPV.h"; sourceTree = ""; }; + A56B5A6CAF35241FF9D41CAC7DC1D6D2 /* UITextView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+LookinServer.h"; path = "Src/Main/Server/Category/UITextView+LookinServer.h"; sourceTree = ""; }; + A5C74D4E7CA539C956587A3615702D24 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; + A5FC57ACB22E21DCA20F2B582D18A03F /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; + A67C49E3D329D82553E5FEBB4951ABD7 /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; + A697ED78520252C2C8CA71D13BA57F79 /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-keyBoard.release.xcconfig"; sourceTree = ""; }; - A701AEED09FE2183269AA89DFA8E4B7A /* CALayer+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+Lookin.h"; path = "Src/Main/Shared/Category/CALayer+Lookin.h"; sourceTree = ""; }; - A732383A60ACA7498BD810AAC8E31192 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; - A73F313A18713E36B251C92C66806CE8 /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; - A75653F7F6754FE7D26DA5C94A641DE8 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; - A75ADFE775EE09236D1DF5672ACB9A4C /* LKS_TraceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_TraceManager.h; path = Src/Main/Server/Others/LKS_TraceManager.h; sourceTree = ""; }; - A8107C05A5879CBA4916F6AD4685D772 /* LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServer.h; path = Src/Main/Server/LookinServer.h; sourceTree = ""; }; - A89D8D8B71AD9A723D88B13AF519A214 /* CALayer+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+LookinServer.h"; path = "Src/Main/Server/Category/CALayer+LookinServer.h"; sourceTree = ""; }; - A8A5F422D3A80975E78C20D9980BBAE7 /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; - A8CED6128E73E0F84131EFEF369AFB64 /* FLAnimatedImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FLAnimatedImage-Info.plist"; sourceTree = ""; }; - A923EA60F7DA10F8B88FCD5E16702406 /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; - AA356D7B80B205861FCCD6FECB42DDE3 /* LookinWeakContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinWeakContainer.h; path = Src/Main/Shared/LookinWeakContainer.h; sourceTree = ""; }; - AA4F3775DDC9BAD8BC30D51376A765F0 /* LookinCustomAttrModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomAttrModification.h; path = Src/Main/Shared/LookinCustomAttrModification.h; sourceTree = ""; }; - AA574A6EA7EECCE7D1E086B964FA3C65 /* LookinAttrIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrIdentifiers.h; path = Src/Main/Shared/LookinAttrIdentifiers.h; sourceTree = ""; }; - AA75F2BBB1F8188D75855FF34D8A7AE3 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; - AB547BD41867170F26173D27CE44DCE6 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; - AB771D1A9F6BE6B15418DB387EE5ADF3 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; - AB93341F4852834DE8BA29DAB3E69371 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; - ABF08650352052DEA4797A89BFD856FF /* SDImageFramePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFramePool.h; path = SDWebImage/Private/SDImageFramePool.h; sourceTree = ""; }; - ACDFCFE3242922DD1C6F9C0911E0A56B /* LookinWeakContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinWeakContainer.m; path = Src/Main/Shared/LookinWeakContainer.m; sourceTree = ""; }; - AD1C2B98D240951DA7BD821093E6C395 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; - AD7824F87B7A4AC0EB49B7B856736BF2 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; - AE403DA6C5955C67D130890FCA703778 /* LKS_RequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_RequestHandler.h; path = Src/Main/Server/Connection/LKS_RequestHandler.h; sourceTree = ""; }; - AE6F296D300159E8673214D526F10584 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; - AE979EFDEE516846488B7EE0D6F7EED8 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; - AE9EAD92339D5CAFE9DD672B7A3B6E7D /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; - AF32E35E8F4552F6AF08F140AD085FE4 /* KeyValueObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KeyValueObserver.h; path = Sources/KVO/KeyValueObserver.h; sourceTree = ""; }; - AFC953B00F77A76AF38E0FA2C8AB5F03 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; - AFF39BEB58B97CA8F3DFDE7996909112 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; - AFFA5747833468A5901D8AA31E822627 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; - B0023999B588A745D2530760778D09F9 /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; - B0B0D3A4B05EE4A8AA2F56AF68EA3ADF /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; + A75069F0A291D74DCBF8F50AA213D806 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; + A76F5B96F548930505FADC6CE9430C2D /* LSTTimer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.debug.xcconfig; sourceTree = ""; }; + A7A769F7014A1F30EE6690E054898162 /* LookinStaticAsyncUpdateTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinStaticAsyncUpdateTask.h; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.h; sourceTree = ""; }; + A8105D73597438386DADF22233AAD4B3 /* LookinHierarchyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyInfo.h; path = Src/Main/Shared/LookinHierarchyInfo.h; sourceTree = ""; }; + A87C5BAF6B8038E9EE8A33551A798606 /* HWPanModalContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContainerView.h; path = Sources/View/PanModal/HWPanModalContainerView.h; sourceTree = ""; }; + A8CBDE62F720E1751DB8B8E4DF3B0E9F /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; + A96A60100BE610809D6E0C7741CF992C /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; + A98C5DE93CCDA0FE6E6A916B05B69DCC /* LookinServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-umbrella.h"; sourceTree = ""; }; + A98C848E174628ED3A950CA220B4CB9A /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; + A9B0E721EBB3914236D06250E333F1E9 /* LKS_HierarchyDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.h; sourceTree = ""; }; + AAF02F3D4DFB903955A463298716DCE2 /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; + AAFEF3383472BCA83D71A7DAAC5522CC /* JXCategoryIndicatorParamsModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorParamsModel.m; path = Sources/Common/JXCategoryIndicatorParamsModel.m; sourceTree = ""; }; + AB253C473EBD2DF633A230C7FAA304B7 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; + ABD4819FE00A1A954ABDDF0893C72587 /* JXCategoryDotCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotCellModel.h; path = Sources/Dot/JXCategoryDotCellModel.h; sourceTree = ""; }; + AC558AE5F168E24878BD4ACF3EE1274A /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; + ACC63F439241C64C221C18A8991C569B /* HWBackgroundConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWBackgroundConfig.h; path = Sources/View/HWBackgroundConfig.h; sourceTree = ""; }; + AD28EF542A0B7F210E7C92D1D9DEC003 /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; + AE09548D63659FAE72F5C6F1EBF230FC /* MJExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-umbrella.h"; sourceTree = ""; }; + AEB0E8A16F89DAA71F5718EDBF3E2A83 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; + AED1D348255F77CE4BB2B0BB61E22F08 /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = ""; }; + AF302A5E7BA56F9F631A8591DA72D3C3 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; + AFBCBD9F77FD5CF26B2BEBE02B1E19D9 /* JXPagingView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JXPagingView-dummy.m"; sourceTree = ""; }; + AFC299E1B60C8759EA1F35B7A91019A4 /* LookinDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDefines.h; path = Src/Main/Shared/LookinDefines.h; sourceTree = ""; }; + B05FD8A103E2A06EE08BE59B38FC36B4 /* UIViewController+PanModalPresenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalPresenter.m"; path = "Sources/Presenter/UIViewController+PanModalPresenter.m"; sourceTree = ""; }; + B072B2B3BF7FE061CC694AE00BCF5858 /* UIView+WebCacheState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheState.h"; path = "SDWebImage/Core/UIView+WebCacheState.h"; sourceTree = ""; }; B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SDWebImage; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B12BB85356FB25DB1C8CA459600D3F8E /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; - B1ABBFCC8D2F6B393D3F4389129E97F5 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; - B21F4D087C3795EA326FE588C03028CC /* MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJRefresh-Info.plist"; sourceTree = ""; }; - B2770F360CD876399FE83C30619DBC24 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; - B354D25F9AAB5A1E64BA7AAED1BA9991 /* UIView+WebCacheState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheState.h"; path = "SDWebImage/Core/UIView+WebCacheState.h"; sourceTree = ""; }; - B36F0D1046FE48DF23AE7AB21CD678D3 /* LookinDisplayItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItem.m; path = Src/Main/Shared/LookinDisplayItem.m; sourceTree = ""; }; - B4E40A4D926E9D870172CB05C27151FC /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; - B51F28BC73CA22D31949B1635AF8CAE1 /* UIView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LookinServer.m"; path = "Src/Main/Server/Category/UIView+LookinServer.m"; sourceTree = ""; }; - B53B6AA90E9FBFBBE4E4275DE10531D3 /* CALayer+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Lookin.m"; path = "Src/Main/Shared/Category/CALayer+Lookin.m"; sourceTree = ""; }; - B647311E2487029EA920B923258697D2 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJExtension/PrivacyInfo.xcprivacy; sourceTree = ""; }; - B686FCB243BCB66C7BB1F42E6A4B3417 /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; - B68B9359B3F4863CD16BC4AF1031EDD1 /* CALayer+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+LookinServer.m"; path = "Src/Main/Server/Category/CALayer+LookinServer.m"; sourceTree = ""; }; - B71D1DE227720C6548D26CB1380A595F /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; - B772F3922ED9C416DBFEA6651FBB3930 /* LKS_HierarchyDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.m; sourceTree = ""; }; - B876DE6F099D679F03040B8EF24E5C82 /* HWPanModalPresentableHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentableHandler.m; path = Sources/Mediator/HWPanModalPresentableHandler.m; sourceTree = ""; }; - B896A10F9115068B682B35E4774898B6 /* LSTTimer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTTimer.modulemap; sourceTree = ""; }; - B8F37F4AA285AB6E2540A4063D8B802F /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; - B90789CA4A099321E01CFF8CB566B5F3 /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; - B9D9760D282FEC09C3A5774993001829 /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; - BAD931CF8729677FC0BD6248B49E6631 /* LookinConnectionResponseAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionResponseAttachment.h; path = Src/Main/Shared/LookinConnectionResponseAttachment.h; sourceTree = ""; }; - BAF401BA2295E570793228F6E0B37E3F /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJRefresh.modulemap; sourceTree = ""; }; - BC24AF9FD32062D15DE214E94B0E828F /* LKS_GestureTargetActionsSearcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_GestureTargetActionsSearcher.m; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.m; sourceTree = ""; }; - BC5A2383372F42B2452808A886E02C6B /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; - BC686BE8B7F5AC6B3A652ABBA6EAE87A /* LKS_CustomAttrSetterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrSetterManager.h; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.h; sourceTree = ""; }; - BDC5D95848173A06A25E49216A4BEFDC /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; + B26771C31428D52F8DFB859AE1AC3503 /* MJRefreshStateTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m; sourceTree = ""; }; + B2D84B5B7090CE22D8AFB107E403CA13 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + B3F518DFA534AD602991065542FADB29 /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; + B4121F7B04BCCD0FB01ED16A27F6E571 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; + B444EEABD213A46C07AC5F1B8D73FBF1 /* UIView+HW_Frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+HW_Frame.m"; path = "Sources/Category/UIView+HW_Frame.m"; sourceTree = ""; }; + B46184374613AB561CB67E0F1EF14DD8 /* JXCategoryViewAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryViewAnimator.m; path = Sources/Common/JXCategoryViewAnimator.m; sourceTree = ""; }; + B46DF40E1300BE3FC009F0D7D5CF5ED0 /* UIViewController+PanModalPresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalPresenter.h"; path = "Sources/Presenter/UIViewController+PanModalPresenter.h"; sourceTree = ""; }; + B5C750768FB8EE26E8F613C1D910045B /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; + B5EF3518EEE6DB69526EE34FF9D58DFD /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; + B63B552A0A52E65141ED8027A3FCCB0D /* UIView+HW_Frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+HW_Frame.h"; path = "Sources/Category/UIView+HW_Frame.h"; sourceTree = ""; }; + B7498A05A9D7A9FEE19E027CABE6B9DD /* JXCategoryImageCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageCell.m; path = Sources/Image/JXCategoryImageCell.m; sourceTree = ""; }; + B74F835090D47DFE066B4DAD231882AC /* LookinAttributesSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesSection.h; path = Src/Main/Shared/LookinAttributesSection.h; sourceTree = ""; }; + B79CB4484CF793AF65C86B424D955922 /* LSTPopView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.release.xcconfig; sourceTree = ""; }; + B7AD3647BEEBE4C691B28F5746D51E7D /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; + B8E404753BE7BE627A458AE982427654 /* HWPanModalPresentableHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentableHandler.m; path = Sources/Mediator/HWPanModalPresentableHandler.m; sourceTree = ""; }; + B8E77F018E5BE1F8C021ACB0978497F6 /* LookinServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.release.xcconfig; sourceTree = ""; }; + B937D529B74DB9581A000F395FF3B6F7 /* NSArray+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Lookin.h"; path = "Src/Main/Shared/Category/NSArray+Lookin.h"; sourceTree = ""; }; + B9C3A1374DADDEAE813F69F05F5A2564 /* HWShoppingCartPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWShoppingCartPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h; sourceTree = ""; }; + B9D007BE64FBA88DB3F5D92E0EAEDEAD /* LKS_RequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_RequestHandler.h; path = Src/Main/Server/Connection/LKS_RequestHandler.h; sourceTree = ""; }; + BB4D65769822C57911F4A84B9F8FADFA /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; + BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "JXCategoryView-JXCategoryView"; path = JXCategoryView.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + BBB6E7BC9BF649910D7654B98B396BD4 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; + BBC2FF6B1D45486A6893E456C4B85E05 /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; + BBC5ED786070BB7777881EF2B55FF369 /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; + BC38AB7DAEDA3DEEFFAC64BDA7FA3C88 /* Lookin_PTUSBHub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTUSBHub.m; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.m; sourceTree = ""; }; + BC5B799F7FC71DC9649AD62AE8B34DC7 /* HWVisualEffectView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWVisualEffectView.h; path = Sources/View/HWVisualEffectView.h; sourceTree = ""; }; + BC88BA608872DDF711D78498FD36C1AA /* LKS_GestureTargetActionsSearcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_GestureTargetActionsSearcher.m; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.m; sourceTree = ""; }; + BCAF03C4FF87945F86C061039CB2443F /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; + BCE8E065BE01E56E0D55097E36AB8FC2 /* LookinDisplayItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItem.m; path = Src/Main/Shared/LookinDisplayItem.m; sourceTree = ""; }; + BD89A8E0323AB57CE283C150C3D4C556 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/include/FLAnimatedImageView.h; sourceTree = ""; }; + BDE2764DE3EEF78845A18DB898232DC0 /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; BDEE6097B6411333154FEF90A280E3E4 /* 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; }; - BE0B0E1A9A292EDE11246C6685B3FF8A /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; - BE11DDB27A20A87C02AE0F91342FA9E9 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; - BF559CBB24F4A49720F72A32ADDCCFE2 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; - BF5EC4E67D9695435096AE8FFF0726FA /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; - BF679003FB79C12E8A8221EC19044EC3 /* HWPanModalIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalIndicatorProtocol.h; path = Sources/View/HWPanModalIndicatorProtocol.h; sourceTree = ""; }; - BFC6D8F98A0A99B4F62553DD6B2DE362 /* HWPanContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanContainerView.m; path = Sources/View/HWPanContainerView.m; sourceTree = ""; }; - BFD36E41E270B32316CAE346D73B1BB4 /* LKS_EventHandlerMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_EventHandlerMaker.m; path = Src/Main/Server/Others/LKS_EventHandlerMaker.m; sourceTree = ""; }; - BFFCEECD2573D5472737D9AFB10A0BB2 /* LKS_ObjectRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ObjectRegistry.h; path = Src/Main/Server/Others/LKS_ObjectRegistry.h; sourceTree = ""; }; - C02050360407C95F57A46E3425089760 /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; - C0E2F76DB6A01DBF448BF55D94414007 /* LKS_CustomDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.m; sourceTree = ""; }; - C15066DB017692FFB93D6BF3C34128D3 /* HWVisualEffectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWVisualEffectView.m; path = Sources/View/HWVisualEffectView.m; sourceTree = ""; }; - C1EC495C820AD2FE568E285440075D82 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; - C246D6EBE3F2F29765C86C55F130AD3F /* Color+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Color+Lookin.h"; path = "Src/Main/Shared/Category/Color+Lookin.h"; sourceTree = ""; }; - C2641A163910BF7346FA6273237FDB7D /* Lookin_PTProtocol.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTProtocol.m; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.m; sourceTree = ""; }; - C387114CB39CEE512E07F38E4439D4D8 /* UIView+HW_Frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+HW_Frame.h"; path = "Sources/Category/UIView+HW_Frame.h"; sourceTree = ""; }; - C45F5D95A727E9121E38DFEFADA82094 /* UICollectionViewLayout+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+MJRefresh.m"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.m"; sourceTree = ""; }; - C49E916A72175489DFFC49A15E87403D /* HWPanModalHeight.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalHeight.h; path = Sources/Presentable/HWPanModalHeight.h; sourceTree = ""; }; - C4D31F6949E2640BBC06F6F5E862EA6B /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; - C5830BBF390FC8D9CCA3C6BDBE65DD04 /* LookinAttributesGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesGroup.m; path = Src/Main/Shared/LookinAttributesGroup.m; sourceTree = ""; }; - C59475012E53558600AFA4F7685E8F9E /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; - C657F16F9FE7919D2B27F05D611C2F2D /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; - C685758668AFAC91E0AE4675AEA80600 /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; - C6B393724F3296B6116FF029FBA74D60 /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; - C7586CB0CDC6CAF19F6A64083B6C8C0F /* HWPanModalPresentationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationController.m; path = Sources/Controller/HWPanModalPresentationController.m; sourceTree = ""; }; - C77A046F5E5912D1BF11BAA897F3C198 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; - C7B7F069BA04D7981F13F5FA41B3BAB5 /* LKS_HierarchyDetailsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDetailsHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.h; sourceTree = ""; }; - C7CA2BC79CB47B27F4A1481476747F49 /* DZNEmptyDataSet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-prefix.pch"; sourceTree = ""; }; - C7E35B5D53702D7A355AD38231170EAB /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; - C82B001CD34AC553F11A55D1E576C902 /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; - C84FAFE47B2E31104A515395A5239442 /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; - C8667A6D81C45427108730E481B7134F /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; - C88E60EA597845949F0925B844477F63 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; - C8974089710AB7F8A65D77241AA70557 /* FLAnimatedImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.debug.xcconfig; sourceTree = ""; }; - C930EDADB5661C1F591CA4E0A60BCA26 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; - CA040E4FC9E6D5254278E66354DE0995 /* LookinAppInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAppInfo.h; path = Src/Main/Shared/LookinAppInfo.h; sourceTree = ""; }; + BE09431A1BE57A882CA02B1E434916A8 /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; + BE10A2A4B13E0F15A962DBEA161DE595 /* LKS_AttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.h; sourceTree = ""; }; + BE6EFE785E6216D9C7C1D6B7A4EEA5EA /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; + BEB32B7BEE20F8A74F80D03511F02260 /* JXCategoryDotCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotCell.m; path = Sources/Dot/JXCategoryDotCell.m; sourceTree = ""; }; + BEC06B30EADD5F0931B350F94CD4D15C /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; + BEE43BCA7C1A101BFC7A5856F8793387 /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; + BF40FB09CDD92326BB3177C14DF172AD /* LSTPopView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopView.h; path = LSTPopView/Classes/Code/LSTPopView.h; sourceTree = ""; }; + BF9910B7B2FF86AF620A45955A338072 /* JXCategoryIndicatorCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorCell.h; path = Sources/Indicator/JXCategoryIndicatorCell.h; sourceTree = ""; }; + BFEF7CB304E59179EBDA954FA636E74D /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; + C02B6DB0CED9923894E4B972F8B03882 /* NSSet+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSSet+Lookin.m"; path = "Src/Main/Shared/Category/NSSet+Lookin.m"; sourceTree = ""; }; + C06B04E0ABEA41660753A9D5F58572EE /* FLAnimatedImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.release.xcconfig; sourceTree = ""; }; + C0ECED1A3FCBB93D40B1BFFF5AE2F27D /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; + C1227D6957584FA14F5EFE311854C54A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = WebImage/PrivacyInfo.xcprivacy; sourceTree = ""; }; + C181D8B9B1142624BE8BFFA787AA2854 /* LSTTimer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTTimer-dummy.m"; sourceTree = ""; }; + C1F534C5FFF39633128C9B99F1BBF1B5 /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; + C205DB74EDBD3C80FB36923BD2255DBB /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; + C371FCAC7DF4BD1C57C3D164BD5A8759 /* JXCategoryView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXCategoryView-prefix.pch"; sourceTree = ""; }; + C3A46B03C308EEEB11F2A62BA5D2E8BE /* JXCategoryView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = JXCategoryView; path = JXCategoryView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + C4A783F974F95D31DCCDA721D4F965EC /* LSTTimer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTTimer.h; path = LSTTimer/Classes/LSTTimer.h; sourceTree = ""; }; + C4B0E298E792EE24705C7E8457669228 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; + C55730A1966B5DF338B0554ACC4B0B16 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; + C5719A8B6A945982F0856B5A616B379E /* NSObject+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+LookinServer.m"; path = "Src/Main/Server/Category/NSObject+LookinServer.m"; sourceTree = ""; }; + C5A25B7B454717DB3993591B5E8B612E /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; + C5A9A86ABA54140CD0A5B6CD44C79740 /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; + C5FD92D35D7D1F18C67D17C9DD534533 /* LSTTimer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-prefix.pch"; sourceTree = ""; }; + C617C2D863C4AC28AF0370EDC02120A9 /* JXCategoryViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryViewDefines.h; path = Sources/Common/JXCategoryViewDefines.h; sourceTree = ""; }; + C626E0F07BD081EBE5955DEA5669BF14 /* UIColor+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+LookinServer.m"; path = "Src/Main/Server/Category/UIColor+LookinServer.m"; sourceTree = ""; }; + C63ECE6EA6AB3C1B9F676C1A2510CA67 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; + C6B15D5B29642260AB882050F51A8AE5 /* HWPanModal.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.debug.xcconfig; sourceTree = ""; }; + C6B6ABC9B259D86AA3C2451E682BE701 /* JXCategoryNumberView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberView.h; path = Sources/Number/JXCategoryNumberView.h; sourceTree = ""; }; + C746AE302AD12A4D0F6E287CACA690C6 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; + C74AFAA0D49E0563D9312CEA70CCF8B3 /* JXCategoryNumberCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberCellModel.h; path = Sources/Number/JXCategoryNumberCellModel.h; sourceTree = ""; }; + C7E392E347A9555F1447E0FBB3E777E5 /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; + C806BECAA1C722F04FE4A89D9B14A0E0 /* UIViewController+Presentation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Presentation.m"; path = "Sources/Presentable/UIViewController+Presentation.m"; sourceTree = ""; }; + C8B51A0410EE632DF42E1C298E25B221 /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; + C8BABB078FC5FF697A3609C777FC51FC /* HWPanModalIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalIndicatorProtocol.h; path = Sources/View/HWPanModalIndicatorProtocol.h; sourceTree = ""; }; + C947209A5CDFABA11FEBE5D709864961 /* HWPageSheetPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPageSheetPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m; sourceTree = ""; }; + C9DDC2FE19D7DC5621872F440C5E8A37 /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; + C9F0D4D92726FF95FE428AA975E93DE2 /* LookinAttributeModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributeModification.h; path = Src/Main/Shared/LookinAttributeModification.h; sourceTree = ""; }; + CA18A067DCACA93C5FD4591EBC943217 /* HWPanModal.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.release.xcconfig; sourceTree = ""; }; + CAD02815855109CE0DDD83222F913EF8 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; CAD1D653361EAFCC0E4FFD8252FC1E74 /* Pods-CustomKeyboard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-CustomKeyboard.modulemap"; sourceTree = ""; }; - CB1BEFB1C0257A74B80CAF80DB336894 /* LSTTimer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.release.xcconfig; sourceTree = ""; }; - CB56ABA66093040F0D62AF378BB66DBE /* LKS_CustomAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.h; sourceTree = ""; }; - CB96704A28B66FFCFA6B43392123348C /* LookinAttrIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttrIdentifiers.m; path = Src/Main/Shared/LookinAttrIdentifiers.m; sourceTree = ""; }; - CC87F6E60998716F313AD85E3F2F0C78 /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; - CD29BD8633F552915B08BF15C7E0DFFF /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; - CDEC5449CBECD6C324B9864AD284EC55 /* Image+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Image+Lookin.m"; path = "Src/Main/Shared/Category/Image+Lookin.m"; sourceTree = ""; }; - CE1FC58856D64F439A2DB39A5CBEAF01 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; - CE8561E7F90B3736EA348E5236FECB1C /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; - CE909BA066F9B44E9C2F036FF3FD44FE /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; - CEFEE7CEBA57AF6426BA05F18F444C4E /* NSString+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Lookin.h"; path = "Src/Main/Shared/Category/NSString+Lookin.h"; sourceTree = ""; }; + CAD21419CFC8A372DB941E7983ADDD9D /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; + CB40236F7A3DB0EECDBA370753BEDDD4 /* LookinAppInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAppInfo.m; path = Src/Main/Shared/LookinAppInfo.m; sourceTree = ""; }; + CBA389E7DB380F4012EFBD733C81D43A /* JXCategoryView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JXCategoryView-dummy.m"; sourceTree = ""; }; + CC8BAAD188938B05A876ECFEAA39F2E6 /* JXCategoryIndicatorRainbowLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorRainbowLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m; sourceTree = ""; }; + CCA4AAE27B9CAF06CC2B0A3C0A3F0594 /* UIScrollView+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+Helper.m"; path = "Sources/Category/UIScrollView+Helper.m"; sourceTree = ""; }; + CDE98EE96840F02E6074E842D456A2E3 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + CE3837EC7E52B2C2855416D01CB974C7 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; + CE77C4D90418C342647C55D75A5C1AE8 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; + CF0E98CA3E42AAC3B854E232BB1AF7FB /* LookinCustomDisplayItemInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomDisplayItemInfo.h; path = Src/Main/Shared/LookinCustomDisplayItemInfo.h; sourceTree = ""; }; CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "SDWebImage-SDWebImage"; path = SDWebImage.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - CF38798B2D107B8F8B096B856DF98A24 /* Lookin_PTPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTPrivate.h; path = Src/Main/Shared/Peertalk/Lookin_PTPrivate.h; sourceTree = ""; }; - CF585038948BE5BD9FDE25D090C77A52 /* HWPanModalAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalAnimator.h; path = Sources/Animator/HWPanModalAnimator.h; sourceTree = ""; }; - CF5E2B29305178430BD510351FDD6C99 /* MJRefreshNormalTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.m; sourceTree = ""; }; - CFBE4CFC0231291954B6CBE560F2D503 /* LSTPopView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTPopView-Info.plist"; sourceTree = ""; }; - D08B8F280C5811F6505EA1AE7983082B /* LookinStaticAsyncUpdateTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinStaticAsyncUpdateTask.m; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.m; sourceTree = ""; }; - D0B5D7F39DA4B830F1B68A7D9273B85E /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; - D1995E5A7C78EB3AC4764F06A4A7E676 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; - D1A874AEEF141E292D730F9161627B04 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/include/FLAnimatedImage.h; sourceTree = ""; }; - D1F143BC4A879AC2B9896478CE4FF798 /* LookinAutoLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAutoLayoutConstraint.h; path = Src/Main/Shared/LookinAutoLayoutConstraint.h; sourceTree = ""; }; - D2892265E5746B87D5D6CDB4D0215238 /* LookinServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LookinServer.modulemap; sourceTree = ""; }; - D2ADA0495E5FE9068CEDD520D7AB4D72 /* LKS_CustomAttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.h; sourceTree = ""; }; - D2E3EA9E3A659E147112B9E7A63EEC56 /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; - D3576B2FF83DF230E75AA05AB2DB6B4D /* UIViewController+PanModalPresenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalPresenter.m"; path = "Sources/Presenter/UIViewController+PanModalPresenter.m"; sourceTree = ""; }; - D37BD8FF05E69B29FC64F9CEB3CA7255 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/include/FLAnimatedImageView.h; sourceTree = ""; }; - D3831111080859754E7A75FF007ED40F /* LKS_HierarchyDetailsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDetailsHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.m; sourceTree = ""; }; - D4EB28525886DCE45DC1BBE08F77BCDF /* LookinHierarchyFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyFile.h; path = Src/Main/Shared/LookinHierarchyFile.h; sourceTree = ""; }; - D52AD9DE99C02DF34E22E59E4A970F45 /* UIColor+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+LookinServer.h"; path = "Src/Main/Server/Category/UIColor+LookinServer.h"; sourceTree = ""; }; - D5D847654327E7F1E333D40CD9665067 /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; - D7117B22CB4967C93BC27DD5B1BA9865 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; - D72EC9997A8CA1698A3020135CE8BC2E /* UIViewController+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LookinServer.h"; path = "Src/Main/Server/Category/UIViewController+LookinServer.h"; sourceTree = ""; }; + CF64931699D303A3C9AE1FFC4682E257 /* JXCategoryIndicatorCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorCell.m; path = Sources/Indicator/JXCategoryIndicatorCell.m; sourceTree = ""; }; + CF85D3EF505C17C565E691AC344CCE5C /* JXPagerListContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerListContainerView.h; path = Sources/JXPagerView/JXPagerListContainerView.h; sourceTree = ""; }; + CF9BCBE90C3B7C448764C897685CB0E3 /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; + CFD12B92C17E28346EDC2EC75D0BF494 /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; + D013F3B6606D04CFD12051F02350DB55 /* UIVisualEffectView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIVisualEffectView+LookinServer.h"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.h"; sourceTree = ""; }; + D0317376A8F5B09CBBAC757A9410CF00 /* LSTPopView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.debug.xcconfig; sourceTree = ""; }; + D03FDB7D5A636ED3DC51EF05677C546A /* LookinServerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServerDefines.h; path = Src/Main/Server/Others/LookinServerDefines.h; sourceTree = ""; }; + D16058E57E3F07CA628E8A17A3B944C1 /* LKSConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKSConfigManager.h; path = Src/Main/Server/Others/LKSConfigManager.h; sourceTree = ""; }; + D2F471FC57FF6DD1F698134B35D27C95 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; + D31BFB25B2F3620735E09AC6DE1CBFE3 /* JXPagerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerView.m; path = Sources/JXPagerView/JXPagerView.m; sourceTree = ""; }; + D3543E70B7F1B6F0CB25AB731CA0DFBE /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; + D3CF8B366EB9A41FEDB94035F404215D /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; + D3F906D47799FB7ED8D4AA1C036BF3BC /* JXPagerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerView.h; path = Sources/JXPagerView/JXPagerView.h; sourceTree = ""; }; + D40BB639047461966566FFED666B3ACF /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; + D40E6AE30D19137ABA0A5D046329BCCD /* NSSet+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSSet+Lookin.h"; path = "Src/Main/Shared/Category/NSSet+Lookin.h"; sourceTree = ""; }; + D48043130F64D218A676B16D2CDA0ED8 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; + D4AA530BA675D0E78BDD9644338B48A3 /* JXCategoryTitleImageCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageCell.m; path = Sources/TitleImage/JXCategoryTitleImageCell.m; sourceTree = ""; }; + D4BC45247918896A52CA0C54F038B447 /* NSArray+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Lookin.m"; path = "Src/Main/Shared/Category/NSArray+Lookin.m"; sourceTree = ""; }; + D4C17E87C77E85F28C83D98FAB4AB7F4 /* JXCategoryImageCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageCellModel.h; path = Sources/Image/JXCategoryImageCellModel.h; sourceTree = ""; }; + D4E6C9FAE7DD5348F64FBD66AA03DA5B /* JXCategoryIndicatorComponentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorComponentView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m; sourceTree = ""; }; + D4ECB35518D14625B419D0EC58050171 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; sourceTree = ""; }; + D5100072476E008E3F5E024784855C6A /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; + D5140E810D9AB3FD3FA724CCDD59D3AD /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Masonry.modulemap; sourceTree = ""; }; + D52171C8DB630868289299203B4ECD0C /* NSObject+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Lookin.m"; path = "Src/Main/Shared/Category/NSObject+Lookin.m"; sourceTree = ""; }; + D547696F5943987BC61D389F16B201E8 /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; + D58A6363674921528AA6EC052D65C890 /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; + D5D75E71D2ABCC5D3DDCC662DACBFAED /* JXCategoryIndicatorImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorImageView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h; sourceTree = ""; }; + D675E9EED90BA5941D43EB2C520A01B8 /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; + D68B54EB4EEB9AF6B9ED16CAB83E16BA /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; + D6F5B88F49EB151A388B58319A67E2A1 /* JXCategoryIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorProtocol.h; path = Sources/Common/JXCategoryIndicatorProtocol.h; sourceTree = ""; }; D742A7EF918BC67B0884AF366F7415FD /* Pods-CustomKeyboard-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CustomKeyboard-acknowledgements.plist"; sourceTree = ""; }; - D85D1D9B369469B71D9FE49138927707 /* LookinEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinEventHandler.h; path = Src/Main/Shared/LookinEventHandler.h; sourceTree = ""; }; - D9879EAF15EB971D024F6726C4E07562 /* HWShoppingCartPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWShoppingCartPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h; sourceTree = ""; }; - D9F0FAF97F68F13F21EE3D8E18046926 /* LookinCustomAttrModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomAttrModification.m; path = Src/Main/Shared/LookinCustomAttrModification.m; sourceTree = ""; }; - D9FB07B277FA3212774D9D7EF2156759 /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; - DA0B23D302091DCF531627DB2F06A5BA /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; - DA7F2EDBF237046CD345C29806E0A756 /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; - DA876A02B80932A6284AB2ACAB8135A6 /* LookinDisplayItemDetail.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItemDetail.m; path = Src/Main/Shared/LookinDisplayItemDetail.m; sourceTree = ""; }; - DC490DD3FFABA4122C58404F7DFAD348 /* LookinConnectionAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionAttachment.h; path = Src/Main/Shared/LookinConnectionAttachment.h; sourceTree = ""; }; - DC75CCA31193BB63063F364267DBCF2D /* LKS_ExportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ExportManager.m; path = Src/Main/Server/Others/LKS_ExportManager.m; sourceTree = ""; }; + D744043462D81E4ED2BB1ECAE8E9F696 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; + D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXCategoryView.debug.xcconfig; sourceTree = ""; }; + D7DFD14540146731FB9E466FA1EB81F0 /* LookinAttrType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrType.h; path = Src/Main/Shared/LookinAttrType.h; sourceTree = ""; }; + D843F393C308E0D3BCB88A0B04FDB291 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; + D9922CA9D57AA94D9EE06129264F7958 /* Masonry-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Masonry-Info.plist"; sourceTree = ""; }; + D9DA60EBF6A57B0D3224E3ACD3E51971 /* JXCategoryCollectionView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryCollectionView.m; path = Sources/Common/JXCategoryCollectionView.m; sourceTree = ""; }; + D9EC522C5B6A10C53A05FE81CED85983 /* NSString+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Lookin.m"; path = "Src/Main/Shared/Category/NSString+Lookin.m"; sourceTree = ""; }; + DA5203B4ACDB110F236306ADB5531C98 /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; + DAB0E506E749384DE93170FA1EE1FD3B /* HWPanContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanContainerView.h; path = Sources/View/HWPanContainerView.h; sourceTree = ""; }; + DACDF6DBB7030D05CC43C7DB516265EE /* HWVisualEffectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWVisualEffectView.m; path = Sources/View/HWVisualEffectView.m; sourceTree = ""; }; + DACFBFCC588CFB73AE8A6DB153DEA42F /* JXCategoryView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryView.h; path = Sources/JXCategoryView.h; sourceTree = ""; }; + DAFBC54BDE2AC21397492351C31C587A /* HWPanModalPresentableHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentableHandler.h; path = Sources/Mediator/HWPanModalPresentableHandler.h; sourceTree = ""; }; + DB3619AB8798CD8CAE31E140F80F2DC0 /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; + DB3CBBCBF7B8B49A86FAC8D0A1741C77 /* UIImage+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+LookinServer.h"; path = "Src/Main/Server/Category/UIImage+LookinServer.h"; sourceTree = ""; }; + DB866CD01C61417D45924946690C442B /* HWPanModal.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HWPanModal.modulemap; sourceTree = ""; }; + DBE1F0821F32567F3E84359D65C8422C /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; + DBE3855004E17CACAC82F75DF8EFEBD4 /* LSTPopView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-umbrella.h"; sourceTree = ""; }; + DC0451732A9C9A896EEC15BEC88B3151 /* LKS_InbuiltAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_InbuiltAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.m; sourceTree = ""; }; + DC285A6C8053D7E2AE423BE51B24E8AE /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + DC82DAFD220FAA7899CE21078C2C649D /* UIView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LookinServer.h"; path = "Src/Main/Server/Category/UIView+LookinServer.h"; sourceTree = ""; }; + DC870A534B766E7815C7744EE9E7E3E1 /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-keyBoard"; path = Pods_keyBoard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DCB59AEF88556057BC2FD85427D2EFE7 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; DCFE00F3CC8CED67258D7F7DD13F3156 /* Pods-keyBoard-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-keyBoard-frameworks.sh"; sourceTree = ""; }; - DD391D4FA7F38A97455407F9DA5DA8F0 /* HWPanModalContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContentView.m; path = Sources/View/PanModal/HWPanModalContentView.m; sourceTree = ""; }; - DDA24856F33C6E655A624699241CFD6D /* ResourceBundle-MJExtension-MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJExtension-MJExtension-Info.plist"; sourceTree = ""; }; - DDD6B4DA641B2F94F2D426AC2D4A5E7E /* FLAnimatedImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.release.xcconfig; sourceTree = ""; }; + DD1439668AF92748DEFAD18BF418CE55 /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; + DD3BFE6DB15E8FF64920F720EA31EEDE /* MJRefreshNormalTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.m; sourceTree = ""; }; + DD3CC2F2CD0FD607BD99AA89E970269A /* HWPageSheetPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPageSheetPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h; sourceTree = ""; }; + DDA8FA3EA27827F124700F1B6176E4CE /* Bugly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.debug.xcconfig; sourceTree = ""; }; + DDAA59B8AF34E0C4765874AEE69571F7 /* JXCategoryTitleImageCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageCellModel.h; path = Sources/TitleImage/JXCategoryTitleImageCellModel.h; sourceTree = ""; }; + DDDA744A029AF23E45515CE37C056256 /* LookinAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttribute.m; path = Src/Main/Shared/LookinAttribute.m; sourceTree = ""; }; DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LSTTimer; path = LSTTimer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DE26DBA97E2F7B5B4805533E6C020C30 /* HWPanModalPanGestureDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPanGestureDelegate.h; path = Sources/Presentable/HWPanModalPanGestureDelegate.h; sourceTree = ""; }; - DE5FC1FDACC1A466A889091A6DD9D1B4 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; - DE9ADECB39002B8ABC9BF590B430634B /* UITextView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+LookinServer.m"; path = "Src/Main/Server/Category/UITextView+LookinServer.m"; sourceTree = ""; }; - DEA09040DACD7A53B041773DD59096FC /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; - DF4489E08CBFCDAD16CB71B168364F46 /* LSTPopView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTPopView.modulemap; sourceTree = ""; }; - DF4516C3B5E735B563E9749DFA6BCB51 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; sourceTree = ""; }; - E02C6844FCB15EFA12DE7936E2D89768 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; - E0B73DB737A3D2CAAA90EA20B4BB23B3 /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; - E114D2723BCB64ADA9A307B95F5DE640 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; - E164F75EDECDE7B82945FA657EA41708 /* HWDimmedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWDimmedView.h; path = Sources/View/HWDimmedView.h; sourceTree = ""; }; - E1732483C75B01353EF9D04684480EE4 /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; - E19751E7E128A05C5F94C54CB5222006 /* LKS_EventHandlerMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_EventHandlerMaker.h; path = Src/Main/Server/Others/LKS_EventHandlerMaker.h; sourceTree = ""; }; - E1CED825638D1B3169A0C8EE7A57C720 /* Image+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Image+Lookin.h"; path = "Src/Main/Shared/Category/Image+Lookin.h"; sourceTree = ""; }; + DEDB698B7BC2AF63B53722CF1D2D8E57 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; + DEDFC34DB720F4FD92E634E486425845 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; + E032CFFEFE6D0B2BC568E604265CD74C /* DZNEmptyDataSet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DZNEmptyDataSet.modulemap; sourceTree = ""; }; + E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "JXPagingView-JXPagerView"; path = JXPagerView.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; + E075739451FCFAA914670EB353642C16 /* UIImage+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+LookinServer.m"; path = "Src/Main/Server/Category/UIImage+LookinServer.m"; sourceTree = ""; }; + E0A4E94FB3CF9B468E72117C85C2E773 /* JXCategoryViewAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryViewAnimator.h; path = Sources/Common/JXCategoryViewAnimator.h; sourceTree = ""; }; + E138C277A1DD60E5BB20AB4EC7CEBDB2 /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; + E152B4E044E172623798E791ACCC157E /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; + E1921A1332A20D950700741950E97126 /* CALayer+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+LookinServer.m"; path = "Src/Main/Server/Category/CALayer+LookinServer.m"; sourceTree = ""; }; + E1F236D1BF028AEAD75A9FB3C9DCAE0F /* KeyValueObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KeyValueObserver.m; path = Sources/KVO/KeyValueObserver.m; sourceTree = ""; }; E214C17CF404D45BDF92DD6C18D371FA /* Pods-keyBoard-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-keyBoard-acknowledgements.markdown"; sourceTree = ""; }; - E2E3CFC89381BAE830E4045CE02E25EB /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; - E382492BA0D4E5C9BEF289F10F029CAA /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; - E3EF6841A6A45FD5C11031ED861CFF06 /* LKS_InbuiltAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_InbuiltAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.h; sourceTree = ""; }; - E41E643057B645A4E6C5FEA5E52213CB /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; - E49B94A4D72DB4B81F4E8CDC098BC388 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; + E259D7D54703B047363E50046A949F68 /* JXPagingView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "JXPagingView-Info.plist"; sourceTree = ""; }; + E25EECD78C776DB2FDB519D3AA7CB0BD /* JXCategoryListContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryListContainerView.h; path = Sources/Common/JXCategoryListContainerView.h; sourceTree = ""; }; + E29E39BBB558CC51A6DB91379351B72E /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; + E3535B97DCD1B05E059D045B16700F34 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; + E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; + E42238B57F88C70438DE479E184E4352 /* JXCategoryTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleView.h; path = Sources/Title/JXCategoryTitleView.h; sourceTree = ""; }; + E44ED3A05255119AA352B7DE0C64E994 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; + E48A50CB4DE0A87DE4F3E1BFE24DC7B7 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MJRefresh; path = MJRefresh.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E5BBE1866B6FDB7D5307A6075BE5F347 /* MJRefreshStateTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m; sourceTree = ""; }; - E6EDBB7EFC23401D50E3438EB3430A58 /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; - E78C9A636C9E4C5CFBDECBA5127AF367 /* LKS_MultiplatformAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_MultiplatformAdapter.m; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.m; sourceTree = ""; }; - E8284A1808A9A014FA6F2F4E23F36835 /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; - E8EA132DBE319D046C6BEFA0C4AB4940 /* NSSet+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSSet+Lookin.m"; path = "Src/Main/Shared/Category/NSSet+Lookin.m"; sourceTree = ""; }; - E9004778D6831458C102A879DA83C285 /* UIImage+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+LookinServer.h"; path = "Src/Main/Server/Category/UIImage+LookinServer.h"; sourceTree = ""; }; - E90228ED50408CEB55B1257A093A4B1A /* LSTPopView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-umbrella.h"; sourceTree = ""; }; - E95EEB52B039FDCAE4992EC84BF70332 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; - EA5F1011035F011FF8DB93B55405B76E /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; - EA60319FCBE8ADFF00A52058DBE7C157 /* LookinServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.debug.xcconfig; sourceTree = ""; }; - EA8BD469A978049C96BA8554A1F6D2D6 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; - EAE44CAA3E728CD13C43CF7D34627D80 /* LookinTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinTuple.h; path = Src/Main/Shared/LookinTuple.h; sourceTree = ""; }; - EBD791825D3A6F564E4BA3B31B0F2BFB /* UIImageView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+LookinServer.h"; path = "Src/Main/Server/Category/UIImageView+LookinServer.h"; sourceTree = ""; }; - ED1DD2A27A7141151DAB033BD707A1EF /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; - EEE26007FA20AE54DB39973E3D1D76FF /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; - EF5BED7A35D904E495E540434D07B398 /* UIView+WebCacheState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheState.m"; path = "SDWebImage/Core/UIView+WebCacheState.m"; sourceTree = ""; }; - EF66633D19CE6F4EBFF2331E624219EC /* Bugly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.debug.xcconfig; sourceTree = ""; }; - EF6748BE01C63A0BA85DC20DBF82AD80 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; - EF96CCDE1944CF562A65CA60FCBAD8CC /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; - F032CA5D8067C46163CF052F106C2A2D /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; - F0CB265D0463DC2290A542EFCE210632 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; - F0F086732258C7153899AB5D8C678B02 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; - F24C826B62D5E083C9293F7721C463C2 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; - F24F9CCCB353131934224305105F7E49 /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FLAnimatedImage.modulemap; sourceTree = ""; }; - F27AC2454398D7EA8C514D5B2F6469EF /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; - F2AA502A31D7ACB4F28AAE65C3561F31 /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; - F2C18394D397CD373A1F089F0924F724 /* HWPanModal.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.debug.xcconfig; sourceTree = ""; }; - F47E18ADFFC71918AE70F42C18C32A89 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; - F4AF21DC4288D196E2F556338C3101AE /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = WebImage/PrivacyInfo.xcprivacy; sourceTree = ""; }; - F522B03B0E818BE677108EC202F41472 /* LookinStaticAsyncUpdateTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinStaticAsyncUpdateTask.h; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.h; sourceTree = ""; }; - F5D51DADE6BB30185CA5DE0A026B674A /* HWPanModalContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContainerView.h; path = Sources/View/PanModal/HWPanModalContainerView.h; sourceTree = ""; }; - F68CF910ED994D45AAA3B5E5FABB6835 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; - F69E813A3DBBC0717A1A31E2B15A0606 /* UIViewController+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LookinServer.m"; path = "Src/Main/Server/Category/UIViewController+LookinServer.m"; sourceTree = ""; }; - F6E7A6844647C14F0728CBB9EC73AF19 /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; - F715A0DDAEC4B71182625E313DD4E413 /* LSTPopView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-prefix.pch"; sourceTree = ""; }; - F72D861CBD81CE860AF0AE80BBE0D883 /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; - F738F2BE3FA2AD49A9764CC72FDBAFB2 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; - F7A5B6B4FC335FF159BAE91EDDEC3320 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; - F7C8B71EAA1C160D9B20E934869F7E16 /* LookinAttributeModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributeModification.h; path = Src/Main/Shared/LookinAttributeModification.h; sourceTree = ""; }; - F83A870FD420501FBBA293B2D6A26AD0 /* MJRefreshStateTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h; sourceTree = ""; }; - F8A410A1A4222EF3876A4FA11492EF05 /* MJRefreshTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshTrailer.h; path = MJRefresh/Base/MJRefreshTrailer.h; sourceTree = ""; }; - F9F21BFD087BDB0FF37B51B916F0A3DC /* LSTTimer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTTimer-dummy.m"; sourceTree = ""; }; - FA56E3002035BE556C5ED858D43F49DD /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; - FA721DB25EC176AA8EF0102082B67F5A /* UILabel+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+LookinServer.m"; path = "Src/Main/Server/Category/UILabel+LookinServer.m"; sourceTree = ""; }; + E5592C4FA7C5389CD5E3CCE2F804F447 /* HWPanModal-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-prefix.pch"; sourceTree = ""; }; + E5AA796F8B4298B625A467D39523F40F /* LKS_EventHandlerMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_EventHandlerMaker.h; path = Src/Main/Server/Others/LKS_EventHandlerMaker.h; sourceTree = ""; }; + E5B1C13BB84FC1E79BC9BB233B793A5A /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; + E5EA191D7CFA74A3FEAFB27130A3FEC7 /* RTLManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RTLManager.m; path = Sources/RLTManager/RTLManager.m; sourceTree = ""; }; + E654A0C1F961A76933C784134A3D98E4 /* LookinServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.debug.xcconfig; sourceTree = ""; }; + E6B846D03C97210EDD55850D04A8F27A /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; + E74AC99A06CC9DE9D81D54044B013F98 /* LKS_CustomDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.m; sourceTree = ""; }; + E87C7E8B87671964EE3B94CB801C492E /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; + E889A3C02C6D9C2F5501AF30759E916C /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; + E8DC9FFB899510CE978017ADFAFE6D87 /* HWPanModalPresenterProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresenterProtocol.h; path = Sources/Presenter/HWPanModalPresenterProtocol.h; sourceTree = ""; }; + E9598F4E504AE0DA98A0B2DC305F1C83 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; + E95C47EFA2CADA467B5A46831F0EA87A /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; + E97B2ACE11733D7DD5ECA116979B91D5 /* LookinEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinEventHandler.h; path = Src/Main/Shared/LookinEventHandler.h; sourceTree = ""; }; + E9CB22320707CAEB4EE4C1DF62EB9E1A /* UIView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LookinServer.m"; path = "Src/Main/Server/Category/UIView+LookinServer.m"; sourceTree = ""; }; + EAEC3302C39E58E44D49A12FA8699A84 /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; + EB21E143FD58D712C16E9026FBFFE194 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; + EB3C413B4ED21D886E50FCBC0761408E /* LKS_ExportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ExportManager.h; path = Src/Main/Server/Others/LKS_ExportManager.h; sourceTree = ""; }; + EC33F9EE9311F0E41E69AB2D40770217 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; + EC4AC84F5855EC104608477917DF3145 /* JXCategoryIndicatorDotLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorDotLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m; sourceTree = ""; }; + EC57F0405D7809ECABB52C0C041C6F2F /* JXCategoryImageCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageCellModel.m; path = Sources/Image/JXCategoryImageCellModel.m; sourceTree = ""; }; + EC9D66F9AD565D0A6E6595CFC812165E /* LookinStaticAsyncUpdateTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinStaticAsyncUpdateTask.m; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.m; sourceTree = ""; }; + ECA422AB0F45E3F4B650188FEE476C8C /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; + ED2932A528EF3931C345CFE64B9F95D6 /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; + ED6F94603AF0AF72D292CADE8ABCEEB3 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; + ED71DE4537C6ECADC81696A80C943E64 /* HWBackgroundConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWBackgroundConfig.m; path = Sources/View/HWBackgroundConfig.m; sourceTree = ""; }; + ED8D9D4C66EB7593131560466A9EEB08 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + EE1A5661BE1EACFB3D2C7F19D51BF011 /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; + EE80578D9DB416BD158323BE4D5C76F4 /* HWPanModal-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HWPanModal-dummy.m"; sourceTree = ""; }; + EEB6F4442CB80A88D94B35721714C121 /* Color+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Color+Lookin.h"; path = "Src/Main/Shared/Category/Color+Lookin.h"; sourceTree = ""; }; + EED2C7FD129EA6F065286A12502B79B7 /* JXCategoryDotView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotView.m; path = Sources/Dot/JXCategoryDotView.m; sourceTree = ""; }; + EF3A8DFB97BB54D169F6E8AC578F498C /* JXCategoryDotCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotCellModel.m; path = Sources/Dot/JXCategoryDotCellModel.m; sourceTree = ""; }; + EF426A2B87D32263A2C56A13732C8201 /* LSTTimer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTTimer.m; path = LSTTimer/Classes/LSTTimer.m; sourceTree = ""; }; + F0FF9B39CB74F30B336CF7D4085E2AE0 /* UICollectionViewLayout+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+MJRefresh.h"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.h"; sourceTree = ""; }; + F15C652E7FDB0BE287A551718B00B6A8 /* JXCategoryNumberCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberCellModel.m; path = Sources/Number/JXCategoryNumberCellModel.m; sourceTree = ""; }; + F1C50876E480E256FAA99FC38F2BC478 /* LKS_ConnectionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ConnectionManager.m; path = Src/Main/Server/Connection/LKS_ConnectionManager.m; sourceTree = ""; }; + F21EDB4000AA52958FC207353BC36367 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; + F246E4D58E65C83AB3493871F692FC9C /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; + F2698AC3972900E338490644A2E03A2A /* LookinCodingValueType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCodingValueType.h; path = Src/Main/Shared/LookinCodingValueType.h; sourceTree = ""; }; + F2A8643D9113999359ADC6C79DA48111 /* Color+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Color+Lookin.m"; path = "Src/Main/Shared/Category/Color+Lookin.m"; sourceTree = ""; }; + F2EB780D15F77D48AEC0D3A47833557E /* LSTPopView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-prefix.pch"; sourceTree = ""; }; + F3AD144DF03231D478D237DCFC615D36 /* LookinConnectionAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionAttachment.h; path = Src/Main/Shared/LookinConnectionAttachment.h; sourceTree = ""; }; + F451B2E12A8192978BB7FB1B45BF1E04 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; + F45F2EB9AE5E2D5BDC0F9860DB695385 /* UIImageView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+LookinServer.h"; path = "Src/Main/Server/Category/UIImageView+LookinServer.h"; sourceTree = ""; }; + F4D2D27159CC3A8AAABD93291FBA2B48 /* LookinServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LookinServer.modulemap; sourceTree = ""; }; + F549CCE65FFF5AC81AB62FDCCB6CB8DC /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; + F55015AACD21AF6274741BBDAC6148E2 /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; + F6CC661C43717D8BBB4405FD037BDC03 /* LookinCustomAttrModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomAttrModification.m; path = Src/Main/Shared/LookinCustomAttrModification.m; sourceTree = ""; }; + F7CD4CF41A222A66B3E435AB32DF697D /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; + F7FE08919F8BE5AACFB3A1E812E57C03 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; + F86F79271CDA27370B63C4004FB83EF7 /* SDImageFramePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFramePool.h; path = SDWebImage/Private/SDImageFramePool.h; sourceTree = ""; }; + F8A31B7D92D4FBD879F8C39ED3139439 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; + F904F7CF43AB518217FB1AB9236020D4 /* UIColor+JXAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+JXAdd.h"; path = "Sources/Common/UIColor+JXAdd.h"; sourceTree = ""; }; + F90D97C684BADB3FE9796E626B98C43A /* LookinDisplayItemDetail.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItemDetail.m; path = Src/Main/Shared/LookinDisplayItemDetail.m; sourceTree = ""; }; + FA395F2DBB98D70F218443EA65E0D442 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; + FA6406A6E74DC06D367BE38EA6C60243 /* LKS_Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_Helper.h; path = Src/Main/Server/Others/LKS_Helper.h; sourceTree = ""; }; + FA94CFBBBF3DC429BAF55FD9493336B4 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FLAnimatedImage; path = FLAnimatedImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FADEEDA2729187D0D3E4FF58DCAE4F5E /* LookinDisplayItemDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItemDetail.h; path = Src/Main/Shared/LookinDisplayItemDetail.h; sourceTree = ""; }; - FB095F0736BB4D6DAB423B110675CCD9 /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; - FB689A278C80C26E3B3E80EDA3887106 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; - FBDB01F2E84A23710184B78970DFEA2D /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; - FC070F9BCE8A8D0A21448F82A7DD5F5A /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; - FC504494ABD0D1144D620FD1501F0E00 /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; - FCCAFE3B7FF5BB1E728A5F5834F651D8 /* HWPresentingVCAnimatedTransitioning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPresentingVCAnimatedTransitioning.h; path = Sources/Animator/HWPresentingVCAnimatedTransitioning.h; sourceTree = ""; }; - FD16DAAD0E6C1AF6207145BC463DF81D /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; - FD22D0365334ED54585130432CEF0912 /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; - FE45E33A4A0C09CD0EBB222B7E40EE72 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; - FE4F3AC67FEAA51E07D9DCC83CAEB3D5 /* LKS_AttrModificationPatchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrModificationPatchHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.m; sourceTree = ""; }; - FED881DC5D7531317A8A2A309D96815F /* LKS_AttrModificationPatchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrModificationPatchHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.h; sourceTree = ""; }; - FF06402E5B9C49B794955B31F8067263 /* UITableView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+LookinServer.m"; path = "Src/Main/Server/Category/UITableView+LookinServer.m"; sourceTree = ""; }; - FF47B51E8368756DB1E42F174494224F /* HWPageSheetPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPageSheetPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h; sourceTree = ""; }; - FFB946957EE60C8096CD34FFD7880091 /* LKS_Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_Helper.m; path = Src/Main/Server/Others/LKS_Helper.m; sourceTree = ""; }; - FFF8ADD6067D862411385E3BFF71A8DA /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; + FAC311E0F10AA1170D905B6C90AE765F /* JXCategoryImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageView.h; path = Sources/Image/JXCategoryImageView.h; sourceTree = ""; }; + FB1E7E734FDF6F7CAC668B6BD6A2A014 /* Image+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Image+Lookin.m"; path = "Src/Main/Shared/Category/Image+Lookin.m"; sourceTree = ""; }; + FB334521D7F08199DE839AB68A37105C /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; + FB5DC78AEFAB6098819933CF81AAB15B /* Lookin_PTProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTProtocol.h; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.h; sourceTree = ""; }; + FBF4C669CA968A448B7E1DD3A141A41C /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; + FC52B8F222678A49BF1BA307CD9A7777 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; + FD4AB223CCA1E3159EE2C805605A0657 /* JXCategoryIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorView.m; path = Sources/Indicator/JXCategoryIndicatorView.m; sourceTree = ""; }; + FD5B9F06C28C32AA434A5A2FFACDF89A /* JXCategoryIndicatorRainbowLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorRainbowLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h; sourceTree = ""; }; + FD6EC1E4FB3615CE938900B23CEAD0F8 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; + FDF2879588F648F9ACE28CEDF3C4F456 /* DZNEmptyDataSet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DZNEmptyDataSet-Info.plist"; sourceTree = ""; }; + FE8EB43019635F8DC34B96037E258505 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; + FED61E621A88CB9CE3C421FDEB1106FC /* LookinDisplayItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItem.h; path = Src/Main/Shared/LookinDisplayItem.h; sourceTree = ""; }; + FEF91306ED7817FCE47628D37A94BF1B /* JXCategoryIndicatorBackgroundView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorBackgroundView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h; sourceTree = ""; }; + FF6C98975F33C466CDCC506B95080046 /* UIView+WebCacheState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheState.m"; path = "SDWebImage/Core/UIView+WebCacheState.m"; sourceTree = ""; }; + FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.debug.xcconfig; sourceTree = ""; }; + FFFC6DDC16F58E87A8A30CA92223320F /* DZNEmptyDataSet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DZNEmptyDataSet-dummy.m"; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -1352,21 +1598,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 30C44AB8C7DCA8E0F90C02BF12AC1ACC /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 3131D37BE47B5A01B63EFA14B2A9822F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - B98BC635A537547CD8CA9B77C750304F /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 37145BAEB1B97BA7ADD7D6C3E86E99BD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1384,6 +1615,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 481273BD538BE69936DB3D2C8EB1E61B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 8B47B7F220A2B9E121EFF5A28B477972 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 49A3D4697275EC0A7C6F38E45E2F0217 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6328134103EDE3EF1EA3866C0B5CCA07 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1410,6 +1656,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 96D238A614CBDD553073EEECBB41281C /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + E516B5B11193439E020DD2A908700B79 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9E666AF8497E0DE090335A642D5B84EC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1418,13 +1672,43 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - B4DC6EBA2E0A9BF13EE9B40E41669F40 /* Frameworks */ = { + A815DA3563AEC721C6EAF6B39395CDD4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; + AE750D3363286EC4504AB9516776E757 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 431023914A5D2653ABAE7AB54880C9AC /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AEC8B8EF401BFAE066232C67738FEB8F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + B48A7E8CCFE81BBD4AEBA45C992E5F7F /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + C44502CD70E5B1200927F3A081A60365 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 72157F8282836C3F6D65008E2F193655 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; CA6527CF424B1AA12AF1D0BB36EBAF73 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1454,6 +1738,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D322DF9855308A001A820F202DCCBA75 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; E672724427269716049B769344D7C3DC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1463,393 +1754,284 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E84EAC027A0FB7CE91306C93FC676BFE /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - F69A92A5C344308FA427BBAED4888BA0 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 84065EC0D4446E7448D1BCFB4040230E /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 035E1FF1C6FC2C70E1C9A7412F5BC07F /* SDWebImage */ = { + 0727E8966E92BA27516AA23EF6747FF6 /* Security */ = { isa = PBXGroup; children = ( - F83577C0BD1D647CC9CF750D800647CB /* Core */, - B739A483873A111E644B8250F33F752D /* Support Files */, + 2AD36233DB657DAA0ACBB8EEEAEB38EA /* AFSecurityPolicy.h */, + 2458E327D6233EBA29A07B3E63113146 /* AFSecurityPolicy.m */, ); - name = SDWebImage; - path = SDWebImage; + name = Security; sourceTree = ""; }; - 0C71559E9A729C5B047179B43CABC936 /* Reachability */ = { + 0A1A9864A60D31E01F2EAB72403B1E95 /* NSURLSession */ = { isa = PBXGroup; children = ( - A1CAA004ADB375344EE1C0A0FF7E804F /* AFNetworkReachabilityManager.h */, - 6EDACCA592A0A0FC0428384009A75BD5 /* AFNetworkReachabilityManager.m */, - ); - name = Reachability; - sourceTree = ""; - }; - 16966B46BC1DE37AE221B0FB44232D79 /* Support Files */ = { - isa = PBXGroup; - children = ( - EF66633D19CE6F4EBFF2331E624219EC /* Bugly.debug.xcconfig */, - 090BA40A2CB6D8D73A78895D821E7E93 /* Bugly.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Bugly"; - sourceTree = ""; - }; - 1724889F583861283992342B8F084070 /* Support Files */ = { - isa = PBXGroup; - children = ( - DF4489E08CBFCDAD16CB71B168364F46 /* LSTPopView.modulemap */, - 93DAC06B5293787BAAAA04E673812C59 /* LSTPopView-dummy.m */, - CFBE4CFC0231291954B6CBE560F2D503 /* LSTPopView-Info.plist */, - F715A0DDAEC4B71182625E313DD4E413 /* LSTPopView-prefix.pch */, - E90228ED50408CEB55B1257A093A4B1A /* LSTPopView-umbrella.h */, - 0874A58BB3E268A75B1BD3D594CBAA2D /* LSTPopView.debug.xcconfig */, - A16C385BAD6F9C544C59D31A650946CC /* LSTPopView.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/LSTPopView"; - sourceTree = ""; - }; - 1F9EEB6CC879BACDBC385C6DBC24F7C9 /* NSURLSession */ = { - isa = PBXGroup; - children = ( - 2B7C62DACFDBE481DDA82F7BE3396A68 /* AFCompatibilityMacros.h */, - 981BA7AE91A568EC43916303978CE501 /* AFHTTPSessionManager.h */, - 0E7B3F97FDF9522DB3E4FADD3DB88700 /* AFHTTPSessionManager.m */, - 595622377DEA1856384D2D262C52C73F /* AFURLSessionManager.h */, - E95EEB52B039FDCAE4992EC84BF70332 /* AFURLSessionManager.m */, + 29C25E996193BA4D1FCBB5C2A7812FB9 /* AFCompatibilityMacros.h */, + 5F31829B35104CCEC70FD712B1D4D4E2 /* AFHTTPSessionManager.h */, + 9DA5F48CB9575D0E2C775D8D7C262C14 /* AFHTTPSessionManager.m */, + B2D84B5B7090CE22D8AFB107E403CA13 /* AFURLSessionManager.h */, + 55E89941A6B7A73D479A0770A9C96C14 /* AFURLSessionManager.m */, ); name = NSURLSession; sourceTree = ""; }; - 20214EA91148602FD46C19710C2B91EB /* Core */ = { + 0F19D22A7E286B575974CA8C2AD3F3DF /* Bugly */ = { isa = PBXGroup; children = ( - A701AEED09FE2183269AA89DFA8E4B7A /* CALayer+Lookin.h */, - B53B6AA90E9FBFBBE4E4275DE10531D3 /* CALayer+Lookin.m */, - A89D8D8B71AD9A723D88B13AF519A214 /* CALayer+LookinServer.h */, - B68B9359B3F4863CD16BC4AF1031EDD1 /* CALayer+LookinServer.m */, - C246D6EBE3F2F29765C86C55F130AD3F /* Color+Lookin.h */, - 19D6F69255AF25D760BE89366830A6F7 /* Color+Lookin.m */, - E1CED825638D1B3169A0C8EE7A57C720 /* Image+Lookin.h */, - CDEC5449CBECD6C324B9864AD284EC55 /* Image+Lookin.m */, - 54E07E4DAA97DEDC8F59F58429664909 /* LKS_AttrGroupsMaker.h */, - 581F1A0410E8F8E85A8C2E596B4C7F40 /* LKS_AttrGroupsMaker.m */, - FED881DC5D7531317A8A2A309D96815F /* LKS_AttrModificationPatchHandler.h */, - FE4F3AC67FEAA51E07D9DCC83CAEB3D5 /* LKS_AttrModificationPatchHandler.m */, - 3DF4E1CE47903B976C738C7A1DB7C650 /* LKS_ConnectionManager.h */, - 499DFA9F01A96B26620A744AC7C94DB7 /* LKS_ConnectionManager.m */, - D2ADA0495E5FE9068CEDD520D7AB4D72 /* LKS_CustomAttrGroupsMaker.h */, - 3BC0E1D78C95F4CC731325A284A8FC80 /* LKS_CustomAttrGroupsMaker.m */, - CB56ABA66093040F0D62AF378BB66DBE /* LKS_CustomAttrModificationHandler.h */, - 30A4A3709BA82F970D60FE150EDB33D1 /* LKS_CustomAttrModificationHandler.m */, - BC686BE8B7F5AC6B3A652ABBA6EAE87A /* LKS_CustomAttrSetterManager.h */, - 04D3C87C11221ADDA77670ED0731D145 /* LKS_CustomAttrSetterManager.m */, - 40D46544DD0F8DC61B909F5E02739172 /* LKS_CustomDisplayItemsMaker.h */, - C0E2F76DB6A01DBF448BF55D94414007 /* LKS_CustomDisplayItemsMaker.m */, - E19751E7E128A05C5F94C54CB5222006 /* LKS_EventHandlerMaker.h */, - BFD36E41E270B32316CAE346D73B1BB4 /* LKS_EventHandlerMaker.m */, - 5A12BDC5E6446CAD91BA1C47C211ED2E /* LKS_ExportManager.h */, - DC75CCA31193BB63063F364267DBCF2D /* LKS_ExportManager.m */, - 1D9DDC30D49B9BC3DFA8D9BC83722C14 /* LKS_GestureTargetActionsSearcher.h */, - BC24AF9FD32062D15DE214E94B0E828F /* LKS_GestureTargetActionsSearcher.m */, - 2262EDBC98A2795DB2EE27FB7D953E2C /* LKS_Helper.h */, - FFB946957EE60C8096CD34FFD7880091 /* LKS_Helper.m */, - C7B7F069BA04D7981F13F5FA41B3BAB5 /* LKS_HierarchyDetailsHandler.h */, - D3831111080859754E7A75FF007ED40F /* LKS_HierarchyDetailsHandler.m */, - 310204C87FE20FAAF183EEE0D555B729 /* LKS_HierarchyDisplayItemsMaker.h */, - B772F3922ED9C416DBFEA6651FBB3930 /* LKS_HierarchyDisplayItemsMaker.m */, - E3EF6841A6A45FD5C11031ED861CFF06 /* LKS_InbuiltAttrModificationHandler.h */, - 83E75619300BC832136529DA87152075 /* LKS_InbuiltAttrModificationHandler.m */, - 73EFE9F07FF04A733446FD7A74A02718 /* LKS_MultiplatformAdapter.h */, - E78C9A636C9E4C5CFBDECBA5127AF367 /* LKS_MultiplatformAdapter.m */, - BFFCEECD2573D5472737D9AFB10A0BB2 /* LKS_ObjectRegistry.h */, - 20466880B35C5065EE68BED96801035F /* LKS_ObjectRegistry.m */, - AE403DA6C5955C67D130890FCA703778 /* LKS_RequestHandler.h */, - 13527772A4A54A71A31658A3E36E2474 /* LKS_RequestHandler.m */, - A75ADFE775EE09236D1DF5672ACB9A4C /* LKS_TraceManager.h */, - 04A251837ED47D22FF5ACBFA97F91D4A /* LKS_TraceManager.m */, - 0D53461EC25E2C6DAE3F3C2ABD951A2B /* LKSConfigManager.h */, - 6233A7302725D50AFE344EFD05C9C870 /* LKSConfigManager.m */, - 39D285C0DD3F1106B921412AD679ADEC /* Lookin_PTChannel.h */, - 230DC3B27944D3472C6A06DA7EEAF194 /* Lookin_PTChannel.m */, - CF38798B2D107B8F8B096B856DF98A24 /* Lookin_PTPrivate.h */, - 7577D873945C0C370C14EE971C3509FB /* Lookin_PTProtocol.h */, - C2641A163910BF7346FA6273237FDB7D /* Lookin_PTProtocol.m */, - 6F886C315967D7AADA95C37B717FE5A2 /* Lookin_PTUSBHub.h */, - 899D158EA21A86AFAE75EACD2CFC106B /* Lookin_PTUSBHub.m */, - CA040E4FC9E6D5254278E66354DE0995 /* LookinAppInfo.h */, - 3D832408A734647A9D2C62473FE11EFB /* LookinAppInfo.m */, - 074925B1189A88BAA6297431490B8041 /* LookinAttribute.h */, - 25283803DB6704A7DFB24BD626A74C6E /* LookinAttribute.m */, - F7C8B71EAA1C160D9B20E934869F7E16 /* LookinAttributeModification.h */, - 624CC6F33BF93A1458307F73823C3E10 /* LookinAttributeModification.m */, - 4AA6F90EC76FE7C2ACDF3266FD792D7A /* LookinAttributesGroup.h */, - C5830BBF390FC8D9CCA3C6BDBE65DD04 /* LookinAttributesGroup.m */, - 9B55BC4062AFBC21B6F27CA6801F7F45 /* LookinAttributesSection.h */, - 0531DC0648DD160A9576D09368C28017 /* LookinAttributesSection.m */, - AA574A6EA7EECCE7D1E086B964FA3C65 /* LookinAttrIdentifiers.h */, - CB96704A28B66FFCFA6B43392123348C /* LookinAttrIdentifiers.m */, - 7E3DC362C663E7C7DAB5B7DC796C5507 /* LookinAttrType.h */, - D1F143BC4A879AC2B9896478CE4FF798 /* LookinAutoLayoutConstraint.h */, - 0175DE132412321B3302CBE48CE0F712 /* LookinAutoLayoutConstraint.m */, - 4DCD76BA1FFEFDEEE2F9331ECD0796D4 /* LookinCodingValueType.h */, - DC490DD3FFABA4122C58404F7DFAD348 /* LookinConnectionAttachment.h */, - 03BAE9F573ECB0A822C6757CBF10AB0E /* LookinConnectionAttachment.m */, - BAD931CF8729677FC0BD6248B49E6631 /* LookinConnectionResponseAttachment.h */, - 8983C7CF18477B6B6E981751F1C09853 /* LookinConnectionResponseAttachment.m */, - AA4F3775DDC9BAD8BC30D51376A765F0 /* LookinCustomAttrModification.h */, - D9F0FAF97F68F13F21EE3D8E18046926 /* LookinCustomAttrModification.m */, - 47C4451B7E17B800D4088E7182C1025D /* LookinCustomDisplayItemInfo.h */, - 8B417F374DC024262C256083E5EB6F70 /* LookinCustomDisplayItemInfo.m */, - 140B9E97F5B5BEB056AA3A4DFFA9891B /* LookinDashboardBlueprint.h */, - A28F16D63BCA40F7DC78734CFE3A235D /* LookinDashboardBlueprint.m */, - 610E7F99F72A12BE4DBEF2C1ABF10115 /* LookinDefines.h */, - 48B9B4465675824F9DA134FE2253901E /* LookinDisplayItem.h */, - B36F0D1046FE48DF23AE7AB21CD678D3 /* LookinDisplayItem.m */, - FADEEDA2729187D0D3E4FF58DCAE4F5E /* LookinDisplayItemDetail.h */, - DA876A02B80932A6284AB2ACAB8135A6 /* LookinDisplayItemDetail.m */, - D85D1D9B369469B71D9FE49138927707 /* LookinEventHandler.h */, - 79D13E836577BF8A934C5D3D24826BD0 /* LookinEventHandler.m */, - D4EB28525886DCE45DC1BBE08F77BCDF /* LookinHierarchyFile.h */, - 1A370DF72E817BB512D9A327AC45F76B /* LookinHierarchyFile.m */, - 4E03AEFAD237B8966FCFA45B3312FEE7 /* LookinHierarchyInfo.h */, - 274EF5BCECE08045C7BB130E4D6ED8E4 /* LookinHierarchyInfo.m */, - 587808BB0F9012792B17999F0BB495C4 /* LookinIvarTrace.h */, - 8DDCF4465DE05312EF540D3B5319ADAF /* LookinIvarTrace.m */, - 47F9AD4ED221D6EEDB441FAF35299C66 /* LookinObject.h */, - 683586601FF42469125B58BBB8DF2429 /* LookinObject.m */, - A8107C05A5879CBA4916F6AD4685D772 /* LookinServer.h */, - 5EAFD6E7E63CC2D3E074450E9124493C /* LookinServerDefines.h */, - F522B03B0E818BE677108EC202F41472 /* LookinStaticAsyncUpdateTask.h */, - D08B8F280C5811F6505EA1AE7983082B /* LookinStaticAsyncUpdateTask.m */, - EAE44CAA3E728CD13C43CF7D34627D80 /* LookinTuple.h */, - 20C42B1A5A080256AC39DD86D000ACD5 /* LookinTuple.m */, - AA356D7B80B205861FCCD6FECB42DDE3 /* LookinWeakContainer.h */, - ACDFCFE3242922DD1C6F9C0911E0A56B /* LookinWeakContainer.m */, - 81A6154946F38EFB8836E3145513AAE9 /* NSArray+Lookin.h */, - 4FBCAF641C4059BE19811532C4E3A0A2 /* NSArray+Lookin.m */, - 64BE9723ECB5FEB2D176E2AB31482F57 /* NSObject+Lookin.h */, - 85937FAC419CB28614ECAA70CE249673 /* NSObject+Lookin.m */, - 9D3649A7CA35A3580F58B4481D9820AF /* NSObject+LookinServer.h */, - 18C899184976415922E8F39B277C1766 /* NSObject+LookinServer.m */, - 5CD0546B82DCACC9EF9FE9B72325B901 /* NSSet+Lookin.h */, - E8EA132DBE319D046C6BEFA0C4AB4940 /* NSSet+Lookin.m */, - CEFEE7CEBA57AF6426BA05F18F444C4E /* NSString+Lookin.h */, - 4610142EAB51ECDD8FC137942A59F231 /* NSString+Lookin.m */, - 141D1CCF79DF1688C14B5C5A4CACC6E0 /* Peertalk.h */, - 9C55508E3B8FCF1A927848A4CFAA53D0 /* UIBlurEffect+LookinServer.h */, - 62ED382544D99079829F5E202E6E84A7 /* UIBlurEffect+LookinServer.m */, - D52AD9DE99C02DF34E22E59E4A970F45 /* UIColor+LookinServer.h */, - 1998A1E21783C0F00F27637B63C88F21 /* UIColor+LookinServer.m */, - E9004778D6831458C102A879DA83C285 /* UIImage+LookinServer.h */, - 8A73FC0CD1FAD2820E17CD48DE8962BA /* UIImage+LookinServer.m */, - EBD791825D3A6F564E4BA3B31B0F2BFB /* UIImageView+LookinServer.h */, - 98AC0F8649D533FEA089C0D7C8018ABC /* UIImageView+LookinServer.m */, - 589A748D16780600B35F1BC7E7CEB243 /* UILabel+LookinServer.h */, - FA721DB25EC176AA8EF0102082B67F5A /* UILabel+LookinServer.m */, - 2701A816C2728A79FA904E6F2AC8ADEB /* UITableView+LookinServer.h */, - FF06402E5B9C49B794955B31F8067263 /* UITableView+LookinServer.m */, - 529CC0A76A69631EEA57BEAB673D76B9 /* UITextField+LookinServer.h */, - 27339E9CA8A7C6DC7F3E8B828C3D0038 /* UITextField+LookinServer.m */, - 5B099323376948696DA373792CC4983D /* UITextView+LookinServer.h */, - DE9ADECB39002B8ABC9BF590B430634B /* UITextView+LookinServer.m */, - 6EDC641564DA302B6FFCBFCFFFAC5BA7 /* UIView+LookinServer.h */, - B51F28BC73CA22D31949B1635AF8CAE1 /* UIView+LookinServer.m */, - D72EC9997A8CA1698A3020135CE8BC2E /* UIViewController+LookinServer.h */, - F69E813A3DBBC0717A1A31E2B15A0606 /* UIViewController+LookinServer.m */, - 96B0036686E5E0170AC065045503F785 /* UIVisualEffectView+LookinServer.h */, - 80E15D4BAC4857AD45CC8CDC40384F0F /* UIVisualEffectView+LookinServer.m */, + 37D1A84159EF2DA3622D5B6253D94232 /* Frameworks */, + 453238A8EA177DEF4A00D8C859B1DA27 /* Support Files */, ); - name = Core; + name = Bugly; + path = Bugly; sourceTree = ""; }; - 2CEB54752AE867745CB29DF1C930135F /* MJExtension */ = { + 119FAC4028DEE3EECB43C1CA751847B8 /* Support Files */ = { isa = PBXGroup; children = ( - B9D9760D282FEC09C3A5774993001829 /* MJExtension.h */, - C88E60EA597845949F0925B844477F63 /* MJExtensionConst.h */, - 0BF099C561E70E7E4EDAC96628F02E58 /* MJExtensionConst.m */, - 5A5823526F694533978DE523241FEDE9 /* MJFoundation.h */, - 77EBE36C10B9452DC1931AC9779D7F79 /* MJFoundation.m */, - A14004EB25D5BC99B439F5543C20E8CF /* MJProperty.h */, - 636EE1928B5BC8BC35DF1648C1BF1467 /* MJProperty.m */, - A73F313A18713E36B251C92C66806CE8 /* MJPropertyKey.h */, - F032CA5D8067C46163CF052F106C2A2D /* MJPropertyKey.m */, - C02050360407C95F57A46E3425089760 /* MJPropertyType.h */, - 8D9EC3F78C9EBFBAA2A4A0F3EE3D27AB /* MJPropertyType.m */, - 2D6996A5821977C26F6D8F02DE8CF8CD /* NSObject+MJClass.h */, - E1732483C75B01353EF9D04684480EE4 /* NSObject+MJClass.m */, - 5B6CB7D56E64BDB8EB50D17E5CEC7C8F /* NSObject+MJCoding.h */, - BE0B0E1A9A292EDE11246C6685B3FF8A /* NSObject+MJCoding.m */, - 07752F7C2A34B933346F7E8E9D95461C /* NSObject+MJKeyValue.h */, - 2C694B3CF0214D5165615510B34C3812 /* NSObject+MJKeyValue.m */, - 9F69E397FB4534DAE86CE36E624729DC /* NSObject+MJProperty.h */, - 690D12C73095E1091E4B6AB8B11A064E /* NSObject+MJProperty.m */, - DA0B23D302091DCF531627DB2F06A5BA /* NSString+MJExtension.h */, - F72D861CBD81CE860AF0AE80BBE0D883 /* NSString+MJExtension.m */, - 37B575C4446BF19B0257C4C9AB6F1FED /* Resources */, - 96DE1775CF064EDD1FBB4071547380B9 /* Support Files */, + 81157F73840FB0C9186268E78281D33C /* FLAnimatedImage.modulemap */, + E3535B97DCD1B05E059D045B16700F34 /* FLAnimatedImage-dummy.m */, + A020A834828880C972FE2E839A9DD2B4 /* FLAnimatedImage-Info.plist */, + 12142FAAA1C74097D8F4441EAD4066E1 /* FLAnimatedImage-prefix.pch */, + 87DD67829823038B4E0D04582C0CB95C /* FLAnimatedImage-umbrella.h */, + 36A28302FD0C37C0A56E64EA97977A8E /* FLAnimatedImage.debug.xcconfig */, + C06B04E0ABEA41660753A9D5F58572EE /* FLAnimatedImage.release.xcconfig */, ); - name = MJExtension; - path = MJExtension; + name = "Support Files"; + path = "../Target Support Files/FLAnimatedImage"; sourceTree = ""; }; - 3558A467522318FD82C582513E547957 /* Code */ = { + 17AEA0C7D131B1C990249C70BBD62CDF /* Resources */ = { isa = PBXGroup; children = ( - 1EFF087B37DC1EFC63580C904061AC41 /* LSTPopView.h */, - 80A4C5F30966DCCAF12719455CE5BA94 /* LSTPopView.m */, - 76DC37DEAFA5D12B1D7F9040EFB03DA5 /* LSTPopViewProtocol.h */, - 6C39336AE39057C3014C954C694C278F /* UIView+LSTPV.h */, - 0CE9728E85B8432ED072CD0DC7926F20 /* UIView+LSTPV.m */, + 1C37C8F103EDECD09126133069B80115 /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + 1CD312D2E666224315BB46AF04231D5D /* Products */ = { + isa = PBXGroup; + children = ( + A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */, + 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */, + FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */, + 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */, + C3A46B03C308EEEB11F2A62BA5D2E8BE /* JXCategoryView */, + BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */, + 2F4A1CCB21DB7EA5A2ACEB11E374FBCA /* JXPagingView */, + E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */, + 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */, + 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */, + DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */, + 1FFED36A657123030ABB700256D73F15 /* Masonry */, + 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */, + 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */, + 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */, + E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */, + 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */, + 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */, + DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */, + B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, + CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */, + ); + name = Products; + sourceTree = ""; + }; + 1F02F176B54A47E4D2768486D2B0A3DE /* Resources */ = { + isa = PBXGroup; + children = ( + 75A91D4BB6118442A9B7E27598AE7C99 /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + 24E6D9CD604967D0A1CF25370DFD7865 /* Code */ = { + isa = PBXGroup; + children = ( + BF40FB09CDD92326BB3177C14DF172AD /* LSTPopView.h */, + 9B2F1B06BC651834D7B3EA1FBC96E466 /* LSTPopView.m */, + 5F35F0E5B188FD04E8E889503DEA5841 /* LSTPopViewProtocol.h */, + A5262AA56B4C8511CBA390D4808E37F2 /* UIView+LSTPV.h */, + A4D8DE877E59C1B5596F10D0213ADC5D /* UIView+LSTPV.m */, ); name = Code; sourceTree = ""; }; - 3781A0D3F34F1F7E995238764CEAD97B /* MJRefresh */ = { + 2DD7CD81F0AED96859289DDC12B0E9CF /* Support Files */ = { isa = PBXGroup; children = ( - 710E437843F202473C82F6B19F6E51D8 /* MJRefresh.h */, - A20F0D257E58B1A870FF109778CD4B25 /* MJRefreshAutoFooter.h */, - FFF8ADD6067D862411385E3BFF71A8DA /* MJRefreshAutoFooter.m */, - 741395EF99DABB64E0E04129DB222FD2 /* MJRefreshAutoGifFooter.h */, - 55CB47F746B1E99E4F1E11247844A401 /* MJRefreshAutoGifFooter.m */, - 8CBF9C8DF911E4E9B2C6A4628B5BC93B /* MJRefreshAutoNormalFooter.h */, - 02B660DF025FBF070A8248624E25ED79 /* MJRefreshAutoNormalFooter.m */, - 3C53F73CEF747A7A78B5CACAF16E5FCE /* MJRefreshAutoStateFooter.h */, - EA8BD469A978049C96BA8554A1F6D2D6 /* MJRefreshAutoStateFooter.m */, - 2288D70D4609F065E784F156F613AB62 /* MJRefreshBackFooter.h */, - AFFA5747833468A5901D8AA31E822627 /* MJRefreshBackFooter.m */, - F47E18ADFFC71918AE70F42C18C32A89 /* MJRefreshBackGifFooter.h */, - AA75F2BBB1F8188D75855FF34D8A7AE3 /* MJRefreshBackGifFooter.m */, - C59475012E53558600AFA4F7685E8F9E /* MJRefreshBackNormalFooter.h */, - E49B94A4D72DB4B81F4E8CDC098BC388 /* MJRefreshBackNormalFooter.m */, - BE11DDB27A20A87C02AE0F91342FA9E9 /* MJRefreshBackStateFooter.h */, - 0AE63A9BC3D50E34C84263A87F782ACA /* MJRefreshBackStateFooter.m */, - 758F54E0A75ADEC48F8924BFE16AEB3B /* MJRefreshComponent.h */, - 5A4E8FC1A8280B0B2C51BA4C08DA78B3 /* MJRefreshComponent.m */, - 62C98AF2DC89D542692AC64CD9F01818 /* MJRefreshConfig.h */, - EF96CCDE1944CF562A65CA60FCBAD8CC /* MJRefreshConfig.m */, - AE979EFDEE516846488B7EE0D6F7EED8 /* MJRefreshConst.h */, - E114D2723BCB64ADA9A307B95F5DE640 /* MJRefreshConst.m */, - A75653F7F6754FE7D26DA5C94A641DE8 /* MJRefreshFooter.h */, - 65EE0AA02CCB84E9D0C6987A57196DE0 /* MJRefreshFooter.m */, - 81E56B3079089075E57FE56264F80F1E /* MJRefreshGifHeader.h */, - 820CCFAA740875554C05F59A0958E53B /* MJRefreshGifHeader.m */, - 29AAA748545CCD9E566E6F15C52A44CB /* MJRefreshHeader.h */, - 6B6DBCFC84C1E1F5D3AF983520203544 /* MJRefreshHeader.m */, - 8B25FB3699225E9D90B118E0F624383B /* MJRefreshNormalHeader.h */, - A4685A3F7A42EE78A5B66190A100B3C2 /* MJRefreshNormalHeader.m */, - 4082EEAE9AC1F17D236D83E99200EA70 /* MJRefreshNormalTrailer.h */, - CF5E2B29305178430BD510351FDD6C99 /* MJRefreshNormalTrailer.m */, - 5909B734EE0396CAA42A403A6DCD4D27 /* MJRefreshStateHeader.h */, - B4E40A4D926E9D870172CB05C27151FC /* MJRefreshStateHeader.m */, - F83A870FD420501FBBA293B2D6A26AD0 /* MJRefreshStateTrailer.h */, - E5BBE1866B6FDB7D5307A6075BE5F347 /* MJRefreshStateTrailer.m */, - F8A410A1A4222EF3876A4FA11492EF05 /* MJRefreshTrailer.h */, - 53CC6A09F682C54055F6035F0D6E29FA /* MJRefreshTrailer.m */, - 77EC014BA0072D21D1B86EE5C78C59EA /* NSBundle+MJRefresh.h */, - AB93341F4852834DE8BA29DAB3E69371 /* NSBundle+MJRefresh.m */, - 2A350736EF0F4C89A3E43AA0BED8AC36 /* UICollectionViewLayout+MJRefresh.h */, - C45F5D95A727E9121E38DFEFADA82094 /* UICollectionViewLayout+MJRefresh.m */, - 8EE2F8245BCEBA174A7A8891FBE03ECB /* UIScrollView+MJExtension.h */, - E02C6844FCB15EFA12DE7936E2D89768 /* UIScrollView+MJExtension.m */, - 9C92B663B045144AB6926F9C7A3DA791 /* UIScrollView+MJRefresh.h */, - B90789CA4A099321E01CFF8CB566B5F3 /* UIScrollView+MJRefresh.m */, - FC070F9BCE8A8D0A21448F82A7DD5F5A /* UIView+MJExtension.h */, - E0B73DB737A3D2CAAA90EA20B4BB23B3 /* UIView+MJExtension.m */, - F714764FE1C9470C450626D766B18CA6 /* Resources */, - BE86B84F4BC9982281F5D2A106314CE2 /* Support Files */, + DB866CD01C61417D45924946690C442B /* HWPanModal.modulemap */, + EE80578D9DB416BD158323BE4D5C76F4 /* HWPanModal-dummy.m */, + 862F24C5813636BD088499E062B47C78 /* HWPanModal-Info.plist */, + E5592C4FA7C5389CD5E3CCE2F804F447 /* HWPanModal-prefix.pch */, + 83FBF1722FEB1FC5E339C64BC2275D81 /* HWPanModal-umbrella.h */, + C6B15D5B29642260AB882050F51A8AE5 /* HWPanModal.debug.xcconfig */, + CA18A067DCACA93C5FD4591EBC943217 /* HWPanModal.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/HWPanModal"; + sourceTree = ""; + }; + 2E6A5961188FF65067773B356D98FC06 /* JXCategoryView */ = { + isa = PBXGroup; + children = ( + 1A08646B05BD58116699CDFD07CA2977 /* JXCategoryBaseCell.h */, + 0B08ADE1A4FFE94FDBBE13FE7CC2C1E5 /* JXCategoryBaseCell.m */, + 65F97EE1352D7FC02982C03FB1D0FBEB /* JXCategoryBaseCellModel.h */, + 51E7542749774862B8EB9AAB7010F1AA /* JXCategoryBaseCellModel.m */, + 173BFB44F7DA63CD3AF5A497970B8203 /* JXCategoryBaseView.h */, + 72F67C5C9E4A93AFE6FF113487609183 /* JXCategoryBaseView.m */, + 6999AA4E4990D39E732B0FABF0CBB3CA /* JXCategoryCollectionView.h */, + D9DA60EBF6A57B0D3224E3ACD3E51971 /* JXCategoryCollectionView.m */, + 98D2F9331639FC6D12A4091DD5F47C96 /* JXCategoryDotCell.h */, + BEB32B7BEE20F8A74F80D03511F02260 /* JXCategoryDotCell.m */, + ABD4819FE00A1A954ABDDF0893C72587 /* JXCategoryDotCellModel.h */, + EF3A8DFB97BB54D169F6E8AC578F498C /* JXCategoryDotCellModel.m */, + 50BCF4AA1A75105CC04AA446B0DB9B40 /* JXCategoryDotView.h */, + EED2C7FD129EA6F065286A12502B79B7 /* JXCategoryDotView.m */, + 2E96574DDD94EB958E64B0AD7C7B20F2 /* JXCategoryFactory.h */, + 9E9F380E4292210FA99A8F5918C667C3 /* JXCategoryFactory.m */, + 0E2875C79F8461486A975B000C1ABDE3 /* JXCategoryImageCell.h */, + B7498A05A9D7A9FEE19E027CABE6B9DD /* JXCategoryImageCell.m */, + D4C17E87C77E85F28C83D98FAB4AB7F4 /* JXCategoryImageCellModel.h */, + EC57F0405D7809ECABB52C0C041C6F2F /* JXCategoryImageCellModel.m */, + FAC311E0F10AA1170D905B6C90AE765F /* JXCategoryImageView.h */, + 7778E8300903006F261959B2010A06D2 /* JXCategoryImageView.m */, + FEF91306ED7817FCE47628D37A94BF1B /* JXCategoryIndicatorBackgroundView.h */, + 74444E41B3920B9EB4DA66DCD2975612 /* JXCategoryIndicatorBackgroundView.m */, + 8A0C74EF09B54680C98CCBF1F2BD297A /* JXCategoryIndicatorBallView.h */, + 7A60D0CF9AE4E6671E2A6BBECEE57E4D /* JXCategoryIndicatorBallView.m */, + BF9910B7B2FF86AF620A45955A338072 /* JXCategoryIndicatorCell.h */, + CF64931699D303A3C9AE1FFC4682E257 /* JXCategoryIndicatorCell.m */, + 3B3FF5D113848A5A9AC244C579FF1441 /* JXCategoryIndicatorCellModel.h */, + 3875C6FE72ED2368D3701E9901F883B7 /* JXCategoryIndicatorCellModel.m */, + 4B0139E3193D3960F1A46D73064CA34A /* JXCategoryIndicatorComponentView.h */, + D4E6C9FAE7DD5348F64FBD66AA03DA5B /* JXCategoryIndicatorComponentView.m */, + 898DE7614EA3416744425477D130D9C7 /* JXCategoryIndicatorDotLineView.h */, + EC4AC84F5855EC104608477917DF3145 /* JXCategoryIndicatorDotLineView.m */, + D5D75E71D2ABCC5D3DDCC662DACBFAED /* JXCategoryIndicatorImageView.h */, + A2C056F5D1231FA94F92AA3712D545C2 /* JXCategoryIndicatorImageView.m */, + 62CDFF5EFD0FE66B2DEECF2E904EBEC1 /* JXCategoryIndicatorLineView.h */, + 1711B81346B8ED1944B5A8A478A4CF3F /* JXCategoryIndicatorLineView.m */, + 4E5F2B584A65C9246E3E8A7A856FF44D /* JXCategoryIndicatorParamsModel.h */, + AAFEF3383472BCA83D71A7DAAC5522CC /* JXCategoryIndicatorParamsModel.m */, + D6F5B88F49EB151A388B58319A67E2A1 /* JXCategoryIndicatorProtocol.h */, + FD5B9F06C28C32AA434A5A2FFACDF89A /* JXCategoryIndicatorRainbowLineView.h */, + CC8BAAD188938B05A876ECFEAA39F2E6 /* JXCategoryIndicatorRainbowLineView.m */, + 3381742E54E03DCDB9DD644DF65C4689 /* JXCategoryIndicatorTriangleView.h */, + 1E17CF24E4278604BB723E30B9997957 /* JXCategoryIndicatorTriangleView.m */, + 658F3554D0CFB5BC5E252408F8CD5317 /* JXCategoryIndicatorView.h */, + FD4AB223CCA1E3159EE2C805605A0657 /* JXCategoryIndicatorView.m */, + 7C36F83AF55E2873F497777F59071760 /* JXCategoryListContainerRTLCell.h */, + 6C70C9B1AD0F41A4C5E9026F5AF7F65F /* JXCategoryListContainerRTLCell.m */, + E25EECD78C776DB2FDB519D3AA7CB0BD /* JXCategoryListContainerView.h */, + 29EA07EA8EF3C7818A9505A783C4FF02 /* JXCategoryListContainerView.m */, + 874DD2FA3B20B6BCBCBEE03BEEBE1281 /* JXCategoryNumberCell.h */, + 1B8FD707DDEC1F98F5C5FE19647F0592 /* JXCategoryNumberCell.m */, + C74AFAA0D49E0563D9312CEA70CCF8B3 /* JXCategoryNumberCellModel.h */, + F15C652E7FDB0BE287A551718B00B6A8 /* JXCategoryNumberCellModel.m */, + C6B6ABC9B259D86AA3C2451E682BE701 /* JXCategoryNumberView.h */, + 44CB5B4F2C2351C8F32C675C94C2EAC0 /* JXCategoryNumberView.m */, + 00B67A73E7EE0522188FAE4145324D19 /* JXCategoryTitleCell.h */, + 057CD48F09C7A5468D77A9691A639803 /* JXCategoryTitleCell.m */, + 6C34880EFF82114AECCB354A57C47E7C /* JXCategoryTitleCellModel.h */, + 3545C9AC3AD500CD4E48A3E2630C521B /* JXCategoryTitleCellModel.m */, + 639A45B880AEBFE1C16D4A9F3AA3D49C /* JXCategoryTitleImageCell.h */, + D4AA530BA675D0E78BDD9644338B48A3 /* JXCategoryTitleImageCell.m */, + DDAA59B8AF34E0C4765874AEE69571F7 /* JXCategoryTitleImageCellModel.h */, + 04AE87BD26EBAF13B558201544C0E822 /* JXCategoryTitleImageCellModel.m */, + 7FBDD10C8770914A56998AB2021E385B /* JXCategoryTitleImageView.h */, + 8618BF2AA2A260801FDF48131074A906 /* JXCategoryTitleImageView.m */, + 54CBDA1EBC8A896E6DB3A15D5332DB1C /* JXCategoryTitleVerticalZoomCell.h */, + 6D390F38F6574F6D973E2C4A52D004A1 /* JXCategoryTitleVerticalZoomCell.m */, + 60A68C8A5D160FE046F60DF6C446111D /* JXCategoryTitleVerticalZoomCellModel.h */, + 6549E81907E05317DA862F329B2D4DDC /* JXCategoryTitleVerticalZoomCellModel.m */, + 059C3C014AA92686FDCE895211A108CE /* JXCategoryTitleVerticalZoomView.h */, + 7B4337532A4911F88E85BB14DE78FBB7 /* JXCategoryTitleVerticalZoomView.m */, + E42238B57F88C70438DE479E184E4352 /* JXCategoryTitleView.h */, + 202D2DE7A9C3209A4BF4D407CF1AB06A /* JXCategoryTitleView.m */, + DACFBFCC588CFB73AE8A6DB153DEA42F /* JXCategoryView.h */, + E0A4E94FB3CF9B468E72117C85C2E773 /* JXCategoryViewAnimator.h */, + B46184374613AB561CB67E0F1EF14DD8 /* JXCategoryViewAnimator.m */, + C617C2D863C4AC28AF0370EDC02120A9 /* JXCategoryViewDefines.h */, + 0E752820782AF474A360AC65F5EFA79D /* RTLManager.h */, + E5EA191D7CFA74A3FEAFB27130A3FEC7 /* RTLManager.m */, + F904F7CF43AB518217FB1AB9236020D4 /* UIColor+JXAdd.h */, + 137AD002D5B6FA89785842F03034A5B1 /* UIColor+JXAdd.m */, + 1F02F176B54A47E4D2768486D2B0A3DE /* Resources */, + C79383FD5154699A5CFAA9706E39AF6C /* Support Files */, + ); + name = JXCategoryView; + path = JXCategoryView; + sourceTree = ""; + }; + 36091ADDE4C749A4350E3A117CAA7398 /* MJRefresh */ = { + isa = PBXGroup; + children = ( + 1325B9E2F97C77F3E9191898C4045E7E /* MJRefresh.h */, + A96A60100BE610809D6E0C7741CF992C /* MJRefreshAutoFooter.h */, + BE6EFE785E6216D9C7C1D6B7A4EEA5EA /* MJRefreshAutoFooter.m */, + 3FAF0BE8296496D28F5C6AA6974B39E8 /* MJRefreshAutoGifFooter.h */, + 7D7FC4156E6779F82E6B8036FA7A1307 /* MJRefreshAutoGifFooter.m */, + DEDB698B7BC2AF63B53722CF1D2D8E57 /* MJRefreshAutoNormalFooter.h */, + 6D2CC2D1F9AB2D4CFC68B6327C2793C5 /* MJRefreshAutoNormalFooter.m */, + 02E945EEF3757BDF2B47E65C51C4D6D6 /* MJRefreshAutoStateFooter.h */, + 401F0F0AAEEDDA40C2D25DB817C9B5C6 /* MJRefreshAutoStateFooter.m */, + 17D9582F158C09F75D84ECE893151E91 /* MJRefreshBackFooter.h */, + 0A5E3A2C0C49EB165C854762A832D48A /* MJRefreshBackFooter.m */, + C746AE302AD12A4D0F6E287CACA690C6 /* MJRefreshBackGifFooter.h */, + 3A8EB0FE66AD3E48C10CDD802521D146 /* MJRefreshBackGifFooter.m */, + 3E42525F0D8B91406B2C7015E3E52B29 /* MJRefreshBackNormalFooter.h */, + C55730A1966B5DF338B0554ACC4B0B16 /* MJRefreshBackNormalFooter.m */, + 15D9AA9876374637F32E00BE13AA1880 /* MJRefreshBackStateFooter.h */, + DD1439668AF92748DEFAD18BF418CE55 /* MJRefreshBackStateFooter.m */, + 7C0E4900E01624D5262A1ED1DF2F6D35 /* MJRefreshComponent.h */, + 4F81509596D525489E9AA55CE4C0B4C1 /* MJRefreshComponent.m */, + E9598F4E504AE0DA98A0B2DC305F1C83 /* MJRefreshConfig.h */, + 42EF67A85226C8C14C983E81C71F392D /* MJRefreshConfig.m */, + 55A76B2979ED12495977612719BE47A2 /* MJRefreshConst.h */, + 7032D81BB8B12F48732F1EBEA7A020D7 /* MJRefreshConst.m */, + D40BB639047461966566FFED666B3ACF /* MJRefreshFooter.h */, + 2CE7B5832F4AC9648A3CEB7DD03473E4 /* MJRefreshFooter.m */, + C4B0E298E792EE24705C7E8457669228 /* MJRefreshGifHeader.h */, + A1E84842FBF29954156976CB6DD0F275 /* MJRefreshGifHeader.m */, + 195B648C25562B52954B1E7C1D8964C3 /* MJRefreshHeader.h */, + 1A2B6D97C6E9B5572232985B40BDA6C4 /* MJRefreshHeader.m */, + 367DF77D41DE010B9FA86137928C7C44 /* MJRefreshNormalHeader.h */, + CAD02815855109CE0DDD83222F913EF8 /* MJRefreshNormalHeader.m */, + 342267EEBD80FDDCEAA647EFBE0EB6BD /* MJRefreshNormalTrailer.h */, + DD3BFE6DB15E8FF64920F720EA31EEDE /* MJRefreshNormalTrailer.m */, + 13B6B935F583A1ED5234B7E3DF044521 /* MJRefreshStateHeader.h */, + 119F71892BB85FDC29B99AE148231087 /* MJRefreshStateHeader.m */, + 846CA0BB8166DB9008D71F59F4A301EA /* MJRefreshStateTrailer.h */, + B26771C31428D52F8DFB859AE1AC3503 /* MJRefreshStateTrailer.m */, + 6A91961A508CA556983A4A3F57FB3133 /* MJRefreshTrailer.h */, + 5128E7CF3F35BE25186575F63661EEF6 /* MJRefreshTrailer.m */, + 10B904BAC9CC3925EE6B4E2130826A6F /* NSBundle+MJRefresh.h */, + 824A8DE6460C98A565B1EDD8B4432F50 /* NSBundle+MJRefresh.m */, + F0FF9B39CB74F30B336CF7D4085E2AE0 /* UICollectionViewLayout+MJRefresh.h */, + 99CBD01AD35AF793B343AC0ACF2CF164 /* UICollectionViewLayout+MJRefresh.m */, + 23648E3B16301958DD4429C021EB223C /* UIScrollView+MJExtension.h */, + 433A3E0D94E768912FBBE36F7C961678 /* UIScrollView+MJExtension.m */, + 241FDB4FE9E3CE45C4854F0FEB6F8BAF /* UIScrollView+MJRefresh.h */, + 9AFDFE95B53BDA0F282212CF3E9B940F /* UIScrollView+MJRefresh.m */, + 47F474CA83A8EC338136568BDBFF8343 /* UIView+MJExtension.h */, + 239F725CB21A7ABF0EDB35FC92732A5C /* UIView+MJExtension.m */, + 4C55C9351E9FED232300EF60CC442288 /* Resources */, + 6095F5BA99A7BC3EDE17ABB647B490AD /* Support Files */, ); name = MJRefresh; path = MJRefresh; sourceTree = ""; }; - 37B575C4446BF19B0257C4C9AB6F1FED /* Resources */ = { + 37D1A84159EF2DA3622D5B6253D94232 /* Frameworks */ = { isa = PBXGroup; children = ( - B647311E2487029EA920B923258697D2 /* PrivacyInfo.xcprivacy */, + AED1D348255F77CE4BB2B0BB61E22F08 /* Bugly.framework */, ); - name = Resources; - sourceTree = ""; - }; - 3B43DD955EE30DAEC0EAAF7C261E2B86 /* HWPanModal */ = { - isa = PBXGroup; - children = ( - 3583F45BB2A021FDC55DB56C5C606CB1 /* HWBackgroundConfig.h */, - 11A5C3D2E3080F2A5EECFB7F1FC6C319 /* HWBackgroundConfig.m */, - E164F75EDECDE7B82945FA657EA41708 /* HWDimmedView.h */, - 10D1C021B7050EF6841A364EE9A0A570 /* HWDimmedView.m */, - FF47B51E8368756DB1E42F174494224F /* HWPageSheetPresentingAnimation.h */, - 25AB23A95A2135A43EF14C148E707F7A /* HWPageSheetPresentingAnimation.m */, - 802FB1A32618485AA28D17584662FBAF /* HWPanContainerView.h */, - BFC6D8F98A0A99B4F62553DD6B2DE362 /* HWPanContainerView.m */, - 03CB4C12A5B494B4ECDEC92BC32E7490 /* HWPanIndicatorView.h */, - 88E8C1FFE2A2D6CB9741EF2354A3B30E /* HWPanIndicatorView.m */, - 53EC2576F6D68ECA3E1920A896AE4E4F /* HWPanModal.h */, - CF585038948BE5BD9FDE25D090C77A52 /* HWPanModalAnimator.h */, - 7AF90BBEF3A681BE8314F80257F1182C /* HWPanModalAnimator.m */, - F5D51DADE6BB30185CA5DE0A026B674A /* HWPanModalContainerView.h */, - 5030EF25D193EB41CCA5DF24FE48C1DF /* HWPanModalContainerView.m */, - 0E5F47A6ED542F1D0EAA4DD94091B61C /* HWPanModalContentView.h */, - DD391D4FA7F38A97455407F9DA5DA8F0 /* HWPanModalContentView.m */, - C49E916A72175489DFFC49A15E87403D /* HWPanModalHeight.h */, - BF679003FB79C12E8A8221EC19044EC3 /* HWPanModalIndicatorProtocol.h */, - 10A8507648AC9DE21CFA0929B1ED0404 /* HWPanModalInteractiveAnimator.h */, - 31F540B1617ECFBBE3A0FB1043BFB861 /* HWPanModalInteractiveAnimator.m */, - DE26DBA97E2F7B5B4805533E6C020C30 /* HWPanModalPanGestureDelegate.h */, - 4A4F0899D1AD5593F9373F8225D28188 /* HWPanModalPresentable.h */, - 56A664809217C1D10A7EC649E972D6AB /* HWPanModalPresentableHandler.h */, - B876DE6F099D679F03040B8EF24E5C82 /* HWPanModalPresentableHandler.m */, - 93A142314C8E6BF405461AFD41E16D08 /* HWPanModalPresentationAnimator.h */, - 0004D14E99E5CD92EA09732F82694FF5 /* HWPanModalPresentationAnimator.m */, - 3C880A37C8BD02476827078E98C08810 /* HWPanModalPresentationController.h */, - C7586CB0CDC6CAF19F6A64083B6C8C0F /* HWPanModalPresentationController.m */, - 165D33815F330DB72870682C820A790B /* HWPanModalPresentationDelegate.h */, - 2D1699A762F8D719D2565E3B0B508554 /* HWPanModalPresentationDelegate.m */, - 70ABAEE0904B02D3CE9045A0A088E18F /* HWPanModalPresentationUpdateProtocol.h */, - 093706FD3573E105CD2368D496C2DF76 /* HWPanModalPresenterProtocol.h */, - 57AA794BD50692239409E574C7FD0846 /* HWPanModalShadow.h */, - 883D06418312C016F973700D20558656 /* HWPanModalShadow.m */, - FCCAFE3B7FF5BB1E728A5F5834F651D8 /* HWPresentingVCAnimatedTransitioning.h */, - D9879EAF15EB971D024F6726C4E07562 /* HWShoppingCartPresentingAnimation.h */, - 8927ADAF60DF7D3D91B390580BD36295 /* HWShoppingCartPresentingAnimation.m */, - 8D7D197A108D97B04C3BA390CD4499D8 /* HWVisualEffectView.h */, - C15066DB017692FFB93D6BF3C34128D3 /* HWVisualEffectView.m */, - AF32E35E8F4552F6AF08F140AD085FE4 /* KeyValueObserver.h */, - 05E1785189AB18B6B47ECD584144AA0F /* KeyValueObserver.m */, - 2B6E38C872CB24F91AFE94F3DF5EFCC2 /* UIScrollView+Helper.h */, - 66C0C4029B17B8E45FF492CEEBD834E3 /* UIScrollView+Helper.m */, - C387114CB39CEE512E07F38E4439D4D8 /* UIView+HW_Frame.h */, - 109CFCE9774385E51695E82E530412B8 /* UIView+HW_Frame.m */, - 5F369D00927FCA59283AE71B174D2D1D /* UIViewController+LayoutHelper.h */, - 0041D895443AAAA3D1BCD4056EBB4F37 /* UIViewController+LayoutHelper.m */, - 4816EA2348DC71F3330B4D2743758FEF /* UIViewController+PanModalDefault.h */, - 0DDEE4190CA21B03ED83225BEC5FAC7D /* UIViewController+PanModalDefault.m */, - 995AA67533265367D116C78944065262 /* UIViewController+PanModalPresenter.h */, - D3576B2FF83DF230E75AA05AB2DB6B4D /* UIViewController+PanModalPresenter.m */, - A3F7C5007915361DF90A13BBA8CD3EFF /* UIViewController+Presentation.h */, - 1D36CFCB34B6B2FF494AB70EC5024CFA /* UIViewController+Presentation.m */, - AABD58CAE3AC5D0D8560E01BA94341F0 /* Support Files */, - ); - name = HWPanModal; - path = HWPanModal; + name = Frameworks; sourceTree = ""; }; 4098ED899C8DF8E013F9F260ECFAA236 /* Pods-keyBoard */ = { @@ -1869,19 +2051,201 @@ path = "Target Support Files/Pods-keyBoard"; sourceTree = ""; }; - 463425673C27CDDB3B6077DA1769E98C /* Support Files */ = { + 4121134849DA04BCD3BB12CF65EEF182 /* Core */ = { isa = PBXGroup; children = ( - F24F9CCCB353131934224305105F7E49 /* FLAnimatedImage.modulemap */, - DCB59AEF88556057BC2FD85427D2EFE7 /* FLAnimatedImage-dummy.m */, - A8CED6128E73E0F84131EFEF369AFB64 /* FLAnimatedImage-Info.plist */, - 1E115C24A1085A18B17DA1956923425C /* FLAnimatedImage-prefix.pch */, - 56083A8D73CF98D49960B5783A36797F /* FLAnimatedImage-umbrella.h */, - C8974089710AB7F8A65D77241AA70557 /* FLAnimatedImage.debug.xcconfig */, - DDD6B4DA641B2F94F2D426AC2D4A5E7E /* FLAnimatedImage.release.xcconfig */, + 32CCCC7F014C0FE2CA551D9AF48EEF89 /* NSBezierPath+SDRoundedCorners.h */, + C5A25B7B454717DB3993591B5E8B612E /* NSBezierPath+SDRoundedCorners.m */, + 0A7095DB3527991440F374C9F9DB5050 /* NSButton+WebCache.h */, + 4A970B89D7ECEFF994ACF22A5493E001 /* NSButton+WebCache.m */, + 4561971E2CF7A1F1B00AC6091B3448DE /* NSData+ImageContentType.h */, + 2132EF8C73164960BCAFD57CF9C7A53F /* NSData+ImageContentType.m */, + F55015AACD21AF6274741BBDAC6148E2 /* NSImage+Compatibility.h */, + 102C92CE02746A6588B44F852322AB39 /* NSImage+Compatibility.m */, + 167D63F7114C5D501803C08C617324CA /* SDAnimatedImage.h */, + 5B609960A71B1FE2AB814B679D9E7609 /* SDAnimatedImage.m */, + 2BEAAFCDD4CD23AABA4CD7359454B646 /* SDAnimatedImagePlayer.h */, + 8532F3DD3C373C14A106D14F67A3C301 /* SDAnimatedImagePlayer.m */, + 807026E96F55910EB566C0F4535DF3EB /* SDAnimatedImageRep.h */, + FBF4C669CA968A448B7E1DD3A141A41C /* SDAnimatedImageRep.m */, + BEE43BCA7C1A101BFC7A5856F8793387 /* SDAnimatedImageView.h */, + 635235003B3FEDB8B457A8FFF46C69E3 /* SDAnimatedImageView.m */, + 13D84A2503CDD440D0A0063FF97A2EB4 /* SDAnimatedImageView+WebCache.h */, + D547696F5943987BC61D389F16B201E8 /* SDAnimatedImageView+WebCache.m */, + C0ECED1A3FCBB93D40B1BFFF5AE2F27D /* SDAssociatedObject.h */, + 9421B0E41FC583CAD966F98C60445BAB /* SDAssociatedObject.m */, + 9820AAA1C732351179414BB46300A1B7 /* SDAsyncBlockOperation.h */, + 5E8666C77464C3B683AB0F8D4DEA6951 /* SDAsyncBlockOperation.m */, + 491DFACE04BF80FD0F37C4ECFE908522 /* SDCallbackQueue.h */, + 7E8762E22AB8C87B76E6D94D44665136 /* SDCallbackQueue.m */, + F246E4D58E65C83AB3493871F692FC9C /* SDDeviceHelper.h */, + 4CF942497E18FEE75DD2CDC6779A790A /* SDDeviceHelper.m */, + CAD21419CFC8A372DB941E7983ADDD9D /* SDDiskCache.h */, + 45505B1DFA133379CEE6DD6D8148013D /* SDDiskCache.m */, + A5C74D4E7CA539C956587A3615702D24 /* SDDisplayLink.h */, + 61A0FA60F5E41A8B04C442FE582DA298 /* SDDisplayLink.m */, + 3201B19667C12026E1C92EA1DD973BB7 /* SDFileAttributeHelper.h */, + 41B90877BBAECA72C2F67A5E39E1E87A /* SDFileAttributeHelper.m */, + 3653F678D1C9DBE34F6262A65263C642 /* SDGraphicsImageRenderer.h */, + FC52B8F222678A49BF1BA307CD9A7777 /* SDGraphicsImageRenderer.m */, + FB334521D7F08199DE839AB68A37105C /* SDImageAPNGCoder.h */, + 92B0AD9AA2CE09EEB0EF8C040E103B97 /* SDImageAPNGCoder.m */, + D3543E70B7F1B6F0CB25AB731CA0DFBE /* SDImageAssetManager.h */, + 9F94B604866DB37515D32D88635EFEE2 /* SDImageAssetManager.m */, + DC870A534B766E7815C7744EE9E7E3E1 /* SDImageAWebPCoder.h */, + 2E5DB75D5C223CDC5703FA115447A148 /* SDImageAWebPCoder.m */, + BCAF03C4FF87945F86C061039CB2443F /* SDImageCache.h */, + 11EEC0D59FA31FAAD209A208EB338575 /* SDImageCache.m */, + 94DB79C6893EAE9D1A7D3559B485BCC5 /* SDImageCacheConfig.h */, + AEB0E8A16F89DAA71F5718EDBF3E2A83 /* SDImageCacheConfig.m */, + 7A8A3FC6E6388A4864974A3D3B9C02F6 /* SDImageCacheDefine.h */, + 6DB3789FF1142F1817E52B4F6C9BA1B6 /* SDImageCacheDefine.m */, + D744043462D81E4ED2BB1ECAE8E9F696 /* SDImageCachesManager.h */, + 25A5CCE05BC1D97AB685203E1D41C4B0 /* SDImageCachesManager.m */, + 9DC4AC8D166AB2BD8B557BFA9FA9872C /* SDImageCachesManagerOperation.h */, + E6B846D03C97210EDD55850D04A8F27A /* SDImageCachesManagerOperation.m */, + 471A02E298FA363A6051045C83C8BE05 /* SDImageCoder.h */, + 9D7E450C43D308EE4C1B879D0B60A4BF /* SDImageCoder.m */, + C7E392E347A9555F1447E0FBB3E777E5 /* SDImageCoderHelper.h */, + BBC5ED786070BB7777881EF2B55FF369 /* SDImageCoderHelper.m */, + 83B5308ADA544D7E6FCE86EFD21D5CBB /* SDImageCodersManager.h */, + 3D1EF86D80B6333688465CCC41BA33F7 /* SDImageCodersManager.m */, + 6C3B1F50C3A3E82B67AE98F2BAAD5C3C /* SDImageFrame.h */, + EAEC3302C39E58E44D49A12FA8699A84 /* SDImageFrame.m */, + F86F79271CDA27370B63C4004FB83EF7 /* SDImageFramePool.h */, + 8E8C0DD47533304FD7479FB5A47A4E3B /* SDImageFramePool.m */, + 911E6F5D1D17453D35BE3FA4A9086972 /* SDImageGIFCoder.h */, + CE77C4D90418C342647C55D75A5C1AE8 /* SDImageGIFCoder.m */, + B5EF3518EEE6DB69526EE34FF9D58DFD /* SDImageGraphics.h */, + 2504FFB7834ECCFC15329B28F3C9A331 /* SDImageGraphics.m */, + 0F050843F5053FDD98D8FE72C1E28A5F /* SDImageHEICCoder.h */, + 3125F7D904D9F1F20C7699EF5186B19F /* SDImageHEICCoder.m */, + 390647665D633FF246584D1E27162F0D /* SDImageIOAnimatedCoder.h */, + 3504487D6CA5438A7FB00D149564DDFC /* SDImageIOAnimatedCoder.m */, + 06077AACB035D8452C9F730B2E1F00DF /* SDImageIOAnimatedCoderInternal.h */, + 31894250FE81D510485178A2F984B715 /* SDImageIOCoder.h */, + D2F471FC57FF6DD1F698134B35D27C95 /* SDImageIOCoder.m */, + 9CE19B5D21ECCFC76311F186D2B3F651 /* SDImageLoader.h */, + FA395F2DBB98D70F218443EA65E0D442 /* SDImageLoader.m */, + E889A3C02C6D9C2F5501AF30759E916C /* SDImageLoadersManager.h */, + B3F518DFA534AD602991065542FADB29 /* SDImageLoadersManager.m */, + 61080F57DD92AB8ABC811791B547090C /* SDImageTransformer.h */, + AC558AE5F168E24878BD4ACF3EE1274A /* SDImageTransformer.m */, + 3422D3CB84719A98D68CD9DE2857E694 /* SDInternalMacros.h */, + 123714F0F2335CBE901933785D4D26FB /* SDInternalMacros.m */, + 82BDCD67CE12306B5AF6A9E3DB88E0DA /* SDMemoryCache.h */, + B7AD3647BEEBE4C691B28F5746D51E7D /* SDMemoryCache.m */, + 5A6A16B78780399804F5DD15816ADE2B /* SDmetamacros.h */, + 45880427FEDFE00B81EA46DB6F5AFD52 /* SDWeakProxy.h */, + C5A9A86ABA54140CD0A5B6CD44C79740 /* SDWeakProxy.m */, + BB4D65769822C57911F4A84B9F8FADFA /* SDWebImage.h */, + C205DB74EDBD3C80FB36923BD2255DBB /* SDWebImageCacheKeyFilter.h */, + 34C31D8DFEC22296E69E97BC5CEAE316 /* SDWebImageCacheKeyFilter.m */, + E95C47EFA2CADA467B5A46831F0EA87A /* SDWebImageCacheSerializer.h */, + 6BEFA0A1959620AC394975A01082A23B /* SDWebImageCacheSerializer.m */, + AB253C473EBD2DF633A230C7FAA304B7 /* SDWebImageCompat.h */, + 64891F4568CD87380D133019B00B2324 /* SDWebImageCompat.m */, + 8B0013F9906622545E27B913F2092F22 /* SDWebImageDefine.h */, + 9C599636DAB63CB63CC65E368E1BAAFC /* SDWebImageDefine.m */, + 402826B784C1198142F399AD251F2A3A /* SDWebImageDownloader.h */, + 2FED06425BD958CD54FC4A96C6FF1992 /* SDWebImageDownloader.m */, + E138C277A1DD60E5BB20AB4EC7CEBDB2 /* SDWebImageDownloaderConfig.h */, + 47655EC4466A20F4BEC0C76B8F4C5440 /* SDWebImageDownloaderConfig.m */, + 5716AF79F54782358457FBB452B73975 /* SDWebImageDownloaderDecryptor.h */, + DBE1F0821F32567F3E84359D65C8422C /* SDWebImageDownloaderDecryptor.m */, + 9B89E97BE59B9448BC63E348FA77F055 /* SDWebImageDownloaderOperation.h */, + D68B54EB4EEB9AF6B9ED16CAB83E16BA /* SDWebImageDownloaderOperation.m */, + AF302A5E7BA56F9F631A8591DA72D3C3 /* SDWebImageDownloaderRequestModifier.h */, + 02986FE530B6F5FD0ABF721900839DA5 /* SDWebImageDownloaderRequestModifier.m */, + EC33F9EE9311F0E41E69AB2D40770217 /* SDWebImageDownloaderResponseModifier.h */, + BBC2FF6B1D45486A6893E456C4B85E05 /* SDWebImageDownloaderResponseModifier.m */, + 109DC293F90D678E22D453F41A197049 /* SDWebImageError.h */, + F8A31B7D92D4FBD879F8C39ED3139439 /* SDWebImageError.m */, + AD28EF542A0B7F210E7C92D1D9DEC003 /* SDWebImageIndicator.h */, + 0A8F3B5ED5052E8AFF569E50436DC3C0 /* SDWebImageIndicator.m */, + 32DEFB57DAEAFA1A97A9826678533D16 /* SDWebImageManager.h */, + 2ED4FAFE5BD7891D4471852209337077 /* SDWebImageManager.m */, + 2ECB40CAF1E6F3F4A5F02F74E30B95E8 /* SDWebImageOperation.h */, + ED2932A528EF3931C345CFE64B9F95D6 /* SDWebImageOperation.m */, + 1FCD0CB41F1E259546B6F8A9BFF05378 /* SDWebImageOptionsProcessor.h */, + 6A632B4F7EA06C55CADB3BF7C49D7860 /* SDWebImageOptionsProcessor.m */, + C63ECE6EA6AB3C1B9F676C1A2510CA67 /* SDWebImagePrefetcher.h */, + E48A50CB4DE0A87DE4F3E1BFE24DC7B7 /* SDWebImagePrefetcher.m */, + 28EBA38DF7DE3C55A1DCF1C9536E3712 /* SDWebImageTransition.h */, + BFEF7CB304E59179EBDA954FA636E74D /* SDWebImageTransition.m */, + 2A543722998E5C6171A0B4A729D11BBB /* SDWebImageTransitionInternal.h */, + 4C4CB24406FFC32C73C615D12F0532C7 /* UIButton+WebCache.h */, + 21C74D93A3238750FF610EABE13EB50F /* UIButton+WebCache.m */, + 368AF39857A6659131D7CD15698E6867 /* UIColor+SDHexString.h */, + E29E39BBB558CC51A6DB91379351B72E /* UIColor+SDHexString.m */, + 75B6A4916D912131001F61C28CCA6565 /* UIImage+ExtendedCacheData.h */, + C1F534C5FFF39633128C9B99F1BBF1B5 /* UIImage+ExtendedCacheData.m */, + D843F393C308E0D3BCB88A0B04FDB291 /* UIImage+ForceDecode.h */, + 6645D9E2FCEC9ED435B284460DEDDF89 /* UIImage+ForceDecode.m */, + 21199D87A8FB4561900F6BC425147989 /* UIImage+GIF.h */, + 35205291EDA412911A7CCBF5DB6087EB /* UIImage+GIF.m */, + 06EFD395C240E38E2ED0DCAF40CE73FC /* UIImage+MemoryCacheCost.h */, + 5107F5A871AC7AEDAD8C78C1F1AB8E40 /* UIImage+MemoryCacheCost.m */, + 3EA0FACBE46F43AB7A99266BBBF20510 /* UIImage+Metadata.h */, + 6B5C2096D95608EEB566217452868E46 /* UIImage+Metadata.m */, + 35DC020855ECA02C5E2568299594E9C0 /* UIImage+MultiFormat.h */, + 5734E5CBE9E63CD37E71A375796587B5 /* UIImage+MultiFormat.m */, + B5C750768FB8EE26E8F613C1D910045B /* UIImage+Transform.h */, + A67C49E3D329D82553E5FEBB4951ABD7 /* UIImage+Transform.m */, + 806C18993732E8D418AEA50EC6162EDC /* UIImageView+HighlightedWebCache.h */, + 88D5019FBBC4DC80F31FB68B1820A427 /* UIImageView+HighlightedWebCache.m */, + F21EDB4000AA52958FC207353BC36367 /* UIImageView+WebCache.h */, + 1A1600286757D192233397A2BF1A2371 /* UIImageView+WebCache.m */, + 8179AB093F869B4BCCBBF8427F69555B /* UIView+WebCache.h */, + ECA422AB0F45E3F4B650188FEE476C8C /* UIView+WebCache.m */, + 634BE374E20F830B5B77550EFCF89612 /* UIView+WebCacheOperation.h */, + 0A19BDA4E648916460C20489D6D183F0 /* UIView+WebCacheOperation.m */, + B072B2B3BF7FE061CC694AE00BCF5858 /* UIView+WebCacheState.h */, + FF6C98975F33C466CDCC506B95080046 /* UIView+WebCacheState.m */, + F897C86CB2866AB045A64520219B6522 /* Resources */, + ); + name = Core; + sourceTree = ""; + }; + 412E12540DFA0D72BBEB364F09064325 /* MJExtension */ = { + isa = PBXGroup; + children = ( + E5B1C13BB84FC1E79BC9BB233B793A5A /* MJExtension.h */, + 04A50C0A5F4CA1B3AF632BFE12460FC6 /* MJExtensionConst.h */, + 47A777C7602E23E11AE500103D52A253 /* MJExtensionConst.m */, + 0C9F5466A18204DE825F30433C784EDB /* MJFoundation.h */, + 61A7EBF5198D90CFC9C01A0BA03924D8 /* MJFoundation.m */, + 1326C5B7B2B67B2A6E9A785F1ECEA87F /* MJProperty.h */, + C9DDC2FE19D7DC5621872F440C5E8A37 /* MJProperty.m */, + 367088C36E8BF33957802AE4A6256CC1 /* MJPropertyKey.h */, + C8B51A0410EE632DF42E1C298E25B221 /* MJPropertyKey.m */, + 4E2D9F4632DB7036D701CB57007800AB /* MJPropertyType.h */, + 4688EE09ADCEE19CD4BDF95833F7E81D /* MJPropertyType.m */, + F7CD4CF41A222A66B3E435AB32DF697D /* NSObject+MJClass.h */, + 96BA563F965A1054AC53D0F3D5BD3AFE /* NSObject+MJClass.m */, + 9777292C62AA2375C63BAEF75D1F940C /* NSObject+MJCoding.h */, + 8FD309B3FADE968B4258080AC443EFCB /* NSObject+MJCoding.m */, + BDE2764DE3EEF78845A18DB898232DC0 /* NSObject+MJKeyValue.h */, + 6CE2A9B22B9FC87A02A230599E72D4F1 /* NSObject+MJKeyValue.m */, + BE09431A1BE57A882CA02B1E434916A8 /* NSObject+MJProperty.h */, + CFD12B92C17E28346EDC2EC75D0BF494 /* NSObject+MJProperty.m */, + EE1A5661BE1EACFB3D2C7F19D51BF011 /* NSString+MJExtension.h */, + 5B4EF64EB8018D8E9CE7C8CB5FACCD5B /* NSString+MJExtension.m */, + 17AEA0C7D131B1C990249C70BBD62CDF /* Resources */, + FFFE14F5389A574527140C5AC02880B9 /* Support Files */, + ); + name = MJExtension; + path = MJExtension; + sourceTree = ""; + }; + 453238A8EA177DEF4A00D8C859B1DA27 /* Support Files */ = { + isa = PBXGroup; + children = ( + DDA8FA3EA27827F124700F1B6176E4CE /* Bugly.debug.xcconfig */, + 956C8FF42F553F12124DED23E19FE31D /* Bugly.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/FLAnimatedImage"; + path = "../Target Support Files/Bugly"; sourceTree = ""; }; 47B776543D6613BCB6FB72308F863018 /* Pods-CustomKeyboard */ = { @@ -1900,217 +2264,456 @@ path = "Target Support Files/Pods-CustomKeyboard"; sourceTree = ""; }; - 47E1BAF577BBA403FE7B999A122D3E59 /* Resources */ = { + 4B2DDDE1A44400085093EA342624D230 /* Support Files */ = { isa = PBXGroup; children = ( - F4AF21DC4288D196E2F556338C3101AE /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - sourceTree = ""; - }; - 54FB6DAEEA2800483CD443ADC094963C /* LSTPopView */ = { - isa = PBXGroup; - children = ( - 3558A467522318FD82C582513E547957 /* Code */, - 1724889F583861283992342B8F084070 /* Support Files */, - ); - name = LSTPopView; - path = LSTPopView; - sourceTree = ""; - }; - 575B9A37FCA1D986BF2159F1DC5640CC /* Pods */ = { - isa = PBXGroup; - children = ( - 89D6BC06C1AD7B6FFF6982A03286C710 /* AFNetworking */, - AF98548CB9C337C748F2E8BB9B2CA20B /* Bugly */, - 9417EBD2D308B63C380DB7DDBB4539BC /* DZNEmptyDataSet */, - 78901ACF392301939104361834A904A6 /* FLAnimatedImage */, - 3B43DD955EE30DAEC0EAAF7C261E2B86 /* HWPanModal */, - 64E7B9824C6F286E5F92AAABB42EFBCB /* LookinServer */, - 54FB6DAEEA2800483CD443ADC094963C /* LSTPopView */, - 65AD9332968D1533C04FC8BA5200BFE7 /* LSTTimer */, - C5357083C92AA1ED2F84EF8CC6743655 /* Masonry */, - 6EC8F20A5AD26D138CC780F895C38EFF /* MBProgressHUD */, - 2CEB54752AE867745CB29DF1C930135F /* MJExtension */, - 3781A0D3F34F1F7E995238764CEAD97B /* MJRefresh */, - 035E1FF1C6FC2C70E1C9A7412F5BC07F /* SDWebImage */, - ); - name = Pods; - sourceTree = ""; - }; - 63BB31835B8FFB4B51867F68F6F0E87F /* Serialization */ = { - isa = PBXGroup; - children = ( - B686FCB243BCB66C7BB1F42E6A4B3417 /* AFURLRequestSerialization.h */, - F68CF910ED994D45AAA3B5E5FABB6835 /* AFURLRequestSerialization.m */, - 201F7289F3B83B98F487EC194493B7F3 /* AFURLResponseSerialization.h */, - AFF39BEB58B97CA8F3DFDE7996909112 /* AFURLResponseSerialization.m */, - ); - name = Serialization; - sourceTree = ""; - }; - 64E7B9824C6F286E5F92AAABB42EFBCB /* LookinServer */ = { - isa = PBXGroup; - children = ( - 20214EA91148602FD46C19710C2B91EB /* Core */, - DDE3584A435E1B64AD756057D19173E3 /* Support Files */, - ); - name = LookinServer; - path = LookinServer; - sourceTree = ""; - }; - 65AD9332968D1533C04FC8BA5200BFE7 /* LSTTimer */ = { - isa = PBXGroup; - children = ( - 9CC6285CEC9BC9D5CBF28149790EF660 /* LSTTimer.h */, - 0F067A700BA9565969A60D7617155FBC /* LSTTimer.m */, - 7248D0DA123118E28F34C00E89F7FE76 /* Support Files */, - ); - name = LSTTimer; - path = LSTTimer; - sourceTree = ""; - }; - 6EC8F20A5AD26D138CC780F895C38EFF /* MBProgressHUD */ = { - isa = PBXGroup; - children = ( - CD29BD8633F552915B08BF15C7E0DFFF /* MBProgressHUD.h */, - 1B77702D1A0EF9DC4542AD40D9D3062E /* MBProgressHUD.m */, - 83190A88E8E738BE07B1966ADE3CB3CD /* Support Files */, - ); - name = MBProgressHUD; - path = MBProgressHUD; - sourceTree = ""; - }; - 7248D0DA123118E28F34C00E89F7FE76 /* Support Files */ = { - isa = PBXGroup; - children = ( - B896A10F9115068B682B35E4774898B6 /* LSTTimer.modulemap */, - F9F21BFD087BDB0FF37B51B916F0A3DC /* LSTTimer-dummy.m */, - 3AF690E545719F23D7E97E6C1F82121E /* LSTTimer-Info.plist */, - A4F699C3287866E6143CDE3B9C0C8BAA /* LSTTimer-prefix.pch */, - 93D6767143B7C5D00675B75D54B0AFEF /* LSTTimer-umbrella.h */, - 8769FA429275709C356B4C8A5DDEC26E /* LSTTimer.debug.xcconfig */, - CB1BEFB1C0257A74B80CAF80DB336894 /* LSTTimer.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/LSTTimer"; - sourceTree = ""; - }; - 755B3574C116B6B21DA3F9684A3E744A /* Support Files */ = { - isa = PBXGroup; - children = ( - 473462854899532931D29986CBD25F4A /* Masonry.modulemap */, - 56A89B114742BBA3282DA6CDF9871F36 /* Masonry-dummy.m */, - 92F9229FF7CD4EFBE6BB07684D5118E4 /* Masonry-Info.plist */, - 4968882808F027C34D91341E2DBD71E2 /* Masonry-prefix.pch */, - 672AB6E0839CC099E7CA7CF49761A5D7 /* Masonry-umbrella.h */, - 04A09AD12EF8C816FA9546838C3F429E /* Masonry.debug.xcconfig */, - 72FF1B2D48227EDD9EB762579BA5D936 /* Masonry.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Masonry"; - sourceTree = ""; - }; - 78901ACF392301939104361834A904A6 /* FLAnimatedImage */ = { - isa = PBXGroup; - children = ( - D1A874AEEF141E292D730F9161627B04 /* FLAnimatedImage.h */, - C1EC495C820AD2FE568E285440075D82 /* FLAnimatedImage.m */, - D37BD8FF05E69B29FC64F9CEB3CA7255 /* FLAnimatedImageView.h */, - 81B71B9BB50BFCB7CBC2B6455296C14B /* FLAnimatedImageView.m */, - 463425673C27CDDB3B6077DA1769E98C /* Support Files */, - ); - name = FLAnimatedImage; - path = FLAnimatedImage; - sourceTree = ""; - }; - 83190A88E8E738BE07B1966ADE3CB3CD /* Support Files */ = { - isa = PBXGroup; - children = ( - 03D72CC56F0CB2FCCB14E1335C16D41B /* MBProgressHUD.modulemap */, - D0B5D7F39DA4B830F1B68A7D9273B85E /* MBProgressHUD-dummy.m */, - FBDB01F2E84A23710184B78970DFEA2D /* MBProgressHUD-Info.plist */, - AE6F296D300159E8673214D526F10584 /* MBProgressHUD-prefix.pch */, - F2AA502A31D7ACB4F28AAE65C3561F31 /* MBProgressHUD-umbrella.h */, - B0B0D3A4B05EE4A8AA2F56AF68EA3ADF /* MBProgressHUD.debug.xcconfig */, - 2B7A32CBCCAE8AB83DA3CB95667709E3 /* MBProgressHUD.release.xcconfig */, + 20BCC481544CBBCE47AC61F792449041 /* MBProgressHUD.modulemap */, + 93081A25D8BCD8327365F5FAC77C46F3 /* MBProgressHUD-dummy.m */, + 0FABDACBA6BA6926D5F19E502E77474E /* MBProgressHUD-Info.plist */, + 2BF8D28C7089A47299DB62B980D954C8 /* MBProgressHUD-prefix.pch */, + D5100072476E008E3F5E024784855C6A /* MBProgressHUD-umbrella.h */, + 648C72C63334BCDFD466058863FCDAC9 /* MBProgressHUD.debug.xcconfig */, + 035807D7A9181D8E0DF6FAF1E2D6B33C /* MBProgressHUD.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/MBProgressHUD"; sourceTree = ""; }; - 8603C039C3D467BEBEE7AC050DDF9435 /* Frameworks */ = { + 4C55C9351E9FED232300EF60CC442288 /* Resources */ = { isa = PBXGroup; children = ( - 4489DCEC1C15912F15C69BF8BADBDA34 /* Bugly.framework */, + 43F4AA149B8B7307ED5DA363EBC93DBF /* MJRefresh.bundle */, + 187A3F425AA5E5A93F8784E11F9E28CF /* PrivacyInfo.xcprivacy */, ); - name = Frameworks; + name = Resources; sourceTree = ""; }; - 89D6BC06C1AD7B6FFF6982A03286C710 /* AFNetworking */ = { + 4EE34BF885F3E77A23F8FE0A5F1EF29E /* SDWebImage */ = { isa = PBXGroup; children = ( - 654D22CCA8871E0E0A65AB7C50503EB4 /* AFNetworking.h */, - 1F9EEB6CC879BACDBC385C6DBC24F7C9 /* NSURLSession */, - 0C71559E9A729C5B047179B43CABC936 /* Reachability */, - E2525B53F604A89BD6A5BEF73F8706C4 /* Security */, - 63BB31835B8FFB4B51867F68F6F0E87F /* Serialization */, - B1A7537FAC93AE6E20D10C11AA2DD270 /* Support Files */, - C70568B567541D2FA725A12B29BD1DF7 /* UIKit */, + 4121134849DA04BCD3BB12CF65EEF182 /* Core */, + 57091A5F19D7165DCEE12C9F477836F7 /* Support Files */, ); - name = AFNetworking; - path = AFNetworking; + name = SDWebImage; + path = SDWebImage; sourceTree = ""; }; - 92804E5AAC2424AC0EE6ED237A2C4B6F /* Products */ = { + 52BEEDAD6FE6860B049D64EEC5ED3599 /* Support Files */ = { isa = PBXGroup; children = ( - A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */, - 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */, - FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */, - 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */, - 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */, - 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */, - DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */, - 1FFED36A657123030ABB700256D73F15 /* Masonry */, - 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */, - 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */, - 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */, - E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */, - 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */, - 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */, - DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */, - B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, - CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */, - ); - name = Products; - sourceTree = ""; - }; - 9417EBD2D308B63C380DB7DDBB4539BC /* DZNEmptyDataSet */ = { - isa = PBXGroup; - children = ( - 5AD771C5136CD5549FAE44B9E4C2DFD2 /* UIScrollView+EmptyDataSet.h */, - 6AB2A681F27544128FA8BFDF04B2B4BB /* UIScrollView+EmptyDataSet.m */, - C849337A62646C28DD26BB58FA313018 /* Support Files */, - ); - name = DZNEmptyDataSet; - path = DZNEmptyDataSet; - sourceTree = ""; - }; - 96DE1775CF064EDD1FBB4071547380B9 /* Support Files */ = { - isa = PBXGroup; - children = ( - 58F1F1A0BBD025ADF47D37EB3545A1EA /* MJExtension.modulemap */, - F7A5B6B4FC335FF159BAE91EDDEC3320 /* MJExtension-dummy.m */, - 4B01E4A62621F02DCAF2B380FECD12A8 /* MJExtension-Info.plist */, - 75F935C6D49A90EF2E215985C8EBF76F /* MJExtension-prefix.pch */, - 2ACD4F15622D5B40EA4047FEA329658B /* MJExtension-umbrella.h */, - 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */, - 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */, - DDA24856F33C6E655A624699241CFD6D /* ResourceBundle-MJExtension-MJExtension-Info.plist */, + 731627030A2BE88955F55A35D6DCABC1 /* JXPagingView.modulemap */, + AFBCBD9F77FD5CF26B2BEBE02B1E19D9 /* JXPagingView-dummy.m */, + E259D7D54703B047363E50046A949F68 /* JXPagingView-Info.plist */, + 0E90E49C067121A7254AE81E49E663A2 /* JXPagingView-prefix.pch */, + 85E262E36BEDDEA0E7B4F4A870DA4314 /* JXPagingView-umbrella.h */, + 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */, + 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */, + 8B0B848DED77C21AEA127E58094EE39E /* ResourceBundle-JXPagerView-JXPagingView-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/MJExtension"; + path = "../Target Support Files/JXPagingView"; + sourceTree = ""; + }; + 57091A5F19D7165DCEE12C9F477836F7 /* Support Files */ = { + isa = PBXGroup; + children = ( + 5DEBBB0A3F6FE82FAB648C476116F8AF /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */, + 46461C91DF1586852C84C6489E5ED4BA /* SDWebImage.modulemap */, + 13B82D87F3DD4A8EB4C508E0BFA04090 /* SDWebImage-dummy.m */, + E87C7E8B87671964EE3B94CB801C492E /* SDWebImage-Info.plist */, + ED8D9D4C66EB7593131560466A9EEB08 /* SDWebImage-prefix.pch */, + 5409A465D5BE745D21B9F8847B798BD5 /* SDWebImage-umbrella.h */, + 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */, + E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/SDWebImage"; + sourceTree = ""; + }; + 5BDD879F155F843CED343AAC8812F0D6 /* Support Files */ = { + isa = PBXGroup; + children = ( + 76DCA3DD0D37AD6B5C7C65D7829AE3A8 /* LSTPopView.modulemap */, + 97E0EEAE3EFB0492B434EC2A704903DE /* LSTPopView-dummy.m */, + 2219CD4B41E42AA4B9864251F1CFEF59 /* LSTPopView-Info.plist */, + F2EB780D15F77D48AEC0D3A47833557E /* LSTPopView-prefix.pch */, + DBE3855004E17CACAC82F75DF8EFEBD4 /* LSTPopView-umbrella.h */, + D0317376A8F5B09CBBAC757A9410CF00 /* LSTPopView.debug.xcconfig */, + B79CB4484CF793AF65C86B424D955922 /* LSTPopView.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LSTPopView"; + sourceTree = ""; + }; + 6095F5BA99A7BC3EDE17ABB647B490AD /* Support Files */ = { + isa = PBXGroup; + children = ( + 3415299E0D5D7B9C22E99D16B6F89983 /* MJRefresh.modulemap */, + D58A6363674921528AA6EC052D65C890 /* MJRefresh-dummy.m */, + A237C0F799BD0639307F9DF3E58B71CE /* MJRefresh-Info.plist */, + 7707C9BBD69232F1162D6ACABE70B7ED /* MJRefresh-prefix.pch */, + 7626DD9951DC84318DF6E875CD7A8C20 /* MJRefresh-umbrella.h */, + 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */, + 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */, + D4ECB35518D14625B419D0EC58050171 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/MJRefresh"; + sourceTree = ""; + }; + 6DF1AE20DC3ECAE9AA7B19DCCDE41F5C /* Core */ = { + isa = PBXGroup; + children = ( + 732327FB0ADC252437B580203795D95F /* CALayer+Lookin.h */, + 673B42B9F094B1F5ED808EE1BA26FC30 /* CALayer+Lookin.m */, + 26925632A670841DDFC5067C12B16515 /* CALayer+LookinServer.h */, + E1921A1332A20D950700741950E97126 /* CALayer+LookinServer.m */, + EEB6F4442CB80A88D94B35721714C121 /* Color+Lookin.h */, + F2A8643D9113999359ADC6C79DA48111 /* Color+Lookin.m */, + 17FBA36FB2D4DFAA4437CEE5C69F4BBE /* Image+Lookin.h */, + FB1E7E734FDF6F7CAC668B6BD6A2A014 /* Image+Lookin.m */, + BE10A2A4B13E0F15A962DBEA161DE595 /* LKS_AttrGroupsMaker.h */, + 1C4B5B00D7224F098F6B2FE0962E5086 /* LKS_AttrGroupsMaker.m */, + 9F0B0B2E800350D0E38B61EF43E6CE75 /* LKS_AttrModificationPatchHandler.h */, + 908A8A591A12931E59C177277E1D126D /* LKS_AttrModificationPatchHandler.m */, + 60913F6F25D56976457BFFCFF2C2FADC /* LKS_ConnectionManager.h */, + F1C50876E480E256FAA99FC38F2BC478 /* LKS_ConnectionManager.m */, + 3B2ACD52F18B25CE1FB40A0F1DF81B4A /* LKS_CustomAttrGroupsMaker.h */, + 7CF7F647B9D3AA2FB234C1CC5BB53582 /* LKS_CustomAttrGroupsMaker.m */, + 137E45FE90DEED579DF255BB11ADABF4 /* LKS_CustomAttrModificationHandler.h */, + 29CA4DC7FB25B91EAA2B3847B7BB46A9 /* LKS_CustomAttrModificationHandler.m */, + 38E107BE978505B98A952E3564F532AA /* LKS_CustomAttrSetterManager.h */, + 567674319F769F7E8B80920BBBD444B6 /* LKS_CustomAttrSetterManager.m */, + 230F8C4FD68EA2D95EA48F31DA295CE9 /* LKS_CustomDisplayItemsMaker.h */, + E74AC99A06CC9DE9D81D54044B013F98 /* LKS_CustomDisplayItemsMaker.m */, + E5AA796F8B4298B625A467D39523F40F /* LKS_EventHandlerMaker.h */, + 1C21A04AB85F6948BCB44480387E46C5 /* LKS_EventHandlerMaker.m */, + EB3C413B4ED21D886E50FCBC0761408E /* LKS_ExportManager.h */, + 44ABB514E2C8BB7AA8881283E1F0FE47 /* LKS_ExportManager.m */, + 029DB3501B51C5C14FA8EC0A89559639 /* LKS_GestureTargetActionsSearcher.h */, + BC88BA608872DDF711D78498FD36C1AA /* LKS_GestureTargetActionsSearcher.m */, + FA6406A6E74DC06D367BE38EA6C60243 /* LKS_Helper.h */, + 38A98EA0745C9E839DCFD56B22BF1256 /* LKS_Helper.m */, + 21696AB985A15DE2C63BD9A8CD978F59 /* LKS_HierarchyDetailsHandler.h */, + 6736D1FBB305C05AEAB982F817CD80C1 /* LKS_HierarchyDetailsHandler.m */, + A9B0E721EBB3914236D06250E333F1E9 /* LKS_HierarchyDisplayItemsMaker.h */, + 3D3112C49688EF3F713F0D64A22E6E66 /* LKS_HierarchyDisplayItemsMaker.m */, + 6C2FE2279B0EA1E9F949E0AF58D09E3B /* LKS_InbuiltAttrModificationHandler.h */, + DC0451732A9C9A896EEC15BEC88B3151 /* LKS_InbuiltAttrModificationHandler.m */, + 06BE908D1EBE4269ACB69B26DE9B834E /* LKS_MultiplatformAdapter.h */, + 1FBD8AFE7FA55EAB140791EC34C18CD4 /* LKS_MultiplatformAdapter.m */, + 4A2FC8CB1CFEB2812A4E5E466940232C /* LKS_ObjectRegistry.h */, + 8127266FF8D9AAE89CDF3511D05BB245 /* LKS_ObjectRegistry.m */, + B9D007BE64FBA88DB3F5D92E0EAEDEAD /* LKS_RequestHandler.h */, + 15E765BB9B77EA9AC2800F30D2802C1C /* LKS_RequestHandler.m */, + 1278AB0B776862F23D89B7E8596E3598 /* LKS_TraceManager.h */, + 36457C61634F1414F6DDF4C701ABF567 /* LKS_TraceManager.m */, + D16058E57E3F07CA628E8A17A3B944C1 /* LKSConfigManager.h */, + 17DDB1AC9EC1929E6B6DFC0CFA9D927D /* LKSConfigManager.m */, + 35269DC2485E9AA07A892FDEB96B16C7 /* Lookin_PTChannel.h */, + 69AE4F19374B51CFBF6330CC5F82B32A /* Lookin_PTChannel.m */, + 6DD8CB4B9EF9002F59BC7DE12F17ED7E /* Lookin_PTPrivate.h */, + FB5DC78AEFAB6098819933CF81AAB15B /* Lookin_PTProtocol.h */, + 9545413A1EE5D2E50A21E8D9794A771A /* Lookin_PTProtocol.m */, + 3416384E4A531494C7B12CDD1AEA74A1 /* Lookin_PTUSBHub.h */, + BC38AB7DAEDA3DEEFFAC64BDA7FA3C88 /* Lookin_PTUSBHub.m */, + 908BDA99457974AD8998A674A0C0FB12 /* LookinAppInfo.h */, + CB40236F7A3DB0EECDBA370753BEDDD4 /* LookinAppInfo.m */, + 659E6E588427268237F9F2C40D2F6CBD /* LookinAttribute.h */, + DDDA744A029AF23E45515CE37C056256 /* LookinAttribute.m */, + C9F0D4D92726FF95FE428AA975E93DE2 /* LookinAttributeModification.h */, + 0B35D70EDD8A3E56FE6F0E6934A400CC /* LookinAttributeModification.m */, + 57D32F597DFAC06B9198FA1F48D2995D /* LookinAttributesGroup.h */, + 7E02457FB07FECD161E03C2A1A8B72B3 /* LookinAttributesGroup.m */, + B74F835090D47DFE066B4DAD231882AC /* LookinAttributesSection.h */, + 97428E2E54CAC989DD7A12908613EE16 /* LookinAttributesSection.m */, + 6B857386E2ABDB8C3FD8B5797430DF26 /* LookinAttrIdentifiers.h */, + 41EF7420DD5FC6E4D1134632895868F3 /* LookinAttrIdentifiers.m */, + D7DFD14540146731FB9E466FA1EB81F0 /* LookinAttrType.h */, + 1FFD17C3FF6DE53EF72736C597DF5B82 /* LookinAutoLayoutConstraint.h */, + 5DA1EEEB5386D6FCA6523BE43601C382 /* LookinAutoLayoutConstraint.m */, + F2698AC3972900E338490644A2E03A2A /* LookinCodingValueType.h */, + F3AD144DF03231D478D237DCFC615D36 /* LookinConnectionAttachment.h */, + 595E9691CC1A487C44431E51893A1D01 /* LookinConnectionAttachment.m */, + 989150BD3DA7E7AE5D05E2F37E778A8D /* LookinConnectionResponseAttachment.h */, + 4ED1A3436209E7EBF3356CEC094C7391 /* LookinConnectionResponseAttachment.m */, + 06A633B376D525417B93138405029540 /* LookinCustomAttrModification.h */, + F6CC661C43717D8BBB4405FD037BDC03 /* LookinCustomAttrModification.m */, + CF0E98CA3E42AAC3B854E232BB1AF7FB /* LookinCustomDisplayItemInfo.h */, + 8F0F258366D8ED06A7D9EAD3DFCD004E /* LookinCustomDisplayItemInfo.m */, + 9D31ED01216EF87422BD04709990AFA0 /* LookinDashboardBlueprint.h */, + 2783C33881FB9ED3037D4D66B93FAD7E /* LookinDashboardBlueprint.m */, + AFC299E1B60C8759EA1F35B7A91019A4 /* LookinDefines.h */, + FED61E621A88CB9CE3C421FDEB1106FC /* LookinDisplayItem.h */, + BCE8E065BE01E56E0D55097E36AB8FC2 /* LookinDisplayItem.m */, + 1E7F18004D9337D64F0F606975492DF4 /* LookinDisplayItemDetail.h */, + F90D97C684BADB3FE9796E626B98C43A /* LookinDisplayItemDetail.m */, + E97B2ACE11733D7DD5ECA116979B91D5 /* LookinEventHandler.h */, + 7CAEC579F15CFFDB2E384C98A046EA76 /* LookinEventHandler.m */, + 63000DF25140BBB4F03EDFC289F2B197 /* LookinHierarchyFile.h */, + 16E6E00D729B1498CE18200F50778930 /* LookinHierarchyFile.m */, + A8105D73597438386DADF22233AAD4B3 /* LookinHierarchyInfo.h */, + 0D8B581D78D02F65425434F924BB64B3 /* LookinHierarchyInfo.m */, + 765DBAD68AB5F355FB80870758AFB22C /* LookinIvarTrace.h */, + 89DA873F803BF9043720F615E8BC4CD5 /* LookinIvarTrace.m */, + 0B1D41519ED222707112BD66393CC6B2 /* LookinObject.h */, + 05B3B08A0927761DC2CBA02E9412CD21 /* LookinObject.m */, + 2E80EA469F2079302F38A991886C4B5A /* LookinServer.h */, + D03FDB7D5A636ED3DC51EF05677C546A /* LookinServerDefines.h */, + A7A769F7014A1F30EE6690E054898162 /* LookinStaticAsyncUpdateTask.h */, + EC9D66F9AD565D0A6E6595CFC812165E /* LookinStaticAsyncUpdateTask.m */, + 95EB1D88070F8207A333D4573DA43A15 /* LookinTuple.h */, + 7A60F6547480237BC04A6287158556B4 /* LookinTuple.m */, + 886E6269011F3D0F924F30F32F08508F /* LookinWeakContainer.h */, + 16464E573FCB8AFF2E7DB58E7A507D73 /* LookinWeakContainer.m */, + B937D529B74DB9581A000F395FF3B6F7 /* NSArray+Lookin.h */, + D4BC45247918896A52CA0C54F038B447 /* NSArray+Lookin.m */, + 9FD83B41506E28893BC297C4BDAB1B46 /* NSObject+Lookin.h */, + D52171C8DB630868289299203B4ECD0C /* NSObject+Lookin.m */, + 3B26E1BE3EBF37131688F5656289ACA2 /* NSObject+LookinServer.h */, + C5719A8B6A945982F0856B5A616B379E /* NSObject+LookinServer.m */, + D40E6AE30D19137ABA0A5D046329BCCD /* NSSet+Lookin.h */, + C02B6DB0CED9923894E4B972F8B03882 /* NSSet+Lookin.m */, + 06AB57BB46CC82FE3257276649BAF8EA /* NSString+Lookin.h */, + D9EC522C5B6A10C53A05FE81CED85983 /* NSString+Lookin.m */, + 6FDFBF5B5FE03EAE7CBA31ED300F848E /* Peertalk.h */, + 4BC6F317480167EA6C97C3ED771D57CA /* UIBlurEffect+LookinServer.h */, + 98EB3787337AAE5AD71D422A832D852F /* UIBlurEffect+LookinServer.m */, + 6A34A08E72CC7EE2DEDDC6F48148CD79 /* UIColor+LookinServer.h */, + C626E0F07BD081EBE5955DEA5669BF14 /* UIColor+LookinServer.m */, + DB3CBBCBF7B8B49A86FAC8D0A1741C77 /* UIImage+LookinServer.h */, + E075739451FCFAA914670EB353642C16 /* UIImage+LookinServer.m */, + F45F2EB9AE5E2D5BDC0F9860DB695385 /* UIImageView+LookinServer.h */, + 5C560A21071D707C98AE6CD75AED8BFD /* UIImageView+LookinServer.m */, + 015571B1499F434BC7171DE7EA094577 /* UILabel+LookinServer.h */, + 9E285AA5C9AFC477B5336B5AC2C863D1 /* UILabel+LookinServer.m */, + 40380EFCFB5E34558C193A723D077BE3 /* UITableView+LookinServer.h */, + 95E2C10E638AC6421FE377F88DA72A45 /* UITableView+LookinServer.m */, + 94807C278EC259800EBCD3A346749877 /* UITextField+LookinServer.h */, + 877837A5816B3B110C5B763CCBD0ECFD /* UITextField+LookinServer.m */, + A56B5A6CAF35241FF9D41CAC7DC1D6D2 /* UITextView+LookinServer.h */, + 3791DA4B477B236E8816C08DD01E3B45 /* UITextView+LookinServer.m */, + DC82DAFD220FAA7899CE21078C2C649D /* UIView+LookinServer.h */, + E9CB22320707CAEB4EE4C1DF62EB9E1A /* UIView+LookinServer.m */, + 3753072CB1EE987F4CDC7E86385B9A99 /* UIViewController+LookinServer.h */, + 920CD059C1364A6BD18420074E635F40 /* UIViewController+LookinServer.m */, + D013F3B6606D04CFD12051F02350DB55 /* UIVisualEffectView+LookinServer.h */, + 8CE6BF39C6199FC5B55217046DDE2CDB /* UIVisualEffectView+LookinServer.m */, + ); + name = Core; + sourceTree = ""; + }; + 797CA9CCA9EBB2192EC635FA118D2257 /* Pods */ = { + isa = PBXGroup; + children = ( + F401BC1732EB9D32AE09D69A4179A68F /* AFNetworking */, + 0F19D22A7E286B575974CA8C2AD3F3DF /* Bugly */, + FE875CB7596498A67CF56F73315D2BDD /* DZNEmptyDataSet */, + D44B6A743503D502C7C50E1E40396614 /* FLAnimatedImage */, + 7C33CFE60683D6E5574D89F3B2808B60 /* HWPanModal */, + 2E6A5961188FF65067773B356D98FC06 /* JXCategoryView */, + A2B6865A0533CF3250BDF1CA362E6B54 /* JXPagingView */, + E186B0D6F7241CA024EE1DBD99B15A49 /* LookinServer */, + E603CC254B20E39E7561F9D06E23A39C /* LSTPopView */, + FB21115538DDA6029001E62F3AB59544 /* LSTTimer */, + 8FE7351622DF7632BCAC51C89CCF56EE /* Masonry */, + F3242F712BF128531D3F535A6FD297FA /* MBProgressHUD */, + 412E12540DFA0D72BBEB364F09064325 /* MJExtension */, + 36091ADDE4C749A4350E3A117CAA7398 /* MJRefresh */, + 4EE34BF885F3E77A23F8FE0A5F1EF29E /* SDWebImage */, + ); + name = Pods; + sourceTree = ""; + }; + 7C33CFE60683D6E5574D89F3B2808B60 /* HWPanModal */ = { + isa = PBXGroup; + children = ( + ACC63F439241C64C221C18A8991C569B /* HWBackgroundConfig.h */, + ED71DE4537C6ECADC81696A80C943E64 /* HWBackgroundConfig.m */, + 017032FDD415E1762246EBCDD2228351 /* HWDimmedView.h */, + 6194A35582043CD8893F293567547D72 /* HWDimmedView.m */, + DD3CC2F2CD0FD607BD99AA89E970269A /* HWPageSheetPresentingAnimation.h */, + C947209A5CDFABA11FEBE5D709864961 /* HWPageSheetPresentingAnimation.m */, + DAB0E506E749384DE93170FA1EE1FD3B /* HWPanContainerView.h */, + 2310AA8AAF9A85F5E639409B8AF0F292 /* HWPanContainerView.m */, + 4DE32E1B12FEE2A9EAE1F5A67697D6E8 /* HWPanIndicatorView.h */, + 6EF0D4A56B002AB1528A77EBDA7EC804 /* HWPanIndicatorView.m */, + 6260795D5ABBA18F8EFECC2CEB871872 /* HWPanModal.h */, + 42F934D080B2CC7F2CD859E2B472A585 /* HWPanModalAnimator.h */, + 88D7B291E3BCDB41106F548FA3B84901 /* HWPanModalAnimator.m */, + A87C5BAF6B8038E9EE8A33551A798606 /* HWPanModalContainerView.h */, + 2BB86632EEB3EB44D0413B3A6F7F6875 /* HWPanModalContainerView.m */, + 2CAA34C64434033ACBB7F68A74F4D15B /* HWPanModalContentView.h */, + 77BA4318333FADE07B128DB446EA0F64 /* HWPanModalContentView.m */, + 5731585BDD8DA229201CF537357BCA56 /* HWPanModalHeight.h */, + C8BABB078FC5FF697A3609C777FC51FC /* HWPanModalIndicatorProtocol.h */, + 3DAB18271BAF2DB3E49BCAF049FC4F01 /* HWPanModalInteractiveAnimator.h */, + 0BE68C7303DE07C8DA01573CDDE9003F /* HWPanModalInteractiveAnimator.m */, + 95BD516A8F354C5C9CD65BFD30C9BED7 /* HWPanModalPanGestureDelegate.h */, + 83D5AD11F2E32B53BA1869D6DE812341 /* HWPanModalPresentable.h */, + DAFBC54BDE2AC21397492351C31C587A /* HWPanModalPresentableHandler.h */, + B8E404753BE7BE627A458AE982427654 /* HWPanModalPresentableHandler.m */, + 552D2F14AF7B393E80A67680A66A34D4 /* HWPanModalPresentationAnimator.h */, + 15D78A0355CAA0B846DBC1DAC7B101F4 /* HWPanModalPresentationAnimator.m */, + 195F1795B17C3F026E46BBEF64C1EA67 /* HWPanModalPresentationController.h */, + 94D99E2E2730992302FB9BAA7CCE2A1C /* HWPanModalPresentationController.m */, + 82C5C527FD40FDC2434064E6DE931921 /* HWPanModalPresentationDelegate.h */, + 6749EA453DC312E08B14CE8AFDB79F3C /* HWPanModalPresentationDelegate.m */, + 4B98EB1E5D5490C1C17C90E124262C80 /* HWPanModalPresentationUpdateProtocol.h */, + E8DC9FFB899510CE978017ADFAFE6D87 /* HWPanModalPresenterProtocol.h */, + 039AC3B9A6AA2BDAB5EB71E7A54C1EF5 /* HWPanModalShadow.h */, + 5FD7A1D3C3D9D8E6D3476B7C2093A431 /* HWPanModalShadow.m */, + 5AEB6DDDE2B74ABEB1D68CE037D784DC /* HWPresentingVCAnimatedTransitioning.h */, + B9C3A1374DADDEAE813F69F05F5A2564 /* HWShoppingCartPresentingAnimation.h */, + 62C28B0ACA1E8D749FA6E65D70CFCB2D /* HWShoppingCartPresentingAnimation.m */, + BC5B799F7FC71DC9649AD62AE8B34DC7 /* HWVisualEffectView.h */, + DACDF6DBB7030D05CC43C7DB516265EE /* HWVisualEffectView.m */, + 2E70DDAD553B6A4AC2379D01C3F133EF /* KeyValueObserver.h */, + E1F236D1BF028AEAD75A9FB3C9DCAE0F /* KeyValueObserver.m */, + 22613DFB1026F3E41B141E34C637D600 /* UIScrollView+Helper.h */, + CCA4AAE27B9CAF06CC2B0A3C0A3F0594 /* UIScrollView+Helper.m */, + B63B552A0A52E65141ED8027A3FCCB0D /* UIView+HW_Frame.h */, + B444EEABD213A46C07AC5F1B8D73FBF1 /* UIView+HW_Frame.m */, + 23A344AF55814873B0105902E9FBBB2A /* UIViewController+LayoutHelper.h */, + 76724C714C93839E6993DF68B545F17B /* UIViewController+LayoutHelper.m */, + 9BAC219B4754C1E13B6929143780BE52 /* UIViewController+PanModalDefault.h */, + 3474F65ACB0FE00EF732580936B91D06 /* UIViewController+PanModalDefault.m */, + B46DF40E1300BE3FC009F0D7D5CF5ED0 /* UIViewController+PanModalPresenter.h */, + B05FD8A103E2A06EE08BE59B38FC36B4 /* UIViewController+PanModalPresenter.m */, + 201E2681B892F05C3D7CAFE9E9927D15 /* UIViewController+Presentation.h */, + C806BECAA1C722F04FE4A89D9B14A0E0 /* UIViewController+Presentation.m */, + 2DD7CD81F0AED96859289DDC12B0E9CF /* Support Files */, + ); + name = HWPanModal; + path = HWPanModal; + sourceTree = ""; + }; + 89DEB64DC275ABFAFABFE909ED131FA2 /* Reachability */ = { + isa = PBXGroup; + children = ( + 60461DAD42E3B1F75AD82553A6C40C64 /* AFNetworkReachabilityManager.h */, + 81D1103F43F39D4BF9AE80E76478FA69 /* AFNetworkReachabilityManager.m */, + ); + name = Reachability; + sourceTree = ""; + }; + 8F7F6DF25B41B68A636D15AEFC153E23 /* Serialization */ = { + isa = PBXGroup; + children = ( + DC285A6C8053D7E2AE423BE51B24E8AE /* AFURLRequestSerialization.h */, + 32F3C5B0B7D11631504E27D25E8CB5A2 /* AFURLRequestSerialization.m */, + BBB6E7BC9BF649910D7654B98B396BD4 /* AFURLResponseSerialization.h */, + 9F3CA71777F849F0196634A7AB215BDC /* AFURLResponseSerialization.m */, + ); + name = Serialization; + sourceTree = ""; + }; + 8FE7351622DF7632BCAC51C89CCF56EE /* Masonry */ = { + isa = PBXGroup; + children = ( + F451B2E12A8192978BB7FB1B45BF1E04 /* MASCompositeConstraint.h */, + FD6EC1E4FB3615CE938900B23CEAD0F8 /* MASCompositeConstraint.m */, + ED6F94603AF0AF72D292CADE8ABCEEB3 /* MASConstraint.h */, + 3A94C1FE25186BE811E6EC878BFA019B /* MASConstraint.m */, + 7C2B7AF68C3BEF4AD97A93A90F9EFF44 /* MASConstraint+Private.h */, + 979A3BAC302F65855776332D6027B80C /* MASConstraintMaker.h */, + CDE98EE96840F02E6074E842D456A2E3 /* MASConstraintMaker.m */, + 1D56371580E6496005BC9D35C2C49570 /* MASLayoutConstraint.h */, + EB21E143FD58D712C16E9026FBFFE194 /* MASLayoutConstraint.m */, + 56642F6C221107F2F8D033758EEB482A /* Masonry.h */, + 9E54C32C4CB68C01C57E81C03350F4B2 /* MASUtilities.h */, + 9E18E15D3A7901E5A84136DADC023216 /* MASViewAttribute.h */, + AAF02F3D4DFB903955A463298716DCE2 /* MASViewAttribute.m */, + DEDFC34DB720F4FD92E634E486425845 /* MASViewConstraint.h */, + CF9BCBE90C3B7C448764C897685CB0E3 /* MASViewConstraint.m */, + 6C07CC30774DAAE34D68C477CE151A36 /* NSArray+MASAdditions.h */, + D3CF8B366EB9A41FEDB94035F404215D /* NSArray+MASAdditions.m */, + 3A8DC30D2C209AB66D8E812915E6F319 /* NSArray+MASShorthandAdditions.h */, + A75069F0A291D74DCBF8F50AA213D806 /* NSLayoutConstraint+MASDebugAdditions.h */, + 25A7097BBC72B099A6C5D8BE403878A8 /* NSLayoutConstraint+MASDebugAdditions.m */, + E44ED3A05255119AA352B7DE0C64E994 /* View+MASAdditions.h */, + 903038F34EE93C82A3EF6A1F6BDF857B /* View+MASAdditions.m */, + 4D93DBFF5810549335063D430FB33721 /* View+MASShorthandAdditions.h */, + D48043130F64D218A676B16D2CDA0ED8 /* ViewController+MASAdditions.h */, + 1BABE1F324CED82D14350741682D422B /* ViewController+MASAdditions.m */, + 99E8B32C59458ECDE2883334F4E8B17F /* Support Files */, + ); + name = Masonry; + path = Masonry; + sourceTree = ""; + }; + 95AF65BE191D8A598CB99DF63AF5085C /* Resources */ = { + isa = PBXGroup; + children = ( + 360A9029323DBF687A82BCD2C22F386C /* PrivacyInfo.xcprivacy */, + ); + name = Resources; + sourceTree = ""; + }; + 99E8B32C59458ECDE2883334F4E8B17F /* Support Files */ = { + isa = PBXGroup; + children = ( + D5140E810D9AB3FD3FA724CCDD59D3AD /* Masonry.modulemap */, + 99302CD0854353E1FA9C8EE70F3FCF59 /* Masonry-dummy.m */, + D9922CA9D57AA94D9EE06129264F7958 /* Masonry-Info.plist */, + 819B57A54180667AB9476455F95835CA /* Masonry-prefix.pch */, + A8CBDE62F720E1751DB8B8E4DF3B0E9F /* Masonry-umbrella.h */, + 93A6F66AA21D4921B2C52643DAEF998F /* Masonry.debug.xcconfig */, + 0B0EEEE5F23AC446F4729522F4FC7A73 /* Masonry.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/Masonry"; + sourceTree = ""; + }; + 9CF605192227F87CF3E8D7EE63BDF0B1 /* Support Files */ = { + isa = PBXGroup; + children = ( + 0210A2376F4634FAF99E871533D6AD1C /* LSTTimer.modulemap */, + C181D8B9B1142624BE8BFFA787AA2854 /* LSTTimer-dummy.m */, + 81C5F42CC1579DEC553C5D34C274FD68 /* LSTTimer-Info.plist */, + C5FD92D35D7D1F18C67D17C9DD534533 /* LSTTimer-prefix.pch */, + 3F5F8D57BABE5A9AD2D0BC75B55D1A52 /* LSTTimer-umbrella.h */, + A76F5B96F548930505FADC6CE9430C2D /* LSTTimer.debug.xcconfig */, + 294754F45B0BF3519369080425B4F2FD /* LSTTimer.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LSTTimer"; + sourceTree = ""; + }; + A1A0EBDEE093FF055ADC1FB66AD4A1B8 /* UIKit */ = { + isa = PBXGroup; + children = ( + F7FE08919F8BE5AACFB3A1E812E57C03 /* AFAutoPurgingImageCache.h */, + 4A984C0F36AC5CCB478D87C1F7E4019D /* AFAutoPurgingImageCache.m */, + FA94CFBBBF3DC429BAF55FD9493336B4 /* AFImageDownloader.h */, + 25A773C46121E6091EEB9AC88DC4E2A2 /* AFImageDownloader.m */, + 7965DB1FD06E64A9C5B34CB6D9909B3A /* AFNetworkActivityIndicatorManager.h */, + A5FC57ACB22E21DCA20F2B582D18A03F /* AFNetworkActivityIndicatorManager.m */, + 81D4FD0C7D7C987D10815371E729DAC0 /* UIActivityIndicatorView+AFNetworking.h */, + FE8EB43019635F8DC34B96037E258505 /* UIActivityIndicatorView+AFNetworking.m */, + A2309A5B4A1B9C14AF7AEDEC1036F76E /* UIButton+AFNetworking.h */, + 5C519E29CD93815AEE0C119E2109F0A2 /* UIButton+AFNetworking.m */, + 8E1682EACA92F366216BAB7320C375AA /* UIImageView+AFNetworking.h */, + 156CBD2266287775279363430A374818 /* UIImageView+AFNetworking.m */, + 4AD6EDFD2A6C9CC51CFC6A4BAA9C72A9 /* UIKit+AFNetworking.h */, + 7446E6EDA4118B08C0D538CAA41C47AA /* UIProgressView+AFNetworking.h */, + E152B4E044E172623798E791ACCC157E /* UIProgressView+AFNetworking.m */, + 4D000260D6BB658E0BB519087E88F883 /* UIRefreshControl+AFNetworking.h */, + BEC06B30EADD5F0931B350F94CD4D15C /* UIRefreshControl+AFNetworking.m */, + 21E66554273E5793F0BC4D1CD5A058CD /* WKWebView+AFNetworking.h */, + D675E9EED90BA5941D43EB2C520A01B8 /* WKWebView+AFNetworking.m */, + ); + name = UIKit; + sourceTree = ""; + }; + A2B6865A0533CF3250BDF1CA362E6B54 /* JXPagingView */ = { + isa = PBXGroup; + children = ( + CA7AF39BD3D9214EBF1CEE7DE0683EE0 /* Pager */, + 52BEEDAD6FE6860B049D64EEC5ED3599 /* Support Files */, + ); + name = JXPagingView; + path = JXPagingView; sourceTree = ""; }; A55E2B2247987FBEC60B3A5F75016BFF /* iOS */ = { @@ -2125,60 +2728,19 @@ name = iOS; sourceTree = ""; }; - AABD58CAE3AC5D0D8560E01BA94341F0 /* Support Files */ = { + B5D3B16165F3FDCE26DFE706A413FE76 /* Support Files */ = { isa = PBXGroup; children = ( - 04FCA007C5BE63FC5541B26878E3DE79 /* HWPanModal.modulemap */, - 13066DF230EEB3642E5BD7E5097A64F9 /* HWPanModal-dummy.m */, - 2334F40DFDB1BAD377A3B71EE761F938 /* HWPanModal-Info.plist */, - A1A1675F7ED6C653EC09CB7ED0E5281E /* HWPanModal-prefix.pch */, - 5B1C14811A97739A8455D69D9EF8F1AA /* HWPanModal-umbrella.h */, - F2C18394D397CD373A1F089F0924F724 /* HWPanModal.debug.xcconfig */, - 779E8085B0101C4CB480F794DECA558B /* HWPanModal.release.xcconfig */, + F4D2D27159CC3A8AAABD93291FBA2B48 /* LookinServer.modulemap */, + 5F4DF3FAFAFDE0BEC7606CB8D4C2C98B /* LookinServer-dummy.m */, + 9FEF42DD4D5BC001DB0C88A7EB3DB63B /* LookinServer-Info.plist */, + 5DB99CA546DA98A4F2641B6CD4635589 /* LookinServer-prefix.pch */, + A98C5DE93CCDA0FE6E6A916B05B69DCC /* LookinServer-umbrella.h */, + E654A0C1F961A76933C784134A3D98E4 /* LookinServer.debug.xcconfig */, + B8E77F018E5BE1F8C021ACB0978497F6 /* LookinServer.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/HWPanModal"; - sourceTree = ""; - }; - AF98548CB9C337C748F2E8BB9B2CA20B /* Bugly */ = { - isa = PBXGroup; - children = ( - 8603C039C3D467BEBEE7AC050DDF9435 /* Frameworks */, - 16966B46BC1DE37AE221B0FB44232D79 /* Support Files */, - ); - name = Bugly; - path = Bugly; - sourceTree = ""; - }; - B1A7537FAC93AE6E20D10C11AA2DD270 /* Support Files */ = { - isa = PBXGroup; - children = ( - 9B6321B292B6BCA48E9BD6268BB60C34 /* AFNetworking.modulemap */, - 1CF307ACF82B2962F9E48DD0D029690F /* AFNetworking-dummy.m */, - C6B393724F3296B6116FF029FBA74D60 /* AFNetworking-Info.plist */, - 0CCA79288E187B2D3860B6A703D2D460 /* AFNetworking-prefix.pch */, - 2CA3017C0C359C5E90091B685A3A59EE /* AFNetworking-umbrella.h */, - 9118BCB61472BB3349D3BC26BBAA9EE0 /* AFNetworking.debug.xcconfig */, - 42D65971D9F40DBD6785D6A1D0AEBFBD /* AFNetworking.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/AFNetworking"; - sourceTree = ""; - }; - B739A483873A111E644B8250F33F752D /* Support Files */ = { - isa = PBXGroup; - children = ( - 45AD4A83CCB38F4F8C699AACEC09A405 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */, - 2520B86D707FEED91E8300C772989308 /* SDWebImage.modulemap */, - 244BBBE37C5D845F2BB8EAFBE6D12DE5 /* SDWebImage-dummy.m */, - A6B7C52A59144554A5C4CCBAF9A65AC8 /* SDWebImage-Info.plist */, - C77A046F5E5912D1BF11BAA897F3C198 /* SDWebImage-prefix.pch */, - 6407DC7FD67C9C74E0C3BA6B778AE0CD /* SDWebImage-umbrella.h */, - 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */, - 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/SDWebImage"; + path = "../Target Support Files/LookinServer"; sourceTree = ""; }; B94D7768568A9992200DB461E8CF687F /* Frameworks */ = { @@ -2189,95 +2751,38 @@ name = Frameworks; sourceTree = ""; }; - BE86B84F4BC9982281F5D2A106314CE2 /* Support Files */ = { + C79383FD5154699A5CFAA9706E39AF6C /* Support Files */ = { isa = PBXGroup; children = ( - BAF401BA2295E570793228F6E0B37E3F /* MJRefresh.modulemap */, - 882CA8EEAEB3525FB7AD66F6FFC2CF6A /* MJRefresh-dummy.m */, - B21F4D087C3795EA326FE588C03028CC /* MJRefresh-Info.plist */, - A923EA60F7DA10F8B88FCD5E16702406 /* MJRefresh-prefix.pch */, - 63277FA9AFB139990459DF6C57B238F5 /* MJRefresh-umbrella.h */, - 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */, - 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */, - DF4516C3B5E735B563E9749DFA6BCB51 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */, + 231F7AC591603501EC449D697A5C6668 /* JXCategoryView.modulemap */, + CBA389E7DB380F4012EFBD733C81D43A /* JXCategoryView-dummy.m */, + 4AA7B1CA514C2D6FAA50ACF865AF4203 /* JXCategoryView-Info.plist */, + C371FCAC7DF4BD1C57C3D164BD5A8759 /* JXCategoryView-prefix.pch */, + 84C7B13561A207799480933E11856D99 /* JXCategoryView-umbrella.h */, + D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */, + 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */, + 3E8FEF4AED255508CB8E745D200EDE89 /* ResourceBundle-JXCategoryView-JXCategoryView-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/MJRefresh"; + path = "../Target Support Files/JXCategoryView"; sourceTree = ""; }; - C5357083C92AA1ED2F84EF8CC6743655 /* Masonry */ = { + CA7AF39BD3D9214EBF1CEE7DE0683EE0 /* Pager */ = { isa = PBXGroup; children = ( - 00F09038ADB7D3ACE57173DD781066A5 /* MASCompositeConstraint.h */, - F738F2BE3FA2AD49A9764CC72FDBAFB2 /* MASCompositeConstraint.m */, - 44DDF1AA5625A95CA1C76B7546758226 /* MASConstraint.h */, - 1ADF5834236B788D4ADA4E85DBD68395 /* MASConstraint.m */, - 3D2A884E58C9EFE4F57508CA7855F449 /* MASConstraint+Private.h */, - D7117B22CB4967C93BC27DD5B1BA9865 /* MASConstraintMaker.h */, - 8FBE26B2A8BA76D5AA3E371D3CA2EAE6 /* MASConstraintMaker.m */, - 2C6B8E558F2970AA962D063345B79D19 /* MASLayoutConstraint.h */, - 82512BA24900AE369D9A35A08C7187CC /* MASLayoutConstraint.m */, - FE45E33A4A0C09CD0EBB222B7E40EE72 /* Masonry.h */, - 996E03E4CC36DB69F10AD9C8F02472C6 /* MASUtilities.h */, - 5593F84C8F2583B27ACE6E149D4B8B0E /* MASViewAttribute.h */, - 051A3BFDC2997068DD4E7A11FEBAE63E /* MASViewAttribute.m */, - 5A03E64C6033C8C1C7D8822CDE785EEB /* MASViewConstraint.h */, - B12BB85356FB25DB1C8CA459600D3F8E /* MASViewConstraint.m */, - 14454326E9CB6046C0CA3ABA3A33F187 /* NSArray+MASAdditions.h */, - FD16DAAD0E6C1AF6207145BC463DF81D /* NSArray+MASAdditions.m */, - B71D1DE227720C6548D26CB1380A595F /* NSArray+MASShorthandAdditions.h */, - 9005237D68B29ED337A382B01C2917F8 /* NSLayoutConstraint+MASDebugAdditions.h */, - 361FBE2595D99942EB88F5C0D34EB2DA /* NSLayoutConstraint+MASDebugAdditions.m */, - A732383A60ACA7498BD810AAC8E31192 /* View+MASAdditions.h */, - 7CF635A9AE952B4C70F06837B227DDCC /* View+MASAdditions.m */, - 2019C0149E4FA95B56F04C424C11298A /* View+MASShorthandAdditions.h */, - 5973F7F7FB04C5938E91F05D46F22B54 /* ViewController+MASAdditions.h */, - FD22D0365334ED54585130432CEF0912 /* ViewController+MASAdditions.m */, - 755B3574C116B6B21DA3F9684A3E744A /* Support Files */, + CF85D3EF505C17C565E691AC344CCE5C /* JXPagerListContainerView.h */, + 3BC6BE1672FC4A4AA70F4CBD7E23C808 /* JXPagerListContainerView.m */, + 359AD735B8CFD982730F6CEB0F56A487 /* JXPagerListRefreshView.h */, + 603287955CE071E6EBDC96A98AB97750 /* JXPagerListRefreshView.m */, + 8087FD233990CE787D9977700977D0B8 /* JXPagerMainTableView.h */, + 119B8F0EF70910D693FCCA816529E357 /* JXPagerMainTableView.m */, + 3A2E4F46AFE1B8413F8C1C81323B5831 /* JXPagerSmoothView.h */, + 7F178706A5ED2B8C0CCCEA56CC4A04B6 /* JXPagerSmoothView.m */, + D3F906D47799FB7ED8D4AA1C036BF3BC /* JXPagerView.h */, + D31BFB25B2F3620735E09AC6DE1CBFE3 /* JXPagerView.m */, + 95AF65BE191D8A598CB99DF63AF5085C /* Resources */, ); - name = Masonry; - path = Masonry; - sourceTree = ""; - }; - C70568B567541D2FA725A12B29BD1DF7 /* UIKit */ = { - isa = PBXGroup; - children = ( - AB771D1A9F6BE6B15418DB387EE5ADF3 /* AFAutoPurgingImageCache.h */, - 352F171C72D103D96370080978C50788 /* AFAutoPurgingImageCache.m */, - EF6748BE01C63A0BA85DC20DBF82AD80 /* AFImageDownloader.h */, - B1ABBFCC8D2F6B393D3F4389129E97F5 /* AFImageDownloader.m */, - A0368DACE23383F23784ADE51EC66773 /* AFNetworkActivityIndicatorManager.h */, - F0CB265D0463DC2290A542EFCE210632 /* AFNetworkActivityIndicatorManager.m */, - E382492BA0D4E5C9BEF289F10F029CAA /* UIActivityIndicatorView+AFNetworking.h */, - 37526D876665DA3E019DF167F09B21F4 /* UIActivityIndicatorView+AFNetworking.m */, - C8667A6D81C45427108730E481B7134F /* UIButton+AFNetworking.h */, - 77A510DEE4CCFDB66B19F133A209CDF3 /* UIButton+AFNetworking.m */, - 09060CD8F1658C398DC40CC0221DB178 /* UIImageView+AFNetworking.h */, - 6EFC403B9948A5A5D2DC7D8B3D9188A9 /* UIImageView+AFNetworking.m */, - 17E50DA329E2F435CC41C2257BD0C866 /* UIKit+AFNetworking.h */, - DA7F2EDBF237046CD345C29806E0A756 /* UIProgressView+AFNetworking.h */, - FA56E3002035BE556C5ED858D43F49DD /* UIProgressView+AFNetworking.m */, - 01CCBFAC5118E8E6A44DA067EF8F2523 /* UIRefreshControl+AFNetworking.h */, - A0FE1EF8C4E4226EA31F342E982E620B /* UIRefreshControl+AFNetworking.m */, - FC504494ABD0D1144D620FD1501F0E00 /* WKWebView+AFNetworking.h */, - E8284A1808A9A014FA6F2F4E23F36835 /* WKWebView+AFNetworking.m */, - ); - name = UIKit; - sourceTree = ""; - }; - C849337A62646C28DD26BB58FA313018 /* Support Files */ = { - isa = PBXGroup; - children = ( - 99462BD5694E37EA26675903E46200AD /* DZNEmptyDataSet.modulemap */, - 979F4BB7A6CE1AF72F02D7E7F5EC0D7F /* DZNEmptyDataSet-dummy.m */, - 2EE28E5F80B5EB3B89F864114E429417 /* DZNEmptyDataSet-Info.plist */, - C7CA2BC79CB47B27F4A1481476747F49 /* DZNEmptyDataSet-prefix.pch */, - 972173A04BB5350B482CEE39EFFBE0EF /* DZNEmptyDataSet-umbrella.h */, - 1FABCE7CC795C2D70EA3AAEE06EDD595 /* DZNEmptyDataSet.debug.xcconfig */, - 1FABA21668D0F7EA5314EF00C93346A5 /* DZNEmptyDataSet.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/DZNEmptyDataSet"; + name = Pager; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -2285,43 +2790,99 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, B94D7768568A9992200DB461E8CF687F /* Frameworks */, - 575B9A37FCA1D986BF2159F1DC5640CC /* Pods */, - 92804E5AAC2424AC0EE6ED237A2C4B6F /* Products */, + 797CA9CCA9EBB2192EC635FA118D2257 /* Pods */, + 1CD312D2E666224315BB46AF04231D5D /* Products */, F7ED90CD818DD0484BF7DB0E1E3B9AB2 /* Targets Support Files */, ); sourceTree = ""; }; - DDE3584A435E1B64AD756057D19173E3 /* Support Files */ = { + D44B6A743503D502C7C50E1E40396614 /* FLAnimatedImage */ = { isa = PBXGroup; children = ( - D2892265E5746B87D5D6CDB4D0215238 /* LookinServer.modulemap */, - 802213010DCF77864E95B3A910F64EA0 /* LookinServer-dummy.m */, - 43936D8CC7E56B4026AF09D6B9E1B1BD /* LookinServer-Info.plist */, - 5EF9433AE70A3B3667F4B208CC88432A /* LookinServer-prefix.pch */, - 96AA5B4DE9A3DA12F53F6CB5D9AC99E2 /* LookinServer-umbrella.h */, - EA60319FCBE8ADFF00A52058DBE7C157 /* LookinServer.debug.xcconfig */, - 506D2884030F20EC06A10DCFA7347584 /* LookinServer.release.xcconfig */, + 761A654F557EA15B24079623AF9184F9 /* FLAnimatedImage.h */, + CE3837EC7E52B2C2855416D01CB974C7 /* FLAnimatedImage.m */, + BD89A8E0323AB57CE283C150C3D4C556 /* FLAnimatedImageView.h */, + B4121F7B04BCCD0FB01ED16A27F6E571 /* FLAnimatedImageView.m */, + 119FAC4028DEE3EECB43C1CA751847B8 /* Support Files */, + ); + name = FLAnimatedImage; + path = FLAnimatedImage; + sourceTree = ""; + }; + E186B0D6F7241CA024EE1DBD99B15A49 /* LookinServer */ = { + isa = PBXGroup; + children = ( + 6DF1AE20DC3ECAE9AA7B19DCCDE41F5C /* Core */, + B5D3B16165F3FDCE26DFE706A413FE76 /* Support Files */, + ); + name = LookinServer; + path = LookinServer; + sourceTree = ""; + }; + E603CC254B20E39E7561F9D06E23A39C /* LSTPopView */ = { + isa = PBXGroup; + children = ( + 24E6D9CD604967D0A1CF25370DFD7865 /* Code */, + 5BDD879F155F843CED343AAC8812F0D6 /* Support Files */, + ); + name = LSTPopView; + path = LSTPopView; + sourceTree = ""; + }; + EBAE2342A272E945D29705DB9B28137D /* Support Files */ = { + isa = PBXGroup; + children = ( + E032CFFEFE6D0B2BC568E604265CD74C /* DZNEmptyDataSet.modulemap */, + FFFC6DDC16F58E87A8A30CA92223320F /* DZNEmptyDataSet-dummy.m */, + FDF2879588F648F9ACE28CEDF3C4F456 /* DZNEmptyDataSet-Info.plist */, + 71D68B7747CE473E42AF5D55F07BB002 /* DZNEmptyDataSet-prefix.pch */, + A05508640C7796358B45E0B5C0C73183 /* DZNEmptyDataSet-umbrella.h */, + 6315771A902975A20B41342DD5234115 /* DZNEmptyDataSet.debug.xcconfig */, + 7755C313C99E29481B2A9849C31152BE /* DZNEmptyDataSet.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/LookinServer"; + path = "../Target Support Files/DZNEmptyDataSet"; sourceTree = ""; }; - E2525B53F604A89BD6A5BEF73F8706C4 /* Security */ = { + F3242F712BF128531D3F535A6FD297FA /* MBProgressHUD */ = { isa = PBXGroup; children = ( - 68BFCD31885FD8664001BB1EFAC74751 /* AFSecurityPolicy.h */, - ED1DD2A27A7141151DAB033BD707A1EF /* AFSecurityPolicy.m */, + A98C848E174628ED3A950CA220B4CB9A /* MBProgressHUD.h */, + DB3619AB8798CD8CAE31E140F80F2DC0 /* MBProgressHUD.m */, + 4B2DDDE1A44400085093EA342624D230 /* Support Files */, ); - name = Security; + name = MBProgressHUD; + path = MBProgressHUD; sourceTree = ""; }; - F714764FE1C9470C450626D766B18CA6 /* Resources */ = { + F401BC1732EB9D32AE09D69A4179A68F /* AFNetworking */ = { isa = PBXGroup; children = ( - 4056B0FA7CFCA3F0B3BA1F921297B1CC /* MJRefresh.bundle */, - 28D5D9D40BE7D9F76DB8A620D92D6F6C /* PrivacyInfo.xcprivacy */, + 3B56A01456E5166288620482B2A2180C /* AFNetworking.h */, + 0A1A9864A60D31E01F2EAB72403B1E95 /* NSURLSession */, + 89DEB64DC275ABFAFABFE909ED131FA2 /* Reachability */, + 0727E8966E92BA27516AA23EF6747FF6 /* Security */, + 8F7F6DF25B41B68A636D15AEFC153E23 /* Serialization */, + F7991E885F1A08F44C8372D9EB91EF60 /* Support Files */, + A1A0EBDEE093FF055ADC1FB66AD4A1B8 /* UIKit */, ); - name = Resources; + name = AFNetworking; + path = AFNetworking; + sourceTree = ""; + }; + F7991E885F1A08F44C8372D9EB91EF60 /* Support Files */ = { + isa = PBXGroup; + children = ( + F549CCE65FFF5AC81AB62FDCCB6CB8DC /* AFNetworking.modulemap */, + 17CD950341D8F0132ADFEDC39B7267A7 /* AFNetworking-dummy.m */, + 709DA7415B508D723EE552B201284026 /* AFNetworking-Info.plist */, + 82F0AA3C9E3854CEA18B30E16DC474FC /* AFNetworking-prefix.pch */, + A1067B051CF7A4C36817E6F668A3E7A6 /* AFNetworking-umbrella.h */, + 8A6F594F279129456C02C7701DE5EDC3 /* AFNetworking.debug.xcconfig */, + A697ED78520252C2C8CA71D13BA57F79 /* AFNetworking.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/AFNetworking"; sourceTree = ""; }; F7ED90CD818DD0484BF7DB0E1E3B9AB2 /* Targets Support Files */ = { @@ -2333,173 +2894,55 @@ name = "Targets Support Files"; sourceTree = ""; }; - F83577C0BD1D647CC9CF750D800647CB /* Core */ = { + F897C86CB2866AB045A64520219B6522 /* Resources */ = { isa = PBXGroup; children = ( - A187D3CE401AEF4272748BA58A834812 /* NSBezierPath+SDRoundedCorners.h */, - 63746C791045958FEE981F032ACCAECE /* NSBezierPath+SDRoundedCorners.m */, - 01B6539E05000228B7BBD9BA57EDF5E3 /* NSButton+WebCache.h */, - DEA09040DACD7A53B041773DD59096FC /* NSButton+WebCache.m */, - 107D93AEC1E186A8F21341BFB523B22C /* NSData+ImageContentType.h */, - AE9EAD92339D5CAFE9DD672B7A3B6E7D /* NSData+ImageContentType.m */, - 1EFEA57CFC8959BF5EF4B795BD808107 /* NSImage+Compatibility.h */, - 9BC9B980A57804E48A923737AE36ACB0 /* NSImage+Compatibility.m */, - 086D3945C39C8554602424E64D1A9F0B /* SDAnimatedImage.h */, - F24C826B62D5E083C9293F7721C463C2 /* SDAnimatedImage.m */, - 6B130ACC8A24ECD0BF3BD07D5AF21E4D /* SDAnimatedImagePlayer.h */, - C82B001CD34AC553F11A55D1E576C902 /* SDAnimatedImagePlayer.m */, - 119E6680DBF287ACAD4F054AA0D5AE17 /* SDAnimatedImageRep.h */, - AB547BD41867170F26173D27CE44DCE6 /* SDAnimatedImageRep.m */, - 3E5C8F44BD62EB86605C88FA434E57ED /* SDAnimatedImageView.h */, - 17FD1B21DCC89D66865655294A85A817 /* SDAnimatedImageView.m */, - 5839F6C7ABFF6E515370151D7E470262 /* SDAnimatedImageView+WebCache.h */, - CE909BA066F9B44E9C2F036FF3FD44FE /* SDAnimatedImageView+WebCache.m */, - 2F61547B42B4881FB5D37EF93F1C324C /* SDAssociatedObject.h */, - 1DBD3AB6DB93D7C2BE4FB5D89E1938FD /* SDAssociatedObject.m */, - 776331A7467F397FCD02F62B233A6E93 /* SDAsyncBlockOperation.h */, - C7E35B5D53702D7A355AD38231170EAB /* SDAsyncBlockOperation.m */, - 9FC0CB167AF5751B03431E60D722046F /* SDCallbackQueue.h */, - 20E25456C8490BA5725AE87E9508AF07 /* SDCallbackQueue.m */, - 1D13B75999F5A8EF9D0BABA6DAF09179 /* SDDeviceHelper.h */, - 343301F4ECFA1778F70E1EC266C1848F /* SDDeviceHelper.m */, - D9FB07B277FA3212774D9D7EF2156759 /* SDDiskCache.h */, - 889630ECFAA2151C2C1F334458A5C110 /* SDDiskCache.m */, - AD1C2B98D240951DA7BD821093E6C395 /* SDDisplayLink.h */, - 110C7A39306E93E5D29F1709FE16720F /* SDDisplayLink.m */, - 622B25C415B746B0A4DE004201B6C241 /* SDFileAttributeHelper.h */, - 31BB750A026F77ECDF9EFB2711DEC741 /* SDFileAttributeHelper.m */, - 387AF8AF8500E50CC311582863B31CFF /* SDGraphicsImageRenderer.h */, - 4FA72F287E0DE573DD735BAE9AD7E816 /* SDGraphicsImageRenderer.m */, - BF5EC4E67D9695435096AE8FFF0726FA /* SDImageAPNGCoder.h */, - 9B9528B0058E986186BACF5E7A40A742 /* SDImageAPNGCoder.m */, - 84DD851B5FDE16625FA07D9C4D1622E4 /* SDImageAssetManager.h */, - CE8561E7F90B3736EA348E5236FECB1C /* SDImageAssetManager.m */, - C685758668AFAC91E0AE4675AEA80600 /* SDImageAWebPCoder.h */, - 3F3611B9193976C6AC5268E458B3F9F6 /* SDImageAWebPCoder.m */, - 3EDF0BD9574A366871EF5B3FBEFB906D /* SDImageCache.h */, - 6F98986A52AAB68B64127A983F8CB7D9 /* SDImageCache.m */, - 5F62EE3A88E154ADAC90DDF6BC60DFB6 /* SDImageCacheConfig.h */, - 9694A97A95DD31F14A6A155FCCFE7837 /* SDImageCacheConfig.m */, - AD7824F87B7A4AC0EB49B7B856736BF2 /* SDImageCacheDefine.h */, - BDC5D95848173A06A25E49216A4BEFDC /* SDImageCacheDefine.m */, - 023A9DE33A4A369492D910BE237BE415 /* SDImageCachesManager.h */, - 9C27FE20E006C874307EF5F2B30AA69E /* SDImageCachesManager.m */, - 79B0D13A04128B711BB3AFF0676EC3D0 /* SDImageCachesManagerOperation.h */, - 315C5770DCC0584893C24972BAEDEB39 /* SDImageCachesManagerOperation.m */, - 51B83EEE0D453B8B01D8275D3EEBF4BF /* SDImageCoder.h */, - A43798E6CE0478C1CA6ECFD6AE110593 /* SDImageCoder.m */, - B0023999B588A745D2530760778D09F9 /* SDImageCoderHelper.h */, - 069FA883A4FACC46317AB2BE1BDE30E4 /* SDImageCoderHelper.m */, - 9FDBCFE0DF35F1346C9E17295438B88A /* SDImageCodersManager.h */, - 5A9184E6EEBE4764FF941193DF28C44D /* SDImageCodersManager.m */, - 5F618581DFE1104C16FA02EB2B00F1B9 /* SDImageFrame.h */, - A8A5F422D3A80975E78C20D9980BBAE7 /* SDImageFrame.m */, - ABF08650352052DEA4797A89BFD856FF /* SDImageFramePool.h */, - 3F01F027ADEF8C49A4605D787E41BD1C /* SDImageFramePool.m */, - 31C99A570F5F1154C55309832EC47D0D /* SDImageGIFCoder.h */, - 37B5AAFF8675170D1D643B53FECA47E3 /* SDImageGIFCoder.m */, - 7F2363FB988E5DC9705FE22B29B7B4F8 /* SDImageGraphics.h */, - A4288DFF17DF27DEEB1590D7281FBBD7 /* SDImageGraphics.m */, - D2E3EA9E3A659E147112B9E7A63EEC56 /* SDImageHEICCoder.h */, - 7859E48715647D45C428FB82F31DB2BA /* SDImageHEICCoder.m */, - 71086CB516DC09CA5D29736469412558 /* SDImageIOAnimatedCoder.h */, - 741B32704926AB941D9209B2D37E2B8F /* SDImageIOAnimatedCoder.m */, - 9358338FB49CFCB7417D22C85E339488 /* SDImageIOAnimatedCoderInternal.h */, - 8A46088339E0DB93FCE586878F070297 /* SDImageIOCoder.h */, - F0F086732258C7153899AB5D8C678B02 /* SDImageIOCoder.m */, - A65F19FCE0D1235D1B87CDFD5146518C /* SDImageLoader.h */, - 2F3AD0011FB2CA087E42B18DDAD25253 /* SDImageLoader.m */, - 7FCA5CF6F4A026896316D8731B3E493F /* SDImageLoadersManager.h */, - 0C895614137416E86433C8E5EAF1D3CD /* SDImageLoadersManager.m */, - 524E9F65E894111FFD9563F30298E596 /* SDImageTransformer.h */, - 97C8222012D0B30C2E5C40B4867A1AAF /* SDImageTransformer.m */, - 8204B00622081F3C51B1FC2D83A2D0D0 /* SDInternalMacros.h */, - 56951EB060616356F951F35CBD9A6E42 /* SDInternalMacros.m */, - 584341F234CCB4128A1A3854A3371179 /* SDMemoryCache.h */, - 5CC308EFB0F9E5B050F606DDD3E7A44F /* SDMemoryCache.m */, - BC5A2383372F42B2452808A886E02C6B /* SDmetamacros.h */, - CC87F6E60998716F313AD85E3F2F0C78 /* SDWeakProxy.h */, - E2E3CFC89381BAE830E4045CE02E25EB /* SDWeakProxy.m */, - F6E7A6844647C14F0728CBB9EC73AF19 /* SDWebImage.h */, - 662D6F244CE3008639589EE4EA829B53 /* SDWebImageCacheKeyFilter.h */, - 8EDBEC1105ABEB5730250B28CB605E44 /* SDWebImageCacheKeyFilter.m */, - C84FAFE47B2E31104A515395A5239442 /* SDWebImageCacheSerializer.h */, - 360B7B34B46811D44994D83FAC09E663 /* SDWebImageCacheSerializer.m */, - 0E376CA03D27B523F7F180B9EC99BD7C /* SDWebImageCompat.h */, - BF559CBB24F4A49720F72A32ADDCCFE2 /* SDWebImageCompat.m */, - 1B4B2DB5DB2A6C79E9C1A5ABA6070B58 /* SDWebImageDefine.h */, - 2BAFAB49E37FE01E69DA8AF02F372885 /* SDWebImageDefine.m */, - D1995E5A7C78EB3AC4764F06A4A7E676 /* SDWebImageDownloader.h */, - 5703D16A54AB62E92D3E21CC6E5EA55B /* SDWebImageDownloader.m */, - 1B2F034522C4ACEB56FB7ECF5D3CDFDB /* SDWebImageDownloaderConfig.h */, - F27AC2454398D7EA8C514D5B2F6469EF /* SDWebImageDownloaderConfig.m */, - A34081EC91EFEC16FB92BEE1A470458E /* SDWebImageDownloaderDecryptor.h */, - 3663272D41C8B58200506DDA7E7A2903 /* SDWebImageDownloaderDecryptor.m */, - 2D7205061D92FA9AEDA20BCF1B6FF9B7 /* SDWebImageDownloaderOperation.h */, - C4D31F6949E2640BBC06F6F5E862EA6B /* SDWebImageDownloaderOperation.m */, - 0E350DE3AE3DE0F5FC5BD9A2EB159387 /* SDWebImageDownloaderRequestModifier.h */, - 23518377A93659DE7C8E586309E28896 /* SDWebImageDownloaderRequestModifier.m */, - FB689A278C80C26E3B3E80EDA3887106 /* SDWebImageDownloaderResponseModifier.h */, - FB095F0736BB4D6DAB423B110675CCD9 /* SDWebImageDownloaderResponseModifier.m */, - 4A980D9B3DB04133A466725A1C6C22F8 /* SDWebImageError.h */, - 70D5B55A578973F4D162548B46979D49 /* SDWebImageError.m */, - C657F16F9FE7919D2B27F05D611C2F2D /* SDWebImageIndicator.h */, - 37B6B4596E25AE5CE5BE1FE14A6AF93B /* SDWebImageIndicator.m */, - 875E237862F4488FBFC692D1AB2DBB91 /* SDWebImageManager.h */, - 92B30D23B01D493E996B4DF061CC3062 /* SDWebImageManager.m */, - DE5FC1FDACC1A466A889091A6DD9D1B4 /* SDWebImageOperation.h */, - E41E643057B645A4E6C5FEA5E52213CB /* SDWebImageOperation.m */, - 9C6E20B7CDAEE04E340BBA081726D5AC /* SDWebImageOptionsProcessor.h */, - 56BB70CC7870B5212EFAD74AF8199F17 /* SDWebImageOptionsProcessor.m */, - B8F37F4AA285AB6E2540A4063D8B802F /* SDWebImagePrefetcher.h */, - 237D10385C2D9391B809DFD74B21A570 /* SDWebImagePrefetcher.m */, - 057F1DBD0EB25FF8CA833DC6F478BF32 /* SDWebImageTransition.h */, - C930EDADB5661C1F591CA4E0A60BCA26 /* SDWebImageTransition.m */, - 1458CC53A93F0D10D4564ECD3E1C2D28 /* SDWebImageTransitionInternal.h */, - 16276D593D3F4D227902AF3A1424A4AC /* UIButton+WebCache.h */, - EEE26007FA20AE54DB39973E3D1D76FF /* UIButton+WebCache.m */, - D5D847654327E7F1E333D40CD9665067 /* UIColor+SDHexString.h */, - 5F9D4F9A4CA404E7287B2F6CBFF382D1 /* UIColor+SDHexString.m */, - 67D554550B250775795416CCAF8BD370 /* UIImage+ExtendedCacheData.h */, - 16A00EF4CD873ABB9D94776FACC7C92F /* UIImage+ExtendedCacheData.m */, - 4D8DA2BACDEA7D78265D10D62F7A3BF7 /* UIImage+ForceDecode.h */, - 8C63EE1B9AB32B647D64489A498987B3 /* UIImage+ForceDecode.m */, - B2770F360CD876399FE83C30619DBC24 /* UIImage+GIF.h */, - 51E9651B0CFE7B40336ABD29412D3C39 /* UIImage+GIF.m */, - E6EDBB7EFC23401D50E3438EB3430A58 /* UIImage+MemoryCacheCost.h */, - 4F3DBAC2BF3E2D408BCB049042B8B067 /* UIImage+MemoryCacheCost.m */, - 3BE50AD720E95B8938AAE668F71561B7 /* UIImage+Metadata.h */, - 610BD8934663142C5DDE2AF00042FD13 /* UIImage+Metadata.m */, - 88C23FF116C3257A27A26A897D5AE6DB /* UIImage+MultiFormat.h */, - 452B8DD5CBF29E80E794E957D7ACEE0F /* UIImage+MultiFormat.m */, - 8B8786CBA6B78647E486B3CA129F2DAD /* UIImage+Transform.h */, - 95F5264D9ED9939AE536B5201D80DB5E /* UIImage+Transform.m */, - 29D938D1AE315B5A7E490702D4DBEED7 /* UIImageView+HighlightedWebCache.h */, - 3F6EA8BCC592FC8C87F6AB86D1783731 /* UIImageView+HighlightedWebCache.m */, - 817B07C3E952A5A5F2082BE15C3C500E /* UIImageView+WebCache.h */, - CE1FC58856D64F439A2DB39A5CBEAF01 /* UIImageView+WebCache.m */, - A0C23E787A5997AF276176CBB988D241 /* UIView+WebCache.h */, - AFC953B00F77A76AF38E0FA2C8AB5F03 /* UIView+WebCache.m */, - 8166AA98A11AE7F3F46DBF2C481F6DF5 /* UIView+WebCacheOperation.h */, - EA5F1011035F011FF8DB93B55405B76E /* UIView+WebCacheOperation.m */, - B354D25F9AAB5A1E64BA7AAED1BA9991 /* UIView+WebCacheState.h */, - EF5BED7A35D904E495E540434D07B398 /* UIView+WebCacheState.m */, - 47E1BAF577BBA403FE7B999A122D3E59 /* Resources */, + C1227D6957584FA14F5EFE311854C54A /* PrivacyInfo.xcprivacy */, ); - name = Core; + name = Resources; + sourceTree = ""; + }; + FB21115538DDA6029001E62F3AB59544 /* LSTTimer */ = { + isa = PBXGroup; + children = ( + C4A783F974F95D31DCCDA721D4F965EC /* LSTTimer.h */, + EF426A2B87D32263A2C56A13732C8201 /* LSTTimer.m */, + 9CF605192227F87CF3E8D7EE63BDF0B1 /* Support Files */, + ); + name = LSTTimer; + path = LSTTimer; + sourceTree = ""; + }; + FE875CB7596498A67CF56F73315D2BDD /* DZNEmptyDataSet */ = { + isa = PBXGroup; + children = ( + 797DE6794620B6AD238FF0B8B61A1B32 /* UIScrollView+EmptyDataSet.h */, + 3F77AB571A5252972C84B67134918B5F /* UIScrollView+EmptyDataSet.m */, + EBAE2342A272E945D29705DB9B28137D /* Support Files */, + ); + name = DZNEmptyDataSet; + path = DZNEmptyDataSet; + sourceTree = ""; + }; + FFFE14F5389A574527140C5AC02880B9 /* Support Files */ = { + isa = PBXGroup; + children = ( + 19AE4F199F0E794B9F2956EE4530887A /* MJExtension.modulemap */, + 4D4A62A4549AC17B0296FF7D29E15454 /* MJExtension-dummy.m */, + 6C338AB8936504A929CF0929B7D23C9F /* MJExtension-Info.plist */, + DA5203B4ACDB110F236306ADB5531C98 /* MJExtension-prefix.pch */, + AE09548D63659FAE72F5C6F1EBF230FC /* MJExtension-umbrella.h */, + FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */, + 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */, + 6A2C1D3548C9E3091DE847DA61A18E5B /* ResourceBundle-MJExtension-MJExtension-Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/MJExtension"; sourceTree = ""; }; /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 08C9EEFC6E73AD5D05604531B118C3C4 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 5109F520B2E1FF2F30F9DDF5E584E028 /* Pods-keyBoard-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 09EE4349480B078AFE00E65B49E502BF /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2755,6 +3198,19 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 7A48625CF583F169B2CE65398246355A /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + D380F9C945002DBF2E7D64983ABDC890 /* JXPagerListContainerView.h in Headers */, + 20D5706AD3ED295B4FBACD8825DC3A1E /* JXPagerListRefreshView.h in Headers */, + E77175BDAE33AADF66766B28AA710247 /* JXPagerMainTableView.h in Headers */, + CA9AFE3460622CC65F75A2DDE845F6E9 /* JXPagerSmoothView.h in Headers */, + 85ED10431A6C01970A3DAD8A8C9BF25F /* JXPagerView.h in Headers */, + 3CE13969772F4180701A575FAB98E978 /* JXPagingView-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 80AAB619EDBB0EBDBBC84368EED44AA3 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2776,6 +3232,74 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8DFBCFE77A898FBE83C48772D7F569F9 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2EEB29D2C570F11620D4CF90D7DFD569 /* Pods-keyBoard-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 920775366A5F97AE256FADDDCDBD9740 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 060B00D5B019369654AEAB7C116DC119 /* LSTTimer.h in Headers */, + 48EB84614F04E6089393ADDFA4BA8603 /* LSTTimer-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 93691E22DE50657D0D08BA5D05234F57 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + A643679AC9795083558C6D8E33AF6151 /* JXCategoryBaseCell.h in Headers */, + C74589E03918328E4D27EFCBF6C4A0B8 /* JXCategoryBaseCellModel.h in Headers */, + 88197D535BEBB0F4B71F106AE300631D /* JXCategoryBaseView.h in Headers */, + 780EDF2615923E89C179EB5A60D2DA41 /* JXCategoryCollectionView.h in Headers */, + 2EC7BA321016EC71EA595E4BAF0B7E8B /* JXCategoryDotCell.h in Headers */, + 22C38AE7AB145224FF646303AFED11D2 /* JXCategoryDotCellModel.h in Headers */, + 6B9D333C18DDBF4E7CC889F7FDE05EEA /* JXCategoryDotView.h in Headers */, + 4C8C34A09D61A3881DFB1A544A2CA2A5 /* JXCategoryFactory.h in Headers */, + 7D1E98BE9558F6E5E29B0E81EC526A90 /* JXCategoryImageCell.h in Headers */, + B0F512045830FAB66AE7526E35501800 /* JXCategoryImageCellModel.h in Headers */, + 55910DBCDF99E39955BE01EAD8251081 /* JXCategoryImageView.h in Headers */, + BD7E02AB6057AD5A6AC513C34D508135 /* JXCategoryIndicatorBackgroundView.h in Headers */, + ECC6BC85943DB873215826A344A462FD /* JXCategoryIndicatorBallView.h in Headers */, + 5CAB535753B28B463140F421E9B00136 /* JXCategoryIndicatorCell.h in Headers */, + 6BE86A0FFB0D69C6098CC75E1FB4E8B5 /* JXCategoryIndicatorCellModel.h in Headers */, + 168889E3E897E6D6102A2AA7F7C47496 /* JXCategoryIndicatorComponentView.h in Headers */, + BCEEAFC24178DE5AABACC74245CE1739 /* JXCategoryIndicatorDotLineView.h in Headers */, + C8685678D1B020F87365D022216FFE29 /* JXCategoryIndicatorImageView.h in Headers */, + E2DF1B379D9444D40D78320E90B1DC07 /* JXCategoryIndicatorLineView.h in Headers */, + E52DCE394A6E02B6BA11FA64624F68F3 /* JXCategoryIndicatorParamsModel.h in Headers */, + 1399CD097E164E2C7A6882F0C8FFA525 /* JXCategoryIndicatorProtocol.h in Headers */, + 0AA1842830C770B1E299BAC977E813D9 /* JXCategoryIndicatorRainbowLineView.h in Headers */, + 546DE9D8142C6D8554E083C6FD65D0BE /* JXCategoryIndicatorTriangleView.h in Headers */, + F1ABB5428A1CCF2EAC42A4C3B388F25D /* JXCategoryIndicatorView.h in Headers */, + 11AD210D385F977383AFB974D3CDEF53 /* JXCategoryListContainerRTLCell.h in Headers */, + 6F75FDB9BE37C9A8473F97B1696B5D09 /* JXCategoryListContainerView.h in Headers */, + 31FA8264AA5553AB85039530B1FB8C4B /* JXCategoryNumberCell.h in Headers */, + BFD8EC99CD8DA66E3C6C0B3EE8CC4859 /* JXCategoryNumberCellModel.h in Headers */, + 1C1BC9F0555B36914FF5278D30152DE6 /* JXCategoryNumberView.h in Headers */, + 4424E7517B86FE622BCD3D5040FC579C /* JXCategoryTitleCell.h in Headers */, + C07F8A334C739FD38D9CB5C5239D683F /* JXCategoryTitleCellModel.h in Headers */, + 70D30BC7134E3C8006BF0B6A4B438057 /* JXCategoryTitleImageCell.h in Headers */, + 1F778CA18D1F4A50D9F15280B25D10EB /* JXCategoryTitleImageCellModel.h in Headers */, + 874CE8F3650D220092077846A46598E6 /* JXCategoryTitleImageView.h in Headers */, + 1DC161351EBD409CC622E826340E4FD8 /* JXCategoryTitleVerticalZoomCell.h in Headers */, + 17341EDF872432C3966B77976F3E0470 /* JXCategoryTitleVerticalZoomCellModel.h in Headers */, + 52E60EE26D065DB63D272298AC8867DF /* JXCategoryTitleVerticalZoomView.h in Headers */, + 88889F5DA04EB4FA08125742B5E522DA /* JXCategoryTitleView.h in Headers */, + 5EE53074B8A35D48AB76CAF38C88A37A /* JXCategoryView.h in Headers */, + B948DCB652CEF1509FBE410D85844A53 /* JXCategoryView-umbrella.h in Headers */, + 4281CC31F4D4EAE690F999C778F17E5B /* JXCategoryViewAnimator.h in Headers */, + A1BFCC1BC5107F5F72BDBDB98E12559C /* JXCategoryViewDefines.h in Headers */, + CEC9EF043F69710AC29940EB4E1E2B19 /* RTLManager.h in Headers */, + F458385338076D8734DD74BE4A94B33F /* UIColor+JXAdd.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; A903C05DE36F05DE8EA13A2F4A3D52E8 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2850,15 +3374,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E882F8283367BD8AAAD8C29752D10A01 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 4DE8A481697088E8BBAEB51042F14ABE /* LSTTimer.h in Headers */, - 3338AA0580424EFB0FE59C3A37702A47 /* LSTTimer-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -2880,31 +3395,50 @@ productReference = A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */; productType = "com.apple.product-type.framework"; }; - 18BD026D2210082A239FC15D072FD5BF /* Pods-keyBoard */ = { + 16704C6B67439DA959DB043702C75A7A /* JXPagingView-JXPagerView */ = { isa = PBXNativeTarget; - buildConfigurationList = 8C2F7BD693160E3E0554D67620B26026 /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */; + buildConfigurationList = DDFDCCDD059A0AA2C5DEAA3588DE41A7 /* Build configuration list for PBXNativeTarget "JXPagingView-JXPagerView" */; buildPhases = ( - 08C9EEFC6E73AD5D05604531B118C3C4 /* Headers */, - 86BA6B9707AE3B1250A31F523EB8DA55 /* Sources */, - 3131D37BE47B5A01B63EFA14B2A9822F /* Frameworks */, - BA262B4873E56403AF0269D5EAEE5E15 /* Resources */, + 2BCD1AC59060560FEAF74FFFB66F0F9F /* Sources */, + AEC8B8EF401BFAE066232C67738FEB8F /* Frameworks */, + 3A5A6604A2DC218F056C1D04F3DB43CD /* Resources */, ); buildRules = ( ); dependencies = ( - 31B285B5CDDD3D0B75165B7E60875540 /* PBXTargetDependency */, - CBD95011A36DFDA2919E5B3F37459EAE /* PBXTargetDependency */, - A1343B6079DE025DBF916F7B81708222 /* PBXTargetDependency */, - 74D6D9BB82D0FFCAFC06C440BDAB1F50 /* PBXTargetDependency */, - A707874A71DF7C81F9119F9728626E2F /* PBXTargetDependency */, - AC48B21768E35ECFC605F51956C6C305 /* PBXTargetDependency */, - 579B996E9942825FE7A26DE3FF3B1783 /* PBXTargetDependency */, - A5740B9DC31236AD3E4CAF5F1E336987 /* PBXTargetDependency */, - F59B858EFCDFF0A159DB925DA2871952 /* PBXTargetDependency */, - 610CFF14AC9EFAF66F9721E282831AE2 /* PBXTargetDependency */, - FBD20C5E1BFF0138D14604A3E9892BAE /* PBXTargetDependency */, - E5D2D0ED9FB1C4A09640F1C1E02963E1 /* PBXTargetDependency */, - EF1B1186931F596FE79ABDD95C3DB3DB /* PBXTargetDependency */, + ); + name = "JXPagingView-JXPagerView"; + productName = JXPagerView; + productReference = E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */; + productType = "com.apple.product-type.bundle"; + }; + 18BD026D2210082A239FC15D072FD5BF /* Pods-keyBoard */ = { + isa = PBXNativeTarget; + buildConfigurationList = 0C35983ABF9DEA95C8B29A7F8482E5AE /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */; + buildPhases = ( + 8DFBCFE77A898FBE83C48772D7F569F9 /* Headers */, + 6F3E38196FED4BD0677C98E1E0C6C80C /* Sources */, + 96D238A614CBDD553073EEECBB41281C /* Frameworks */, + 0D07E8D675635C881CCB2DF69C6E7629 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C9B3D25C71255E9DFCE9A741B4BFF3BA /* PBXTargetDependency */, + 3A364CBA383FC741F9B9507BAD524A1F /* PBXTargetDependency */, + BFFE20AC77F2320185030DE7FAF95A94 /* PBXTargetDependency */, + D1DA99819466A8666489AD8ABE8C04A5 /* PBXTargetDependency */, + B48CA5483F83ECB025E2CF88895F910F /* PBXTargetDependency */, + E3CE26F82AC9FA20A1C696AD05CBE607 /* PBXTargetDependency */, + 3B95059A3ABF817D0636F90C4FE24A57 /* PBXTargetDependency */, + 5B8D2BAFD03C6848DC5CAC776971023C /* PBXTargetDependency */, + A036241AE2FD9088F99D8A60AFCD1514 /* PBXTargetDependency */, + 3A33DC80646EE1FEC3F5A81D6D88094E /* PBXTargetDependency */, + 7986360E8EC5F57AE4012FDDB8A6D701 /* PBXTargetDependency */, + 67D06D25CF9C7EFF394097D2AFFD9DF9 /* PBXTargetDependency */, + 75023E301D2D56786B69F7BD1B998E06 /* PBXTargetDependency */, + 004C87AF28627224BAF0F49A32B4B934 /* PBXTargetDependency */, + A8CFE4713F435C9FF4AA9FA8D460F3A7 /* PBXTargetDependency */, ); name = "Pods-keyBoard"; productName = Pods_keyBoard; @@ -2941,7 +3475,7 @@ buildRules = ( ); dependencies = ( - 706669DE3EF507E6ED7756D757CB0803 /* PBXTargetDependency */, + E918590C6B33D5799C74C34CD2BB5722 /* PBXTargetDependency */, ); name = SDWebImage; productName = SDWebImage; @@ -2978,7 +3512,7 @@ buildRules = ( ); dependencies = ( - B58F0F72931D247BC05C471A0226C5F1 /* PBXTargetDependency */, + CA5A82B04166A988C7834D6E5F130D24 /* PBXTargetDependency */, ); name = MJExtension; productName = MJExtension; @@ -3005,12 +3539,12 @@ }; 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */ = { isa = PBXNativeTarget; - buildConfigurationList = 7F4FDDAED424001F24F18A5ED96ABA7B /* Build configuration list for PBXNativeTarget "LSTTimer" */; + buildConfigurationList = 15624921AFB223858478F40D5FC30D8A /* Build configuration list for PBXNativeTarget "LSTTimer" */; buildPhases = ( - E882F8283367BD8AAAD8C29752D10A01 /* Headers */, - 7C1E7BC9142AEAACC37BBFA5736E21E6 /* Sources */, - F69A92A5C344308FA427BBAED4888BA0 /* Frameworks */, - 0C2C6D22B659FD9FBD84420DAAD00401 /* Resources */, + 920775366A5F97AE256FADDDCDBD9740 /* Headers */, + FEEB3280DD885E20A0F8EE0C8798CAB2 /* Sources */, + C44502CD70E5B1200927F3A081A60365 /* Frameworks */, + 848FF7A10EE5C029902ADD3C55750C9F /* Resources */, ); buildRules = ( ); @@ -3051,7 +3585,7 @@ buildRules = ( ); dependencies = ( - DE3981E6419BE407CF93074BF535E2F5 /* PBXTargetDependency */, + 7244D798B35A90122DF5F2EBC2C25073 /* PBXTargetDependency */, ); name = MJRefresh; productName = MJRefresh; @@ -3088,20 +3622,39 @@ buildRules = ( ); dependencies = ( - D2AEA24D136504A1C3C238158CDC14AD /* PBXTargetDependency */, + C8CAA3DF1F34F4917BE346E82645B672 /* PBXTargetDependency */, ); name = LSTPopView; productName = LSTPopView; productReference = 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */; productType = "com.apple.product-type.framework"; }; + 8BEAFAA726C1965864B79B4B441AA513 /* JXCategoryView */ = { + isa = PBXNativeTarget; + buildConfigurationList = DB4C55F70CF73736D3687A2E620AC793 /* Build configuration list for PBXNativeTarget "JXCategoryView" */; + buildPhases = ( + 93691E22DE50657D0D08BA5D05234F57 /* Headers */, + 8F5978DBE3D91F845AFFF79059502540 /* Sources */, + 481273BD538BE69936DB3D2C8EB1E61B /* Frameworks */, + D6BF70856976374C62C62EF42CD1B449 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + C11D50FE786831BFAA5FB3ED4D276FC5 /* PBXTargetDependency */, + ); + name = JXCategoryView; + productName = JXCategoryView; + productReference = C3A46B03C308EEEB11F2A62BA5D2E8BE /* JXCategoryView */; + productType = "com.apple.product-type.framework"; + }; 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */ = { isa = PBXNativeTarget; - buildConfigurationList = 33D6375648A0A6BF2A26AA104B964F82 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */; + buildConfigurationList = D0D337F808B517A6F9A6D14C71CB5B25 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */; buildPhases = ( - 668D3C1EB9C4184AD9F85DFC1B3DDAAC /* Sources */, - E84EAC027A0FB7CE91306C93FC676BFE /* Frameworks */, - 918668F825F51C44A44BDA0D6E26DE0A /* Resources */, + 23F7311CB240548CE74F13BA30E805B5 /* Sources */, + 49A3D4697275EC0A7C6F38E45E2F0217 /* Frameworks */, + 104904C13744D5C7625092B68974D183 /* Resources */, ); buildRules = ( ); @@ -3114,11 +3667,11 @@ }; B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = A6F832309249E7B81D966980E5A2AA5B /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */; + buildConfigurationList = 6245C5FFE40FC7DFDD2CA00871D0EA40 /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */; buildPhases = ( - 81DB13C71F9ED4A7F16A03B68EE00629 /* Sources */, - B4DC6EBA2E0A9BF13EE9B40E41669F40 /* Frameworks */, - FA9EC5705AC7C692DDFA718CB01BC202 /* Resources */, + D505A0E271350076957F6F32073544D2 /* Sources */, + A815DA3563AEC721C6EAF6B39395CDD4 /* Frameworks */, + 8AF3FF976A1DE9EA4258B9F5B490733A /* Resources */, ); buildRules = ( ); @@ -3131,11 +3684,11 @@ }; B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */ = { isa = PBXNativeTarget; - buildConfigurationList = FF5CD44349A7EEBF8A674DDD0F0574CF /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */; + buildConfigurationList = B662A4FAD3B72B94AAE82FA4EF54A8A1 /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */; buildPhases = ( - 086E6CDD1E962F391C206FAE038E1A7E /* Sources */, - 30C44AB8C7DCA8E0F90C02BF12AC1ACC /* Frameworks */, - D23FFCFDDE4E84FB67B476373DD24257 /* Resources */, + 1FAEC8C9D1FFBAF2D815698CBBF41366 /* Sources */, + B48A7E8CCFE81BBD4AEBA45C992E5F7F /* Frameworks */, + 79F5ED799353ADB8EFED141CD4F84A84 /* Resources */, ); buildRules = ( ); @@ -3146,6 +3699,25 @@ productReference = 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */; productType = "com.apple.product-type.bundle"; }; + C4E1020AF425614337737213AA26DBD5 /* JXPagingView */ = { + isa = PBXNativeTarget; + buildConfigurationList = 773A22765B846DE10CADF4D2E77FE841 /* Build configuration list for PBXNativeTarget "JXPagingView" */; + buildPhases = ( + 7A48625CF583F169B2CE65398246355A /* Headers */, + 9F03A6C166C310270FB3F4AFE9D7573D /* Sources */, + AE750D3363286EC4504AB9516776E757 /* Frameworks */, + 5C89912961D7B3B99680563233DBEA04 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + 82007E5716B41B7A56E454204B106954 /* PBXTargetDependency */, + ); + name = JXPagingView; + productName = JXPagingView; + productReference = 2F4A1CCB21DB7EA5A2ACEB11E374FBCA /* JXPagingView */; + productType = "com.apple.product-type.framework"; + }; D9B2DB11933DB55A80A118934E6680AB /* Pods-CustomKeyboard */ = { isa = PBXNativeTarget; buildConfigurationList = B1224CED7ED3E4B356E8F429D6C62F7E /* Build configuration list for PBXNativeTarget "Pods-CustomKeyboard" */; @@ -3158,17 +3730,34 @@ buildRules = ( ); dependencies = ( - D504C3B6398A702186D49FE4B778051E /* PBXTargetDependency */, - D2A120E24B87240E573F8B0FBD3FA160 /* PBXTargetDependency */, - ADBF59F419A1769B237B2671E4975D51 /* PBXTargetDependency */, - 85C2754009A231976C78A0DF13CED0E3 /* PBXTargetDependency */, - 983600180BD0020E52A5E0C267AB52CE /* PBXTargetDependency */, + 33D09C01EF80EA558D42C96911714DFF /* PBXTargetDependency */, + 8DBC9C82D4F645E38F5388E4EC6F8837 /* PBXTargetDependency */, + C5827E035098A10C8DC173D8807B0496 /* PBXTargetDependency */, + 2DE7668F0442330FCC1AB4038419404C /* PBXTargetDependency */, + 37008CECA85E062E163E323B0DBF02EA /* PBXTargetDependency */, ); name = "Pods-CustomKeyboard"; productName = Pods_CustomKeyboard; productReference = 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */; productType = "com.apple.product-type.framework"; }; + E79E29F55A2453370D27112480FCF6A2 /* JXCategoryView-JXCategoryView */ = { + isa = PBXNativeTarget; + buildConfigurationList = F688458307583BA2FC79B1282B37D611 /* Build configuration list for PBXNativeTarget "JXCategoryView-JXCategoryView" */; + buildPhases = ( + 17BD1ACA0E8D92E2DF87A056B0D17AF7 /* Sources */, + D322DF9855308A001A820F202DCCBA75 /* Frameworks */, + 570AFF54CA367A3A6FC6B25F8F89E223 /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = "JXCategoryView-JXCategoryView"; + productName = JXCategoryView; + productReference = BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */; + productType = "com.apple.product-type.bundle"; + }; F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */ = { isa = PBXNativeTarget; buildConfigurationList = 1CF7CA11A791652D6975B2EDE2FC6719 /* Build configuration list for PBXNativeTarget "DZNEmptyDataSet" */; @@ -3207,7 +3796,7 @@ mainGroup = CF1408CF629C7361332E53B88F7BD30C; minimizedProjectReferenceProxies = 0; preferredProjectObjectVersion = 77; - productRefGroup = 92804E5AAC2424AC0EE6ED237A2C4B6F /* Products */; + productRefGroup = 1CD312D2E666224315BB46AF04231D5D /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -3216,6 +3805,10 @@ F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */, 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */, 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */, + 8BEAFAA726C1965864B79B4B441AA513 /* JXCategoryView */, + E79E29F55A2453370D27112480FCF6A2 /* JXCategoryView-JXCategoryView */, + C4E1020AF425614337737213AA26DBD5 /* JXPagingView */, + 16704C6B67439DA959DB043702C75A7A /* JXPagingView-JXPagerView */, 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */, 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */, 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */, @@ -3234,13 +3827,21 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 0C2C6D22B659FD9FBD84420DAAD00401 /* Resources */ = { + 0D07E8D675635C881CCB2DF69C6E7629 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; + 104904C13744D5C7625092B68974D183 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 6F3A575F2B9E1CEB696248B9CB96F357 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 1B0BF833FF02F4B145B7A6461734A0F1 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3263,6 +3864,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 3A5A6604A2DC218F056C1D04F3DB43CD /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 5DF02901155278BE109057E17C7C1D99 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 44B3C0D7DDF289331B7732E9D87126DB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3280,18 +3889,49 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8DF763B35C7183D33FE173339E261549 /* Resources */ = { + 570AFF54CA367A3A6FC6B25F8F89E223 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 95CCA80D6790CF64F974A53E815420F8 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5C89912961D7B3B99680563233DBEA04 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 91AFF41167C616A131F2E24563B8DDD8 /* JXPagingView-JXPagerView in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 79F5ED799353ADB8EFED141CD4F84A84 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + EC078D5CD76868BDE0F67BBEAFFEA217 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 848FF7A10EE5C029902ADD3C55750C9F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 918668F825F51C44A44BDA0D6E26DE0A /* Resources */ = { + 8AF3FF976A1DE9EA4258B9F5B490733A /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B61728EFE4A95013413ED38D371A33B0 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 8DF763B35C7183D33FE173339E261549 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - F7815C2FBD9D954D0C2F3BF0BD6EB813 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3309,21 +3949,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BA262B4873E56403AF0269D5EAEE5E15 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - D23FFCFDDE4E84FB67B476373DD24257 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 719245E09E34B28240B8144650B43701 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; D518E37278D48F046F4C76EA0E72D5AC /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3331,6 +3956,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D6BF70856976374C62C62EF42CD1B449 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + A1C02A0C13BE4A139BC38BBE20217FA2 /* JXCategoryView-JXCategoryView in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E664BDFE0B44D742638A43686ACB3008 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3345,14 +3978,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FA9EC5705AC7C692DDFA718CB01BC202 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - E8BB439BCA39F3ED41FF185D6A61EA98 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; FD378D1F5CAFCC3C5D44074788563A1C /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3372,13 +3997,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 086E6CDD1E962F391C206FAE038E1A7E /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; 090A96B9D443BC38DD5A251A9EE646AE /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3477,6 +4095,34 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 17BD1ACA0E8D92E2DF87A056B0D17AF7 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1FAEC8C9D1FFBAF2D815698CBBF41366 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 23F7311CB240548CE74F13BA30E805B5 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2BCD1AC59060560FEAF74FFFB66F0F9F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 3EA749E8A97310551F543948A8C92475 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3508,34 +4154,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 668D3C1EB9C4184AD9F85DFC1B3DDAAC /* Sources */ = { + 6F3E38196FED4BD0677C98E1E0C6C80C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 7C1E7BC9142AEAACC37BBFA5736E21E6 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 8B9B9EACA282C583FCF9A3B8E49DD830 /* LSTTimer.m in Sources */, - 18CDCA86F129B7251D21E8F3FF8656B9 /* LSTTimer-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 81DB13C71F9ED4A7F16A03B68EE00629 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 86BA6B9707AE3B1250A31F523EB8DA55 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 059E13B65EC846A6B5D5F5A68D26D194 /* Pods-keyBoard-dummy.m in Sources */, + 3BF23DD02B40D2A2E98FF9D042A5AF4E /* Pods-keyBoard-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3611,6 +4234,67 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 8F5978DBE3D91F845AFFF79059502540 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 9E7FD4501C2EF7FBF3379D21E46DB07B /* JXCategoryBaseCell.m in Sources */, + 940CD731A431894B0EE4E3283E6F352F /* JXCategoryBaseCellModel.m in Sources */, + 620A0FFFDE5AEF215E28135566106BA4 /* JXCategoryBaseView.m in Sources */, + BE7F6E08A9BDA2EF6FA625EB5CD685EC /* JXCategoryCollectionView.m in Sources */, + E038F02D08E33A673A360ED34648A027 /* JXCategoryDotCell.m in Sources */, + D31558927DE3F62D1BB1FC416E6F237D /* JXCategoryDotCellModel.m in Sources */, + 20FBBC12322412237D48D3695D98E043 /* JXCategoryDotView.m in Sources */, + EC9B8D81AEAF11E16149869246F7D4C1 /* JXCategoryFactory.m in Sources */, + F847E3C26E5AC43CD73364AD3DF49AFE /* JXCategoryImageCell.m in Sources */, + CE2AF36EBB17CDA2652CBADD4A7ABF82 /* JXCategoryImageCellModel.m in Sources */, + 266352AA446DAE8C9502E83810C174D9 /* JXCategoryImageView.m in Sources */, + 6630C0B541E50903F9AD81FD847CFE7A /* JXCategoryIndicatorBackgroundView.m in Sources */, + 6BF5DB46D42D8B9D536C870EC77BF4A3 /* JXCategoryIndicatorBallView.m in Sources */, + 1C0FA6017CAD67C1A80FFA70024FC6FD /* JXCategoryIndicatorCell.m in Sources */, + 2EDA227454079ED3F6371BF34AFD4735 /* JXCategoryIndicatorCellModel.m in Sources */, + 579DDC4FE78455D88E0350C3268D96C4 /* JXCategoryIndicatorComponentView.m in Sources */, + C922BFFF717515E5878910DF4078CE1E /* JXCategoryIndicatorDotLineView.m in Sources */, + D93EA925FC24665584B3653514A56706 /* JXCategoryIndicatorImageView.m in Sources */, + 3B62431BEF820E7FC779F344AB2A1D17 /* JXCategoryIndicatorLineView.m in Sources */, + 8128D2BD3AC890F75E7AD243AA104C13 /* JXCategoryIndicatorParamsModel.m in Sources */, + 0C312924F0A07471A1D04AD15D32BF3A /* JXCategoryIndicatorRainbowLineView.m in Sources */, + D08901EA319887BE6D694F8333BE8D1F /* JXCategoryIndicatorTriangleView.m in Sources */, + AF17C7BD3344504E243E234004B4593E /* JXCategoryIndicatorView.m in Sources */, + F43396B5CB23638E5509B3ED61AE6192 /* JXCategoryListContainerRTLCell.m in Sources */, + D0E37358C3DCF2A8A572C4F38BB0569B /* JXCategoryListContainerView.m in Sources */, + C22BFD04EAB76981E7F112D57A1F5E79 /* JXCategoryNumberCell.m in Sources */, + E4B688B8A0D07AFB883A52250CA874A1 /* JXCategoryNumberCellModel.m in Sources */, + 020FEDA58170EE1ABDF9E268D373CF4F /* JXCategoryNumberView.m in Sources */, + 79701CF51014A7C02D810F9DAEFE6D79 /* JXCategoryTitleCell.m in Sources */, + 4ECE7F80A917130DE4045E25D741EAF9 /* JXCategoryTitleCellModel.m in Sources */, + 8FF4E9A492CA258F45C0BC51F6F69650 /* JXCategoryTitleImageCell.m in Sources */, + AD395F6BD7F53258A431E9479D07C6AF /* JXCategoryTitleImageCellModel.m in Sources */, + 91BEBD471C408E6C72763AFB6926242B /* JXCategoryTitleImageView.m in Sources */, + 93E2C24501FAE3C3B886B9879786EF22 /* JXCategoryTitleVerticalZoomCell.m in Sources */, + E42D6EF120A5C17DA2F6FD6473CE7E7A /* JXCategoryTitleVerticalZoomCellModel.m in Sources */, + EEF0BF7E53148EB20BED242061BDC5ED /* JXCategoryTitleVerticalZoomView.m in Sources */, + A325C7E5098EB5641EF49D279EA9EF03 /* JXCategoryTitleView.m in Sources */, + 8B990235A0006E1F9C1E6F68AD81F77C /* JXCategoryView-dummy.m in Sources */, + 2395CE03CE80FC5F9A7F61C48270618B /* JXCategoryViewAnimator.m in Sources */, + 2175B894008D948C762468307BA677B8 /* RTLManager.m in Sources */, + 96C1D55B3436C158B4CBB4E3D0AE53EE /* UIColor+JXAdd.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 9F03A6C166C310270FB3F4AFE9D7573D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + E0DB14976CA6F6E604FD5E4EDF3378E7 /* JXPagerListContainerView.m in Sources */, + 6C76DB1B99B98C951F687DE80FE6F463 /* JXPagerListRefreshView.m in Sources */, + 0D6EFFD314E70C1E547970D8CEF11131 /* JXPagerMainTableView.m in Sources */, + 6204F3E4E75772BB6CAB13CD53D9D93E /* JXPagerSmoothView.m in Sources */, + EE101918DFCDC1D6728BF910DB5AF29A /* JXPagerView.m in Sources */, + 05EEA40D460AB9A5A6E8D33AAAEF801E /* JXPagingView-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; A29E3C9E62E3E86A20CAE1E7632313FC /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3643,6 +4327,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + D505A0E271350076957F6F32073544D2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; DA0B6A6F9B3EDF226BF081DAC7E777E7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -3721,181 +4412,197 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FEEB3280DD885E20A0F8EE0C8798CAB2 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ADAB2E78F005C6413F9F3699D60CF727 /* LSTTimer.m in Sources */, + 4E0FBD829EB07B8D5D2A5F6115457BE7 /* LSTTimer-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 31B285B5CDDD3D0B75165B7E60875540 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = 077F2AA4B2BF11943204812B533088F5 /* PBXContainerItemProxy */; - }; - 579B996E9942825FE7A26DE3FF3B1783 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LSTTimer; - target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; - targetProxy = FBA8C5046E304FE4BB90D14C4A529288 /* PBXContainerItemProxy */; - }; - 610CFF14AC9EFAF66F9721E282831AE2 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJExtension; - target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = 2F4CEC846087978E04621E966B9DFF49 /* PBXContainerItemProxy */; - }; - 706669DE3EF507E6ED7756D757CB0803 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "SDWebImage-SDWebImage"; - target = 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */; - targetProxy = 2307258CB6BB82D24A7CA6B7975B1292 /* PBXContainerItemProxy */; - }; - 74D6D9BB82D0FFCAFC06C440BDAB1F50 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = FLAnimatedImage; - target = 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */; - targetProxy = B57744F595F66358CF4816DD4793C8A6 /* PBXContainerItemProxy */; - }; - 85C2754009A231976C78A0DF13CED0E3 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJExtension; - target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = 02DDA276267B945D512FC6AF69590E37 /* PBXContainerItemProxy */; - }; - 983600180BD0020E52A5E0C267AB52CE /* PBXTargetDependency */ = { + 004C87AF28627224BAF0F49A32B4B934 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Masonry; target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = 9F4B8D116BF04BD4F5A8C8D781DA5D62 /* PBXContainerItemProxy */; + targetProxy = F121CDAC85A6DCADB4F82D081323C7C5 /* PBXContainerItemProxy */; }; - A1343B6079DE025DBF916F7B81708222 /* PBXTargetDependency */ = { + 2DE7668F0442330FCC1AB4038419404C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DZNEmptyDataSet; - target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = B12FC64FF473558C45076A0CEB7D47D1 /* PBXContainerItemProxy */; + name = MJExtension; + target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; + targetProxy = 79523FDE8CA807F68BC7DF678B3199B5 /* PBXContainerItemProxy */; }; - A5740B9DC31236AD3E4CAF5F1E336987 /* PBXTargetDependency */ = { + 33D09C01EF80EA558D42C96911714DFF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = 398B300FAF20E4012B54089285C6D68D /* PBXContainerItemProxy */; + }; + 37008CECA85E062E163E323B0DBF02EA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = 39F2619DE86130266FA45394FE5C260D /* PBXContainerItemProxy */; + }; + 3A33DC80646EE1FEC3F5A81D6D88094E /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = LookinServer; target = 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */; - targetProxy = 92CA63B3B20D5FAC965226A6920F1BE4 /* PBXContainerItemProxy */; + targetProxy = AE8D5D579627FAFF8F43B7CEFE066FF2 /* PBXContainerItemProxy */; }; - A707874A71DF7C81F9119F9728626E2F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = HWPanModal; - target = 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */; - targetProxy = 5ABBB136A0AE8EE61D30E75F4BE8572E /* PBXContainerItemProxy */; - }; - AC48B21768E35ECFC605F51956C6C305 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LSTPopView; - target = 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */; - targetProxy = 01F386055DA043124AA00537EC691754 /* PBXContainerItemProxy */; - }; - ADBF59F419A1769B237B2671E4975D51 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MBProgressHUD; - target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = 5F98F8D71CDA25588EE186F7253F367F /* PBXContainerItemProxy */; - }; - B58F0F72931D247BC05C471A0226C5F1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "MJExtension-MJExtension"; - target = B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */; - targetProxy = 80217EE617C295C4C81AA1DCF5D85E7E /* PBXContainerItemProxy */; - }; - CBD95011A36DFDA2919E5B3F37459EAE /* PBXTargetDependency */ = { + 3A364CBA383FC741F9B9507BAD524A1F /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = Bugly; target = 4A68CFD979D413A619DF631BB121D98F /* Bugly */; - targetProxy = 1C0C3A0BDFA6BDE041DC3D513C5650B3 /* PBXContainerItemProxy */; + targetProxy = 4262F1710F9698DFC113026BA2E31021 /* PBXContainerItemProxy */; }; - D2A120E24B87240E573F8B0FBD3FA160 /* PBXTargetDependency */ = { + 3B95059A3ABF817D0636F90C4FE24A57 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = DZNEmptyDataSet; - target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = 5ECDD709038035A28044669BFFE06267 /* PBXContainerItemProxy */; + name = JXPagingView; + target = C4E1020AF425614337737213AA26DBD5 /* JXPagingView */; + targetProxy = 6DB0C5460735B353E7FB2A7058DEB8F3 /* PBXContainerItemProxy */; }; - D2AEA24D136504A1C3C238158CDC14AD /* PBXTargetDependency */ = { + 5B8D2BAFD03C6848DC5CAC776971023C /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = LSTTimer; - target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; - targetProxy = 1B50A2D51242B1B501E7A8FE17921A95 /* PBXContainerItemProxy */; + name = LSTPopView; + target = 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */; + targetProxy = 0A1A465C500FD28324C60FF2111766F1 /* PBXContainerItemProxy */; }; - D504C3B6398A702186D49FE4B778051E /* PBXTargetDependency */ = { + 67D06D25CF9C7EFF394097D2AFFD9DF9 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = AFNetworking; - target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = 7FA3D0787FAE50268674AAEE62D45295 /* PBXContainerItemProxy */; + name = MJExtension; + target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; + targetProxy = 4E0DD9B103CA9ED24B513A6147DEDB93 /* PBXContainerItemProxy */; }; - DE3981E6419BE407CF93074BF535E2F5 /* PBXTargetDependency */ = { + 7244D798B35A90122DF5F2EBC2C25073 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "MJRefresh-MJRefresh.Privacy"; target = B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */; - targetProxy = 9946EDF6CEC75931EE3BCF2D4DC70585 /* PBXContainerItemProxy */; + targetProxy = C279C7A3A264FD3391C8C73B80D3A426 /* PBXContainerItemProxy */; }; - E5D2D0ED9FB1C4A09640F1C1E02963E1 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Masonry; - target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = DE9FD566A2ADE13D0844AD68D51F7EAF /* PBXContainerItemProxy */; - }; - EF1B1186931F596FE79ABDD95C3DB3DB /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = EC0084E5D95CC67D69BF4291415A7EE1 /* PBXContainerItemProxy */; - }; - F59B858EFCDFF0A159DB925DA2871952 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MBProgressHUD; - target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = BDE883F6A985897AA115496E325146FA /* PBXContainerItemProxy */; - }; - FBD20C5E1BFF0138D14604A3E9892BAE /* PBXTargetDependency */ = { + 75023E301D2D56786B69F7BD1B998E06 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = MJRefresh; target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; - targetProxy = 95E55F6C03A77816AFA1A59466D8CD82 /* PBXContainerItemProxy */; + targetProxy = 9E88A4DD9EF59B6718F28ECC701DF551 /* PBXContainerItemProxy */; + }; + 7986360E8EC5F57AE4012FDDB8A6D701 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MBProgressHUD; + target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; + targetProxy = F9F28B72CAD6F7E15F267C3F8D685EA8 /* PBXContainerItemProxy */; + }; + 82007E5716B41B7A56E454204B106954 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "JXPagingView-JXPagerView"; + target = 16704C6B67439DA959DB043702C75A7A /* JXPagingView-JXPagerView */; + targetProxy = C389A17163C51915594BC17BC8BF9DE0 /* PBXContainerItemProxy */; + }; + 8DBC9C82D4F645E38F5388E4EC6F8837 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DZNEmptyDataSet; + target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; + targetProxy = 6FA747ECA11691BE7229C287223E399A /* PBXContainerItemProxy */; + }; + A036241AE2FD9088F99D8A60AFCD1514 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LSTTimer; + target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; + targetProxy = 0CEF032AE3DE8459AABC366D5EAD57AC /* PBXContainerItemProxy */; + }; + A8CFE4713F435C9FF4AA9FA8D460F3A7 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = 803F302DC5C2EA85B4CBBDCD27A43286 /* PBXContainerItemProxy */; + }; + B48CA5483F83ECB025E2CF88895F910F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = HWPanModal; + target = 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */; + targetProxy = DB3A9F97FFF5759DFB4E243D0C12B290 /* PBXContainerItemProxy */; + }; + BFFE20AC77F2320185030DE7FAF95A94 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DZNEmptyDataSet; + target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; + targetProxy = 36EAD987437C03F015C383238BF3C1B7 /* PBXContainerItemProxy */; + }; + C11D50FE786831BFAA5FB3ED4D276FC5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "JXCategoryView-JXCategoryView"; + target = E79E29F55A2453370D27112480FCF6A2 /* JXCategoryView-JXCategoryView */; + targetProxy = 7B014B80CCB8DDBC4906B5D8D3002093 /* PBXContainerItemProxy */; + }; + C5827E035098A10C8DC173D8807B0496 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MBProgressHUD; + target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; + targetProxy = 686994C0035F8FADAF6A6C4E910239B2 /* PBXContainerItemProxy */; + }; + C8CAA3DF1F34F4917BE346E82645B672 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LSTTimer; + target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; + targetProxy = 2635D33260052793F7319FAC3997C416 /* PBXContainerItemProxy */; + }; + C9B3D25C71255E9DFCE9A741B4BFF3BA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = EF1EC9615D03559D465834BE2D7F527F /* PBXContainerItemProxy */; + }; + CA5A82B04166A988C7834D6E5F130D24 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "MJExtension-MJExtension"; + target = B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */; + targetProxy = D89A563DA511A2A01EFDD5299EBCEE42 /* PBXContainerItemProxy */; + }; + D1DA99819466A8666489AD8ABE8C04A5 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FLAnimatedImage; + target = 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */; + targetProxy = CE0514BD8BDC97E49F2A38CD065EDCFC /* PBXContainerItemProxy */; + }; + E3CE26F82AC9FA20A1C696AD05CBE607 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = JXCategoryView; + target = 8BEAFAA726C1965864B79B4B441AA513 /* JXCategoryView */; + targetProxy = 648F8AAC5DF3351FEF10F1C29B3E11DF /* PBXContainerItemProxy */; + }; + E918590C6B33D5799C74C34CD2BB5722 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "SDWebImage-SDWebImage"; + target = 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */; + targetProxy = B296FC77430103DDB971813228C8D4EF /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 08509768DC98A9784BD41AE1B13133E6 /* Debug */ = { + 056C2C119D321A1782845A1C09FB3561 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */; + baseConfigurationReference = 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; - IBSC_MODULE = MJExtension; - INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJExtension; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXPagingView"; + IBSC_MODULE = JXPagingView; + INFOPLIST_FILE = "Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = JXPagerView; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Debug; - }; - 139C4D5063C989448E1492598E6DCB05 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; - IBSC_MODULE = MJRefresh; - INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJRefresh.Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; + name = Release; }; 1A69165A21A7A1CC42A38CF8ADE98215 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 506D2884030F20EC06A10DCFA7347584 /* LookinServer.release.xcconfig */; + baseConfigurationReference = B8E77F018E5BE1F8C021ACB0978497F6 /* LookinServer.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -3970,48 +4677,9 @@ }; name = Release; }; - 2A478E3BD7684211516AEB6E73031711 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 2D1085CA7BD144CABF012FC10C6C9120 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 04A09AD12EF8C816FA9546838C3F429E /* Masonry.debug.xcconfig */; + baseConfigurationReference = 93A6F66AA21D4921B2C52643DAEF998F /* Masonry.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4046,43 +4714,9 @@ }; name = Debug; }; - 2DD4779BD119802B7DDE3163EB446D6F /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; - IBSC_MODULE = MJExtension; - INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJExtension; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 30665B5D85CB0DE44CCE0EF52CECD3E6 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; - IBSC_MODULE = MJRefresh; - INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJRefresh.Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; 35044A57510DB3F4E442A9C16E980E4A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1FABCE7CC795C2D70EA3AAEE06EDD595 /* DZNEmptyDataSet.debug.xcconfig */; + baseConfigurationReference = 6315771A902975A20B41342DD5234115 /* DZNEmptyDataSet.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4117,9 +4751,63 @@ }; name = Debug; }; + 4414117132ADFB2C5F5B1E433FC53228 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXCategoryView"; + IBSC_MODULE = JXCategoryView; + INFOPLIST_FILE = "Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = JXCategoryView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 4949308A42E0BAB6B0B815F496FC5869 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A76F5B96F548930505FADC6CE9430C2D /* LSTTimer.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; + PRODUCT_MODULE_NAME = LSTTimer; + PRODUCT_NAME = LSTTimer; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 49CEA33268972C89BF290FCBF8F9DFC0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 1FABA21668D0F7EA5314EF00C93346A5 /* DZNEmptyDataSet.release.xcconfig */; + baseConfigurationReference = 7755C313C99E29481B2A9849C31152BE /* DZNEmptyDataSet.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4155,9 +4843,26 @@ }; name = Release; }; + 49F55F836D397AB94087D90F9BE32CB2 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; + IBSC_MODULE = MJRefresh; + INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJRefresh.Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; 51753BD6FE635BB9421BCA4C05F63C6A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 5157E3FB4160ED0759A1F38EFDEC5877 /* MJRefresh.release.xcconfig */; + baseConfigurationReference = 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4194,9 +4899,64 @@ }; name = Release; }; + 53552C84CADFAFE2D92EA24C81A4B387 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXCategoryView"; + IBSC_MODULE = JXCategoryView; + INFOPLIST_FILE = "Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = JXCategoryView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 571314BC8A84B1CED724D0AFB1CED826 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/JXCategoryView/JXCategoryView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/JXCategoryView/JXCategoryView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/JXCategoryView/JXCategoryView.modulemap"; + PRODUCT_MODULE_NAME = JXCategoryView; + PRODUCT_NAME = JXCategoryView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 614F7847ADAD2F1EEC9E48FAEC955108 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 46BD456754A833616748AAFE8A1AF2F2 /* MJRefresh.debug.xcconfig */; + baseConfigurationReference = 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4234,7 +4994,7 @@ }; 618AB008538F74AAF983C04297207BB6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = EA60319FCBE8ADFF00A52058DBE7C157 /* LookinServer.debug.xcconfig */; + baseConfigurationReference = E654A0C1F961A76933C784134A3D98E4 /* LookinServer.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4268,9 +5028,26 @@ }; name = Debug; }; + 62792DAC98F4B79EB2EFE6B1EBB47A34 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; + IBSC_MODULE = MJRefresh; + INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJRefresh.Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; 63708B35D08B13BC40AB51386020974A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 779E8085B0101C4CB480F794DECA558B /* HWPanModal.release.xcconfig */; + baseConfigurationReference = CA18A067DCACA93C5FD4591EBC943217 /* HWPanModal.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4306,9 +5083,26 @@ }; name = Release; }; + 674DB84A106C256BD3A902B6559D9288 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; + IBSC_MODULE = SDWebImage; + INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = SDWebImage; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; 67BAB382C3420CD62CB414CAA4D8A5B1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DDD6B4DA641B2F94F2D426AC2D4A5E7E /* FLAnimatedImage.release.xcconfig */; + baseConfigurationReference = C06B04E0ABEA41660753A9D5F58572EE /* FLAnimatedImage.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4344,6 +5138,23 @@ }; name = Release; }; + 751527A9729DD8ADD668EBD1AFCD16A0 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; + IBSC_MODULE = MJExtension; + INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; 7BB5AE2225500DE9658B6277FED45BCD /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */; @@ -4383,6 +5194,44 @@ }; name = Debug; }; + 869A260EDB31DBC8F1FD513756A77A93 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/JXPagingView/JXPagingView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/JXPagingView/JXPagingView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/JXPagingView/JXPagingView.modulemap"; + PRODUCT_MODULE_NAME = JXPagingView; + PRODUCT_NAME = JXPagingView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 8DE5143C03248BB6CD542DE3963D6F3A /* Debug */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4449,9 +5298,48 @@ }; name = Debug; }; + 8EAC2F834160F0D756B3363236E0940A /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/JXPagingView/JXPagingView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/JXPagingView/JXPagingView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/JXPagingView/JXPagingView.modulemap"; + PRODUCT_MODULE_NAME = JXPagingView; + PRODUCT_NAME = JXPagingView; + 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 = Release; + }; 8F481C1C1CF7C89F42A9EFE335DEA2BC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A16C385BAD6F9C544C59D31A650946CC /* LSTPopView.release.xcconfig */; + baseConfigurationReference = B79CB4484CF793AF65C86B424D955922 /* LSTPopView.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4487,44 +5375,6 @@ }; name = Release; }; - 92C888FE2C8775DD87E819591F638CAA /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = CB1BEFB1C0257A74B80CAF80DB336894 /* LSTTimer.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; - PRODUCT_MODULE_NAME = LSTTimer; - PRODUCT_NAME = LSTTimer; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -4589,7 +5439,7 @@ }; 9E9FB1E032B56896F9380263D45A0F9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 107E86B9F22190515234220978E5F1C3 /* MJExtension.release.xcconfig */; + baseConfigurationReference = 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4628,7 +5478,7 @@ }; 9F519E5162C0E51D10B7E999E2FD0125 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */; + baseConfigurationReference = E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4664,9 +5514,46 @@ }; name = Release; }; + A04019026E1B09655264B132BF5345A4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/JXCategoryView/JXCategoryView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/JXCategoryView/JXCategoryView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/JXCategoryView/JXCategoryView.modulemap"; + PRODUCT_MODULE_NAME = JXCategoryView; + PRODUCT_NAME = JXCategoryView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; B04295D726C1883ADA40A304483D7E33 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */; + baseConfigurationReference = 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4701,9 +5588,65 @@ }; name = Debug; }; + B0474165CD8F05374CFDCCDA05985E9E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; + IBSC_MODULE = SDWebImage; + INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = SDWebImage; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + B1990C10B74E98AD1A318202655814D4 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; B26FBB655ABB114E4C0D589843814D6C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 090BA40A2CB6D8D73A78895D821E7E93 /* Bugly.release.xcconfig */; + baseConfigurationReference = 956C8FF42F553F12124DED23E19FE31D /* Bugly.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -4719,9 +5662,26 @@ }; name = Release; }; + B413A840D435DD0DE4EA09E77C5232AA /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXPagingView"; + IBSC_MODULE = JXPagingView; + INFOPLIST_FILE = "Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = JXPagerView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; B429B9740B8EB5894C5BF953D9590A46 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C8974089710AB7F8A65D77241AA70557 /* FLAnimatedImage.debug.xcconfig */; + baseConfigurationReference = 36A28302FD0C37C0A56E64EA97977A8E /* FLAnimatedImage.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4756,7 +5716,228 @@ }; name = Debug; }; - B60B7F89F4C4C73830498E2EEE95F8BB /* Release */ = { + BCD70A0BB22D0C72BAF7207A7D4F44BD /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 648C72C63334BCDFD466058863FCDAC9 /* MBProgressHUD.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD.modulemap"; + PRODUCT_MODULE_NAME = MBProgressHUD; + PRODUCT_NAME = MBProgressHUD; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + BDD02D9903A09C2C9D362C7536416CFB /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C6B15D5B29642260AB882050F51A8AE5 /* HWPanModal.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/HWPanModal/HWPanModal-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/HWPanModal/HWPanModal-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/HWPanModal/HWPanModal.modulemap"; + PRODUCT_MODULE_NAME = HWPanModal; + PRODUCT_NAME = HWPanModal; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + BE0CDEB7BE0A402663AFCC2111742430 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 035807D7A9181D8E0DF6FAF1E2D6B33C /* MBProgressHUD.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD.modulemap"; + PRODUCT_MODULE_NAME = MBProgressHUD; + PRODUCT_NAME = MBProgressHUD; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + C9E0A2B5A2A51C141248D224C0567EBC /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 294754F45B0BF3519369080425B4F2FD /* LSTTimer.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; + PRODUCT_MODULE_NAME = LSTTimer; + PRODUCT_NAME = LSTTimer; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + CBAFED52B4B51F600FAF2141BA449F2E /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DDA8FA3EA27827F124700F1B6176E4CE /* Bugly.debug.xcconfig */; + buildSettings = { + ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; + ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + ); + SDKROOT = iphoneos; + TARGETED_DEVICE_FAMILY = "1,2"; + }; + name = Debug; + }; + CEE7FEC0A1B23DE7053203A448EEB294 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 8A6F594F279129456C02C7701DE5EDC3 /* AFNetworking.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/AFNetworking/AFNetworking-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/AFNetworking/AFNetworking.modulemap"; + PRODUCT_MODULE_NAME = AFNetworking; + PRODUCT_NAME = AFNetworking; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + CFF1A479BBAF93B993D005A4C4B2808E /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; + IBSC_MODULE = MJExtension; + INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + D02A5C00C024FCD02DABC63A4DA783E8 /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.release.xcconfig */; buildSettings = { @@ -4796,229 +5977,9 @@ }; name = Release; }; - BAC0E29E75929E3F1EBBE8FCB244F722 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 8769FA429275709C356B4C8A5DDEC26E /* LSTTimer.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; - PRODUCT_MODULE_NAME = LSTTimer; - PRODUCT_NAME = LSTTimer; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - BCD70A0BB22D0C72BAF7207A7D4F44BD /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = B0B0D3A4B05EE4A8AA2F56AF68EA3ADF /* MBProgressHUD.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD.modulemap"; - PRODUCT_MODULE_NAME = MBProgressHUD; - PRODUCT_NAME = MBProgressHUD; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - BDD02D9903A09C2C9D362C7536416CFB /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = F2C18394D397CD373A1F089F0924F724 /* HWPanModal.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/HWPanModal/HWPanModal-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/HWPanModal/HWPanModal-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/HWPanModal/HWPanModal.modulemap"; - PRODUCT_MODULE_NAME = HWPanModal; - PRODUCT_NAME = HWPanModal; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - BE0CDEB7BE0A402663AFCC2111742430 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2B7A32CBCCAE8AB83DA3CB95667709E3 /* MBProgressHUD.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/MBProgressHUD/MBProgressHUD-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/MBProgressHUD/MBProgressHUD.modulemap"; - PRODUCT_MODULE_NAME = MBProgressHUD; - PRODUCT_NAME = MBProgressHUD; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; - CBAFED52B4B51F600FAF2141BA449F2E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = EF66633D19CE6F4EBFF2331E624219EC /* Bugly.debug.xcconfig */; - buildSettings = { - ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; - ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - ); - SDKROOT = iphoneos; - TARGETED_DEVICE_FAMILY = "1,2"; - }; - name = Debug; - }; - CEE7FEC0A1B23DE7053203A448EEB294 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 9118BCB61472BB3349D3BC26BBAA9EE0 /* AFNetworking.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/AFNetworking/AFNetworking-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/AFNetworking/AFNetworking-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/AFNetworking/AFNetworking.modulemap"; - PRODUCT_MODULE_NAME = AFNetworking; - PRODUCT_NAME = AFNetworking; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; - CF142E310500F5E5BB783606035C0752 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 218908923AE7877657207C72921D322E /* SDWebImage.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; - IBSC_MODULE = SDWebImage; - INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = SDWebImage; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; D0AB0AEF4014B926FCD853D3AE0A370A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 72FF1B2D48227EDD9EB762579BA5D936 /* Masonry.release.xcconfig */; + baseConfigurationReference = 0B0EEEE5F23AC446F4729522F4FC7A73 /* Masonry.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5056,7 +6017,7 @@ }; DA533AA9B577872DAFB44EF2CF26C49A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 42D65971D9F40DBD6785D6A1D0AEBFBD /* AFNetworking.release.xcconfig */; + baseConfigurationReference = A697ED78520252C2C8CA71D13BA57F79 /* AFNetworking.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5094,7 +6055,7 @@ }; EC66105EE15F9DC9B6F20F58FB67957D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 9CE0E20C019F9D3D3297E4BD9E854459 /* MJExtension.debug.xcconfig */; + baseConfigurationReference = FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5132,7 +6093,7 @@ }; F48613BDFA945AC2A18363244F54E67C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0874A58BB3E268A75B1BD3D594CBAA2D /* LSTPopView.debug.xcconfig */; + baseConfigurationReference = D0317376A8F5B09CBBAC757A9410CF00 /* LSTPopView.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5167,26 +6128,27 @@ }; name = Debug; }; - FE5E9EA22284A509601F2785ED15C7E8 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0EE4E19A07BCCCF8BDCE77F2A5966D55 /* SDWebImage.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; - IBSC_MODULE = SDWebImage; - INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = SDWebImage; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ + 0C35983ABF9DEA95C8B29A7F8482E5AE /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B1990C10B74E98AD1A318202655814D4 /* Debug */, + D02A5C00C024FCD02DABC63A4DA783E8 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 15624921AFB223858478F40D5FC30D8A /* Build configuration list for PBXNativeTarget "LSTTimer" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 4949308A42E0BAB6B0B815F496FC5869 /* Debug */, + C9E0A2B5A2A51C141248D224C0567EBC /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 1CF7CA11A791652D6975B2EDE2FC6719 /* Build configuration list for PBXNativeTarget "DZNEmptyDataSet" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5214,15 +6176,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 33D6375648A0A6BF2A26AA104B964F82 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - FE5E9EA22284A509601F2785ED15C7E8 /* Debug */, - CF142E310500F5E5BB783606035C0752 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5241,6 +6194,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 6245C5FFE40FC7DFDD2CA00871D0EA40 /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 62792DAC98F4B79EB2EFE6B1EBB47A34 /* Debug */, + 49F55F836D397AB94087D90F9BE32CB2 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 773A22765B846DE10CADF4D2E77FE841 /* Build configuration list for PBXNativeTarget "JXPagingView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 869A260EDB31DBC8F1FD513756A77A93 /* Debug */, + 8EAC2F834160F0D756B3363236E0940A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 7CEB2E47380AD51987AA02ECD4DFBCD9 /* Build configuration list for PBXNativeTarget "AFNetworking" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5250,24 +6221,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 7F4FDDAED424001F24F18A5ED96ABA7B /* Build configuration list for PBXNativeTarget "LSTTimer" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - BAC0E29E75929E3F1EBBE8FCB244F722 /* Debug */, - 92C888FE2C8775DD87E819591F638CAA /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 8C2F7BD693160E3E0554D67620B26026 /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 2A478E3BD7684211516AEB6E73031711 /* Debug */, - B60B7F89F4C4C73830498E2EEE95F8BB /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 91696E961FC8FD5A148C3EBCD7606569 /* Build configuration list for PBXNativeTarget "LSTPopView" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5295,15 +6248,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A6F832309249E7B81D966980E5A2AA5B /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 139C4D5063C989448E1492598E6DCB05 /* Debug */, - 30665B5D85CB0DE44CCE0EF52CECD3E6 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; AAA1F8799DB68036C3BE983C05FAA2C7 /* Build configuration list for PBXNativeTarget "Masonry" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5322,6 +6266,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + B662A4FAD3B72B94AAE82FA4EF54A8A1 /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 751527A9729DD8ADD668EBD1AFCD16A0 /* Debug */, + CFF1A479BBAF93B993D005A4C4B2808E /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + D0D337F808B517A6F9A6D14C71CB5B25 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B0474165CD8F05374CFDCCDA05985E9E /* Debug */, + 674DB84A106C256BD3A902B6559D9288 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; D47A0ADD8E3841C9330561C3E1664BB3 /* Build configuration list for PBXNativeTarget "HWPanModal" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5331,6 +6293,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + DB4C55F70CF73736D3687A2E620AC793 /* Build configuration list for PBXNativeTarget "JXCategoryView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + A04019026E1B09655264B132BF5345A4 /* Debug */, + 571314BC8A84B1CED724D0AFB1CED826 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + DDFDCCDD059A0AA2C5DEAA3588DE41A7 /* Build configuration list for PBXNativeTarget "JXPagingView-JXPagerView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + B413A840D435DD0DE4EA09E77C5232AA /* Debug */, + 056C2C119D321A1782845A1C09FB3561 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; E7624967EDC883D80ED3DA81C495736B /* Build configuration list for PBXNativeTarget "LookinServer" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -5349,11 +6329,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - FF5CD44349A7EEBF8A674DDD0F0574CF /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */ = { + F688458307583BA2FC79B1282B37D611 /* Build configuration list for PBXNativeTarget "JXCategoryView-JXCategoryView" */ = { isa = XCConfigurationList; buildConfigurations = ( - 08509768DC98A9784BD41AE1B13133E6 /* Debug */, - 2DD4779BD119802B7DDE3163EB446D6F /* Release */, + 53552C84CADFAFE2D92EA24C81A4B387 /* Debug */, + 4414117132ADFB2C5F5B1E433FC53228 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView-JXCategoryView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView-JXCategoryView.xcscheme new file mode 100644 index 0000000..177a116 --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView-JXCategoryView.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView.xcscheme new file mode 100644 index 0000000..375271a --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXCategoryView.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView-JXPagerView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView-JXPagerView.xcscheme new file mode 100644 index 0000000..d4e7bad --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView-JXPagerView.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView.xcscheme new file mode 100644 index 0000000..0d1b64d --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/JXPagingView.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView-Info.plist b/Pods/Target Support Files/JXCategoryView/JXCategoryView-Info.plist new file mode 100644 index 0000000..66116d5 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView-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.6.8 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView-dummy.m b/Pods/Target Support Files/JXCategoryView/JXCategoryView-dummy.m new file mode 100644 index 0000000..c2b08cd --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_JXCategoryView : NSObject +@end +@implementation PodsDummy_JXCategoryView +@end diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView-prefix.pch b/Pods/Target Support Files/JXCategoryView/JXCategoryView-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView-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/Pods/Target Support Files/JXCategoryView/JXCategoryView-umbrella.h b/Pods/Target Support Files/JXCategoryView/JXCategoryView-umbrella.h new file mode 100644 index 0000000..db80d54 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView-umbrella.h @@ -0,0 +1,59 @@ +#ifdef __OBJC__ +#import +#else +#ifndef FOUNDATION_EXPORT +#if defined(__cplusplus) +#define FOUNDATION_EXPORT extern "C" +#else +#define FOUNDATION_EXPORT extern +#endif +#endif +#endif + +#import "JXCategoryView.h" +#import "JXCategoryBaseCell.h" +#import "JXCategoryBaseCellModel.h" +#import "JXCategoryBaseView.h" +#import "JXCategoryCollectionView.h" +#import "JXCategoryFactory.h" +#import "JXCategoryIndicatorParamsModel.h" +#import "JXCategoryIndicatorProtocol.h" +#import "JXCategoryListContainerRTLCell.h" +#import "JXCategoryListContainerView.h" +#import "JXCategoryViewAnimator.h" +#import "JXCategoryViewDefines.h" +#import "UIColor+JXAdd.h" +#import "JXCategoryDotCell.h" +#import "JXCategoryDotCellModel.h" +#import "JXCategoryDotView.h" +#import "JXCategoryImageCell.h" +#import "JXCategoryImageCellModel.h" +#import "JXCategoryImageView.h" +#import "JXCategoryIndicatorBackgroundView.h" +#import "JXCategoryIndicatorBallView.h" +#import "JXCategoryIndicatorComponentView.h" +#import "JXCategoryIndicatorDotLineView.h" +#import "JXCategoryIndicatorImageView.h" +#import "JXCategoryIndicatorLineView.h" +#import "JXCategoryIndicatorRainbowLineView.h" +#import "JXCategoryIndicatorTriangleView.h" +#import "JXCategoryIndicatorCell.h" +#import "JXCategoryIndicatorCellModel.h" +#import "JXCategoryIndicatorView.h" +#import "JXCategoryNumberCell.h" +#import "JXCategoryNumberCellModel.h" +#import "JXCategoryNumberView.h" +#import "RTLManager.h" +#import "JXCategoryTitleCell.h" +#import "JXCategoryTitleCellModel.h" +#import "JXCategoryTitleView.h" +#import "JXCategoryTitleImageCell.h" +#import "JXCategoryTitleImageCellModel.h" +#import "JXCategoryTitleImageView.h" +#import "JXCategoryTitleVerticalZoomCell.h" +#import "JXCategoryTitleVerticalZoomCellModel.h" +#import "JXCategoryTitleVerticalZoomView.h" + +FOUNDATION_EXPORT double JXCategoryViewVersionNumber; +FOUNDATION_EXPORT const unsigned char JXCategoryViewVersionString[]; + diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView.debug.xcconfig b/Pods/Target Support Files/JXCategoryView/JXCategoryView.debug.xcconfig new file mode 100644 index 0000000..4256a18 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView.debug.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +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}/JXCategoryView +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/Pods/Target Support Files/JXCategoryView/JXCategoryView.modulemap b/Pods/Target Support Files/JXCategoryView/JXCategoryView.modulemap new file mode 100644 index 0000000..fec3cc8 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView.modulemap @@ -0,0 +1,6 @@ +framework module JXCategoryView { + umbrella header "JXCategoryView-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/JXCategoryView/JXCategoryView.release.xcconfig b/Pods/Target Support Files/JXCategoryView/JXCategoryView.release.xcconfig new file mode 100644 index 0000000..4256a18 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/JXCategoryView.release.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +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}/JXCategoryView +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/Pods/Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist b/Pods/Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist new file mode 100644 index 0000000..644e001 --- /dev/null +++ b/Pods/Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + ${PODS_DEVELOPMENT_LANGUAGE} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + BNDL + CFBundleShortVersionString + 1.6.8 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView-Info.plist b/Pods/Target Support Files/JXPagingView/JXPagingView-Info.plist new file mode 100644 index 0000000..08ba171 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView-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 + 2.1.3 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView-dummy.m b/Pods/Target Support Files/JXPagingView/JXPagingView-dummy.m new file mode 100644 index 0000000..6a26959 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_JXPagingView : NSObject +@end +@implementation PodsDummy_JXPagingView +@end diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView-prefix.pch b/Pods/Target Support Files/JXPagingView/JXPagingView-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView-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/Pods/Target Support Files/JXPagingView/JXPagingView-umbrella.h b/Pods/Target Support Files/JXPagingView/JXPagingView-umbrella.h new file mode 100644 index 0000000..67650f6 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView-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 "JXPagerListContainerView.h" +#import "JXPagerListRefreshView.h" +#import "JXPagerMainTableView.h" +#import "JXPagerSmoothView.h" +#import "JXPagerView.h" + +FOUNDATION_EXPORT double JXPagingViewVersionNumber; +FOUNDATION_EXPORT const unsigned char JXPagingViewVersionString[]; + diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView.debug.xcconfig b/Pods/Target Support Files/JXPagingView/JXPagingView.debug.xcconfig new file mode 100644 index 0000000..eefa6a8 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView.debug.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +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}/JXPagingView +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/Pods/Target Support Files/JXPagingView/JXPagingView.modulemap b/Pods/Target Support Files/JXPagingView/JXPagingView.modulemap new file mode 100644 index 0000000..5702dc0 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView.modulemap @@ -0,0 +1,6 @@ +framework module JXPagingView { + umbrella header "JXPagingView-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/JXPagingView/JXPagingView.release.xcconfig b/Pods/Target Support Files/JXPagingView/JXPagingView.release.xcconfig new file mode 100644 index 0000000..eefa6a8 --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/JXPagingView.release.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +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}/JXPagingView +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/Pods/Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist b/Pods/Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist new file mode 100644 index 0000000..5b5034b --- /dev/null +++ b/Pods/Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist @@ -0,0 +1,24 @@ + + + + + CFBundleDevelopmentRegion + ${PODS_DEVELOPMENT_LANGUAGE} + CFBundleIdentifier + ${PRODUCT_BUNDLE_IDENTIFIER} + CFBundleInfoDictionaryVersion + 6.0 + CFBundleName + ${PRODUCT_NAME} + CFBundlePackageType + BNDL + CFBundleShortVersionString + 2.1.3 + CFBundleSignature + ???? + CFBundleVersion + 1 + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown index 2a72233..4a433e6 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown @@ -87,6 +87,56 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## JXCategoryView + +MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + +## JXPagingView + +MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## LSTPopView Copyright (c) 2020 490790096@qq.com diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist index 2a65449..446a6f9 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist @@ -122,6 +122,68 @@ SOFTWARE. Type PSGroupSpecifier
+ + FooterText + MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + JXCategoryView + Type + PSGroupSpecifier + + + FooterText + MIT License + +Copyright (c) 2018 暴走的鑫鑫 + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + JXPagingView + Type + PSGroupSpecifier + FooterText Copyright (c) 2020 490790096@qq.com <LoSenTrad@163.com> diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist index 7026892..466ee5a 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist @@ -3,6 +3,8 @@ ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework ${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework ${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework ${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework +${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework +${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework ${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework ${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework ${BUILT_PRODUCTS_DIR}/LookinServer/LookinServer.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist index 44c2c72..41036e9 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist @@ -2,6 +2,8 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HWPanModal.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTPopView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTTimer.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LookinServer.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist index a1e87cf..a7b1474 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist @@ -3,6 +3,8 @@ ${BUILT_PRODUCTS_DIR}/AFNetworking/AFNetworking.framework ${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework ${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework ${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework +${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework +${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework ${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework ${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework ${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist index 12df5ac..6400ccd 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist @@ -2,6 +2,8 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/AFNetworking.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/DZNEmptyDataSet.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/FLAnimatedImage.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/HWPanModal.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTPopView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTTimer.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh index fd710bd..b51cb50 100755 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh @@ -180,6 +180,8 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework" install_framework "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework" install_framework "${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework" + install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework" + install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework" install_framework "${BUILT_PRODUCTS_DIR}/LookinServer/LookinServer.framework" @@ -194,6 +196,8 @@ if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework" install_framework "${BUILT_PRODUCTS_DIR}/FLAnimatedImage/FLAnimatedImage.framework" install_framework "${BUILT_PRODUCTS_DIR}/HWPanModal/HWPanModal.framework" + install_framework "${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework" + install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework" install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework" diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig index 3620983..490ea4d 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "LSTPopView" -framework "LSTTimer" -framework "LookinServer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LSTPopView" -framework "LSTTimer" -framework "LookinServer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig index 0e9c332..1e97dd5 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_ROOT}/Bugly" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_ROOT}/Bugly" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AFNetworking" -framework "Bugly" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "LSTPopView" -framework "LSTTimer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AFNetworking" -framework "Bugly" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LSTPopView" -framework "LSTTimer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 50a4752..2fde4eb 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -20,6 +20,34 @@ 0477BE002EBC6A330055D639 /* HomeRankVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */; }; 0477BE042EBC83130055D639 /* HomeMainVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BE032EBC83130055D639 /* HomeMainVC.m */; }; 047C650D2EBC8A840035E841 /* KBPanModalView.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C650C2EBC8A840035E841 /* KBPanModalView.m */; }; + 047C65102EBCA8DD0035E841 /* HomeRankContentVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C650F2EBCA8DD0035E841 /* HomeRankContentVC.m */; }; + 047C652D2EBCAAAC0035E841 /* crab_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651F2EBCAAAC0035E841 /* crab_selected.png */; }; + 047C652E2EBCAAAC0035E841 /* crab.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651E2EBCAAAC0035E841 /* crab.png */; }; + 047C652F2EBCAAAC0035E841 /* arrow_down.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651A2EBCAAAC0035E841 /* arrow_down.png */; }; + 047C65302EBCAAAC0035E841 /* football.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65212EBCAAAC0035E841 /* football.png */; }; + 047C65312EBCAAAC0035E841 /* city.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65122EBCAAAC0035E841 /* city.png */; }; + 047C65322EBCAAAC0035E841 /* apple_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65192EBCAAAC0035E841 /* apple_selected.png */; }; + 047C65332EBCAAAC0035E841 /* carrot.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651C2EBCAAAC0035E841 /* carrot.png */; }; + 047C65342EBCAAAC0035E841 /* lobster.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65262EBCAAAC0035E841 /* lobster.png */; }; + 047C65352EBCAAAC0035E841 /* lufei.jpg in Resources */ = {isa = PBXBuildFile; fileRef = 047C65282EBCAAAC0035E841 /* lufei.jpg */; }; + 047C65362EBCAAAC0035E841 /* river.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65152EBCAAAC0035E841 /* river.png */; }; + 047C65372EBCAAAC0035E841 /* watermelon_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C652A2EBCAAAC0035E841 /* watermelon_selected.png */; }; + 047C65382EBCAAAC0035E841 /* JXCategoryView.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65242EBCAAAC0035E841 /* JXCategoryView.png */; }; + 047C65392EBCAAAC0035E841 /* JXCategoryViewStructure.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65252EBCAAAC0035E841 /* JXCategoryViewStructure.png */; }; + 047C653A2EBCAAAC0035E841 /* arrow_up.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651B2EBCAAAC0035E841 /* arrow_up.png */; }; + 047C653B2EBCAAAC0035E841 /* boat.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65112EBCAAAC0035E841 /* boat.png */; }; + 047C653C2EBCAAAC0035E841 /* grape_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65232EBCAAAC0035E841 /* grape_selected.png */; }; + 047C653D2EBCAAAC0035E841 /* lobster_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65272EBCAAAC0035E841 /* lobster_selected.png */; }; + 047C653E2EBCAAAC0035E841 /* light.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65132EBCAAAC0035E841 /* light.png */; }; + 047C653F2EBCAAAC0035E841 /* seaWave.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65162EBCAAAC0035E841 /* seaWave.png */; }; + 047C65402EBCAAAC0035E841 /* watermelon.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65292EBCAAAC0035E841 /* watermelon.png */; }; + 047C65412EBCAAAC0035E841 /* lotus.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65142EBCAAAC0035E841 /* lotus.png */; }; + 047C65422EBCAAAC0035E841 /* grape.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65222EBCAAAC0035E841 /* grape.png */; }; + 047C65432EBCAAAC0035E841 /* filter.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65202EBCAAAC0035E841 /* filter.png */; }; + 047C65442EBCAAAC0035E841 /* apple.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C65182EBCAAAC0035E841 /* apple.png */; }; + 047C65452EBCAAAC0035E841 /* carrot_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651D2EBCAAAC0035E841 /* carrot_selected.png */; }; + 047C65502EBCBA9E0035E841 /* KBShopVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C654F2EBCBA9E0035E841 /* KBShopVC.m */; }; + 047C65532EBCBAC60035E841 /* KBCommunityVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C65522EBCBAC60035E841 /* KBCommunityVC.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -123,6 +151,37 @@ 0477BE032EBC83130055D639 /* HomeMainVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeMainVC.m; sourceTree = ""; }; 047C650B2EBC8A840035E841 /* KBPanModalView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBPanModalView.h; sourceTree = ""; }; 047C650C2EBC8A840035E841 /* KBPanModalView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBPanModalView.m; sourceTree = ""; }; + 047C650E2EBCA8DD0035E841 /* HomeRankContentVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeRankContentVC.h; sourceTree = ""; }; + 047C650F2EBCA8DD0035E841 /* HomeRankContentVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeRankContentVC.m; sourceTree = ""; }; + 047C65112EBCAAAC0035E841 /* boat.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = boat.png; sourceTree = ""; }; + 047C65122EBCAAAC0035E841 /* city.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = city.png; sourceTree = ""; }; + 047C65132EBCAAAC0035E841 /* light.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = light.png; sourceTree = ""; }; + 047C65142EBCAAAC0035E841 /* lotus.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lotus.png; sourceTree = ""; }; + 047C65152EBCAAAC0035E841 /* river.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = river.png; sourceTree = ""; }; + 047C65162EBCAAAC0035E841 /* seaWave.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = seaWave.png; sourceTree = ""; }; + 047C65182EBCAAAC0035E841 /* apple.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple.png; sourceTree = ""; }; + 047C65192EBCAAAC0035E841 /* apple_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = apple_selected.png; sourceTree = ""; }; + 047C651A2EBCAAAC0035E841 /* arrow_down.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_down.png; sourceTree = ""; }; + 047C651B2EBCAAAC0035E841 /* arrow_up.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = arrow_up.png; sourceTree = ""; }; + 047C651C2EBCAAAC0035E841 /* carrot.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = carrot.png; sourceTree = ""; }; + 047C651D2EBCAAAC0035E841 /* carrot_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = carrot_selected.png; sourceTree = ""; }; + 047C651E2EBCAAAC0035E841 /* crab.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = crab.png; sourceTree = ""; }; + 047C651F2EBCAAAC0035E841 /* crab_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = crab_selected.png; sourceTree = ""; }; + 047C65202EBCAAAC0035E841 /* filter.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = filter.png; sourceTree = ""; }; + 047C65212EBCAAAC0035E841 /* football.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = football.png; sourceTree = ""; }; + 047C65222EBCAAAC0035E841 /* grape.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = grape.png; sourceTree = ""; }; + 047C65232EBCAAAC0035E841 /* grape_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = grape_selected.png; sourceTree = ""; }; + 047C65242EBCAAAC0035E841 /* JXCategoryView.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JXCategoryView.png; sourceTree = ""; }; + 047C65252EBCAAAC0035E841 /* JXCategoryViewStructure.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = JXCategoryViewStructure.png; sourceTree = ""; }; + 047C65262EBCAAAC0035E841 /* lobster.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lobster.png; sourceTree = ""; }; + 047C65272EBCAAAC0035E841 /* lobster_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = lobster_selected.png; sourceTree = ""; }; + 047C65282EBCAAAC0035E841 /* lufei.jpg */ = {isa = PBXFileReference; lastKnownFileType = image.jpeg; path = lufei.jpg; sourceTree = ""; }; + 047C65292EBCAAAC0035E841 /* watermelon.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = watermelon.png; sourceTree = ""; }; + 047C652A2EBCAAAC0035E841 /* watermelon_selected.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = watermelon_selected.png; sourceTree = ""; }; + 047C654E2EBCBA9E0035E841 /* KBShopVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBShopVC.h; sourceTree = ""; }; + 047C654F2EBCBA9E0035E841 /* KBShopVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBShopVC.m; sourceTree = ""; }; + 047C65512EBCBAC60035E841 /* KBCommunityVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCommunityVC.h; sourceTree = ""; }; + 047C65522EBCBAC60035E841 /* KBCommunityVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCommunityVC.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -272,6 +331,120 @@ path = FunctionTest; sourceTree = ""; }; + 047C65172EBCAAAC0035E841 /* Indicator */ = { + isa = PBXGroup; + children = ( + 047C65112EBCAAAC0035E841 /* boat.png */, + 047C65122EBCAAAC0035E841 /* city.png */, + 047C65132EBCAAAC0035E841 /* light.png */, + 047C65142EBCAAAC0035E841 /* lotus.png */, + 047C65152EBCAAAC0035E841 /* river.png */, + 047C65162EBCAAAC0035E841 /* seaWave.png */, + ); + path = Indicator; + sourceTree = ""; + }; + 047C652B2EBCAAAC0035E841 /* Images */ = { + isa = PBXGroup; + children = ( + 047C65172EBCAAAC0035E841 /* Indicator */, + 047C65182EBCAAAC0035E841 /* apple.png */, + 047C65192EBCAAAC0035E841 /* apple_selected.png */, + 047C651A2EBCAAAC0035E841 /* arrow_down.png */, + 047C651B2EBCAAAC0035E841 /* arrow_up.png */, + 047C651C2EBCAAAC0035E841 /* carrot.png */, + 047C651D2EBCAAAC0035E841 /* carrot_selected.png */, + 047C651E2EBCAAAC0035E841 /* crab.png */, + 047C651F2EBCAAAC0035E841 /* crab_selected.png */, + 047C65202EBCAAAC0035E841 /* filter.png */, + 047C65212EBCAAAC0035E841 /* football.png */, + 047C65222EBCAAAC0035E841 /* grape.png */, + 047C65232EBCAAAC0035E841 /* grape_selected.png */, + 047C65242EBCAAAC0035E841 /* JXCategoryView.png */, + 047C65252EBCAAAC0035E841 /* JXCategoryViewStructure.png */, + 047C65262EBCAAAC0035E841 /* lobster.png */, + 047C65272EBCAAAC0035E841 /* lobster_selected.png */, + 047C65282EBCAAAC0035E841 /* lufei.jpg */, + 047C65292EBCAAAC0035E841 /* watermelon.png */, + 047C652A2EBCAAAC0035E841 /* watermelon_selected.png */, + ); + path = Images; + sourceTree = ""; + }; + 047C652C2EBCAAAC0035E841 /* Resource */ = { + isa = PBXGroup; + children = ( + 047C652B2EBCAAAC0035E841 /* Images */, + ); + path = Resource; + sourceTree = ""; + }; + 047C65462EBCBA880035E841 /* M */ = { + isa = PBXGroup; + children = ( + ); + path = M; + sourceTree = ""; + }; + 047C65472EBCBA880035E841 /* V */ = { + isa = PBXGroup; + children = ( + ); + path = V; + sourceTree = ""; + }; + 047C65482EBCBA880035E841 /* VC */ = { + isa = PBXGroup; + children = ( + 047C65512EBCBAC60035E841 /* KBCommunityVC.h */, + 047C65522EBCBAC60035E841 /* KBCommunityVC.m */, + ); + path = VC; + sourceTree = ""; + }; + 047C65492EBCBA880035E841 /* Community */ = { + isa = PBXGroup; + children = ( + 047C65462EBCBA880035E841 /* M */, + 047C65472EBCBA880035E841 /* V */, + 047C65482EBCBA880035E841 /* VC */, + ); + path = Community; + sourceTree = ""; + }; + 047C654A2EBCBA880035E841 /* M */ = { + isa = PBXGroup; + children = ( + ); + path = M; + sourceTree = ""; + }; + 047C654B2EBCBA880035E841 /* V */ = { + isa = PBXGroup; + children = ( + ); + path = V; + sourceTree = ""; + }; + 047C654C2EBCBA880035E841 /* VC */ = { + isa = PBXGroup; + children = ( + 047C654E2EBCBA9E0035E841 /* KBShopVC.h */, + 047C654F2EBCBA9E0035E841 /* KBShopVC.m */, + ); + path = VC; + sourceTree = ""; + }; + 047C654D2EBCBA880035E841 /* Shop */ = { + isa = PBXGroup; + children = ( + 047C654A2EBCBA880035E841 /* M */, + 047C654B2EBCBA880035E841 /* V */, + 047C654C2EBCBA880035E841 /* VC */, + ); + path = Shop; + sourceTree = ""; + }; 04A9FE122EB4D0D20020DB6D /* Manager */ = { isa = PBXGroup; children = ( @@ -408,6 +581,8 @@ 0477BDFC2EBC6A170055D639 /* HomeHotVC.m */, 0477BDFE2EBC6A330055D639 /* HomeRankVC.h */, 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */, + 047C650E2EBCA8DD0035E841 /* HomeRankContentVC.h */, + 047C650F2EBCA8DD0035E841 /* HomeRankContentVC.m */, 0477BE012EBC6D420055D639 /* FunctionTest */, ); path = VC; @@ -490,6 +665,9 @@ 04FC95BF2EB1E3B1007BD342 /* Class */ = { isa = PBXGroup; children = ( + 047C65492EBCBA880035E841 /* Community */, + 047C654D2EBCBA880035E841 /* Shop */, + 047C652C2EBCAAAC0035E841 /* Resource */, 04FC95EE2EB3399D007BD342 /* Manager */, 04FC95ED2EB33611007BD342 /* Login */, 04FC95E82EB23B67007BD342 /* Network */, @@ -813,6 +991,31 @@ buildActionMask = 2147483647; files = ( 04C6EABA2EAF86530089C901 /* Assets.xcassets in Resources */, + 047C652D2EBCAAAC0035E841 /* crab_selected.png in Resources */, + 047C652E2EBCAAAC0035E841 /* crab.png in Resources */, + 047C652F2EBCAAAC0035E841 /* arrow_down.png in Resources */, + 047C65302EBCAAAC0035E841 /* football.png in Resources */, + 047C65312EBCAAAC0035E841 /* city.png in Resources */, + 047C65322EBCAAAC0035E841 /* apple_selected.png in Resources */, + 047C65332EBCAAAC0035E841 /* carrot.png in Resources */, + 047C65342EBCAAAC0035E841 /* lobster.png in Resources */, + 047C65352EBCAAAC0035E841 /* lufei.jpg in Resources */, + 047C65362EBCAAAC0035E841 /* river.png in Resources */, + 047C65372EBCAAAC0035E841 /* watermelon_selected.png in Resources */, + 047C65382EBCAAAC0035E841 /* JXCategoryView.png in Resources */, + 047C65392EBCAAAC0035E841 /* JXCategoryViewStructure.png in Resources */, + 047C653A2EBCAAAC0035E841 /* arrow_up.png in Resources */, + 047C653B2EBCAAAC0035E841 /* boat.png in Resources */, + 047C653C2EBCAAAC0035E841 /* grape_selected.png in Resources */, + 047C653D2EBCAAAC0035E841 /* lobster_selected.png in Resources */, + 047C653E2EBCAAAC0035E841 /* light.png in Resources */, + 047C653F2EBCAAAC0035E841 /* seaWave.png in Resources */, + 047C65402EBCAAAC0035E841 /* watermelon.png in Resources */, + 047C65412EBCAAAC0035E841 /* lotus.png in Resources */, + 047C65422EBCAAAC0035E841 /* grape.png in Resources */, + 047C65432EBCAAAC0035E841 /* filter.png in Resources */, + 047C65442EBCAAAC0035E841 /* apple.png in Resources */, + 047C65452EBCAAAC0035E841 /* carrot_selected.png in Resources */, 04A9FE212EB893F10020DB6D /* Localizable.strings in Resources */, 04C6EABC2EAF86530089C901 /* LaunchScreen.storyboard in Resources */, 04C6EABD2EAF86530089C901 /* Main.storyboard in Resources */, @@ -936,6 +1139,7 @@ 04FC95D82EB1EA16007BD342 /* BaseCell.m in Sources */, 0477BDF72EBC63A80055D639 /* KBTestVC.m in Sources */, 04FC95C92EB1E4C9007BD342 /* BaseNavigationController.m in Sources */, + 047C65102EBCA8DD0035E841 /* HomeRankContentVC.m in Sources */, 04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */, 04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */, 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */, @@ -950,6 +1154,7 @@ A1B2D7022EB8C00100000001 /* KBLangTestVC.m in Sources */, 04C6EABF2EAF86530089C901 /* main.m in Sources */, 04FC95CC2EB1E780007BD342 /* BaseTabBarController.m in Sources */, + 047C65502EBCBA9E0035E841 /* KBShopVC.m in Sources */, 0477BE042EBC83130055D639 /* HomeMainVC.m in Sources */, 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */, A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */, @@ -958,6 +1163,7 @@ 04FC95F42EB339C1007BD342 /* AppleSignInManager.m in Sources */, 04C6EAC12EAF86530089C901 /* ViewController.m in Sources */, A1B2C4002EB4A0A100000004 /* KBAuthManager.m in Sources */, + 047C65532EBCBAC60035E841 /* KBCommunityVC.m in Sources */, A1B2C4212EB4B7A100000001 /* KBKeyboardPermissionManager.m in Sources */, 0459D1B42EBA284C00F2D189 /* KBSkinCenterVC.m in Sources */, ); @@ -1092,6 +1298,7 @@ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UIUserInterfaceStyle = Light; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", @@ -1131,6 +1338,7 @@ INFOPLIST_KEY_UILaunchStoryboardName = LaunchScreen; INFOPLIST_KEY_UIMainStoryboardFile = Main; INFOPLIST_KEY_UISupportedInterfaceOrientations = UIInterfaceOrientationPortrait; + INFOPLIST_KEY_UIUserInterfaceStyle = Light; IPHONEOS_DEPLOYMENT_TARGET = 15.0; LD_RUNPATH_SEARCH_PATHS = ( "$(inherited)", diff --git a/keyBoard/Assets.xcassets/Tabbar/Contents.json b/keyBoard/Assets.xcassets/Tabbar/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/Contents.json new file mode 100644 index 0000000..7af5406 --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_home@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_home@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_home.imageset/tab_home@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..54341f2652195a57e84b60a566f6de2b45827704 GIT binary patch literal 1624 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/Contents.json new file mode 100644 index 0000000..ebc818b --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_home_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_home_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_home_selected.imageset/tab_home_selected@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..fa0f28d642fbe25d5a1974874f75d211d076efb6 GIT binary patch literal 2371 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@3x.png b/keyBoard/Assets.xcassets/Tabbar/tab_my.imageset/tab_my@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..9f9d55aaac4b531629d6a3d1d3ea559e4084e872 GIT binary patch literal 5373 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 bK~w_(7nU};xszH~00000NkvXXu0mjf1=DYK literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/Contents.json new file mode 100644 index 0000000..96d8332 --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_my_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_my_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_my_selected.imageset/tab_my_selected@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..9afd6047679c754530ffd59d2298f3aa0c6c1a40 GIT binary patch literal 3899 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 WW!s$?^p?2*0000iJv% literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@3x.png b/keyBoard/Assets.xcassets/Tabbar/tab_shequ.imageset/tab_shequ@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..78f9d1b5aec54b09d72f33983b90cb7b1796c095 GIT binary patch literal 5847 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 O0000NP|^{Sd6q5A`ijEoGj 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/Contents.json b/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/Contents.json new file mode 100644 index 0000000..52f0b4a --- /dev/null +++ b/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "tab_shop_selected@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "tab_shop_selected@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@2x.png b/keyBoard/Assets.xcassets/Tabbar/tab_shop_selected.imageset/tab_shop_selected@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4478dca2d838cf5ed4066f9f80a5d3dd48d47cf6 GIT binary patch literal 2239 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface KBCommunityVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Community/VC/KBCommunityVC.m b/keyBoard/Class/Community/VC/KBCommunityVC.m new file mode 100644 index 0000000..8819311 --- /dev/null +++ b/keyBoard/Class/Community/VC/KBCommunityVC.m @@ -0,0 +1,31 @@ +// +// KBCommunityVC.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "KBCommunityVC.h" + +@interface KBCommunityVC () + +@end + +@implementation KBCommunityVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m index 5fe71e9..de1d0e3 100644 --- a/keyBoard/Class/Home/V/KBPanModalView.m +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -23,6 +23,8 @@ @property (nonatomic, strong) UIViewController *currentChild; @property (nonatomic, strong) HomeHotVC *hotVC; @property (nonatomic, strong) HomeRankVC *rankVC; +@property (nonatomic, assign) NSInteger currentIndex; + @end @implementation KBPanModalView @@ -83,6 +85,10 @@ return NO; // 在 short 状态禁止继续往下拉(锁住最小高度) } +- (CGFloat)topOffset{ + return 0.001; +} + /// 允许时间穿透 - (BOOL)allowsTouchEventsPassingThroughTransitionView { return YES; @@ -94,7 +100,10 @@ - (UIScrollView *)panScrollable { - return self.hotVC.tableView; + if (self.currentIndex == 0) { + return self.hotVC.tableView; + } + return self.rankVC.tableView; } // 可选:完全不允许拖拽关闭(避免被拉到底消失) @@ -130,7 +139,7 @@ self.topBar.backgroundColor = [UIColor colorWithWhite:1 alpha:0.9]; [self addSubview:self.topBar]; // 首次展示时先隐藏,待转场完成后再淡入,避免“自底向上滑入”的错觉 - self.topBar.alpha = 0.0; +// self.topBar.alpha = 0.0; // 两个按钮 self.hotButton = [UIButton buttonWithType:UIButtonTypeCustom]; @@ -200,12 +209,13 @@ - (void)onTapTopButton:(UIButton *)sender { [self switchToIndex:sender.tag animated:YES]; - [self hw_panModalSetNeedsLayoutUpdate]; +// [self hw_panModalSetNeedsLayoutUpdate]; } #pragma mark - Switch Child - (void)switchToIndex:(NSInteger)index animated:(BOOL)animated { + self.currentIndex = index; UIViewController *target = (index == 0) ? self.hotVC : self.rankVC; if (!target) { if (index == 0) { @@ -235,11 +245,11 @@ [self.containerView addSubview:target.view]; target.view.backgroundColor = [UIColor colorWithWhite:0.98 alpha:1]; [target.view mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self.containerView); + make.left.top.right.equalTo(self.containerView); + make.bottom.equalTo(self.containerView).offset(-KB_TABBAR_HEIGHT); }]; - [target didMoveToParentViewController:self]; +// [target didMoveToParentViewController:self]; self.currentChild = target; - [self updateButtonStateForIndex:index animated:animated]; } diff --git a/keyBoard/Class/Home/VC/HomeRankContentVC.h b/keyBoard/Class/Home/VC/HomeRankContentVC.h new file mode 100644 index 0000000..ae458c0 --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeRankContentVC.h @@ -0,0 +1,18 @@ +// +// HomeRankContentVC.h +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import +#import "JXCategoryListContainerView.h" + +NS_ASSUME_NONNULL_BEGIN + +@interface HomeRankContentVC : UIViewController +@property (nonatomic, strong) BaseTableView *tableView; + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/HomeRankContentVC.m b/keyBoard/Class/Home/VC/HomeRankContentVC.m new file mode 100644 index 0000000..6fcf1d8 --- /dev/null +++ b/keyBoard/Class/Home/VC/HomeRankContentVC.m @@ -0,0 +1,96 @@ +// +// HomeRankContentVC.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "HomeRankContentVC.h" +#import "HomeHotCell.h" +@interface HomeRankContentVC () +@property (nonatomic, strong) NSArray *dataSource; // 简单模拟数据 + +@end + +@implementation HomeRankContentVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + // 构建数据(演示) + self.dataSource = @[ + @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, + @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, + @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, + @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, + @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO} + ]; + // 设置背景颜色:随机色 + self.view.backgroundColor = COLOR_WITH_RGB(arc4random()%255/255.0, arc4random()%255/255.0, arc4random()%255/255.0, 1); + [self.view addSubview:self.tableView]; + [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.right.equalTo(self.view); + make.bottom.equalTo(self.view); + + }]; +} + +#pragma mark - UITableViewDataSource + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + return self.dataSource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + HomeHotCell *cell = [tableView dequeueReusableCellWithIdentifier:HomeHotCell.reuseId forIndexPath:indexPath]; + NSDictionary *item = self.dataSource[indexPath.row]; + // 配置 cell + [cell configWithRank:[item[@"rank"] integerValue] + title:item[@"title"] + subtitle:item[@"sub"] + joined:[item[@"joined"] boolValue]]; + return cell; +} + +#pragma mark - UITableViewDelegate + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 84.0; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { + [tableView deselectRowAtIndexPath:indexPath animated:YES]; + +} + +- (BaseTableView *)tableView { + if (!_tableView) { + // 使用 BaseTableView,统一默认配置 + _tableView = [[BaseTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + _tableView.dataSource = self; + _tableView.delegate = self; + _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // 设计为卡片式,去掉系统分割线 + _tableView.showsVerticalScrollIndicator = NO; + _tableView.contentInset = UIEdgeInsetsMake(8, 0, KB_SafeAreaBottom(), 0); + [_tableView registerClass:HomeHotCell.class forCellReuseIdentifier:HomeHotCell.reuseId]; + } + return _tableView; +} + + +#pragma mark - JXCategoryListContentViewDelegate + +/** + 实现 协议方法,返回该视图控制器所拥有的「视图」 + */ +- (UIView *)listView { + return self.view; +} +@end diff --git a/keyBoard/Class/Home/VC/HomeRankVC.h b/keyBoard/Class/Home/VC/HomeRankVC.h index e439160..908f65f 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.h +++ b/keyBoard/Class/Home/VC/HomeRankVC.h @@ -6,11 +6,13 @@ // #import - +#import "JXCategoryView.h" +#import "JXCategoryListContainerView.h" NS_ASSUME_NONNULL_BEGIN -@interface HomeRankVC : UIViewController - +@interface HomeRankVC : UIViewController +// 列表 +@property (nonatomic, strong) BaseTableView *tableView; @end NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/HomeRankVC.m b/keyBoard/Class/Home/VC/HomeRankVC.m index bd13aa3..a59417d 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.m +++ b/keyBoard/Class/Home/VC/HomeRankVC.m @@ -6,8 +6,13 @@ // #import "HomeRankVC.h" +#import "HomeRankContentVC.h" -@interface HomeRankVC () +@interface HomeRankVC () +@property (nonatomic, strong) NSArray *titles; +@property (nonatomic, strong) JXCategoryTitleImageView *myCategoryView; +@property (nonatomic, strong) JXCategoryListContainerView *listContainerView; +@property (nonatomic, assign) JXCategoryTitleImageType currentType; @end @@ -17,16 +22,124 @@ [super viewDidLoad]; // Do any additional setup after loading the view. self.view.backgroundColor = [UIColor grayColor]; + self.titles = @[@"螃蟹啊斯柯达积分卡", @"小龙虾", @"苹果", @"胡萝卜", @"葡萄", @"西瓜"]; + [self.view addSubview:self.myCategoryView]; + [self.view addSubview:self.listContainerView]; +// self.listContainerView.scrollView.scrollEnabled = false; + NSArray *imageNames = @[@"crab", @"lobster", @"apple", @"carrot", @"grape", @"watermelon"]; + NSArray *selectedImageNames = @[@"crab_selected", @"lobster_selected", @"apple_selected", @"carrot_selected", @"grape_selected", @"watermelon_selected"]; + + self.myCategoryView.titles = self.titles; + self.myCategoryView.imageInfoArray = imageNames; + self.myCategoryView.selectedImageInfoArray = selectedImageNames; + self.myCategoryView.loadImageBlock = ^(UIImageView *imageView, id info) { + NSString *imageName = info; + imageView.image = [UIImage imageNamed:imageName]; + }; + self.myCategoryView.imageZoomEnabled = YES; + self.myCategoryView.imageZoomScale = 1.3; + self.myCategoryView.averageCellSpacingEnabled = NO; + + JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; + lineView.indicatorWidth = 20; + self.myCategoryView.indicators = @[lineView]; + + [self configCategoryViewWithType:JXCategoryTitleImageType_LeftImage]; } -/* -#pragma mark - Navigation +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. + self.myCategoryView.frame = CGRectMake(0, 0, self.view.bounds.size.width, [self preferredCategoryViewHeight]); + self.listContainerView.frame = CGRectMake(0, [self preferredCategoryViewHeight], self.view.bounds.size.width, self.view.bounds.size.height - [self preferredCategoryViewHeight]); +} + +//- (JXCategoryBaseView *)preferredCategoryView { +// return [[JXCategoryBaseView alloc] init]; +//} + +- (CGFloat)preferredCategoryViewHeight { + return 50; +} + +- (void)configCategoryViewWithType:(JXCategoryTitleImageType)imageType { + self.currentType = imageType; + if ((NSInteger)imageType == 100) { + NSMutableArray *types = [NSMutableArray array]; + for (int i = 0; i < self.titles.count; i++) { + if (i == 2) { + [types addObject:@(JXCategoryTitleImageType_OnlyImage)]; + }else if (i == 4) { + [types addObject:@(JXCategoryTitleImageType_LeftImage)]; + }else { + [types addObject:@(JXCategoryTitleImageType_OnlyTitle)]; + } + } + self.myCategoryView.imageTypes = types; + }else { + NSMutableArray *types = [NSMutableArray array]; + for (int i = 0; i < self.titles.count; i++) { + [types addObject:@(imageType)]; + } + self.myCategoryView.imageTypes = types; + } + [self.myCategoryView reloadData]; +} + +// 分页菜单视图 +- (JXCategoryTitleImageView *)myCategoryView { + if (!_myCategoryView) { + _myCategoryView = [[JXCategoryTitleImageView alloc] init]; + _myCategoryView.delegate = self; + + // !!!: 将列表容器视图关联到 categoryView + _myCategoryView.listContainer = self.listContainerView; + } + return _myCategoryView; +} + +// 列表容器视图 +- (JXCategoryListContainerView *)listContainerView { + if (!_listContainerView) { + _listContainerView = [[JXCategoryListContainerView alloc] initWithType:JXCategoryListContainerType_ScrollView delegate:self]; + } + return _listContainerView; +} + +#pragma mark - JXCategoryViewDelegate + +// 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。 +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + NSLog(@"%@", NSStringFromSelector(_cmd)); + self. + // 侧滑手势处理 + self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); +} + +// 滚动选中的情况才会调用该方法 +- (void)categoryView:(JXCategoryBaseView *)categoryView didScrollSelectedItemAtIndex:(NSInteger)index { + NSLog(@"%@", NSStringFromSelector(_cmd)); +} + +#pragma mark - JXCategoryListContainerViewDelegate + +// 返回列表的数量 +- (NSInteger)numberOfListsInlistContainerView:(JXCategoryListContainerView *)listContainerView { + return self.titles.count; +} + +// 返回各个列表菜单下的实例,该实例需要遵守并实现 协议 +- (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { + HomeRankContentVC *list = [[HomeRankContentVC alloc] init]; + self.tableView = list.tableView; + return list; +} + + +#pragma mark - TitleImageSettingViewControllerDelegate + +- (void)titleImageSettingVCDidSelectedImageType:(JXCategoryTitleImageType)imageType { + [self configCategoryViewWithType:imageType]; } -*/ @end diff --git a/keyBoard/Class/Home/VC/HomeVC.m b/keyBoard/Class/Home/VC/HomeVC.m index 94f4f45..d6badcb 100644 --- a/keyBoard/Class/Home/VC/HomeVC.m +++ b/keyBoard/Class/Home/VC/HomeVC.m @@ -26,12 +26,12 @@ // 创建sheetVC HomeSheetVC *vc = [[HomeSheetVC alloc] init]; // 使用宏,避免误写成函数指针判断导致恒为 true - if (KB_DEVICE_HAS_NOTCH) { - vc.minHeight = KB_SCREEN_HEIGHT - topV - 34; - }else{ +// if (KB_DEVICE_HAS_NOTCH) { +// vc.minHeight = KB_SCREEN_HEIGHT - topV - 34; +// }else{ vc.minHeight = KB_SCREEN_HEIGHT - topV; // - } +// } vc.topInset = 100; [self presentPanModal:vc]; } diff --git a/keyBoard/Class/Resource/Images/Indicator/boat.png b/keyBoard/Class/Resource/Images/Indicator/boat.png new file mode 100644 index 0000000000000000000000000000000000000000..f0805999148d111a457e3c8a869c45b30d6ee692 GIT binary patch literal 21478 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∋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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/Indicator/lotus.png b/keyBoard/Class/Resource/Images/Indicator/lotus.png new file mode 100644 index 0000000000000000000000000000000000000000..0e33fdec0d3993e97c85d7de85923b25ac3b5659 GIT binary patch literal 178089 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/Indicator/river.png b/keyBoard/Class/Resource/Images/Indicator/river.png new file mode 100644 index 0000000000000000000000000000000000000000..3e0ca5e469fc15250cec17c325f448224cae7f09 GIT binary patch literal 19245 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Ξ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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/JXCategoryView.png b/keyBoard/Class/Resource/Images/JXCategoryView.png new file mode 100644 index 0000000000000000000000000000000000000000..ffee70913eca84d1416e87a65a6e7886559bd6fc GIT binary patch literal 2968 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 O0000ImHtz0_;2s8d0s(@%1-s-w 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 bHBP+Q=>y*ABOT4<{L{)vD2P{z8V3F!A`x|j literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/apple.png b/keyBoard/Class/Resource/Images/apple.png new file mode 100644 index 0000000000000000000000000000000000000000..f5644a4e116ba9d1f100db7a37c218e2b6de90f9 GIT binary patch literal 2032 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/arrow_up.png b/keyBoard/Class/Resource/Images/arrow_up.png new file mode 100644 index 0000000000000000000000000000000000000000..33c503ee7e3304fd2dca85dadc0bd47f1660cad2 GIT binary patch literal 156 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!P=HT}t9yZuk&%(UzCMuD)6)Yo z*8gMs4wPjp3GxeO_-K$|r*Ly=nFmnB*we)^q~g}vv(|hJ4jfL7fA0Q2HG2VPw*K8c yY%+Sqx6jsCH@ULyIuV>Qb~dH*W99#C68-~ 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/crab_selected.png b/keyBoard/Class/Resource/Images/crab_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..8a91fb37e26320bb9d77e198d7d7b8661e3313ec GIT binary patch literal 2195 zcmV;E2yFL>P)L~TM8W
    +m^y(?}=_&m0BlPMh`0XYC`5pD^DD>(m^y(<|>L~T< zDD>(m_UtG1>L~Q;DD>(m^y(<{>L~yJ5cKLQ^y(@0>M8c?DX)Y|X#fBK8+1}mQvk#* z{O5+_Pn-jWbS)6(H^I2;a#!{KoFXM~;?)4qgpRmCCc zOS8bnx1h|!U1Ug$lY<+(@zaEs<)w|G_7ZQL;t~ivbO4+(PZna-Q1Le`OI$cmu+KA5 z(i#)&t)g6g2NUd^)WQHWY-^Kpw3tzb%5p@QW#_cI)W$3~rLm;2vBam9}^ zX%$HeZB28pVGYUV!{h=3(RYu}S{SgyRSIImK;7OtV*?}p<^_>86%n1=#lWSXdYlz>`Gc$!5FCX0uwSSpjMO^6SS_YgP{)1SwN|!5=xhL`x}xk$m+8Lm6}?p zsBg0zT9pe0JA;Z%0TiZ|^|Yphq2e@95TuM}L(QTUSx|FbD3GJbVR&DaR3W`AtP)c5 zFu@j(Q4IqbNvfUtaO1X0un(H3^Y=VzPX!|p^J?U-&#eK5@6`E z&4Se9QxSuDC1fBe@x=L}vDWO&f*%C&@gKhF3#RAVKHB2uOBJMpo-U${p@#tk^ehzs z!1pwUSIpwORo_@tG}ORANwLt+foyd5bAP=*nb2r% zG-TgDqal^oW@;Uzw=998BJfB{stV#r7ZRN$eal>XNLkdohW#*o`hh9wxaO)LprMeV zgCDbHv=o~GMd@)f3R3A-M4q)^(@5QaavJvyEzJUcNnQAcpMP3RbQf3YmtPb`_E+)O zCH1UuG$S!T{}IuMr#X02vsI0&?7{$}zdXB1l^0FqIs)hvJytkw)D(FYJNKqwX7JRK z^rRIe7}k(6PgoicVg%+r;)&;e$(ZPtv3RsnuW06V#HBr!* zS2~ZIs>cDtILWA^IHgCji-1}ilA32jA&95<5b@(Oayv4^_ZEY;bxsm1V#u7_Xq!{* z&23s?NGGE~Zu=}sbvC8A7n+w1-?A?nsZQuIJ`e;rRV2A|VDw5_;^A4B(LkIDd?3g; zjL2g3RL`CE7L2Qn2kDm2M~Als!E_LGjz7PQ2x(C{x#YDX^gdLPUS!de90M&akej&4 zV^f}h65qf)2tT)#8w>y1_mkTENlhp)aK69Xs!v8b*2lwR*(scQ=2MY|Mzv=nuA#)n zIn<4zRL69axEQbvpLq2%U1e)roz3;jg86M#ndw$O_07qdJO`8b4llW{3MM(8>S3a# zxz!d!;v%pfIY}j?KB6bI$4RguCv`C-V$yWRo`~+{&8~@y9TPEW`@)VDr0-f|x18{$ zO}C6)U_7K`B*#wqWT=n|vI`{{3jlPifR6EDEW=Hkkg>4dUqRfEUSQcBHo()bI~Kjf z64({Hq7MY&mFm%RV|r1GIqL_Z7sUc|7%LMgEvS5@2vot@C!j0`}O;S@Dbz)as;_KX00R05oCoi@*c-v zKW44J(m+9Ahxinzq!7$FArNGHkA-cL;54tFuG; zi6*#t! z{m!n%^2ciiVeltLJLAvq9qhdMtkvPYm{$n0Mv_091p$NKIahrs$k~?_w$#1l6EMee zaqYraqBn`7g}!Z$xq~E%>BEu+#>_8&O|r&+83`qRSZn|Ce7J9PiV7-8PYVCRnCRE+H_!vD_n+cE!^AmlAL2M)A3&Ba@k&_)u^KRFs9 z0^hsR?#N*R7n9t^_vrUXtn{2UZEfSuuG^-#q!#^Jp;c8@NQcAWa5x+ehr{78_CKOk VXxDr}sv-aY002ovPDHLkV1j$JLlgi2 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/filter.png b/keyBoard/Class/Resource/Images/filter.png new file mode 100644 index 0000000000000000000000000000000000000000..8e425bb776334bd728825c58def6bbe6bdb6a7cb GIT binary patch literal 228 zcmeAS@N?(olHy`uVBq!ia0vp^0wB!63?wyl`GbL!L4Z$)t9yZuJ`5Nb7yy|N5+;U1 z1EnPA{P_md%U=@Y7tGKgaKL`S`Gf}!1_}WiCQR6>Yz34G@pN$vskl|z70q=(LEy-y zu-Ciy{?E;xxUlZZh7Bq_Uw$hy=!UxZN_rJ>d}llK@<}>_=+3Sh&C5qqBh;(k&z#ZQ seOy8R;LrW8H+7OyVl!0C6u149-(Ja-T4C@+9B4j+r>mdKI;Vst03fDF!2kdN literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/football.png b/keyBoard/Class/Resource/Images/football.png new file mode 100644 index 0000000000000000000000000000000000000000..843a03263681b80742b4be7b3af5ac902c8ae0de GIT binary patch literal 65011 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 x0+8KH&Nf$nFHmTIt_di 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%0Dr(twJtnye^O)ss*`EBXCorVy0q}_`Rr14i$ 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/grape_selected.png b/keyBoard/Class/Resource/Images/grape_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..fe393d6ef3a24f30f62562412b9ca62b19c12c3d GIT binary patch literal 1915 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/lobster_selected.png b/keyBoard/Class/Resource/Images/lobster_selected.png new file mode 100644 index 0000000000000000000000000000000000000000..efaa832ebeb41a5fee62c5ad3500963fb0714b14 GIT binary patch literal 2856 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 L&m{oH{uucmKCsyB literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Resource/Images/watermelon.png b/keyBoard/Class/Resource/Images/watermelon.png new file mode 100644 index 0000000000000000000000000000000000000000..cb3f2bda052f448f4ac82958b6911287ca47cfca GIT binary patch literal 3531 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface KBShopVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Shop/VC/KBShopVC.m b/keyBoard/Class/Shop/VC/KBShopVC.m new file mode 100644 index 0000000..cacd540 --- /dev/null +++ b/keyBoard/Class/Shop/VC/KBShopVC.m @@ -0,0 +1,31 @@ +// +// KBShopVC.m +// keyBoard +// +// Created by Mac on 2025/11/6. +// + +#import "KBShopVC.h" + +@interface KBShopVC () + +@end + +@implementation KBShopVC + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/keyBoard/KeyBoardPrefixHeader.pch b/keyBoard/KeyBoardPrefixHeader.pch index 6f7a6ad..a622d40 100644 --- a/keyBoard/KeyBoardPrefixHeader.pch +++ b/keyBoard/KeyBoardPrefixHeader.pch @@ -49,6 +49,9 @@ #define KB_NAVBAR_BASE_HEIGHT 44.0 #define KB_TABBAR_BASE_HEIGHT 49.0 +#define COLOR_WITH_RGB(R,G,B,A) [UIColor colorWithRed:R green:G blue:B alpha:A] + + // 当前 KeyWindow(iOS 13 场景化兼容) static inline UIWindow *KB_KeyWindow(void) { UIWindow *window = nil; From a72aae84ef6e8ac448b94bdaeaa7905719bb5300 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 19:29:52 +0800 Subject: [PATCH 13/47] =?UTF-8?q?=E5=A4=84=E7=90=86tabbar=20=E5=A4=84?= =?UTF-8?q?=E7=90=86HomeRankContentVC=E5=8E=BB=E9=99=A4=E5=BC=B9=E6=80=A7?= =?UTF-8?q?=E6=95=88=E6=9E=9C=20-=20=E9=80=82=E9=85=8DHWPanModal=E4=B8=8B?= =?UTF-8?q?=E6=8B=89=E6=95=88=E6=9E=9C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyBoard.xcodeproj/project.pbxproj | 6 +- keyBoard/Class/Base/VC/BaseTabBarController.m | 61 +++++++++++++++++-- keyBoard/Class/Home/VC/HomeRankContentVC.m | 1 + 3 files changed, 61 insertions(+), 7 deletions(-) diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 2fde4eb..9e0c76e 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -665,8 +665,10 @@ 04FC95BF2EB1E3B1007BD342 /* Class */ = { isa = PBXGroup; children = ( - 047C65492EBCBA880035E841 /* Community */, + 04FC95B62EB1E3B1007BD342 /* Home */, 047C654D2EBCBA880035E841 /* Shop */, + 047C65492EBCBA880035E841 /* Community */, + 04FC95BE2EB1E3B1007BD342 /* Me */, 047C652C2EBCAAAC0035E841 /* Resource */, 04FC95EE2EB3399D007BD342 /* Manager */, 04FC95ED2EB33611007BD342 /* Login */, @@ -675,8 +677,6 @@ 04FC95E12EB20AD1007BD342 /* Guard */, 04FC95C62EB1E4AB007BD342 /* Base */, 04FC95BA2EB1E3B1007BD342 /* Main */, - 04FC95B62EB1E3B1007BD342 /* Home */, - 04FC95BE2EB1E3B1007BD342 /* Me */, ); path = Class; sourceTree = ""; diff --git a/keyBoard/Class/Base/VC/BaseTabBarController.m b/keyBoard/Class/Base/VC/BaseTabBarController.m index 87ba3e7..b24d801 100644 --- a/keyBoard/Class/Base/VC/BaseTabBarController.m +++ b/keyBoard/Class/Base/VC/BaseTabBarController.m @@ -24,18 +24,43 @@ [super viewDidLoad]; [self setupTabbarAppearance]; - // Setup two tabs: Home & My, each embedded in BaseNavigationController + + // 组装 4 个 Tab:首页 / 商城 / 社区 / 我的 + // 图标位于 Assets.xcassets/Tabbar 下:tab_home/tab_home_selected 等 + + // 首页 HomeMainVC *home = [[HomeMainVC alloc] init]; home.title = @"首页"; BaseNavigationController *navHome = [[BaseNavigationController alloc] initWithRootViewController:home]; - navHome.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"首页" image:nil selectedImage:nil]; + navHome.tabBarItem = [self tabItemWithTitle:@"首页" + image:@"tab_home" + selectedImg:@"tab_home_selected"]; + // 商城 + KBShopVC *shop = [[KBShopVC alloc] init]; + shop.title = @"商城"; + BaseNavigationController *navShop = [[BaseNavigationController alloc] initWithRootViewController:shop]; + navShop.tabBarItem = [self tabItemWithTitle:@"商城" + image:@"tab_shop" + selectedImg:@"tab_shop_selected"]; + + // 社区 + KBCommunityVC *community = [[KBCommunityVC alloc] init]; + community.title = @"社区"; + BaseNavigationController *navCommunity = [[BaseNavigationController alloc] initWithRootViewController:community]; + navCommunity.tabBarItem = [self tabItemWithTitle:@"社区" + image:@"tab_shequ" + selectedImg:@"tab_shequ_selected"]; + + // 我的 MyVC *my = [[MyVC alloc] init]; my.title = @"我的"; BaseNavigationController *navMy = [[BaseNavigationController alloc] initWithRootViewController:my]; - navMy.tabBarItem = [[UITabBarItem alloc] initWithTitle:@"我的" image:nil selectedImage:nil]; + navMy.tabBarItem = [self tabItemWithTitle:@"我的" + image:@"tab_my" + selectedImg:@"tab_my_selected"]; - self.viewControllers = @[navHome, navMy]; + self.viewControllers = @[navHome, navShop, navCommunity, navMy]; // 测试储存Token /*[[KBAuthManager shared] saveAccessToken:@"TEST" refreshToken:nil expiryDate:[NSDate dateWithTimeIntervalSinceNow:3600] userIdentifier:nil]*/; @@ -48,11 +73,39 @@ UITabBarAppearance *a = [UITabBarAppearance new]; [a configureWithOpaqueBackground]; a.backgroundColor = [UIColor whiteColor]; + // 设置选中标题为黑色(iOS 15+ 需通过 appearance) + NSDictionary *selAttr = @{ NSForegroundColorAttributeName : [UIColor blackColor] }; + a.stackedLayoutAppearance.selected.titleTextAttributes = selAttr; + a.inlineLayoutAppearance.selected.titleTextAttributes = selAttr; + a.compactInlineLayoutAppearance.selected.titleTextAttributes = selAttr; self.tabBar.standardAppearance = a; self.tabBar.scrollEdgeAppearance = a; + } else if (@available(iOS 13.0, *)) { + UITabBarAppearance *a = [UITabBarAppearance new]; + [a configureWithOpaqueBackground]; + a.backgroundColor = [UIColor whiteColor]; + NSDictionary *selAttr = @{ NSForegroundColorAttributeName : [UIColor blackColor] }; + a.stackedLayoutAppearance.selected.titleTextAttributes = selAttr; + a.inlineLayoutAppearance.selected.titleTextAttributes = selAttr; + a.compactInlineLayoutAppearance.selected.titleTextAttributes = selAttr; + self.tabBar.standardAppearance = a; + self.tabBar.tintColor = [UIColor blackColor]; + } else { + // 老系统用 tintColor/appearance 做回退 + self.tabBar.tintColor = [UIColor blackColor]; + [[UITabBarItem appearance] setTitleTextAttributes:@{NSForegroundColorAttributeName:[UIColor blackColor]} + forState:UIControlStateSelected]; } } +// 统一构造 TabBarItem,原图渲染,避免被系统 Tint 着色 +- (UITabBarItem *)tabItemWithTitle:(NSString *)title image:(NSString *)imageName selectedImg:(NSString *)selectedName { + UIImage *img = [[UIImage imageNamed:imageName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + UIImage *sel = [[UIImage imageNamed:selectedName] imageWithRenderingMode:UIImageRenderingModeAlwaysOriginal]; + UITabBarItem *item = [[UITabBarItem alloc] initWithTitle:title image:img selectedImage:sel]; + return item; +} + /* #pragma mark - Navigation diff --git a/keyBoard/Class/Home/VC/HomeRankContentVC.m b/keyBoard/Class/Home/VC/HomeRankContentVC.m index 6fcf1d8..50094d8 100644 --- a/keyBoard/Class/Home/VC/HomeRankContentVC.m +++ b/keyBoard/Class/Home/VC/HomeRankContentVC.m @@ -76,6 +76,7 @@ _tableView = [[BaseTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; _tableView.dataSource = self; _tableView.delegate = self; + _tableView.bounces = false; _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // 设计为卡片式,去掉系统分割线 _tableView.showsVerticalScrollIndicator = NO; _tableView.contentInset = UIEdgeInsetsMake(8, 0, KB_SafeAreaBottom(), 0); From 0d13192723bd5cd9767e5d4f74b99e87bcf7e919 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 19:51:50 +0800 Subject: [PATCH 14/47] =?UTF-8?q?=E4=BC=98=E5=8C=96ui?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyBoard.xcodeproj/project.pbxproj | 6 + keyBoard/Class/Home/V/HomeRankCardCell.h | 27 +++ keyBoard/Class/Home/V/HomeRankCardCell.m | 202 +++++++++++++++++++++ keyBoard/Class/Home/V/KBPanModalView.m | 2 +- keyBoard/Class/Home/VC/HomeRankContentVC.h | 4 +- keyBoard/Class/Home/VC/HomeRankContentVC.m | 138 +++++++------- keyBoard/Class/Home/VC/HomeRankVC.h | 2 +- keyBoard/Class/Home/VC/HomeRankVC.m | 2 +- 8 files changed, 316 insertions(+), 67 deletions(-) create mode 100644 keyBoard/Class/Home/V/HomeRankCardCell.h create mode 100644 keyBoard/Class/Home/V/HomeRankCardCell.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 9e0c76e..4c3157e 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -48,6 +48,7 @@ 047C65452EBCAAAC0035E841 /* carrot_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651D2EBCAAAC0035E841 /* carrot_selected.png */; }; 047C65502EBCBA9E0035E841 /* KBShopVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C654F2EBCBA9E0035E841 /* KBShopVC.m */; }; 047C65532EBCBAC60035E841 /* KBCommunityVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C65522EBCBAC60035E841 /* KBCommunityVC.m */; }; + 047C65582EBCC06D0035E841 /* HomeRankCardCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C65572EBCC06D0035E841 /* HomeRankCardCell.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -182,6 +183,8 @@ 047C654F2EBCBA9E0035E841 /* KBShopVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBShopVC.m; sourceTree = ""; }; 047C65512EBCBAC60035E841 /* KBCommunityVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCommunityVC.h; sourceTree = ""; }; 047C65522EBCBAC60035E841 /* KBCommunityVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCommunityVC.m; sourceTree = ""; }; + 047C65562EBCC06D0035E841 /* HomeRankCardCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeRankCardCell.h; sourceTree = ""; }; + 047C65572EBCC06D0035E841 /* HomeRankCardCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeRankCardCell.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -564,6 +567,8 @@ A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */, 047C650B2EBC8A840035E841 /* KBPanModalView.h */, 047C650C2EBC8A840035E841 /* KBPanModalView.m */, + 047C65562EBCC06D0035E841 /* HomeRankCardCell.h */, + 047C65572EBCC06D0035E841 /* HomeRankCardCell.m */, ); path = V; sourceTree = ""; @@ -1126,6 +1131,7 @@ files = ( 04FC95E92EB23B67007BD342 /* KBNetworkManager.m in Sources */, 04FC95D22EB1E7AE007BD342 /* MyVC.m in Sources */, + 047C65582EBCC06D0035E841 /* HomeRankCardCell.m in Sources */, 0477BE002EBC6A330055D639 /* HomeRankVC.m in Sources */, 047C650D2EBC8A840035E841 /* KBPanModalView.m in Sources */, 043FBCD22EAF97630036AFE1 /* KBPermissionViewController.m in Sources */, diff --git a/keyBoard/Class/Home/V/HomeRankCardCell.h b/keyBoard/Class/Home/V/HomeRankCardCell.h new file mode 100644 index 0000000..547f084 --- /dev/null +++ b/keyBoard/Class/Home/V/HomeRankCardCell.h @@ -0,0 +1,27 @@ +// +// HomeRankCardCell.h +// keyBoard +// +// Created by Codex on 2025/11/06. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 首页排行榜卡片 Cell(两列) +@interface HomeRankCardCell : UICollectionViewCell + +/// 点击加号/勾选按钮回调 +@property (nonatomic, copy, nullable) void (^onTapAction)(void); + +/// 统一配置数据 +- (void)configureWithTitle:(NSString *)title + desc:(NSString *)desc + people:(NSString *)people + added:(BOOL)added; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Home/V/HomeRankCardCell.m b/keyBoard/Class/Home/V/HomeRankCardCell.m new file mode 100644 index 0000000..efe8a47 --- /dev/null +++ b/keyBoard/Class/Home/V/HomeRankCardCell.m @@ -0,0 +1,202 @@ +// +// HomeRankCardCell.m +// keyBoard +// +// Created by Codex on 2025/11/06. +// + +@import UIKit; +#import "HomeRankCardCell.h" + +@interface HomeRankCardCell () +@property (nonatomic, strong) UIView *shadowView; // 阴影容器(不裁剪) +@property (nonatomic, strong) UIView *cardView; // 白色圆角卡片 +@property (nonatomic, strong) UIView *badgeCircle; // 顶部圆形描边 +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UILabel *descLabel; +@property (nonatomic, strong) UILabel *peopleLabel; +@property (nonatomic, strong) UIButton *actionBtn; // 加号/勾选按钮 +@property (nonatomic, assign) BOOL added; +@end + +@implementation HomeRankCardCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.contentView.backgroundColor = UIColor.clearColor; + [self setupUI]; + [self setupConstraints]; + } + return self; +} + +- (void)setupUI { + // 使用懒加载属性,保证首次访问时创建 + [self.contentView addSubview:self.shadowView]; + [self.shadowView addSubview:self.cardView]; + [self.contentView addSubview:self.badgeCircle]; + [self.cardView addSubview:self.titleLabel]; + [self.cardView addSubview:self.descLabel]; + [self.cardView addSubview:self.peopleLabel]; + [self.cardView addSubview:self.actionBtn]; +} + +- (void)setupConstraints { + // Masonry 约束 + [self.shadowView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.bottom.equalTo(self.contentView); + make.top.equalTo(self.contentView.mas_top).offset(36); // 给圆环留空间 + }]; + + [self.cardView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.shadowView).insets(UIEdgeInsetsMake(0, 8, 0, 8)); + }]; + + [self.badgeCircle mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerX.equalTo(self.cardView); + make.centerY.equalTo(self.shadowView.mas_top); + make.width.height.mas_equalTo(68); + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.cardView.mas_top).offset(78); + make.left.equalTo(self.cardView.mas_left).offset(18); + make.right.equalTo(self.cardView.mas_right).offset(-18); + }]; + + [self.descLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.titleLabel.mas_bottom).offset(12); + make.left.equalTo(self.cardView.mas_left).offset(18); + make.right.equalTo(self.cardView.mas_right).offset(-18); + }]; + + [self.peopleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.descLabel.mas_bottom).offset(16); + make.left.equalTo(self.cardView.mas_left).offset(18); + make.right.equalTo(self.cardView.mas_right).offset(-18); + }]; + + [self.actionBtn mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.cardView.mas_left).offset(18); + make.right.equalTo(self.cardView.mas_right).offset(-18); + make.bottom.equalTo(self.cardView.mas_bottom).offset(-18); + make.height.mas_equalTo(56); + }]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + // 添加柔和阴影 + _shadowView.layer.shadowColor = [UIColor colorWithWhite:0 alpha:0.15].CGColor; + _shadowView.layer.shadowOpacity = 1.0; + _shadowView.layer.shadowRadius = 10.0; + _shadowView.layer.shadowOffset = CGSizeMake(0, 6); + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:_cardView.bounds cornerRadius:18.0]; + _shadowView.layer.shadowPath = path.CGPath; + + _badgeCircle.layer.cornerRadius = 34; +} + +- (void)prepareForReuse { + [super prepareForReuse]; + self.onTapAction = nil; +} + +- (void)tapAction { + if (self.onTapAction) self.onTapAction(); +} + +- (void)configureWithTitle:(NSString *)title desc:(NSString *)desc people:(NSString *)people added:(BOOL)added { + self.added = added; + self.titleLabel.text = title ?: @""; + self.descLabel.text = desc ?: @""; + self.peopleLabel.text = people ?: @""; + + if (added) { + // 已添加:灰底、对勾 + self.actionBtn.backgroundColor = [UIColor colorWithWhite:0.93 alpha:1.0]; + [self.actionBtn setTitle:@"✓" forState:UIControlStateNormal]; + [self.actionBtn setTitleColor:[UIColor colorWithWhite:0.55 alpha:1.0] forState:UIControlStateNormal]; + } else { + // 未添加:黑底、加号 + self.actionBtn.backgroundColor = [UIColor blackColor]; + [self.actionBtn setTitle:@"+" forState:UIControlStateNormal]; + [self.actionBtn setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + } +} + +#pragma mark - Lazy UI + +- (UIView *)shadowView { + if (!_shadowView) { + _shadowView = [UIView new]; + _shadowView.backgroundColor = UIColor.clearColor; + } + return _shadowView; +} + +- (UIView *)cardView { + if (!_cardView) { + _cardView = [UIView new]; + _cardView.backgroundColor = UIColor.whiteColor; + _cardView.layer.cornerRadius = 18.0; + _cardView.layer.masksToBounds = YES; + } + return _cardView; +} + +- (UIView *)badgeCircle { + if (!_badgeCircle) { + _badgeCircle = [UIView new]; + _badgeCircle.backgroundColor = UIColor.whiteColor; + _badgeCircle.layer.borderColor = [UIColor colorWithRed:0.78 green:0.90 blue:0.20 alpha:1.0].CGColor; + _badgeCircle.layer.borderWidth = 3.0; + } + return _badgeCircle; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [UILabel new]; + _titleLabel.textColor = [UIColor colorWithWhite:0 alpha:0.95]; + _titleLabel.font = [UIFont systemFontOfSize:26 weight:UIFontWeightSemibold]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)descLabel { + if (!_descLabel) { + _descLabel = [UILabel new]; + _descLabel.textColor = [UIColor colorWithWhite:0.45 alpha:1]; + _descLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightRegular]; + _descLabel.textAlignment = NSTextAlignmentCenter; + _descLabel.numberOfLines = 2; + } + return _descLabel; +} + +- (UILabel *)peopleLabel { + if (!_peopleLabel) { + _peopleLabel = [UILabel new]; + _peopleLabel.textColor = [UIColor colorWithRed:0.31 green:0.78 blue:0.63 alpha:1.0]; + _peopleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _peopleLabel.textAlignment = NSTextAlignmentCenter; + _peopleLabel.numberOfLines = 2; + } + return _peopleLabel; +} + +- (UIButton *)actionBtn { + if (!_actionBtn) { + _actionBtn = [UIButton buttonWithType:UIButtonTypeCustom]; + _actionBtn.layer.cornerRadius = 12.0; + _actionBtn.layer.masksToBounds = YES; + [_actionBtn setTitleColor:UIColor.whiteColor forState:UIControlStateNormal]; + _actionBtn.titleLabel.font = [UIFont systemFontOfSize:28 weight:UIFontWeightSemibold]; + [_actionBtn addTarget:self action:@selector(tapAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _actionBtn; +} + +@end diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m index de1d0e3..a4e46c7 100644 --- a/keyBoard/Class/Home/V/KBPanModalView.m +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -103,7 +103,7 @@ if (self.currentIndex == 0) { return self.hotVC.tableView; } - return self.rankVC.tableView; + return self.rankVC.collectionView; } // 可选:完全不允许拖拽关闭(避免被拉到底消失) diff --git a/keyBoard/Class/Home/VC/HomeRankContentVC.h b/keyBoard/Class/Home/VC/HomeRankContentVC.h index ae458c0..23553b5 100644 --- a/keyBoard/Class/Home/VC/HomeRankContentVC.h +++ b/keyBoard/Class/Home/VC/HomeRankContentVC.h @@ -10,8 +10,8 @@ NS_ASSUME_NONNULL_BEGIN -@interface HomeRankContentVC : UIViewController -@property (nonatomic, strong) BaseTableView *tableView; +@interface HomeRankContentVC : UIViewController +@property (nonatomic, strong) UICollectionView *collectionView; @end diff --git a/keyBoard/Class/Home/VC/HomeRankContentVC.m b/keyBoard/Class/Home/VC/HomeRankContentVC.m index 50094d8..37724ff 100644 --- a/keyBoard/Class/Home/VC/HomeRankContentVC.m +++ b/keyBoard/Class/Home/VC/HomeRankContentVC.m @@ -5,93 +5,107 @@ // Created by Mac on 2025/11/6. // +@import UIKit; #import "HomeRankContentVC.h" -#import "HomeHotCell.h" -@interface HomeRankContentVC () -@property (nonatomic, strong) NSArray *dataSource; // 简单模拟数据 +// 自定义卡片 Cell +#import "HomeRankCardCell.h" + +@interface HomeRankContentVC () +@property (nonatomic, strong) NSArray *dataSource; // 简单模拟数据 @end @implementation HomeRankContentVC - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view. - // 构建数据(演示) - self.dataSource = @[ - @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, - @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, - @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, - @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, - @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, - @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, - @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, - @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, - @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, - @{@"rank":@5, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@YES}, - @{@"rank":@6, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, - @{@"rank":@7, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO} - ]; - // 设置背景颜色:随机色 - self.view.backgroundColor = COLOR_WITH_RGB(arc4random()%255/255.0, arc4random()%255/255.0, arc4random()%255/255.0, 1); - [self.view addSubview:self.tableView]; - [self.tableView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.top.right.equalTo(self.view); - make.bottom.equalTo(self.view); + self.view.backgroundColor = COLOR_WITH_RGB(246/255.0, 253/255.0, 249/255.0, 1.0); // 淡绿色背景 + + // 数据 + self.dataSource = @[ + @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(NO)}, + @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(YES)}, + @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(NO)}, + @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(YES)}, + @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(NO)}, + @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(YES)}, + @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(NO)}, + @{@"title":@"High EQ", @"desc":@"Be Neither Too Close\nNor Too Distant...", @"people":@"Two Million People\nHave Used It", @"added":@(YES)} + ]; + + + [self.view addSubview:self.collectionView]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); }]; } -#pragma mark - UITableViewDataSource +- (UICollectionView *)collectionView{ + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [[UICollectionViewFlowLayout alloc] init]; + layout.sectionInset = UIEdgeInsetsMake(16, 16, 16, 16); + layout.minimumLineSpacing = 24; + layout.minimumInteritemSpacing = 16; -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.backgroundColor = [UIColor clearColor]; +// _collectionView.alwaysBounceVertical = YES; + _collectionView.bounces = false; + _collectionView.dataSource = self; + _collectionView.delegate = self; + [_collectionView registerClass:[HomeRankCardCell class] forCellWithReuseIdentifier:@"HomeRankCardCell"]; +// self.collectionView.translatesAutoresizingMaskIntoConstraints = NO; + } + return _collectionView; +} + + +#pragma mark - UICollectionViewDataSource + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { return self.dataSource.count; } -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - HomeHotCell *cell = [tableView dequeueReusableCellWithIdentifier:HomeHotCell.reuseId forIndexPath:indexPath]; - NSDictionary *item = self.dataSource[indexPath.row]; - // 配置 cell - [cell configWithRank:[item[@"rank"] integerValue] - title:item[@"title"] - subtitle:item[@"sub"] - joined:[item[@"joined"] boolValue]]; +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + HomeRankCardCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"HomeRankCardCell" forIndexPath:indexPath]; + NSDictionary *d = self.dataSource[indexPath.item]; + BOOL added = [d[@"added"] boolValue]; + [cell configureWithTitle:d[@"title"] + desc:d[@"desc"] + people:d[@"people"] + added:added]; + __weak typeof(self) weakSelf = self; + cell.onTapAction = ^{ + // 切换添加/已添加状态并刷新该项 + NSMutableArray *m = [weakSelf.dataSource mutableCopy]; + NSMutableDictionary *md = [m[indexPath.item] mutableCopy]; + BOOL cur = [md[@"added"] boolValue]; + md[@"added"] = @(!cur); + m[indexPath.item] = md; + weakSelf.dataSource = [m copy]; + [weakSelf.collectionView reloadItemsAtIndexPaths:@[indexPath]]; + }; return cell; } -#pragma mark - UITableViewDelegate +#pragma mark - UICollectionViewDelegateFlowLayout -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 84.0; -} - -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { - [tableView deselectRowAtIndexPath:indexPath animated:YES]; - -} - -- (BaseTableView *)tableView { - if (!_tableView) { - // 使用 BaseTableView,统一默认配置 - _tableView = [[BaseTableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - _tableView.dataSource = self; - _tableView.delegate = self; - _tableView.bounces = false; - _tableView.separatorStyle = UITableViewCellSeparatorStyleNone; // 设计为卡片式,去掉系统分割线 - _tableView.showsVerticalScrollIndicator = NO; - _tableView.contentInset = UIEdgeInsetsMake(8, 0, KB_SafeAreaBottom(), 0); - [_tableView registerClass:HomeHotCell.class forCellReuseIdentifier:HomeHotCell.reuseId]; - } - return _tableView; +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + CGFloat totalHInset = 16 + 16; // section i/l/r + CGFloat spacing = 16; // interitem spacing + CGFloat w = collectionView.bounds.size.width - totalHInset; // not including section insets yet + // Two columns → each width = (width - spacing - lr insets)/2 + CGFloat cellWidth = (w - spacing) / 2.0; + // 固定高度,接近示意图比例 + CGFloat cellHeight = 340.0; + return CGSizeMake(floor(cellWidth), cellHeight); } #pragma mark - JXCategoryListContentViewDelegate - -/** - 实现 协议方法,返回该视图控制器所拥有的「视图」 - */ - (UIView *)listView { return self.view; } + @end diff --git a/keyBoard/Class/Home/VC/HomeRankVC.h b/keyBoard/Class/Home/VC/HomeRankVC.h index 908f65f..2e81a51 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.h +++ b/keyBoard/Class/Home/VC/HomeRankVC.h @@ -12,7 +12,7 @@ NS_ASSUME_NONNULL_BEGIN @interface HomeRankVC : UIViewController // 列表 -@property (nonatomic, strong) BaseTableView *tableView; +@property (nonatomic, strong) UICollectionView *collectionView; @end NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/VC/HomeRankVC.m b/keyBoard/Class/Home/VC/HomeRankVC.m index a59417d..d266ef5 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.m +++ b/keyBoard/Class/Home/VC/HomeRankVC.m @@ -131,7 +131,7 @@ // 返回各个列表菜单下的实例,该实例需要遵守并实现 协议 - (id)listContainerView:(JXCategoryListContainerView *)listContainerView initListForIndex:(NSInteger)index { HomeRankContentVC *list = [[HomeRankContentVC alloc] init]; - self.tableView = list.tableView; + self.collectionView = list.collectionView; return list; } From 0fa3d10284e9d4e0cbc578bbf85cafe801eedc50 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Thu, 6 Nov 2025 21:38:58 +0800 Subject: [PATCH 15/47] 9 --- keyBoard.xcodeproj/project.pbxproj | 12 +++ keyBoard/Assets.xcassets/Home/Contents.json | 6 ++ .../Home/home_bg_image.imageset/Contents.json | 22 +++++ .../home_bg_image 1.png | Bin 0 -> 406802 bytes .../home_bg_image 2.png | Bin 0 -> 406802 bytes keyBoard/Class/Categories/UIImage+KBColor.h | 42 +++++++++ keyBoard/Class/Categories/UIImage+KBColor.m | 86 ++++++++++++++++++ keyBoard/Class/Categories/UIView+KBShadow.h | 34 +++++++ keyBoard/Class/Categories/UIView+KBShadow.m | 65 +++++++++++++ keyBoard/Class/Home/V/HomeHeadView.m | 2 +- keyBoard/Class/Home/V/HomeRankCardCell.m | 13 ++- keyBoard/Class/Home/V/KBPanModalView.m | 9 +- keyBoard/Class/Home/VC/HomeMainVC.m | 23 +++-- keyBoard/Class/Home/VC/HomeSheetVC.m | 2 +- keyBoard/KeyBoardPrefixHeader.pch | 4 + 15 files changed, 300 insertions(+), 20 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Home/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_bg_image.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_bg_image.imageset/home_bg_image 1.png create mode 100644 keyBoard/Assets.xcassets/Home/home_bg_image.imageset/home_bg_image 2.png create mode 100644 keyBoard/Class/Categories/UIImage+KBColor.h create mode 100644 keyBoard/Class/Categories/UIImage+KBColor.m create mode 100644 keyBoard/Class/Categories/UIView+KBShadow.h create mode 100644 keyBoard/Class/Categories/UIView+KBShadow.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 4c3157e..fbd5214 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -21,6 +21,8 @@ 0477BE042EBC83130055D639 /* HomeMainVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BE032EBC83130055D639 /* HomeMainVC.m */; }; 047C650D2EBC8A840035E841 /* KBPanModalView.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C650C2EBC8A840035E841 /* KBPanModalView.m */; }; 047C65102EBCA8DD0035E841 /* HomeRankContentVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C650F2EBCA8DD0035E841 /* HomeRankContentVC.m */; }; + 047C655C2EBCD0F80035E841 /* UIView+KBShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C655B2EBCD08E0035E841 /* UIView+KBShadow.m */; }; + 047C655E2EBCD5B20035E841 /* UIImage+KBColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C655D2EBCD5B20035E841 /* UIImage+KBColor.m */; }; 047C652D2EBCAAAC0035E841 /* crab_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651F2EBCAAAC0035E841 /* crab_selected.png */; }; 047C652E2EBCAAAC0035E841 /* crab.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651E2EBCAAAC0035E841 /* crab.png */; }; 047C652F2EBCAAAC0035E841 /* arrow_down.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651A2EBCAAAC0035E841 /* arrow_down.png */; }; @@ -185,6 +187,10 @@ 047C65522EBCBAC60035E841 /* KBCommunityVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCommunityVC.m; sourceTree = ""; }; 047C65562EBCC06D0035E841 /* HomeRankCardCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeRankCardCell.h; sourceTree = ""; }; 047C65572EBCC06D0035E841 /* HomeRankCardCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeRankCardCell.m; sourceTree = ""; }; + 047C655A2EBCD08E0035E841 /* UIView+KBShadow.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIView+KBShadow.h"; sourceTree = ""; }; + 047C655B2EBCD08E0035E841 /* UIView+KBShadow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIView+KBShadow.m"; sourceTree = ""; }; + 047C655C2EBCD5B20035E841 /* UIImage+KBColor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIImage+KBColor.h"; sourceTree = ""; }; + 047C655D2EBCD5B20035E841 /* UIImage+KBColor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIImage+KBColor.m"; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -777,6 +783,10 @@ 04FC97082EB31B14007BD342 /* KBHUD.m */, 04A9FE142EB873C80020DB6D /* UIViewController+Extension.h */, 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */, + 047C655A2EBCD08E0035E841 /* UIView+KBShadow.h */, + 047C655B2EBCD08E0035E841 /* UIView+KBShadow.m */, + 047C655C2EBCD5B20035E841 /* UIImage+KBColor.h */, + 047C655D2EBCD5B20035E841 /* UIImage+KBColor.m */, ); path = Categories; sourceTree = ""; @@ -1146,6 +1156,8 @@ 0477BDF72EBC63A80055D639 /* KBTestVC.m in Sources */, 04FC95C92EB1E4C9007BD342 /* BaseNavigationController.m in Sources */, 047C65102EBCA8DD0035E841 /* HomeRankContentVC.m in Sources */, + 047C655C2EBCD0F80035E841 /* UIView+KBShadow.m in Sources */, + 047C655E2EBCD5B20035E841 /* UIImage+KBColor.m in Sources */, 04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */, 04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */, 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */, diff --git a/keyBoard/Assets.xcassets/Home/Contents.json b/keyBoard/Assets.xcassets/Home/Contents.json new file mode 100644 index 0000000..73c0059 --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/Contents.json @@ -0,0 +1,6 @@ +{ + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_bg_image.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_bg_image.imageset/Contents.json new file mode 100644 index 0000000..d357bcc --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_bg_image.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_bg_image 1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_bg_image 2.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_bg_image.imageset/home_bg_image 1.png b/keyBoard/Assets.xcassets/Home/home_bg_image.imageset/home_bg_image 1.png new file mode 100644 index 0000000000000000000000000000000000000000..52a267fa7dfae81103a712c441cfa44045f0a56a GIT binary patch literal 406802 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ⅆjVlKY&1xaC3jLh`Go(N8(ZU$Yz!yC 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

    4H81RXU2HhrE)GDU^ZO z-_SL{w|A*?@sEUnMkeCYT%z6N3KEMDaOg=6*$!YDxX2ReOTmJ_A>pjyN6XC+qcaXm z4LZhHd?O>5GqFmR75wP+!t^F_3~;9>e>ajbZ^7kenJN!g^;+?l5XEW%pqQ4+0E*=N z&U;Tq{WiEn$??(fN*5A*jCpz7XDc9$o9-$6t8VtA5E8k~{DIQfca9LGW60PCKWYmm`PVSK}h(H4^N+)JqrA7gS_H{NPxW^=O_y_)b(7g1C1F z!#abMqmC`BeQ}Q=wb6uTn5ClO4rS-DFO3#^zJ%wJA4>}52tNSRbN7Y|IlLos0-~8( zbNpC8X;}rBJ=lgWv?={XPulm?E_6J-|1A_5^dt**OFXiZ2Ta+)NFB`?oFC|!fhBD@ zrWoR+pb>EFa_GY|TS`3=tWvrvS7Y{~Cz9*@s0(MuZrT!zDn??f-|1fV{LXRnO z2ccY}vKajXt09@ug=9&1)ui-&KB73Fq2J^5QKYEPe`H`;fzaVN;31 zQdGfu_nA|se9~>}QSIiik4|nGFjo2TLe*HIE4LGDtT{riJft%IhL2_9k!7zIP+@H%&Yqp%43ilu7U}w$N#BF`Sx< z<>fi@ym(^BLS`xga`!0ALRS6GGX+-Q40`i8iE2|Mb_JN6B+zu6;Mo?nH9DzRz$J)G zi#W5s&bXQH-nJR#{3O-M!1j@^2m+K9cZ&|aopK-tKJrQ`F{@$*n;h1FMa zwN?lRZ8U|=DqSMaeMOvvFNHj^$&FYd_abb&2pc zJ-@@sTWZr=YmO7P{7T>?X_;4I6ul$oPME+I{mJ18VAk@Ryjf=apquk7>p)lj>g0Zp zMa)&ioa;p!*)ETx7&J_8|EXYSh4=M<6}sy{KGurK$9j44F(aOQOs76K3FKq?I&d|s z$}hCZP+vObKZ#rr49oe|nYP(61VRo61fN&Qep{yuFNW|U@?Jl8f_J(1M))mFZ}9AI zb~pegbgY!*-vr^bu_Y8md%1kzVUoyF^^vN_v*KRMc_7sFF0O;_%Vt#&hIN{@w|8PvB_nUzd5J1P<2ENSQss^DR>B#Z3gINBxSbvE+t zP*L-^c=Vnm!|+fgMvqL_^6we4QeRxrnm~_=t{r+=)hFGIfcyuM^2^= z`7pl%;cPu$S`)rKUmLW`{%2r-H1arEsh6?5;k{FHi)6oqgl4h&!o8tE%;$Zm&x2j05kHA+wDxv~oY8~|%j-}gr8M1MfL_|H_< zy|IR`1z+np$pm@dw($A+ySP!_>KgJvsVKYO3*E$ieXk__>?|!-95mqb)CxgnDpWKA z2hS)Iqzz-i*&f=J9UHb2{7@23w?Ai;A~ylFnAAH1!n?Wkccng5maIP;&=BbvM55s> z)lKIjXoc@+w2bFYyx%8e~p!p7k zDs?F;&iLFEi!vhEb4yXoR?&f;;idNV*pp2AYYhOzv zYi~zy?WY*7 z7H20kTmd?St-W288&z^$a8Ehs+8Ol6(y2-$)qv!7!dJEw`nJ9y1}DONT7x zt-TjZtwm=iDjOW)57siDGe?N89?Qqf)3k)G9Ct8J3^vnI+b2|91^3XuYcd!hiQsYm z)<1h|!_ZjOlqR$@K6q%C5)Wy`&E7W;=LQ=ckxz2!mU8UHfQTS%5EBO_w9$s%h zj4pvs4i%6b1faSZ3H`mJPnq#dw|qKenr&5K+ck^~>?unoQzc*mx$MP!%YD(rCJS%9 znQZo@zozrB(@sgnVO?Y}6{jo_N$=OXc}Zzq;d|ZKU5+r()LW)aez!o-3Sf1dLV#@?YU)X`VV#(b?yFIm?B%;CEgg;kx9|)13KI#jU$o0EreDzH) zlxUBXk(gwr%9(woOTl9GGOmjzTf=9ikZV6{8jAn3maU5hNhKBg-y8Lp%eN)7r}91n8$ zuTer;CkMw*rHOiuA|tuu=lfa>SU#=6uMFy+KWDU?&(&tBFzlnao`cDc^wY~{G|^&1 zTbExeOOrayJ{Lf^zcc~PLEnJLWl_OhS{vGw(AM=#5YMBl9fh(xC`xy=f zzh%y?8F!Me&?UwE^j~06uzW`uMd)gyTq2SX01d`oiW|R#xxDp^kHOzRVPPA2B6sM{ z2?uW-(lg6E{El2b*+MQ6eM_v7Z4$mE5f@Be_hGilG;fn>7pJ=qx~6qn2?SdEQ|@Gl zDEaM(!($RduN!-)>ZJs+IXs8cdT=UqTaj@9tXhUn&J}G^SR-5+uxGDMy{GoHYD@-Y)h-n+a4;X{FjLo$)CjlX4z~qf z$5(KgQbOczN#WDq2&YJcxFe~+MKT?yEjQb@-x8>=QE)oR22|1Qn3IBP1jn%I$$Kwg z2AOa`lWFf^ggruR<+NXdHp*U3JAT%&MLjQ54$j@CPU016@pRHxH>h- zmraW{(G(p=Af=A5U)stOvSCZw>~8HgnU`cTn%W1RMz`A4<<#dSc~9~w<9({`UjTr@ zHgen90r8)Q8n?jbIBJR^MbP5{-Os|J%foBD$#8<0mCw-Gr|nD{>><%zsdQ8y_`14Z zawT2h@VTkKM-Okfg^*6si`0Rc!xGwJJ1iEEXfyWeOj0$RU_tMa$%iBLV!q+zG#lS1 z9I65Dg)faXzg-u$*&(vn?1?CURgHMmH9YP|%W`hySo4{Gx1jr>s_rGQ1MkeWzBZ z6p{=6=>3$F1f~Wl277cuy^J$#n|;sf&FQT}S8tDRI*tu-w2^{b3Ry&mm+2;HiOSkD zLc$DU$C;rFMd7`4*Dfx$e+lT8?yT5Kjs!#XcxA$&BB;?k>}cpZx1ypo+G-?Y0*$Lz z%2i2Zbl3W&iXA6II*B}rz8u~cYOcpuBd!aa0ob4og?6AW)7 zIZR}DYkCtRr#7g3n#e8whTS6}56?>{=M(gZCr?MfJxH6KLX)eXc50)wvF;uF{5I9^ zNY@=*tuFeA7db$r{dqfSo=zChY04c59KklQWkLtlRHW)HR7q2a;Q)Ps@B?({v=4)L z0_pZDWU8#?r_7R9v4V}XsLf)LFC^XlPeH)&%3JWQz?~C@&lO993d}3yeX!av+((gz zASj~jRX7beqgJAfJ)e`YYYBM3oL`4;Xv|vhfKj3uip1KHLsZIkUTfQ!W;Y`tbk(3A z*TvWx&${yPImB5X_Q?3q4Lgk=GqsPtiCA57`(?o~gVcATGXAYjLBqj)TzB27`}f`k zS*J**!uDl+m_{_W>y(okt-OsE5N)d|v1%%}hY&M+!aqNzE=$)!^V99qw1Nguke4k8 zHb>LJ-2`F)JuBg{{E}3<@?bL80NwGGEzlhwMr_SgR35v-T+rlPgv_?VGuoLG*^n`1 zyO=1KXQTTCe9hItNfcCv$P{EvWQm~i)2 zf4OH_%7vTeNHPA>tK1>VGE||EI$r~GPZxv_!d!c}iTq!~B z&{g-sYL&P*P1a*3S&C{I5im97rdID;Y~jW|H1Y7M;CZe~KW>MM=zV(1w@a@ptxs_4 z*@qZK5F*^idx8H+aSE_XBP4r=m^ztWhmRA@bn98mX`uw+8bai@Kg`SaPW0GR9;}Oa ztM6YCw8y4w;7$o~=3B$2xVze(rJvABx|{z=4;AzkAjD`~U2Me)(^(zt$H35Uv!hV6 zIrtf85#^`pXrNd#AzHc%3?@l2SBuSDxKrq4JjA>gg(P5?LVmBH-NoLu{I)xKQ_T2g zm(7v5`=DxqhA8A_r$ZKgp)0TJ_a_H7L|}qB(v)G>a%n_FQ$Z;r!c&SU`#q&k$5H&z zL+z?bD&5w1tD9bV;R#R=OX8eGL)~Wvla^1<(yhoy;zD5UuqKk2?HE=r% zL5ew^60GwWFGG%Lcj3VZGGKHr`=v-aHN|=DoDlBR!_LU6D(6?^N=P&+N(vL#AuxbZ zTE`0szRn8??%Rw)f(Nk^842rwa$$wTdg`Moo%E#EPud?)A0SEqdp-tF=^3q(%d2~xlmiAo#be`0D6h$Q5ab1@SW{+-wiY*W}rxAn!J%C%#FJcr_U z%r4Me;9(-Jt)QjmY7rboPeM(rXs<}l=;_*w6pAQQd(Av5$?27#aeikGJzn2y@?OVN z>hEz6?#~{anwlu5H{~{3Qm1)ktw1GW(LOM>ceF^}Y?HgbI={1aR8UK2bM=I?_7JBi zEP9Bi{|dwlvGGksVc9DwNkeW-BQXBs-70Ag~d zIC|Zr2B=Ley1(ER9u5cOhdA0UWXDA6%3dJ(3GxjlldEayrS>5;rp%|%%FZ2Mb_c7N zmO7V^dMqko0^+;#i}}h@o(PeA=GUOKB_ft5)DN*2!EY~b;A!1hS2KhDn)cL!2VARN zVGtz6^oM*lIQf}V)oKV|-tutxRVV3O!*rk9Q)Pp%R_%*pOD}0(+r1w%XJk5u4YaneTI2=2?>E^RklLtAmP21?b9Tw0ULpRFMb>J%PHVJfgwwgoObRdHrDTwCO1qP z-6l7L)TJdq_BVH>qK@Yddvl|)Y1o=+!G~9;rN;K|&+1g|FawtCXQ;5gzgl}SPo3~i z_(1~==d7oHHF}%Du=3#zZW$#{UeMHF1HK6DDTw)Ut4?=1hbDla1)(d)dL6O)&+Qw8 z8z4XH+xQW>1(ewrqR%R*>a1j9#wOpCb&GJ z#NJ*w^?WoF%S4oxU%0Ck6s-32+sNZ6sV{8VvCUBZ6S2jWAxPrQPw zp`oM6#`i&dxzLv=!s`YUbkL5220=s-^b9Hz3fJL!rIIe}(q?#ot|8 z(YJ4cGi%2}fb$v!?d;CM+1I%pv+HgO!QVrzX63;mX*l+@g_nT@0j^vAHwlDB<*Lz{ zy?gE|R-_rlz+e(^5yTcYmNHiTp0sCgrNQTcT`%9PH>gXS;k+Ol^xFW?<{5b*;7Vp8 z1nZg$Ut+HgA`itStGAFkqnKB|j+w(=Uh6~RJ@%G=g2$el7BCThUv0cb@v_px7tuAy z;jWr<$zR3>(Wsg73~#Nrsklzi{LFMQsJ5UAfS_@B~p zUg4$N3M;BUYi2GDnmWDWKQp*P6{6)|k0i&ODJ8PL3}HRse-xIvF6rSE!OcfU=ciA9 zb1R|I`3M2z@z?$sD42pC%VAl4@?qGws6yPR*1!0S_6E(AwE;5_tdzt0(xcuN`^gF_ zAD(a_nd`I)x!Sy;LL{!nykI2D&Z84rV;Humq^nqjojkkI+y#96N3dGEvcy?9^k$=C z?bPSxa4M1+(_@vi-Od)?6aUh5p)bUZ)Y0ebDeeWs4dHL00l65k`xny@JMKX8F>@A) zV{x-k^qB2|s0z3%V7c8@xv8#?Az$~R<6uyFGRoJzy`EqkmOj9{GL%`aYJ!ig9#uPV z=3L9TW!=*{P2tI&T<*M{k{W`w#Fm|JD&3+YgEKHT`Y3YrTckekb$3F3JhX}=JVM@y zM)tGzX;BYD#%t`g=KFbk_uZeP^Nshc>t{hVqZQ9SF_G0BIf0dVZ9g?Wh9y1;GvzCRAjY_U#v=9fE z0NoW%=V#l%L`uC$g7~vpyHBgG;dV)^(|c07m#D(umh9gXqn5;|v*x%k?=AUMME}Rx zRslaZSQbDUSyn|$@<;8allgDVwoMV=z}X3bxw(%-UpgCa5+hT@${DZrZ~28?HdCvL+Pp%!p&-4|5HP9Gk%Ut~dT}Tc`PFW6AFf_F7hYMzm~w zObP&-v8O;q1w7PE2b5}h<3yn%L{mi*HP$ihiPrS-66kp|-2N6P9< zG)eKRfeQ>eab?eP8q-A6xW#o5yQq)#6>F|@#!r2MQIs^Kc{eW`<+Ma)3SQ#39Efs9 z%Y7?SafuwK`y&-s=x3%~@#=Xh+Hd&WN@{)HqAs73Q1974am5mO!GGY>(Wi+br@`p* zZTTJec_hJow-C0B45N^S2uZjv@fz?X8?oGWfXnSS(nFBpd9wd3&JV4ZS+ zEVvWv5$k#3RjDo!1-L;bqg+XSICfOP7Bhf;FS8sDub^b&ZCV&tN&2NQMHBf%nz6cD z(%!mU>i~RN`=Bh`!iJWR3y)C4^Nbv9^h~!cXaV(1znDn(l3FnoW&uP1sR+*s{eC3* zq|`T)mXU$t2Cx)zVePapuY(%QOEY*a^mDdsnRkZelU(&7^9e;#4yu+x@~9+1W3w<4 ztlCrCQDW`j#W;`7H=VE4RODj%_GcANx@&JxU9D-mJlNm(0%{kby{@#!F#?L#(Q_>m zJ|lx`B3j0N;jll89Bp5jDE)0E_+nwdo6Qq{Mok%m+%*sv66Pb|*9@GTx!dqd4es)( z#RRlN(775J%Wp_#%*w1QLsuV?zlo|gW?F~9|Mc}ye27XG*P<*8Zt+H6Ai=L{!4 z{C@R*^UqbDqeOO*lW@|WES$T){$CW^@)?QI4PkKByF{PVLa}FX>lvue`l4Rj1tVy1 zP9?`>7F%^{dh{zz=T4zR>hv7e-h<6KOayJt5BrNMUt8xplP>&u{q)>C6p#$8<~f{I z)3+8@kBa7s6^DzOCPW_xP6DYgQyZ4G9$E~3u!N(-j^HbJ--!|5LTjx=r_tEI9_6E9 z6=N!C#xfeb4P3ScZ0FSTto_vs0k-0raIJ>JANK7mTZI7=ohioO%BeVb1kV;_zOeJ8 zmdKS&E)|twK{K@i!e(;2KH3gUZ=66+?bsRi*)!_?lDcE~Kew_)P7YeGVsa*Im-KJ( z)y6-{oG~lE?cx7W45q`^5{2cK1;iB+=)6PAtk*FLDmM5>=gCzslC}qQ0O-GE!w^N8 z&PFe?&-ZU*UM&i^CO0-t149mQO_vK|$S0Yj`T_m3uWdjOek;+APz+20?-&(Zmbi!^ z*cNTtqykxsqENDhqpKQUk!#=#VSLlab8! zNUOD;`E{06PhNpF_f%C7&@vt6ZAVY?U7MJkc``@nP0NtCQW**{IdcrkpAP@K>uUJ5CZ(BxX{DxTA`+WNly*|A*-V}t8Q(JZ~t zim2e=TCXY88PJ0_gMN0WTj?Qu1@B%7OA6zXW^`;9FqW5Ruy;)iMV?#NRpU`M_z5U` zENJR*!1No%4b$r2z?8n{9;XX$SUHzT$)7#ZoCyS)f-caTOZ4@msxW`zig(Ho?Ez^( z)7hojqj#nzp3`n(2L~*mpU)I%tXRhDwgGK0X?bPs%$@?O{n#t#db@g&Zf<{#B8`YO z_O5S_lk(dLm<8N^7DQTIAkspI2`17?bNUYWFh0JfE}kSoO0X}_B;cRa&MjVlfWTxE z8)-!^`{)OSFPWb|$ANcv+gLu@kAeeh5attCAE39l*P1VO?b?(5TF&tzea(^9S!RZl zcnyd?23IM()F?QWF!Ik;6iTaIcCq$`OUA#ugR>rTiqP@I8W% z_Qmwon_icIlV|jFf!d~ zDLwMgLJmAk(LV?2pZrdyz_Z*YZ->5Nw%jl)JPlf7N$=!5;I8QD(lvg||Gb6ql zzh#2@<>=K6O_lW&x;xW&%5^XAlf1?gW_|mxeBoeYV;YKpfHGyxG1bXS#uL*c76#_5 z_K}f!Q}hZmGTNjfBy0hfoccp*fXtsGYvO<1iLwhrhOhpXCp74(?T#3TNPz?a;#x?_ z{-NnM))?oxu~3U+@e2=btoeu(m_MkROe~=vfpTRJP)6-A$Vvz%BdGhLq6{Dh zzsp;L4Fq$H*GA9*M?Ao3|7)6nK?i~8pwnJ}4yx7T{I*8hrsKfn)+!JP|6|GY@7!0H zOI7J!SRjqQ>Bp+S56V|wLtlPni#+ZV!2@exXilLM+C|nlU+y2(aGu~ z4(c=mVY_V=K4?J&e`oD{ahD+kyQQj8%UMq3G3>*r@+LkC&R1!3hQO=2&0uws9(Qp} z6`T|LI^i8=%?I6+S*E?fyhmwH(jp7-o@D%}PyY0U^~YMTCl4SemQ%-POwI`irENOX zi^sk}`{~dky!iS$Lor^0jxbK8F(F!T=HtShPwo5<$ds{`XK_Tj+vHtATdnD;@rg#N z-yAkD)-Ld}k4L%m2s}fc3TXO*hwXlkxAE^Fa)ihOjPc1yQZzQ9U*c?WGJOZmHLa3& z`d&$I#wkwRxd|nU4?c@5z^j-?qE4gHM7^ddVNcYQpPg%%F6vu;fF|VJEnIrB+iE=HA=EG@SwDAx}Pc%s=r_KRbc?EkkOQ1QD| z*fdd$YTcVuzuCHDySP!0lSk$_^Xo_FOV9zSy%t09s$pDZN(5#2%=!!SeU=!twA*1hd+4%fP*tMdQd2Nv z;jRbp@0@n(8}~U0n|rIq-Avxu981|neWm=8A)0OX9XY$HP zl|(=hCA&8Nf@+whjv|~xRLLn)h}1 zpS@)ca~S)Mh(ZP)Dt-z*(R+32hXN{mhdh&c?NyWBTS8^>=!q(i*+BE4B>5s}tyy-m{>Ju<5teX`Qv%^{6=0 zm@KmEJIYzTGxZujwqO=WPI!LXJx9RkEA6v8tYYmKnmB*gUNKcgWy|Nr`X%c(K!Tm0 zF3XJ5?wQ9uPH*UsjYLc4jpN3B6P_LZ!e3y-ZrDuU;S5CWCW?oa30u#?w;C&veeB3e z0p8^R{nXqEo2q-elUMCbfZIB715r(}8olyNZ2OsI8oy4;CozT5Mtvcfj0)S(s-w`` zhB`g>K8u)#ipE__N<9;>Se0zraU5Urpu@APEbMgTb{d}-8{`fWTb zk=_b0ZOY78`My za}{kwZ~;c+w$~^53=sd)lNt1Egdm$Q<!4byZk%bwKEJ89hg_BP?cK%wi_USa~g2%_P|){k?*Bgv5Bh(u5PDVEiwX0YB|uK zgo_D0IVBm({QlOb>v>E~ZI7w$pD%$L9h4Ry_ZN#N4fc`d8SobmXM#uGIa#MXQ5jr` zrz!Dck*Ak)+-zqxGFFM!CPXOJ6P}2Mm*~2TgUcVD*ugj z%{xTke*9UB39aOq>Kt2Ot{~1g@FUEWI@>eQtUw*pHC_x_b|V5Jt2SD?@|~sOX|{E| zCT~a*oS{SY!q&3eMOAG@$E*v7){ov;0!r@PUrh?mXq&66P&1&6+tJ{~R*m_JVYA@3 zD#xvP&SN$o;<3=&SgfNet{c6;6Tv%gpE^84Ju`-(`tB%-O?~_au=b=>iWhU)fW=&v zF&t;HCI-49@Ze1dTtPRe!cb_HsI8vj4i@XhvnqC>9H;eKabq(L#-wawe@K+U*74s< zwFt{o-194g1&=)cmO>b6#4ACK8Z^2=N3?b~XWCMA2ksn18;u@7+b{#@#~pg5A-Xo; zz{F*&^$7?OiV5Q}0pooiWd^3h#6BXFYGrGWn)wrW*U3chRy3p;wX}Fmr5D2CWFT@t zulMfW;t0dZuyd!!_VPTO)C#~~BppTXftwv>?f(Ut#GAV{Pgug14tFne^-=pu2u6#U z3Bl;!2b0PRK04ec@|6lmZDEy8x{7ad^s!YQorRJqOmdf`uSVjT?FoTLVup_^* zzn?my%^7Z6uvqC?H?pfHJS(xP*pd9N?HPsk56A}2-w`;Bv0WU}iMua4?Y)h$aXpRR z$z^Mi=H_TLYy+}5S#)AvRQ|!1{e$Q70%SLnI}F0m*7Jq z;~H7k^K@Dl7rsl8SPhkJ`F-3%<{C5q71wknH>hfPRFg$j#W zc1oIwL%sy4tl6krm5TIn-KvbDQ3Pu%u4?6WGCW0|lR63w2sunO1OwcEc*!`sV2knC zc=l0BJ-42@QcQ+}QzKBBs!%g{)3;evR&hEv2`a=@Rl@m%TI5njBrlE!CK&;k)CKRi zeo3iv>Fytl=*jtSTJ#L~LR%q!6&T8~|G)t7FHq^vykgaQVNKP0YE~$2DWFG0#->*K zFXfZ3p1*$Xxi+An8+eje8HoN$YWhLqb=PC!y7_fVTuusHb*cyUzyuZC9f^_8MS0ye zhbZNfNu+=)y@DiK4d>fD=F>~<&`cCtaqRQBUcMOi6h;t9rr<8~GH~D~gSooDTq2z8h}z_v zuPh94T=b$IT!T|B*>j0RH78uW3QR3OX;TAeYbf}$&wJ?KT5{#{c88ot< zbwMczEtzTXPTlXw4Ekw0+;Kf1|Dy*JJ3V4%vWjz(&WwsiL~pNWDw@)AEg?<E0_@7wc~+WFX@B-hc!hq*8rUa9`OtnZa5w1 zBr?>7t8ao}%5_mNU=Q2~QsR60hN#=i-sK7wG%*`9XxNgpAR>yRi0 z`VV?W?D6N^ZC_B38<3NM{zWB-QlxOu^Q-(zbtIWq#9_|P&U1N(RcbXVyzLqa5!{H| z*uGpbD%kwf?GcO|k@{w&S0Qf98#XX|E{djEjvJisN?Tvp54<8o9S4_MM6t6gdDR@O zy=REkaW|F7b&E*--#9^iAakp%Ay-2MiY2d6^5DibKUPWpMqirRDe6)<18sYclx9c- z9BCH$Q%dC1Z4DVV?Fr&X_Z=#|eUX1PxiE`tl=7)z`pWB$O$8q-)=xgM(hYhjsTiR5 zN}$}~I$WPM>>f+XF$Z73%#2bBh>8)>o5&I}~B-eI3N5*$_G;Sl+Zjfp_=OsmIJx z(Af{3!Y)7lLMlMs1_u*HFRb{5s&sPdzY>ye_$u!r>2rL$%O$6lYwCisazcwBcF#TE zJz(>{Kar&;EI}!|Wsst51A#k&$JEjEN{rEU zi>;!Pps?22a&2{O8JxJ5&1TYvJfp5s15^fZ1*2!VfeUq`WjY#QyU`gQjkvb>1+ERo zOPQr6^12+OPw?hQz<*ar&0-3v=s$Z!AR(0`$?wV>c%^*uZwLMcXk8l2ud&x_MF+>p zxjJ9tULYi$>3qq6hFldbK3-9wqOykJX0%!5m8Dktx|?^aRA#ysTKNe4LFJ$87of|g zdsaFkx^`};F8ufTdjos$go?1A#+Up4`{L2(qhS~|3;<(RGCj!k-r7sDWAKB`^KX@A zxb1{|NLC?w>+SXq{l0d}mmbRSFv<%%1u!JaMV;ESM4j-`H0-6lOsakC@$zv(hSM?# zCbqH}_2P2jO+1eaQU|46W=X4Px#iMEv%N3E!JO?su>5zO{6;itrG%tmf&z1lbq&Tz z#nqx~voUl6J?$=~l%cR)U$kgm%>ZDV&t^4Pq8g+;Kh~J-ko2Dq6MvgpO;GsYxq#Jr zl=VaLSxH2AVx6K7Im0}qb1W9XJz#3xF8~&syJv=TW92!63i6(^cK<`DV)kNQ$w?re zq_qkTs=sxE{m@#On1EU{;_@ox8oK8RXwNx+PXUPSv7L@c64ks?X50UiL=k0~VdaRZ zMyLfQiDLTxt#@xvDmqQme}$oHi^u$BDXsH6!GyU;Z9<6y+Jn3ytqw}~(7HMv53QiH zWW3}CZQYOG-k=8;qt6fBa`x)-m`C>@JAy@w7)Ct4<-2QUK5=UmjwE)q#%ml(%!SWh z+cnx$ZX5``+I$~SHReodwqen|92%s&BP&#&U@jdRMVpeCoo{V>1U8eg;VV%2z*(vb zPZVG$!yLx41kqH-iQUeVNTiu}QN8*uTG7Sxu(MVToSv#sW;#9jxkZ zhV&7$kMd+tP_W+>0{sPOMa7%j4KaMYnNYOWP5q^u2lT#?LF$ng;XXETjLu6`4JcXo z{ie&B!1Jy+cIb+8u0*>^T_Yb_Z;6tLHNv0UhFQVejZIuip{~@R3Xl#WSwdhCY_zD9 z`0GwS8nC3m0U-wza@j4Sv*3UN60PV0BGLW@e-wNwk)2e5(X|{YKLx*gt3=*)K3_CQfB-Txx&ElCElt{R8@(A(VciGa>|)vAmqL+S@H_6&N6-;u^_<&yx- z{~ylYJRa&j?Eep;V$LK*C=)t|lcYtcj9r|is8dnOh>9%HW|^3=MMai6?Xsj(iYy7q zGNjOAtL*!dZR`wY%#7dl{tW6Y_kDjKzdz48kH^8xd%51%^?E&DGhTH(Nt5|!E!Sfr zhln2(kHz;_f|v>3jA77+eoBh~IjZ67g$FmhktMzpGGf4|R}FPtHTD*Hsgop`B1a3C3s8MS~RR zy95%{dccteWyJ8$!l6!b9mz$?i0YKC4S~+0UcBw#bQsU2dV724Vm%$PMD(WW4vF~j zBPrZjWGSUkp|CORaDM%~Qt-^%E`B$m_xv~WVpPE75|~Fnl<=WtwPN6U7%id*7ku$u z{zR`T*-CY5J8~)^uYcvi7~4IS{@6&PXU{uO#I$E=6KfLEWnPs){{-HlD9s?vDBlEM zPswEe2HI=@Fx&pwMV^|OiT*223X^<{T*`{{hC+rkyyX2!oE>UVOq?j@ZGfny_0DaH ze9vUcwoI9nwpe*rObUzWuoH^^#8okc=y{9!%V9Y?=E7mKked#OU5KXBrp~IXaR;=# z?b}*7wbdFthVegNf6v0)FKGH<4k&4E%<=Ab&6og0zK#E~S3~)lTjSzTA~(i80ZRuA z1wBL-98@?9`H=If#dV-Fi+(A$>}bIs=v>97^^-WUP5}WF>^oKG-?%j5`Fz&A=eTya zZe=sYz0?M?y$*B=7&*dxLnuoSx!51zqtC>YsKfYg@3`*=7+3_!^3(%1>XDBnms?KF z%M?R;aNUT72s#DO;Gw4qc1^p2Oc6UEeWzl2wY6J*lKCaydbiHe#x;$3GX659HiL4W9y;XitTCNDHjJuJ#b7^d+%5#8uscLtR|J=R(6^%8<<}{a95$_v)IF%i#j>wtl`7SFR`Z;T0ogo zumuN&C&V{nQjAU1vHXae+EZUpHhqVK#a-;!5xh3B8(eNba$fk2d`|gd+XS$C`4lQ& z%m>hL|K2b{&Py4O?Itw}_SE|YW%?fS5$EIi5iqqY>>@-4Xw)#op!OKX>eb@{mfePwS{3l5NC|F3i5t9r8&(V z*f2#A{E;8l(^K7Xm& zi)ef5C43;2EtWe5@}cBhXxs$Z;(l@n(_~dZ3WT>S7%kEe%k4E+{Os42`^771Gt1pa1#?WNTl3fdsI5EP4KUdURa`{z1LTpTA283jn zqcV(zMAJPc_`cJL#v2Ew9v_bld<&lmWI1#q$(soZl-dI-2jbAgLB}{e=-WOZ-I-d4 zWlYOZ(aS?o!$_*=0C%c|EH`k5aSUX^;A!GG=*;9tsM<@lf>Q-dbKu`OMbm{4(wQ#% zfsd#Im@0U1ON%gm9Voy%`=~(hjJ~WBr@a%eyR*bIA9BTcSH$V1-_DGFQ+f z@nUJi6xBcmtc>UB1bjcc%1bV13-Two{mGMfNZ=mrDwL8VaRRrPKI}V`pK5;!+JR-Q z9Ut-i#@q|sw=c#^g#HygXN5Cb55CvdH-uGlqmw@;ko~`z` zE{?e5znINk4-Twp0m+%L5~_{6Ly$sfN@CSjlEG^&a&)FOqZ9yvp7PMzKo=q9iq(r4 zcv86*?(`4SlqemKs}AB+J~p7B-dh;;HXt}I=nIv1aLBRmTKKJ?F$yzT%!0E7jzf2W zOq4N$ZYo5_Kjn@HUbf2zF25RmGJ+cG51wyC;*HBIK3-HmpjW9hB?i|NBx6h@md0#~ zGcCN_2;^P4*9y0g;>oPAeMI?EnZ<%V$*QGO+U2}F$ti}ipZ;JC>SnVpg3t3S>1q~% z84#jUw8Xe!BNO^yNSepwoLYrYMc>WYqr+nnB!`@4dlI|z_y0ml!UT$8tVd(?OSg?pfiIpwB5M6cBL+L!I*R11jC91B-nxqe(%)uz_`!;&cmy_vMU)nk2kba%)(ZV`}Qp(74} zBsf2y`}|MV(GX)va!XZ7UKkQtoT`n=*Lh-PKaV?_A4T!Khfx%Jo9*G+_naXq%`KmP zdkvEXSz@WU9z19ZGSI50&Fno@5?P?r%QzM*jD}HRSGL=t98Zv;Ret);Ls#%W^gf`^ zqmWu8IgdJ;GZ~})x%SXvDI~LVJZ(MVfN3dAQgoq)TfY343#r0xf`2VwF3j=H^O_YK z{s-CU#x5Wye79Iew3?Goy!t2ED0t7VZ7WAqxq$bf%8eCeM8S0R1c#%! zOD4&p3iO(jq(ThPftHFW^zybL`HcVQ`=#8#OQeOv5(|(T?KZ@}-h~S|W(Y4`Gy=1P zy>v{VdSt=dub4trv9^~R^BvxaWSYlN;cbj+z}8^EEDii}5DmrR$7YFVVD5*Kqzo97 zvci|@ThROo1Vk7kEA^zJn#y5dq&?hQcdXL79v0H**R%5HNei9obddnPu{}b&^|C$8!vb+&AyjHN!U?>s+Qa}(|?B;fs}B5>A&0fDd=#8!=X268zo<) zdBK(QSjVE`WkEwtFb4{hUEEN{nxAGKas=II+0ZJ}s!=X$A+&lZbralZGSNt|H=V;s zaY6m+Uc)0Thi2X)*(tH3uhuJod$*P%0=)y2hMX{UxYd zN|W0*8X;5{xVY$A@&vC9(KA4=;U5(#PXc7AZdL zaE{3Ur#n(k`9xpc(Np;zx6cxs+fahgiGBAz5+eH>VLoC-3tk@K!4WLAd3SlAVUN}Q z`YjdAgaVoc^V)dkw1RcHP7=uIKq_`99?`3od?TO` z^@3CuN`ybZ8@+d@%4STugdN(0Abe*GPDl)l4)NB?0+2vpxCOzMq!>fp#K5zNI8s>w zitNBX?#&;5%YC8paBC!Hm$reC#n%qe^MS`O0bu`qjU5lc>i)1t;3qVC1K=@nW@7@q zq}`3ZFZqmrl{;!w%`%ZxpKB+AszgT(WZ(Lap!baxCmo|h7_D|$cttq9oAl+jF9{Zl zvCrV;FB}zhE13EzXMyF0S@jA^8D8le0h0A&5C(Vr1BpYq5d6b!v4~3IHAlZByu}=_rZH_#Y!!! z%IwBb!^aqfG%^4M9Pq4C4iR>@DiC!xovQ5zt3Wv`>*qy$hbG@{P%5XMUvfpUUq&rh=q$1!pnX*;{)Ee_m@Ln3`*LJW z6|TpEFk$Bp(@E?;N)>(_Wi~4*au2>TZ%AOtBt~&#zB;11$`?QF0E^_TNPA7fCKfAP zICR4Dws2?{w-)B6iN^41J)6U|YN@GxgRPt*e`;ZurR#2`jWl4vPAvAIf~wXeTkj8y z#07TyzhL^&O$+sbWfQ1uwQ!tS0&RHt`!Z@JG2H;8y6erp-hPl!-6zQv->kxBG-c$i z;EA1Jmg0n9N^Xo0X2My2p?`|^s>L@WbxC9q3Fg_@i+Lj-03*!I)DlN7dKX^y(l5~_ zy~HWPW~i{&{0i_XP9gSwP{!GpmYX(P4{-Rqf&C*@edhO2=wW6Y$ed&UBoB^hSWMbP zMqs{FH|D2AyH}i30CAFgP4?iyVm`xXJ4uH;cPkys58bR&svzDz>wl}J5w zND6p4lmn*33y1P|cE+(;&npBd3n9YVsI+Dza0ySI2c^GdIZU3fqg(qm#pcocaN5uU zpJ~gxB%fIsCYf)AXZ%Dqd8CTR_JPdvgLtfm+r|&p>DU-+3xib9v)A*dTdgtj@%DdI z=UN7w0Uc>r;EDkgs1N7poj)8V1Q?$`@Z-o@-Z%9g!sS=Kq82!OXqm0*kj|ecZUB`( zi}4+7#Zc3=6UH0h;0?y2VkY79AAkxAwHzFK&RH{R^)GO%z zH+IjsLsJ6WZmysXT1|S-Z^sGf)3zTzjRdaF(4-{4P=g^PXy;5-*D{m`0j~l~qwmN) z<6O6B?QujwJ4l4&`7|VP*dj8_RP-MdzYAnc5R~&oRTf_{jL_m0{};2zFO!E2mhUkV zA?J+-JXL`?yt4lPI!dL#15?91j&_9{+}4Rw$SgHrE$m0Nt(~O8QiHLoVXg-!H!nH$ z7gVpDZItQArx76+)IC^j$xo*;4zMenOyF;Q5TQz{XfN3&wj4=Rd;1Dxkk%*cN_`=$ zZ*ucM8tm388LM>d$b4fmSZ^-QI;^7@N1uTo6(@aP3bNE^1=}iNGHR?@C=}3PqkJZj zsJiY6c~ebL`L+~$Ko@lM7$9EavJL-W^wjgOptU&x`S@T#wS(r5TsZ}n_-3#WB?6eE zd$H7P2Qa0NbT~J@<2RTWLER5LDliZHgV2Kpz>2L~zun@<3--+#GMbJRfB*N&*~JoC z#|d~!qiQm*jof;E^py_ltjU8tW??Ws^b`uEY69l=O|jRH3#eeo%@B#2&K%hYts7hf z!l&sW-MIYUb>n=XC{)s{ zB6GH3QH}YO&u`AdTtZ&CDNt5fAeyU$6Bm&XcW|+Fle2xNAEn^n{mRD+>ZUt_vzt8i zOC*+woaLL|T6$}J-XZW${u|7L1xlihEqq@g311h(tqs3*;8hqYjb|hMJv7X&StZU8 zX95QizZnG>{h;u#?~Jh$8Qx=hnRm6##^tdloC*~DpAa#H1#+`CCm2e5b+EzYIjtT! zfl;f%ZAbcWQfsNj6?WILPPEzP9p38H$X5kd;!bS7|7<#VG+E6%zl*SST`gw=Xba+3 zm{zys(SjO>SYW7)YC^H~2$cn7r%s`SpNiO32k{-RkpgzjNO3R~Yo~|$U_gu1C4mc( zXyX4je8(xKJ)cGxuMlpAYXKw;fGo&f#00?s5X|jm;?EO<7hIUY?j)Ixva<3c`038y z4wS1^7h=D~@8N=PF?xlc1@5XE>G_nym?VZt;bX3lW3d}f?jfmOc{|Pd48ceMnb&j!} zURK*SD;u!?lenXJ#~bc~PwIy|a%|#PPxoF_fguK_?p2DM3HbPJnQ$15C}Yve=lcB} zkogGv5d?lb|KP}bvLZ8gg87uV{k;EqQl@Pj{;mG3OnhB8XnWt*3V>8=GMh_|oyY3HjoCOfm~8$E1&O|w zMSMO!`5Elhyvld|%4~4^f{cJ;a-4@|A`V2nml&mkA;o^m|32uz0nDTo_-k!ii{G}m z2Q>*2Fg<|lXIwr5+5{$jHDj0eb>f!IP%3y}K=OK4 zlikH4uVh}{g|u}59k8Whzrt>ft=(K7XxN|$0(x?gLVLvVJY8xwxe;j!hZSDJ2L!Ay z=lrtq2iDQW)6;sEs6z;_FD{`(XS1VQR1VULe7=s6{uz6!^t zhY}TEMW+`Yol~^)@I6i&odKizPiD@>@o*s~11Wg8u89SP17datTQw}6@r)q6IK64y z0m?#NV& zDJ>%pDSEYE;W#U0%J7Wh$*UlCj>dfR(+yrg<0Gp#+NhIT3>c=LS!PApuWpklHXH#F}#9hzke0gN0pg)0*Y zr4+n*-88u6R7LFw<^mowTsr?JEZ2quB`^Vg2TsE?=z@Az2fg(Av&I%k1G9$Rjtdx8 zbcp;M1HAi3srD-#11eD8HWdMkSOKO3U}0f0WfmEFMf2c{q3atu5s)HP@a(o=hKbv^ z72+4qyaFGIy)L@c3?azV?GVOPnqMDkoI*q1fLVN4nw9#!+VawHfM^S?>3{W4@e{y3 z1$WoDihe6rM_yI{r1ONj+9E*%@yRpy6!$u>Z?!l#0|3C2JFLoY4fu`Xc&jd5u>9m4 zG`XPZ!2>*FDu-1yBSX*knI|YM^z?tD4N7WWdv+*9{3!AfZ* zI0cC8cAgs`BiU12&9}87-x7{xbOJS?eH63^o{_rOr-KTO*Y%0^Mrsz04r{Qp2@Pb7 zm_+vV7666eEJX-jTuh|i2`Rut!d*fMVMeP&;F`;X^^P)9APzn+50mDeGuFYDMtYG+ z$}MUb|M)wR+AXJQTf2gbS`O#$t?S?=X($$!3po+38ho0P@n->&4Iy6&|00#F^6sG< z6;QnGiz!S9RGcFd^}Fx_6;A;amLZNPkIy@PD+xb8_eu`S*6wL(#o)eIpcC9RcAwGg>M+GqdE9rm0_Hxf!o>2pbg& z$w*gcnXQNT1WYQYTqKlmY$DgAI;flcw#oXfFAYsGnjQdAMKA0oEQ#95?3L9eDrJlm zOnk7KjI~YLO==}YONBmVSbwBC>+HlGBbMR5a3nrSzc&$Cl`AAVi^_w%M0Ifc94+>1 zt%HsdStcIC+z|S4%h;@~{tv-mvd8CZn+vAxMl4!D=b1Xm_ZBwta3%FPV9_?>zDTfY zuEWs!xTrQpEcph!d4R`GkqjTql`K6FprR#R=7GBkh7{@Drql_2m;zEBN&>&l%X^M- zqc>Tsj~|y0+`sE*I52i|ShK^>Z=4d`0aC@(2M~myIiaJ@eCC5#b)h%Vq1gRNQ>2fGrvY&|>_FqQQJ@x06l^S4Aa2@Ak-nh%NPvrP2Ghn=eKCQDl zXNXR=&_yz(^9F!xbXCK*Bt3&^(D? zsCNJ=eGe^qo;SL#(WfqmYnCX)?%CLXBHYraC8a|5q!L5jY=F~?Y=Iy$QvY2+#dW;4 z6XwMyx-AT%orR}FfXInz4nbdMB9cPy`En>Ui!dqvqy%!NS#4nd%ksTaJJgJc;&!4| zz$LIv2tT7iFwtGB$b1-@J%sXToFWNMS)`ki-B2sZr$xNg+Ygl)I!N9~%sz>8b)UO7 zx@t=%`gg5AtVq0-RwT1rCU8AMQ6>H zbF%~E*~r6fELRqE^bz6#juRO1Q*1t?awLT6mwU0OiiMs~!{86kUV)t``*aaAqT9kT zq>;ZaQ#ns?QEIDw`y9}wKCq?^w{Adk+m`-=`9+_C88WXTP7P;tc(al|wAgv;Ue;bc znoxtDCs-*E!LwQC^;cwomZw*;Z)6)ISa!vHW<|_tWO+<4zhzA9m~9&mflUdWypxO@ zL+C*qQ=z0}0%kp(Nd8Z0u7GNjDMPgAeoW`bJAKittV7TdxqE8B-IEKGz!nJ5;YFNq zP*pwX)r&Zlo2C@2-1`;nC%_=G-C()*?Uodk+GPAdZSr*L|KMbKYe`VhGf-upcxc&K zz1h6O^7pu;W19k5_5hn zag{nrB{Jt7v5-24_8$Zp>M#b*YM6QRA|LEydIY?QIi~2TF*tLK?fu?>H@*g+CoqqJ zg*PtpD|kdMYG2qWy&GW3vuOgmZ_ys-$v<43++A)!=ma#{j>9+Rv;f1%skdFR3{ZH8 zTMcqI7;gCGB06-2L^SKoqa#~K;_Z+D&kdO0+jmZ4u9*!ThT)HO>Up>uD+6f=7o7ln9mH9IwBPqR ziZYZnZ8=Y`yKt@C7$=`=6F<~)ig;^e@@L+4vj*IoX)*oJA^B!>D+6=c?{Ne$ zzOyFs6a1DNFHx#O;T-ZgQx~?71!;GQ$nuXY_CXOC7NH9xVqy9uAa0uz4_av zV^2RA0^_mC;tbO8q_7IJ0U92rr zS_y-G83}1k++SV-Rdc`ums7XP*kGJUmr6eowxBL>5qDW5)zitcd?#yZMA*1JFGjG| zO;rLAGZPCXxI#|@^Ew#W(0ztzndRO+47hSq;GlE(E$#N?n-dURk*o;MiyliL#G*Io zC-J*b70|POwxTD#Q$V#zT3fs%KX}rjq zl5swS$Np~`(Oou=7ZU--`3usk*nt-VDc|M(MFWFPCi3sOe{qevRb|mgU4ShVPsj|J z#Pd9PJvlaugr!+!boXswql0{iP1OwFv%2}TD6E&3PWw|)O<^Q?^;ohZI6QDXEt^+V z#dxrfHayUCU4p+@=&fsOnTov6hYG@D`J6?xvq~w%2oZ&n(y&S(V~$u zIo=#4D7CJ#>nt9|WhRq225-n!eo@h5F17t|)zsmdf!@Yp97&5}%*HhR&kYIQ_coh8 z)3OEYlNg%t>b6f-{d}eET5^V^HBo`rx1hikInzZaElScna;#Nmq`L!u7x4t$Ucu|{ z!q?UBW4RV!rRo2qfFH13zl_4+(FD{GlOt+jz#R@p${@@SkD8 z8hZX8;1@bM9O*&ikM8-ec%$0@u2KiG@@32*Z|>Ia1YH5^522O+=DlF&%HsXdS(~Gu zeG|12&kLk~lQo11Ay=Z=7v!c}x%voJlNf$4YXeKi_h^^H(78f;XD`xY#+LE-&Z1pL z*}X-RxZF!`KZ8{1nBqQgdRJHAX;QsBz9GP%@*xEtP%Jg=JsQ@B0BK=BICmo0CxRD4 zHNerM&v>vP8Uo^T5`#eh2#0dYaM0akOp-EVh&pSlE?hmWtDG$DxBh#=%l?GUPaLq3 zPgWTPchuwVXyTr5p+*P${G4N|K4%$RHEN@ovu%nPNtGVv|DpVHA3VOm)$t zd@=c>{x>$2J=9wzfAQ|qm(8wcX65{Hw#caDDbc++_KptRLUjBY48*A8>0ea@fpzX8 z#$==<>SWYrkSa!jq6ctuFTu)Cq?A33DKhCtEi1k;T`X(-vGM)l;MoA81!c+x@;Ul% zl8&|^eU`@WcFg(&Jc}C>8=Bnzrj7!r#ha_+V1R`s7$OK2PnK#DW%joETN2ZBj`^i2 zzamnzkOSN|m?2&r#?<2sIe7abd3L2IW&q${M#tIp`}x)V@L5HRu|jU(cKJ^&f;~^E zFJY#9Mj(*;Yb>xBeUY9>b&*@)r$LsuxC2<>6b@f`5je zRGU_u8TGbiNTog$V89+Bq z61#m@!C2UntTzJpWe?6Sc#HII;1=bh8##DU#(9$d&dS}3j9TNk49JK^Try0%7F9eg znFvWUJl?+Qgb*Ez-e`q>^EXKs3Ux6X*J~cCH-@-9lr^_ed!uWauL5scjq3V|8F#D` zzIG79v+PDbQ%}B+;8FrLmg|6F-R?Ec(zzd65f=ZHUxrUBrE~aPUv~WKrZq6lDq*ZEiz}} zcaY_aR8%`l{FrLr^cq{6a;~>By*dfcVq8&&`6|UfBeSjlpnsu`)HwpPI9T^h;B}jS z;x!OcL~DYS!kQQOyzxS#0Q6VKoYp`8eUuGSnRY4GM${Bf!Q+x=6xqQH9MB}mBErE~ z4TiW|<;RmFNe%h$^c}euVKq7~(q;8Au6xAfuiUwq*GZG(bITorvVg8oIm)K}$(`Tr z=qOzelJwrP1gEcr73-{X$Sp;j1ke?_&qG-dKOtm`euL{kQ%r$xr-Mpu%}^P_GtUOu z>0v>3<_*|!@q;fi4jwV{(hIg7-@#U4OYe>r+zX=s08Lp~KF-#Cpd}~ni*VWy|07y? z8x4ywO-;eCi_b zd{9!QO=m)=OWrcw1~LRVH%e;VcGx8hCbNI@Sn6_G-a?S4_jg2=aQB!+cfwelHGxR( z<#QNsX<6LUimh0~{3Fey0qYLwwW&vLlDS)pdmM*9ipRsDVOUaa~#hkzQtj_2Pxs1O7eAbKzW3hOTJq;eAgf!H9c)>{7IioRAu8*%) za44YhMl})GsK)lsP0Q4lgtml?^B)@uQ$>-ba+VeCCMV4hh3GDsms(Wu^62N9Fi@IQ zS_g#+N=sD2vj%0d*fgfp0qM6-bkF!vihrgx=1d+e&d8f54ORz5Q7@dhWr2YP*)r-BwNIT>?NyhLrV`{Fa@(t}Z z8%FY=6O;*rT8NwhPS~EysRdWE7u=17IKsk*Rd}tb?hhGxJQKE>X*}dTDp}UpOBS*2Gvc~={_mW!I@Km zd-%B2I0;)UiP&NRI;KjW=*h+yy-z_B+@>&R@3`;9s1qMIq`qAJnE`J*NQfK!TS(%V zhknrp{Y&I1Y?v1TaFr54Bg7rr8W}01#@}Dp4!NA{?ed_gM@TN{7JqKEzR$!km^LI8 zP z0#CMGSonW)RpvbUf?>FQS&-ec1U)7Ab}2gK$-j=qlp1}IDKkV141y?$%Avvi%HF|S ztu}#7CzaI%hTsk~_SJl?y!G_x)@~Q<=ZDX?5dBmgFG0_+;WW^S?QlPU+2tez%~W=^ z><&I5a^PJ0BY)Wyh^?Eus7=Kue&tBm!&N$VaYdLlW9J8Hy>Q<67Em^xP(FLbIpXX!q`~ri zFxPD0(NUVD{zP|K`y%Y!CP-_Y2Kl!%P?Q|l-}1d!(6lrueC=ga(iF`Li^Jf||G`1| zTU;DS6J68NmgO>WQk|Dt>D#W-B4swFLSS`GGr5S#z#b*0x3L2v9*uH|E<1OLP>TM= zLHR6^`1Oww>AkrSP0oj0$M6w=?@-4IlgEUPFF1RWQT0AD4_Dk=fnv^$dP*na%%R5I{P4 zqJd$#if#j}Tv>mjD|j!m1-Q*YPUxh5#06eOyftqkN7XM~>?_id_!8@no<;>l zCzUskGoks|w4Iui0^BEfYf(Ow&tE8P0;R?hw5vPfHJk={s0whCNOHDy*3?*eTQF3M zszw90=PmcPpdC#kL27igRqZ^~>|#!=Bjg>f@&Fz)GyD2Aa$OW4HFqxyfN8fWjZ99sb>GlB}pfj4Hh z_F7^$`Z7_N-!=%HIf0>Y_6Qsdv(>WcZAtMsWa6mAYg|3fWmTjJVF_GVi(ENamgJc}NZ`{3O_Z zH?$zb;t%s|ljnh#kifxytrMARbX95!rwB>2V8Z0AkVE=)n5vg6?lWyys3KrW3(GJ`!(_cS98Z|IlSlG z`X5Vv(}~IzDFljCPkn0bf|_R}WbOg%mK9W@#o`-pXiLYUt-{x_+ev zP6Wph8f`Y)S*x3lNc`q9?>*R##ccXJULFt%`NIZX)!hm;|Du^_k~SGKisGVRDMHx& zpj)?cpc7;x&vQ(o!9yKBC9bDBSUGNipPmkilVtt?1E$kTm?y-KrW?N1&{Mt&V%RJI zr8;v=lVRwvW8%ZD0sbfO9>pTqQV7h))Bfie?2MPIYZ!f5l&?Z`7781Y=&k9<1$V55 zg|l9V3)WS^QWP-QMQe!!VqM7X&Ha=>13u;*4sV>IgoqPma9n^?%*9+y$^>NnFx0~xMv29K(PW>FZSiJr=RH^BHgQwM+=S5VC^$HH5}9+~vDK zJ_--9d~o=BkpD?3;iX~K9tf-Cxd)KO72PFa(}9bC5K4u(4R*iYsY@oj!Ue7Hc_+57 z{JIN>%z&KOF+GKkS1EnU*nkc5jazwX7^vKY<5UGoPNdxCIj zg7ZTK>1psJN+)lshUgg-pyZ`rwCtZ0lCi%1;DeTBwf2INaLWk`ST{|ZYig(^(winiB#p#(^UJ@PqdHYlWv8*+k*QDav# zu%=e%_MIEHO$^jcJ>M{=1-N3&x1EYXN1{#_3Tco4FTj8Ey)4h@3X*ye3zlC7^hBh+ z-lW<;BBX2ghk?Gs3#00^_kmaByNT?#5-`Typk_CL2Nyf2<10*Z^I9zR{3(9(3@BR# zrt^iH2w7XPHt1T5;|sD;)^08?zxERvEcTDwJ6(30choR6;poV8ML#z(Yr);r?{d&! z8h|_))jJ9GWC=+3=s^hd$2#^*GLndGg)?D2o?19Fr*5RA+v;qBI61KAe+L*bCOWRO z#~z3Q+Pl}UG)?PJU$2JYMefMNXRkk;Td>T9uL>GTdA$`b6~I4Dm&)QAmYCDpwCE8t-puDm z)?6KL6V)zb=TkaqU`rCDYbw0JiT{%sF)IN=g$8MM!VaWth_iyTmepTS5!BMb z8<*%}QY8v?wGSido4$C@@|Xd;)2-&%R!6npk`b}ift;9*4a za0_6HjMl=zdwRAzqX9k0_ZJX|03?F#9~45V4LnhiHS6xFbxdms6ca8}E#isSntXoF zAMv2w?M2yHFBt1L%s8-%%jzEfk|h7zi!(DK&vtxV{YJ)+ZsfZ*pSsDs_D-kq`Ihh< zw?&2JO2=AdHm8QH4vk*(eCLp*>c{2#OsTeAx#o^UuUmwjYH^EdPJE7yF5RSJhK5#r5;9P5b>Zwq%IASTK22 zhDx}FYgv)9EuZust_M~ohjHsOhLmTvE-AY`a;0jhgy7J(r`}R4R{Dd7;mZPttJ?0A zgvYc^W6jff;!m?m#uG+_qs*GjXWHqefklL=qOPPx^l0m$5p#T?4!eQNoMw4n6^(Sx zs5>$JvvcP%rM$!M?)zv_aF;!Yyj%DsvUG2(w^m*re=}QyyJTX~FvHHa6Hmc=Y#F;; zZF|D7d(jL-AgB43Esf?iJ=wS9uGf0z(b#C(I?ZEwwBjwt^3*!kG816f=f;fQSHU}6b&lWIVBbsD^;q}| zme#Lmb1ERS>5M=}!G4E&I{v2Dx{w-UsmiS;TRi%F^t5s@a(Qsn$H7o@CEla+Z?%i40wJr=Sz>BLKqb(ATPVMe_jF*KCQ zBC=zh&8uxcXyGYmlx}XNRxsc4CCPUTJ#J(^i{ci2ybuQM&WK(}F?-l?gN}DMFRqFf zy{a>;yT^SO_I-*)snH`-QlXXaNC%2*|yPN4i)A=~2C!=~_Cz1J9eB5roX`oKX7?U}~ zn3fLusNUd|#`&WD!^qcP1_Q)*cz@k8lp7+hH^O||Tdw>%{nC&4V^Og>31oS;HId(o zQIEHSHtb)RAW6jZ^C6r190*L5`rx|v~BMbf@RCMmw*~YENQ0{g4s1Z$CQT zy<+6Nke5Nx)0-C59)+jay6q6S``KkQV24~lm%#Pz%zTyoBc zlw~J$^qCg@AyPKYb_=_;izXYrR=+6eQ7-Ja$FDuS$7?dqN3VH58RSXHZu)3WixcJn=-hFI}pZteREg8*8vh$WmGGrrf`}eDUjf>^h%FZlSp!lscGE26OkYgS*xd>_Ffjam)h-+EzjZ0 z-;M8_zK}@4&m9dANtUfec#&;aN;pS3?UPV4HU0D4Htq0zU~!D~)mOgPn|dv?Kh znmT~UxBYITt71TS_im-zl^iisPpyb`N0Q!b&?SyN*=S{#UQJo>IgOgN3fg*1foA)U z5tG%(XuMfA;xR@3p-b^q^F*DTUe1GS+#-86AM?5gll9@MMP|X3gklc{EcpWOg^Y1U z*w4<>4tcK=Qc@Z}$U@%2maSi_MUdKw;hG@@HaoCa1 z^Be8A>|Vr_jHELMqK1!)rL`vRaXmC@u=5YsK2H0BxYoukR_dHkZ+4{{{XyNT$KZ;Eb++aSn%DqRz zlVNi(POau#z0drmg7I7tH=FD0*->kb~KkBTn4*^gJ-8p8WQ#H)CJ1s(I-vWyMa# z*i08TRrU3_guEdP_8lqbGTz$}X-yqJ273(n=-wx5SP`?v4iY)aCbMi;HvSgm>j87#f))2UC=2&+(t!Bt^l{_2~r4yMiPG3@8a7J;}%;K}E zW6cTa*0~>4cT=szl8o421RYx@WRgXxw@Itbsp?)ja?feTHdWS_O(c(I`w+Q|dxVN{ z=9_8}CeylYBv6!4arj83g5O!gWz_gsos%y239a%q*$lRgmb@(9-px)^{`;%LoQ}Jb z&0f#ySPU2VL0Ago<>-SH&s%TPB&1By6MrmQ?l;z|?MG%^KRtw3mRZXbG4s^6?>Iho z@SV)&7320angf7Bsyag40szzN&MFK!e4f3Hk(>#4iO&<7gs02V>B1wF+i7&A_B@rz zpd~ViOosLRzCvevD0a4oKJ559gva(PZpw6JmSCp?<)vV-=)22bI%f6&;Lc@8MwP_* zRozV4nr69)Q*ezS;k>g^ml3LcfF|2#tlw-IB@-`vni#O+>RRkaQM3)#wzQn>P9w8q zwv75$ktLrPYmEmT9{QCX`^oF8#!OMQh)Wlo=PY0uT^|cPVTC{Tg^K+KB2OhFyS*wN zjQy;cEK)%hv@>P+eO4fJj<9-?oy}D=%bBp9UM*4+D^-x4Jvx97QpFOfJ}m??F6k`m z+&rjmCV8hdtWp+BvVhRZJXTIh5F^>Oj$963fHEg zkBNA37*h$wp9vDlQ6g z)S-JAO%*f})Xbx2w#(iXR-fdaPDvJ?$i6e=RlUL9lA1qmAT>JjWF%k6R=sLtb#jqv zI6GFcrNx^Q8#X-5TiIQn*3S@(C$~H7^;tP)B1?vkw*He$c`sZE54@QEP(2sgk>PqCh1Xi9@ zpJ0ZdN`v2LCLkiUH7hK}szBcM#nE*w3+iZVi-XG^kw86KiVp@okmQW+Ro_z8A6%E;A>q5qTo~gTJKOQzoZwcxJ2SC6^Mcng zu`yjZ!Zx!Dx*b+jO!<3zuZk}Bri}KyY}>s^PVyrzvszJqaJ2Bq8V`xc;+cdpAxAG? ziR=Z8oLB6cu`D=!6!#LxyJejF`A>G@r;QClb0ni6zUvmYOzxUKV-HZ!GeMwJF_N1xyYZIjAh6gqw5Jhf99ukU4W##-o;TW>C% zJ3vx?7tT;F+ND{aPzvUr?w5|yK9d!sevgClUV{SC!FQ9Wl^sjS)QZC>wd;jcz53x1 zay}`nevy`ZpJa+HHNI7nI6BfMaMz+pY9H0$5v&Q@?#x0$z1xrIME4!Qk9t)MMtxVD zSx`M}$AlXz5BBCBaw%#2s(3k25w3be--oS<8)H2Tum9#%0Mrk_d%BA37Uf(8DZFyd znafg5(SM1pAGC6&5$O{Y!xx=EIU!Y|UrrP6L z@*tCa1o!c+Zm%xOp#!=d_!ZTKaGS}h9(?1qK%ul~5IZ=QE?_HyP2vOA14xj z=$txd^v3%-j{%18Z`xan5(Y@`_#eL(dKyG)co2q)|8;$PQndnr`;n}p+#%`&#YJ2R zo4nDMlJ?bq%XT~LkiWz@g|^tuoK#OUOKSDV`}^g6y{1LEI`+*KjYGG^I^Lq^Pgbkb z%SP*~SIaVV$$g6YtPINQatoiNNu?;RlL=dIP*OO3$?g_=TgHyjAWoc|akGe&OyY!> zTIJD=W%&>u@B`CfWIV{fnQ)F~<$Ip`@)N--*U}~D7$?5Y8a;L3TVIck;R1&1IrL}c zi$&@1N{r-+v{I-wsg5!ymyD)Ro8XeNAXW4|-m)If2XERpI|NXL!(sW+?g zR`a`q6(_pO=28XDm;>#y`zx&E?L-?)3$3!@&<472!b4kwv)pBcgf-%#iESc}`?P-;+X_K?%iD&NKBu z{MZZ;psB3Y^M@>`yf_D?>|)?dkV%wC?@8(rE67EUq_O?M^T%uq^X*-o9(Fr!l%+|@ z>E!04FNp6A_4Or{H7$*({*XF5xQluD3xj`bO|tQD(T7JZr{$Oj7hF|0i%1zS(rajj zX9lyar~KCjnpSMzYUf0XZBGVIc+!WEMXy(q+fV-`yFtPk+p z=m;W80u7#fXrn_bMH$Gt|~V zxYHK2>l}R}5$-am5O1CmvTgE_m%x6C{#G5G$dTv0=A%o#a?y=-)jwmP7hhvu(HRt{ zqs$eN?F<1Z?eOIk9_tXy40Tg@J`R)r&2#3u_`zi8#AI>F(DD@UfJ4H9{7f^&P#rw zi|^8e7O07bgJqc>BLNQUJ4ByCN8;V&JYx= zYmn4^HGMQ!gQ}5=iqSDtVi3jb;GI%;LIyvx*p6|9B3_~NV9M*vwql?drdr7VxgvhW zuzA=sYAzcpug%f88yQC!zNOn}O{cmN;8e}f?d2i!7z@O;PkbQCZ z2qoQXC)do=e?@VrlXgS3WHIeMo6nN^$*Lg9oyfLP?GRPt`WznWn!ecW&5Xj^1AQqB#?f;eBILID0sJ_RtKkiZ_8k^`__&(=*ZgBx+!+eibyz#exHID z3mm3LDokLJ@v%q+d{%IeGO~GKIK1US5Ha9D=Kk^x9aQP?bFJM(RZ1 z%rz1Ro~qj(uvm@}lLtyo+pDCK)0qwfE<2*-+V_ywz~f+CqpKNTO+R8teOc~ecdmNT zajw}P)aq$4l~TADIC(|Oj`EfUF3fMu;F5`JZ*-z_5C2a4Y#OMQyXNZKM=gCK)v{EE z^_2gQI>)qSlAx*7_FYp+qoF?m1 zV%?i;)T~?%kf0Bm0#|k5!(dXxcF?M7T2^BJG~KP-aw$tT?lNdvjo#wo#A!v;j$R=k{on_=bmZZnqQ5TLaihgA5sp@em zMs|u(0aw_;d$hHRdm}VVM(G8$=*?af!j4IH?;fk72$$AGt3!W?2$vC~N5=})d(+T4 zRP1QHH_F&JDs%7d>2`EbDGkr{cYgA+)O&Hjb+FHQ8&~92h~FPkgix;2ltiTPG*o%i z9SYlxJ=W_sOk5vVDphR1VMUWo$h2Nf-=A^xHLe=s(GQyeN^j_`Xb*r2m zIEeRdFePSjUER+g=DZ7smJh=fom@&|LBF!-4gVi!?;Z|y-v5t>CPj8wA*&qQw4D@% z3PVV{TWPC}PDW8$5oHTw%s8|mG;}@)owfrR5-NuwLXN2%az16`G#F#dm>J*a>pi2x z{kcD%>-zovyRZAcu6ymgUhmiQ`Fxz7eDMXzqY&>(N290X=3u|^yLqnHfABz$?Sj~; znde@=8WT+6`bUVnmTYH>;i{(!1_GRieGZ8%bXK*3A$_7Z&6Dn#KP17Md@U{lV%l3{ zp;ZF&*_iorc*h$>mm$VO(CN$|j18JmX|?oXt<hWH1Vdk9i}^88BD{C|ZHwFNnGie)XE*OlH?j+L zBdc2$dnEQS!<27rWgNphF72;g?-Vccc5YKFs7X+X(ClB~XZGQ#LC7@)rMQ}PM%6B& zUt=F@=*}0d9^Xe(h?SF_)mdEbV{x-T3yS4Y!R=SUQq3b5K410n_^tLL2KG+8hU==e zvsm}9x&t#z)R&&~F0Ds^dO`sVG3gU^;*`Lm3QWN-Rx3pDdCmdp? zqvwvMHm+d^k0<|y$IN*2KLL;u#jAMG`XoPBt9cTx^Dx6R9wCG?dfty1Exu%4?(!?@ zmsI~Pp>hU7e9W9M1oyT^CaU2V#tS?eO1$WV`q9v#iVUY=)!wu1B_U~&L5Wr{KU6fQk*A0H-n2B{(=y|JmPWP1*DlAxht#H z-VfF%Y>tkwRIcF}m~5%m(2WJ)d|V;+C*N|FWAgD2Zf(zaXzOcBn|;XG#(NVJ@L*nW zFkFar?0Wa2dUZdKaBZ)cBAUaH;79^34KC?FGBVJO?3~xuaOp8%P|JDHKKOXmS#1CN zYFjVtESjTJB=u{-o`V|;h}sQ^KtQd>vbU?`wpG?HOB|8ymNkUTb|MT5b#+?tx9tFJ zjk7F&BkPm1SICF_j*2@i&>=k9%}T{D@`L7s9Db zyx7XHKY-_Y3jIC`JD4mOXGxuCkb!HlS7XlBk0JXLiAd;!%!ugGmRtk`(ijk(nweU!?b~g58U9Da|n%HlFwDdoW_pW{sBr;%lxq)HE8x-XGK%3yXS| zo8pJ20rxpNakHzbYc-Nf8*1le&&Yk*`J2TRLF!SXPMP_vqk)_zi~NO?)(Y^glq5lP z$EUu47vo_7+GZD=v(6(H0r0?qr)&lMc;Wpz$wvp2%IgXS$!Ejug!&o=6f`va*17s% z(SZVs!?nvCi=*U9GY`1PtYtXAiQ2w<`|iE%6Dt~439NiLJi6Z7BlCSWp3)MLK5S}N zs#*6+Kt2@949&Ib?9d8Gt04Ny&P+8FTqS1|RRPCg(zAdoh~Byge#Ow;#L{`MO^ok% zLE>f3_4;fej!q0!HuiU93q-%4*2ciU|! z_tm^|%s7*Kf-(nRk_KX#7qe$XSG#fjqB-sxZj;2Ay^BRUPiCk$d90P|nc4$&2A*sa z#}&R_0+j*&>v}}$>~h4np(FL+qtB}DZb=JC7}@VIfpIGGm&9cz!}tf0az%@ZS&FH_ zwNCb%!>s|;OE#Y<`TbvF{Ok+g-x3q*#zl*zx7u(;I{wzP_Ry}hrcG_kp>X@rY_}Rh z^0{Gow@jSU_)q9lBK5XuEdWCm8UX4JAGk_UKyu04z(}rwk6LSBJone+)D>biWlpJn zDTH^Ft(f7em+w{gYY9v&{2mKkvha;5_sF1$D}Y0Lv?uzq`1;`_jCb?pIgS?IsSHoh z9zEZ>lc7aG^k=lIQgeKa%))`gv7DD1(Pi|I{@RtSn7N5-jPfk7T%pr z)?MHCPo^-A_j~KI2F?&g_?KQ@mF4cXxMGC8mO^(2Qu1ove&1GT+ME`=aexmfT%e9p5-TIWBa9^S`7NKoT$UqvXO|J zJ|3!Ke|xf|+<}21_(=>GhE+Ohfq-)>6a)`SZ7cq+`pP$H4UIPWocg^e5Ll>pPiV2J z)eiFY*hTrEPkA-GTpJHXqMH$49Vqoi`B9oupXg-aSdPw*FA~XmTv;I9CRX?<3Jz`p z!nu!&CZavG6>KxuSA|WGoiiL_M*!qt_zQme5wYSjwlBJVeoy!48Z%-9vSzub5SkAF zHDS0&q)o)L*kRNrtf0+YgLBK6gF6=Nyeu5hbaPQ(!4lIIJe{4n?PknS)mwB5Ebpz> zFVq?UoaGPr7A+uz!?2mfisze8JnQdAjX7*y*W_EL_#*bz3C&XB5>)+!^0jsLo zAK{NKcdtRrO29P!V)uk(LIjW+!TE@HDdH7s+#)#lq6wsLp<_3qR6YikoC(?G-TEnP z1JLq!9;n6zX1f>oWBs(>#sdG#048Ub0Qxi%!kKWOTqtF#4Vq8n;QDVfGFSM|*x3T^`iu*!|uNyo&x=k*5zTSwFs=7gxJ@ zUNSD^iFT*{#v?qa6>Ly9=ydJ#)*R>uHvYnE)_7{nNa$qGsPkn><$|*l5dd1 zdz*bwRF1Vfv;S>8y9wcdNADEetK8g$=Ta~-Wzsf^us{ijgtMZ(Yee1^UZcctRvI8+ zhIK&n{ebGLfb{mgR+W;uSDrgy=UJLP=rTxIS}3${UE;tyI@%Pv{1CKQ2Se8$4{pz% zQMtr4R{m`O0lE*e^;(AAu-Zd_Wi=K9PvSb@UdEBFCc8&DK)J#@kEgX&LYW;2rC21b z{>i7CH!;rAm?EhGouhr7p63&~mUWI#%1Qwa*msh<(6r39CkyMc%KgL_Vsp`%4qseA zK`1e`^zFP$;|d=p$U{ivU@T0z15G+t-6%nQyjSlV;jeypw?%oEn&)uK_9VC#rn;`_r*GSW@%e{--U~XJGFaL;geOW zTmn=0DG1w;-%;M8LB(Z5|LSIaQupC2nVWv*M>eftcuJ}UhboSxB13GIjtWLOvm`g+E^O1US2Qj0 zEikb!8l_H3Egg~Nopq{CivUKP(ML9q!6lR_1Qle@gZ%L@g67U-BPPq1dD zBf91=^bG8LiuES+;TqMkCKRe!&Caz4tbA-=gh=p_Ct*;ZI6l`Y*uaz-rH1=Bel1mIFpdd%tG+YQyH7fWA#}a z?oN-~;Z07gPEe&Nx4rE~1G0xU)27cvEiNFon)G=~k;Pj+z zGQ|#{D%v}ze2d%e>VX)t*q#mPmMw-l6ydGFi{G^wK=uVN!~QV z(Ujd%(B#o+Bj^S0^ZJ`Rk;H6f5U4~3JvR8M4{^*<; zc=2P{k9*LAF_f(aKXj6oI6+e5w(2T0}g8s8Kpnx4*5lqCxK&tYF{F*bIK)~ud zJ>TWkbCE4=S*d&+A6GuV4YnBm?m-1u^Iqgzm%@2_XyYRwGZXO=YsL{2nYWRBwFEIa z*0$zl0g?KyGc1Xq4o#D{?ppNk&+p|h6L3p5Aq3|t`dA!F z42t#c_|FKNydhdJlvMn3SS~(-f7whTbw{Hp11Y_N7@9`^P3iT200vku#@z|(i8S#XrP-=sh|MAYc{vjJ zW%q5(k2wrK?<5sG0>#=I(eRk8VOqmjx$?$zvY|l7SfXa=H+CGE_p;5vjI&`p^aekj zAK;POewlcH@jRZshDvC6y+$NL=fxD)6n}5?1(C}SrG!`3231;Y~CPt>R+k{*tQM07aw;Qj*S;ATozdai0 zU9;Qg2Jv1b#zSDjk^Uu^bX6-Qp?oZ<$?^%(G{7)pwIz2Se65L3!d@UOPh)tAY0ctG zNrL5{a68TjY)ZFmeIft0R^ZLiw;r9biK@G{O^ZLC_YK{;4?}tVY&;U?ts<#n{GxL@)%)WlN6?WGG$95F{; z)u6YPH}7bIW!g2arv2>KFxZO8*1D72Vq$@pRb&!DLyvmR3t^l-7N^%1+1!it_O#mP zKpW3qTc~wt6y#{A;$`rTF|;Zgh=UV-aCb=^>iqONwFb^{b3~pYsZ&dfx+wAh75!Jh z%9rF)%_|Vkx?{$hGbaUVDsoklw;>4{?&>9`fpCw_ac)N}t{?w7V!QH4%USmph22xQ zV*}E=ZffCO(yb6`h$h?XOIr0V}n3CAT&c1aw;ykde*XS#hU-w;8&U$OEBw9*-XT+I{cnY z7*j%QuRp6&D<3NzfH{1;xiWz__y+GWIbKbrx7ANfy~1Fu)7vz{CZzKX@4tCqMw_FI zDT4KFPR4$A;Qn^_uy9XF`FpJ&>h$vK6BOE%Hv&{Yvl_8h$Nd&gmC3FlJSK)GjEs!w z-{ zah4oC8Ed;=IEQNQRB%1r^6>+LI@x;h`t@zN3*8FWF=_^c3qaa6oqa>0&UecyB#=Q4 zH2sg-2pdLh+!!xqyXL|g_Zv)RnrQf6ZsfO|okT0sk0oWSecXZSH(5u7J91p=vp+{} zB7SoV@etF%d$-;@+fw_vl^-s3;8*iL%m<3ZW!uBf7$j&k_YLnX7a1D$vD_ zHyQEJWMm0Jx@~c@K6^e8m;nSwx^FCLkrOZ)9~LfojAp)r6QMnz_js<^gZ`;AyyLZx zsUgP9hPl(*NiET{U{8ADqXXWg?oc!Ijd`}5UFw7%AZiz(H^}eqY7k;n6K*3#&QFZ? zIlvW>Y`j@wv=+S#!CUe~Il6gO`Q!QHTmO+YJkh1nkLU5a4OzLoIj1N2rWS;XUeWUC ze3JRd_3FpTVdi~|JR!!YsxLxVrg76c&qZd7<8qdjsqON^osag{6m)N2{*-cQ-b2|^ z(%AET^l52Mt~8=mpELzkA}XX6gYaTKr1n|S#wU}CWo`!Y)8Czs@sv@m)*_82B{cB1 zPTz)1Li49AX5W?Y$;@W0A0SLx4dl0~ zvyb5(91kW1?R!_0gv*jBx6)t9s5fIow`Gqy>C$-z$P{50KHo49C9ujXcuBl1;y0-S zuo$cL;X}fy9MDi##*@^P-;md0x~&s=s9L-P{)KJko)T6smQOQIm{%YOQAg^Nt@uuC zHnvfeD+MUL=Hu7~O8ZH{v0Do7zbDW1tAu=N`DW#i8Nxn@7itF42-4<3tmd6(X9R(kW$ z2xy}T793@rz$Qj}bGqd#fFUbot__6jyn=6(F7OHd0G3iv6)1ol^if)Y`wPC)ULlFB zdqyMK0i(J82oy%wOoUF&I(7tvk!#Tm*vLzk9!dXoh`bxwCWgvn>{cuNrAuzrxM6-{ zgpWa)c%A9Xv0(XoPryHaj-XlutSb>l*`I9|1E7I@-wC(S?YIQD!~472QLq=-mBy{sHT%0HK9rfm<2qiPRi77 z5X<*E1wXU?iBi}VU~!}O2QZzH(F;OX1@ydEXvKxaa)mA}TJ9gR16s-mhiLY5YwL(l zNcDvVF*V6y>G*lr6g*>{eN3}+WyEIX4j&0Z7deYP6r+dqHv^@zp26)&ZKn(PHs-$t zy!Hv@h%lCh~VwjSgkSkb#mdNHmecg#($T<_6&&2?Am9r z8NKOIK3*ryqxQ2#^J~^6Bru>ZJPbO7@#q2epwxPIX@!NnBW-q-(n4hlBk^)K(wp`8 zcT)>j8f$rp)dAIK9j41fo}1K$LSL(ZRFEqPT6)r-P@~jRp@q_-H;_7_^JGz-7$i0c z{z*82a6E@Dyy@K&n_Bmwx28)85kMU8w)2SpT49v1e~qX;R}4!05^e`7J?Z=`a;fu^ z_WjE&n{YdDowXOUp-wPX`@oZU`&#%KrTD4yf`dpRX5eU~n#k8o9-3xD-4QL;^92qG z%7Hfm^$ujV%>0CrGLUs3wRDevkyk2d+)?tFcIDR$&9&Pfjj1fo#0?u59Fi~HgHd11 z*6w9j(%@BC=AXXdq7FWCQw{rkH)4(=Y|AXU#dq_*S+ z{}bSh+P7=f6|7Ux^NT&r@z{4RTQh5x{KUdVAfN%6WFj?3r z_-E?u7JGF5SzrR_&i%v->X~u3^|iBS9;s2o5H(dNr{&O@LY^9n13RmgH*U7-Q5G3F zy?AD$7Ma{V3VE+cZz%tE5Ad!S354XGKuyyrYrRT8yu16iV4Pp*PWe-KhefPByL5Dp zUpA-$R?)n>@oUHG?*QN;F|A^3rzBKFzc9(zMwp^ zLHeDMRum?yFgMwbANLAxw>kEn?ppZlU$F`e=+Bpww9NJzfe`e;VVdleCG`gJT8-D3 zu_M3Em{N#^=9flWeh7Bzop+c$9GhL;+Sw6` zaZvzL7HWC$bd0LI#4PwRQEHFcAbEE%vZz=fCz;!+Iwz#M>SAW{wshe$#!OiMV9!Bs z1g7dXZkq48XwBhB59y4p!|$Za0I81a>X~!f5&mT9)5b8lw?hv_Hr@r?fXwMB>G3$| zfk(yS)fx(QkP}ur?bU+T8SgQUtTSsxLH9v?Z!jEu9OPk0*9yPbe~REd_qEZn=@EbL zzlg0q$KnxH=Txk}u#;UFeq`S5#fLu5>bJs~^B?`iA|Fw2k%Rf*RKiVOm78ba>T%he znrnJ2l>rh)zw$F`vshC4HS&b7~x@6}4qQ{fgkB&ZVZx=0hf3TFgH_zEOEh_?0KdvovAKa=35UeN6~J8l39{o+`!lW}nnl8Oi`)D~ z=D)E=2HIp8nuRyEu6-sfH%ZMw5hBe(qm)(upmhCuSKl@(Zn3yhMF36aSJ(csQsQkN)-%Aau2b4&MLYXxORw};B?)igRnT~3 z46+y_*OPUJ!+VDm)Q_je3tzq0G6ct5!Z9kq3w6f3V*6VJNT3M1=cS19*|!$IpyT{i zkC}M~B^{%Fr^#Hh+O>DHhvik(p*YNP_W=E!1?O^E-V+88lU7LT1h#>skE?7&XTlMv zGTfs5D9B7}z&?BcK&x`WYx}t^M3~WY5yJ_THpkrJWnQ%bS#5KP z^fOPwue5ZtR3h&xGxTq+K;uN)ab{8m56n_rhqwFx(2Omi>#SzwvOYRT(~iu8n9-*u z2fz{pU@ti^cG}ViqDk0Wc$*PNa)7=BzaUy9!aQX3VKGh}T?0(UsJwL38OF@X9cpDE_^LEBv4b`AO*&d`X#JI-oUE=pyt z+s7dPTCz>-iY>G$IY#?H69u<-01iIT21*8~n0aUWERdRzD_!8gxS&uMx)(-?HYY$2 z?35K2dv3ZR4!h7C-X3N@Q&Wk9_bx%!Qvl3|o18iIEc9pe*E6N&O4!bCz*3>rH)4;@4}IrU%m6(27W$m~8eD87kC{hi5{$xKR4s;ZeEFf>rSWH>V($R2W| z)qqaE{cI_Z%eoaBkH*<+uG#DcwaVpj64OSWkqz3&Tc0 zpdi&gv6h&csW*=u5fi8$fcz;9yeFt|`jab>i<2^O%oXUkVRb~0@X(Rf13=Bj zTZ9kq+7bwasay)tr9g5wK7QdamOCWnuRBgT1frQcuKKfSQ))vY870)5lfXRKZ)G?V zQ~TPky{RY}V&&BY^ks2E^?RX?@PJ1Oq;+5lg!=)OK0y~dM5I-xEt2RAVC^&dT7>+_ z=xbi3n@d1vwhyvpF>2)z5o5j0Vt6z6B(>*EE6yP${IrDTjF~9R0`b&BO7P3=f(=a4bOZy#2#gB9M(f!a5A~G4Hx~<2lgZ&{6)1 zgmq#sasOD$Mv@I^F*-BFFOR{nSy5nR{bX{NZe zTv6%`0DO;5!qk8`PJm8NxB9(Cb2rw{h20fhp4u4yooFg$y=cD5(>{ErAm%z#hbxN} z3j<4wCv~P)4kshz#cDnC1S`5$2akRPg4MEb98ybk zaM=H*TD=O@l8@iP$7wyM-|MvEP$sU%v)%l~#fap?SZhwXLm01Ge_9E_&{STt-}a6ZTC z$D|*AooS)85H{x}+_U@3qCsO3IKn=W^7h_j?-l6A1wa#58RCo{dY_3VV9e4>tT%O`c@Csrk}HeXK*E(>ud&%Bqrqj zIBY7#c#qlzP536y3#8~=W`ocLlQY&EG>W4A6SMI&-Z3JGmXQpj3vWMlug7T-yVlnt zKjW~nxFq;AkIO#Cnnz;(tG~DR*~FBbNq|ftT}9exb+SL2JGq2)X&Bb^8ub|6LOzFSOe4@Wv?dh;_&jGORgD|i!VizNOEoLVMTDDmI>yy|q8~;{$EPmhM1gWV+6CeR+8ikiaDr0QWX=RvL=>KyxAE zp9_dSG$T<|Yls3qqd00gB)_e4S5HaLcdQdExXtSuevU3m%>IZ zngd2x{y{Tmo0$=Lw0bX01=Z}Fu_*yG=h*ua*fytjzbn6XLZ)#}Ej6tEF5hhr}RwABX z%k3xtDg4kGgJt1s zfSH_iOmKGNaY+pTvPMbR@xAcrKVvAK7QDnRCDy|tZAG%^yl~dmK*mwK&8LH$d(>nn zg}1$!Jg5ZI!ebpI9y)qwLj#D9Va7@OMGwRF(tad5b+7d6Q(Nu=68mKy;q5CdJ>@ll zi~_O~`g1GZkz84GfwVjWhYulClybR_LQUk;~cWpivO7F7R#V|!k3a_yvx8K0H6E=_*|7o4adG%Pr zTYH-iC_x_ycv_}N?9vEv#xRBKBfvV0+8E#7_xq0mX}jVauAyr3m(U5`8^tFCzrIsn z6DNWW8-LU)FnbkCFl#a3^R`UN$NCOqZQ$?+*){&P_7XMwT{K;OlR1&p%6Zq}r1Jr}zb#*}ye6G+JX5`o>fbxlG0^zZbow+NYNP2NQpinI(2cXf8Qti#2@` zaG~pXD!_$<`fJ4$SkS-iHlj`GcI#r5;aDJPV#Ql102#~NQPu>rHCZ_0U$-e~ozuZ< zK&p%;o28tC{88m<1T5E1xB;UNO1M64HW-$SkAzhXgKHDhot;Amk&5XBqVkJv$I%1845 zSZ*lX?TE*eXW<)0a7Q*-tz)b|4pBrqx9>KMB~7bGbyd`-K5ZV5_F1d-JH_!C6o$A# zdD#up=UH6HXx!)zKN~_ilyu?=>aJV6(8LQBm@Ic=JQC^k(k4w&h1a!g4%*9K8fZIq zc!e0K=r}`+9T4tDTa%@aT6 zxt_ARj$R^jqecCE_;>86MBUV#hGT;N7&w+95VHwF7N=OUG3h+|-EM>^^Jbcfqzih| z;fs&IU9!glJYrpaCpPs5!8O<*Jh+LH(X}q&mfj@^dW5kV2dh%Mi#I|JE+{`LnY#N5WF@U8PI>a$6d+ESD_1$N z)4IcKZz`E=&%Fz-qA-4J40m_&tjE-^i4_ndQB>F#+kYTAyP)bN;lsqeBY7f2y-U18 zqcQ#5ghT!Rm>_>F`06Jk{3QLrKSzxnW1$)7CCgRyOFwfe_z1FBjDkk-2YCrIKi11k znkZtf1an?v4EJk##D?2_w^fmc`+o$D$W~U@3#_`-WC4^c!cs=oO@?BsADL19{5AvE za~F8Hf1wzFBTG+43@}fsd*1tHvvEtOfio**F^_%%^NK{_lBpIFLgpCmm(#&~gAvr& zguZ~{Vmx)q%vED)I&QEa4?-G_x{?3AzakveBB@as^Go6py{`-^G4$u92I?g^xjZXkf<=KoMH1q|XJ<`PQY zZ5StpI}}01`fIWtSlSu-E(nfp{}L3y7d(x%jgk<=G2Q?*N8zd=x<^h`{jS1J-mFs5 z&%D-8tR=b!&NQ#O^$6^o|7&o>r`*@dkJF;;il7}aJy!w1HdYhSf z50dHW=`flw=7}1UQZ>Vb^Tz^pyH^sLaUlRC2^f7IsdY$s44EaHe)jLp7z@VHC?QNK$|>9W&#ZN+wuc? z4Nm7QSF+$rMcZzzXY`)HLA*hV#nh>pjdMLUQvA%@>2{s~)Z7AJtN141kpe+7o{QqY z7-+urH~kN}QY%kN0U=1U*XjIX+H_hNqU;i^Nc7fCP&}svkzLBxsL$Qr5j=MY$u&=J z?ERH=sizCf;(X1bmm3C90usX?7O%r(LKQtygY+z6%Ze$3)cyl=i}gl7n7Hy!H~T?I zS03j$uE&2^;ku)%l3t1!++DO_YE(BXXbdpZO&b4>f?Dlrx2AhI%F%i4u=M8!Rvi|9 zRqU4`T(+luSA!*I*tc8Zf+Ty$Z{yl4BjF9u0^7wxeoe99NV%-r-&LS^rc?F!^~;bb z4{;A~G;YeOfTU4ae2hgt3v)YHl$s~*O~^XzISg@JNW|BWh#W)J#ML;r=#jnD8G78v zP%^c*Y4T1qRv~C-7x){vdZae8Yiz>67n`8`*tDB=6=dtpSo9laWv*k(?;*Iub2H*# zk1%cImOuK#0w@aWw4U{P@Spg#_hRO%^*gG?<|?D6$p?w}E1ylK&W&DpJx=Uejgrp7 zP|}&j)9}L@AlXrSrrEbAJETOVUTEc$ajtv$QIJ@(eQ#2laD#qQ*$nQdhT3lNxx7z^ z9ywd)A$nD9O3gXMGy)KFSl-`jB>K8zv7Rm}oW8!ug^Vxe7vA*A-3Ka_-GX406mn)u z&Ahl~XO4|(T1tD-&rU1iaZEE5aj|+7dBJ5z$uV~>ZZc&@b`kp_G`fwLh9u(8NpUqG zf+(D6&?OWNq2lmiLgor$yMkbA=d^68_RiNg)IZNXb|N&lHJUZ;x*iN3)L?N|W0=7` zWkLaSWl*2Wa+j)4Q39JjQm}tay`Ep!;e9ir<=wK;($w=kZ<^W|nBaFK!#Cb^%&X zKLa894B^#1jAHd$Mr<=fxgAqv$<(y;)m)JE@x7CNDQ6EzdQjiMhs-DwZ&Ma_y$_6J`?)scqQY`{?%x9c&&xW z4@xg_LfCABQvG(e{7>}odeP|R@{dRk?xytNeZt&49p#0>5M25sQCWV3_2LlfLp9mq%&?Qjat?ue3np<(`WzUnzsMOwZ<>S>?09TO{_cM z`Bi}LXu@W8>$fQ&B+;DO+$bZ+w#kKfp0Av01Ei42dgfq3AQMGNuVIdc9}P9e{uZg` zrNBYmy|~HI#ati`dRUFzQV>_Up>cDCye3O}+s-AQ<~>xo#w<|YXsT2u_dyP#r|K9^ zkOqjqUVZjAu-)b#TCUV280Z_0$k)^TC=Pp28$UaMimu(}PP~uAXj$EIh-nf*aP9*t zM}DoqO8J(sPczCW6*B$K>$1NQB)vFy6MF)}A31r0_W9;;z1+5~Qhcebd%T{I^mo!3 zUPPXCQ}Gz&P_6<3?O}u;CwPmwIlqOdE?QM>=fja17#Ssp_Ba!ZHM>-lV`)xpE3Olq z`>RP@NcCzI$LauKH_c)!{F0l-%~C53Bk-7)IMbm z&Xr>4ZDVVGpHPPOJ%tvpkqqkNU0ykLJxLi1%t#s-45JbTz$Vvahl{)u+Nye!mC6J< zzf&X`>L+aHA0{;4b%8t_bmM>u59J`3I%aUc@&RMs544gU5oQlG9fP>C`=UBVb6F+ZYA1 z92CF5n?a(-e0VV=GVOfj%NW^m%FMjEaga+PqAQGN7X@n4P| zvK$@}`oD>CcoB^K-~UI70|XJR(*}V-zO}i(LtH^P|2Wj(z?f9t%H4NMO@Rk@^ ztkr4aI4DZ2_A-H+F{AjW!2czvVb58_0xL>~QKeM(S?0Z7exyt9`mQF-9)ZI2C0ga1sd>DXd_T}R@^^s{wQu4KriuVBk>#uxcEiH` zb+p<29b$Jwkk|ktyydxI&Eaz^G|E+&xc4IrcaW6(G=q;aa?2l@`XMnWpybMix)dT= z_z?wp^c(MI3lGM(9XDau(z}(dfp-2bqQRH^qxMBImHUBJ0MBp|77)qM@wrO8#ouU1 zG-o33B4(_$&)pZCKoH!Ut8+#X$NqdxBRQ>9PWR&jjq_7|A8|~-oIV7yZ;v35%OR_} z>l1_!%{sR2`?wBw&3tWW28L;YSRfCw;KM5bJ9;p9GvCDZf9;)O4vQaW?+G>Mudxgu zKZw{B7hXm6*X4)}v@UImk4|Lm|EfyDG&b5ttY^Y>0AW9ZMV75+OT`InBd`m)m}fgA zfGz@?bMh@)$@ind!AdhRM(ukF!OtmI+Cdywrn7Sqj+qs=J^J--#Svwl<)*$!ScOs; zcK!DhhQ@7i2af3z*$Kusw`fzXi$Y{cg#1(qLS zmZuu!gW~t#<0fm2NxYKuXZr#Zlq0FAP%cL}4y*!53paSbne{zT+YF6C;L+$9Ua*G(oE~>qEs#I@VllE?ljbKuNP# zZ2fd~=MZUAb5>KxPKTh*ok{Ix&oQq?ML;$C;t#U^=CE%hm6!ZqNJPl{X>kDmMAj37 zVoXs0X_sjQFYT$jQ-mF)ybI6}<-ajy@FQ-u0cr_?6E`e*F}mK*28I1)mn(TAW8&*&9TS~inHCmRO!|GX)OSRwHPhcZaN+9u)K?tWwddR)gB~LoCE1aD05TV^Q?V~ zc)nXCC?33 zRpZ?5EA0OL?=*;o16GMKQntjD$vcWY0;L3{3)k^Ch<<(CE?Lh>G%jPg3(#~dhb%Ua z)V`F&7sv(&an>yJYLnE|{uXmA)4W@uZi2K5(D0P=Crlb*C#>&thQW(0eD!bJ!s#bq zhWH7nG*-P~XnQ5vb0aab{e31TM&c=O9bM0LMrc1GNn{1>Ce1E);hXPKPzTQsv+E0~ zeATPe4^2v7^@uKpf!29CRUws!)BGBGcwTP$252Wxb&q;UtvY{6Bl+D(#DO6603*p! zK>Bz@BGgLN*?IgYqB(aoCtI>5c>b?9|EQSNZ(;VKLpj*aCNOYhCi>KGzY=FEY^Jse z&qh`Iy+)xI^@hGXHBHai8Ylb;)4T6gJ**c{Tw`WDw^%ucCB5?}NrXM$6Y@uVpjA3q z|5Jy%)t){7pJEjRm5@gJ)WeLKehTSMD@wKaB()l#T@!27)>9qXk@~&WB=E$BdRdfq zof_JT<$Q!ogDSP-@>IjgS4JBT6xj!UYJ=<&wZtT`2f6nVUBF^THsIcMfJ5P_=Dr?( zu*94w}bqF{`l-25?SsTD2H(Y!K1vx$3P;k7G zg`oq6+LDjoLWIlceq-R^s+@CL>KIG_KFwk-k!qviRF7L~DB@oHbRLw6XI-V15#MTd zb7sdgCXrTPGJtqqI8=!k-Wx}MNG(pP#3q9V`;_&YlqPKcp0I)l2zc;;&d$b|cFN0m z`VrCaEFd%>w~V)i3Eq}2{ll|$&dgkuaGrr!a1>h(O%X)yvM`y=Pt>=QudQ+j5{djm zxes`Mkdy?_xq6Ajx^kkJktN&e}1^E*~&C`o%nNM(uq=r+l4M z_BDvSueQY}?b97Ee_h}Yl=gg6?Io!RJI@j(dUhVmfqgkD0M_%e=}v7= zn1Mf9Ql}>`EW|A|++KQM(dqH||7T``O?@_sbWp${`G{g?6*(mNPj7Kr!f%(pOG|+C zvHQwa67sM_z78-U>V?hp6iofBii|ywRSucT<0uMmA7eh?)j|#`_8OI_7p8$ zxKcRxEEEpKy#hE|5l3j7)iatwYBCChcCYRB__A_!dGTL_zsHXf_Rhp zebezK)C)wc+=Q#c#s=lb*}BO@@9_`I;e7|CVlj8-BtY=_C+UPLzNfJL7kTX_Nj&P^ zlG^ae@iOwCUZJ&xZHGUCaD&ch#x@rC5(be6z6!R3LQXR6We`wC+?^6lHKZh9 z>O!hjQx+G_pJJr??0N&MH5a}ju?rqj5m><2lbosM^SkhNXFx)K8wKhtVBZv|bp|Bo z5djmZRrc$y4+W0t{KGpU3k zc^tFD(*_P`{tofd&Bw3x0`dvDwJ4ztV{-nekhvB(;0r=nC$H4qAQFNCEHWPk4CKg8 zg$q1)XgeI$MZb%L^N@~(SS~m|l_z8OqExWE3m=F@aBeJ9VjOJG&cCE;HUYYltyX`v zSw>e+$F?-eTq)zHue3809vnR9$lfL z?Ou#OTCr-`az6+zfN&{Jg=9lR66MG4IB2sYVfT&T_P?6Aj`-{N9e-1!&aJl-(6yYArV!~DYgN{ubb^fp>Yv`F z@EqT&{(;)dOn)ifpW+JpQ|iaxJQc_Afd#6#2amZlGU`wq8UMu=ln9A^j+@tk=-5oY zER=((j=8u`WpmPnxb6cM*aNihV3qw`&R{dH$6caj@(dpnod|j_Be9VB*uaf{Xa^{` z#t>qQn9A0seiM^2p5Hf zDiNloU~k|kMrG8+XCFO;NeWAyzn=XrY5#dMOL32pc$qdishSG^*;Q&EXz`m^l(OM4 z9!Ox&J{zXO<&PobkPB4=di*;+X9!at@G8tCu=A?j612su&XYk@@8%0L@UhN_q(`qd7b{Yx04&Q_4>CCpFhl@VJ`ug=72Y5wbHqO8=ki~#LZ}Cc zvt;&ihf8+tBmJ9U4olZIFYQ+v0G_c-v((HQW}r7GOBz)|=!9Pe!#|>Ud2J_Jta$Fm z2n+o9oCy??Qx)V@>Ug*Mi!tnfEE^aBy|sldjTnjL$)CBW2V9}?>4F!)j-1>AdJ^J` zsAX?YB2hJZN+kEUzU!h*X# zrxR_b`df+QaqSQyLIQ*Z1g$lY=Wxrk(BbI!QlkHQdw}86pK)=JAS1@$~U*y+$|g$)}-cMo3$TDl8${BwE!L)WX6u$pc~nwJ1b&&Sc9C zWa{39ZP*%b6x2?_9-m^65A9^Q5FS1v919FSzye;#7|gkgMBWapA@C><@C#FXl{i?a z@5W4{gxOyf)vPRWRdO&e4T#^1R@Fc(9SQ(8V!!!&*{^4A07>~+WvrLs%#p0B$=TQ4 zV7z73P`+`(fWpPvaI#=G>ihKvaS&NQJf?pbDe0fo1Wd1}fq8d72t2J(>Vw~FHLU7( zpMd-uKh;aJTqPtPYgW5t7JE)n$NpZ`hfCS{`zysFWf$|hCd~4 zAj4V7040p3QiAe;DTKRV^ziSr6_T`@>Bxlsk~I5g?2lHS=;V<(jDWShPo*lCO>M?8 zF}_xQ(ec!((KpkZ1N?GEY0WZ|Y8de+-cckyKI_X*f$l(E|Y6;0enCG-~=xk5$%F#I!j%!`*K6pW9!CtPiwfXqR#hFgw z6(|>!!TCluq$^>C_K_`>Vbj_~gig|4h^rrR-z;7}qtgWOa6&d@^!Tn@9O=kDqjfze z#KtDKW8#PM=Z%IfH>!&QLML&Et&Ht zN_mGXEnD3N;s0DJaw>L`W-t3Gphz=erloFc8y7GJpf$T?lQ=7P(Aw+OjD_xk+gIRs zgQ)i#Nvsg;d3guC7sfU`XwO+`*%YFDKQVUuHxi+j3V*_e6oyzTHoVCN?G2%B#2AeT z#beX<)31wVKqZfDJot}@f)|8_`jQde!A)GZzh>6;M^uxI_u{9-(qVB%g>jRn=OWkl zD@4-cL+%%*UTzE~P1XBI1z<}6*ysEP>Gv$nA3lMg1zYiA8G62(^?k@|epsRU3|jm} zPP8PjZjABWawsBRMnBGDtNCvw4~oTU1%2F-XHt<&yg8tfbcoLQO-u&0z8VK&Z+w5t zk0;vlZqV<6JrUdK1zC_|lr#q_Mh4CNVQayoHs{w%O;@YVUT*4AB9BEB0IPX8PVrp7 zj^Nvnf)ohj4Ljl6Fyg13KKa9fG?Z=x`k>3OwoD%S|Aw8cL%P@LNAMnaZ^Q8f`m=9# zypjCGtD`2$B=5k;#8tIC`QQHfP9e0;38lUxYx-Wd!e=EEup)v9AhiUo6gj&YM8BG% zYD(m$uoTz$SlseCy7(ChJ@2eDk#qcanNiwjEWPl#ZN+=mKpsDPOM5W zO3)Tdh3?HEYIXP!Kou;MuQHckG>~n5zFR6vWaFL(S=fP;j%>?OAc`|#0NCLId2&*k zTfwGof5tnM(+6_GIK5YFYuIGk&M3G6iRpgPDvQ~XATG8PcyxZoqYOQiSLoNiWHGq- zUdq^s>A-ndqUOgVO<*lJ{1P7i+(je83}IYXN}#j_O5ga8r82qFnhA3sc}ut2V;f~g z{VhYI$mEHj#aCcA6aFaLF@!;`i@x0n6_9cq^qj;>2Tohe=Ll?j1?&+CkW_C4IuCMZxADF4&jvZqm0@$9P38TAq}oXYx1JCrGNJY#6ISZoD?v; zg|~sW&Etfu31Lp+>I+LbDLwf$)orkTY?rg-;XiGo@o46Sty%H^C6K@mx_~dj84sx@ z1MSuiC|Ki=uz>BZGIHQ8ggHWvYS!mx92$K6hs_&V^x1^BTt=DK4HJm8M9Q8VfN;L zHfEA|QKh^QkzGVt^Jn|DWJAMD;Ok<4`{|DIljD-#F;+1oxIx${&Xzf-z)s+oo@pPa>l1CLSSxyK>lQIBnxT+XhA%3Rzd%r zV1gljPZ$129)Y|zZIs1VGfzo<&|aiTccZ*-v4>PMe;dE^ejrp9+_AH8LR(9}Zv*~o z1G7JbzYnApz)BkufZyqo-3J+M zF(9zf2M48lYs{njcAqCO@B3rEZ5!i;!k^s=yT8N`h;w}!^xGlkxlFuJ!Zi*caEVar zCn~TN=6j~IY86LM!IPhcyXR&xA6I_O$LokVi~k9nyTW_n|D){9i{^NZe9L(o#*4l&J#M4@@xeT~~0U7j&cZ27x zh3>Bo~F>Xin}`Ur!_<(VYCcX6G=-;5HnbLItD+V zI-pXD_^FW+AXH)ku`_@&qq?&%LKigVk#(VsnAeS&r}$3Jqx{v*DyQxS_E0mQ8k+Q@ zB;V~71L%AMCZUUPi4&@J{W1mTp+7K*u zQ?%?Dl|#YGs4s`J%pQM-WzTrLUMG|tl}t57O$*0F zuAuuP(b~(g5=LLXCk=h_cv*hB-h(6IN-6e7P9mh$hn|Tc5tmFAd4w-checP3x<6z=6j+IRLqD6{ z>WYUDF@b08Z0IOmEprq@;FYFAq27BUO(gZ9mKT2+x3T|yzSHUK2w^ku-;q!j_(A*@ z#2$8-DS(O&^L^oey(p9n0Y0T#apRwWWclHnlUB3A-!DOl1VgT2mLT zY#n7e^`sIMKkfFMXPOg3HhzoDI8m~YgxLv6pu1HHvEeARR~%NWxJcv|c5})}d1@}r zl?aB0C7UcZp&3-iD*t~VDX-HiRP(1MnXU_BV}bW9V%_XD(v_HXI2 zv+XoO^2k36wtzyFq%ihxl)y9A2PJeoiGx&Z$Wph{0GuUk9_HWKyJ{oI3ZTn7%k7ju zpD+WZPE%^N-%X>@bqjN*|BVnpSiBb{_pU?g?GJo!{8{7Nx8J^sADrV#fuVmgLOFA% zzqhgcXdTZK31lxcp_La`;+6{+s^g%V6qSd!CC#J*4{2a98+MrDl-zAt`>$7Qo z>BpRVR@fyr|8nu%UR2^St%a?%d=zE!WK+wMw>`qY3hYNvF$%aKzRD{wJZnTz0kcEX zt+=6~I`9R}1$5FKfL1&6*r0uh?_+?`LchUi&$wY#-{dYZ)&tSi2NrgY;zJSE@kcE8 zqV<0S1=L=UJ`yca3mgTpGBUXtNwzs=aNsckoM_*|BJ#{ubisc7(UHE?qXMn)2pxh% zvtGLVzj;i^p>P82R9UfS7kE92q!az&QmSCzE-IM(Zn^r5Ah|en~{M6}!Sk(=!X5Y| zYv_QEmeNMU3PkE1`0fC%@2Ne>u;oI1kqN-1rEKb zSz|^u07ytuD6r`eQve=jxoy zZpsp}$IgBNs@?0=T;VOh9|1+$alU(;$=U%8j zUyGFYK=2@B?P%N51)lnL=X5N+DsY-+bBQXgsez!lf3I`)bQd~D#jQeY;L^#^{skKT zQR#{cMjvDv+E)%?GaG(z{YzE!G&-T(C}6xo6V&r!dc(DQx%M7$5EFBg$#roTAbr?s zrQ}G$!7}3IDP$6YC??hL)A7Il-Y=iTmEjm3r3mM4Ffmx}{`oE32MxG^$ZKVT$+QRJ zvRqpIKq7aUkTn55x2Av<;N7k+`U($?P?CNSVm(6-dFD`-6Oi<3LNGauCX%6A<{r$- z+Lo7)w3v+Kd6MY6fWsrxYP4ep8YrT`QUcR!aLN~Oz#!FZ>nl)Ghj!ayRHvt|c<@8k z+LEX1lgxf&cLeM+y1LtT+uXz|W8_+z{{XVPTJwsztCY8{bXLB{HDzLaVZt57p|joV zz`CiiW5~uuZg>XF>~%At4Dt5w3Z|I_^m|bGF86IeCvq2YNva{`lcNj~}vIXY=#5H_(|9k1L ztMprhqO?~o0!r(+`UaR6<+d|(> z9naVXUgNfaf7MQ}NraFjg_wcVyI^~EEG))OKB$TH2RN$9u2K&}+q$ZIq$_$3h!>)FR+qn;Lm8F(7ik_h9^sbt9(3Ats4(`*3j&G`&&j ziW#z*sUjC08f)y{4wREY6_Nx>L(CvDb0_B3&&u2bG6>>K!Dh@~SOLhD zrO|E0wkDnheVw<%y}!n1p{I9YAf9f9#4uEv@UCw|%S$Gn<7&9WNdGCM!PY?< zBslv;88;LiN5JW-ksk7{Q9Ak(ujsjBR-SugQF|XDw=+k>oN;`U?(F5p5ccTMOWyT| z2-6TUUl}nGTy^L$z+%_T{zALa4Ms$bCDeB~7sSE8gH~q^p(4;-WBixd3cm*VJU2*W zT?d(|xfSd;wwN(`lJZ&fiKOJfm)^pV_&ewEGt12Val~y`VDgBCo&oP5K%c)4e*f>r zeb{g2H;_~CBQ}TFuY=w6*}5d-&SKGgzTXeBTjs8~oP~PrIYq=6B{39BbeoZP1~Xc# zY*7ZlfEfE~ZnB0sNq)cZH^Z$H*-FL5FH6<}iQ&7aaV?}WYZJ^t(t$Q2Lvs>htHpua zSx5U{*M6u~Pj29XC0SD49C=)q=+3@6zs7DVdGQAmXF@t>z{&h7=)tsYy2S9ml*_`r zY3X(9^9@N-;!AlzFq%}aXGzpi~j zGK}~Dao8odPBIZ_#^$hsV8wM5|h%KU(!~D?Z8QPo0m0Z#&H07$}~q z3doJGcKRl)fKVQwxVtg3+DP#TwPR%N?Ud{O{rs+s4wIpHlmKN%g2eJU7J^}4Qa0=n zfvpp|Xi|${_TVmrx}MlOq?hzX!g()fF#7_OWvNnA9-?IEnlD>kF%0Vjdmaa>$fdnP zI>6wuA&SYHkB1hax)4BzxtB!chL&kApD8t=lREIAzf@prpSn%Pq-%{g8 zg3rUDjwXjs>W4iwPz24&xY*(2iv}VB1q98Uk=H!t-2tz_peXBaY%9vOfezJg@Aswt zZ)F8|^BcUi9D?JHdh$Tui&)mgD8+`kUvq3SvBJ%5kO+!zgPUE2U9yhaB*tB$JT?dj z`!|rK84U>CSr7{XN&;IJyg5IPF;+;2TpVA-t4FLj_)4|lZQ??yEc>htJLCQN2AkcI zr$$IUeFY1;Rl|6fN56+Nczw_OMVdu!dhKa6Fo<^Eh{&mCbIel-d-eD>gfSP$@dwi@ zYP>OXK?Bn6f=`P4c^2BteYKFJva!Gi=q)0k6lI^hVDmoLxo-}4vGGii5l{L4kvG~K zCQENeYHR8H=228L?8IcHa+S7cTfj@XT}6)Ya%VN~HP-8uLa} zjizGW2)GlU7>W2V*{8f44NnLqYNE%RGs`|x44drV8$5K0*Kj4|jCWe$Ty`H5aN-Az zPYRU>OaIhkvqlnecgtNp+`0|oSoP9&Bww$F@SCY;>`icS)8#B?p}cKNM=JSHb2~7q{BFW_HKC2`tL| z#E>PusWuq#U-uBhoAGQ?`;{}p)5~lx7x>q1BTJY2>v#wn(*}*h=EnVrQ<+G~z?Dr| znwnD(8!jz(&>!*bI|*+Q$ENZJ>h6WR-HCm1j*55g{;<`KGxM?I86>%L)iQjyOl3aB zD6o&>t)RvIAbH`2kZl$%pT2ySL_OHS6AxpykdjUHCzE5^Krd z^^-&K4jICI1=~m`JZ-SxU{BYu_+28#d3aQ{ea7l*>Bq+M;#kA=4{KD#recEL^GDeB z!>7z}+XhXdh=DUfWw!$t5smjTNzwR*%TM@BtyuAsPzM4`QnPoJtsT*&$m|H_n47t$fqF`AUz6|5&$=P$e_(Iag*T?X`_e9o8 zF?{0&m=DOgbDw0INZ4q7BC$bwx&oGa_@t)g`|xbrn8BLGjJP^~Tvp{j~vK>ci)6jBzAB4JB%-IrK#ejW$k-0X z{F=mOj=G)TgXK=oD~~bdzO{wB&(`)Z*kdgL66pG#s|P&(reS#>!FIzto1?Zb1_iEq zWnSa52kjiO(>j?WlHC#$VNGP(X-?PB&`a)9m9xf*3YdE|=0tw9@Ks=P3~e1r`^1p( zDbga=gc*>y`EPaya~E=#O-??{+d658#a#3G17qqByBajd0>MOk zP)1q!eTvGE!si`_#+5s$V>D*VRlI$lT?}z`CbYD1!>z|Ua!a0nxRtAB#;w=KPkL z4Bb_*21)TQF`l*Vxx%e+ixIXsH z9x<6Rm)Cn96cdfhS_4j!ob_)Eik}rUR+vhk#AS3>X1x|Hb9&bg@>A#0riI=`0aJFY zD}YbMQJwzo+>00UI9mHoS<#f{z4M+XLuRldl*m;L1;0*!)BR$I1@AE7a6Gf?Cq_CIIOO%(i_d5f$@gmdA4~$i^qy7xdcK-XKzxhk8v&nf+*p!X};U1UcxOg`N#xs zH;q(*1TJbZ%gler4ETOLhB7>-&m6%uO)kU<-B^uMhxOKQ=}vn7w^W;@y;MR5+eN$i z(eI+|%qZFSNPQ+<_qt+o5l?N1@DNJ z#JHjN^j`HBrDfvM6do^bD~>Zwh=sJi3A2Ox#y^o>ewN-#avpg(RPIB%KEJ|ZCvn?Z zEp|3NUam>$gg=Tlbvil{^#@Zinl441sFM0|Fi57o-7-3@e>G$P)utg}%i4MNpO0%m zK2DwAsNJRGPX@ZKmSQR)r zw&tqOnn{&f{Y;I{z3U(+FvH12G~6hZ$FpPZa%Uz*+iS5`8LeOOrGl5>QOEk}&YSJMG@Pc#{9ePuONcQ$*!MU%d zZzP{L&8{Im8<|bB`-$YtwA)RJh?Y962^;Q+<`5?>4*qKFGw957Ht;VLQ@1Pk-6^0+ zx<;F-VLS3W-9|WEIIL)Qa7PRI^;r`O&f3oJ?*2+`GE>Gi9pj4}=9_n}O$$`?^cdnd z76msBNnu&+z5-fbP4QZ;^NB=rjhPs88u#8wYQLa~sh}*!`OA%Vnx0MM(g$?y^gJC$ z+Iyy9Ub729?(1{)w9uH+tT*xUivkI?w>M6)hWiGmXBMsSHX2GI@7Av>KINWOgIz|d zeHUI;&}G%;Dns`rtto$6vs@9Qu6M0S>ADhp0rI%onLlb)K!NyF$G_{2?rbQ0jVVtj z<=OTLAD{iNRX_E2XVv(p*LsQ#uR<>Tz2H+2InPoq!2yOs`rHSI_*Ut1-j zGmHY>Xge;cLs4{LI}PXKR!a1~Om27=zRd2Q$*Ci^i|3?%>$9s-+^A5?Fbm+6C}W4= z%Dydg+|`4`o<7grg!?N(@;N?Hc5KU_X{NW~0*FZ==FMa{!QF9_vV+ZwOX+A&wfG4$ zpa)L+&B9b-QbW#tO@@Eh`&=ol;u=NFdW$!o|@XzpA_BW>}}u%OO4#!Cp*!}Tzdp^G=8rA zz2y;`#t->R%9Mf?#!P<<(-!a1^`@PU?238U!(NPi6h`Mt%I(C>4OIStTgu1|cHbHM zq<;}#AmbM0uI;R6$r_x=e~R(>SkC1F_-30%=@jtm|DaIa=GMX-uG;NOnns7_yD=&g zb#DOx`;+K56eWmG8!YuQhz{*PA5+}jyYwS^mG6%+0e7{%#>`EkT%U(JsRl{hGBkSk zsPo1r!m#A8b^^}VuSV_zx=O2)$nn_N$&{w>G3Pt$^1??I%|9(ZOOLvYp7qOeYbnV1 zHvH8%mY;f}PO4Xu34g246o{S4=_nsGc6a(%jPKFSq$dW2N?cbPbDmP`P;M1%%#OeMpOjK}21ss>A(w!8Ij^@2( z_<+-#Q~jd90oNb?xnba&moy?E)@kn2BMAk@l)boZM6k?>k*5_K*#@L!l;m75-bXMJ#cJ-jyv62Pnw3j@yE6 z_$MR~&)(c-A|KO#m4GcAnIPM|YGu*K*TBIjcGy~w?yozL^*%EB3s?1l=BM?kHFkV{ zJ*&FBwVD^yzlL#sNA@Q>eDXOMp2I7AYy06yOp@BJ3vaVC0=Zbu`3`<+JOvTY5LkWx zX!bXy78EJfw_aw;W+m=W+k`r2m3H*>-Jx3Zl+_{}lg>Yb&;-lX33J@5n!4~zxli5} zn{szn=5FeYXJIxnJq_bXJN@UHk<0x|Bdj-J?Q;m<(P*On=Ym6%2ipwB9-2}L2fy#z zVIQ0hU6S9<`Xyzw1=;Ewq}kYEjoZWUS)UQl%`8?5=}FI6aeMnAEjQ0e8F7Y8pESs4 zRE3Wx%L!8p;uxOAv`2qQ;bm5$(@*Kd^#xus@!XlqHI%BJf<$vpeN;0?0~wm(s}mPT z-^3TNCkwM8qe)ZmhDxhMH~a(#-lNM@kF#_ZzYd8=TKs|F+5Kg`|3+RMq=loBO8~W!igFMj5IUomR zk8^(q#_qlRKLZqUO|jEh??7aFQU68E$-=O@scA| zpW2S!AEkA)AdivpedOps{SM?8?rV(lClV&RtTdO-avtXP^jH3H*UcS>pW{CL8y9>; zbE)pia(d_#4=r%pQ?Y2Lu{H9A^YEIlHm!MCXKg$C@KU|@sJfnEr zCJ{z$m;6)h1&QYxmR#TUs6g9tWWu8n#)($mBPwR+1a%+Ypcys|zur3oGr*KpOk*P8 z#Nbf@@@X|4#WgW)gexb;!_Z4~_j5^H0}zNP+{%#W)2MGIf#T_`;L6}i1`Jg~31 zOKzQAVvMuMzzZ%d8d^NoYUn_64xcIv!ZzD%q?zOzS!Pm=0G8BHp7X_ zrq<{#r-c1OE{f_pTmxGdhUbfcFqX^D`QJwW*vDP3-{{FDFh1LJOb9E|S0_{`ZkWBi zZ*R%YSf{=rcx*~>Rre_Ou&N|uOtrCc`p-so_oZydwy{X3bWU5QeqB1iZ2ZFGte0uZ zRZFuznrH-n=2;liJnTnOeY`lgY=~*?7nFMD7hMth;j^92H1{f z8^4ID8fFy`NShiebtC$59%1chN)99G9)hV!F%Rvs3R6VU{+aRy8O`50Mg5KEPfMdx znJX1{G54Y= zv@7S`F;K)1o3hd6#tw^%&$4Ui4uPlluZ`*R*QR3b&BX2G&5@GUTzx>@LAp~PHBtPQ z^yc$vvVqBM#&Ja<`S_0-M^}Tn6hTh8#?uzVErPl7wIuUeAXDr=FksU{i5Fqp>OGI`3Cc9HlTj;1m+L#E-a zZPx1u9rsUmom{>ylFCH@wW8B|L^C=$bmY|=*GNsmMuIitjZ3%j*>zGnnRslqAAiM; z!f~BUjj8GD{jq(Lm#;XAt1)Wjy7#@?!*DOkMGj9#>*7ftk1K#0pI|)++F^HT?@y#P z%=dw(vr`6wV@ypjF1uj~Dop=MS~t;0B<-@J?&FOweAU58(wyZ)qdK@1N;fyX4moc4-Aha8dQjG?I9p>lx>ZYWqCMrB(t?VTo16P0D9(TPkLXWzPaA z?bi0=1eoU<{cZ2B;Y&SD#`uSdEl1-Y<1hRp=d( zhqr$J^wlmAt9EvK-vgoSX+`A;JIa9Wy<0L3dt$>DCz{e_;tO^hItd>zQRjx{>9xvt zCd;SqD=KTV2ksXmBmV__Q*@86HsW!AH;{C*d|;(zf_eM;Qy8IJz5u$O$AtY$&>>;6I$T=2E}_T zo1IUdi(HJ0LsHkvqa~)qt?BNYJvQ;_TJuNEXBllk>8>z zj|Fb*=?t0rro<#obvQ^gnUWW`(_Txuh&e6lR$NTuo&@MeYrx@??s9mh-`+{GtdClF zejm^2;4tqNig3WN-0%(=mSJs-)7@{w9XQS|MNyq?y%`b%mx!;H9yuX))y^}oS6#Q9 z<=k!jOaGz(N4@<+oRq5Ml=3A1AOl5*$!U4TG}`{ARHBT9H0id`IuD|eSEDjkzCWE*6@9eX3nHgMPp)Rc}jd>122<2 z**7>wE#i5~)?C%O)37pqur$|p^}kSmZ$?<7Afo<2DC4U!vnyuBG!_)e04w2zy)>9m!YS)O3^0dMuh;Uf<*Ln+8!tr zHx-TE_A@%mrnL8u7K`<%h7;@h#=eN(s^UKVlvpJ56Ebd|k7$^JUV(+xi!B{1@t9a_ zQQE6j|0qlxC6iC-?4KH7Jco^3v3xPn6sf=X1XyNSO1X|UDZX#a2D3UhuYInUiV^)$ zdn}e7fzFF<*o|X>?<9^2ubA1`pKTt`Y4%t_)JeX@a=b%z$b%Z-^n9A)W1vV>zMtT; zY_Gy*@x~pg3CZhSBuH6w&m;e(e1oI zwA9+}8!eVDII+D?9xi}sbCvBFJJXzS(>xMRZCqOjy~?EdMnWwr=j3fzM$=e#5e;kGA{tu`|Mq)ENh z5VSm^i=$eIJvR=i=l`=dO-{ne&F>fXOoog_@s!D4@xGTzqJbaa!*-o7Dm_LMqo#L{ zs>~Tin1u@jFV->GYH9C~MdonSLidc)ecCu_4bmh2w{+k;_ZpW`u;VSIlS|pV71LY^ zman?~i|(t6P{hEQ&G<+WMy-Ubu)6d|zyzlmK`uw`jA&*d#6xLrv0i*@*{Xt)gc#90 za8V}S!eFVciv2tyH+Xa&9gmec-Ya>4C^+Fq#0DQ0mz9ST+mhiHxIP}R0c~?>7U#Do zJ_g6MJZ%{L!pBd@`hyRpazCMaTG_F0uM0e^swIu`jfOnT*|G^5l6`h>BrgW;1=zWK zx6q|+>ZTCAlZb41&F*9$-8Ij=IC|K3C7CyVNoNsmIGMvZqlHC;Fl(dK$%IL$*^Mr? zg{i)=(TiZ#qhrJ5&sPQ7lNvgt>t}xm6H(j4t8O=?uV!PtafG=`{zo= z-5BPq2bcOX*rp()LmWQzy87@b53XGmvpm+fkiGSDN=i7KG&(%*$?4k&j79kcuiiwb zE?cUApw=hq!dt5o$UAy;M`sP?9cVo6$ujacIMaN_G8Tq{kJs+3TnK}40(y-m2c_N0B7o?A-G3|LTwG*7C@fsr)V8q0-!ui2+EUx z@{=2z@Casdv(zz5IBM)-3;Lq{iD#r1kK-zap&$;$A}UNvCV~%@oWEjmHVGZm7Ok5N zE9sD-n3P1@*jFd*|5Upo3t<_W^m3fIt(LxiP0iK+TsY(rEA|LsRvC;b=DNL!ZT5_Dyso3qs}vLyUWgk!F6iM<^LjWpQ5j4 zjshHtl0$zIU;6)6i4>Mq-!8(7*wn>Yn{-?3bH_ca9TNB7JX_x(xinDlA!29zYY!L= zZjb2fFAw{mLoS^Y$TSsAI_;f4@NnUgclQc*2(C`>k*mRCvV>ORf~z4C3kDAMXZ2q9 zRT#HBtj;+#Y((Q<_e#g8CB130J9WabbRHZxn&-Okt)ffXeq^Z{A-d&FcXf5uAPad& z^GDp*#41L}S14M2YG;xq3S>0S3%(A1EzLjgOwzMrXCh?R4YK=)9`{)ibuj`3M*$l@ z^@X?NGc?&HX;$(_m`2t7`X>4Lr!LJlolgo~^$;(F1rQzJ2@0B%D^;%ye_z*Z`2>x{ z5>L+v`YR0-^hwX$D_Jqos(++!#Af*FeU5BTfi#m+mwzw=1j|Sa`+R(g>mB5*|s-SMxEz_ka-@2xs*{;W>n?Aw>ax#kWlid#J5+4X7m%e$C ztZogm&@JWOHs%w1Hz$TONXoh9ZCQ#{Exy}Xr;eI77$`lU2DkoXV27|zQv4QOWt@h# zIq7T7V#Q}xV=7HLHhKt5_6XxX7nLkUU{#gp2Lw7|Yu2xD1{q-jxt05wxd0vTBetqh z`6{vr27fLpM!y@GJD77*cpN1W3DTdRLaj@J1 znd_w82W@IGo;(mOT+3j1a~!H6gk2a;h2j_S*qAqn(nmw!9E zRpc*fT-#&l^VdzaYX8Z+OJFYVsjJLARdlsRQ9X)^=@WxLc#%)1w3uRi@C@!gY4BgfRCC-RG1x{)Q#mE=6 z`BPO4V3qZ)xKypx&*)?golLkCBWsE+DK*;9$BO&NjYB4ICRX1L$3}Bb^$qQOrZNn) z|8Y$b1;%H4H34ST(PO8_ZwTMrn?elq*2`?UO}47$oH{?Zi!Qy9=oXzx|mZ}CtPSz z6cy=Mv=(K-(%=S0fDrU%QyB=HsTZB*2VzNnS@}vYitVTVrf<2aV>spUfmK-F=OGL} z$R%hWq6gODjmJ?4{94$4xMbyc8SD;ZC&qcrU85jx;Z5GxmR>g~K@C7oFq$3?yCQ-$Ixl-K7?gply4+)~w6z|8J!8k8{HDR{f?lmj-GsvDO zb7~jPq1q(ya@mJ12|B8FA+#=|2BEK!0CqJ8eK-42~_P_wR4PYHi;!R@#L{*HD`&A+G?tx=l>jRt zt>dfq{%awtQj$jdda!PGm^J1 z)6_W+Jwa<`SM#P2UnrCSv-mv0R>b;4KzPZkg#iy*#wtQ*neV4Z!g1*Pdf}n@tNT`4 zytE+VZpZ>3@qo!e7Q;7R(dqzl89AyfOtg4uq?*oj-_Zk^v&M755Ke-#;M5mMWy5R!|hr5tcQ!?tEc zBvs1qEt1LGQcW!33T`ixv520?ALs&LQD$=>`XmWZ+{BW&q~5}a+lgF*?t+X$rO*Vp z&RwYht=uMP4zU_Z*A+C4r5jxZGsXQq3G+vw;xhjXXW{PM{HQpQ4 zGpw|6_3Xsk{GfGyFtp8julp1M#@X_4ExXtJo7)dfQv^Vj7`dMuD&@*rbeDcG&?qAI zs){vHGrdjx1f%VvZSc~CFwB{l6*Sw52_JYlV3t{?*#)BV6$BxalH>zN9j<3SsgT6rlpMj55tm_2;xlJKP#R`-rPJLU-g)2j zD~Qa|U}2#0UMA@Zeh>k*%jXPMzVM;V3ntXX1udrm%=h{cU7*zz&y!rghzO9wCp}b- zE)8x<Xy^EJlDZH3AC_bUOXMF9_ zJZ?bX9?lW&rWmQ&`=7XLf6=%kn2=F-y_DS$o?Vv`{zQl;I`>nQ6=+Yon4Es$`B)7h#r>pSH=c^`C7Cbx@Q z5NNz5^dY+1I@YcMBYRy7@zFhP>1Xq}YJSGQ7~_W!)O3sDJd`oUgF!bIq#FF2gT}uU z-4O-|bsVSu*Oiuz4$<0%thBY5l}FsR&LoX2#m5MrQ~0p*k}~}836df1;(Zx1O`PEu z>+ReH{T_F68dkRFmb|96vg*RSyXHlQ$Gx{(PQ$nmC>X+@2s7mqK@a(`F+3Npx~ur) z#sbl=tW!?=(%iP;LvhJJJ7dp|5;lVfiUm>?2>95^HVXhrQn;FjNSg3EY_VJZL)RxJZ{4iSgY(36twrdn8i%d=C%p(k^>f_}+ay1dCXTMfOzGTX zDgHvhCYf$&E*~Z97s8$W!D6l6mh90^B(E zy~xXmwZhH54PFAC(Wca~ypGlkCw)@I9SZM1#VMj)Ezc78*Xoej1E}=VAnTQZFlSOF z?rW)ZuRq;^CQA1ZGp2PqByA|XiYdLH7=8g;sr}@VxWvk+kZc1xIKBh&?WQKRlhg4P ziqB^!yLQpq{ZD}gQPTAgao6NDplIKSPK&kAVM6mmfgNDA&zj))KxM1EME}eR!Gb40 z(`XS0qIUz(Yp>3);v%N&_9?rd5%;)v@>MjDq&x~h~Kc==LQF;!!l`ws>fj(B;ah*zKZV?0MLRJ z4M4zYZx4v=sYDUe7k3Nf66mbH&AQa3=5h%scGj;%2qoyyekoPmzdvRMtTn?&0zi?^9?@Ox_^G|`l4h@?F($JS3pRSWh z{T!uo#rp>EA9N5W8+}{%qL@&!-yeae`aoy8UG$aeCD-{5M5(9vD)0X;S@^Dt#T&woM3>tHkJX1E-?f30$E41)jHPC6XH zSxi2P>v|J}Ok*A}jR7P&Q}zV#s6LpxLD3@G$`xmUr?oA=4fgfThCidS;dV)-%f>E# zoMmY?FIo6+T7U$5)4&a(`9`^)Kvnb@4r;|uzMwHmREm;Rv$~RmE-gaB$1^3S#P59n zy%^0mswwV88$PY!1AYc&(%GNZU6P>ri3b3L znA%&j?(FwI`lZyQi|gj9IYRcSbr>s>Qst%=@!Qk9F#qId?*)O~sO5KsE<7fmNUDuW z?s(Ms<%D@j~mZg#IWXoqqNn5x{{b0>*wnxS(h68z^=6 zlw37cnR~_&^O!7m-e)S57H|vTlx*l>vcswZ5jinpUjpC)*1IC9;S1bru+_vy>-t6e zd7WSIW#KBLtiHQ$lA}%b9L9!W_vB9aTe|A&4jDhuam?sxD}s-lAzI?AwO|~&HfH(tCjGsKkxEHzV(BfI(?{?*Fc`ENy zVcDsd4w$V;A9yhX0EU5BnV~r3;g@^BmW+@Mm3r3JB@8ogkqB zLzRi%tI5-X;PbQcUVFzU+qKCx9I-P9cipj=6bJ8pnO`pL1*sDli_eDVf+qF%B7`ac zS-@r#7(dCG(OY%8~n;J-@>qO%1`(a|p>E;BZ{8n#e)}}2389|H{@j`z+y2M7nO{e$MSNz)h(ZJ96 z-34Rro(zmyhy7>DrvJ%rHOn0P|6)Korq^$}Dw6c(6w>oOcA39JFXx5Tzn9$Yy7Ihi zx7|g>C&Lm>QJ^e5zh8rzDE2{h&k9Z#0_4EFO^54viqAJ048`LSXqZABz2YLK`gRUM zD^LplnLPwk4J1)Po$pZZu_My5CYG1!o!dk0@=BL_$r(kZ;lgkD*zS(9Q%}_EOpg6{ zF-NR2if37Zlm;1%j;!cVn)mYgVc^%7GFZ|%l0M=;^{lGfCO`mqZkT01uyHlaKLVNgH3xm;iF(dS}uPgeW3J6f`aU@TT+bO|oF9U@HcD zDpTb-%edg+3pXJ>j4JyB7mF2X=iiToqh5?Xv~^Jn>qoyyP)8+0Awv(CRt zj6wHsJlHjhqMl*q9h9Mnp^{Nuad+>e6&D0Ho`=E#y6+`l)~5rII>R(2P^9k z?)dxEE7Fecvqzw4k90V>{!53llOE3IxIC7ZNLy@h_pZE%>bj<)Sp`-suJ$v8udW8* zq*!K;oA}QtLI#4RdB3KI`6aGvoxRDvq{AzDovX~kxc;!vZTO&;^1vP0Rg8Qrh*4r& z)~Ha*^KBz2Qtq^k%toK>mX|tA)0}pZ-aL44w=T-SQ?#r0Y~J3NC?W2_#YP1WUCbh)7R@UgOY=L`-`zAs$l%_{1~0uVMRN)m5Y_r2 zID2KYh(-$!&_0ww&u+9EuZjSa7ieG~_e_`nM0|cCK>?IN#qpthR)tJ+y(}WyG=mrh4+< ztq{q`zQ(Uka2J<&)tNv+;*v#TmoqJf3IX=<`9#M;G~$(<+J-J3{5GrjCEDn94_t&JcZL>ygk2Q z{s}b|c=Gj|fImJ`01G==VV>*)ZqA)=B(!2;*CuCNB_Ux>ze+*M1015q%T`? zsdvdvuqt~W>Sz64;-_xtm06MaO3l*RE1?+h*7+;i;|d=U1nr=pr}xj5|4$a|jKR{G z;41tSJ@gj$q;6Be&IbQz;_>0>Qqh3+IBIUn!Nb^*TrwOrg5+dRb&Pn_r0l@7Y*~K> zKrv9dIMAvUl?S*LtDZ9n)+~|h_y<#N$D6kX57$B&^tX4`ztWQc#D3jAD|$FzTNV{^ zUG=yIFvBw$NsG^c2`B4IT(u2r80@dA#=r*vsfFB@+KT-0a>>;y`1KRq0wm~nPND9B zIoQ+O9^$+RH@^9;E1>R-AH~s~6~7|~f~Q)k`>AJ=k$I50mG%@rhZiQ!t$rwy8J!!; z_uACA&$WiHQSqoA#?;{VRF$n$C+j_P?{?ipz8jLyhcd6x;6pU2?U$#oBR;4f=21UwO%c8EWf^3_wlzx(z;Rc(^)5^meSgefJGx|cAM#A7 z7&k0Kh;wW9ourLx->-Uzp|Lj9&_RJUdtWgPF*RPC%zP>}lkK&)7(3e}ZNchFBm7ZK zR|^brhF0%+%QgSsg(U?*>Mg=nTi_M0b*)mq%ysJfAIAEjBMBq)@Rcl?MJUHmM!Z3R zq&wc{Bv1>RpM)%;Z=#b9fmwv*yKs@ppT2zcnd;&mJCwYNbF7k2aLZKo^+m@jf9>~( z-n;aZfxIc2aQQ z&WcL0?d+t=qvroFsD#V`pAqYUYE{32xonJOK*!|N-A+l;JV??l4k73%^dlB`{rtc# z!tq(oTancoT<%}nNkR}Wa5DDdGKSjQR|a~^X^75k9mI8eKGP+yG9b<`p$K5@8o5fz zkGkMENs3OyH)w}pfyqXNg9MqzLK%zMS?Sc^kR-~si>UKu%>Ne=crIU1@)`xb zUb=?TN1K&VuTMD-Eg<*C1-DjeS@7e|R+Hu+`rQYhX9sp?(Q{f}_@SzN48}0CCG+RDHm!*A$N3yojqtDFBx=+CxgON>nozE$*z^T~ z4dB?W3J6Lf@1k+V4p;GkH#qNmliVkMul%#-%z&n?;J`neThLe%;PEPP{eRi35!ZPZ z_uY!+PIVI~HsXB&WU;-g#_x@kW1H6ga*gmC>i(Dc0}#~`9mm3=Z1?2-^GcJ-%P0yA zh+j`Cz`Q1I565&bLwIwT$7m0nGh(-X7IdDKFv_6`>KWfP2u&|Th%n0~Bxn_o$wXdTT)*{O{KmV)ss&wp^wkA+Qs zR0QUeb^ck?ln$8b=%KRzhp{)0hkE`0|0|)ABt@Ds;dIndX+>cW#W{7NPA5W!C`z_A zjA25d$k4vXl6JeSVTPqCC1WVFk_kD^Lowbbl#u$`+NKO@0?q=qchiB*Y&)f z&&T8bpcc!GkN#^}t@f&bZVtr9=thPit)NQ_PjDJ0!28NT2KuOLqKZiRS_%5cXl(_- zY)Vn^RK~UKdvaS5)CFpwM4R_PJHiy?vq(MWN?ssWZwp5Mjclvq;Ek3a+2U?>J|2J7 zOYub58dW({_v*TUV9rZAT_7pxlfC(^;Ev_mK0Sw$zyH;41yLsC0Xk?p4ZLCh@fwDM z!Q?4^_iOkf*cO=LN8@~@Z2Y#ExFjr(a&}o%0hbD^B{W?QNp%=iZ+OKgJMS(ngGRTq zT$x-csGpyWn;^SLLAe1)%qD7KLg$g~VhJ(dGy zJFrNkUSl>sUyTUkno~bMeOe`V9V&>@z97@#=m~x!bQ6z%Za5WZTJXR~4f+EMj=rJ4 z?;F%9cN5~C0J$%;1U?Ae_sCse$kcOyzDUzlyjolu;cL17YR=0}`=svEFs0$Z7dw^f z1G5;;tSjNJ^I0?jZzHqq^qP9Rd|GK6CWHd#7RC%NH$3iXZXP zRBl~?jn*Ce(iC#O3puXvB-6%yORDe`C%)H z9v@j}Ub%5qTq(c}PUfyfT3p-J2ImXZnt7;$EgUMiksntQq~}b!lij7VebPWqP{p9L zEE_&ayPWDNRbNtObbaDpziF$XCV~3Z`t$b>NY98c7~^NH%tK;c?V3w{ao?Sr@TI{_ zyOr6X*sBy^);Ypg73e}&1lluB)9;GwYY1nDaAUM~@~D`N}^BceE$&7ioG(q3ezY z9X9)?*&}qAGzIFB{<&W{IB7%4rXHK8qKx3T=7bLhMGWzc*^-Ts6q;OOuFqA9Ro*|X zro|S_{4@gSPmz+XtzY!InVhzun3VfH|3P&A2j3B;lYTW$eyg(O({i9sJ`PWz#Sj$k z92!TmZI{=UJQp0Gbi@mg3sSGm0KAbQP=EaoB2-eKD0&}O4&QpfJC60YBqRj~v_|BO z0y~cUG-wB&i8`B)FiVI9HmeOPM0dDyGWsyth69I~rnF#tPvix7`RYVKTNDkN`X%f! z^NZum@Z3Lfl~`NRk%kHX9(w8c>E+POyPexjhq}v=67v`#YJ*jE_R5d(CJ)+v?Aetv z;p6UIhZ&DmQf?B*di~$}+?+ev-_WF!4I~}_SL(A)B?n{aXKr)X(s9wI!e2D0cHIi$nv_W}cM1XV3l=%a%9!eV*EU^-<*^9y|pE z_pHL~GSY!u@N{GHCgU=SwQG^<@2@b&a~tDIC=uKv>OCw!oT)W-6e9tMk#>5z!YDE~_v zYLp@q4zoGc1?N!!$aN}DME*(ilORzCp(E(%HQK$rW8Zv=-)oqDsG2$s9vx8WGuT2Y zc={~Fux?9!nepV5IXmxNOgilw6QK*jsEaP;qTxq4vw%ao6O-Sl=nYDxXtp8JkRsI) zORYsvPHm7D_sjAx{Qxa2fR|K{E-GyV1n`*WdX4;u4Lmc?X>TCnU=W$RBO>oxR=td0 z^I}LHq<*D6N>6-VQ|+{9Eu)I25cs*GT?u-LuOtkp!#%`E*VPcfMg;5gjaG&RE%`mx zgC0IE9POK`p)!aSMM`Opt+VFd=~3~X>78{vH#8h%df2wN*DS2T9M5H} zP1tNCQY8b%gD_>n9M7u8;BY=(xw(l|6Jj+3 z-JLa6$F+5zzQ=$mDIR(vyP%7BlOd%K$Q-`i`Mh%}oQH_wf;H*09){E@^YxP_uJ0{~ zB8EaUvNPsLR;g{j@2E0rupEJs@*$?~H^szBX7Wd$4c}%8C3L zk>5o+Syq%iwv-tT>7&u&-(#?5KQgeyv`rO;s$g@aF3Q!(%UwMI{N_!f-eH%^wuqFYhjV=;Y`M?uezVB_!%@ASIB$G<9 zm%fN@}?xt<;> zT)(gEzM*#4fco@zuu+4cMl)oRqF_5j{=GJKitRM(`UE?GX}lXA3AiW=W+xBhZ(O0M zQsbJ3{(H1EG+AiePk#SjZO)+OmjjOw_}Vi*wwX!vztNJLZeg0M#1+5kcs$c57oJFT z0J*lhBsW1WcNXJ@oVl)@uiZ9{Do8&l`Jt1vRc4%1GRgOt_1n^z*P?3Eo7PS^83OR@ zN+e|)lBmwtoDumOp@Fsm#0=g=$l{&Qaf~H$Yqvs+QXrI63L0lMlfJ*K0ZTi-sQQWn zffzct)42YNv2oWB_Y$4`8XDuXx9~TyEg$_2EkFq3>GxMty3*nEJM_s~0M&Ube=fuS zw8Q>Y3WmsO*D7vL0sU_^SYQj)k`z`cl!*M^N{%~r8YOoJA~#*7;-{U)Vjw5iCMGk@ z`9?)gK!Ll_Y&o6*LVE?H>WbrH70iiqE5cLeEr0X1-x}HCKD)yFJM`MFd^uT(o22RW z+rNEdy^sS;-OB0dI}BX;uEB`yJH(}?L}IVf%AUZ%VU}A8zC#=O`P^h#WQS{u&gWjE zXstxH)e>llE%UlR<3EX9kmG;iW;@c;{rImpdsyvj)RNp0$4g}FH$pS#X4jD5I_8@w z4UF*nK#|$Ll1jk4YOd-vh?kf&Acp)zqyPeECfvs`AxV@$Pep<9gZs7hgt z9QtF;p)t`dm<-qe-^ktwT+h;3$_>*3Ur`quX1P2`Vd|F|?_qcc!dHIEsfRDTSQd=w z0Xk=J#@^>jWsc8OXj#3_$WL}K>Br_s0C9VoUU%@Nw9CFcHH{oCb<$``_ra&9Nxv4`!237_oNNeooQtB7|1jrgmmP2ck$q}_kVwWS)bwa;W(%AR9AX8vx?RG*)n}Awx?43LJsi5cF)>hokYH#`G ztSkK|n*V>$N|`|ZbvLTicTD6FtmI3wA8g(84+ByU8as<4mnN4Qtfubc9%2^EpynjF z;y#sNf@iizR5o>*Wc`4CH4U1i%3POmqcekhQ!K4D^Z4$VD;H#CPGlXNe{6YpvhYj5 z?m(T;C<7yZhW~}GGf=g|WisVI=_Fym^;sIZ1PGHMLrCO|O?tux=N5Ho$nDxyvGc3G#Kk z!Y`_qN;1w(Pp*nfE>%4Mg(gr5ej5CvQ81lg0Zu~N1x{025)Jp8op{~iZ*TZm-7UnS zsn~%uk)LG0Rd8UusBy!{5kM!{2P`k4`4bYh8~el_kJC7wboQBkHGX@e;kwt{bhm;x zV20XzPGP5>-h5}Fs4@t6-f(H=bdOl9ye}BMxQs`+@}JLD`j?tPH;bW;-t4oZ5%Bi> zQ0BQumC78OIi)U8aqRgG-tjB;_UEum*R^6TfYkyk@X zzEtt@GfV9kiV5#u8foQ$EC1AmQTkWy6ZLLoiy!*`ZcYRWS#1xob43^D5$GJ@hJ!a0 zHf88`^%seq&m*}|35Y+Y1suW_9Fl~c1DhQ4}bE*q#XeX?bp@j&2YZ;VqFB=PeH(Ewu-#mhN-cd*}x9dTKN-h^zyHp zVeCVo&S8nm@(<>~K-a7alg(aXj`s&i3NOA!pZoMA{+w^E0Q}E$7H$mlW?3!7KsV9e<;x#{@oQO zbHp!$3wqV_dg!MAAZLs!eg6L=*>cte1#s=X^SIBUd+ng3^>Jwh_FuRVo=n~Fsc2Go{ks0A03dG3=o&C`sc6u#$%JpCx-AcnKu}(xXDv~En3ye1>&x0}(CO5)M?D|f!L@}- z1syYIaO>}izkUO-383?C`vrI+tKz~)TS7{9!}liTSf!;jF3!N~`zx8ajsnv^*U5on zlXM5p$wW~AKXOQFMlQ!mIb3L#| zK%E3PJnzZ{n#h^`WTE^F-Oun`0JLNLB;}m_5VU!(h#xsCfJQ>gDV9`sjvU{?9~o&z zXslgoKE!vtES0Pi?)jkhaQxl{cVumo2Iq22TY~;sogT~rVG2>$n)5s}%CrZOEn3jn zhG-Eq>i31aYiC2srM+Sj32e;M!8hdkLeKr0CH<5Z0mM>yV|)FLIymL`5(zn`UqrDs zZf*=g6LCer>LE~dJik%ED9ElNwg6g6omtgXJ6(s>S^hvVq))vWcBx=wJDHj{InfkG zt;rYRD_}jjFl<_}SB>&M|NyNGm{CE=*fxl8d9(*HIp!=b6PCO$l}`Xe?xa@UEW z74RF9@~gHiI*4Qi1)Gst{8;|AAj+7jlc89hTqn#n>$qFKtj%}mwSILkEnv2({Q+XI z)$j(@+Y4d0{+9_=fyHr8xr}rR{5FIO^d7$j|L68>1)$OI!fEku>~q%QFo6z@qBFsTsT<~`B{Al%x~x!53Ss1rAcED@ITX8q`=d2{aQP8u=g2J(Wb>KK5`POx8{y45*eyr#W|*AqU#RuzshZxsx~B5{$>E-jpy^3_O#fO~ zzji_T(f{zQ-e6lFS6Kufx;D~ZGE1_f&(*q=U-kwlc)p@sC#Km#;yk`aY$%Hm z6*9B3{M$Fm+}PHlr*gy=Y_Pc_BYk9s3ile{;Uv-*%G$gC!y; zwno6iwF3c}+5cfuMxw3DUVHd6$|&$%AKX_ADR9_}>HmmqB$o*4Y*d0M)hX?Po=(eJ zfYMHjEK-=kUC9++4wn@mBX$`*?EpU;zuk^I*BRr&6JbJ9K{NZx84I?Q;2s1s)VbV8 zMk;WaYhBJSnzbW?1m=NYGta3KFk?=`rCgZ};vLM$_AbpJot_>U)0SnFSJFd#8Zhpq z6Z8K02r)JD-CMZZ!Bw}QTC#6d0_Nz7g^6LIb0(hA4x=Nkq%B47IfAPEug9~ zRk$3vv@O7`3I&PhN7H zccFCXPi=)ST|*WHJ1U_NnugXK2<&$urf7@WgK?&w_S-ew_D6Kg(1Q@aQG9~;k8p$& zUSEp*wrdz*@d$xzCo;;H@UVGfwFb|x=OkS>y4733>>@+=EmLWanWvZE(&V|1F~YKZ zRe&?c9~wv4n-b&XFOn2LipEsdpQx9etxjWZn|MOpG)bhJ-9D{S%66i0Zr))0;kQC| zvL65s`>+GgP9Uu`kD6_8q?%8PzMM}YyWesa@@)BfMlJQGJ2o^536EU;5JU)5rJCMJ z?d!sSG9H)QU!f}_!6)TYvLm!6-bY_0ey?1RGxg;Vj32N`Q8}7r^kM8t2>F;O{^%`1 zr7%5u)r`jqmGmf-W5{vb(ZdK7kkkKdKAn|sK#NySeK+zNVblHDCgsh=lk?6y`~5<* z8tYPjI4t#QM7(BCbKuwVdq|jD>FqaP68TPt!0aJF>1sxw8F1A1`^8PKQ)>2vzHJ0P z+H-YkNoGyX0$%lt7ov{2%8Ab7y#>Hs?Af0Y@q6F#?NmYcTLh*>po!j_-)nxkctyCZ zs?Hd0{_G*mN8`IHUe3_P2>e*JN@iVo4GsK%54`?Ip2R`Ci(LJdKl zC_l0MZ`R^sxdgtMpL(=VXw~Gz@VC8`eYTMbu_G57g#<;k(ui=+B(dJArK>%{WV2Rs zB{0+AQ2G)!E&f1&B!q!cDN+w$Oiy(%^vDs970idKlZZ%5vm@F1S~j=Tg3<4J&M&LSJ`(58g0Ya5c?5uTUG7#f zSzJp@qhTt*=8nGm2ZJsjK!|gHL4PYey#Nj_`{j{*_TIAJ$9(^iGpa!3b1%Pa;o-JC z4)h;WanU_5eO< z#ArA8B@(V$_5&9HsAMosAXy_B&~KOyhbmak67NZj3y{}j#Z(7VsnL?-MFEV*uuml{ z{*wU_>k#-ABu^qo5BUAU6uJwKy(AxG*@h-ntHHN|#zZ@-)g_1UD1;AgYNUnsc|y`M z9}DFFF4J@9rALqa1Gh&$o(1_1>+8D{ix&QE+c|P|y1W~yop)0% zI$K%qoA{l~hJYY!9tFmWbKc8TD#_*XCg&+k_F~B(E)Yr)*-38JNvQn;wg-zEP(o=< zgO%bbe>igFQq};{W#ab@1j;V43Z<|IXEyx>%%$@#$Gx*Qr96a8;9l+AEt3}p2&~A zP+@fk8@@$Q|L_~Rzw820O|JOOY1~;*7rZxG%pv`ENlhR4yk+0geU^S%o3$UN@%bq} zW=Xhcut=VCn!Xuscv7gQ?>b|u9Hy)!(x=*N2Kx-%w-}I$FkmrXz5Zr#34c2t*mYO? zY*Mj%YDfFo{0E7;pBtGY&u~O0CWr&D4}?KudK&U3+^2M(bCKlR#WBa|QzJ6SW(4xL z6#w_l$~?n~N|QoT`Yd#bPrhwic6zU^DI>3>5jS$Qh%>MWaj3k7fHXG*^c3T3{;Y)x_d^v_?TCnhB?pHET3~(FB z49pf;C>bPvhC%~S4Qd*;ilo+vdgxt@L`|veXsaJ)U_KMJ?6u6mM8b|E4OZ-7Ol5qo zlURP8FagzyUK z@xcfXX@COr3C8y@LL}*R_RU}QnGee3bLnkYmrUGJ&;ZuG#6#~<_R%qs+UA9S|1#C{ zBiIQ>)2LB>Y-V4MV7|M@BFiD)V+|3YudnCaS&r`0OSmib;;&$4o-{m11jW7shi9rw zX-}j3xp3nmgt}eayDDyyZLLpcGqP#FkIvnWT(=i_MpybDC(Z=dYbF)R|78C);QRRZ z{p~b!G=36#MfJ0j z2-()qV;DqyRyOU}KgH*$$!ENqMb7gL-M5qudtng@_r$;0@U3EPOWy-|!n$th`wM#n z^4Po=kkzeW0CGXT-tfBR@@=bEet(o$&;FAxX9G4!*(Hm=_Fdf=qtIG!i%Blz69By8 zyeqmd$f+Rpu!{mbj?@-liVHgw)&>kfM`Op4jMgLtpm=M_^*iribb-kg`eAYQlHP#h zHSH^?ia{S4ep5e;L0H!AUq+yV5GcYt*gvEsn8~YkV_|PvRWX8Y@t4|0L)f_CYUD0@ zQl^4h68{oCHbcntS#b*XHYA-z$!r=T$HDt`0e1@wmcfuEV9sNG%}6?Cx}!ncKVIhQ zG^821BF-4!a|^@KJ|ah@u(triR3tr-5y&p$OT~8dOI-o%j(yM6eQERzrA~@Om!YrIWLPA!yZcT4LD%er%ln;S2qISTnFK}W`aicjX0r6kQ*zyK2=;={5@ca8b zI~SYYt*a5!y+wQ8If{0)&J(`orzF0PF|(3 zs*`03Er?5s-9&8$9F=D z0hn{~|4%>f$F^~iRL3aW@)BteO*s;v)JaOb ze&LYVk1=_L?69B+YF>n_*&@ID&-?3LRVBo_P&DgUdz}K}wQlb`aK1ZI^$|2&w`lt! zrPn>`XMjvAo#3$@YW=1`IfGE*2f`#4gG+))ZO|!7a6>K!LVv;vfiG=g7=rem03iCQqp4Pr_#DR7k~Lfi>&#^CWSZ+zU`cKOe00m`4rj7VH) zq6aGaz8C`KOoGJv7!?D`_&(76MPPF;GYGpNsi|tj!7TGg-_=GW(8aIlC%I7|Km>Tb zaWt=K!R$_FYwIWMuiS9gEM3>j2T~23*XyIh_8%NA#VZq?3?K!kgAMFR#i|71&Z+9Q zT*%@f$Zg~!X^-YCZqWuE4Wl%_&zibR%lKf z0tb_O6PyLe^DKTeXbPx5a4H*4B>oC4l|%4~yfl@zl7Dv!|F}CHFdbA3U3iu(Z3q!~ ztEaoKt%dN1bsDqmre1k^J0XG&Kso3u!$8jQz0iF?8jh8N;%->{K@6M#H|^mBcx7iezEI)g0&O5A zZe+KAlRP01{)U>zw0$+5>1g#2oT_6aYlXd~0CNullHU3o0w`%zT=EyNoT?ZJJ$

    _#Uj5D15ddU~*{Gq+>^Z2R8PkvGRV3=UdX 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 SMrT2<;xEU3wa7T?6!c%wdSn#< literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_bg_image.imageset/home_bg_image 2.png b/keyBoard/Assets.xcassets/Home/home_bg_image.imageset/home_bg_image 2.png new file mode 100644 index 0000000000000000000000000000000000000000..52a267fa7dfae81103a712c441cfa44045f0a56a GIT binary patch literal 406802 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ⅆjVlKY&1xaC3jLh`Go(N8(ZU$Yz!yC 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

    4H81RXU2HhrE)GDU^ZO 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

    _#Uj5D15ddU~*{Gq+>^Z2R8PkvGRV3=UdX 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 SMrT2<;xEU3wa7T?6!c%wdSn#< literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Categories/UIImage+KBColor.h b/keyBoard/Class/Categories/UIImage+KBColor.h new file mode 100644 index 0000000..3ffc4c1 --- /dev/null +++ b/keyBoard/Class/Categories/UIImage+KBColor.h @@ -0,0 +1,42 @@ +// +// UIImage+KBColor.h +// keyBoard +// +// 颜色/渐变 生成图片工具 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef NS_ENUM(NSInteger, KBGradientDirection) { + KBGradientDirectionLeftToRight = 0, // 左 → 右 + KBGradientDirectionTopToBottom, // 上 → 下 + KBGradientDirectionLeftTopToRightBottom,// 左上 → 右下 + KBGradientDirectionLeftBottomToRightTop // 左下 → 右上 +}; + +@interface UIImage (KBColor) + +/// 用纯色生成图片 ++ (UIImage *)kb_imageWithColor:(UIColor *)color size:(CGSize)size; + +/// 用纯色生成圆角图片 ++ (UIImage *)kb_imageWithColor:(UIColor *)color size:(CGSize)size cornerRadius:(CGFloat)cornerRadius; + +/// 生成渐变图片(默认均匀分布) ++ (UIImage *)kb_gradientImageWithColors:(NSArray *)colors + size:(CGSize)size + direction:(KBGradientDirection)direction; + +/// 生成渐变图片(可指定 locations 与圆角) ++ (UIImage *)kb_gradientImageWithColors:(NSArray *)colors + locations:(NSArray * _Nullable)locations + size:(CGSize)size + direction:(KBGradientDirection)direction + cornerRadius:(CGFloat)cornerRadius; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Categories/UIImage+KBColor.m b/keyBoard/Class/Categories/UIImage+KBColor.m new file mode 100644 index 0000000..c13145c --- /dev/null +++ b/keyBoard/Class/Categories/UIImage+KBColor.m @@ -0,0 +1,86 @@ +// +// UIImage+KBColor.m +// keyBoard +// +// 颜色/渐变 生成图片工具 +// + +#import "UIImage+KBColor.h" + +@implementation UIImage (KBColor) + ++ (UIImage *)kb_imageWithColor:(UIColor *)color size:(CGSize)size { + return [self kb_imageWithColor:color size:size cornerRadius:0]; +} + ++ (UIImage *)kb_imageWithColor:(UIColor *)color size:(CGSize)size cornerRadius:(CGFloat)cornerRadius { + if (size.width <= 0 || size.height <= 0 || !color) { return nil; } + CGRect rect = (CGRect){CGPointZero, size}; + UIGraphicsBeginImageContextWithOptions(size, NO, 0); // 0 => 使用设备 scale + CGContextRef ctx = UIGraphicsGetCurrentContext(); + if (cornerRadius > 0) { + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:cornerRadius]; + [path addClip]; + } + CGContextSetFillColorWithColor(ctx, color.CGColor); + CGContextFillRect(ctx, rect); + UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return img; +} + ++ (UIImage *)kb_gradientImageWithColors:(NSArray *)colors + size:(CGSize)size + direction:(KBGradientDirection)direction { + return [self kb_gradientImageWithColors:colors locations:nil size:size direction:direction cornerRadius:0]; +} + ++ (UIImage *)kb_gradientImageWithColors:(NSArray *)colors + locations:(NSArray * _Nullable)locations + size:(CGSize)size + direction:(KBGradientDirection)direction + cornerRadius:(CGFloat)cornerRadius { + if (colors.count == 0 || size.width <= 0 || size.height <= 0) { return nil; } + // 构造渐变层 + CAGradientLayer *layer = [CAGradientLayer layer]; + layer.frame = (CGRect){CGPointZero, size}; + NSMutableArray *cgColors = [NSMutableArray arrayWithCapacity:colors.count]; + for (UIColor *c in colors) { [cgColors addObject:(id)c.CGColor]; } + layer.colors = cgColors; + if (locations.count == colors.count) { layer.locations = locations; } + + // 方向 -> 起止点 + switch (direction) { + case KBGradientDirectionLeftToRight: + layer.startPoint = CGPointMake(0, 0.5); + layer.endPoint = CGPointMake(1, 0.5); + break; + case KBGradientDirectionTopToBottom: + layer.startPoint = CGPointMake(0.5, 0); + layer.endPoint = CGPointMake(0.5, 1); + break; + case KBGradientDirectionLeftTopToRightBottom: + layer.startPoint = CGPointMake(0, 0); + layer.endPoint = CGPointMake(1, 1); + break; + case KBGradientDirectionLeftBottomToRightTop: + layer.startPoint = CGPointMake(0, 1); + layer.endPoint = CGPointMake(1, 0); + break; + } + + if (cornerRadius > 0) { + layer.cornerRadius = cornerRadius; + layer.masksToBounds = YES; + } + + UIGraphicsBeginImageContextWithOptions(size, NO, 0); + CGContextRef ctx = UIGraphicsGetCurrentContext(); + [layer renderInContext:ctx]; + UIImage *img = UIGraphicsGetImageFromCurrentImageContext(); + UIGraphicsEndImageContext(); + return img; +} + +@end + diff --git a/keyBoard/Class/Categories/UIView+KBShadow.h b/keyBoard/Class/Categories/UIView+KBShadow.h new file mode 100644 index 0000000..76c93d3 --- /dev/null +++ b/keyBoard/Class/Categories/UIView+KBShadow.h @@ -0,0 +1,34 @@ +// +// UIView+KBShadow.h +// keyBoard +// +// 基础阴影封装:一行设置卡片阴影,支持圆角与路径缓存 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface UIView (KBShadow) + +/// 便捷方法:设置卡片阴影(常用黑色、透明度0.15、半径10、偏移(0,6))并记录圆角和内边距,用于后续更新路径 +- (void)kb_setCardShadowWithCornerRadius:(CGFloat)cornerRadius insets:(UIEdgeInsets)insets; + +/// 自定义阴影参数;同时记录 cornerRadius 与 insets,供 `kb_updateShadowPath` 使用 +- (void)kb_setShadowWithColor:(UIColor *)color + opacity:(float)opacity + radius:(CGFloat)radius + offset:(CGSize)offset + cornerRadius:(CGFloat)cornerRadius + insets:(UIEdgeInsets)insets; + +/// 在 `layoutSubviews` 等尺寸变化后调用,按记录的 cornerRadius 与 insets 更新 shadowPath +- (void)kb_updateShadowPath; + +/// 移除阴影(清理 shadowPath) +- (void)kb_removeShadow; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Categories/UIView+KBShadow.m b/keyBoard/Class/Categories/UIView+KBShadow.m new file mode 100644 index 0000000..1f66546 --- /dev/null +++ b/keyBoard/Class/Categories/UIView+KBShadow.m @@ -0,0 +1,65 @@ +// +// UIView+KBShadow.m +// keyBoard +// +// + +#import "UIView+KBShadow.h" +#import + +static const void *kKBShadowInsetsKey = &kKBShadowInsetsKey; +static const void *kKBShadowCornerRadiusKey = &kKBShadowCornerRadiusKey; + +@implementation UIView (KBShadow) + +- (void)kb_setCardShadowWithCornerRadius:(CGFloat)cornerRadius insets:(UIEdgeInsets)insets { + [self kb_setShadowWithColor:[UIColor blackColor] + opacity:0.15f + radius:10.0 + offset:CGSizeMake(0, 6) + cornerRadius:cornerRadius + insets:insets]; +} + +- (void)kb_setShadowWithColor:(UIColor *)color + opacity:(float)opacity + radius:(CGFloat)radius + offset:(CGSize)offset + cornerRadius:(CGFloat)cornerRadius + insets:(UIEdgeInsets)insets { + CALayer *layer = self.layer; + layer.masksToBounds = NO; // 需要让阴影显示在边界外 + layer.shadowColor = color.CGColor; + layer.shadowOpacity = opacity; + layer.shadowRadius = radius; + layer.shadowOffset = offset; + + // 记录参数,供尺寸变化后更新路径 + objc_setAssociatedObject(self, kKBShadowInsetsKey, [NSValue valueWithUIEdgeInsets:insets], OBJC_ASSOCIATION_RETAIN_NONATOMIC); + objc_setAssociatedObject(self, kKBShadowCornerRadiusKey, @(cornerRadius), OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + // 初次也设置一次路径(避免首次 layout 之前看不到阴影) + [self kb_updateShadowPath]; +} + +- (void)kb_updateShadowPath { + NSValue *insetsVal = objc_getAssociatedObject(self, kKBShadowInsetsKey); + NSNumber *cornerVal = objc_getAssociatedObject(self, kKBShadowCornerRadiusKey); + if (!insetsVal || !cornerVal) return; + UIEdgeInsets insets = [insetsVal UIEdgeInsetsValue]; + CGFloat corner = (CGFloat)[cornerVal doubleValue]; + CGRect rect = UIEdgeInsetsInsetRect(self.bounds, insets); + UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:rect cornerRadius:corner]; + self.layer.shadowPath = path.CGPath; +} + +- (void)kb_removeShadow { + CALayer *layer = self.layer; + layer.shadowOpacity = 0; + layer.shadowPath = nil; + objc_setAssociatedObject(self, kKBShadowInsetsKey, nil, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + objc_setAssociatedObject(self, kKBShadowCornerRadiusKey, nil, OBJC_ASSOCIATION_RETAIN_NONATOMIC); +} + +@end + diff --git a/keyBoard/Class/Home/V/HomeHeadView.m b/keyBoard/Class/Home/V/HomeHeadView.m index 9fa922d..81130bc 100644 --- a/keyBoard/Class/Home/V/HomeHeadView.m +++ b/keyBoard/Class/Home/V/HomeHeadView.m @@ -11,7 +11,7 @@ - (instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { - self.backgroundColor = [UIColor blueColor]; + self.backgroundColor = [UIColor clearColor]; } return self; } diff --git a/keyBoard/Class/Home/V/HomeRankCardCell.m b/keyBoard/Class/Home/V/HomeRankCardCell.m index efe8a47..a18c71c 100644 --- a/keyBoard/Class/Home/V/HomeRankCardCell.m +++ b/keyBoard/Class/Home/V/HomeRankCardCell.m @@ -7,6 +7,7 @@ @import UIKit; #import "HomeRankCardCell.h" +#import "UIView+KBShadow.h" @interface HomeRankCardCell () @property (nonatomic, strong) UIView *shadowView; // 阴影容器(不裁剪) @@ -39,6 +40,9 @@ [self.cardView addSubview:self.descLabel]; [self.cardView addSubview:self.peopleLabel]; [self.cardView addSubview:self.actionBtn]; + + // 统一阴影封装:在阴影容器上添加卡片阴影,阴影路径根据卡片左右 8pt 内边距进行收缩 + [self.shadowView kb_setCardShadowWithCornerRadius:18.0 insets:UIEdgeInsetsMake(0, 8, 0, 8)]; } - (void)setupConstraints { @@ -86,13 +90,8 @@ - (void)layoutSubviews { [super layoutSubviews]; - // 添加柔和阴影 - _shadowView.layer.shadowColor = [UIColor colorWithWhite:0 alpha:0.15].CGColor; - _shadowView.layer.shadowOpacity = 1.0; - _shadowView.layer.shadowRadius = 10.0; - _shadowView.layer.shadowOffset = CGSizeMake(0, 6); - UIBezierPath *path = [UIBezierPath bezierPathWithRoundedRect:_cardView.bounds cornerRadius:18.0]; - _shadowView.layer.shadowPath = path.CGPath; + // 阴影路径需在尺寸确定后更新(封装方法会基于记录参数自动计算) + [self.shadowView kb_updateShadowPath]; _badgeCircle.layer.cornerRadius = 34; } diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m index a4e46c7..25e46e1 100644 --- a/keyBoard/Class/Home/V/KBPanModalView.m +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -30,11 +30,10 @@ - (instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { - self.backgroundColor = [UIColor redColor]; - HWBackgroundConfig *config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; - config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; - config.backgroundAlpha = 0.01; - [self.hw_dimmedView reloadConfig:config]; +// self.backgroundColor = [UIColor redColor]; +// HWBackgroundConfig *config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; +// config.backgroundAlpha = 0; +// [self.hw_dimmedView reloadConfig:config]; // 顶部按钮 + 容器 [self setupTopButtonsAndContainer]; // 默认展示“热门” diff --git a/keyBoard/Class/Home/VC/HomeMainVC.m b/keyBoard/Class/Home/VC/HomeMainVC.m index ccacb9a..fd67683 100644 --- a/keyBoard/Class/Home/VC/HomeMainVC.m +++ b/keyBoard/Class/Home/VC/HomeMainVC.m @@ -11,6 +11,7 @@ @interface HomeMainVC () @property (nonatomic, strong) HomeHeadView *headView; +@property (nonatomic, strong) KBPanModalView *simplePanModalView; @end @@ -19,22 +20,32 @@ - (void)viewDidLoad { [super viewDidLoad]; - self.view.backgroundColor = [UIColor yellowColor]; +// self.view.backgroundColor = [UIColor yellowColor]; + UIImage *bgImage = [UIImage kb_gradientImageWithColors:@[[UIColor colorWithHex:0xE8FFF1], [UIColor colorWithHex:0xD4FDFF]] size:CGSizeMake(KB_SCREEN_WIDTH, KB_SCREEN_HEIGHT) direction:KBGradientDirectionTopToBottom]; + UIImageView *bgImageView = [[UIImageView alloc] init]; + bgImageView.image = bgImage; + [self.view addSubview:bgImageView]; + [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; CGFloat topV = (500); // [self.view addSubview:self.headView]; // [self setupMas:topV]; // 创建sheetVC - KBPanModalView *simplePanModalView = [[KBPanModalView alloc] init]; + self.simplePanModalView = [[KBPanModalView alloc] init]; // 使用宏,避免误写成函数指针判断导致恒为 true if (KB_DEVICE_HAS_NOTCH) { - simplePanModalView.minHeight = KB_SCREEN_HEIGHT - topV - 34; + self.simplePanModalView.minHeight = KB_SCREEN_HEIGHT - topV - 34; }else{ - simplePanModalView.minHeight = KB_SCREEN_HEIGHT - topV; + self.simplePanModalView.minHeight = KB_SCREEN_HEIGHT - topV; // } - simplePanModalView.topInset = 100; - [simplePanModalView presentInView:self.view]; + self.simplePanModalView.topInset = 100; + [self.simplePanModalView presentInView:self.view]; + HWBackgroundConfig *config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; + config.backgroundAlpha = 0; + [self.simplePanModalView.hw_dimmedView reloadConfig:config]; } - (void)setupMas:(CGFloat)headViewTopV{ diff --git a/keyBoard/Class/Home/VC/HomeSheetVC.m b/keyBoard/Class/Home/VC/HomeSheetVC.m index 61a36e0..8279b77 100644 --- a/keyBoard/Class/Home/VC/HomeSheetVC.m +++ b/keyBoard/Class/Home/VC/HomeSheetVC.m @@ -35,7 +35,7 @@ self.view.backgroundColor = [UIColor redColor]; HWBackgroundConfig *config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; - config.backgroundAlpha = 0.01; + config.backgroundAlpha = 0.001; [self.hw_dimmedView reloadConfig:config]; // 顶部按钮 + 容器 diff --git a/keyBoard/KeyBoardPrefixHeader.pch b/keyBoard/KeyBoardPrefixHeader.pch index a622d40..967257e 100644 --- a/keyBoard/KeyBoardPrefixHeader.pch +++ b/keyBoard/KeyBoardPrefixHeader.pch @@ -25,6 +25,10 @@ /// 项目 +#import "UIView+KBShadow.h" +#import "UIImage+KBColor.h" +#import "UIColor+Extension.h" + #import "UIViewController+Extension.h" #import "BaseNavigationController.h" #import "BaseTableView.h" From f0542c11c8134bd22b36e4e9d987d2536c64c6b1 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 00:12:28 +0800 Subject: [PATCH 16/47] =?UTF-8?q?=E4=BF=AE=E6=94=B9=E4=B8=89=E6=96=B9?= =?UTF-8?q?=E5=BA=93=20JXCategoryIndicatorCell=20=20=20=20=20=20self.conte?= =?UTF-8?q?ntView.layer.cornerRadius=20=3D=204;?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Indicator/JXCategoryIndicatorCell.m | 2 ++ .../Home/get_ppd_btn.imageset/Contents.json | 22 +++++++++++++ .../get_ppd_btn.imageset/get_ppd_btn@2x.png | Bin 0 -> 20977 bytes .../get_ppd_btn.imageset/get_ppd_btn@3x.png | Bin 0 -> 46455 bytes keyBoard/Class/Home/V/KBPanModalView.m | 7 +++++ keyBoard/Class/Home/VC/HomeMainVC.m | 7 +---- keyBoard/Class/Home/VC/HomeRankVC.m | 29 ++++++++++++++---- 7 files changed, 55 insertions(+), 12 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Home/get_ppd_btn.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/get_ppd_btn.imageset/get_ppd_btn@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/get_ppd_btn.imageset/get_ppd_btn@3x.png diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m index 390701f..152ee90 100644 --- a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m @@ -20,6 +20,8 @@ self.separatorLine = [[UIView alloc] init]; self.separatorLine.hidden = YES; + /// STTODO 修改 + self.contentView.layer.cornerRadius = 4; [self.contentView addSubview:self.separatorLine]; } diff --git a/keyBoard/Assets.xcassets/Home/get_ppd_btn.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/get_ppd_btn.imageset/Contents.json new file mode 100644 index 0000000..97751b0 --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/get_ppd_btn.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "get_ppd_btn@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "get_ppd_btn@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/get_ppd_btn.imageset/get_ppd_btn@2x.png b/keyBoard/Assets.xcassets/Home/get_ppd_btn.imageset/get_ppd_btn@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..75ccc0e204970a5ae8debb9734cf831fed4a51e3 GIT binary patch literal 20977 zcma(3Wmr^=7c~wubPe4l-KBI(NrS`yN(v}QOLwPqqmx&j!J0uuoN0j#7br-gt3f&=&C(NTfhk-&zhKS0h} z3Ni>4!&KV{2($=Fa?&~;#``T;>5K}#ELTx|e+Hlj+1cCVKTTid)#Hstgug_`@RUBG zZ|9^kt@=Y_%oAaBJ84?waOiVU0i!wdY`Iu)U%Cd7&2h|;x%r~n{xL&FWi<6fe*C>ofwG9Qft@KiU-k(Xd7W3?JTz@rQY+7}H{Rp% zqLU$GBcg(W+rt>z1)Jrxze%^#n*Q%$USwO;!2kQVAP6Meo`KNBHuis?5Ed{*_W$02 znbs8DgYc!0JjH)+86e$`S4EBlyg6_Wc+E62GB(HoajQ`Ae-8jJMa-Tii$|S{d}l*r z3w)|AC!(sot*7Oyk710=ldweTpa(vlf6uPs!jC|wf5>?=z&sKh7N7uvKnv#XtXkGd zoHx9PiiaG4qX>*qfFCXU%}7VFrqgXhB?>}qCc+Og?@;8#jbbZU8IFcnG>KkUP2039AN4f4ZitIY9) zU5cl@F7Ofb=9BZ+6`NjL3-0WGH}AxA#LbqQ9omW=_rJimm#GVv9MdRP*tmUMd^FuS zEOqYo$;9pZcll;AQ+T{DtT!^fMCccz zcZ8W1l5OK8&?i?XO9NJMe|sEcZTFt9B{2z`I2Qh~7*_|*iRmEyk>aPJ3(4{v3yq3y z|HC$P0t}Jy-oTJdZLNcZ=kHrl`jmTut#|k`B4Cb)G&;{O^B1~aLbZmK>ltTgawr*R zlens8LPM-@5mi_wmE5HQ3Vu^zNZAdlD`-ClJ^-#N3-5nGg$+y7z*BY8RNTd3wUZv1pSU3kJqueF>D+ZTVKs}8-) z&c9;`oU9OrMWZz$m^L9bilTiXa86A=4ap?<1oO+JTXl_bd0WjF6%C^Wj!wWbQmE88 zcCS8C`ODw_e3|SlR0Hck`7v80+jD;XK@=M?)1eSkBQa(jcjB_7yI%=DgP*Y^lni{$Uwu(>r3z8Yp~LcRgNkT0mwXn1@N6o%H-Q9QDWdb|QjzL5 z0`O-Fl;}>L zcX&0@OXY}ugkxa3UtE36zNqnR&k5Ny@X2rE8JQ~g!wmOjaN<9`Qd6^_nu&7W+2&)r z>cuhMx`iDnH&$4;KEC!bWQ9C8Nl9_*Pu&d)T|&vR?#btna78&S??1FqL>H!K-o!zei+ogD zLIErO0MQ@vhA;-XZE3$0lu?ulU`+ggBR3U3KOS)8qv*v)N>9IvlkbYrok%(tt6g%n z=xvTxK~Mj|GNS$rhY9W~<{(H3Rv_W1;6+d* zcLVL%&ki|+R+4}@KGPQn^}^FpJij}9$Cn#x$M;^>cEG9|#QOr@44Q2!vXNU(|0esO z@RfQ);U55*2IIvOsK}UodCrVdMRemqi=3(}E{=zp>37x-4-|V=^9+o_SW6c~+{Z>4 zG>0eGHy;QGM;!F0r*n}8F`6%i&c}g<2Q?gf?&^QvkY6TZf zQ8F2g>E}PlG?zwI$zd4^w(k?`pM6Q>POCD$MKt{7uio0>I*kQhw%@rE3Z(=9+yEVv z_;pJBdbCLW6y|qk)1bl|!bXlpMW-}ShSf2LH|~rc86nn7yPd>n=8a0PrN$z-Quelq zbi^DDTHuZjx+HXvYei6j9WS<`t1Cp(Z$e4PB76uTr`c>r$sTr~sQiVBfcHxJ6=1&! z`3_ILY|EC~cdHaptC?K<8)}gM$}Clumfk$a_pIdiQSGxv*bTG`-%C<1IAS`ORz^MY z>MsRyNn!sxEIz!F7-5J?kwO}dC3ota(#10M%XSo+;qbt+zqedGnnF^9oQ9|@lsx!6 zC10l)%aT2~KsFP>`v-{r`?bfp&X>#7u}qaSP7L!pegB4=EfVrw{QZ3%%hAE(gPIS- z1Dz84T{_(gTUfl#I2*pfFWS^rFnLLVQN-Dn)(+PK>7o-_aY4NZs8Xf1q+DosIU2<= z(aU>hgZ!up+{$jcZyi)Gt6vu)->t&FA%J>YR7oiHye+DwOYzs7sapp7)5M%Z473mU zrBN{u=Xa$3pl3+07%6OuZa~txj?>MrVD*!BFU9XC{|22R6SY#8f*GzI{Yn-shJ!gG z&5z4Mn&B45gtdiC#TM_Pjx-X}eiC7&=6o~b?e@B_RdS>kaVDg#Tb;F64so*0SVocS z2p&+5yn0eZBalab#)Dd3_{&3IXhkE9ki?76Hh(lBG>{v)!G2m2@+;ylH$|h`h9V6v zIfV&h;NfG|;%ca5=(cO>{Uj|?M;vW#Pv7LS0S;`3aCq#CF^NbH(f#TZ>48D ze`VhcZ|!rvjr+j&3G+h+LJMpbr9qIljpJd?m47lhh%>MqDNg+N!|Bp|WaSBJP*t#F zVI-{uI)lL{N;5Z_<$g$n4h6HrM=hnxSkCw21@&SW4%z_Ri&^%k=?q_tcknQA=$AL4T)0Mdq=N^(G)G72_mX;=b$2oL8=Y<K~Y$kLkvlvwzqhQd2UxIf5B!yb;#bNiQCA?TJvQu~Xu* zTaL(Jgm~+0i`wn7?2=wgpIqR#^n=r@x=Q=7z3UfygqqvCZN^x9|Mb8_p>SyqS z%16T66tTFKoQA0O#A<$94TdAGkXrTJL`iT0jh^y;=S(~GoF;Wk40?m%ekO}aT4pJ7 zSwI)F0RSg0N;~&cJUx^fmg_L*LP;&TZg1GfM2|dLu6rKh1jeL7E6{U6INcnL9ev47 zw6K2yqu^L>107a#m>o}fGgNZ60f){CLQWy~&bD2|$CY=Y9a1teI^+1kj5T?f8{(Vf zLcbCPL#=2e>zhp;%vKpYGH03gzbma=9#`#Qq{4qLYlVfJ|Mh}1B=vJhNq}8`>>@L= zVTBv>Nx|zxVJx5QT>YT{!eatZI8~i#)fZfa7t;x zS+_qz9$Ckt1YbkJoFzrBksgfmQ&Di)?8v@)eV}u+X<&-g|_hgB50d%SyO>v zjVu(Q9Ed<@k2m~_*)+*09Z|+~2-I9tOn{{Nb^aj7sgdsCfP4+5za z%C@>8>~_D{Yy7AW3f{kV^g!609dvxa;!ZgHB+O0us&%dZuD?jmY;}mIia|XSpJW;; zNV<k+|LMUbNz^ZL`9s6KOE1ix~ zRDn%0^fAR%ExXK1o!dA6+)9z$C1m?OOiRq>8d1UFR@D2ntJg76xoJp?re_ zX^?4n{1FKYJl$uUmhw%%5GDtC=hqw%%gK4#J2YLN9}$c5LC)u%4e+MHwOh!=A`cJd ze0^qu7bMulv?}e{Ei2^v`&e!4lmUpVW`Ty4nYu0AD03oRF}Ndt>KQw6A*LSW=G97t zcB)_nn+(d;7_i#Bxm!ei?@Tjd-W4(|{T>TgM?1)M-Oo;V~WS&eAn;#o>3uE-Ry z7BbT2s~30VmNoo-d^28B7s1hgGmM;b1NqkwT88sS`t$gn{}F*p3yx%Nttt~05a{2) zKka_!d*yOc%#S4s8|km@c&bFG;A>I4(f&LDi|u5mZzoV!MR%IXexn-Jy(x0;uJl`U zWZ|NlSv3*;oN;(dLvt+BRDqNuo*#-OrKP|_e}*>`juy*mhvt1W$qavnGvK~}_-dJ{ zQqi98WY|b*Q)O{@&2hr4YR*VF;f!OX!Gq@3_)_L>g7<{_wFqwf;p@g9jAOAPXyU2- zm498&M}r-siPeAPOzi^C8*5($E_8W)Xl@Qu!{VultWP}6f@d)%0;f9 z<=Yf+mSRxWnd4HWfWN zGlr?NJ`4(_ueMEYO=j69?&e%D^obODr=?VOhQdjxefba>1Zx8=EW~#Wa9K@?;GR-6Itx$*xT{c z97{MsxigCxSvMe{IZvCw?+OFGsr#KhP7t@_H-lue2eq8$pAjB51dhtB^#SV=*_Sye z_OOl<^$zCk`u(nITVab+dD4T&6U@5}9og2pGKSJ5hyElTxx^Vc>|?I|1*5WG=2U$` zouuaFgdDG&|%uXsy_KS-ZvCY}u-iH@9^d@Dosc99b` z2rOa29k*e(sGwsQY?Q#i16^TG`k$ z#TIkr>lW{m5W`0jDDN&AlB;-L7|L^NS8CVD?03VU-I%VG>cYu&EP=c2 zX#02_lW2zh++zcW3Z^Wc4eJW!X*Bdp=i6iditN(8HFyoDfXb^BnCae2mPfGXeCE|@ zdsdw}kZ4zq<(q(<`MN*^&9FIKGbXt6>@)j^EJ>OYnnvc5?1U19WmIUa*N(XCm!g}n z*J@)-2Gf}7F+VXX%q5`TE4mbgiG(i-^7fYIZ^>wuC7T2l^sbJyVOF0r<>@&3Y4#fN zgc2o$8znxLmgLr>gEm*h$92W?yoP6e^?o__ZL_0~(#Bb$HaPe<-i?RFkP?BLdnH7z zi7Hqoc!g05aGY@(jFmW-l7Lg{q6s08|B`H&@XaP&tOqsIo{e2`l;P6h!{6kyg?3bh ziQXi27&?(d6Ha;#7tQqof{FK`<+K51fI?!G-FFrBH{;-|5($r=f$WX)91w`4V0wFWc&a(kd~+oY!QSDHCNqb9`zGnEBHU8Ow-I;btbK)uXnM) zthD5{8~ZXuZC1N|t&=@SgC+U4Dn*@gl(Cxr-8URyOXiaz{7`tv7Uw%Zc-&4c-whDLH0? zv@z^WF9)W8k}=Gsx|2U#ty=|ZNpFI10DCCDYe|iw{M;07+v>Z_boxaHD?>T=^}U}Q zMoEpbRksr=@AyXzYR}|`4ILNxECX+eNi4Q8@#vo=#d#GBgs$?$r+w=dc+kd{0t$41 zQUar%{ZwZOk0iDLTw7VeIM~{2>+GV(F|U1TD@^V><|k)deiyK>V)db`5xi*iv}aq%L&-;C~h&< z$A)49)VY zk_BwOt9)no#r2z+ftTYIIuT+tTuqM#GR`v^{dkFAnJVVkcg(J;1CwiaXeOzYs?uvM zwZdCy$w%iadHd4EEu+9Q8tk!!$SZg;0r3lE|5LrIne?NQZ*r%&)J+6nUrJh~^Fly# z#-{FlRT*G-FX5)Oc#>wa@oZgCRIbxSGM%c%O<)_JUm80&6cM87DmW7&SsgII6`9$ZwN? zO+=mKpqn~31rd5{$5hBxHK_ABx0{&TdX`l?Yiu)t=dLZ*RUgx|IjzpDdNYwKObEvJ ze&vF73Z8#^quzpSa6qK*AcCS%3bY%gJ|R}qO(vPS#Llr9>ZMC^4C6#xHNZlGB%Yc0 zFKtf4`nbjCUWG>pe~wR4>_}i2b?5ewcy+d+*pa~iN;7JR&%DiAuhO1#C<3QBH`pT` zs8qJQ!bJ62D|K#+#z)8}n_r$y{hkg8=RPtwH!)h*Q~YK=B`b>pt)1RpE6J;vT?e)e zhdXuTOMJCAu78<4dq%+TW7d-^kOY#St75j^XY9FNO2vk^aEsHy1q^nzcs=Dd^UUqs zqPNsoOtqwnG%IU1{r3N!HU@@m<$nCczjO!deta%8w3vQqc;fQ_Kjw7`j4~E*aeCx? zl_@Oh+CTBLMp^ND&8YF~o%S*(?-;Phi&cSrS7#iLQaf~oL=x8xh>_=xe%y|}in2ib zG3Fa)6rTDSJO2~;J1^FeWw6T~chkI#(9!aEqp2m0^pZT-_j#_+B2IH7awar~2T`gO znC0)k>h&MY7nm5FU;Fd<4LWQ&>G4-|67WDsLi?)02#k*(SJ^riS{V2f70RI zuL}UDTMO(N9tqLBcX)iZ)TtL4V#ksi#3rM=)!}f3-mGO=#upf%ed{oM%?^Sg%A^8R^FsP#T4*_UNwDg!?{eX>O#L{`XNrl3 zorj@Cf96S>-)J47mVRRz%(;)@HquAQkwoAS2YY|uv6XrmjOZ{;H5C6F`7V}neLvHj z8P}cY)KmV<-{|%w#ix}m>_S5$j?xf*h+rPHSkO?5?-E2>X#{<46#m&W;J+pqmhl+J}<@e9@eMyVf?6q=a}z@T2@h8;aBLG^d~e5uiSgepdyYSX1dskwjI~%lQ0tj)E>3U5#yJ;Ez7*Dct!bqTe9vw92fj*MY8uJbEJcqo=CXl|JF*@Ox&MX+=PqK78^q;q(t7b zm0o))^$)mr1jw^%5fjJop9qIP(EJNAmcaN_8Zz1!p0bCAh_Mna43xZVmu(0%GyX|% zO1f}6cX$J03{LQz%d(s758J@WIb*iR*$oe`R)hZQ&-w5`y%;1xzl#V$%Mg@00I}Rp zig`5)c7MpTXqbp>P#yKCSc?!_`JEK^bTn*>nlmO9CG!e4(ELu;@|D$R?guY4=yuzd zsX5|IB}_6vmbQMdc=b3^@_rP?IY{y75(wtPkr6*ebFUIYrkgeFc7qp&Y<_YHX7(wi zWmN!8`fZB3>a&^DVRkq*XYR7#=(mxivsA=#6!#fh(t?(DMxqM zqA=ocNY0;G|6mFD1L9uUeLdT<7v0;;yz9@KEAP|x)7rk|3}~n>Mjrm3EPyMM zo!sF3?2`f1=`=s3r9}i|0&168F5gxm;mm`a9(S#UPsz+72s2_-<(quHoH}4uWR}7KhhIMpq6bT@)zm-@JqRarWM9%_4U6 z<8>^K4U)Tk#S|qB2;OVkUTC{MZF4!N#pf-_3GM!yVM70S-)iI`OJgj0tD>$SS}7{p zcu3BmPL-wfwbbT)%4^I3=+J86QxV1yOwqBwUZ~Tp=)Gax=`vZh$1Nx-$8^tX+F2V- z{Y!KO-4V0@r{^nUmo>6ARLJrK+&A?iBWCxd*u`y`@&N%w|0SlSI@8=w^Fz5O27?Iyr zjW%6-UEBOBI{GZ$Ji5^4a;y1Ju;T-18itR|%rJX?CW%)T;@lV7@^O{w{M%+vUT+tTGXEeFhEvLlT5iA0(HTQ|F`nD)<;6)n@9#L)O?2r^v!rvA z6qq!(u=5AjyE877*{v7)^PrXNMnznrzy?`}j{W^abmy(~Deq)qZfuio&rcuO2FXt4 zw*}Bc015y364Brah39W4ghE1Lnm-HZKe)yMD3~WYODG`=LlvJxv~PV^^_m`j>GSzs z1)~ffWBd*LV-rI6$8F7nx=vv!i`|PC{gkBq#{~t_tb(sEGXL zx{+#qux%@x^is){;Hte==e&&Zb@#5!8&xa1>XTnN7L{~7Ry9bqB(pAj1cmTOgonhJ z0WUPRz?gm2Aa(u3(N5KdB6kE*eBOn}!6XL71f3u)0b4u$kaG2)!0@40h-s1!*^B^z>nb zN`Ckrpq90R5&78=(C{76Rqt0g)~Qp_^#xu-wnc+~@W)ky;(mJTnwk6qGXS!vVXy1z zao9Mw@qwOXmzp>vrc9(Ck`*<$>4{bsab44tkOf>pcO=hO;=}q1Mv0c#3$G{jfiioo zK#nq_Sb*@;A zk()M!NaKOpWc(f)VN znENqfsJ@BxM>R-6yDl~~|A_pl32VOvw+Q~zSkEdOafQPxaSH#Fyppv&yDFcG98*oX zQeIQ!xQTbp?6#uc+-6W7+!@|jr}pCTeNA`TKi8#a@C zM-A7H0rV?bjWCaaXD^^S9I2Bp+30i^q+j%Ovn6(8Lfo2MN3AO{`N4_hI_e}Q=VqgN zzm(UBeyE(^<{v6ERW&*Ov#NByqGVYDUd(c#@)Vma9Y`VX)w-Nsb>>(?CEyXfaNlXq zkG0$~&1JRZm<>>A`9_EsYcHqVsrgn=^do;6-{*jS5LS4g?6b(0Z&5lU^2m1%{yGoC z$x)V@;g?ICA;N+KkdS|bUp%?9x2LsfpfdhtZ$)^|D>=*R@qTRuqo0G%Hv?{&IDd!z za9WDC8h{$AUxztwh1K*pLG7%Z8aXCc;l@P9N?X?+TX6@bQU;L$NzUyFJ}pVM?M=v; zJ%Q?w5uv4krRj-eo&onQ7L5>(bf4MJ#>8T;@1yZqVlO)Djf4Mb_tm1jrSpsQhT6!2 z3c0NRB&%s6!*L4Ik^|!ZM%*x&reeG1?i2Mg{|2a~EtAR7f)H<4-qHRf4$J)W;@GBF zu#sAjiC=8@U=ClzTnWVO7Ogd8sUkmUu>@K5$RdtzTlC$1>F%1?aQ1JT)1$=}Mn~9~ zZX>uKfL)T`_#^=hOTd=8#r#dzFdWYXj8$3<+B}-*a9Mj8ivCJhqg>D~1-*&=$DwQ< z5(fh}jd+D+{i;G9A50D{4h7Zqm5PY6kaVeKz3wMGRy{5IbB4NZUmL)+S(tq(0VN$5 zd-oHI{?g&oDojZVEW$4uaK<@pV|xlKbtdM^0{iN7!B_8LslqOfc#nsY{eGK-CcP}f zSLTX&s4KKQThBaEjXlnpPU=sNxLuee?}8oiTqkIC3U;x_#>Ag0T8onMc89$UL_Dj1 zUz*A)=p|j2W)%%?nDRG|n^;pSpd7ZaP|wc{dh?$hUZ9@Um}eaaAbzwV&1WRF<8P;x z4wCGTb}V_%Z9l`Koy|chuD8=FdG97h`(0J3vO09a zhu()cv8&XHz6WY`MN|%@34|rTg!mp{sW+(gKr=fVrd06hrg%af(6NMyDYd3@!O|j{ zmPK!wh<`o_jj!hdjL;gcy)YF-rc*WivRcl!K8ZVph37^G_AiCydy^xfta|ivtmlZ3 z3=hj1Zef&D{DGb&pvG5&db120n$P@82DH=dZQGSCY`R?gP!%CzJ!HVZr)m{Vw}wMA zy_wdrZ5?&azqm93gaeA!CF0HGxAL`P20!GgXfaq+oMgg+*dOpZ$f=&|~j>KM(sPp zU3IgLvjMyOBkdG#Q=>j?nSb7Euk`%hu-)l-;c&t$b)e*9OJ|9u3zh-67A@Bhpf1ZY z{j9F8tT^G&c^7LG_ch-)t6KM8ul_&U+Di`jA^m*HkeequR#&^bl= z;#@?2ZiI)Ot?ARlXV)*5c*NWNj$6Y&$uaBUClc9;ZQ+5U{^N-ec&F%92!WpH^9Y~F zA`W5ilfcqnVuOpzz@F>q9*^8rt4kpQz6iP=6c>Mtr(Nh|1!-I;ViONg{CWr1%iRL0 zuVRzvViQx_xar5psYJ!*7&S%_wfak>1=625t>p=p&2~D6t%fgqo3Vef3^~*hQsBUN zAo~8}s%XeJ8>`y?hZTQn0E^k-3UW>@)Y2*Hw~oT9BZU<>v2@FSo6~>I9up)_`rKmm zWo4$E>He!KFYM(9O9t^)Y|jsPM_i`iIKP)!Tbw&I!m7479oygiqNB(UE40!l!u=XC zMRHuODCOI7w{$TCS2)GGRJ69*2ie)SBgu&zAahJ`7L!J`HvN4Ym$?7(fM&ym|LQ7K*XPJ{o(o%7Xy(xr}^~vKOU2MR{Hy1>7|7ZCBb>)}|SaSTysUs!T*e!Yd z=!@a6h@%fu$cPXo0?u>N%}njcPn4jVQgrt^42ww@qNcZm{o`x z|5t(v(p=(_?_58~vd~(I^o)F~?_zS_Jp`_TQnj_KtgA}LTv0!Mq%lXLsllFrGZ_I& z<&OXkiC3;Y?Q*@ELmBw{7l2TSdmVXp__TcOB#P%bN^U7<&8}K?X5e@4Z2G&Ke-gR$ ziMyZGqv>v0yH`!)9g%3S2z3kZs1@B3jS^wAOJG3aP1~qGk|#g4rM0ryB%D6CMLLXT7~N&J0)zoS_6of4A|2H z>~sJt?v(p4LdC8WgQ^sA8NyN>t33Qb*S6WC!%hM!A()71U88g3`7}_dOGNg*fC{B9y4VFa&WgZ)%r)5f=>} z+Vmk|Q|h+?s)vY+5h`S3UmY^R!qs*PjG4~eUk^GlMQnc|^%7gTkQruFFs@mRrGzkI zB#GXbwCO+G`tmi<;ofS|9(S-1;OkFZ18Yvl^LRjs|QPF~DzJUAYT9V19d>4;-Ott#LM8J5TbTN3boEE}qXN40=_3i z_P0@$HBz60973#;Fq@>uD$y$0mOZH!zF{m8pzBhiqfu3PMK_FRR;>_=rUrpXj8r`E zg+;Me-q~Hvu4xfO)v!{GYMtP+F%aZBI$ML27qN7-8j{Wx-`@Of#7`s&(fY>d^VhIn_fOPuAw26k% z7KVOa2vgKx{v9Dn^s_VweqZL|xHbu^HF=M1M{g{>>Hlj>Ur_Xg<)fW*h&NXV5-^@Z z13r-{!jQD(%2;W`k>;G1k?AN*9lv0a(!CY0Mwz23FXichOc^U@q;yPCv!KLQL}C=n zDEzD8K#W{IQw3H_1c@xCojz@LkOMd}SMlFkhx6yv!BXz3!AC5W|NquHbH@d0=KIC- zZ_Vr3hsWOACn$-2p>k*>vyAsLowZypvbcU-hq&$1z{%$FzB(dj1X*IF2ZgS~kizLG zEYO%S(iz{ejpP>VpIz7K^<9cge&f@%z>+j}l+|*Rn|v;e${YfabiAoRyJbE=HT@n1 z#kqKjmTgho0L!uS)sCsC)8mI%YDyw07`l+9PvgX69wleH%Y8ZX9e!C<6|6VJzF`E^ zD!GK{E}U3Ky|0A4A4tb{LBhj$h_PjNEfM+&)WXg*>3>IJ(ZYW@%0!~tbb^D^1Ga?; zvM^Gq%F`sUDjV*ouASwh#uii%FEhCtSsF0$)ArhL26Vu6|B_|89ypNarrzfeAXzDy z@TABCY!0x3u`9M2iydV3ckliJI*0h@v!NfLG*3ywFkJEB#mgB7AnDc}tG5Br%^W^u}r3IxxC8WZny<9H(ULHu0@FyxNJv%F>iAddJ4b8m>XW ztB@q4Et7j*2Y3ivi9sb5qmA%y`IAskvFz7>W+LZ#8o?6*lp+2=ZT>CRl6B4?Nmu$8 zpm9tx%TcSMojh@P^D-tFD`Y$FZ+6g31<+P4`7{=%zT>XHvtj$(58H84gMJv;c9;@M zn|{=Z0Vtv$ulloZJaG{n-bp+-KOX1BFfFMuz(H)n$6?uZrj3>zE7Zc0O6|3do!no8 z@=a+}I^89kJ%IaJQ-Sj0u8oMC4Fe<$zDqp)j!KBL7v}? z7Qj`P7Wp8uw~j+K7&!j1Yn`fME;^#fjO3k6GrsVtoCK#w$_kt8$ygCDVEBR45B_^9L;Bt*)hskTxAWpS(>U*H`$w z^1qcy>J6N=i1-Sepdf6oKS=2k0s0{e}* z6#CSv+%9%|^$7r(BPcHgu2ZJ<{uu#Jd#6mHtx8ZblpA{Xb`a2o?PRDh{<)RWfotTU zr|*!EKWjQN{o+Y*82w`6wdkIc{CHkhc^sECE5dO<@XtP#(ZGBrDPpoOi6Esfr^vo# zwpkhx=o+tk@Cj-$4Sz{B0|m!{Tl{f!*-?u0hzRhpF#q89;MXuJbrO{O-)h~>Msx7+ zSYK%yMdC`lapYG*aW%P#AXKnSoP6g@{yh^^rsJ`d{5?q_au<(y3zd_|7c03MearBLhcO=Nw=?;YL5L4Q)!bfMkWvdn?W| zz~1cAL(>KuDnPjOnDrsPy=oe$H!9f};)g*ini|l}wwCbw9jUDLycgBiiJN>04pw;# z2(X>p3>pdg?aNX55Jee{Lib1e$(beFQo)pfQ){cH+@p3XeG2j@ozW5^)j*N0Y}1nn zHws7j2^B%vYFZkYLL7rjQ;98j@RdBNDeGLFy6$?S`r&~ugOIcsa z&c!<@zk{-_$OPYysg{%d#aGh-m5pSfLevF6Z*F8yE?e)Y{Ve5LiJY`@ySQ8;LbiuZ zytLsle=jIYvXe66V!32+j3pE`7Cp|Lb)Zg`5~JAFTvtXwERVr_6a`$w${UVV^xKpt zLE%S)QhKM(E9lmmnza?($lWpN3JXk1rPZDlV+ub%&xMu}D9hy+7l@ih>z20dN^!+i zabq!H{R}+UKHDcdfD^K`{r7#wbO2<{+Xp}AdPHyLRzxBEFHEi#A4Et#nC|0C<1MLi zd$hf{Btb=I)Epn@b6(LE{~XC4=h_~GI4svQU^oKzf|E*8i_e4AX+|Z3hr|K=?7+59 z>#&RGSA|-IF(*7{_ysi2kQDpll!UfNs}_MS*t(!x%h^(^By(D+dhB_@4+`SJ63&?& zRi`X*Wy2V7gQG>v-!}QguZT+t1O0#X&%LvrC-!SM1de&W8aijq-UmclhVycD@7;l< zE;}HnE4K$(`&IR)^^Vk}`e0rT;($nR8i$q-iX)jUIpGXYl05i13_% zBf|*kZTHhYcN;v%6?`?VqbDUk9gV@D>JsVbER_-11cu)6iM1BfB?b|?@>4Y&nZvB; zR~p&&d{}fy(-C#j(}Jv$@JS ztTasxB@xy1(o_F(yLJICyc6Uq(9Pukd;`soBsyzz2P?PFnv(7(S18mAyRp#hu8vsY zsGj0UXDaxW76|?jT2}E(?{VCMMT3BH+IxFyMD^kG0)@obKf#(F%8Z*q+g4ib@0@ue z@$I^{wdKRDlrgo*(YCF!{p*A`{k0s`~DxR5ol^UpK@ z;Pt=Kl_7rqv1m8`hdRygyYe|yRfT9{UnX8D17>cJUqsQv%HZCVMulm@Czrm9L1a<- zgdpt+K75BYkM+)alpy{cVv-dV(wi>ziyN( zjNlH$u&n!Yom=(Na!#49B77Wf6)xuD#3RiuE@SA8Kr|&;C`LaJJObnF^Ds2Rj{1)W zF!A_-ctg~PB+97Rr8gtDFJA>Ur-4yDHmHbZRA5su5>;)V*jL7P^c&8bpWqX)v^H^7f{T!Di6SONu7%4T15<#)&SEWj^`}5& z=03kX4bcj*QJ2@_ciN?uqE5*KR)C0BOm9FM$pj(*^Dno>^MH$JdA|K~B>tBGV2_t) zzs)ZmKyY05Y(Gx}FP#xy`>pKmJ$ku-dg%{0y63*=jI@TNL9;{@(sW=zJ3nPFX$Hehmkv{iJFbm(`- z_8^?#z<55k(0caqw-#?p|LP2QSpmP&@X845`|Po`O}vA{vu_mPl&RT^#F!?p>4W4G0avR+`?~(S5vX zWgOX_OGx%9Isy17?A3H`mC7BWWAZ}!XU#Ow<)(jj}1?n zs%5}O7VHE~IInmRmt^O?_dR7=A`0bV1hGH{5*#&%TQIY;!S;VTYe?WBwN-COW8z2LMF{q5FU+f656jp;QM`-@D-k`j_ z6$)zkCAC(QntJ;Hi+=)nUh4m1?a$+%WQY8iit5Zg3h(Q{bdNzZQOi@wnt-tAuo&H9T3Pg?MKiXufy)_V|1nb16x5s%~d4L1W=YX+RLY)15c z4QhFGLN2bTrNfLv5`cB0S`5UB%he5lD+d^VF8=h8^-@41gwOz;5G!ET?R4|D$m`X6 z!`j#GSNoc=7>~O*%4F<+o-QVWYyg*Sa8gYGBCMaGilrX)uI5R!EE+Shcc#~&?U~7%Tr;4&DKyhH#e#XzN92*RX~Rnq{01W>vZMA|eT`ufb#tO) zhm%Zj3%IsaqO2}-UkaBR0Rcbh>Hh+Je$Zupso=u@k?A6uxrh@ME(_fnk?vxib9_Y* z`*-wAD5^rxHj^*>p2t77*;5ZI4XT(vraf`yJ4mn)5dp~KW>}GhAKqEDu@RBJWmlcZ zEmqd!Ud-c)Xu>L5L>&Z_7gwrtKOq;Yzj7m@=1KxIu7a5Y(*gZG-lH?^r^Dk6#@4e= zl(>FCzyU^M()}sXi+n^aQs|!XqY!-Stz=We!c?G!IuPo!g>@^$vch`^@D5Bu0OLs5 ziI7pmxLnLgKDkInIh??Hu=ZSMWS8L=X<-fNw^eE0L&GCerr5-kY}~@vDRx@&&eJm8 zJ6oI>gycm8pU8R`u~9cu^j6kMbGS^(8Nfvo^p@q}lNR~e2PB3y`SnNdowik@=UaX- zB;;66myC_eK(5&f0L}sbP+?&o7j45XJDD$7sS}4kmq?dMkD+gaR3Q6S)RVcH?k~g1 z*Bkq_i;7G01n~6Fz^F}-mO$Equ}+UZE)SgWSzDSfHi2Y9<$L)tyD9p{@ZWNoi9FOo z^l_Hlct0qP<_M&LOmp828KGbj(ew>4@afb$()=!7n*#_?oWVMd9jpQs; z^=QW0evK*>`laMlgGz-ceH*4YHHo0S5Js&o83A%L>YNefUXPH-e?hWgGV;D!XWMqP z&460B-`xf&E*PmS8mkqRRPUep?;&T$%e7(~rP9sw%B4l5*|u^-#Rrjl-Rds3oa#3rQ0M#;!4>F;I;_)PJ80 zke1FW#SvW{>)D36MhkFex}>;w1xm_6q@u7>1Ty?B9=-or9THZUBC z{B_AFj;sFlpF`M=a@K^ewl9A`8{t&z>uT&4bSOzu)rylGLGinwFxM-!9c;;LrK7G5 zci>xc{j2>Xo2pvhhY z{~0T6@MsONt!q0N4Be9?qyW|Mme)_?cUPft++!9w)%1Q)WU-o7?s2ZvB_EKVb7}R!~DpC?4StEg)_XRgQP()c79S?!>|>@UD5c z<)zS==&pP2FvZgl+&uSAT;7tSz0RYCSCN7b*`>~St1i5(R$0{e(YK1L(hf!GxDV%& zj(2;YZ3k^I-I~w>H+M~OH|C_3U%IpfwPa7S9M zL6(5%#3Y58#979}kE%0^_O;e5GS+KtXf9hw7-~f54f=r;jE1*3R*J9g$fg7ibdnR0 zsnjQf$ARS<#)!oiZR9O*AHes_K#dggprZQP84qm$PqoNQQcOS<&C; zCMO?U(@Jm1{z;@TkeLV3c@G z;md&MyZd` z4V+)SM&=txOOT{RyJWUZ_~*xKB4{UvmYSmAmS(YK!<-=o%LFlNxNF+#M?0b>F)5^H z7=;MfDU|(h*0(%%*9$!vV`yxuzt3Fe{HN&mHr%W?<2Ah|y2}K8(87H|VOaZs(*Y4l zW9#NtPGYIe&9U=CZw!vE&g)ogrXkA{mNl6HQUF=`(t|b5Lf4-JHh5%!ORkcv-1Z8Z zRq}d7Q~k_pi0;1<``|Ud^0SvNwfX%!^wi1f3WCIAeb$(?~dzgcBqf4=*d@ zpOSW5Oh)CASMoMW=>m)B04G{#i7Iyr?c{VoH-XX9oX3sUpTHoxN8SKAm0Gq}vnS)VwnC=bY z4wDzt#tK7Jt@qS~F$2KG-r(qtdmga74tSb2jQReljfvR9iiz02&+rz??60VzHa_Ng zy}o(Nd}lJv4@6G)=nttBS2TFGT3xId5Q;|li=VF*;f6hyoyPCvhW9|B-&#uKn#u_P zt+n?xsZJEMi>S(LlBZa}Uj+OnTW$ot--CU;(cn+U@9sSwbM>W==0hybeeq|HmO zF?~aN#(>FIBdNVfoG0VYku5^{#Ul0YNy-_?LDyezJ3O5qUdD=6{HM-d!Lw_VEodYP z)lD1?_hUj(&?sy#<@NFTvM*6njNW6qBL@mNKedLFwlF!n;$6;fbL3b!g~U(6Jf%l% z#On&LV*!c~&Fu`SR8}$G6ycu)TAi_cSDS2wS%5JR7g66wpkh+~!}|y-Z)L^H%`q0W?2l!133#DG6=_2AHwi;WkwK`foJ^7_J9`H(a;f zF{QPny^?|Kz=5<|(&-yR-ay{(gKgO)a&aQ0p_>y8cWSo5cJQztEbmHj>Z4yy@l{%TTtH(;(}$5>8@uR#U~ZWOQ~AyaK(tPLJ-?_Y$Euj zk0HOg07Wy{7pTL)pZXHZu03Mg7Hfc7@Y=(n4uT;@a&wz3PiuBOO~6Uiv}uSxfIJpy z&Y;Pw_1J=gZ6JKMcB<#j*~|Z#e#8I|gZYP%z7Ir4&BO?mUa@~wHk+dU{S15eDMHJR z-_rb}EEdJzxaoQTx&rt%UO_pXv_G6u^Uh@JzBsfX>~u^&PR@I4R#V~l&IuO7N*^(n zPUX+={u9nnGNlLwc+oOaZN0q&c?W0=Cf5lX<53x2)(6t{tFONy0eU;jaUJbofVNcjB_ zgviWkieV0&|Jg9u*}-hP`G>(+*s$jK48nVPCA;YxIYX5+gSSr<*1POh3w7&Tw1Yv=a9bU%Bk%~l-E zo$5!ky+RpzdOooVQU6_!Rb9O$sd!l_xlz1>e)F0SD2G?yJu3~$A#?8bk*N>dF?}0+ zT%P-juYCuBnbV@{aykrFXUR$Z?~(IEftSzyTyhwu4_;;<%BxZhC5H>YinkG=W1`WK z^HoR@CH8e^VGbBhiTZA+_4f9@`}M+e+tiIMbRsd$#qB`k+%qY$&t%=Q)uOs%V=xU`>v(~mrb0ndsai*!)3cxx^ws^eyV47{ zQw2OzhV=MPIVvB2UnC>6>SGF&5Rw8=0TaLY$--xKmSoqE*rl4c4m=D)R-NiAWt0f$5a2wH5a-C5d%k_t%Fn zS)hMSM=7O2g;g+`3Tlgcl8Ep25i*=k@vcZKp9WE$ zk!rU+d(_VUNjcWq;j?qp(iIzmt$uG3+wvjs#^JPti`<+~W;q`kV;_Z;GEZwM)FU?o z97DkO^9%X;>5Pky;0=jJ_8rbmP0|ZyzaXj;K<4s~@5|nLBXxHQ&+%9EIKkoqxvXwQ z@B+eiUz%^V?J0}BIB?Tk4)qn>0=N@O&l*$0P29L*?{5&AX)og)8gS!Y-7zf z@`8*b^OXUg;gfetowm>pp9oJj>@h4ImHK1O1hemDn(ukl7xgS7<4b1tFetGUX$%bR zrJK9l$#ErgkL*tWHjV93)4wLZx=DK>BUNYQL{tW7Wbvx9l1S9UHRbIG77tvUCttX= zKcuR3W{)>g&Fs5w`$S{R@>+BoWOG9M5a0E=lT4M1hqE%k9U5h2Szq^3>nq{;_RQIn zoY+`qV&1PUfdOXGBSkdrw?`r>qSlSgTh*ExH!|U~y60*W&o1EIhE~=ya<9)@IHbMO6X z=C4ylQ`J;INA_8J?X?#j@mWa*9fcSL005xN$x5mM0KiG;?~6zX(4RdSvy0Fd7-v-( zalnsp(nA1%5+EljrtV>Q(vIBxLB^H#UdCeGd&5_6u0mB#LzOCE(j=QZ9t#NTfE*!Z z^laSP?~y^&)8@10cDJ~OU<$@`h&xRiU=cK$sT5CLGpa#WfVYBW zDJ}Gx_SSH0JzvjA`y`x3NgCX3$Fwe)azu zlZ}8G2Wt{tRPFyWx`0;4aPz?bJrMA#0n1(5jb#mx|2^O*=MgL6|Mx&+HiD@SsIgPC zh56qDHMa`$|2~*d8~SKi)1~77{pfihzNj9>|6Rn#Y6$!!!a%KJ)&F@oGo(@2h~@tb zBN)_N^l0;p|DSaO?0o@%CO@N>F5Q0((G_5{El&fwvI461ri(5{#gM{>O+I9JZtB#< z@y3S#*;HON=6GOnH=EnApc+EwrVtB6_!Objf;$bC8z<9k+~~{i|M@_pX#8+dHTyqi zb@QgAkz}13_B@N1*((@mdXNR!3G=Rp#+9QmWC6kdEZ=(#*tD*jsaKAkoeDqYy+$Yb zX8Y82XaZ^fOO6N7;Rv#Wi*#Jmo3CmA*JP^k2`k_oW;*qV7L(6&$BpzLRgRZg_SP^r z2L^K>Ulfa3I3S7u-j;$m7>~`#lI$8k_V4Zz}3Y8S$Vtc95Kr^ z0G1{t#`8+q$Gty=`BDq;(n44DOy&!ml>36pF^VJ0Izmn%ppF(Ex0>?wWb2lsVrTiE zAaa`rei;&ez5meP<>gd%f6k$E0tB-_T&d{mmJYMXo)Sv*0PPi_AD9^Ef-D}}(Rc~W zlSaDO*XV%IPZoZS*D3b==794e@?`q&FsL460i*F++@r{_CPJ>XAnc-KiYa`bvn(o@ zAe;s%{bTt-+yeHz>bSNJFgJam3g?|biGUAbFlrZ>J8UCMdxBQ1Bh08>%#aJ*xKx;f zUAnR5W9^>C|J<)d22@gBnYePQNB4Ulu=pC#qXeS+tt`3w2CIo5W>$(b?y5Ho|MPj` zgf^gEEtz2MO&%rHtac39Dw$&}#E5T*u>|0W{X1x9mwOR@THq&hz?RiK(v65#wkG5c zjerI3lhMDgQoyCorpMnZe2hSmWXCJQYOoccg#rPb`yGA@t~Txik{-gM)RGNMrP^l} z^AZJ2%H=@To$CN%_gX+p=+w~{)hws^A}cHprMeNmNgpFOfKLJFk^=@fiv77br=Tku zE>A=DoR=aEmT8zBwM&pKV0W&h zTe4OgvWrAYC+gwLg_=0Qk7W1fRf&6QuZ7mv)OZEWmcs1cr})_+08eNKG?6^RYq8gz zh%V=KlK~yL)E7@a~eT=5yOeH>voRv+0byV$75fN~J_pvQ3R#-+ff+y&19NXL z*C~_h;s4B7g^o;lKGLzC{OlOXlcW6VYpaF}R(2sh8T%IqjdP-c6bAwBbDRAo7GEhJ zXE(Qh+&6uPpf$F>baQd|UX%c^nzN4sMAGzGAq~IPqnI0VeUU^BB>&R?QQW_u?iXDS zv<}MSaj=1@uNiV-oBYkYf$|5BQ?ghGugD_Tc%G=6pnY^I)$;h4#;8_PFJ+!Ha z84dVoyv^bWu*n!Y*UP#;-?IpCxbl8gY}GSLRq1@IoPFOi@cJLrwX1{IRf9EZ{c(MQ zF4`g8Q8i?DaN0%5s5GOJ~w%d2rD(fCov)Weh-Ov#AojpH=%jDmR476CP~m< zjG9px227%HGK@3R5WO0=4rF(ac2N^pp23<5XcQs<8EqT#ApCw|sXl!69tTWylDyv7 z>YLspt*rhVlZ}1@W0KQq5!Q0$7VOL%8<2CwjC^Pw+?S_{8pVA4fotu5?#hHc*oJ&? zOJi&2=>pD}o6$-cB--oYMo(Z%PHrv-10F&MK|kffup@ZL%!`~=J<}w@J|JS$30kA( z557bY!sa`E04$^hwCIOecU8%W3!^`BQk4ae7#_ElWa?vacz*EAwUXY z;vu>YEz{hgt`j4yMe1El8XV_LUS}@un=f3t(8q88oCwVjE3S6&hR`se3Ffixd;l`< z+Wn~X+$uxqjzT#JqFhpb&3;v^FXeS^liI929mo!#P>Do>g^wVC#|I4o%z?$%-R{AAbaWf0l&?Mai&#YhV0N=wa&S zQf&M2b4wanMmv#TIFyWttlVYM`Nmcaro4E+bRBabcB_$9y3SAeTk*-u_o8+M;d{W9 z!h+{T>1$_4B^Ieat|8>;MleuduN7djmXh~n;AdJ7%g=1}hOplEMkItWN4Wc-`yAwM z*+UG)@KH;TTZ-W)U0DbWct%}+Z1ar}S#~?(bH>Q#{6gLnfeWi0Q$w#V8r;G%QWE1Z zPZGdxc00&5Jm{t358dwr=pu~%zNR=dB)=s0_%XfIIOM`D1HK_F6Qae7zW<@m9m;JLo-Ia^ix-3I+Dbn>)Bt zGEAy0#msZ66V&oBz>M#O#6IA2NtLQNA#6+J4U?$p`ny<;9I5yWRSPcx9!*|ka z?P26ODR>OAe*`0a#1+~}N`B}$hQekbI23X<29n;<~CD3^JO`Ny@p?kogxv1@Q6)-;u5zDMS& zq%0yPPsIE;vqEIqpAHbU8vJ~>N;`B65(_J`K?K1Iw5r~#f}|atIVf8-y+-e<<9#pN zM8CtIVv&VgK5&VV$xVhLh{Wu=S&!qu0kdC?7kqf!b$^L3$4L!(z-3O&!^b%rdgLSGH?slCH?Y!|HcT7FY{>b71^( zV!m>OFM%_H0BNHA@ZwLH(*8Kwv{+*#pM-)S*L9etTcIQOoiie0}tiDv}pY1Z@*EW@z&%E-hUBrXd2 z#Uw~0@dU4I$eQ*jW8kMOSWRH+rwucaXPLX4zx}Aw7rVIc$wiWXFX#Rai5$Z565U+M zecoeD7HNLK&8Pp(X?+{qAJ9b}rho{8%=zUnDD!XT^+nGEgFX*OzrXmB`O3eFkAGf` zly!2Ccbwzc>fHUWjaRQvakcSutV<{?OOUmdKfzJc2#sN3$+Wb>jq4)IJgR{2sDu0B z@Tc9S!qAcu+&`tW;t;H;ac7xXvOriH&OX}r{)snAbWMJLh+)^gWCekT%O)|J+7c}X z%IfS}WO~N3kE8RxVCbK9dmi?C3>3-qWLWB*crEmMV)S}`cR}!W{5SiAu?@(o10d?1 z-d=WZrtO0H_B{tI)QDfeRwQk%@u_)y5R7_Ed#E%p+<@=7$0*(NcHu zd1I2tF`e*}8UTJB?_G|GsHh+m?{7T=`p=!MbSBFP0sHIxqBlgdK)Ff;XFGIKhxMMP${o0>5&^!}m=SvFSv=k_QeqJm>xF$5br`h_n_+_$sD zNW`j<*R5z|16(M!io@c0XVk@gsv<5#nP6s)k$AqdZ;j~$Z^s)S+Xd${dq@lLs~izB zc9?KX6`h&E+{9a#e>j5kNG>{z6?vz|9n84~5?~F+ap=yYrcZP&h7DBz6z?%EIcN3V zp$>Kr)QyJ-%jS)b!9qTOI-$4Oq!_tE`Zaej;9vp^sr&LCe{iOK5z7yW`R@A$Uo|Mk z^wGV==J)fsoRMD_CILo~T}~qZg0(VcEcv%evxGsZ7se-{8S6F0QlAnHmBo5rFA;8! zv>qP%YLs?CB7UzF)ng24x%#;Dj7F_?kFyP~lh!q18l_|z3)vPuPJM~jf=kx4CZ4|m zJ-1SZZ8O4@?&`f1N6U)WEo}nFeduHq^lfn#AcY-e6UHn;4MGqTP1;3FVF~|6Ehz;p z4$pi4kAMA_l0ZMRM4!q%Z5rW6|CFC*b6|#dinL)~K~UHA5P7CfLJ>{6G%AJ$ic9#p zAng2cmn+{YNe+R&>k!{~Cn=9c5ajA>P5}vUV`UrLiWahp$*1`k{@QUPk5#)TO{kB1 z)i7P_B4n_~&bKh92v{(u43OpMW4e5|`}>}02A_);|1beyXzr5qrXwT_4W`U3{)TKy zV7>|K%yEE{Ki}=W4cQr~c)5k_(t+x))?tv#yHn|!*XGe0rZbL#tu?%J4sp68^K4{6 zHL=7w?!`Qe%)j{BiLMU4dA)&f>6YO;%m>8iyzPq3z8For-M{WXVziy`Jueg!dqnh> zB5Zm1DY@_|-SBqQ;0IaAOWNUR<1086D2t{O<};Tfz$wo3r=QL&iOzMPoqX#@}1w5hj$Eb zTg|K_1b)w`PXR;OCu4CnaAIqx2uR^r`9__HQx)wMS+2oNrC%s08HZe#Z6H%=fbDubLx>2|SZP#A#UR{7b9o z!m_u0n0(-gxr0bPCcQ5+ML|M`rViELib8A{5X+s)G7ACjRmD-MBcF{7QB}o{2}!ov zYvK5Z%tW^lU!MnMF;kG5NSVOTq&`mIttkwRp7MdN? z0%`y)lKa2n8>#T5m$UCf2D0w=UH#j@F&K{XFF8e>DEcBRPWB9Z0Eaq+&SpV_y%C_xQq zZd|(}QaeTEvRuU;tPgFU#!Kw3m~9!TcPu`Yxga7!$NNw|>;@Zphs+sm^=SCrL4>x| zy6x8kkJ00qz!j?o>P~=$`aZw>sn#Gu@j`0j2DX5$XQ~;v_tu2W_^XahlQ9M5rq8R` z<|HZDi~@Z2%4=$H7d9OF(|zd_3U+U=Y5rZl*i}J=r-H#Z`-wrDe;7Ty$pdD@n_EJ_ z{CO@O$3cvt9AUK~TFi91j*{bGfPK8DQkSzXVaWYBW*73EIVOrUk)`UQRnOs%-VZ;V zqY4i_o}Z2l!xzYPHXV(-bfWWa`EOnoV_TI%rvgNWg>h4hb84%zT7tBbG7tu-;Zz>$ zi4!qZiYyXOpAs!|!N)!BDn1_zma71;1Qz{$yhp0+pcOjYKsyT!48a|NBn!shnNmt+ zazmvOPkG87R;wfIma6-TzFqb0sUEIPv*xWff=t(;)OwntPYi|jvo`^=qj*lVz3>aU zU^J;pU17?nRIwjAz2ijgJoX|O6q6Z)&TXtQQS$3WCnFK*3;BL&Qy$cBpK^Ultwm7$ zv536Z&Sz&4<(Fr6iqpG1QM+6T2HwTBh-CKCHN@^Porw5tM%`0h=0!|TozfI;=+z-{ zm(}Lwy8K2&Q>J=9b|A=>UQVzl#`!ny9lsr|*GE-+Q92CP=QhS`efaGCWiWR{@l>!x zQB#>0C5**4*Nzi$QbR$Uj++a=+xZq061^!H(bx&LFkb93i^O1onJPUZt!U3#S;GZ~^aUNf z*mkMi>5J5@Lj_lrttK_6Z_-cG@DgjDlaO?JD+`C7q>jhH(yvZ^IX|v@`C6DVo(*z3 zHy-@SeQ}ujVrT)1X$Q$cx!*}YX1ZZj&cRJ-ZnFxoThc>*q<9vW2fAp3r4ve5khaLL zx{w5Au3Uh;VV?|wL~qcww#pS^H|?`~f0kYwV>LZ=qsJohlVUpBjPq`bg^r%or^ZLj_QW5Q3JZvufFb_j6dc8R@OUzgnA6uP;>B}jK`PAP zik0f%K!x?y9WFn`=Yj}0A2FLn534kX8X_JxCaD$Iod(s~IVRw;LprVlhm=^;V9J^hcHu)8s**bw*242B$jmMk${5cYmbG&#aYclo9-(mcR-aanJ z5CG_}Uc4>aPX9#VnzWj=@X3{*) z$iAs7e6lq^*qxB-!%F%Zm23ZQfV84Vp_kC>UG;0Rr%yGZa?RKkfS&$-j5vRewY2tw}EvJjsj?w z8Gf*mbIsR>!R0DuBfhXN=4kyyh`jBL}P*ZrS`; z_DRVF%H@HFuo`f$$$hc!%t=mK>|^=FnKa0`9*3G(OyQp-MQZl&-9G8ImX z0la8~JLkeVrUIgJo6v;oAYHaJJ~vJmH1@$H#c2l|Sdux$fEHm7;g6^#a{!tP!I@Br zFnEs5U+^jJTPnthBy2lx#cO>`iW=Odg|{M=&VsXB@)|J*Gw-^!BxJb#98sqK;3u=-Tu>mT>oW-cK%MiFjTa3XZfF@*h zU>gCF zDJ)k_(1O2i`6dWoUFqqp;o~+xLGp)B>zX5{Ul5g-2NqgU=}sQY4Z>9PVDI27zJXro zE@86ZrBR}bPo1kA;?4%ScV_6h0UK{XODKQrd%T!brt4Km;4Gr9<`#lGDVdNavmLH=x#KK z_x`HlzG_Bs6-hMXNEwABM+aH#alD~%N3rRt;3jeldHdiPI^(}578uKwD1+gg7&T?NJb9g$N@kp&V@grISdKn4j)~lkyGk z*~;eqJOZLqPK-ZiljrnPdLxAlzT{oe(QVa$t7eFV`{zP8u9He(tJLGLLk`f&0{j4w zL-xBBN@_wU3H8nF+CM;TTL?NeTJ{6E2{>;QMV@h0M>^>*kL{Q|;p^pcV!SJQ`GBOk zL-OIxnhSD``SrQ0sK&4UzgBoqaJSh+E);;rhs%P2kAjtjuO}yZV?#iS6K<$28f+H3 z2K2MNx;1I%IT$%iix7T+aWSkt(}VzA5`9^DIX&2;F%a2dvIQc>IppT1#KibN%D$=W zJ%s&0^SAyn<|nUZ4^<7aMyQgXYV?v6yOu*#5-^oYd=Wk$J6z)h9F8{NeV1gB3c+qV zS0j(^sX}jJo5|&kTtfky8lU|(0@+UaB>;Zza7g^DK)ZlXtNT60m84s+`k@5Mbq09WPoxfmQz!XL=7%BpL>NOLAds z1n9aiy34f!hgxth1Q!qrB!a>$w&2KkVKfNsdUck9_Z2Z+vNPbapDudv+cMY&8&Wc( zHk=3-7!wlkrKv8MA%R2OnNyAFdB7k}la`efiIrmn;1xd#^3@BJG(oTGU!tsAjVSF? zO75P%V{B@l};qQ*xC{vEdJ z*mh@GjuSMF4jA}8w5;jlY5Fi2EqClt|671%9=8co>nVgo8r5T zJg2mS)&r$!saDn^vVX9<_|spWncLQRkt!6KBg|q`{=-}84cGAs+dGzjNOI<(v%Cp0 zgR}k{=?lo^_fmv61+w2R?gseWq2=HXC(DYlv36C0cOg{dlrmoIW}06-Z*+>EgsKA= z&pz0$u-O+<{KK4M3SZQA%&|3J1;#^~^$E1;`5;&QKvZo+kqJh{AS1TJF{g=ULX$>B zXxa?H5FFp+B5X@Bh^@$We%E>Y(NBHfAgMm)5AA=$_-?_LX-y7<1CykT+(#%Fn_N zsrqPI3eA_@G@#EuZxLScS%WY~DTgJGhgadL$e-u$7FUElG0)DN@1qY$seIfS zlbZ`nm^y-T_o;IwLh1}I&Q#zkHV{O>7`y=of=N3dz!cZCIWcaR68Dx9O1uvPODc8H z{!tCi=o&WR}`Ep~jow_-i?R(LG$ z6dBwMTK5sH_`LW5h{{Eo>c#?_+z|20x0^h83SGzn4Bq3-uw;$}fPYVDABNLfcqXs= zfFgM_+=QXsmDjJwn|6{^sXI?1=$iD5|1zufVwF~ZuRx6GAjeA%+Ag_1AyDUycx_K; zq;fDyPr_m=o(WLNR=Lxix%*`QrRmGpCFh2=y{>@z)69*QxsFMn=_MtKQV!wb1yIWi zk}wTZ`7Rrx#6sz%}E~uJy=W1j} zFDianLZ@tGQMJ7^KC9>74IX2jPY?Fdc}2u&F@XDv85kv(o#d7rm8n?w-3EkrvGo(h z6|X*`YjnB zxf8P#fr=W%EVxlN42-gz*$E-^5@N{P;Yl=QpJeSr^LKtb6&N8Zj}Ke2-*|T+s()8B z_xaJ>{2oEmV%7GaJU|G9DK@oP7AD}q7(JTd6OWx6OkV1Is$koaK*xM}#rK&HR-Qvy z<9;5)3qIrY85V6N3pOC=_Q4dy%tsa-S)M#pHHH)_qhk4{0}hNYNMQ~nuRUdJ9YjdW zIc3}SUuMAEIP1=>$YB^5IQwZ5r}9{M@b$<%CQB!y;n84Xh_0gWxw zkSM*G>TGu}4G6uRqv&pWA+fUc>gRTK#ql3!+frZO=z&M{@1y0nCc~}E-rk$0>rCq6 zVKmG{@2;pYi{rydgq)VlLB^6>+bTm$J6uJNF?-}n zlP}wRHf_7wW2(j$J!i?Z1I<7hStNnxKqDEc2ncQ%} z`YfHU&Zo(ZRZj$*4x?opl*Y^~Jhi}}(qAHGt;XrD)x*tO;LR|!9Lha==5FLg2e>46 zV4LSSmy;y=#>%^XH(SHcgnin)$8m)+wRb^ujOgqHF<2Mb4UnLpEuozyTboN7rs9U8 zVF)5u>ftfDeRR@mEmZ|wSOFi7&aa3Gbp^2$G42 zwZFc}_1DW)fcy4QYi~Ns5C)lkz-7D2nz!9=hU>bA+j-D|5Jqkk)Z@?;v?kuL^!@8vzEPyU{pZA^Tb@nV6|i2! zI)@5RsWwW$fxjP(pJ{Rbmx`|qN=QB@Wq=I@4D|BllD8kIvjgAKCePF{-lyqXJ_;9~ zN`0}>FIh$>^inLagid~0*xqcPSbqiEXP_KBTYpzLID7MIdIeMUIrX;6MuoHaJCuok zbD#2ZJ}g38K?U1=UCO?L@kA9BKceL>Eo1$A;=C;pQWg4WOk!}`{q~jal_g-m^tZhD z?txObqbrsN$HhV;mTH-!>MlJ~HBQ-A*`f~kEP=D`^)bnuWPsP@t;eC%>VDfE2N|hd zD40ZYDK!w6w`QKhDTj;#9a>VmPkEfqH6QAP-M@7c?x{Q6-c?X_v<%a{;D5Uyv5(T< zuW!{~6kijD1%otS9w1r28ch-iA2@w)jFYnePMB#(xoIjPYM`fY-I}{F&79PmGP4KN4LZ>ozY{`Gw!!nqwDU2|vDKXi zc;h=P>U|)yJXwfM) zT(sxRa#80!pHn1n-qBch9W6(N;OL6)7IM{-{k%$j--BFjr3$iKc}M87o@bO$+H8k( z@nLh)%G+fW1uaB@bC)^~jxs_jdDtaHShM~!^F1+b)qp9KH8s?JzMwDlPkLMBc!#kT zo!f}{o7_gUe+gclbGZK(=B zFX5-*tc@zbg_!o z+^+r8ols_gCOBumYx?V2N+9x53;mNIVpAQ8`*4WN9D-aUYraFXl?TLqXV+uPd3^Ux zEXmjKFQ0JDs8c2*`jJxZLmroFmRwWHQF_?r0GIPxe z;}%q+$dnz=MmBK)^2_{*8{-UVJP9g#YIrnwuY~2BxB3a3^+X{h9=l37Ii5R|0 z`dG0cOx_mch8ZofIA@soF!L+2NlN_9lL%fVLohTpzZ@`vc+3=VzfklYd_|H(1^^IoA*VQckhU*>B4=h=`vLUXJcH}Mdfi3~nV zir$f*o4mXg*)%!2=I4)f6FYH2z$vOnsdB>a|5Og5^- zs0uWvyndG^#4=KEV$qp9;{@Mz?SSL4o}!?jyuuc-Fa(BcpI062`z?Ztw-r}#$8c7u z`kg!fbb=tdO*vB$bitJzn|jxLuGv%$_FkujD+{M7tUNXJwx#A4P&7-oo)$Lpdi(Dr z@H^N+CVH8QViE=3dZQd)Do8*F4+FW#hN#)%=~F*U6|2nyqz(S_TUPW-$>s`lK^LZM zs{ZPdyZ5U+OC+6FWP;*pR{ZMp>U^0D_b$1UUt~Vk8Ks6mMTn8AfyMAT&|G(5KEvQy zAV&^32XnMb#~||8gacqf*@~p((F)5qsEflq_sf${+tqX3eWw$lMLE9$yqa(aY4Tq1 zah4{x+T6z?A2UGgP`L<&2m6912&ds4p7d%*%8Zx>tW~ow(b_PlKo!zrQJU^I^PG<{ zgWQx zXQGr*)*s^fR-dF!`g?=DKf;n-=ct`=090yQ)jfN|R?s$aTxk-j zP`9M}Rb^|(WeSLLo$e`bJ0ES@?2G%El6W3Tn_q?iOgB-tZVAvj!CaujrlJC^XCb|9 zKzwLYhprr8-rac8$oTP~EofF67GwshDEs;`a^m;9*jh!0Z}-1P1&GfRYR0vF1|Y)? z_VUbEQP%eo2CdeHDFjF=SOf_2#4W=to+x1m{q%ox`qa}3rIWUG@+L~H1cykJGZVgj z52FX+?soW|dR7B2()0zA9a&bw$|Xam2P1u?7dG4iP{Kg_+NoRjm*WX(EhcE?HC$u5sRJPMRY}JdqoK8z z_%4KyJEwuDwzmHQ){W~na17wu-x^-E9Oid_vijVem>h)Q*weZ-eGwA1U$fy#s$Lt= z(SW_pLC5z zX}%wSh~P4Re)*#<__HOhh8ofP39%zG&J*U*Afdr|%JGAaRT}D=p47(`_;Yfp%`8a| z4>BLAA4>GFRyD*iRj6{BB|qeAVo6_$<-!;cPE9q$u&}`q$GWPN@c{0v*Qlx}VWA*3&{XZQ`6zYC!l-Q%j zoOltLpWoV|G`2oxnXv(8TXt08Zd`wI#gOm`UW`gOr8y>X-;`lIRfxRl{bM=bu+NiO z+AnQJ2|K5aBsC;_(M#3(W0e(ialc$mEEAbSBMJQvgR@za`Pl2(+I%pI1N;R8ugn>& zKnEaH0=%bJbLQOVd)8|Y2Ybe0o*mJ$1!pzNxn=Lf`NdP`etMtO{7r5yZLpQ}oIpx# zpf=0wzt9?*TF5BE18vrInCPihu4`|n2~@Y=h?S>V)jzSK$e`eVKhqkQafOWhUYR5o zAb~O(8v6WILmn18V<-pt*_+A;O~7V#Y4oV42zaq=fOD1wr_9z|aq+IF&QZh5iy05E z$h@Yhs9%$kySX5j;SgGbgV4T^v%sKtdtS}u!~^aWTpilAKl0&xyQv}`|h*-l`ZuA4;i1;uKMqXsEedd*Rmbbz?-c;@8$6Ig6FUR@+gS}I- zr&JUka~d{Mv6Ou??jk+wR}YTc4yu1Bbp)nE@b#^7sI2HBNreytB<7HnsS;5un3*XB z-B5YW^H?C<;&@ynBLHHfyLAj`3n&S7i&+rP%?@__Tixb8RQkTmk!a2!WlcIN-bf=D znO7M)1EVSqi*}y1T*yoa{Pqihsj4+psY(<`h84s*6s8mTptsn62i5Hh>;|E|R(`z- z{*uEFbmPBC3H@@2m#Rnip%wrW*c6LO1*7Q8+edm~$~&=M3QiwNX96ehv14dNLc*}5r8FF1I=Lc3Kfy1n@^Vr;#Lyx` zSOo-SZ(`Q}sSL(-m0DsU&PX1kGBlf331`l|y*I~S-gP{5F?;)JICd=T-Y&Sm!)#> zJHMJ@Q?q45B@@En=#zY@Yw>~(s51lz$&Mr|Oc-egm@Vd}jz@^~G&TplTlil5Zpfx0MPPu@c>1*(fxz^?# z3G2^Fgtw#yEdS2o840@{$0VlNz9`qU&r$-5Nehur$M|dU0uKK$U?`|ksYN5K)GoCT zVKa~(B4=V-3ATJHvI;G0nXmW71~04)aQPYUw$Cf(#ogKof%vZe$}{jB=F*AM40E_T&804P zJyG4UEZs0<TJlkzNKv-Y z;`NSdVv@|;X{+&GblNt{k&o?^jzsBi(Vi#H@a=zfLg)X1fOcrTC$!A#0GdZ+-`Gdm z(5><;A8)gOlH>xEu#12K!~iW30xO=1{c%UZVZYb$)=Rv-Tmre}kWU2s3H1d>!Nxwh z@m8cy25`z*P;1;bb=qga`%8t;52q&2Z9Jkk%s$M>#o;4A4 z%b?mxwDrlYZb?rXw5jJb|DKH&e_|2+U23|Q`wOF#@X14Ex#BU&Fij&0MY|O43Xbj! zVF?68+64!#4NwlWyah=+O*V#RHE=jX{g$pd-=Bn|5|Vc7bDle`Qa5Jj|78g5gI}<* zU-y%NO5x|9ANvxVm~9PguxBoRa%{|cN@wlQ{<2WMQFK4o5kE@L5j~nNel4(Wdf>h& zVB5?UVY-~6^?u9oAy$X{kclJ(ijIUKBg;-SBPlshubxv<5{Fd|V6TbLSvP5k-ee<8 zia+TTJCZI2*70LD)c_Z=0*>i45T&*fOM~6Ri$|uOixw`FHOa^eo!UElod#!&>#3&= z`k^%+abld4-A0MEO^6;r9+k!>&JyMrpiuWB(ZWVbbhc~KI$Rc7f+n1_DO%DgRD34oG&e#)vy&ntg@ zjS2&)+y)~|QJ0il0ekw=q%HnqG^1Xchm!&Egto6Vv7Fl51gzx4j{2{(!#d7otq<&p z&T84WH0a;1mJKR^V7i}hHiB9;NEE=~9aQq}xV}N6E}LB= zRw8sa=)g&l*X@h_iFC_1XAK^xU)wl4VdSj<500x(V-DDtU!~XcogGl za_eyY%a6ax&_Ic;JWN$;@g;B02o7BKW$H#YpWyaYk^(Vh?V#mcnzC)@ZZm3#C|6yH zygBB$uM@o|vKp2gNuLyt39=&1uW!mGMig>&r=YF;w36Ym&bw>@bJHGGbIYMYF>gVO&bhVM^HaIk{ev3SnPJMb86Q@0-Eg#iu9;S& zi?>V9%H7_I92Y&2Yokd)_h*KW@3h0`U=GprclGb7xr16~y8g7kd(bCm* zw|91Ds#Uq&9wh`O|#$d_=f#z0|aR`Kc{n z*NRjT(|29eKdSd9W4X8uX<;9>wKxTATq1AZJ~ZVGz^N@sLcb(JuT5yZsc@TNkV3v3 z^DGRvvYYCG|Ca{}%)yU1X=j_z{5X^itItXp+LXmq=PlMLlJ!5&w28y0UXB7%Wo^r&P*OCbk$jhjtv zgrXx-8q|EPe8Gl4N>POVKdRm;EXwwK8>WZuW)KibrEBPtkZzQeF6nNN6r{Vm1(bG3 zK|*o}>CT~3I=)+<-~T<1Z-)(FW9GW&T5FxPCXSUzL!AUGUzxFBqUl#aOZ-V3gTUs0O+8^{7!d}*HcU(cZO|asgkS}3XJK1E+2jcI9sA^OH)~&aPRY4|6adfMD`b_7Ou7>3dps=b2rpMJl5!XXE%B2pcHb-;o}tM zuNjOtQX@St-*9ryYoy^7ZF+FL6qh9M<71}T^^J8Gt|;_$X9laU$j(BQ)&Fy`XmVDx zrZ5U?zfpTNGDZ2>#uCe@2Q+a6c(&n)dx>EsN9ogN6sfD)Ig8D_oPQ07MnNCd{Yuy8 z3l2W;j%oFm7k|=T!~cXk$;J22)ZJTC>JN}Ae@Fl-Ni-~bI6fmbx^J<-Kx?-T9Mh42 zdoeP$1@XzBAP8YnITa5$UJ(pDLP2K0^~7w4$#o8`jj8@PcDfcNLmc`w$5tDH1+;~H zXMGJd8I&*Z@m8YO$36&b+ghyoQoljJl35>tih;e0u;$hs%=pL?{ab*v^y_is%qrXY z%80uUzbJrWs%S6VyB(CN;rZs;U=F?>Je+S?)WJM_3v2h{9!iJ zMz;5R$YF=kq=mwV$S!hx|GGz)lxHDuS>EZzD)?Kh53+p^D?g~DtV!gj7;4r$m590f z+asK}d3Dz!chq9ZjIa$n)&F#fHI6Rdr5Sh8+|UUXgO;$y9W@!D!2ymurB0ERp#b(t zN~$M95bE~Cz!QoZW07h^nBSa?+QQ!43(-1r=K3WznG-eW*}R6b&*e3Go_FWpK*`37 zJGRkfmm6W6m%GlvvX4KWEAGnuvzZ@$&Z<|s#niT`QkoP=dd&}dDNU48u*HKox;Za& zY}}9LUXyTJ%2UYllIi^MKcnJLGuhea0=`Nj6y!!l9~`wIm~52|3z1yP1`fB`pRR-M zfw9?AqW^k&O6zr5f*2om%Kfek0f!o@upQ3muT2CK zE$Bip8Ml`*HZC6FlORfF^jH^<12pj|cW2f5T||@AYU~z5oJSI=X+|cp$smdCgb}hw zZ#Q{i`;kYRjqm9X3iAL{EWkhg+h$8+hadYb@WNkH#yKRjWSUgg@Y!>$4E;Z1B{51` zkhm4o3;^)u_m43f|E%DEckwMRD&u*+_8P=h3o=kUCO&XFSXDXX<9U0q@3|PGPXmc1 z!d)+9W!GlBfE^=>?MfwOQ>R?24Ec=F89aDMzB@K^t~BE)cRp~ylzW4giQslc;gq`Y zUQ1#NpG5U^O?InQU`_eEGh#|^L^x6Yno{ot&h7Es4jNh8z01y(VVOa&*~pI9lO`Qp z)#Clsh%GvPu8reYcYUh`b|0O`AHNqKUI@!fXmC&0+_xXuScH5;zb#7{!qm1dto#_J zv6T{Lrso{igjalGIcC3P>$MP+XyRmQ7?G$hOO#lh@#JsafK4WH=I~u7yfqbXAo}fA z-4Y-h7We_U@LChV#>hM`ewb)*DF+&9s!L#PM{`Yh#lGUaUpTkK~ldo3@ADcLK z96S4^B}3qyPFN2xnamxUV>8y+VG{EHfsvDX5WV#5w;yK-~IfAerBx~hi zjbOEU3hP}2Iu<84)vg3Qe17ScY-aGQ0>_K-{IjK)VkDE|t{*Vy!QyH+Rju3dF6VHn zs4pABawoAC0vvn-WEb9?@PXYlzdm;`-Vo9*wdbX^0Bp2(8GrrbajQH4Nhr&xB~U;c z=;Zqo)KI8@%dUMF8zM~6U&3`$Ki6vAm})fm^}*wMICl2G(LKDB=Q59SMXw4`O)}+y z=XcKC#kUiyj?1sUG&^uv3TsgNBk4U%I&aVic+7}4(~|Nc@CRHZ*77=8gxe3H{WF9J zhFX|ZlF;Pnx0 zC=V65wQj%FYg=FMxwqHOd3P%Kc=ijwAe%uu+i5JjsJy_1(*{!xZ50l<6qQ{v>|P@M zpG%RRm0t(DnPVe4bge1p`TI0WJ|!E$(!(TAF6~cm?A2~a(q6p+EPd||CQrsbKSdhS z0%IK!gO2$=-$6D7Wb%?IlBy)ue7-sHQhQFPs@r+H!U;XFC~+C2s2S^Ab(iy(`LxVSo8eUP0)4BL7Q$Y^Ys<=ix&tnwFt>!eSgp+QXsE___JQ0 zMW8#Pnj`r8;T-v4DG{s9p|9~n44i}FxyMoRL-3VVE^uN?Hwteuch*20B3Ye{l{_o+ z=*~NsKX#&MiVl5$lYVA}VZCOT+l*RK#;TC7tr#i*&$H*Pdied;(WM9l>Um6`8!Cm)gPi3$El!SXl@nBx?z9%0qnx~A) z8b5EgpJ^%tLAm#&pGh4xjy~jk8XP$KzH0r?Ti(78c*|p^I+$+?LB+iHfR>f+HH?zX zMI3FEw9Mi^3=kTbnl{ag+NFn{%ns#-{Xme1pPPCTh^dYW^7^OU`xTtfYEo&v5>eQJ zOj^A-tQE=I2p_7v>#U3Iys01i`jph=itJ1ZI2t@eE^=`1E6{Fp@E>`lB|sRcK}PV8 zS1%C!kHu5}lqN1;G{9+1LJ{oI^r!>5*K$UW;@jQurE5~k{2CDnP%25E+i6(>^p3$dPpawGdwKz3qHp~PW0)%2J z*09syc|m^Hgv@xMZIJT9P>2B!!mdy!pr0i471_g!3)piiV#hXvmy2^5{wRBbSTYmM zw`i1qjGC4JpLF#-4^-EP)adCL9-^~vaK1!O0Jny_b*THlmolTgDX?5YmoV-uM}i$V zKCahai@sQWrzXgZtPF-575IjV@LJo9-z0ADdFZW?~l zBIgK8c-_-sNbC?pq}C-=d-nf~TQd>k3P~_CgT;O61Fy7@)3pA;FNqLUE{F+~AV$5c zoUPB8=l8g0p+NaU&giVHS1#R198-d$RTZWr4US;lmFgKC{-1`~oYbB0QHFZh0Ms(T zAxJAzV;NpGg`ka^Oa`n{cn;eYJQOr;a{aQskSMWRJ1mwj!y6AXwnGxrbG zmg73;`!8MvF8x{tUe-FT36n(UoJ6N0sT73L#5Nl?JbCj?a;Bsdrj9O>UWY^C`% zaSTo&;!szX0pA1wp_pJUmv>-InR=w@^dJQF%PA&CW0B1!G2!MT?lZ- zL6<6uDoysx{$_Vj>_FU_H2)lefLVfTNJ3#=dm_{gi=Tvrm08PFV7PDQM(8e7o*Ni}n4Vp9BXyfegRM_Dm)z6Ut|Kq~xNgElCIU&n zF=(uDBEsrV-f{>^q?bFPV}c%TwslWc%a_+w<3O|MXK+O`#ZkB3bd3B;qc=R^mXlMF zjEDW-kof(V`4_60SvYy2Vg3`diGW&RS>z~mS$fE{HwH`+PG6P#2O8SFtp749T(-bm ztP#jrr;k$^4@CSaK`zFU^UXkEMUQb`uGq|+5FEXr(6}@1c;|mg6*4GXXuzi_wOJqVZNZeihRzMpPDo z8++q)N?UyM4B!~xXBjY0tub(|ny?;_6IwG$NR$6;-au`9!p`dZ+VMTK(e_{FZ$BsM zF9o7C3Ht2ESUXE=->c)}3CM5vnkfZoZ0c?U8i(U`tv06y(Uvb_`prqd5zXq2tQfx( z&bnA|(`A|zljZ`RX-SRR%jH-EW~NQE|B)Y~A|$wH#{!)SF@`ITbeArJVsZ-LH2(FsE7NP*SJNj{djHllPkI_Tg8wg z=WvRk8G51mGEQUByo{Nqa!Z>)Vv3w%WAZ}KLAjvwjfxQKTAbm;qyTeBB`qlGK{IVH*E=(PsUUK+t6&?SH7+JOZa_mMNkY(fQf zJxwwSf*J7gw3H_EX0(W5A49uQtVM(<;LU-b+q1PGs|EWg@B~7THhp%kZ0*XMs0yW? zJfJ+y;{|$4E3e^;eWm)7?`eUi2a=#!#@kurgH+Q_2VPbLVa91g;3x0LDkPew}(JU?UuNQcbaN+u%orGnf~S>sgVN1!#+YAO6!8Q@{jW zx>9@L&H#lmPb)U2g6P;HdFb|Z({n(Q>|cr;Dup+11?LmJ*yW@H-jpeNTPT)tuNHf{ z^!000&^(egeOcshfuE}H&@zM0ZHc}RO87dHNL`E*zJm+2XFsLsAd_ji@3u1`y}Bwv z^jiDr&rI&bmdtd%VC{eCkMn-n#9Nhcp`2xEGB1`P-+1hZGOs|I3N_P< zKKoG|MO$emJ~5Pj8)V~)_|~m?D*C{{`B2S6hhFy6u8LdR9c>w}CrDOG;8h0_-z=xG8Bay4)y`QgB zabG}7)dUAVlqo2Yk|>Sx5Dd;+A(Q}>@WYDSBZqKvxVZJT#5Q~QN-4m>Tmn`^I*ZR* z4d1{6N#dM1x^J@5`^GRDY8A|xH-;mpesV{tgVQiKY0YrI8mSj^X+j#@@_k#LM1eV- z76N;{LMwwSkWjae_&6>=2XU`!k?B|>m<3`AdkCXY&G*SM&{vA=9rFmN)brJ7_ zW<>Wl849@SH)H&gHY#jGtbBK-;%|*ZfDa$p#{l8B-#FA*jI-ZZ^Y@Z!9=7wC&)WxC zvpE&kLF-iDp{u~i?B`wwy+htpyek6aLt0HiE}Hl>!^*>{#M2z~E$Q1A3d@E)3x5sB zK;CAwk6FK&Z#~FpG5rgYbYB{f&S~&B#-|zNO>$d*l3#d8`V&0-Lgc^HHnYU99ww5> z%S6onlpWVar+0iW<`33#pKe($tIUvL{p%0jKSG*_aoOTU0}$9WAp!R#_i1>;Ca)24 zvQB`fBvR+DJF6Fvfb1APqjcE-92>cyYpHNiGJa)2aDLpul!AYLm3@2 z0EYhMKjCx6O+{Yf( zaVs_;$N?%2C#9nA#|bGi{+rf&Kv|cqpwGChF80@M`d#Ui4DtUxV=u%m<67fz!RenW zd6!kQ`qwN(e?_zNw7X&KDkc&u9ZD*(k9(`ux+WcZ#lD9Kr=x}=QMBrckO_$G7(90B zx;uU!J6*{g)}|jee&3K&Oem#`^6=>cuy}!XWXT0Hv9M!+`ideR2r0qSQ^r{-~_-99;f=ysgm0U()Mr?52Z$=B^4(s5-1Zb=}&rfSN zMx6&{-yu}rk`Ja$=n28xu__Fl#n^r3w(fJZmxOo!*+Lv%hfL44DIZx1-RvPXI)72v z{~WP|QPi zMwA{W=5Y`c3{9c^KhE&nepRk^V?577+$1t4&Y%AN_uVtkPBW|u@-d~2HVM_f(G@(V zw;^VFgLj2Jkf*J*^QYDC5Vh(35rk{FOAu3eYOK?QK~u49m7-XrM4DY!O^fpS;{3vX z>7nAXjHnNA7a>`OuFmhZA+p7%;-c{v^d3 zfrnxRcm#KhM;e^G-(59Jt!@k?Ci@v}hKfh& z*u*8GpeE@|614;g>rF${;xp6MMDmsQ&?x&DkcMPMV9V?>z8S_=oJ zZ#+P#{AW&qvS)V0kv@2P(ToO+{JuBVMTEyA8$(Fek2F|X6MHmR27dEOQtNWI_ci!G zQ?u<*5PF~Vf#b+yTlo8G4GpNx$z_XieN3V2qBx7fu1QtIFE8Iv|jWP*yY7y)u4C_EO1bK&OQ!G%q55OOj`0h-2@`_p$AcaWF|`T^j??k1i!>t98? zTYXI&i|=5DdsKnrb#CACB~CVu8^%uQ5M((pz6owXBv2O&*hF31&vOoX;Q0K5Wq?_Hm~X7&oNWdrvekXlxL1f6rYp~ z2F;Cdl2F40SWhlKF+<*{I8gGOW1S^*=0xGC6gdLngRMoaO`ft0Ou5OemR-!%^`0#c zTtO(F*pKBu1+^PyZb9*nX4s+;1!OJoQ-lXbi+n2h|AWvlS3=BwmQXn|f-fI}X^fGL z4Up2bAs$7K^UBUUe_*RJcGL}(lWag40cj)+6Z@IlZ#r+kdp z0PPdOJ%L?)+=-$qek}EKr~6Nem$dp@-m?bzI`#EpaSH)P5|Y5<QwUiXvd!s?oB^*(lLX^Dq%a=~EGhbpTzvaaWNz+PyOBf4#=+ z8~49ri#AA(w5bF8#_G@XpvISM@}uESu4!8m@fxsEyiP z=U7r0H2BT5jW@T7W7TWdwK8O0Cr|X`NciOC>p6U4T#c1{7rmy1&9BLT5eTf$!kuAA&^(=4 zQYVmmU}FJj3VI7}9~hU6+=ed%1;tC*&2m*i^m&Gb9c*E4EHR- zRtf$NvIxJc zm=l8fN9CnzQ@jG&>Suf53e!Y@AWM1Q$*Y)v0>S1IyC5D3fv;!?h_KT|FsW zSIXT45Up#aI%0iJuJFDZKdmEQLm?u}61^`s0@!ys5eq;Tg$Ohs+`RU)S4)qbvfW5( z4PHdT+0ceYi4MCB(>?8UqSn&!dYZ6}RhXu-t#uCF?!z`?NzczXl#3{ z>iuuRm8*TxCoh0c5mTYPHt=eYn5P?mm1ptjb3Oj)b4`o{-e`x&+3XBYH-DM7af zltlV`mE2Sdz{jM86qIpiSmfAB$_%Mlwd*aL@_+K3VwV@hyN&S33_EEMw`%eoc(dRh zA?e**MBT^XC+!FUfrvluSwC8^7P?>-2t=&T>^oX~tuJviws$XTUw`OY{&weYhrz*uJT%gw~TH z92;YPm5so_QoWM5!yoxYdoD6*2i%vV#eWG0C}Q)bVHD|}G=AwmyZ!~r9TBBF%UQ8H zOH&O%ro63kGH@er*>#C6)y2sdzf-=Pt`&=N6#8_A=A4HN620YEloEFvcf7?2qc7|F z))0$dkB)~Q6hLg^6Qs5+4rBm~n#r06Eb?6ueAas3{|zq%vdq4-b5dahVfcfdu{eif z8xftn7IYkxh=?5WA@Z^m)7zo`S)eN(*J)82HdN_z)7Xe_EJE^JdXs#}Bk{*{waF)+#n@lH ze)H+cPUKgm(?Dx&!W(U|_=fSDQ~)o5TX}6niU2<+eHsMl9-P_xGGAfCQL%+yMKTYA zW17GAl~_x6$Lv@!%fZsJWdY+I^U>^RHU1udygcp>#^VBzJ5O_%oU(o4va~`HW0KEJ z(vnY)5Id5XoxDC__6Lyt&~!!D?ZoNuV(U&BQ^W)Vl1hMl*vJr~+ms*1Xz)AEA0Yq_ z7Q_tRKlv%y4H(ma{umh&sx_a5$d*{QFw=LxpBpE@K72-1>GS1PWund!rxJW04fnh2 zzfGB=R=*GRWA^_y$2*w)+axGtc?knji&FU61?%1`X z3xl;kZ%jBmBU@;mMJjR5|3D)|X5Ju{xv6eSrq?{!A`7+_0NliB8}Q)0SP^eR8lR`M zxxl48v!oXX5Lk)$o#6%53zMCKm4%NhXMf$)v~E^wz>XaWbam#B9G3G*(+T2wzCEQR6M`NOtT^ zwd8v(k?q7qO+O!Z`7<3Er!)$)^sq>?&n3t6_YBKT$ltIs8PP7Yn5MIRUm!pO5esOE z(Y_mXQ&L`t>jAlyY5X72nKc7I0^ZP~pTYK*h=q=AdxLxHEN)&W!Ax^`e%JfJB3O~I z0gTk8<~*pX zm@%whNPUt9zaU1?6O$h(TjND;u}5=s$1>V~ay(uNc_Dbj^NpjbvUR7iUbt2Gtq2DG z3(5DAn0`@0pV~HlX~B^SyUXIeg;wUQguBUbg~4P2VLb#MD8rB^3%Tn~Vg1;o>K61N z=e}_dwI(T{H&$^|smlI#1LW%SVJptS0GG~Pgs=;vC)BUVHGJ7A>RY?%O(DnvxPm03nL_VYFC zv+;6Ar%3sfA*$ZoXjy!1OheIy0sj+bNo-1i~}X_bsan6 zJb9f|#%Jb0ENkzjNIn%Pa3u?d`-l0tBi?jKiOH)+ipqN;6=3Dp`l0TXhvmdZS}CrL z>rk5|ERaj=gE~aSu?i8_gq**yNf^vYxUAqN`q8}k@hj9SetTg+BaE0rsOWPjs?hwW zq6pkGjc!R%-X+N6<<9Sw)~_Eq_&7(E}e z9Yt*jk>$c{FFR)!pYeFF;g6f_64v)#K^*ce&JNNS0aU5`ify8~<^HS3v=y=^z9oT% zql|n(Y2!a!Q@CI(a_bwkbBP^tQY0A=S#unXx&vW>yt0A6b$G^h*)RT z`BUG{@25q#4Bb1-ryW_r6xfDg2mhZ7Ep*Gh>Z=nUYwxR{S$PCZ;PEhes8b7JQIE-7 z1<|VB8*axq;A+xg_2>^S@U~G$q~kE z7n2v&^CvW0=_a^P+Y~S@mcx80^*Y>rsSF_s-{t+!a_A4f*klh8yvWO)tH3L`;%&Hh zo(lGEQYR5RF}}<0e$eb+ADV4Hp+8-@AJ1F!z7=O8L>>`~b|EyeWx~_B82gPKIv1nS z;k;6$W>=d^Y0VAWK)Ag$&$Y*aj!;+|-pvZ_%Y|~|mR>wYMd12$N+^h1+vbD3Syo_# zxVI87-H3#oiQxpVHSrz<0u>&7(?-{=O8<;* z1f2=XTh3yv5IMt|RaWe2Y8JGh&izQ%BFI`6;8rU6bTtOg`+S~H$sQhtSz5h8Rv)d0 zq=;UV3HsbWR;6tj2izl`HVd;%mucsvd5}D=qM?eB%v(*B^YJ4`ph^kbEtH~yyZ_YS z&MBqgh<19XHIw1{fUUUqiV1?~zhMZ;x~-A-axgnEsr6fy^JuSJ*+}>qh*Lw{dl)+VzUp^eY)bmPvV!BFF2xb@?~zP_+F=OSWNz=uWNQ@3nOZaSSGh%z=JkJ!s5GZ zhjUr+Nrx*U@7O&BLTAKgM;cvCjpTc345G^S#`+5kC}X}u@?=+op{$wSq!zN>xd|?x ze?fwlMXOq_&-1zi>lQWB%Crj#kaGQ-yDY`#5{i~SY{9z;3?bY4AlZ@cIl5CYZyE~0 z4+m;?={zw)S&Yh**7FKyz&})?Y`su%IRLi(P&*kDGD?SJ{!)cvPT}>_P=wiOgBFFR zy9Q!orZQ3=Q6dJ~gZ5u>Xz>^g@p?2Fc9Jq~jGuirOL_3(zToMzU-x(SYP#ew%WY)5 zc&l>LSmJW_o+&5b%ZTCq?u;@1)5$ij!?OfOn7_1XI-xubZCMO858e?6o$(MR*xw>C}zH)IQ$$W-=ve^!Jkk%B=5>p-TZO` zMro~G`ll(?qw|E~1}pAMbf6*ni%At_VHbm!eFPU%cAwb6MV7DJtbaGa19CjWc*TFv zb${*qhM_jid+VBDu0+{!<-=-MMs&YR>zA7J1Ne7d5WnqDwPy+9eBV+$QZcrR;uT$1_jXbqcu8ACOxe%y}w19wuGCyWA*-t@}ozx zu4S@Fl}bY7z4BS1hb4d*#wHYYeXS*~?=xJ&#EehVAJqm?DR*FJ&F~Jdu>8Zu;kQGKr>Ig6QBS<{M33!ft_?sx4xH8CE7xcjWlezke`)6-`giX7RMVY3rW{0GzwaSa) z(4shY9wHB)tzs!5=knrggX`$LUfpNV@<-XpIYS!O`*Y<_S7@50dg(&Dh^>RWp-uPM zN!FoRP&u;Le;;|btX1JD{TY)x2mP5lWxM$7v+=N^Sj}AgHj4EF(RFi{QA4EwSiUx#w{D&%{}X2y9(-j%&=UsO7%bYKkW=W6cicy z^-;<+p8@;)OKEiG`SWJE5M=7^0Y*PLSa&#FSa;`l**+} zvN7Bq2b0dQR2MlOb(ng3Z64NiYEDM7Fl!G|mSGWv@KU2GZ*I}(*r>+cRp~gBp|QKS z1$U0VM*R@|?_$a0VH-d9b}*(h;N9b+6kS<4_IDyHg+i;pKdXQ{Ja>&k#dnbg9dMd7wYzn{jKPvdseYckgcS)F{=H#{Jb; z`^V#LOzDr7jB0D4l7swT+p{K5&qBIF^2QgEr|&Ga}|?6|_Sd zS*si)+Gmd)wEe6TGm27p=eav6sLGGof$hh0(MfhV%b2L{#3sC596d-*FDg*j~jq2b9k0^-6 z_S{92&vZ<^&aBVS@OL*@0~MK&n;q5lyLFw(Sk=s~;#$8^?q|mjAa}i#TYNo`)R0}s z^}o9Vd;;Jlz0EP1Ff~XiJ3+)tZ9g$sb-2epk-r9u&J4+uX7kP)-t&@fFY7WTBT} zeIDe{opTuAiO5?5mc?rS{wdVMqlPL%L}DUEo@L{`MhblrMzjWAH4|}W!!o6W=0rmN z-Biyte1}H!$tHE(VDi`FuJR{GN7W=3UYsAi=nUJ3U8`dC_6!uR;MhF=DL#zueZ{)= zU`J`Km*3J|uB3cB{d+5)v_Q{VXm=x;Nv5xdR z!qY;Uh~9L6I&Y<()!AG7?yCo^V@WRre6^@6vn986-z;hPp_(cv)1B}FDeoq~+xS-g z+*SGV#@8|G=@jn~JMei)!iV(FA?$ZwN~mJ5c$n~16mzAnVjB76)BIx*pf>@-I)#|| z)NBp=eW$m$iGTcGEJ#41p`k<=f(1^z8Ju!f>4jz#);Pt~y0~>P4A_Idc*$c(wAD#i zY0{D6s%Nd@y|sA5mHpf)Z;l$i-7EsW>iS!@ZvG+8Q(hI{FPb7QhsrqyZfogV9bVdv z{O-M|twtcOFv>XK&}@6=$eRas3bq!O$GE!o-VuBp1scWY_7`5^Z^^KtT%*tGFFsX| zRnHsqqP)0(Xs+{ri_`21*$FNaFZeoZ-ywPIxJK1^*}qPskW2*Xf3^QPGz8nN|Lx4& zuaIoW07j_3Z@g8IsTsl9S_X;o`R?KhZisjUOJpGypxBqI)Z-dU@#7B6lr5{^D)<>_`FxK1b?KM2n-Fz-4s zJ^zf5G4~4q6}IjFK*e3x4eogiy9m??rGAc0_{OH^w9&o7g8HP!%%Po{df(}-2dnF} zLLx!Dm&J3QoztIaxSnWu2{Z1q9b-$_JKMtVY_-x3MBO>xcv11K$*j*NnJU>TQ&)aZ z&B;-tv5c%2Sj94*w?fNztu(vk9&UV17Aql;`)MGnON32|g4T+>$=%DTK9J$B<}1$Q?ipp;7_xrLZtjETQiaFI z=BK?e8mpd}CbEA%3C)HD7Sht%xUvdqd?nA^szK&pqJklT8GiQ%-2WeJ%7 z8|Dw*jNQ&hia&~YhCe4iN!0ExX1w3J62OX25Id`&R>1_21qLBOPG3Z$WzFjl z<#%|6Rl3WinSXo4vS>fRBp5E|>cgEav#S>kOp37jnPm&EESI;e%6Wh>V@vI(?brtX z7*~PI+l=hcR@zQXeZ&HFf|!Tu2I;4E9_|GR-;Y0L`t7T7AV2OAVbZjB3Jxd~c^$9&o#h=|O&%r~=5)O;|9md{F_@h8SP{FGCEPq$FgSkNeg51V_2xZRuL4cw6K&K1 z+Ge}3S{9?bXZu~aXft|#*0IJuAwy&nNyIB&MBW)2W9to!Y969o$wWu`3cdLfw@q4W z(ugLHcc2V#{>#Zk?`JpCFWqQ5Y2xlL`lkYy-#B;dHtb?N^b0U_G#B9#6%F%>=pC1d z@tgGad^5pb4Q>0QOO^Z0zRZoV+4Oq3B&2ky99E!zKEba^7&CaIWNs_XKvA$Y(io}$ zIf&lBxHSeEs5@@S5~H2-`oB&$!^2+&dJ(Je0V zG#y4RpONduScFTWFi7N_@`w}7N2}gVgCu~_TguoQ_t%~rHQR;k?tn=n%)G!6cf5cU zDotw-7JT2ugUI_-f<%q#)_LLV_xK4k)wz}QeycrrA_+62`s@AQj)YA*VgXsUXT_tb z{L6tMV^VhDrB{OuAs@cJjWggCxA0~Jg>TDxd<`=j8_Gk`A=+Ze zqkYI5`6-EHE#w&QE@n5olW^%x)w>5R@_%$KAIb|`6bUljJ7T^2Qd`-^KQ^6zBcxLK zlNu}Ee#aL@q7!>fZ~nU;d`Y=@4s+tUBqLt@I8CNRW-NGEOG4LySt_lF(d>LiQaK z!~f3A6jY~pCI3LmeQe(pf>Lwnf8J!YaQ!KbRQ((0T8dPVenjND(cnxLF~ z9`gJwBttitI-y}5?5cL~Pu^3*bzGXyb^e%4d@v(XJ6HPi9!_D*6!QjFN91i`b3y0; zsdSZn_{N{pd9N3(k{2yJ?&wgPdWpU-_Hu-V5THhX-H6c4^OuVsPV!LVu7`JXeY=4a zc$lRMZJZ<3a`YG|x~;YF7(mc7Sr%HpPE37I>0FuZY3_V%yUwdQTw|QGN_ZbcM?y{R zmQgA^&K(n+`e9(=N^qC1*`~GnQgA7vtpoY{Ep1ez*wj8%{FSKBfY|;fi*CNPp@69q zJ@TPvQf%3j$>I$s=o^f&U4V(`=pYRnK&aLRf&;IU!c<70G9Pg@ef0%F#6o#qC~*%z z&8}OqGJLvr^kiLPC3`cLKK9bH8IN=jk*I788fi9i*=+xmkR?&0xFI@BzpoNeW& zt?i?6e37J09_u2z~{)$FZcy-3%H5snwJSt)- z*{9iAhpAx(a;gr`{qTr;$C|@FzkLbUJHZk%kM#op-b7h0ykx{S`S>8uGv)9{0>ok5ld~Mk3P=^zm47gj6$@mXio?)Ipqf1}R^KKkv=vIuS zIvS!2N4?Eh??g(2BMEV7l)RNJ`ltmN-_08al9?8ViAmHo>fK852(NWZ0{y21taO@F z(9l4SbtvQ_kxy@qQJQy)@a*n>WAE5qq>lK^lxa|~O>aS=MXDKt?f4nH+X6sZ?U4Fp z13=~|!;Zj897P>*oz7}zJNrQR^?)<$!W534QtAT=?oyLrCkzsrnz!~&xZ1s|>Q)Ir zI(D$N+)PGi6#(hnQ9zZgZx+6fE+)F#J(qiR!pAi8eA)fa&T>7bv0pch2p-nr^$)6b znx{v_Yf?#`3`_Du9tN;NN*xaSj)a4zhbC0=@+M!Rqb16;CC0Ricp0nj>SnB9)c9kj zxuGZX63p4!`Hzw6rUBMc0VRBVGQR};xeX1bVku=i16@v<`*$L zi(|ogO@$F5*35{}Ki+&upuasKIq9H8O=$~FsPC)Z7A;Q|#%w98AMk41e+$FX#&Iom zOxqE)*S0d?`HjY3bEN0DrPN$FswCLVMaTp6X7?`@xGfFE75L4r)Yi6XrN9=Z zs?F=!_itYAkoNmqd?Zpl3>94ZFeTjFvL*K^oAHu57yF@YPa?~sh;3FEWdzgsmb}e^ z3S}(tO!`#3?S%DlxNekELVu+GTlL1ucPVxo{pL^;mmoih!}I57el)#_5(V|RHAMrX z5+2P%UqUo<1Z0o#JQ=-e+8(dPDw;LF7rk=R#%gauI31{bQ4V1xd;fEzOr}oWlJ2*07iK&{J&^6tOnc<=p3rJ;xtzZ>mB83x zuck&(#6FgY*XNKkvGR30(DIpj-a3W;{WooxF<~eKjeclzNrsv}T z@TfO_OuiK+8(n3}%=N#!b3nXbEB%=T!lab*^`I?!7;A0wrDJmc0^7LeZy~BFi6w?0 znE(O}=7w12Z`)S$6-sBSnP8$04kH3PR~3){ud1&Mh;r-No`IoLKxr5xrKB4ix{*>^ zL1O6casVl*p&JLJ1w^_Vq#3$PkS<9H;hXb3&pGG)X8oAId*An3>sr^f*1h-l+(n_3 zIBuHSt1@24_2;JFU9%_`W43N6O++-xKH-*|v(A5w8Ab6a?@IiU`?igZnH z1e_b&0>{9{SB8H87w#g%FmEO1N~|`SYp(SC6hy0(9Z}$BM!B7HpN~2I;>fQS9jB%4 z>q!hX2^Pzt*OztgGXy5V_wcH!n> z{38kivs?T<^YAO{w_F6U9VnMYnwjrhr#-!7=}z9MYr#?VSz=jF0G{{?bVX zSgAT>^K_dRnebh-%^7a86oyQPeRmFlp)c?UjIk06ye4}MDBq-`s*(5#&X-U+^Sm*L z=HR#HpbwnquH<=oV6Gdb%f}P7mieG@(3mR8Gg?srI5$#D(xOC8IF*@E{W5)R-im{h zNo*hLa=BYH)gBOt@reX&W%_rxAMX1a16bL)($Fi^nM)w(Dn~(0WHYl}OPI~qtnRZ{`o8_m$LjZo-?AVY4VMTpVjgozYmqkJXUX@D z?0wh{qc8Ib8=ilQd1+DJ9Q)}DD&U;CMa~z#Jbz4J>STYF8>uBTq_@ZxC**Lz{DA}| zjIJ+Er2N#VY`qBhMw3Y8I~Bw@(E}42X@C30Yh8Z_`|y|A*8J7yq`I`*ODBK5yS+a3 zCAGu}mk>^V>6&bwVpalAUgCgFDhS7>`^ww~lQepcu$LC+#|fX$pYoK(AQN?tKCMzV zxMMEHZ7$Fd=2Ocbj}ZlEZ(ryxQ;%gIQ2B6?O^5%TgsU}(tm$Td~wD{D=QWUA0&s3WT6 ztlu;&Y^9)I*(rPki+uG|z=~DtyQ6ZJEM3Nv;d?a~6ehA051-|*pm|%+{+4b`(E9K!a6rQC2jVhtC205w zgV$AVaX?+22jgLNVwKU`UlDaN0I`Fkk@E9~=x(~LFEEPTTy@vvGY;ZwQKnu`(cF_P z#-I8JPv=q3qo$spv*x}~91BiB)|3+DIgf(M=Q+Le?UybWUfdNws@qZrp<4(*TRY>g zrIAyd(-ey|tkI&o9ez6SX<+>_w%LxlWlrLO^zomx#TW&MBkoYWsOiquVEOvh35IkR{9V^dN8kavOTUS%a zN@@GvS`ad0z-D003@D{A=Q<`vCp?qXjp zt;7TM>Z6DK3x}n(57Gnn!D+IGtUnkhTb0mL5#1Tg9b3EzTaiwn z)+1CAv9^Pfmf=5vyFNAZ(nK8@fixV9&r9@#^BxKZce96jdywQaa(=)$zTrO!j4MKqPwnx)0{Fb$GJ#L4$>j()B|+Bx$Z6OO(*Lb zuFUu6vs8DjH!YLk#9;97?Gb`r=)gZY$VK(*PWh%Cuudmps54^(qF)Qp<8440j%(p(V zFQCE+Gx%u6%gKtXea4Ah$&Vie#6`2VqFy3ld!j>DQ$9HnBj0b2RfU@)xU~Rl`k^FD z=u#b)UA@$L0vL9Q3j1~>O6T*Y`LzO(q>aq_5V4&d@v-LMy0>g%kSA$be$|xhB%>h} zvHFSHnmuVb8HSie0at|8!f_YOns1!G^=;rz5gqA!VKTXGTrm7Tky@qMLk;A=6^>Z< zz8$314Mhn?$^^X%6wS%mrQLuP%n)c^rfq~?Z6{OIJ*D+VVxFmM%hx~p0MJ`YHoN}lILR_ut9YElr zus0hoZ})LFnn7-dbP6Z1>XWZ=;FdW(@%zuI44Ox8`!Y3XSDP5Vb<<=tea;fuap$Z) z{*0#x*?!gfSUpb3;hN?3?I=~#MR9g`cQ%lJCV+`Dk%^wM()wsjH~P`}yZNq*f>*RW zdd|U)5`h)8|KF&BRFiYkOT|hx>oyP5GUe>t|G=7^>~QDybfJ0zi>J1!CGhuBI4o{u zajInMA&`gI>0x~6_cZxx2M0+%aI>VN65yJhWAtt(7|J&aLQY8%J$Ah>*YS7`UZs~Y z9BPvOD5Jl8HZoD=sNLjry-lTzhRC^o?$5)6T=TCY^_7h~rxN7crr-Lf((l6inHx#XT?xq+= z%_fVJKi0oz+I!%NG$Iw%4l>2{-puP#JmUHb!yKgi0$MId=u6-F{fdzb+2$Q_(?)}$ zS@Vt6z$*A-QGfgdh9(C>Iaz(5x$)<2I6l9qr z;GUvd&JoduWu+KlDtJA{0Dd9}T?q~9o_#5Kf>je7Rp2Fm<7@80(o%N_pQ z8?LM;6pp((uk9V8u_c5P^`$ZmzIDUH8Pxr9It&`!mN@|#mdIQY;+{mPhGx^oC=2WE zBN<#5J8lW%nyx%$pfBR5d49H9ivFcldLOTD7!pS5?#WuyVsp`(h`8^d+|+%&c=}p> z-<+i;XmV}_#k{8)XFyBUUmI&mPeQ-L&N$W+L5Es+k;@$K8SZyKwMHJdw}#sJYJ;&V zFv6-J6@p_RWVd#m^hp*`JX8{2v?KdGo|Sg9rfeUVOg{MOs_eJA4@<$@wsq1D26`^b zmAg%fU$L6RQT-l_&F19Hsb*J!pdD(G-FH}Bg*RLIU24hT1uJ$Y)2$Z-c`^CspgdZ2 z0cinz4t0f$s@UgJkzf}hCAVj!-Z~2TD{#HKA zEP^N6Cx#m}Q`Mb}JKY*F;|%~2eGO+(NY`E2_=RH`dRV>HXz~woRd}wiEgSD8zjpr= zP}8d0-2x$R?3syjiv0R#CF-}%px{nbd_muK`Y8dw8FElaz*{H-N|5txp64OWMl%G; zZ-Xq{TcMZ9R@IEYmh=nS#zwT}gfD)9n}@GiL{zOHCG=SIJBxz8e3db!9k3yDMP(Q9Sqw6&A?fM9MXq#EVcZ%>doN!E2-BzE}V=st|p_rU11x`A>Q}{C_(~n z=1a^}nF~UzIrRJQ!63=ot!%kcwfj9+?LF`vxLH@{WdV$C|8cm9!t;QmOf8`m2;w7j+Dx zlzgv}lwXr@50OAfEhhPIx+t@*=Zj8~@i_KKZGxY0$0_CtFN;+WC3&8# z<;&iyTN$!*zoev^;eC3-J)}0-JtAQw+Tk2%_%xYOkDk4|n2(e}Y#V7lo#OPa_P8w9 z=vd60TfEpGl1-_@qdt(OXY^iX#p=K0OmOTtpH)yGSKImeT8t+;RA}lI<9}Kqb^-rE zF2to}kEe$En9Zwc>p{PIR5DV}R6t$Elztjb?}yz`gKI3d=w5Z-zK!AdX7#aN;C{3B z<$_RMZGE+z^lq3Ee5fT$giU)>{!Q?%Mp)LuHp|Hp`o~`FLIx~5wi$AUug5ZlP%uu; ze?~R?I{C-4a>i=DOma<|bV#hq0}Nj{Fv|6d+m|1ff^YVyKso`R3_f@VU=6sE2ZO~{ z6|2MvzGRBMa#rtFJ>}{7J!Y7P} zmC`e!yonfiWJ;J{>eIzgupYV>J1%XLYjjJldWwt*PQM&AlrY$u#UPg-Yck*^`nc!2 zT=7m#g7`?(+06q;>)dDC6xuUdKqP34Pg+IjW(hatg)0%={gUETJ86c0@Ai{#BMj6g zY^K&V6T{mBQ|qAlW>Mg!$mhzT3;+6Z+SAMl<)x47egR_K?Z}gN$S?;&hX&T9PyNAZ zrz_m3R+~EXXX^ukuvVL1W*=gGz0;L@tl_@?SLF5wmOlTO*e7zNKu#FECh&~9Gipc$ z-7*k611Cub=w6-R!EBu)KPFL5G=_H&@Idg(?zu^?>hVg4I!d^dpq?>kb|5pX&+;1V zVWnb&D(_b2hOx;({qw-J$SfWa0ttTgt9<1UZf_}E#LE}nZ9{;XBU_Pu=+v7jzHvd6 zM@c1|aVYt^Z}X_t96bGo%H=MKpRA`96~N{5+cX9$?bduFq1_6kkZMk58snGh0`k1y^owojS-}N*6SnHFaQP;-zXNL{ucJ>m# zD1!br9jYMd*nKQnm&0YQyEUw@8=O2TFXq0%DGw?bwnZ;Vjz6LZQAU)`004}K6kiA-4k9!aK zbFjcichy|`O*b0yk9A~|1l0@o3RkRjpgswRd9gazrCtJ_1o<#%F@*&cN@iPq8sJ&9 zWL(q~#g#OJdwR-}wGy6&FnlD`WHQ;5rgIERvY6LBa$=S`;$CBhYqHcS0qm(rdmo+*y0a+B;uoKyaLd$(#fIcMCSr5bkeS z%we;hQ>yJ3lD}&Ajpmd|928keHS|cr9JW44pLxAOAeFU?eO~vACs~j&cdL0CyiasF zN_wwTr^SibIoHa^>#wiN?T0+CNRb-j4?$HiFU_a3Jk=Ew%YJKcE*XA6h=)svsMS^F zNFNOF%@4kdwW!oY+vyB^HV=-dOCaP<46PH}m0>uvV1}{4XR2b+3>KtiM8k(K>LNEi zv&=J-AvY_6WvB}7?)N;i%WCLjiMF}!R9BAXXCQXVr16W z6+H0zNj$OK5JQ4I<1R80Z<>Kx@*owmAm&Ld;T7bLZQ*;0KxMeeWsvgd1%`I8O+^UW zHo#6OW5}XVoKkF`L&VP$2m0ckIPk}W=mlwfa!&c{o^o^0yZ>1%Kbl46Dr#Qq;iT02 zzFfVfdi8tf3Nh9c>L5g!pcQ@J^p1H7tH*{9_H$5zyr|P-LO78oY6x5^(dXzKf8V}l z6g2t{+ki7Q5d$Zu{)%CeE+2DDBO&Q9Kr%>^S8H(EfsIAk41ed$KIkmMxh*OkYV`a_ z8z;Q=&QtB2iMSlKImj38gaYn_`&b~7mgzOQdYI^OlA0S@KDyzG!^1Q--ThUwoV}jX?Y5EXJ6~Z`#6l6Idp;M{_ z4=p^Jk9Q$vQ`MlWajX&j$Zbhgs3ye8Ob;5i_;f3)#C`Qz^MC-{3*g&@d`wvrRcjVTX~UZc@rH%~q+4RuLb?c1DE2?e$`jp2TzxvcEm3edQ@^Y8!cxF)KjvSZ{AP)KRq@i=mp$ko2R z_1S8}w?zB<9g~(Kl44$@J+Nj9pci6;X8lZct8uL!*jsX42NoS6P-1}}fmtbL#Gt`j zB;I!6F@cx^$DyF!7%sNG>_ocF8Q|swF}ul!VNbBvbI3e?h+YNY&G4B?l1*iaf*hcn zk*q_m9Y5$Ly58H+4(^0$OYFV8*{k@2bMO>N!n9OE2>w(41j1?A1XoeTJTawb(gFei z0NI7IoV2dBhoVB0s${i{N>QwaAvd|j=kNlJ3=$$+gr5nMr>Hud%zYb7A$-7}4joZ2 z;^DdgDGch6$iun7xr{sqnkMZW5^vd@Y%S>prN$2>!6g zE$`ql$xrq^?tjQ868dOve}lH5r(=O&X^Gs)`MNL1`xX(``bGG}^Tl`P2M8Tlb@RgE z;Big7DnmgqNtlgBQehp_gCdXmj6sMkH}#r*?HK0<8kBF$eO8l}>NZOzv@y1B}sat0wP^l)Gg}d8m0zDkXS%f@&m;XZD#ts4)CiN2tG* zd^Xe`kM?oZQl_i>#%v~2PR(3!FooVIJ*R6%;EneG5_v~9InZjd+#l2%mrNwz@7t=g zLa4TQVUd&wDrEzpncs6oxtgf#V$4!@*rztGV2n^HQ9~RgvIQIJ4560`Q({H5WIn+8 z0uvK*wHYp)LQA61e$~rHCxE-x0KghO&#Tfi` zS5S1%D|L#pFXxXSak8C!bW)^vtgxMTM*E*Im{BK&_Tz*JV=BF7J48q|6){s&i9m;l z-S@zZ>cr(iHF6n5aL*_BaG{CVtg^F8i)@@yL3ka$0ID z(XHNmHY;fyUd4$vSiu;*bo!GCoCeK-7S*|md&i_KGcO#9d5wv;`0yjt7c4i;#7XX`kwoP4 z1;b_3w@v#?BVdJ`anS@bw0KVNt0Ye{rHP8V%E=-3eI#T-NnH11K0-*0ie4r@gIEcqRk^2Lf7JNk->OyAyHg|?Xy(E zY$28bp{HjDdP9t`9Eu{VC~-$$OWH1sabv~Q*iJ$eD=)|-?o}C3cw4kgn^@rvuF(lk z_DDNsnBQTJNV*?Si9cc-5p}7=ipPhOC?!f3eqaDTllBMYQM|Gv}cPnc)*Bi^+`Fa{Zo<_psfyA+61beVx;hH8WnLT3S?P3sS-J-n}MfRzm%@R zn*E?_u<0j6x@(L)8BRbhzf$0_WkGje7qM+Kp3h3vs5smYnv0#&%mJ?{-nckF8u#>Z zcGwe0iG1zRnaqc_V*^;Yx9W3Tvfz0BChYge>t&2_J3Qj!7NA-A(auC}H8~x4UNC_$ z*rpM-2@ch#1IJG(>8z{+Y$fNBz=>?M0R)ot;oQ84a#wmliHMmb*oJRJG@=vl^!+H$jKEb-H*H-iaXQ@9Cu7PR^bP|4kJdVxBsG@TjZ8 zXZ%x1LWpKbfZ^(#@~P?u%5{s7U=-|_-$7jaIqGlA$vg&4V49L!Bqk=f)PconI~v2^ zS$FUO-ME~OAQO{5^>~etKNmsqw&&o~aLrk+eS2de?4092fT^v{@qyqmH17!*bR{K? zskhx#0kBN*Wk5|J2l&Rn4m1H8UwS;h^Tm!h%ecS&jF!opnC*>p)j4s`=o1ht`Q;3Q zZ!@u<`-T#O*fS76r4^`+8_o@Pu41sH#UfFjKT&;3$AIVG6J=lSu4)pyl!0 zK)Fd#T83LXAWh9fVLl8vV}ps?ERZ&XSh(wRN}*45lmjj6`@Q>zb1aIW5z>~kVrA%{ z9$+V*G(XVQtW8iPY!p`LfkdUGSXAdS9VS*gWRZ@Og;kI*JJArkKcU^$>2X6ZeRjXj z$BN}@!Z0+oXp!ZHBVW>238Ny@RLzoWz(?Kh{!YbF%>JMiCpnOU#0faBG9a|S$(E_< zKEJlA2G0vR)4P9g`(x|ViITu7*r0OD9`hKowzeQ-%y{Xn+~P`d-UlPYcx@-_y8SS1SgP#wa!4xpc767`d1e{6Z z6khOk@&W~DA=t$uaTfBUnB!fOQYcm-C>>`Tg4^5PG2ezD#Ju()aDboil z{MXh%PuF;(ob&xy&eXyQKKs;}rUNn{hLo46zu_v&9Gt8HcA{|DyA{(!woprKM=lt5 zaSV&d8{{a>PrlA-%j`)KHX~IruIU{JVLjq^xyR^iZjaceHlati{-jF+Lj8Md9ie44 z?%qxXs$8~uQnPlQ9&ah*LsS;ku}&Ka@HIS)1}yB)XXEG9mTjcFvMSE)@Dra$S^Y@n z7-R7H{m9e}{oS=zM7bR^yv~ul#NBodRWyx`sgtX|hqmUd zWh_|RW)qN(@J(ru`!s6U6=8s4as*|UpP{A`_WSW~)r2wtO+2uSS*v;LfLzY)^`6dv zo|pe}rSgw}Aje6?5X&NjRrYo6pI3%eBPb^xYBb9o5VF&hoSN}+?bkBg=$B3r9YGXZ zVg`LP%eij0%pBmf3rk?@dNJ4lTezS_2ONm`%NGk*n1}fa_Kw(2;DbHOigfbut zgJQ-3=hFd9QRnbBfIaeto1=hsN+~h^h#rExi6tT8I0kdHI%SJvM-xPh5;$v+gD1=e z6ykt;gz&BKeVqKL{4Awn%59m&m0h>lDx$OTwfTI#b#|^_#r^{Nu@RyTLcIiklMxLb zw8p+(MJX!$#j(mM(Zv^nJVM$81bGAq4dx__QBWU7IuyNFFhU5{xC42NrHRMcZHb=2 z74gR6G!boZPyjniRJ2kNupBx?1yvDrExwTNzxoQi4Jf{SLR5{jpd4&ip_NKepiq$; zKA)ueb?5TkmGX>^6eDd}5c z!TTXJIH=KX9pUADv;pG0PYkyQEFrXzN?~)2Ri~)AXucAIK9yqNJLM~E!8G)Q1t?S6ocBSlk+KSqHmACKZuEN zjX|@v#Xe{|=pD=IYjrtHr#KVVLnMBKe%(#LutMojILdg*od zeQNDI{^-C?FU}&=saxR(FJ|E_aU*cr_$6#4X=4WnngY#Ols0A&F`WAbk}4SyJ0Pnu z#{gm`==rQYgH_Xn%91*|8-0IolNaqQ0*3khwIlC30Msj+XNC^H=&A&brDIIcvYiJ- zNAm$|frG|dzAWqv5EfHZDWEBT%w}CEXO7je2XJk`mZygnt`y3JJj@)2OCV@hFyWH8 z%Gvxu)zhM9Q~vtUlrL9au^o*Ll2L#r2b9h~$x2c6VOq(^0BhF9CVX7+%t=MOU&$`U zo#7Y$DuKmkwQjD(@jbRwWM~9KaXTM&}Ud*RU~hS^+CVO=dFV+gY9gKuGfgb zl>mG!Vs6BiQ=P=@;>*#~OY`w_mp+~&j{hZNu)Y4=vcrbtsvj$#$o0L4QK4 z)QlB-K`r=hS>(1r!Id^7RXo)U2D?#!v^4n;n{KrYPUlJ^6-iD6OIjZvk{7X1H5DS&Lqb%C zjgM2+*r3Zzs^->u%Melbv$S0ucb#HR>Qdx8ZQnm6SS=2Q_pvBtNf_3sS2bwJj@w|Q)$ieRGj?Op!Fc&>`^UO z<|_JzAlh=!V(*WCW2#yX1`~Go3pNXWdnF5B;zj5`XrM*?DK*RH(%kYboGN6JeXcX4 zhV)0@p|-)Cwe#s?pX$S`w4ZQz8$hjZ!co3c_8D{N^~K0#%N_;verr&u?5makDPK|@=MM_u&cUDm=p$BY)bAw!bubY|h^gJx z_ekFu`fjS(}0#iiDA!5+P zoo?*}cUqmNHzyQ$!3w9Dd5Px}cQG1t-XQ$~F1i;)Xv5x0DH-&sC0qG&fou=XFH>+#JURB4Rt4uS zui=-mpZ*rKDT0h>ffJo{^yFlEQP021@CHTR=HkmfII#S28Ar1m;imp-wfs;ayDkVL zq`GS^wW|=bncL8<##*>gWWkQT7=9$+w{(;q^*bmxoru&+QvuPXwEs$Qf>79aj7I&@ z=qEw=)_1d_>!L52b+82$DR-a5hF-d^;JrQCJevH=3d%LwW9xrQn39hj3V)`ZUEeN0 zN2NvKAx^jXsv&OEE#JL#kB5;+*jveNO=Pmt;M4H4?4Y}%TG@Dsk4W1*pghQ?uI7>} z>aB$HzYE}%gSr1oiu3F(zIQa{JFwM@HJhb%8CxTY73fZ>UTchWsQXEjy`x|k%&JN! zJ9TtpA_oXi{nFvCupn7m`gmohlRw4#ZczhL(;lO5+nm?+`t1x`bImXwPKZ_A2J1hb zv6dv)p~B(+JbaBpuj66=W%8@K+izl9?D{hSb<_Nd^c+oASH@2_4*Z}R6~-VLR&u*I z#+d4frH+7d8uNm~6`II!KNx$O=XV zUoT+kzI<02q9OU@zx@0!W+qbph{xB`&*zoZe8tyb%jUpn2O+gHeexsQ%rCsrq#&mu z!^gmL2Opz74VB1Jf;Y9gT(ToFgbkjPk-{c7$sAgx<7A(I`~58o?Z$Nc910xJ?>isD zS0qrHS^fqbB;|E2nU2WV5=W@W0|Ky?@=wWFt0#3>!80bG(2H43?wOw4#^UHnjQ{Jx z<`Er_%3YVGSOHc>HMm)Es7nv|=)1GU=Kp#*Rljn6Sqml-9@5c@x7c8%_iNXK7Wm(2 zE=m0RGA?5v=scb;{Yjb+QqmbTxS(!pj8&xzpyD|!?wT8 zddvBL@El7Xq2>C>m+L9oCKA3}@sknOW^$~ye`br7xBP*-oQPI9`kyx<()-BT3SMO5 z4;m{fu|+K| *)customIndicatorView { if (!_indicator) _indicator = [KBDirectionIndicatorView new]; return _indicator; diff --git a/keyBoard/Class/Home/VC/HomeMainVC.m b/keyBoard/Class/Home/VC/HomeMainVC.m index fd67683..4b91b0a 100644 --- a/keyBoard/Class/Home/VC/HomeMainVC.m +++ b/keyBoard/Class/Home/VC/HomeMainVC.m @@ -20,10 +20,8 @@ - (void)viewDidLoad { [super viewDidLoad]; -// self.view.backgroundColor = [UIColor yellowColor]; - UIImage *bgImage = [UIImage kb_gradientImageWithColors:@[[UIColor colorWithHex:0xE8FFF1], [UIColor colorWithHex:0xD4FDFF]] size:CGSizeMake(KB_SCREEN_WIDTH, KB_SCREEN_HEIGHT) direction:KBGradientDirectionTopToBottom]; UIImageView *bgImageView = [[UIImageView alloc] init]; - bgImageView.image = bgImage; + bgImageView.image = [UIImage imageNamed:@"home_bg_image"]; [self.view addSubview:bgImageView]; [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.view); @@ -43,9 +41,6 @@ } self.simplePanModalView.topInset = 100; [self.simplePanModalView presentInView:self.view]; - HWBackgroundConfig *config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; - config.backgroundAlpha = 0; - [self.simplePanModalView.hw_dimmedView reloadConfig:config]; } - (void)setupMas:(CGFloat)headViewTopV{ diff --git a/keyBoard/Class/Home/VC/HomeRankVC.m b/keyBoard/Class/Home/VC/HomeRankVC.m index d266ef5..1973b31 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.m +++ b/keyBoard/Class/Home/VC/HomeRankVC.m @@ -30,7 +30,10 @@ NSArray *selectedImageNames = @[@"crab_selected", @"lobster_selected", @"apple_selected", @"carrot_selected", @"grape_selected", @"watermelon_selected"]; self.myCategoryView.titles = self.titles; +// self.myCategoryView.titleColorGradientEnabled = YES; self.myCategoryView.imageInfoArray = imageNames; + self.myCategoryView.cellBackgroundSelectedColor = [UIColor blackColor]; + self.myCategoryView.cellBackgroundUnselectedColor = [UIColor colorWithHex:0xEAF8F4]; self.myCategoryView.selectedImageInfoArray = selectedImageNames; self.myCategoryView.loadImageBlock = ^(UIImageView *imageView, id info) { NSString *imageName = info; @@ -40,11 +43,25 @@ self.myCategoryView.imageZoomScale = 1.3; self.myCategoryView.averageCellSpacingEnabled = NO; - JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; - lineView.indicatorWidth = 20; - self.myCategoryView.indicators = @[lineView]; - - [self configCategoryViewWithType:JXCategoryTitleImageType_LeftImage]; + self.myCategoryView.cellBackgroundColorGradientEnabled = true; + self.myCategoryView.cellWidthIncrement = 20; +// JXCategoryIndicatorLineView *lineView = [[JXCategoryIndicatorLineView alloc] init]; +// lineView.indicatorWidth = 20; +// self.myCategoryView.indicators = @[lineView]; +// JXCategoryIndicatorLineView *indicatorlineView = [[JXCategoryIndicatorLineView alloc]init]; +// indicatorlineView.indicatorHeight = 30; +// indicatorlineView.indicatorColor = UIColor.blackColor; +// indicatorlineView.verticalMargin = 10; +// indicatorlineView.indicatorWidthIncrement = 20; +// indicatorlineView.indicatorCornerRadius = 4; +// UIImage *bgImage = [UIImage kb_imageWithColor:[UIColor blackColor] size:CGSizeMake(30, 30)]; +//// UIImage *bgImage = [UIImage imageNamed:@"get_ppd_btn"]; +// UIImageView *imageV = [[UIImageView alloc]initWithImage:bgImage]; +// imageV.frame = indicatorlineView.bounds; +// imageV.contentMode = UIViewContentModeScaleToFill; +// [indicatorlineView addSubview:imageV]; +// self.myCategoryView.indicators = @[indicatorlineView]; +// [self configCategoryViewWithType:JXCategoryTitleImageType_LeftImage]; } - (void)viewDidLayoutSubviews { @@ -59,7 +76,7 @@ //} - (CGFloat)preferredCategoryViewHeight { - return 50; + return 30; } - (void)configCategoryViewWithType:(JXCategoryTitleImageType)imageType { From 074596ebcb7a9f2aacde738046cf1a81751bad59 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 14:21:03 +0800 Subject: [PATCH 17/47] =?UTF-8?q?=E6=B7=BB=E5=8A=A0homeheadView?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyBoard.xcodeproj/project.pbxproj | 26 ++- keyBoard/Class/Home/V/HomeHeadView.h | 7 + keyBoard/Class/Home/V/HomeHeadView.m | 230 +++++++++++++++++++++++ keyBoard/Class/Home/V/KBPanModalView.m | 2 +- keyBoard/Class/Home/V/KBTopImageButton.h | 25 +++ keyBoard/Class/Home/V/KBTopImageButton.m | 61 ++++++ keyBoard/Class/Home/VC/HomeMainVC.m | 16 +- 7 files changed, 356 insertions(+), 11 deletions(-) create mode 100644 keyBoard/Class/Home/V/KBTopImageButton.h create mode 100644 keyBoard/Class/Home/V/KBTopImageButton.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index fbd5214..0da26de 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -19,10 +19,9 @@ 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDFC2EBC6A170055D639 /* HomeHotVC.m */; }; 0477BE002EBC6A330055D639 /* HomeRankVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */; }; 0477BE042EBC83130055D639 /* HomeMainVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BE032EBC83130055D639 /* HomeMainVC.m */; }; + 0477BEA22EBCF0000055D639 /* KBTopImageButton.m in Sources */ = {isa = PBXBuildFile; fileRef = 0477BEA12EBCF0000055D639 /* KBTopImageButton.m */; }; 047C650D2EBC8A840035E841 /* KBPanModalView.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C650C2EBC8A840035E841 /* KBPanModalView.m */; }; 047C65102EBCA8DD0035E841 /* HomeRankContentVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C650F2EBCA8DD0035E841 /* HomeRankContentVC.m */; }; - 047C655C2EBCD0F80035E841 /* UIView+KBShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C655B2EBCD08E0035E841 /* UIView+KBShadow.m */; }; - 047C655E2EBCD5B20035E841 /* UIImage+KBColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C655D2EBCD5B20035E841 /* UIImage+KBColor.m */; }; 047C652D2EBCAAAC0035E841 /* crab_selected.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651F2EBCAAAC0035E841 /* crab_selected.png */; }; 047C652E2EBCAAAC0035E841 /* crab.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651E2EBCAAAC0035E841 /* crab.png */; }; 047C652F2EBCAAAC0035E841 /* arrow_down.png in Resources */ = {isa = PBXBuildFile; fileRef = 047C651A2EBCAAAC0035E841 /* arrow_down.png */; }; @@ -51,6 +50,8 @@ 047C65502EBCBA9E0035E841 /* KBShopVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C654F2EBCBA9E0035E841 /* KBShopVC.m */; }; 047C65532EBCBAC60035E841 /* KBCommunityVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C65522EBCBAC60035E841 /* KBCommunityVC.m */; }; 047C65582EBCC06D0035E841 /* HomeRankCardCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C65572EBCC06D0035E841 /* HomeRankCardCell.m */; }; + 047C655C2EBCD0F80035E841 /* UIView+KBShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C655B2EBCD08E0035E841 /* UIView+KBShadow.m */; }; + 047C655E2EBCD5B20035E841 /* UIImage+KBColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C655D2EBCD5B20035E841 /* UIImage+KBColor.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -152,6 +153,8 @@ 0477BDFF2EBC6A330055D639 /* HomeRankVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeRankVC.m; sourceTree = ""; }; 0477BE022EBC83130055D639 /* HomeMainVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeMainVC.h; sourceTree = ""; }; 0477BE032EBC83130055D639 /* HomeMainVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = HomeMainVC.m; sourceTree = ""; }; + 0477BEA02EBCF0000055D639 /* KBTopImageButton.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBTopImageButton.h; sourceTree = ""; }; + 0477BEA12EBCF0000055D639 /* KBTopImageButton.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBTopImageButton.m; sourceTree = ""; }; 047C650B2EBC8A840035E841 /* KBPanModalView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBPanModalView.h; sourceTree = ""; }; 047C650C2EBC8A840035E841 /* KBPanModalView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBPanModalView.m; sourceTree = ""; }; 047C650E2EBCA8DD0035E841 /* HomeRankContentVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = HomeRankContentVC.h; sourceTree = ""; }; @@ -454,6 +457,21 @@ path = Shop; sourceTree = ""; }; + 048908B82EBDC11200FABA60 /* V */ = { + isa = PBXGroup; + children = ( + ); + path = V; + sourceTree = ""; + }; + 048908B92EBDC11200FABA60 /* Common */ = { + isa = PBXGroup; + children = ( + 048908B82EBDC11200FABA60 /* V */, + ); + path = Common; + sourceTree = ""; + }; 04A9FE122EB4D0D20020DB6D /* Manager */ = { isa = PBXGroup; children = ( @@ -567,6 +585,8 @@ 0477BDF22EBB7B850055D639 /* KBDirectionIndicatorView.m */, 0477BDF82EBC66340055D639 /* HomeHeadView.h */, 0477BDF92EBC66340055D639 /* HomeHeadView.m */, + 0477BEA02EBCF0000055D639 /* KBTopImageButton.h */, + 0477BEA12EBCF0000055D639 /* KBTopImageButton.m */, A1B2E0012EBC7AAA00000001 /* KBTopThreeView.h */, A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */, A1B2E0032EBC7AAA00000001 /* HomeHotCell.h */, @@ -676,6 +696,7 @@ 04FC95BF2EB1E3B1007BD342 /* Class */ = { isa = PBXGroup; children = ( + 048908B92EBDC11200FABA60 /* Common */, 04FC95B62EB1E3B1007BD342 /* Home */, 047C654D2EBCBA880035E841 /* Shop */, 047C65492EBCBA880035E841 /* Community */, @@ -1175,6 +1196,7 @@ 047C65502EBCBA9E0035E841 /* KBShopVC.m in Sources */, 0477BE042EBC83130055D639 /* HomeMainVC.m in Sources */, 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */, + 0477BEA22EBCF0000055D639 /* KBTopImageButton.m in Sources */, A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */, A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */, 0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */, diff --git a/keyBoard/Class/Home/V/HomeHeadView.h b/keyBoard/Class/Home/V/HomeHeadView.h index ddf0bf4..19390a1 100644 --- a/keyBoard/Class/Home/V/HomeHeadView.h +++ b/keyBoard/Class/Home/V/HomeHeadView.h @@ -11,6 +11,13 @@ NS_ASSUME_NONNULL_BEGIN @interface HomeHeadView : UIView +/// 点击底部购买按钮回调 +@property (nonatomic, copy) void (^onTapBuy)(void); + +/// 配置4个功能按钮标题与图片(可选) +/// 若 images 为空会使用一个渐变占位图 +- (void)configureFeatureTitles:(NSArray *)titles images:(NSArray * _Nullable)images; + @end NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Home/V/HomeHeadView.m b/keyBoard/Class/Home/V/HomeHeadView.m index 81130bc..79fa200 100644 --- a/keyBoard/Class/Home/V/HomeHeadView.m +++ b/keyBoard/Class/Home/V/HomeHeadView.m @@ -6,14 +6,244 @@ // #import "HomeHeadView.h" +#import "UIImage+KBColor.h" +#import "KBTopImageButton.h" + + +@interface HomeHeadView() +// 顶部会员卡图片 +@property (nonatomic, strong) UIImageView *vipImageView; +// 主/副标题 +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UILabel *subTitleLabel; +// 中部四个功能按钮容器 +@property (nonatomic, strong) UIView *featuresContainer; +@property (nonatomic, strong) NSArray *featureButtons; +// 底部购买按钮 +@property (nonatomic, strong) UIButton *buyButton; + +@end @implementation HomeHeadView - (instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { self.backgroundColor = [UIColor clearColor]; + [self setupViews]; + [self setupConstraints]; + [self defaultData]; } return self; } +#pragma mark - Layout +- (void)layoutSubviews { + [super layoutSubviews]; + // 根据实际尺寸更新购买按钮背景的渐变图(避免在未布局前计算尺寸为0) + if (self.buyButton.currentBackgroundImage == nil) { + CGSize size = self.buyButton.bounds.size; + if (size.width > 0 && size.height > 0) { + UIImage *bg = [UIImage kb_gradientImageWithColors:@[[UIColor colorWithHex:0xE6FFF4], [UIColor colorWithHex:0xA6FFD8]] + locations:nil + size:size + direction:KBGradientDirectionLeftToRight + cornerRadius:size.height * 0.5]; + [self.buyButton setBackgroundImage:bg forState:UIControlStateNormal]; + } + } +} + +#pragma mark - UI +- (void)setupViews { + [self addSubview:self.vipImageView]; + [self addSubview:self.titleLabel]; + [self addSubview:self.subTitleLabel]; + [self addSubview:self.featuresContainer]; + [self addSubview:self.buyButton]; +} + +- (void)setupConstraints { + // 顶部图 + [self.vipImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.mas_top).offset(2); + make.centerX.equalTo(self); + make.width.mas_equalTo(217); + make.height.mas_equalTo(166); + }]; + + // 主标题 + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.vipImageView.mas_bottom).offset(28); + make.centerX.equalTo(self); + make.left.greaterThanOrEqualTo(self.mas_left).offset(16); + make.right.lessThanOrEqualTo(self.mas_right).offset(-16); + make.height.mas_equalTo(26); + }]; + + // 副标题 + [self.subTitleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.titleLabel.mas_bottom).offset(3); + make.centerX.equalTo(self.titleLabel); + make.left.greaterThanOrEqualTo(self.mas_left).offset(16); + make.right.lessThanOrEqualTo(self.mas_right).offset(-16); + make.height.mas_equalTo(20); + }]; + + // 功能按钮容器 + [self.featuresContainer mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.subTitleLabel.mas_bottom).offset(16); + make.left.equalTo(self.mas_left).offset(16); + make.right.equalTo(self.mas_right).offset(-16); + make.height.mas_equalTo(94); + }]; + + // 四个按钮等宽分布 + KBTopImageButton *b0 = self.featureButtons[0]; + KBTopImageButton *b1 = self.featureButtons[1]; + KBTopImageButton *b2 = self.featureButtons[2]; + KBTopImageButton *b3 = self.featureButtons[3]; + + [b0 mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.bottom.equalTo(self.featuresContainer); + }]; + [b1 mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(b0.mas_right); + make.top.bottom.equalTo(b0); + make.width.equalTo(b0); + }]; + [b2 mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(b1.mas_right); + make.top.bottom.equalTo(b0); + make.width.equalTo(b0); + }]; + [b3 mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(b2.mas_right); + make.top.bottom.right.equalTo(self.featuresContainer); + make.width.equalTo(b0); + }]; + + // 购买按钮 + [self.buyButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.mas_left).offset(62); + make.right.equalTo(self.mas_right).offset(-62); + make.bottom.equalTo(self.mas_bottom).offset(-5); + make.height.mas_equalTo(56); + }]; +} + +- (void)defaultData { + // 默认文案(使用英文,便于与示例图一致) + self.titleLabel.text = @"Become A Member Of Love Key"; + self.subTitleLabel.text = @"Unlock All Functions"; + + NSArray *titles = @[@"Wireless Sub-ai\nDialogue", + @"Personalized\nKeyboard", + @"Chat\nPersona", + @"Emotional\nCounseling"]; + [self configureFeatureTitles:titles images:nil]; +} + +#pragma mark - Public +- (void)configureFeatureTitles:(NSArray *)titles images:(NSArray *)images { + // 设置四个按钮标题与占位图片(如未传图片则生成渐变圆角占位) + NSInteger count = MIN(4, titles.count); + for (NSInteger i = 0; i < 4; i++) { + KBTopImageButton *btn = self.featureButtons[i]; + if (i < count) { + btn.textLabel.text = titles[i]; + } + UIImage *img = (i < images.count) ? images[i] : nil; + if (!img) { + // 生成一张柔和的渐变占位图 + CGSize s = btn.iconSize; + CGFloat cr = MIN(s.width, s.height) * 0.26; + UIColor *c1 = [UIColor colorWithHex:0xC9F7E9]; + UIColor *c2 = [UIColor colorWithHex:0xA6E6FF]; + if (i == 1) { c1 = [UIColor colorWithHex:0xD7E5FF]; c2 = [UIColor colorWithHex:0xBFD2FF]; } + if (i == 2) { c1 = [UIColor colorWithHex:0xEBD8FF]; c2 = [UIColor colorWithHex:0xDDBBFF]; } + if (i == 3) { c1 = [UIColor colorWithHex:0xD1F5DE]; c2 = [UIColor colorWithHex:0xB6EBCE]; } + img = [UIImage kb_gradientImageWithColors:@[c1, c2] + locations:nil + size:s + direction:KBGradientDirectionLeftTopToRightBottom + cornerRadius:cr]; + } + btn.iconView.image = img; + } +} + +#pragma mark - Actions +- (void)onTapBuyAction { + if (self.onTapBuy) { self.onTapBuy(); } +} + +#pragma mark - Lazy +- (UIImageView *)vipImageView{ + if (!_vipImageView) { + _vipImageView = [[UIImageView alloc] init]; + _vipImageView.image = [UIImage imageNamed:@"home_vip_card"]; + _vipImageView.contentMode = UIViewContentModeScaleAspectFit; + _vipImageView.backgroundColor = [UIColor redColor]; + } + return _vipImageView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightBold]; + _titleLabel.textColor = [UIColor colorWithHex:0x1B1F1A]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + } + return _titleLabel; +} + +- (UILabel *)subTitleLabel { + if (!_subTitleLabel) { + _subTitleLabel = [[UILabel alloc] init]; + _subTitleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightRegular]; + _subTitleLabel.textColor = self.titleLabel.textColor; + _subTitleLabel.textAlignment = NSTextAlignmentCenter; + } + return _subTitleLabel; +} + +- (UIView *)featuresContainer { + if (!_featuresContainer) { + _featuresContainer = [[UIView alloc] init]; + // 不显式背景,保留父视图背景;如需调试可设置颜色 + // _featuresContainer.backgroundColor = [UIColor colorWithWhite:0 alpha:0.02]; + + // 创建4个功能按钮(懒加载一并放到数组) + NSMutableArray *arr = [NSMutableArray arrayWithCapacity:4]; + for (int i = 0; i < 4; i++) { + KBTopImageButton *btn = [[KBTopImageButton alloc] init]; + btn.iconSize = CGSizeMake(46, 46); + btn.spacing = 5; + [self.featuresContainer addSubview:btn]; + [arr addObject:btn]; + } + _featureButtons = [arr copy]; + } + return _featuresContainer; +} + +- (NSArray *)featureButtons { + // 只读访问,实际由 featuresContainer 的懒加载创建 + if (!_featureButtons) { (void)self.featuresContainer; } + return _featureButtons; +} + +- (UIButton *)buyButton { + if (!_buyButton) { + _buyButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_buyButton setTitle:@"Recharge Now" forState:UIControlStateNormal]; + [_buyButton setTitleColor:[UIColor colorWithHex:0x1B1F1A] forState:UIControlStateNormal]; + _buyButton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + + [_buyButton addTarget:self action:@selector(onTapBuyAction) forControlEvents:UIControlEventTouchUpInside]; + } + return _buyButton; +} + @end diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m index 2becb34..38ff135 100644 --- a/keyBoard/Class/Home/V/KBPanModalView.m +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -72,7 +72,7 @@ } - (PanModalHeight)shortFormHeight { - return PanModalHeightMake(PanModalHeightTypeContent, self.minHeight ?: 300); + return PanModalHeightMake(PanModalHeightTypeMaxTopInset, self.minHeight); } - (PanModalHeight)longFormHeight { diff --git a/keyBoard/Class/Home/V/KBTopImageButton.h b/keyBoard/Class/Home/V/KBTopImageButton.h new file mode 100644 index 0000000..e1307da --- /dev/null +++ b/keyBoard/Class/Home/V/KBTopImageButton.h @@ -0,0 +1,25 @@ +// +// KBTopImageButton.h +// keyBoard +// +// 上图下文按钮:支持自定义图标尺寸与上下间距 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBTopImageButton : UIControl +/// 图标视图 +@property (nonatomic, strong, readonly) UIImageView *iconView; +/// 文本标签 +@property (nonatomic, strong, readonly) UILabel *textLabel; +/// 图片与文字之间的间距,默认 6 +@property (nonatomic, assign) CGFloat spacing; +/// 图标尺寸,默认 44x44 +@property (nonatomic, assign) CGSize iconSize; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Home/V/KBTopImageButton.m b/keyBoard/Class/Home/V/KBTopImageButton.m new file mode 100644 index 0000000..9cc985f --- /dev/null +++ b/keyBoard/Class/Home/V/KBTopImageButton.m @@ -0,0 +1,61 @@ +// +// KBTopImageButton.m +// keyBoard +// +// 上图下文按钮:图片在上、文字在下,内部简单布局,适合图标型功能入口 +// + +#import "KBTopImageButton.h" +#import "UIColor+Extension.h" + +@interface KBTopImageButton() +@property (nonatomic, strong) UIImageView *iconView; +@property (nonatomic, strong) UILabel *textLabel; +@end + +@implementation KBTopImageButton + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + _spacing = 6; + _iconSize = CGSizeMake(44, 44); + + _iconView = [[UIImageView alloc] init]; + _iconView.contentMode = UIViewContentModeScaleAspectFit; + [self addSubview:_iconView]; + + _textLabel = [[UILabel alloc] init]; + _textLabel.font = [UIFont systemFontOfSize:12 weight:UIFontWeightSemibold]; + _textLabel.textColor = [UIColor colorWithHex:0x2B2B2B]; + _textLabel.textAlignment = NSTextAlignmentCenter; + _textLabel.numberOfLines = 2; + [self addSubview:_textLabel]; + } + return self; +} + +- (CGSize)intrinsicContentSize { + CGFloat width = MAX(_iconSize.width, 60); + return CGSizeMake(width, _iconSize.height + _spacing + 34); +} + +- (void)layoutSubviews { + [super layoutSubviews]; + CGFloat W = CGRectGetWidth(self.bounds); + CGFloat H = CGRectGetHeight(self.bounds); + CGSize iconS = self.iconSize; + CGFloat ix = (W - iconS.width) * 0.5; + self.iconView.frame = CGRectMake(ix, 0, iconS.width, iconS.height); + + CGFloat labelTop = CGRectGetMaxY(self.iconView.frame) + self.spacing; + CGFloat lh = MAX(0, H - labelTop); + self.textLabel.frame = CGRectMake(0, labelTop, W, lh); +} + +- (void)setHighlighted:(BOOL)highlighted { + [super setHighlighted:highlighted]; + self.alpha = highlighted ? 0.6 : 1.0; +} + +@end + diff --git a/keyBoard/Class/Home/VC/HomeMainVC.m b/keyBoard/Class/Home/VC/HomeMainVC.m index 4b91b0a..4a266b6 100644 --- a/keyBoard/Class/Home/VC/HomeMainVC.m +++ b/keyBoard/Class/Home/VC/HomeMainVC.m @@ -26,28 +26,28 @@ [bgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.edges.equalTo(self.view); }]; - CGFloat topV = (500); +// CGFloat topV = (500); -// [self.view addSubview:self.headView]; -// [self setupMas:topV]; + [self.view addSubview:self.headView]; + [self setupMas]; // 创建sheetVC self.simplePanModalView = [[KBPanModalView alloc] init]; // 使用宏,避免误写成函数指针判断导致恒为 true if (KB_DEVICE_HAS_NOTCH) { - self.simplePanModalView.minHeight = KB_SCREEN_HEIGHT - topV - 34; + self.simplePanModalView.minHeight = 473 - 44 + KB_NAV_TOTAL_HEIGHT; }else{ - self.simplePanModalView.minHeight = KB_SCREEN_HEIGHT - topV; + self.simplePanModalView.minHeight = 473 - 44 + KB_NAV_TOTAL_HEIGHT; // } self.simplePanModalView.topInset = 100; [self.simplePanModalView presentInView:self.view]; } -- (void)setupMas:(CGFloat)headViewTopV{ +- (void)setupMas{ [self.headView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self.view); - make.top.equalTo(self.view); - make.height.mas_equalTo(headViewTopV); + make.top.equalTo(self.view).offset(KB_NAV_TOTAL_HEIGHT); + make.height.mas_equalTo(473 - 44); }]; } From 6e969648c65174022b0d7cae58105295610ca49a Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 15:03:45 +0800 Subject: [PATCH 18/47] 1 --- .../Home/home_hg_icon.imageset/Contents.json | 22 +++++ .../home_hg_icon.imageset/home_hg_icon@2x.png | Bin 0 -> 42824 bytes .../home_hg_icon.imageset/home_hg_icon@3x.png | Bin 0 -> 85922 bytes .../home_left_image.imageset/Contents.json | 22 +++++ .../微信图片_20251107143422_215_763 1.png | Bin 0 -> 2144 bytes .../微信图片_20251107143422_215_763.png | Bin 0 -> 2144 bytes .../home_person_icon.imageset/Contents.json | 22 +++++ .../home_person_icon@2x.png | Bin 0 -> 55254 bytes .../home_person_icon@3x.png | Bin 0 -> 112377 bytes .../home_right_image.imageset/Contents.json | 22 +++++ .../微信图片_20251107143423_216_763 1.png | Bin 0 -> 2184 bytes .../微信图片_20251107143423_216_763.png | Bin 0 -> 2184 bytes keyBoard/Class/Home/V/KBPanModalView.m | 75 +++++++++++++++++- keyBoard/Class/Home/VC/HomeRankVC.m | 2 +- 14 files changed, 160 insertions(+), 5 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Home/home_hg_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_hg_icon.imageset/home_hg_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_hg_icon.imageset/home_hg_icon@3x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_left_image.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763 1.png create mode 100644 keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763.png create mode 100644 keyBoard/Assets.xcassets/Home/home_person_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_person_icon.imageset/home_person_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_person_icon.imageset/home_person_icon@3x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_right_image.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107143423_216_763 1.png create mode 100644 keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107143423_216_763.png diff --git a/keyBoard/Assets.xcassets/Home/home_hg_icon.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_hg_icon.imageset/Contents.json new file mode 100644 index 0000000..9411071 --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_hg_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_hg_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_hg_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_hg_icon.imageset/home_hg_icon@2x.png b/keyBoard/Assets.xcassets/Home/home_hg_icon.imageset/home_hg_icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..1cb0e2b216475182d102a97411c2219788fcae1c GIT binary patch literal 42824 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 w_`98Z^000mGNkl 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­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 Bjrafn literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_left_image.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_left_image.imageset/Contents.json new file mode 100644 index 0000000..e32fee0 --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_left_image.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "微信图片_20251107143422_215_763.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "微信图片_20251107143422_215_763 1.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763 1.png b/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763 1.png new file mode 100644 index 0000000000000000000000000000000000000000..0886ec6dd6e0225c21ca91a9ad42f88e760050ac GIT binary patch literal 2144 zcmWkvc|6qVAAi2z8D<-cTL%(`uuk*p5Krb!e< zrQ|+xmio$O*DY5?7+rRV5ymx`-*=xs-p}!VKJU-xc|FhP^IUdzI=(|zSr!1WgJy5* z3IL1_fiqqjMb_D#184_DxE{9#6}@`}=mZ;KO>@ViEgm0m2>`q-&DP32Hg9fxEd0Lx zo|LJ&T>&=&Ptyc|nEM)|PPlREC@w&XD6VnwD8^IQtNr8|uQ_$!V}W#OLyvCQCrJNH z&>KcD>t+b%(-X{l0tFx%h0I96{{iEOqX24P2#K^Cn6`kyfw1{`Cj}7nWz9)lF+TTVf-0}Y)Bn2hvO`$f+g;Md9x@@Sm6 z_0;rUDWu4{e6Gn?+weP}_o{%hbxmk6smZM#Uzs{TQ%TCVWaD}is=Rk0_Ml4d(a3t9 zEIcec0wFEma0#g^Rzl^Co#0J?Dut>#iv``2kL_NxEJ=cDcv)Q`F&9jui`xpf-GmUE zpn0xLMjZ>f-ZZSOdMQ-#vQ`;et2;!4Q<%XaH5si>8;=(&?#du>hM|WBYC{`2?!P_} zHuJJZ?{6Hd$5*L=`Qi0l2e`9x&q0jl^2C zpY##RLfPhVb=dyQ$nD5Yy9juH z>d?7v;QS&ojfl8Ey4 zsd%RO#SsuGkdumBM4k-WaA_M8%?_YS-erI=$=WimO^yQjP(i7YNyKOSaARNP!OP>a)GO{aN0^^WZx4x*Z>B6uA3prD{nKYo^bPV;Zvr>B=K4K^oIVEtS%z^K^$3x9|C8<~eb_3tz#e zC*s(X+%z2sL9YVjl`{<2REFWCcW7Rls%Ru9t?vV%5l;a*2Vuay8kNGWEW-m$)Dd5& z*+H7)lK7?%%Qr>2(z7?^w;xbDn9O@<9jLgH)ry#-ioU9-h+sb|a=Aibp<5f5BTwJY zy?uF1JE`+O{f+_+xKSI8ZZPsRC=kG;WYlmu&jO|nO6e2PNCYwyzZZ`072i5|QVDUs z2$=K>=gr_WoBwFkUi_H#S5(X%2#)nb&pO{0Pp%tpISRA&Qm*$xzPr#Js|_{Lz+TK~ zo{nC|Vu8PlAt}~R)L|0iX`gNkPKzfZORgWp0@78~u{f@zXX6o%=$cmY5IQvXSNVz* zuyHmdHMZQiZCxJYq^+Hk>l&(DQ28!h@Ky!_e_R=>?7Y3$J}k@aimypHf5o7)+vEhx z-=VXnr|Ndcf%O$}p?_rz1(nz7*j@iWb=p`yRFrsRUK23OLY}ri{O+S>7>?#(ptIxc z4*lg-z|LqBOMi020i}(v;$F+5Cn}=Jy0RLrXcpe$Dx`Z6fQJ5^5UbOhgwH$sdEnq! z!`&Lan7-r#9I`Pr=VqR8=4?*3lT%YQlovsR5 zX*LB|T;DF+#Ifb(6c)-HC9fTHdrc6Url3?PtecuoFXb4Goq}?5-!nKPvyA(-C#^{$ zf(#Z^6ru0u7pmruyM9MfCZK4LeQ+eflsh+*9ww=eXx)&iZbP zp~~dfwYy;8t3wNq^N0Dh;TD~u6E5eXWq?`k1GI{ao^T-s^R|Sy;Nm+0`S8Z8ar&zD&CE%~mO z9R2uZAgrq(;xd7spEA1dbF*~?=f<+nH3KMKEBAp?-*QOLxS^d(v0fMBZ&pyxG-^Hk zdfhXVg0(O={~;^6p2ED@KDP-$hFEUI+iU9ltZkPeR#CeuE~&`7N$~E%9r{?nIAd1S zT>asN5teB8TO^j*upe#>n32S`h~5*PpZ}S!yX)uX+Krf?bdT5 z!2VjjMb8fGT=ezESnKhT4uF3XhZtZ`5K&GR3j`}Ab2Ue|#5nB@8K&^9XGiqd5w zVMj#X+QX$S&0XSpUA>sgUS)hQi55*<&rkUKqXaVL1-(pK&@w{5Ye2JevaPUYUid%X C>C9#T literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763.png b/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763.png new file mode 100644 index 0000000000000000000000000000000000000000..0886ec6dd6e0225c21ca91a9ad42f88e760050ac GIT binary patch literal 2144 zcmWkvc|6qVAAi2z8D<-cTL%(`uuk*p5Krb!e< zrQ|+xmio$O*DY5?7+rRV5ymx`-*=xs-p}!VKJU-xc|FhP^IUdzI=(|zSr!1WgJy5* z3IL1_fiqqjMb_D#184_DxE{9#6}@`}=mZ;KO>@ViEgm0m2>`q-&DP32Hg9fxEd0Lx zo|LJ&T>&=&Ptyc|nEM)|PPlREC@w&XD6VnwD8^IQtNr8|uQ_$!V}W#OLyvCQCrJNH z&>KcD>t+b%(-X{l0tFx%h0I96{{iEOqX24P2#K^Cn6`kyfw1{`Cj}7nWz9)lF+TTVf-0}Y)Bn2hvO`$f+g;Md9x@@Sm6 z_0;rUDWu4{e6Gn?+weP}_o{%hbxmk6smZM#Uzs{TQ%TCVWaD}is=Rk0_Ml4d(a3t9 zEIcec0wFEma0#g^Rzl^Co#0J?Dut>#iv``2kL_NxEJ=cDcv)Q`F&9jui`xpf-GmUE zpn0xLMjZ>f-ZZSOdMQ-#vQ`;et2;!4Q<%XaH5si>8;=(&?#du>hM|WBYC{`2?!P_} zHuJJZ?{6Hd$5*L=`Qi0l2e`9x&q0jl^2C zpY##RLfPhVb=dyQ$nD5Yy9juH z>d?7v;QS&ojfl8Ey4 zsd%RO#SsuGkdumBM4k-WaA_M8%?_YS-erI=$=WimO^yQjP(i7YNyKOSaARNP!OP>a)GO{aN0^^WZx4x*Z>B6uA3prD{nKYo^bPV;Zvr>B=K4K^oIVEtS%z^K^$3x9|C8<~eb_3tz#e zC*s(X+%z2sL9YVjl`{<2REFWCcW7Rls%Ru9t?vV%5l;a*2Vuay8kNGWEW-m$)Dd5& z*+H7)lK7?%%Qr>2(z7?^w;xbDn9O@<9jLgH)ry#-ioU9-h+sb|a=Aibp<5f5BTwJY zy?uF1JE`+O{f+_+xKSI8ZZPsRC=kG;WYlmu&jO|nO6e2PNCYwyzZZ`072i5|QVDUs z2$=K>=gr_WoBwFkUi_H#S5(X%2#)nb&pO{0Pp%tpISRA&Qm*$xzPr#Js|_{Lz+TK~ zo{nC|Vu8PlAt}~R)L|0iX`gNkPKzfZORgWp0@78~u{f@zXX6o%=$cmY5IQvXSNVz* zuyHmdHMZQiZCxJYq^+Hk>l&(DQ28!h@Ky!_e_R=>?7Y3$J}k@aimypHf5o7)+vEhx z-=VXnr|Ndcf%O$}p?_rz1(nz7*j@iWb=p`yRFrsRUK23OLY}ri{O+S>7>?#(ptIxc z4*lg-z|LqBOMi020i}(v;$F+5Cn}=Jy0RLrXcpe$Dx`Z6fQJ5^5UbOhgwH$sdEnq! z!`&Lan7-r#9I`Pr=VqR8=4?*3lT%YQlovsR5 zX*LB|T;DF+#Ifb(6c)-HC9fTHdrc6Url3?PtecuoFXb4Goq}?5-!nKPvyA(-C#^{$ zf(#Z^6ru0u7pmruyM9MfCZK4LeQ+eflsh+*9ww=eXx)&iZbP zp~~dfwYy;8t3wNq^N0Dh;TD~u6E5eXWq?`k1GI{ao^T-s^R|Sy;Nm+0`S8Z8ar&zD&CE%~mO z9R2uZAgrq(;xd7spEA1dbF*~?=f<+nH3KMKEBAp?-*QOLxS^d(v0fMBZ&pyxG-^Hk zdfhXVg0(O={~;^6p2ED@KDP-$hFEUI+iU9ltZkPeR#CeuE~&`7N$~E%9r{?nIAd1S zT>asN5teB8TO^j*upe#>n32S`h~5*PpZ}S!yX)uX+Krf?bdT5 z!2VjjMb8fGT=ezESnKhT4uF3XhZtZ`5K&GR3j`}Ab2Ue|#5nB@8K&^9XGiqd5w zVMj#X+QX$S&0XSpUA>sgUS)hQi55*<&rkUKqXaVL1-(pK&@w{5Ye2JevaPUYUid%X C>C9#T literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_person_icon.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_person_icon.imageset/Contents.json new file mode 100644 index 0000000..f018f56 --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_person_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_person_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_person_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_person_icon.imageset/home_person_icon@2x.png b/keyBoard/Assets.xcassets/Home/home_person_icon.imageset/home_person_icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..2481ac6b0e4ba8c85eae2ed09167c3f003500ddf GIT binary patch literal 55254 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­!byq%#$qQ`n-kPLfNf{F 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 DBdwH~ literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_person_icon.imageset/home_person_icon@3x.png b/keyBoard/Assets.xcassets/Home/home_person_icon.imageset/home_person_icon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..89cfb4616cb9ae31ea283b81e0c8fa099afd2f6f GIT binary patch literal 112377 zcmV)tK$pLXP)EABXLkA3)6cnGSJG8)2+@1*V6cNtTtX63?Dzgj{7PPm6PKGfc8n7j9D{=k zxMK^)j)ReHz=#e8VI+`*>h10HbAG+-z32Z~`*-e@AlQ+FFuZ5B_WI52*)wa_thK(g zW@aBrUf;aFsex~5;H%caH-Yq3tMHo)zNrD}n?U-e7kpC#kAnuj38cqCiGSTJLJ00~ z2>#}qZ;sBBJs&=N*zD>4y5;$1fBI%b`bKjC1H@bJTxtI7NAEoND<8f0#$UVb_;Y^i zQ^#KQTc0@c9l!bE2man~eE7ca`_&JA@&DNW$9MifyK&7AcBZfXx83Q>|IHEf$G1KBocDh2)DwT_&mX+hS=tQt*V^GXJA1eWg8S*4Pu70s&+dNGFMRTWzyFILKk}pdKXTu1 z$15ARR{G)AUaR{@np1JqPn^zt@B8HwcijD(4}R{8zjyizU;Lxd zsk843gW-oZA85Vzx8HZiFTDFx_y54}{P{iK@oOKr{mQq${kG)cQhhW3=r!<7AU%4W zJ*F1stUvvUyXODPhmT$QmXF-~;_x}0+_IvO9!c+e6WB2U) z^*_C%v9nZsOym8V*65o+`WjmN@GbXG|KzRrJ@G9cdEh%oSIzvpxEKHWsM~&je|zvp zt<~*+w{rZn+8Q-5Pso%M5S!DsvQacv%b zP^)*{?atkPN3wGJ=dWD9^PV@hPMmpL=j_=JbWWZ7!>Hf+`KzDyntyWh2R{GIx4-|k znXjRm{y)L`n?QP;&3O1dx782-*%zMm6Cb+!&CP25!K5hOlXZu0?{0Md?t4idG7Jt(|Fj`c+eIg*08&+p@FOgxVDzn+c>NC z>S=ACJ+94T_q(+RzBse~;C)YN9XQ zD?7|Lf%KL2@`y_h-+X6!_)j0$_2VDB^VvWC!7u*1YQ1@TJtQ9~y5oPz9_PvHXV(v$ zJ$icj)R7a>xueIma^yj+pLjsqC+=78^bw6#PN>*Cr_kPz>viM+0bVZK- z<@s1SX_k$Zk4f+~)+ZqzZ z21L2;){0uIXVp4;Qd=jES2rGfaPQWA4?c5z^6XC*>sz0>>KU(m%e!v*%uTlRLrIVF z(1I5KAHBZ`q{nF3!?)hq{J~rAeo3?x|NGQuzvHs#y>3+e5Ygv~&c=4MwYsU56K8eq z_zA6^I-#voN7XrfOoQbU%GNC6tSWRjr9oFBk_g8R*+>OIF){#*0l)+>I6nX>!BFHX zLZKWA$R4~`0R9<{=l@SJ%wCxHM>DOpmRmiwqI1X2X!YnRZJs=> zHZyyd<=T+t(|Bt|1r92fS&k)`!*K&qq6Cgbj1o9RiZY+8u!v$*1Ql`$E|$`|d~-pS zrAst($qm|d%`Ul5?V$vR{jOqtQs?UQeU#E%nw{)H!2-I;!oX zNA?WPocTxj`sQ!PqtWmF`g?DC`r*UjZ?rG{jUK!n!S(jrZcBdbBX{rp$q(K8+@JXH z1HYU`(d}vG{;P)B3&Jqlm5s(xce|zK)5}^tb5@(nwxK_#_VQ`S?S0boHGSy~s_iJ5+nKt>rW401*IM0X(bA>JfQ{Yp0a4?2nG#15ir^%eSK3 z_l(PZNY2u&004Oi%9-gybxPBhT&IK2dYKMB=T(}2!m|_>_iMm1t2G>GlV#O_J&f&r zs*M>{YYipHTX4*62Nl~7d_i0Hd`{Z{V;jJ1mBagmnP4y|&JG8344gq9NaB zvW;cs+p7w_whE4?GXN9}I7E>whc%7PFK9>TQz<8^=jwR^6ELQ zvm6}tdrAPz%&r4kSlq38T9NB+@jdB&ZQlJ^=r$Q(`ls&GaOF6W?=;_&R+P8b6gc@S zY!B9N$@SZ1G!zF1&Q1bHJqcj5=^^rT$@dh9EJm`ry_Uq$cxY{^;M-FHIL7M$k5k3b zxg#3Wmn~6~B-YZE*J<(En^avoAkQI2J{rPeQ{C0GZnUzz;9J}Od}?_1*M8$qZrdyL z`*@?tmXAOCwwted`!BrfM}G5{fA1H6=QrMSqwQZG?|vQ)zrWEy`mqlj+5M9rKlX-3 z)ctu4^FIlL(ZBC^dRJ|CdwxXZaRwkx!v_74Ha50P5N)rotG&L;=KCBo{8{DeXI1cl z)S^Vek}Cs5IUp(kP);<-yjOL0NxQDNNf$l&B|5+XfGw9c`vaXlcS@UU=gQ4}b9!F$ zOZzoDv!FO1X>j(KHiW4cGfwG+x)%L?5M6@3FrM>3G`ZOPHEXy*X0 zIKU98V+rZlf0YE7Jrr@;7l)w41yy`d)fcM8LG=iV3)SOH4L?>*BUSUR($Ti!-i9Lj z)%qEQb4OL2J*ueP*3A5F&0Tc48hb8QLUb*NqT|g~WvgdgvbFJTuHAmiJO10pF4g0B z{oHTfGJSMA`uqKj_20|Rp8eta*2X_hhNHK>>s^1g>v8PnQM2-oy2bzN8wB^}kDb`} zpFaNJ|6QxNTl^@0`>;RwyX|)OV5`&f*{D$BW4Yki4-{&5I@;LU)YitPTALeuz+BbX zA`k$weNaXe$od_PapVl=&2e7azZ4Dt0gOwY_99)(DO!^Qg8`>*YpZ9pe40oCP@7W= znrC0sY|hFvt9MQx)jHtWxbJqBS9fV}?m;5X8RaE#h!`Ux3H<~PEF2{EG$jFA(5R9C zi=__0c+UDF2WS9EEp}=^%{0#g?8R=ewlqg-(m%M(FHIA|Y7-EM7bdvjAAK-Aq>FaOMD z#4&Kja&El6p`2x0HtcIujFg2jP9)j)o2iSg)aB2AwJu}tQ!rC6FQ4U5;+Q%to#N(< z7WN;~9Q%%l{ZfY``qDSXn{ z!7oyS_tTXG5PD6=7O~n&yXO?GpOhmKRb8UFJr@z38Y;g>ZEePWd+SA&Uhzx6eDf#f z^%$?4`RM(YcYpX<`t})Hq-@gdm|1PWS0v7 zRB}>Dydpyxy^$8-*ofMH>Y}(*U$atr>0LA8{gO8Y`tss?mKT9pE>F3M4?8-s|t|B(lum- z3z_$ilJ(isbjC&-JJgYFwB2z+#7vwr`5e=eY5Sh+C7bl zKxv%dSc&pHm+fapEVp{Sfm&N_bvCyF(K=CRO@sAi4RQX_*0M(3P1^QolZit-#Z&XT z8W&xmF5ib%mQShMZmCkA);u%x^!%bCKEC!&J-{*aUuf%r&#QChL5(-h z5_z_yVOLDy&`9OprpROtB0%Jj%>X2T^KdXZA`gK=mB>Spss$)scz((|%O^Z1 zajb+iqTEA<7Y7J}3OGRkwJ}&kee~tP7wX(lCgy=tf;^h9H_|%E-Ts!0c%nghGG3X3m zw%O_|t#7xZ?RH;dz>?x@l{ArxpwV!o;Jj=(*X{Mx-riQ10K_+;jEIr3 z!Ow{l0ryEc6u9UK&(@7E{SL)MnsXe1pE>cMdYzW)Q;S;McZq78z7072+IsK~Z9K@* z?aaLzZ=6=%*^qr-vOhvC|FVI|12W}sQfE#IXhhWEBnth7k{r)op^QF}6A{!YjlE(# zh(s~qNT8UPmXCd;m~rw*8z%#g$}7l#5a^?vKmck%6wX=B=A;=DK}Nnz&p(rnIl!*F<(A(8oRD2i0FEWG?{6z?ot4__M5cxaT=MPq6@J+Jm-erdlw$l9KZkF&hr==p|cUG<&7p_8^LP~udxaygd7U+4W_Tw znhN%l(`ikW+{<_R->JFHmm$$#dK=K{C-rv*t&U$tazImM4_b{x^u-1V zlLQMdl#R4;OYOOs`NdspZ!?3+kejHW; zK!djI&>#@aM4eF1-nm3u;oPpIpb|U+Or{yY<5+rmmM;;raE$DcQwfp?t9fLPNn;!- z@~$lBQDjT-IHH%}WsxTsi0HQf>^YP%o|1?(1_lF#0meXLWRuKbG}Hj#3nWI9aEf`Y{`D!ZHOh56aH@#_~ujA#v zj(tDouD|!T+mioy>(NVo>?241Sv9GAh6wcI?0>FV-`K8hY_`>A4>TI)ie037ni3&m znc=rNmc?h4R;n6fgl?~|E@j<~4FGfw$3LY3U;OO@Yu?^urX4D3%xLco&(e*r`fki7HV8yVOD(+FM$ zNCQ*`NJ~)hoom!y)o6QJvw*4A?OZq5+Iot<>^l6@H_xYo@sAGI*8WBN_>r0Rnd2I= zERKn6RafkQ$P(GYP>2|cm(zFGbwgK0+<@;T=`Tz}3bvUHy!qZMX`xePq z0$QIXfLYECw%0XcnKx4m=h9yL`EP&w+Y{|vKk^g5b}--Gd~^HU>Hn>D>R7c~+F@PM zXrL-OhyhZJJ`&4A1rgQub-vyRS)AT{=bd*R+hO%}OAzbp*7u|8`0%IhpRRrS_&-ma z{vaC;f3VZ(-n6;VO13sRVIu;KhZ&v}WE=2m8nc{}x;V%d$FE7uGgG_sUK!5S#~Hdf zO=o>W-PLpIvdL|~mlm~e*OD&Uvs(xDLVI>;_u_))cwetok`u z;oE__0IDQ()(2Dr05k@)IsIo$T!XDu`F1O5j)qU^cB686_k%z9vsd+(mw&ahdhYLc zS5DW58_OEEHspvzX(Uz^p|mCE3q&K8Itz?R^dC2;PbZb?&mTT~xZus#_4Z%a-v1Y! zA3hxXf4=R^;(z@3gRgI@`jKLg|HS5I=c@I!c3J|6nQ?@Jn8QYqQ)Br(_111`CV%O_*)d5_c)fM&5on$F@S|h&B=Qv?~*TuT-MX%GP&v=2haf;K& zkF&=bYJOo!vorG=;d~p%?$sLKfZ8Vk(AsGZ5H^WGT{)I;f#_EPs00psAb6US+b{$B z6}*5ulyn{hWg3DU8GHl(aFFDQN)d&YUMLTfaxcd}0oH{I`pRh^0E0y#14T~s8!>BJ zibGs6+dAYyZ-M_AJb6_xzj|=Vvv~w;-e0 z=_$=Y^GqO%bMxB0xTO66>(YZ4>57XF=~50?c2QQV)Fh;`{w?xZ-+cfyfQA5W3=N22 z!>u*GIdz`BFwSrM$N%^Tu3SHL>Zi7rk3GM)z8q&ntud2XU`1g2p$MIMB9ZL{?U_eb z$vKl@q1x2kIIU0pRwdiMSKk1a{|1oZD~e$M8bkFJr@lKMj(?L+62HE^v3=v(+P2@? z=yJr|E7$l1Gp{GgBxpK`JWf@p&A~y3Xyb6im}OkXcZ@Wxmh~+{bvM?DLT3Qc360jz zD96#7^LuphP0!Y4oW^BwMQ2Z*)Bqq&&n=Vy%5cOD_C6aA+^*iqdzI6UGjiFiX%R^5 zeS|}+1kMCN0q54ksT?IpKrWEP9dNrHa*`RsQRf1cAdn7zlNSN!OS-s+7D1J1q6Em%Ph}zq7bY(`Y+TaqHlBtTHfmD z>{?5w*S2+XWlJZZ<13pwwz{d4Yg;S-uNv}MqiP&Hht0C=3u9#FzTyf;6YE( z4tbtY2P)2$bK;m*Yf5M4{(P+HmtXj%Hw{Xae4T&%*SY`yse8h-{|}!y`LtSf=3Rj3 zt(|u7Wn1g*`u1j59X7y2_8%FuZ3scJk7NL{nR~=cyScV5+9>8Az<}UMD``a;vtgID zerI!4?UmE&a$G&w+)%Dqd#}BT)41oUy0}{_>#ORpH<+55)l_pv2B6JjEaC3|g4(1b zPLT4>CdMWLafFRk6^H}@M<#<~7YYvt&raSz9oW0z7t{%p{SYJfc(JF@oW#ge=FDkG zEzfH?=j3=kPgLhAsDO7FftXBeFVZ72Z?TuzYHu@f=bCQTv^3k)E~3fe^t22(&3Z%5 z#p;YQo#RyV=*os3T;9+TP9TpguK|{Iom}72X(INy?G}LPuy5*Uor8w0{#e^%sZ+%2 zhKf3&rjDAK~8osZ$4PFa3u<6zBPS`mOG3wl><+Tbmtco8kfMZTnz||47a$a^4b@pYaj3 zt*zB{K2k=qDAi)^Uu!g#q$!6CL*8$z%?H!=*;DFqsF3l|aGE8_waZ{;A5T!6iCE=s4$ZTZGtp~rrtO$0I^ z)ojVeGHbp$r6ze!G|Lmp99^vwosO<<=z+6qI=;H4vjEBd0=>)9Yrv8>voV!mryqKA z&dJBIl4?`c#=I(x*)sB^m4@P^CZAN~lBz^LqzwfFQGHSQ)IN=7F4B1Zkg}!A6!u)H zWZyNa?Kvbrv&fjS5eFV_*wyZ4RURD{9B+p(ntZrLcM*E<959r6FdZV70m=UR6qWgz zl{~5Z)0h75|LAkh6sB*C%YP$?@e}WVaHdhe{O|d!_`UI9^ut?Qon4z-9S#e+vdCgb zsRhb3S4z#hhrXeRt6_zipR!d#>0aLScN)kYXNmWll000mGNklz~aF5pR{k&QnCX6^eDmvS; zZ$M&s;&zsBf!R?x4hKjaBqN!hTUlWlo+h^e$KE^SwY&#TCcd*Ds#qC`%qOg0-DY>={rU#G{MTEaH-GZJYy4E@*Ym;nr}@tF^!3e_Z?(Fz zzj?DIi$xeyWWX^>#p1L%Gg@n7QyZ&msxWJc=&-iF#*#*wU0lQwVgT4vXLB6@ol}RS z>y#P#nx{Tn2d=wGeayAK)xudCs#P1xaLVOy&a4?&Zipob zp-#aZ5N9rpYbmmDD@=Zb{h@$LgK)1M3OJwWaY7!au@{b7js}*R5u6oLX1B8+s% zatAipxk>=BU(4yc0cfUbRn0(_rb(<3AX{aRcygn~US_g1YYm37Z)T=G=Nz(l#Q-9v zlZZZT6K~5Ykv9+s5JhQCG0`T96ItEJyHb7@QVfl9D z4NuZQUaLf~N?Orub6UfVb*mzl6_28xGoqd2{e&DY%LC;e$980mXn=H~q>_K&MImJ@xq9p& zI)g#!nA44hrWv<=;kQ#t!DFj8(lHJKPHwie*&nLUl5b2q6V*8<>n9>D$@7ekxaED2 z{VVVN5NY5ma!G|rD3L`UdmkaAEwhXq`ST!h=tEHHQ-Crb|0M&HD>n8F@i;++?<#h zt$;=>W7-=V+UD5WVThC&c!TF2-!JAC7BxG+qzuJ(+g+A~Ed~~3CrB4vdYPhnQ!S3Y z3!JN2scOKX!t&j>YyFD=h`rF5Q@F4LAknwVC0vHDO}*Wh#d(Qn_@qg0fzaWlKKx?1C&(S(&&32(YpDS$YmRM6oK(YE^TMnyM__ zVok)xLk`;3_Ay7b-6rBNZ7j)O&T?3D~!s`uAbAGQ>Y2ePPC z*aV3ka>khO(Ywih&H(GNsf;rKwQ*$B8x?uTD%Jb)#?-&r9z?$=tH94U;_d%Bg*qI9 zcQ5!mFOSCY?+)9;H*T!ArZ#LZL=+mb=^c;9Dxe%dlm;QqSrYU+%(TnP>T{x2Z`73o ztW6@0yw}qH{c6n2X-wTdN7=#!qRSuwSA8hDml;UY`{UoSuNjvht`Qe-JLy9 z-rJJKJ&8RKULfHZVn!{~!W_pmG)ZwEGqnPJxU$&F@t#1+vz0l=@8rhu1O@r>nIBq< z%W}MsRV~98Wp)PuRp6il0}v50iM(nYm`qs&N)w6kZWFE7So+#gb;opOG8$jndS@VT zGSI|y8hI~EOX6MRRLYVgZ->tUW0%OsNqI;UBTNJtpd%-F>XfM@C&?xP1}>w3elloO z0;rHhA*P)2o$1gazkz6Kw53MYm1B8aFrEUt1@s%>U7*8&Ow$~d$Jog+jsVY)WwN?i z$dpe_A9ud;#$wmZFCTu};f}t6ufH}R9lrCRo@KjeG9k6z&0yx6Uc&yM@Mmi3k*!SpyF2AeH%I z;uK~$j4mT{R*WtB!QXf~U&qNgh`Jr~R#?faC zTO+B6D%6ja_=x%{0cLfgQqI70fFtEL4kP5Vu@?YgOvD}l#0~=VAhHVZ7J!LI9W@49 znlIXFXeejV$p8ci{Ra3Lm=Hs-Qk_Gdge7I5AfWpKTYBov%uZ|nMF;ooy6mcV&QoMrT_7acf8||4!!NS{%G#jTW^i^4RHCt4jB&LcBY1&FQhY3rMO_p*F zh40$EpNO+Z2?q#iCDv4~_uip%pZ`?(9}(%FJE7eE5_{Mt z0u59~ATu&EpTmIW^uoxd4~OH}EprYC-%^<`GnNhZBj=p>!RZ_%f(s5|al#&}wXNoJ$lQwD@&PUI)D^GJP_(TFk zrFiSaiL`g_^tIWU6VJ;}pLo@H`PBF4>+A2x+FS1*_j-RCcd~cff3*K^-u7!Bc*#58 zdF!miK=t*x{MWi$i$rO^|G(uNYj3P?&ad)?ylemVDa*7$x6RRYMPKaaAK?{M_L-UR7O$$+K)Mrvy72taHas6H~T1(FK2Ua zXei0s3&>NKQd$Lwn>P4HStrn!?71v1RNzp~ImPfZ@{!jNXKk~DE5GruWG$%Ajh8r4 zwIomG0(qy1XPPSVUOe(F$TK#loW>jdk=mJ)1Ei7nyqmN!nVqBw1x=oj8-X3|#8sf< zjAfS{B6I-a_E^YRFpL8Jg*;I`Cc4jtftJ!-wU{#5yC5oYPwI-X2gWP-7J#cDN)?Q? z!i4CkAD}Vi1IFC50}~D_#w^!Ie1aHluPfVFQNDiGYvpt^Up{?#SX+Kw*joF+q_g$g zdC~j*U;M52{hgotxmzlT{P^Gh3y%JO@&2oNefV(jex>rQad1D>?{;RlHn!AdY1Sj! z^!cV^d!7NOZ+$?}2S`0WjE?$U&2j=aJ3Fg(Z>S#8s$Q?_lFP2pW!GM>-4`8DL=>`* zwCj8y*vr^ZC!~+~+>c5%%rso_=s=`PNcklS^1rz-SJmIc7$@w=}RYXi1FH z*)-3y!$9L2n^S%Rs1~^epfA}tPS_9rXQpi!yI|mR1XpG25PO&GY+##zi(LD7` zjtsfhIh5!Yks|gYKJtoq=SvFm5@cx*%^3@MM;=+M^8&}ukYzv=>W%_nEHoq<74UVC zXF^KDP>ab}yBbb*nrJ!@?}8D72=Ea6f)PM5@DxmF89*7bdWiY1G;`nzP3^l>jolZi zKDSTRsYR*MU}x%6K$?6X?^*H+T46+rBQt1m*4p( zZ~TQ{|I=Oc=NR5!%WZo6nsj7?D4u!Gt4Hnb&u*=5%oaqAsai!d^{S@pwerh*os+kE z5~-Ou)nl(}B~g{rsZ36uZy8Jb_Up2%uG1BKJe}q6Aj84z=zH1z_b7ZgJ$LtQI(_>m zwep3}sD1PF94VWw{ImQw3E-J=q6hrN;w@yfLTdMb~Qa@~3Fu)z2tt_vKI4+<|M>BjPtd}sR?($VNQe(5*=?7QFgTaV9w3XDPhmAC&Z-+mP@ zfA~-DzSfPiA75Tw-+SW3Nu4};Oe-f(YI|ix9lrbY*~{2Bp&^^-K28+kR5O5O|Dh{& z2=E-d{7UWGvtJI+*jQfCxd$H5$0*#8J4I=1EBluur`se{C`>=}B<(8BOL%+2;MWAvPrag~x4hbOJ0}WZmSXu&zGJF3}>p;Jf@$~!{5q#vS=e^?{ z#9I%E%kPkNJt7jE;iGdqce0Z?PkmTuvUDquH%!RJ0J-zBQ_1Abk#)pm(E~hffYgGF zr=#4VGmmcTF4Mk7r1^TPn06>YMuGQ61<}fg!m=+hfdp0tIs2&|AX?s7<-1p3Bcv*P zBA3+U>oZFD#$@1WEbLKzewS(nq^Vt$?^QCpNA_C0kMD&LzSan81q}mmUP2GPiI%paSFLPsRy`T8(x|c%; zM}`{mWIXL%Ns_0Mkt4lu!`t}VGVJ8WHYapWQOwx9E9)D0v~#%~d9{<$bSE21$2O1; zIN|F6q8^h#hNFtH`I2%qqM&`#iDnw9T*=r5WK^IAi24OOv$5`UNl%4x06yY$cAam4 zXVzAg!8-uZoX;NR$u0Y(0x%T$P%@i($@@qSidfdgW}7I27kx#s{M3T{%x@r{=z8g|C6`A_15NjnI6v+Q6Eos6J9WV4I?|~BBv-x z6r~l#?0pgx5iz5Lh%&&CvZtw^xmS%-_bEMjk96W5g)@BTId@FMwbL55)|BaaeU_{3bgR4wYIH}5K>PQo#Bt%I7-k6$Km1r5`a0a{*Jj|9k z0J3jch0T;WM4%r7QGidt>q>Hhb5PjnGo#KB`9@HIBk@A#uYx)S4pY!p!SMy6dhX5lTTUp~kKuY3NF?G)ORHpQADFUdJ zp63gBWHIL-5q)}qs68q;Dlar9YFZo57-D*1E2RC?sb=});7tVM1fKxGLV@}={v1A5 zR92yFz-A-%t!hgv;)pFaP=TXg($AJg`!yOj*qw5ujvx;Ud7FTF@N zU4E&qzxW~@+Otdh7iP43dP?)nx@I`An10Lmt`0^OQDgnU+CaE#L$kt&vu*Cx~euv~pk2B^YCvK2v2yMoEO z0F))525nV(Thq0E>z@bTf7?55zGX>|IT-pp2z}fyazrm;+!ObAo_FOsG)6K_*TklEBf0&D5C&7;4Du7Z_;7$({?&Do|h8 zI8av*+Q9fWkr>c&_!gAfEv|_R(vG~NUb$3q5+aMF#DL{hURL`dGPyEj?xEMy8=G1k zWQyZT2_jFUvOVow*@T}mLxIU)V=A+SGR8b4g7k<&opGTqW3uI)Lr9Z8qHYxs?P{i) zpQ_1tmxF{4RVFf`1FA7@_+f7z>EHeG&3`hF3LcmHaR*YU#!pZYQdTl50mSS+W_B3kbUFEe;d4%aT%0On z);C8OuuSXn{bZ}%(=s1xPp_`&+~g^#P=Q0)j5)@sDxQ z&NV3$rM$6+GBLe-2#A-@n%9W zwRo0#F)I&@Bry(?!6!8iB6cfd3D_sXjfi$*D7VNo=&{s;y6tMx@BRI#tA9e9Qq&6r zd5jrU^cY+ICCyx+t4+^2NXjtGgffB;r7o#a4Z6GlIA0Wkg>Q4x8d3a~yB)nrSGFDW!hN zgZIX#%v0a;d7jDi%A**7a(E4~$0nremI%{Sj1!Ro8JQPWq|{(owWL{m1SXN1-q0~Hvk zz(AJI0g085_&6K0*`MBjh{4vCM?@!_b7X`CGPq`}4UBRWWN8Mk%<{$q17%PSjg2U~ z02GvLw^C1n&Y5$gPb0n07;E!rpKoqcKK|oRqShAVESW z=bXIvB8OQeM1}$!CwXzfQdF3bxXihorGa8sg3*2)MPEwxUepOPXXS?k$7ieqmU5e& zj!vzu>ukHjca^3LMC?t==y;ybq>V@d@)?mux&WDt#^`jA1$9}@8Hk4Pj;J2Pz#KIt zovp^&JzY~ZW={eaUUQpFBs`NV$DE_H3|m`DGX<0}Le6bIxURBHKgYMjG4Jh=VVlWt zqtn(_Yg_$ZNA)yOvr<9!fGV&)_7Ty^KqDp$168n-Jo15Z15AOe)(;c695#rNFVHRk z#(?dDyrvf~Qeb&+|H(0%bOuDI93Tl`dB9X5GFAHhpJ-=O&txJnb~dQTME)_g`YRgc zdEs&fnWMDazy#T#ZSeUx<1l3;o25oTU+h(PqIcQn*NC=fpgu5yKkM&k$qT zQe%uqW)Gv%;mzqw3i^^~0F+ZV$Cx<=E{v#G7{M>M6lE7>y@Iy+WZy&i0ApArZ1s9- zV{mI5BU2fLaBIYpb6$}gM#nLOXlwl&6}YHM$D(@~F$8W$o{Ho||7BACPzLWZdp_l% z+$ZhSqej`*#*v{{Tgt8DoF~@Tb;ACLw^CQkej&!0BBGIpF7#mnK*j?m+yxY5yhi9` zkh33RDc8qFBY1mcu*t$elsKuGMp|MySFglK6BN)VL8{DKA5=lwLIrxv;4y}9NXo>4 z!dNX17gjl3IJvQ|F3xLvU8~pOuxXQMw9(tv7U_scQT{Jz610j9oE?1w2-$ZfBPKN2 zQrgNaZ^VQd7=!n?FatConGVd)#Cuo1i#5CZpvF;E_8-1%(bs@|@t7m_0H_=X5NWS{ zs6H6|i+8>2j}}V7AL9>FJjRw^u~~5ABE&fc$}miBU}C^I3LYDXP}mTK4p|}%`h9eh zsoGpnZGOL8rJ(|)6yA|KWf;}KG^U>+PHTWN8lh;u6DmV_8HUY`a29)J<*0&u?g|-L zCKQyT)bsg__BnMjXiR>DtbH09c-qL-W>ehbg?lUK;!A(IVUrkCpBlXehR4s zk>$e$_o9&cb|a!al;kL|c4bP5Gvdb~M_FzuyeTdLD(VO1Gs*$?h=^#it+!e_4S)ZPfw zrfLauJB6hz#)DDA-}nZm4RhuK9gYEHPAd3h@a-`Pt+S*%yS=I7tE;8G=9*2VQKT`B z-o~M~0NOTWfGYrFElrd}ULKozCOXf!9sc70lTjI^C=+GEzrqeh-b?gd<>Rf{EAT#8 z^nynerP_b#)f%yqSYxONZp`-AF-Y9$S~s7<>eiVUUKDmH$lvWb44YO&=|y z;x>S8W6VB=FK|{{&XfS6Kf%vC4C}oj?x6!JKE zTQVpMc7DoY``IC!)mcL$@&WlxhqfHrVhOa$Qs@-Rq%(ZbjEO`wJ|f3BW`b;ycO`oV zYggvzmazwOcKDPmNg2LI0LP-y0A-ITaI{UKh_*3pYq8g2t?y}}000mGNkl zuu+>F)}FyqW9NndzCc007q`q#W9)4EP^*{W=(b1QB5E$PoV)MjDfNjaHhHB?OuP6D z5t!IUv}rMEZL?=;5h=RlJ*?}M6kQ7`j0$=5;INm2ud@`p=}RcLfy%~EV9#2;smOT+ zKqe#FL{UWtF1?18PONi8$SwPWY4+Ck&B`KEG-yZhu=}qsx#W+ZsmFMk?2obOmp2P8 z8bvSYY_+Z}FjRq&a-vX%bB;NF923q>@G-N#{X0nZ@hxK`nDefnUZF@nu1SC@W6j>{ z_S9n?-M0ZVyX4F+Mj1vJ@6d>Jh&2bKc39CTHR_S}P+$*5_E35kqjiy^3uxQ)*#S6h zl-Yvs?F@+Gm<%W>|aR0x|)@8y$<;6${!^M!5$MOysj*{|MJA52(jLtvv zNS2adIevE97qlAVFg?by%@T8s$>bcf=ovt?%=mMbPE%9!O8Hh2v#*T2gAY7#;?n79 zZ>)@ur6!9-gN*llCen}zZiH>dfYpqjAYViqbKJxSO;;m8lqmL*49qru<6+||2~nv| zS4A0(M%dV*i`5-t%Qh3>+V&R9xn+*J*EL3nj7c!FK9OOnQP-~Kv;zHGB(u}lEdx?X zUHZ%bbEGuF7XY_oQt(FbaFAy)?aDn=CTBpwcLM$<-bGOiw#LXFtCm*4&{zgM3gr=c zY1cl@?mnPp4rtDy&rOz{eZDPa_@pcU0;2WQ>ack2;lqbbHF`AHqi*n*F&}ob=XG11 zmk$O5CyXnUmNVmIDAzzV#_25*jS+f`BWE~!&ar0BY!*<4a2{*p9SX#e?dx^Sz9|M& z5#I(JPGd&Rm~qB~frbF24?y}vm6BNYlqpM!KF(+VlHdsAWPmsjkzyy=$y1|JQ=`_9 zeOWif$0$Fx{%mF^FB}Nlo4I688{{y7!<0tmN{(l71?Wrf^PqCHu{X|scIZN$X810p zWJ*qx)Y|4a+YkV?(A6g6TV)(8jB5qQwEaX*{pQr1YBiQGQG~;IMd;empL4F{8JPV| zeyYlNn$E1^O1#%pCDClXqLlLU?TyETXMi8$hj}pD!f$LK zB5G#n*Ou^ImdTs#w(NxNe!ltjc^BwU$dqB<42SphvuAczRrGBW#*qC|i>R=TUl^cz zEdL$+D@lwSIS5%1#+d~ucL2tG#bF@D;2uvDZAucSrk=gAVB5B9k9<8EYelI8jT+1=Qj zotmAK;ur-;1xm_>BTg^-ll>3?8Uvv7ASwV-;5f5D!2v~^QcQm5oE%Dsn02GHrWha@ zMeLy>*4Z9q`6$BYC*&}WbF_gx6nQTLNF_~G<3zAd^sYv0f@cO+SZorJ4nEZYJ9n$0!VQjEAk$>9X&!0PRJn0xa0Dcg#wd7 zPzHZv>@K-r}xccfRsZY90q+e#W zv&Bkf$OT92X!!r%;{P4#zsVwGA+SXRSd9_ zl2Rprq*78P zscLb=>mci|KsJ+6w6`<>fIvPc0*rCq0nw%pkcJ#2^;sd9X@#T5%lJf z$04U9kE6-Re8(}SAu`2sj44sD6%W3~%q~Y8`#)>!x$HWvv6r{#X@9!3jqF2~c~QSz z^&$J`?|kPU;K+K!7a~65x?i#48~^lP7A^shDzT^nSP}r0kfugNuay0j zy^8^kCu&8Ik0O(yNGOR22SJ3-d2kX?=+>IYJI@KD}} zK50x{yURkxGD+=KP@zIO;~p}J*eqF!xjmP+mj~nAPC?IYuBpX7deGmJA9SuC`|uAKx2c4F z{@1tvUsw67Ys}`lVbJeCwX?aU#>}idMrO=%3}$+9K{IpHM2;BM;dF%C0;L%lcmj$I zwuWVv3lJk^h>V(F>(w!ghsf(ZpgaJH0F_0V7|=vEOY`iYsC*Y8M>MH#@?2o%$?cHy zxU<`#hxKg0kS`?&#dWXe%+%s}f05fT*6tWm!RI1rwUdXgmW>UNE@@%5rR#VZR{`-s_K8 zh7DM94%Nf?+sxz!q$5P54oi2~$TMgs`-lF7TnJ}82Jjfew_2^};Nl`O#Io`c6Kk8L z-8TCyOAV+6y71m1t0Ni-f{8JQOt)opLOzF1o$Z$ZN@02WwuyJh%Ex2pI?MZDAmg2= z=Sk<;Lp||^Cw+EUn|j~5{vbQKwx*Sh74^2aq}G=AqwMd!<9FV_SC8=WkFefXtoDLi zZ;i(xe?fbFbAj=w-kefE>5QHF4BAIp+J8VZM5dIbo==jAYN;GBOaMGq-$=AG;|T{6 z?^UMofRl5sG>rG2)XTxwk#~_tyIu}uiB7rYoRj@y3N)gnoQtHAP``63oMcfG2&fPb zni$%;w0hWxMLFKZ{nj2Ba66c(_t;z+mzB0x;G5}#*Te59)BDc-D zyv3nHkEKk3b2)hxj6FjaIcb1A%%(V{OKif3B1Med%Dh}DOt4fce*>cl$dwtvZ;}>P zN+gP?Lv5OQNonL{A6={Hu$=8_Q{cEcP8R65K!yO1Kx(q&0AOSw;xM3tv-e2*EbY30 zzeOZnW51D67xv{CBIGtQSsgt)`pn@!WRJsvRl*%fF@>gEo@9g(0a8hlf}wy`v7tkQ|IE{OP5}E z{f&ovaq^qzI=$ZU^;NBHu4>R)SJK+LDDQ1OrR?+({P;&u=P#}DGPS83ric)8tcRxwf4rrpXvq6Wj#Ng@Nl>sngbShWiP}r>I5USsMwOxo93P)S1-V zc~jOi-shi1-IB^T6Al5v&4n|JJH!clIAI4zX|o)%8Q1m%*slER4wGB*CAc%3H^(V* z+9AH`jcHEl8YO@t?-e7Hhg9|@u28D4upC|I=*%1_gGYuwtzL=^NNwrXJ1r{ zy{z1-<@8(7#`I5C#v^B<%PGsUTmt~mW!Ys8-X(GjS<(#|i=EVM1Ee9#s1%@AnJf*M z5q(4qz|r4%3Uo9^7kws^g8Xc=t^-W6W{EN?;oMz#w&1_bah(q~?&LG8$cU#r02rNz`2U!ERD}^J;&* zew^j0{cT{@-KxgJ-X1!9L^t9+qIzGkQnv^fjXM3O*uSFCoS9>=UJ=5Jp_-ioMje_F z08D*qsyuc!!y1UHQ?shi%&StLl4D6`ZGvPiWpzq&DxdL52}zxE@@Uh0PdXvzNFl3G zkQP)7)H4tiD%FdM9pXUcdr}GA2Fe5F6Dr6Vl}|xDIckwIhBCt=#gy|zURGWT20zPF zEbEsvr&fk>hZwBKe!`YJ9UP=Hw3DfxI_!f+I8*Fnl`|)DW$?)G;0$NV%@N=cClxhV z(nSUY#vD;E@@40|EhR0}g0@CEedgrN`3v%b5@u#kJC9rul+wNqh^mp3IlRz<)hz%_ zLEAF5JhJ3OkP%}TaInxN0=2pWby&&`klnr+WsI#yMCt*sF-x<8`r`Vj+yDR&07*na zRFUa`_LfG78u9Ej`A0}=`y>OUQOchB;KG6$$Y_0MEc1Kpm0AWQBchT4&-@4$G&c)~ z%hH0hpm;(yR%dzxC>C)7sYhoysY9MB%h!Y!0sRJBG9zm;%6v71?|J1L{!!X&#%~_R zl{c=9#&?|FTnihmt&9n;MUzK#n|>cr#jjKeKYC?rYiq9FXsXJGHlZ{VUUKE2Gf>}0 z$vqUZ1z|bWD~Vh-P{y*x-g^!T>YPT^=Xa|{T4~NGtuR9VLA4`yd##CvksW-@mIK%O5L)~M>?(R?z5ZS-t(dA^yJ`_9ZR~Wa8BIP*j7-NrE z-;d46IKMEwbDpL0j1uZakylKc$a}f+A8|Q|(U@T53ixo#WH3TlmUHNucR*d9@h7oU zl_+F?#Su{<(7^gPD(JJoxr{6d=_*0jP^Dhk&PG85WS$K6npt_yn07 zjAfo>+6*&)8pkq8%YNuLLR6Acl7hNJ^9y*3T65D)?VXuH8mA1Nrh^`*zb$}k-_rW@ zZSojDvk8V#c`LU)jMhcA8>WFdF2K|d?^1%yl zx#gD8`#$)`f0C*8vMm??-Lu2-|2Y`9-b=GbbQ}LiRPoCz9cF(t8joJnZ?|1@c1|9r zHe)&GEUGdo6y;{r{-v&7r=u1hPFL1e)aQuPn`1!2c}9F&8uVKlF|(P%6vc|ty5ic5 zqWY{NQeUYn@GU7ssRI4v0S9!xbQ%MQDa%Nj49D^TH43t{kWe!}PBO<2WQ|B<=_C^I zj)KWEdFt{jhBGO(XOGz?1uFUQTu`22&=JP5f91T(%-m(hHV_$j`Z!vju?+wdRaIl- zn=&z2KN)RuBfwWcW?VC}E6e;o${n8z8N~v`IGCsKi;|rSbDijbdMvso# zj*8YU@luUU1+vH#cvtEL*$W)c+MZ7{j;KdC`;g^mj|gNS>f_i2&k10w(qG+;b;a%} zz4Y2cdi8ae>)Dqa)Rjw%+S6=m3fZ0a06Csa0NBdWA48yJ&X=gUZO1$+^G_C!4Shgw;w# z1z;@zkWB=RamPi@C+P6xpLzGYtFR1z@V-A-dFRdV`puvIFaPNs|LR};t2Ski=(heJ zQN=H>bZWhJZPp(?so*<8jpZ34D+U}6js*&`!S|WLdflE3NQ2fkCnD=wTRx>;drKar zBr%||Hp-P}eLmc_HR`oA=xu5UjR)Hr4_nGceHGbI1xhXeU#Up?C}j#k_>HW8Tu7F; z^aAnToZbF&TRE0A=Lw{f`T(P3BH6PM+UKFnP0AdPkV>LH#xZ^zy7CRA&=E=sC-a9Po^3pOF@j8JFJV0m1a_68cOPIS)BS z-XVfhc`+t)4E#YNDNUlQA7j#L)=>AWXn1$w}DxEBa2=IObUcDV4Ex! z6$U%w=`$$|i5@0jB?_9Yd0o0t)3-hUDSE?;o~7sBc(txNxK|e~&S}r|losnXP4i7E zqN618N=Qu(5}8nlt|8HGFw8U}O_Nmn=4Q1Q0GjZ*ftbE~9AvZsvF(-m=+gQ(o-zgy zR)?QtV{s+03MO!)Ajen)1S$RH?(7Q+HQ9gE2mOZi3)ePJo^X(sN z%cL5=ve)iZgrO5ozzsN3%=uGJOA zvBVnLkp^q;a8`seB^2-pteZ=+Z%+AGd>l{!OyzqNl`F`W3k7L_%5;ZEL0aH@L5?>@ zl7Xl!v-0yqf8~At8OvL}z_XQyl8=))U4{|O`G?3dWM-RyXTTC@s1YC*%<9@)KuEE3sl&#F$akjYd~UbX?umfE;-`p<|qBOG}+&NYDg0LYv^ zP;V;rx@2KW&wt7_`u1;osjj^C3Qg}?()8TC7G`F($P#U_S<_sjUT*BGW>e%$On%00 zATSL$%5uir1E2%;UgG^U-y9Fj&!}{AY@3;00aKeLo_$;DqRSCcOx73*=s{3GW-BY7 zEpJG~CuD?<3&_c|5R?O2)8BNpPJRTAGW3>-2l*m8E z2HS0xAQdG^qG}q;W2pjT3O>vk5>nxu3Py20&3EzvEeD4pscTMloS{{M}~nj0F;yFJQplQ0)5b>(rQEHl8*64$ZiJm$mx(-M(_?hWFRQWn|y)B z37$wZG2${3B{Zx=u5?hxd#i&OObA6u1$~;ma-1*&EMprZTto2= z5+HKk%V7k56i9=|6&x<&EHx@sq{5L}83VC=VR_05C|sbO`sKTwJoQcO63>DMWG2XQ zxEv#yb7nYtX;fyz0jEi$9l#7(t{GVb8Vr~)*!PWj=iy&r9bUyT5@uwu1$B+Aou$?`qwmZBge+rb?GZF466MH;wl$SVHy+xf7e4=~+I?WJ zT$0Gev0M@U}2sw#~dQFKa+GY#1vz0TCC94e)XkS9Wx1d0%{)HHI4{169jGZFRB zZG`X4Pfu$%AdI||$uy>X0GPVe+3xn$WrZ{1nUN@IGGcrvNU+s~J{W6YY*x?v zNMrgdc#e>%j?CtBf#@g3?MGt^RYJ2dFpE~5wbSaXomFprSz<5bR7@PgBU(vL z4gd)SJe)%L?B%Evkl&tz8Ofnf=M+c{7`&3bmnh)9<;@t>D$5HDQBa;UgXJjN9B2%% zZ7f5;V>BWi6M05N)Gvk@*ZP!h#509BY#Q=H31Ue>?$HQ^12j5o$L{yA-O z3>b_kM_M`OIO?8(PhFldd7i!Vib#Uyv9ZWK2X^{(7sT{OLN=|Sw_f}0U+aVJQiw+o_f`#dfxM%t{VFvhr>I@D#%io zB#Mbj6_#@i_Bbu;SKU@iT|i_s>})CL zxZ8wHIf1+Q+M5(HTMs)ewN_87x4FWRWWPMMYXPSI#yRDkb@_a#au&l;oWlquA#FMP zpe(ZJAH4t<#{=b5ArmIbBqz!X6dZ7-0-%@?0!k}TXwGwvvCJr0K1Tiw8u5X2sLX)F zfk6g%GSV>sG7t>`x}_s#$pFt3XR+v0!7%nWev$Wb&dL6+- z$Ptji!N=-XYg1}A=N0)#jxig6;3f}0wM0-rPf3&Ua*gML?731Nsy6@n{s@Izgx=XwnHrOwud zI-BbpG;FHC`D`#sD!Sylr)X|zFM+40?&g{{S5B6vas>)7MHDEmzj;m@C+^kS@q09E zZOAc|csT~nFA6aQkcc957UZ0%jTFTNSrMEpZ#+$LP+p8>%Sr=`r8x%|83xJ?Kv2$1 zoD*d-0F>{f8RHocT?ZI&h_TIp1^WmmCo_7rT*6gk`@@)t!8IbJhlO5;ww0p0fUE1W1M&p_7;>H^cYH z15C_7wUp~TkUG?}?~q;gRU?*s&N=o>V|1F!^jjdi=?M&Ja+wv#F;)~#e+6KU(0@j? zoQcMvyNEv6O=AlOCHO$B@FZG2rrST-R?FRZiZ$)^3kyrp?tKT!ff$H79CLTrGqtxi z)!JB9kBF2Hx(XP{v++K3!_#!pWmf~75kTA0`l%!8Z?7}BT)_s+j2(zvW4^f*Ec+C^ z@+_dN3FY>l0SBm54ynUY0uBNLyCwPx%s8@{6~z>QqyRJp;3x@jOrp$4ImXE>;;`Qt zA?FYp@WHgley7g{cVKln!79v17%uW&aT2S-giwXjxS|N-mk#B;93(l}RUn6f&e9w? za~!20Etml(RFpLnfK$hL8dLM|u9nW_oGa6abiz%ge-w67c(+RasU7j07*na zRN)9Qee%Xr#-mC<=fT

    AJ?TJBk;%Vq0OF|Z?@QW1k;+Xmie23MC=DGcqP0U|Y1*XQHt`X%ecUvvw%}Pp^ zvi2S%N86>VZ>o_k(Vv%Nb{j|yg%OWScd}(DMjV>vt&MEQ$)d9(^i+!w zGfHysN$nIvrrpAcUrR5^7YhL>LPKR-dm`(1?-!N}Srd+&F@@A>jSZJl#Iuv|-VGBcUEpWidN zpDPU@a6teAloPheXet^ZtP6Ys`5rb;*JuED+St+)o_GqHW%Rw}hVH=bTSJ1E3t#y_ zI9N+wNc06z)O-;#$|=PqARRIJvz#F5H!D(kN=gdrpJf>)BthabD?1getS=eu*z^a4 z`{)`?Lz4&7!x*|HyWgG!)Eq?4R-P1J(Zwvl9X5Lm^7%(!HNuQ{F%_4}xl6_gKz$02 zJY=5>(lO+&nN2KfuDKSU(EFQI=kb9#a}z7&DQ!27AB*-sRSKL_d&mILKU*wJ*HxjsEk&T+Mh~r!Om5@c+bkTeUlW{gG zK1rVJ#4p3FOU;T92c&@B{xH1De>S63l*lZ$H^ru~-zn>w6c+syBzBgwWn$*E6U4UX zF~r}-cXjBEdFrZ-&a<4-Zyad_&Bi^#%r|Y<`UY8c%Q;5vM;7V z6x+X(b0muX<~Ey;$jUd^dl(XGm2J#K7v%k(RdP`%D9Q@&7WJ+0zVDJ25mh{oksp4Y z6uW10?WZ!|rCkZ?DEUPzH^lLW0{i5Q{~X`&~iYQil`#pSG7 zaqpH5r@=I>mpZM*s+K*-BgutNd-;T2eq9qi9&A(Kv@eon7&Gd3oNh{Blic?#N*wD9 z*=|xuF@()p&K5NcG**#3!nCl~8FWvy5l?-JW74t`;b+XKVEVmxKYYu-Boh@4-l%TU z=EkNlFh|xXwcXQ+R^{VJaoIAluzP6wEC3`9tR)ad%@#v`V(voGv*^95)lj9Rr=Jm0 ziV8|A;-|}>%s+l&L5`}^3!LzoYGKuK0#cp=D<4&%NI2>jS9fh{^CI3sZ|U2Fq_`gl zy@&Ov>FkJv{*n%-%@N09k9&?-qZ7r6onPbLr*`Gxc6acukzD)Xw(LEgrPV*soQ36o zl6;oBE1KE`Uu`(rRG4ejdW#*_Uo=&duM?H*(gF+ewVw^z`t&oc1cMb$1)i;KZO^3F zHQ5($HLmLWj5M6~i=s>pkA9w%yB}DI)uFKH!yk)bkJm7tSbuodid|n$v1N6ao-s0e zQiRboC|<2!aI8J)+a99ecF8>(As1SF#Yq{dLS{i`1BM+Yo zpD6Z{Z_aOOW8*Xt3G(q&FLMH9un3+knpz>>_@~f>Z%Jy}4WiQTmzriKYwsKtclK&? zp-*rUbt{?9zhbHzVyj&s6XhwmTUPK&S@z{OuUs>p{}1d8u%ipzs-=ZbM6_RjuxyXc z1P;lmEN^oBBZqu@)%eD{*QJFNnlZqUOmzW=`;VhEQ`^%Nvq|XS>x`%@aAVkKQq?6a zg@whXc$2?t+fSEz|M))6yPRMGtjuj}=7g++sZP{ykgjN_0>ln8TjZsYeHquUWsny(;JoN9i(yDpkL>k4I9J2~y!2tAaObuS(3Q zkFnSoF}v`9*d6&Bw|VvKk(LKO6HURrzlaWfCZG)VJdnZH)gG}&dX9S7;!l`+THD;b zi6>?w4tv$*&U&XG^sx0*YtuRg`E=VZb^6Cys9!6B4LX858kP)_Mg4dH8|Oo-*I0deap;L;08P-Q{6KTSs4k#<{g5-rgMmt$f@ zph)U*JH8#{L!$Mc3{bp_*@HZ`9(7}>iaEaN<_-wK39*J4E6?Q~Q{(pV>;IoII{z== zKf`%J0Tf^@4Y5fyr}U!kIaoA9m{1@3`ZtNt43H^%Oy9Zd_UKBR>vw!EFMVCUUnDx+ z{IC+AH%*@_PEkLXq~|Xw>I0n_Z%c#yWesg$(euBd7R|);>Xg-2&fA$+TN;?CPblq< zZj!Lw@|2VCA^O)(Osix%pJes=!l22aQzga3rbQcs@M8jbesx}9jkPA7C!fk_l2*g( z-xgM)_t%y0>xIAv5%94hao9+hc+uM&9}xS~a32EmCr_!VeLl;dICFhz5M*qTeNhNF z8b-_066sn#-i~b&>PyCN0U?AXtjXhKQtW+QSR07$-yo+27ho+Az1u62MbIBn9B(y% z=UM+oQU!r~FEe%%|0Y(R&;Y-T`9hg(Kz?V{&zrdgwqx_T0x12X%9&IWb1Hv53#dT> zUFQErjL6WxzjSl?Pdy^xoPbcQTGR!Wapz3XJ_hg~E#<~fxvwAb!h-UxrB3{U=9mDE zCLAu29{jG11L&HtZFv987V#PoFD$zy)%xj?7yOMzs`u>8UIVa{{hPqU)Jyd)JO%cB zwhiZR?`sG_$gS0aTYm#ZnSh=__TxhUA=L%im{2MF>pYZ zFr)104n;=N?cC}=n*OvcVj6Dn3r)T=)@E`Ax+cSKTnk(a*YwVuV^Ry(9HP%)sRBB8 znU||h6~loBOM}ZX2a_IJzL5Z$(QH@k?O#MuCPVVw+}Are*}H>A{Xt(^)`$_s<}*O+ z7@PBA(#nYLN!Ezj`#va8^GNqx%=iWz_MMecowMWZmK{{!RV8AwmbR<~CWGE-gxV#Q zq9Eqk98OD^@@>>}lOXrfHJ})OrWF!Di2VYzm44gZxdr}PWO^X}Clh1ng|`Hz>Vr{T zL7s{8RA1r}-~id`*}^7X0ItvD(Lf`r8@w(*4C)3XuG%LW9IM6ZWB!n+{^ZaqvUryBdpFMp*#9LK;fShW%Cac_PaDgkD5%f$G zCaAtC@bw1XJ1r<7wa?*x-X1*jO#m2;fL}c)7-N1A1P}#WXgG{dx)DS_w7g%(%-uhi zi5^;|v6}`tUfi$w1Lt1L-2*vJ9lVI9sF>>POr=|3iNAl!ROmGx6EKJSU9clO z%@UETQ1GmxOZgSX|GdV(xt!lb;)elmyiHZR=9p`M*Hg7hW7@uUjZi>@z!r*(@|Nj| zQ)2hGQQf&l6z=t4nm|{sg&+i9hzg*3)Em9x0t~$6^Jspb`1Bk6gLi%p9SJ-D2#~}z z@$dteZt+W@E9#ISOU?@xh4!39Sz^-qMqwgH`4l)pK=ks111kpe*of&aIGu+VewVzS zGVSkcSpEZnpTzhp()*02z#}A!UFNAJ3UfC2p)$*RO?^Lc02cx_p$z~(zdnU8O-4RB zizmGDn`W~hxSXcy@aKuQB1||lNl((??d^uNmduj&Hh2ZI?A)AbHK@oO4)qDJ-y8gX zl|Y~Kvq|C=X?K-#4+}8N?1K5=Us|Lqyv+#m;e_2c3rP9$3fGL!@tTLlc+_v=$Ss$@ z|68y5e+}#VulKV5pZU$9tW>oV}OEahyLB@&Rs&;3Z$y~A%mN( z;o?kqm%aW!bpijc1)8f8A6YIi$0tTWIZq;!R=3Y?j`((!KI6)+VXMl02CB}NE6ub? za;tORcvAFBn%eaKK%Z{#9kMlB@}%2h=iFO7P#~@X$#N7a~<UmgM59BjU+;N5fMZ`!RJ(y~WG&CEn2{AdFNy78}-c`vX z-*jr*9W=9f?x<11FiGuI3frb9g7^gj2|(+)hZ(VZDd`1~ct`^jY1=()2?r0!?Q2RG zHs&~C!jxp5x2}bTMMDwB?@n=gKM)g?&tn2IB_L~*=WnMGaNTb6Re0F){^qdW(8YCm z5z1&2>(XC2KL&4s@M|BTyf=b_=oG~sghd;Xy)tBX30HW&!*~Ux5>9tXW0Tdkg@&iT$hg=P&^GV!Q`f*FTo#d&@j`#3BYn&RFb#eH=h04w) z*|*AOu@?JW#0%a^{7ZwZSJS@-Fxx&lPdy={fZ~-|>snPyM1TqmtorR5Qvd@1BZxx< zhh@or?Je)w5bC-E{fL%U33RU*f8 z(-)zPN0!cTvhGvq*DjE!QgnNZIDy80mLOIDNaybSOc!hQU zkIUx_+h5`I9WVzaSPx+V&P(*cLmPl*1vI#B0Cgmv5$QZB?OuQu&X!dYYOE;z_U8T( z&8dX80Bke=tUbT6^(6zylM)+mw9d#)K_uRyY<0bAh@NYdp7z0?kynu#NLNHF;&S3< zda*5=AKQw1U+t0gSk9hPc3^lAI$6Jk>v; zziR}1_&+3rb^Y`c5+CRPXHJm6lH7h+c}&%1|oRc z%#XJe7qMXdJQh&99xBt-sQi;&^Zw9Je!5&x(Dqwu{UO~Ud2nUxn~C2RS^;nG#q-~> zOPY`wuaJ4lHt$?t>ytQnq}9iVhSX28FY3=mpF7m^15LKqX5AphUqz+dZEPf{s2LK@ z#;gzDPoHidus>J~hJ&uF?xfXU2F3fEf&BcJ7rv}fP_bT=rPrp0hF4{1e=4V5;;Wi_ z|2GU9;+D?omUt2_& ztyljfa{Tz3+48%=g~q^RqpKZP+PWnaWxU+7z-%`dU|wkm(Z zq`eY+k(-|hnN8@<$;@|St~(stPm6DZo4qUIU4dKhyHxea10Bn`v%78JC0+(VwmU}| zXROk`SpE)*C9EX;>)EGC;w2YTEG~T@rPn+88-CW{a(<)Ttwv&L{>Jb6#pA&_{98Bo z2Ok8898zXWh*D$e$y#0j(j*XLn*iLDxR4BTUZemU_1rpj`xcHke#%xxn8niCBi%_b zv4Mt!ScVCd5L;cm~Yx8k!rG*Zfc( ze4vp?Bn?;7<|?b2h{_NBD`B6{h#%fhP0(KZ(7;P7&b`Tq|Cr^38)4G?@c18hp*NU+ z4+XQBHdUa}{?t}HCu)J z37j3ABtnoUS5?cv7! zO!*Ww2N2x7DBQ__>joq;fvKzW!K;`T6yvnVoYvfXRTG1p&wae@`FP4+PYZKx)=SxW zO}R=;SEjV6c> zuqKt`(%~0{ZC&E-I2zx!jK?dc&Z;fcp6X>S7N|rNdgT}LB1_eiCxL=h7UW`MXv;_q zXW6VR$a$>!&6t;;IfPeX{{)=0?-7Ay+_xw+CDo0aJOf$=x-(loj>`P?ETH3**~rkP zf+PUUxp&htslfDI@Y0tFi&t~@R#W=x^THc%16K@}x{zael1Zj|03o`b>H1CBoA1UG z(SAC*WOA<7Hb&=TJq1>g9T)x1slWg&A+%v?<*kVpN82MuFF{Lm$|Eb9dyGyQU@7>o zGg(Y@to^f_{gp{nI+ayG=oR&MpGO%R>9MI|qsU0~A7*_7ZkB z({dAJjtz_i%hiUiKc0OYh0&44X@bJ5@m*|8@6yK1Xk%i!?v6pq?>K<#=N}4GJVoyw z3YECIRHYhCPbzgytXMk3L!5dZ&Ei>&p}K`_ni44bOKvacbLPg?>yv_ezn3=YEE;{} zyKG8)v`qeCAvz#t5zPWaPfJ!>)wh=y>+jjwAj<@-gc@s7ihM0UynL+-JU#;E|6^e( zD{U7hGOV$C@>wTBVYV;do`}IzEZ3P%FEd!$UgP__N<@m#J{;<|#I3M`M2VKVwViv$ z4IkS*w7jRPo#L3NqjT8Fv}bw;@14b8w=au1JB~iQS=`_0GR#mTGi{qjQhnAf40=|h zOjRC7020Jtm|);SfrDt4BEst*vqo}7qJbl)_nKM+jT1Pxp2vb6tj_<8KVhwGTn zLc-YH-m|yomwyd&lix51)RLjUV>sgqZkq3UN0f{$`I=;9jtu_wt3Q0Hd9m7yR3?Ru zue#hnzsF_!bW|qZ@8iiXU^d$ZjtnMYuQ;*l-hLiV(H<14itCle-lde}Z1Qp9*&9iM zla*a2>@^|^6@9inpO5<^kYIR6gB>)aN^ib8KlKuUe85n|gr5t|({3#ck)-PJ67g%= zM9#O+vqoZWn1HG&b@cC4^ALjT4?TwTS&N)E-tHwBE-_Y?s2XpZ7^ZdIiE?5#3qp8M#vZkyI+E_798rx2-}wZ?DRT z{V^Jqqm>-}&<{qIbWAGT#{lOLn%jU@?dfn1DAo|Dy!#<+n6@TID%1ZQlLb76>n=Wk zZl9S-8oT+pG(+Fu)4Pz|e^~@PYb%waKf7HBdoidyZae$krS3L8^042F;pP*Ly`9M> z*?rN&!6{I*Cnk1M>Fb>UXDyyE4Z{_|63X_r@y!TWz;fCmgjM9%aaW#}z#RfofktPY znrzbNjoF@jYjaCjqeE$6I>UjYDUAb=Z*;$Jmlri`d6XDwt6^y78+@{3==4)g)Ol{A z-qYfA>>IRPAEmmq^0`g5R(6=p#s0t^+^V1Ai0-l~6L<)>LfgBhmTkY->7YQ!Bh-k} zF(d;=2KP>)8=E$M4a{hK-R4n9M{tG{T^j7LqO#PmSH2@McpUWWn#sW3$?EqMZ=%Uz z5iV%5Cw*b-4(_tF2vkYU}$#dF@OF(|xs7mGRCba!c-KtivnH|3RziWdi|LB<^1IXXSB{+!e%qhdsn!%Ta` zLl1BE;qLwTMV%@o-aYfH6+GxpILw-@Jf5JcKRUU2)$MHcrRev)*vtF%{iI#W5@NGS z!(v5M4T+X$ws%7ABgZMAth+>F$sL`bOnGk6P}r*o)dU6iVi%sxY1~8<8b8=+*y!jG&DvCBtWUzK z1Gt*6O5VclhWVmipPyyYQgiD~4$Rl-74#F)13RDZ;&nUT!3f{xqsj{CcIT5ZS1Rvc z*$>tX(o&_^hC&{Z%Js*Hf}JJosx}0o4Umuxd7Z6ka^)Ejj@izT_^HIoHafOoWU4sD+LWr__;Pi!Al%H;0nw&Jb5!Z#79 zYnmcT?Abni%*&^?LdPtSnmBrt_4CGr$3#`U;X_!K%WB~@zEm^RQ zwTAU`<#V%VS{Jn)H$pNt(KzSiVdq>$@n?#jiT=)4;nIRx8TY>_-UyMS?{E)XL8PDH zug=$tqoQ41hPSPu&C9-I+pRK>^&!U?$C_QoB()KthG7|$pl+FOD8krfcu<)YR9X=f ztAToPno;}HKxN$%G}ZCQ++zTj=~y4tg=}ERDiT+C0#hmc5iZ3u>{G^9IAPKgw`bru zgTzGyo-kLxAj%1uZK71g2|(+I4h~jap16JSU+L{oW&o9bsNRg)s2jAUL)(Ljaq<2l zh|PJ$=~5ik$Pt0TONFbDs2)4Lkz=fK)?GB#uPQrrcxR_4^FZuHqd+eqm8ryAlAak> z6j*-mI>>Z|?yPL(HD(l=F(il12J3;Zy>OZs*cT8}3Rz05gBCAwc6xU%Zl6WXm%Bc$ zXmNTN*#(kY8(IH2Kh~Hya@+`usM=~AXrr^*VaaTe9f?VH&faanRad2Yd`sv@*}lMO zu!{!%oQ#|Z5?DK0|JEsA6n*B``Dn3X-l!|pwI*}6jK&6T*OV~u_ZZdx$#h zMJ`A%3Q;TxCC6MTO_~M7+1Y;Gz7@$71*Nt0%gG>%8ni!uBPz7Qo`JkKaa$Eh5zQ^S zh1I*XF_4q&l3%+yAit(r8P8gbac;uQ9VkCbDn&mLr^*SL797*j#YKsw^Pftk=Zib4 zDR%@t5{g(CYz^*nws9KGokQ?QY33c+a4tU z4OHsqd;@TUSlSKJz;R~N-y#PbUU3U?OgpZLnxkix!)Y3%*BfOlutFIwDf{=G7C*w> zZ^)pFW6s(qAFqU-g&&$C%TjNN_ftrY&ZaMBdrp*Q@7{eOSl_*N8W25MW<1U=#++^a zRzy4%MmmpJaH*+0VT%;c&4@=BZBC-FSD)6-MRb79Txk*eVUBMgD@?UQurMGrR)2## z$$R37$OW}yCW$jPALMIolmnv1Bb$6sCRGF0NRx?(k-$nGr|=SYCHnM<{pNU3)=Dh@ zPiU-gUtQ&X1n?~lUw(WxNOasKM>knsYigS=_|ADy+s%Q&j5LK-caLyTRy1`yiNztf}S~zXF#R)r1rXFMpQpm^bP!Uz~3XH z3g(czT)eg$B-Mhjwda{`1Lw#Ri5%@`u|H;;6q8Ghmzt&S6iY;uuo`|AfnPD*TS@(VU6O~1$??`m|<-iC2egKjb=NVXgB5xjdgKK$A zNV1^90@#zePmgpCX;Pq%HYaiN(*;ekbZ`ufp3_J^|5Ri2T$|4G-I#E(st+VwX=(R6 zqhPs-9rPp3yc~EYxWju4V-D!Z%Ra?lRGG_|ySs_C@jc>r5!{N1FI@+3*G@H|_w`Wg z$`+w4xQBIc>=g$0IG-u6g^6}{3}JED#D=pLU3eu$?j9>fGy&ZK)ZZhvk?Yn?e4^V& zuy+2Q0gE#9d%3flr>>_-ABS^4N4K3O2q(uPYlm=2!#zK`M-BRkC1#m^x}djn6d}*V zC6|&^d$8KtOu*!y^A^KOjqFgE3YO^VQ}>~;45R^cKzoWbTP(X`O*Am18 zs-Bu0%&!|nSUFao37Fg*3Q4)mc1J?r5l%VCS7+FOX)O9yYbUv#aYV&k-wd?#Zs(mFp9#i>!eQXkZX}!m$?HxQkE8| zfE@^Bv5$IcinoVd>(HFdEf&$YEIHLaYzT7T;8(39AZ z8mwP-8f=*jb?EYYRO!VV-&>ijoS(0V5-G?WF4qnfN21JziOg^eL$xQOZx$3s za$!;Ej!Q34H`#xlB@m75>mNdZUMe@ut?jQM4wMPXc{VF^(PAjWw~UzM#t~{F18I#; z3vk;P!dxL3G-O&kDL$PpsIaO<>ual>y1!iWRds{SvS!|!s}E}4mlu=as9EA(a)cX< zyuq~WYoxAD_iUF?8)xqJ;Y2vwBWP^clo!!rQBE7~xYJ|NH?@&Q15KkTJ*Exj-O+mA zyP<-pc{*$EHvT3>`As4d$EM=iKd_Byc>FFmgske$E5m5KTk@;pS`)*&XY`wv-$0+XF$3(G+K_}8--;OoMxYOp zQ@DkC9Xp7iy6Y9Q_%$YY7j7+5$=LKB2|`bcxPGO5jLZ-vV<;0guPsxhOf zv~QEFd{A}QX6)Jpn5C zd=svFS$%a?&?0e09sfrN_vS1#wL|I5XIj0`OgQ%IYxvReXkSw; z)}1Bw6M{Qb=Qk5ai&uc0YmUPTE^NHpY5>s^pAKc6A{NncB%XJp@k2N8 zZYU2QrxY*q*I)%(+I|WKR=+lV_-vKcdL3OFd}_QjCqzI*uy2xv5W}$c!35rg9)yYPW1N*Fal6K+WP4vLWq!!^Mch_yl{=doT1?(>Zbxt6|K_Nre?&hodm5-jh5ExvPX=z)QH4R?9tXH zl*o`+9jM(R)Qaz&c)fp*-^U*$xpQCVy3TdZ^E}VF&MnT^@E*sBvnN0x5Qolvtp^~` zF&OZAg!MS^o3+?89r$y|_rX0)P}#t_IpEDvUrik|R^aCet8**}bP=SZb=xc`dube6 z0dotR-Q16$`RDbi?}!Ntv#B)v^A_~<)IY+)LOrJ>k9_Gk^2qZHjl}E3Ob%lvm`V{y3A#HvQ7}JX_&|RAkCkKA7B<{uCkK#Hi(3-+^Vjg{|3+ z2DOFZaif*-=JH7{45rai14^Upn6Ihs?}eHH(*vDTaV->C&4?XqncO@K0#yvQWNP>f zgvrN?@FsdY$4Ksk=$pg$y&gUCYxQP)|5j>d32(gy&lX{?UCrlpy-|e7e4DiL!8N{gFp-rLo63Af)@ZKShn>iwaI3fFM+~k2Gb&$FN7s}XeLUOy!X7R96=&Dd+izxWDQ^3abMkaz<3@wnQ?4h# z-EHSDp^kw-?sEGkQlE49=C^NqVFMKR$S&p9w}N)OxVJV#72$m`>cCeWxH7>;TIV@V zLbbK%`LRuPKdFEkyU33pbaxmMm86HVE8yU~pvB}adupa z5?M`nTEx(PRHRf;>%bel0 z>ay6I3T{?A!%5zN?%p{W(Pt*JR)+a&u;S(Xr)MZBAkr{2dqUf%afG9Xm8nfp`RdoP zH*emv+Bw1-?9@{Wtnpe=+7r2JRVSC<(cb81V#l@Bo>>MqmQHQl=H9}%L}L%6@hn|N z@g<7)zZ{$gfu_Eeuw<;!&Zd+W*%c|hhp;)ighW!Su7l5y*(DyUUHe-YJ68Y84x)aP zVO)Anu8F)`k5B(Y%NaUc?cbj;|(nSV0RF$N3%D)3vU2zP|CtEjJaQGxVoTEIk6>TC=e!{~qrG=I4+zvP+{C=stAiYZFg^{4;pKnZUM;0y3 z5#$4AjLg?(-qKt*Y=5k&01MXY*PrDQrhcJp4|!TaY?YI%rU?X74AYE(XqSYCe3X>j{>u6KdjyxeGKy;^BqC%JlvKV;PbgMWLNbgk8p%t-e;VcSAwa& zmjCOJqqAdSt{YI~*+J`tOBI0mg93hqPVP+TiY#C7|L|+}4pFtbl_wF-9hVjn2wY82 z466$GtVe(0_;e3M&$`R;C8Zy0SNhgq$rGdgX{801Y*k7dFU+amf)b`I6l(BF@gE{G z=&TzZ!AinEE^II$Oz5xPPTwbRAk91Q!!LH>1%sdWTsPKNS55-p;cf28T0nOX(4`jN zaUT&hv#;n4o?AyLmftQ?8 z$>qG%()~y7RuV2&eQgX~Jnq-;U^hnRem(w*SeUSTHTrP_HjyP1UxUspE4JWF#baqb z5bq=+yO&}pFR!e*2g*bzZ{OJ5Qrp?TlWVhMC494SvYS5aDW-mnVR60y((rESUS4H? zx{#-kSX6u)_^?ZdzPX=>)xwx63CVk~yP}6Y5Jr9R3gWKlfZYA88nlF%M_(C)JuJJh z%{y;v$7i`O;`H9o8I8gVdah`f&y2{zy3P{uniYDZP?HUbDv zj<7R$dUwKXLDIEQJ7eD9r?u>owa}P>ylEvC*E4U6oh$Il+EVf^3^7?d5B1%~u3A+O zN2Bl?@g5rXr?vNg=dYTGi?rTY2)xYtpde#7xc79vl1~0+Fm^;xT13we8QE`dcZd3|-JjuU!0`T46Eo2tT_@ zH^y_mD0z>L_3K9!A%A!z{Qb=eEUDkYHAGk^-1Q@VKmBP@wvkq@Mdd`2HwUoQ_ns-W zouG(7hfAgZCJH6u#%-#YG!A=MBcF2L!8-hvxx3o*5HG3Vq$=-MG$T7&nR!Poc-i{WdQ z+W7kMNYA6(b58&hSTdqUzBK3pRuy?A+=o6_Dh&be+g}=5a6>Crvx}{&@d`77?a>I3A_4a_{YsYDV|ZvjC03vXR+zOUfXIM?t58By)RX- zXYeLk4xE7J_}ahz@XJ!nU{ubL!2tAslVn<-Y`I8CM4aOxy5=e+(wX7S;Z1aZh#{*# z^bUr=Nm&J}&y^x4jyq);d@jV72G_#Xzga7s3mT+)J6KO;i(#`S?Xf0c^+$-n3$dx` zRjbFmtCX7GELvR_GdgN^$?x(W3*Cg8z>ICT62$GE{7KTYw4f{SGz&Y2IW5PCWc{`T zh~m^Q@>Vq5q~7?&d#U&6l;moWES7>)T>Di58`zz?+QjOUKq@@iBlaqh3cFYJ-7Y?` zeB_c@gkqs~BKq$kFQVH{uTCrC-}vyM>*=xGGPTX&&W9oLs6l+y;VE)bjI^!$H^~oXW*RFh_VhuWWuTW<~Az|K?a_4C2A#O@v zs1-Zj$7@HAmT%hbuDE)R@;htS!f()azM#%JW)0Nhwv~&O3SnGJt#rg_^XM1f=t@AI z)oI?)D@vhNMMI-+X#We^0WO^g z4z55>@50pK3;pc=imGLvI6tt2X#L#QmaEI$!&asDb@|qho+&p&g6%AnQUY_~hJ_!j z7wT|#Am+Tmnr=t2S94VR7mdsmJ@(N;w`C3 z!$s`~2LLUntTN>wRP|s8*PXq0B+t@SI(5CIRDWhB3O!vIH(hSLv+Y(ynzaI+LF?B!V*6IWm4YO@@knck(q_ z|L_aR*w&`F>_IUo8vqEP$CUF=3g5$qcC2k@%msepYjAog7?x3ISU~e?Q#-r&+V)Xj zj|xxBW(n*Gk!Q@6w`PLX%Z_Ax@@oj3HC$U$od#*@;vG#{(uy*i4UpdnM4p}P+EA=kR=vs!4EwrWV#uGysm*sVf7OJJdExIt*g+#W<%!G}F8N@3U1j#pWy zoX!Xu?CTlp{kODFqu2vucUwy<-*29{(jb+dQA~=P+CR5dgXR;=cX6z6Sy`e{_<3vR zR1G=cxJ6qH*Xe|G*q}^xX5=fUdS*N~jY9*8Dm~Sya5dDZg}B`< z_)FVZJ``*&ejLlAZIXt6?ILr8svV6n>iNqp{0;#9Hffu@?7Btq541@EcR!cz?RHTa zUPiVTU7hA(1r0S@D3WURn8xf{Erb>;G(IwK?^hImoG@k45vOAYGfpGSVpG*Kl;H~o z_^j6JV3%Htrml{ER`l@U_MQQV0yS(XFF9-UI(NOL*1*!w-6u&0j@9UIdvolDcu|DM zJ4eJzQK!KfMUMkEf2kwWBZZ|*yYIHIG?B{=4S!V&waQ9J6HLPVF{R#hLQ!5uR2%g5 zDuSo1%c1|SeAxR_@YOLR*GP0j!LS$NpBJ!t_vJ{cEx{IJ?^IKPYzWlC3otE_)d>Pd%-8B9&kr z`cqA5C38!tZuD}QvMnTl5?}Zpo$a{=SiCakJ zRg#R^Rjc{;Za2@QU%s5YgtC}CH=g)aDXFF_z{x>SJ8{Nw?eh^T>hQOr;K5793}JFM zJPSQsbE5V(3n!mlZQ$`e!&5EG$Zc+2EQKo&S?#E2VWxyg!tR-~!e!?BKXM$wE9lr* zJ`9^RA}Pm@s{>+K-xZ?$jPE1++_xHD%f11sLLW}a5-OnN)j;FIH>rT#9rPGAgUBdn z^MMBV)Y; zbbuPVX_$WuX_-7_L`@sV(jnWXSVC5Gak#gbwlUQ8?8j8r@{Co;*Eg=|5G#kqGWS`F5`ttd5dNXEXYFv1Mx0*d}bi)qT56s8svOf7fY;_3xoYx}6!#(Ud#_WQb zv}s9i&gn5jnBl*6zG6Hso9~j0MrYo`x0_;ps@KVJ9x1JNh-q&Pc3W;f?A#CvzVt;? z{pIpy)Shqf+?sv5+j;x;9Y*1y<*8NIx?S2=6@D z436+xwni!aT%q^zRx1}T|26;mfg2lc1eTkJOQ%glX)LM!F%%qJwPi=*v7>4=&6w?3 zk|u;ZPOB84n+3->KFk>yVlvv4N^i4rLNk%fy`*)X4Kp6t?FWSJmjV$$(y*UVe2ILB z61{)&r5&USccrQKnU1jcBQuFRRWy*Lwt-|=uBB+o8v||6J6J*=QsX^>aHfC+_xh(0 z+0iqHX$~3pbVp2pQ>2XfWFs3N?v9oN{h zk3j`GJ%TN3a|=lBF9Vu*ojY?48d88|0~hkFC@G6cJhSmmFOzJeZOZmxH<0{e#FYZk zI;lcWG^^=H)`t?1*sb(GA@Jr~wdx*-@sHbx92TJj301Ho%R=ft@41GUHb6R>s`aBRid+@!IeD)WsaK|#cmAh2zJ<|ug$|=pf0FxCjGe z)Z}_IHRw%KJV~qi)o|h7h8K6DMy6_oVs)tY&oPug_51n#_$T{oYj%vZJEIFj&FS-A zf$h#;o3}Yz6~36XHUJ|bRv08sNlMj2d;V$pnPOtpnCH^%%#N8)@PMSCS9M^lbtf{| z2NI3$FoR8aBM4W5fV{15It3kTCJwKrQ@)G$E}X8~Jf#tkW*sS{B6*F(LO|7Sw7kVk zCa$d$7^9aAbT;D}Z!Bz<`LlSlfi(h_pYhIJ0|Rbcaet|UC21y(S0m`7UaSR$BV;031CAKaR9FyM z)gSFw(2H`TE6wIe)+sx4GeS4W3TxS(BfpYJlY#riD8~Sxb$7tVjmecGJ3H-PS>nI? z4vV>_v0!i@(u&@{d5GHU;2UxXe<5etvY*^uN^peHpmng(jF2gOp;{`U>IsEtcDZ-Z zdsGqE+a3HEY0G<#{K7(*S#@<7Rr>L3B*t%nP8*mKVxW}?Oh->b0GJ2=pr>~2(kECw zWwO6N>voxj2UO}CoS!&TPI?CU1Lf&`YLgtIsF}O(TI7DICiOAavigb*AGcef$s=49 z&+XmcMCZy>*7xSDjM&Ynu7V`-){QA`o^qO-)T3uCU6=DV!5Dp{{P`M<$~BZ8xDe?0&G zm*c;)9{G!QrH~RrILlHDvv!iSYTHqGyf*mQvq=v`3?>QAon|;-{gI?( z;Jf$DcE6tQ4{RIV|DiA7d75YR;`6r}f3pMt(vV+`JcaF0qw{UiXWd!^8B4mOHuNj( zhy13^xGJsWEe*`^nXG@juT>Se_LoxV*;izz4kg@D=D3T=+QyburcEg!kOaTva;MKq z<5K#&bchM2W{S9i!C1RXjDC!7{t`ch-36~sQ2n6Q-J$88CxmJyGrCa#Bx`1jLUx3% z4>~glM4A{6;mzfR3mQ~any>Iej+Im zMIu@)G8+u^-0<&|gs`bi67SI>@7?p!#~ZZW7vNfHuUFDGr#DB_cpGt9cBQEz#m`@j z8lHsRDTL0U8Q5Pne$%f0Pgkg*Jtugfe~dhKOdbNJ=K%YBF=f)UG<^JN7fRrJ;i2W| zIf`VN!J8t%7%>0uv`_H!-*qj*rVPeik70t#;i5Hs8a22=9|H*tYtq1E$f!5wtndfX{l|YG8ubSEiV2LIxjKAogo~sm8ey%FrPgH- z9*$!5#GI!9RrIXpG|_It{86b8U%W{4%^+Ge$&aoSnrnF}HWkCRwY|$i)fUzKRE>Mn zll>lz)VPnZ71w)L8+ zz_;Y6VKyyle*mZff>fP8U8qCWmw8rpkrw3zF{~3KNFAaP^`ut^;Et-gmQ^e@oA&X1|lQg~+Od8RytK5rC2JWu|` zIeD&1UFnRfFMh)X5Y~3+LEIxWeT4lHIaIRQL-`^&{taN^T{GXwW2@c_ z#f6FpenP+e;Hl?FW%Wu>>#CYEYxbZ%3CD6%u%t_WO&hkf&@&zE+CGS8NACW@&{RSZ ztn?4+Sh|SWVJeE#@#=xL+>4w9=ru64x*?&KOU_~Z#2fMpQcMPO&Ajcx&Y&rqae^X2 z^BKgOVzDL-X(eG5Yj9%lHQ#~<>I==~A)nybJ*(zF@BMp;6k`AG)&eiqbm7#&zJEa9 zAKAMSI3q8(_YE$*@X+_sqK%W&-t;7+_TzfupL3YUlNEj<{`5X04zE(dWCJ!h{(-fJ zJ|)f3a|l}6fkL_LUkUjqey@9Yp4wxI9o^F@;+Zi#L&!DCsc>mv6dMvocwebsv)lPe z*u&?sf-k6^>2iI@JVyJ{*FLg;Lam(D7&6eU%qk(_X3#8->kjhAel9ov^mPIlWSpCAc21~r%Wa{&ZD8MDNe@}yJdNn?rMtVS29=( zBpWW3f8=DqN5X1a!k+TD9C>?Hw6(fU9?@6}$NWQU`t6N604lgn@JYbF;M<&$q;0@3jSZiXLWqfK{~e%j2Yp zp~-DDfE*m)3kX4GDtrz;eHyxTKmH!r@P=?5t-&>cv=z;JZ0 zLZ>D6q#-3O_Sbz8FKXyv;4SA|PAYg0L;cQ#xC&^w5Y2AS&~|4SV4TsY3-!(^D#}(& zq;&u{{r26kUNH$7UYsH(1XUYjgAMvL$8_B#g7eT;*gsZ(Y_ssqE+y#wvKwKYq;jK- zKzwD1KLhaEylj)#Wg2Zs%agx2>;$XARdqTCY$6Vn?t(Nx9q)@83OTG=BKBU23wMVi znJe|3`uMvN~^6q``USRjVC+M5!)5rlwh+pj)IiGF4+_Kl0 zhuitFMGgRiE~uuf_%=^ZGAPZ)XB0QuLK^tXS5Ij~G%_w<4D(0qN*Pj5E%x zLQncgq0okunK$vDAgMP`O80W>n;i+^{;;UJ#{eCxc(lrmuv*y78UiHPw|kpxBNw3a zA32Nq-0%0enA*~u(No}yjA>G*5=ncC$rCs88l<2CRqUP{X!Po>=JM-)ZZrnKfK)M} zA>Y4L(SExI{>8qfRr>0{yq38bVpOyWQ!f2HB%l)C|G!=UnD2KBs!{eSQkJvg$>2Yz zRKaIkrr6-M+hM&HP}3%&MZy&PfzsUU&~?=(9f*pYSPn)3y@I#sBfb?{L*K$J|4w^L zdpMh9l`SvJ#Glu4@GYcAUL9dE!VyX>bX_pT&IMavx6oKNB5WsPuY%hkjjH<*(_zs@ zm-|mL&wYZ?FKsuQ^9h4?;~KQh158Y6@BhV!%POx6kJiEyBr2EsA4Kn3Pk*Z^!Zt{2 zh=Hw2w-n0GEYGOM@`-YQ&pdObu_m|ZOZpAU#%cY0?ZIxB63xaqwm+JnMcb>Q#X)z9 z0B4-YtS8r7X>A{{rE~7Sel5g1)R4Lb@596(u9e%0O@#Tg5y=%gf-gL-Pg9kaRJ~J| z`q`-B&Io4rz-w9l?UEk$c@KkNM;CWwo8FcBg)h&c>I+CW?&7K3ZZTW)cDCjDA8Rf70?H~=cLRTS0>)o|S(XH0 zV#`#}sxC}w7xg5B=qdP$FFnPz91gWY1dh6r{=EU$hA68eqM2LlOMRJdx{{8IQErSv zFpM#&Qtt*cBL}_90cUp32*WeKc*5b}N7p>6E8^}n(Qtz^u)7x-$FFTR77xK&u`so! zQK1$!=P;ObTn>c(3c&0svioFEe`quDAvHHsX+v1zd@<6%X7pc`uiweJup2-b4)oJd zw`kL@mR=7yRSpnbXOqbPbE*ne%vWCvcU6hYISSVi&Bbu)3*1e&Lk$Ua4Cs5^@=0ZW zY{^2y7dN%ubqA>I={f1~a62Z;GE`FUS6x0|fXXZ$81g~TC}|52ESJ12AMc-Xh=ugu z*%!^?ybRrET;U;bb0EVMH&mkq6LI^mJP*aH;T4hG6Q9%{;6Z| ziMfHBb)$k4KwULJ`qB501C()CG2pb?Y?XM*fV9X`45r-A1MUAO;sX}Jqkf5D!1vcAcsS28yDMH7+=XB%i=@4ETub#F_eQjh!z zbO09DCfl(NNNVFA5o%lxy$5XfuagseRq7nj9A0iDqlw1n2am46p+84$J)=C3*NxFvLrZ)nO?7@CtISnrHr+Dz9g|wv7pYB<3nJ!nhPL+v$3HDFLz!Ve zE&afsA65Lt^&QNCd;bOlReQErG*egUNNqH*;T%yt-%%G5^1mcs0` z^Ugum4C{~E%DWSGz4c-k)-L?`!Hwq42ErhGBWC3!1$QS4g_+3Qz~!e8J5=RL>7Wmfk5!;qbMOuS}v!s+UCftL~nil6WhPj24z0J^Z+ zgipoIvp6s1LRpG5gsLXu0P=L;&sLJ9VR_C)iYJ-q8q-F_vUs;*1LxTpJ4iK5N{r+9 z5BVJB)$XBNZ%720o2-d@-xesXbF(FIEoAba~W_g*`IOZ*lDlH&7U=jta8r1($GzH#deSY}gstx%w@&rA`!ITfk zHvObsaATPUgTDZw)JE>{4B3HU+vKNlw@WcMVftigekRZyT0_>=`o}=Re5#e3)SdUb zMSnyy4fhl`H$raq?0HO9_u*}KfQT@a#L^@2eIRp_(s>8coT~i%{~F5ifOA9Eefh|* z2c49WN51Q$#ObeL>NTT+O^W~5RyeU9j>Wwxq^q+S4Olb1#`>t9J+>zu5zkyPNQJNO zcmCs^FNpDPs+zPIFEmbTjpbSPA6%-@JjU3DqW{&lxpT2@N$6l4^HQ@-(Kh0c} zIwY|;v=*|nXb~6$IS3bSBAss60R=c1(oWS1@76>*hI4SUG12rLbqpIW@Qy+4Z|y@3?@l zWds1l)ZczJ5~qcR;DM2m+yAR)PEC2Tdj>YyTm3jpT)oNhNRcO*@}w+2%ROztn)@ro z&^wMn@*~4m)7Hij<%`*@Stx%eFIAnp2cAz1I2UE8BBh$a(l+mp*IjUZh%Z;(Z};Xs zSZmN)2VHPdvFWGs3nr!*GU&XN)0gIYRbb*%|5oX~L(Y3&vgiXhpN+a32!|xYyE|Q; znn*KmKOg$V-DgQ?4?TJQ?l=L6#G~YXi~m_Y|J(Qh_iPSBa|txtG;d$a)$~l?8KzA- za4{)z0#G~?oiB?)O$Go6#KtVrw`G5FYtD7>w0&w|m1imTcV!|Z$JJN!QXPjD!#FGM zF#=2u9)KDqJ)Sg7s+1?$GwCgeh0OVEFyst;&yVnUtwPrrG8u#l5QNWK8eu!RO=L~D z33HoGIhXf~oS!Z|tPZ~gEO2ok^-vGwbD%Kbn@K@G$uE_MPUnFG>M3hH7LKakn$8b z(+B3JS9P|p_ul$&j8fy5S|Afpo$Y+hbT0ChR8Mz`zA-epY;A)?R6Zv!(V}S8((Za% zBsSI$IC%x;P$3WGr~4T;+rRG??GFG8ORxK1kxeC*-{?e8E7@=ck+#k^-pIuXtoJEqQj2!mbiziF9?+yQmu1atOb_R@~b_h zp0zejfA0{@`UY3r&6#Li=x=F$yuEIvDF!pri(z`f^(R41^gqy$QjIfJ#JKuOy}PbT zGZ_OH%eC1|Y`Fx*sK$+0~AHq@LzQ927Py;_X={du&Z zw*VCgZ{>VHVUL(h4nE{%{pKRv#A|7<-8T0a*48|%-@5i1Blo@O)kJRnhNaJFoV`14 zT1~tmTbpzF61U(ojtLks_D#)lZID_yENnOWacjTma zsT50r`2aK5UG1D3B?e@5CHR)x&(%SL){B6IKN}3XUr#4m0*sw=+Jeb>WnqD<$qn5o8&z0WeYxj)ZY27h*_TDaR>>V?O! z9OM9rdUxagV}4iW5kWe3*Qc}#;P_g?s}3X{V?FACQnHmG;5vJir39ho!#9qal=FPj zm)!B}C%gKeK;EFOMK}itN1UtSl@)vgY)y?SVqKK|8i{@&x7U<=dNkzne>%3a}Ag*NG1mX@$20jGN@w13mobL$a%<6$z|DvEn7x{-}b4xYsVIB zWemwg<(wuG3!w?VIG~kkbF~oK7il47t1I^=?ZTaQ~=gY$!Lw8^8RB?0_@RP$IQsN-P4;j6@=R$#_y+$fJ!mC>KiCgz} zrLPxE+CdbM@6%KRziL6y_cN~%==Th>!?p}r`Ql}JT0(6x7I|f8{Y6iKfwUoS?6EAD zBaIW5;oRnGic5hGP7&X3mQ}hy@_Ekg39Zb zJNF&~*QSD~bIx!*Z@9V;1g%-jQWI|E@ObUgmg*@ zn;yhn&N7ej8R}>yK}Lg!8Wxl97h4uf2_AD5TL8;bNduznJJh%@ZEBX! zqYdT(vLd6T1_cpp3$L+a>|+in|0-;_+tzW%)Q8}*d3*6moBjx!Np}>zGuXJ)TAvg@ z^AKa#teMuuUjobB&boiv!_p;0=$ZBU_m4=Kt*)7@jeqX1TNDB~-1cZ4yYz`#zMQkI z2^0ogFX`Pq$Zu7yW<`Ba^{C?*cYtj;!v(Sp8v_1}u|wC26}dbTt{(Lkl#|#wiR!nn z&W-ZJkiZZ`S?Z#m_N5^_KKy~(#u=G6cY%&fJ2sd(O%EU8$WY}V?hK1^bAIC=!T)jy z2;)c;Xrll*$S5j{uuo)3Rvdr-c!^D@R+~d}FXQi>8r*i&_mC||`9H2MeY(-Q#)$Jq z%DjCm9qs+S6O^aqLS0at0M*ncng8CMimggDA5f zM6`z-_rD@WIKCnzI%iRr_#p7&#PNp~sxzeX`dKJ6OfJp7ul!cGVV3oCnfUn3%1HWMnbvPJ*z)omWy1tKip7M*c3^x}-T(UzxPG0G}&@&_1UDV2;ByDiGv5t16Whi&A5N>JnZ zKA}loQxWC*WLI<6?=dwNW)~F-q4+%E2bBb{#!80@{es=2`H|#gyF7mKfR-W<5>#}V zm7cU$lU6I7UO>{NI_ot1Ux^Ude77iB^FJ(LK~hhV9aZU{K2CiuDB3RWEnLo`h83z~Hxi{l};wgXbLKPHF8k**!;NZO?=f>mE|-dw9#o4CPcvxJ!8{68Wp-K5YawIn?3&WKg$uf6xt$ zxbBEBztn%Qcd&3+V`xVx>__dFFV^YpGdu^TaT+Jp%8Avjpa!8EK9OIGK?NPrH7_v1 z>W!n^ugqxcs61-sUdN=DM&OD+l6t$f=&iQgJ;l$a za^XK2U9;~=K;R|oB^I~%hW;I>r75-CjJ+YQIiS;@L>4vF%3yZ4Rmw^|hrg)7$x-eS zZljNUniuw>KRZKA`-V~wheAG6oJw@nHKC(VVEn|8+hwOW%`$;AD}t`*IzhyZXjl;P zK-<+)`2K3idp~;Dl!L0X$w2>kzC_<@;$D5z`c`?L{F^~vIIwvxf}O)C!)X-wiC^Yz&YFRC;z4_OyTy!naNE>!`Ktt3Vj&=-irA`gk$teEnx!2L>PF!e04 zkhH2KEfEUctFX{E)JBTC?Je`nhS&0H+Zz*xP?(MtB|pavb`^1vH!o14HNfH-*)`B| zv_33T9=Kf_oqLDbsd)$fNj1rQp8c$hVUT<) zvo>MPrzY?ZF?{D9buhwbqQWA8a{C;`tx;U{2As02`l^_%f=kPjn@j%km}O z&o{j)=bJ3cotU7rI_FrlHmDg2m1u1YHtNna$ny32a2~*tMNIV{pS9*8$``1~K6))X z{W-?dmoCZ!SZl?;Si3(vD~$TAtM`!1)pgSLQ~0IdG;vp`BYawFm6Ot2DTkun8P%Db zWrHTrDUYjVUmb>?($eab-m;dNe{$QrOL$=+fR}uHbM(Y}Ai9t*0T%l3<`ev@hV75? znC^YPVc3=najLDc~}2vvj{jvQ5XGjuSLx0W))%+C~Ri@ zg7&{gjqH-!sH93K17M)ce?j>aGf zAncMA^ghI{1b^J=h&m=v&lVFXWvcr(f z{6VE!U?a=BH#J(Ro4`(X)3ox9MkT_x3j7CX`2&=jvstl%jn0=vzD$n`15@yc#2m$H z7s2j3Ks{EkUjdFEWWHFNqZP`xO>1cC)|uCJAan&n4@Kb}rmccldP_y%ui$C74fIOu z@6Yv?6mG}E?Kvik>u^yr#w5k!Vm~jD zzV&8(I7*H=VjX>*4E2?dWlcLvsl2ZFl8`Nk5Bx2VIyvS(DQr??z}@!Kk8g)36o-oww< z=q5(R*Vdi?ZZXff`xP_nxBx$8;as}q>Nu*ncH%{31-4kV`+O*GONTQW=~*C0GDF99 ztLV_T_IGyIBK8|_xHB`?z0;l_$5ws$YQgFSFxQiSp~?!h%vjhqdMnP4S0qE7`B)8S z{+{s#Bu`m+j!L3}dP2v}l3hO`TZwt^aCtlCEDugjh0u=A^@_CNzF3#oh1_$5Z`hds zG%E;kny@$eKBlo_a(eHxg!$lL=&~d`7tGgnqc}Djv3c_u5IBrCUkv?5sx~Za=DZG3 zUS2;N2L{eQr8gLl+C*ML`d3#himp^%AnS5Bq#@$Ba%wsjQgx#q!y)$(A6s1pQ4tLO zd}XYy#~K&nIm_v(tpz;Fvdl%F@ecpCI9h!s@G)Idj~&=MMB)}>iMO!t$>{?u503hS zKu5+H{}(`OuNDwHAo&_s9~@H55c|bz+t9I^&k;_&>--&l*TTCFJtC+8G_o(4B2VqI z+4MzOLSJCQ#o?DwIL$E;l;V)#=^W!kp<|eV#r@#NH|b=F?Y;eCAq_(AoGS~dDh;+Z7hg;UItolq|FjGECPI1AAXh?Ys z(|ot!ec1xlSN1KYcCKMPNLCcGWw${fDxWIV$7649e6f~IypQ*y-1m1WYRya33*QIu zb+6VkhrIpCu$K7m0jTy}lvW~d!~0ssq; z181-mMCywBacsv8nQZh0i96t)1h~P~a;#@~>}?Uz&i zore9HJr0kU-J<7|RAsct9uB2;+M2mpN=5FF^Q1c@xhGQ6?g)sfgzkuU>^Q!iBM z$Aa#r?GCNwr$@|Heww!r(^mwyE8bb`%VSygyHf>TJ+-N=b3Q^7D~K(TRvvR`=$L!_Xjx8&PcKmJ*rQ-5oT2A8MZ^5 z#ddozNKjoytcvgOkbA2)fPo;;iHEcFqS^d}eVk~>YTRB!OxR9@4stsKIdMfKFuwcY zjz7?q?cgoyDra~=$3QHd-ANI9`Af6qdy^l2{n!y8_THw*X2t=7zgBV+tGqsUFK4fX zk1_Zu?nK~`+XeO?e`In6IQQ>vRulzf9pNRYsseIm_Giv#&p66huHf1DSjNi(|F@^%0vR9SN-w9dr1> z8hBN}sdK;Di0RL3H6z)9vdK(;d!~-^hkT%70BWO;8YX%Bi3HEo2km@Y?#o{(D=*im zo!mVA{p(Sz|HL}_)YM@hq_TPfK^L@G1ms35Jag4)oHrvA&}KId0ufbAyLMoE})8_xOz9Uk&d+8`&!b-Ijc*fuX#hw xaJfQ=y*OHJ-tNGU$zb{n!du<%5PW=}i(S*`xc`M;8Ni(&9c@FcGEIkP{|}x@xyAqh diff --git a/keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107154240_221_763.png b/keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107154240_221_763.png deleted file mode 100644 index 449562331a3b72e6cb7826e257a19dbafbefd4c5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17482 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 diff --git a/keyBoard/Assets.xcassets/Home/recharge_now_icon.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/recharge_now_icon.imageset/Contents.json new file mode 100644 index 0000000..4494def --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/recharge_now_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "recharge_now_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "recharge_now_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/recharge_now_icon.imageset/recharge_now_icon@2x.png b/keyBoard/Assets.xcassets/Home/recharge_now_icon.imageset/recharge_now_icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..f525fe28f6d5c058062fb303934d01618097c250 GIT binary patch literal 17237 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�`+lb&Tg7H(CK4V6i1 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 KTJXf+{r>|#m&{54 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/recharge_now_icon.imageset/recharge_now_icon@3x.png b/keyBoard/Assets.xcassets/Home/recharge_now_icon.imageset/recharge_now_icon@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..b244847400f9e87ab71806da28486f67022b0bf0 GIT binary patch literal 43871 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 z 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 0 && size.height > 0) { - UIImage *bg = [UIImage kb_gradientImageWithColors:@[[UIColor colorWithHex:0xE6FFF4], [UIColor colorWithHex:0xA6FFD8]] - locations:nil - size:size - direction:KBGradientDirectionLeftToRight - cornerRadius:size.height * 0.5]; - [self.buyButton setBackgroundImage:bg forState:UIControlStateNormal]; - } - } } #pragma mark - UI @@ -126,7 +114,7 @@ [self.buyButton mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.mas_left).offset(62); make.right.equalTo(self.mas_right).offset(-62); - make.bottom.equalTo(self.mas_bottom).offset(-5); + make.bottom.equalTo(self.mas_bottom).offset(0); make.height.mas_equalTo(56); }]; } @@ -240,7 +228,7 @@ [_buyButton setTitle:@"Recharge Now" forState:UIControlStateNormal]; [_buyButton setTitleColor:[UIColor colorWithHex:0x1B1F1A] forState:UIControlStateNormal]; _buyButton.titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; - + [_buyButton setBackgroundImage:[UIImage imageNamed:@"recharge_now_icon"] forState:UIControlStateNormal]; [_buyButton addTarget:self action:@selector(onTapBuyAction) forControlEvents:UIControlEventTouchUpInside]; } return _buyButton; From 450798c8bddb9d9e3bec2f043ba1d3fec2f59493 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 19:33:54 +0800 Subject: [PATCH 23/47] 2 --- keyBoard/Class/Home/V/KBPanModalView.m | 91 +++++++++++--------------- keyBoard/Class/Home/V/KBTopThreeView.m | 73 +++++++++------------ 2 files changed, 71 insertions(+), 93 deletions(-) diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m index 17fd41a..af6af3f 100644 --- a/keyBoard/Class/Home/V/KBPanModalView.m +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -21,8 +21,6 @@ /// 人 @property (nonatomic, strong) UIImageView *personImageView; -@property (nonatomic, strong) UIImageView *leftImageView; -@property (nonatomic, strong) UIImageView *rightImageView; @property (nonatomic, strong) UIImageView *leftBgImageView; @property (nonatomic, strong) UIImageView *rightBgImageView; @@ -173,7 +171,7 @@ [self.bigWhiteContentView addSubview:self.secWhiteContentView]; [self.secWhiteContentView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self).inset(0); - make.top.equalTo(self.bigWhiteContentView).offset(47); + make.top.equalTo(self.bigWhiteContentView).offset(40); make.bottom.equalTo(self.bigWhiteContentView); }]; @@ -184,19 +182,26 @@ make.left.right.top.equalTo(self.secWhiteContentView); make.bottom.equalTo(self.secWhiteContentView); }]; -// [self.rightBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { -// make.left.right.top.equalTo(self.secWhiteContentView); -// make.bottom.equalTo(self.secWhiteContentView); -// }]; + [self.rightBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.equalTo(self.secWhiteContentView); + make.bottom.equalTo(self.secWhiteContentView); + }]; // 顶部栏 [self.secWhiteContentView addSubview:self.topBar]; [self.secWhiteContentView addSubview:self.containerView]; - // 调整层级:将人物与皇冠图添加到与 topBar 同一父视图,并放在 topBar 之下 - [self.secWhiteContentView insertSubview:self.personImageView belowSubview:self.topBar]; - [self.secWhiteContentView insertSubview:self.hgImageView belowSubview:self.topBar]; + // 调整层级:将人物与皇冠图放到左右背景图的后面(z 轴更低) + [self.secWhiteContentView insertSubview:self.personImageView belowSubview:self.leftBgImageView]; + [self.secWhiteContentView insertSubview:self.hgImageView belowSubview:self.rightBgImageView]; + + // 固定各层 zPosition,避免插入顺序导致的偶发层级问题(背景 < 人/皇冠 < 磨砂 < 顶部栏) + self.leftBgImageView.layer.zPosition = 0; + self.rightBgImageView.layer.zPosition = 0; + self.personImageView.layer.zPosition = 1; + self.hgImageView.layer.zPosition = 1; + self.topBar.layer.zPosition = 3; // [self.topBar addSubview:self.leftImageView]; // [self.topBar addSubview:self.rightImageView]; @@ -233,18 +238,6 @@ make.height.mas_equalTo(54); }]; -// [self.leftImageView mas_makeConstraints:^(MASConstraintMaker *make) { -// make.left.right.equalTo(self.topBar); -// make.top.equalTo(self.topBar); -// make.height.mas_equalTo(54); -// }]; -// [self.rightImageView mas_makeConstraints:^(MASConstraintMaker *make) { -// make.left.right.equalTo(self.topBar); -// make.top.equalTo(self.topBar); -// make.height.equalTo(self.leftImageView); -// -// }]; - [self.hotButton mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(self.topBar).offset(3); make.left.equalTo(self.topBar); @@ -273,16 +266,16 @@ [self.personImageView mas_makeConstraints:^(MASConstraintMaker *make) { // 仍按页面整体的左右边距定位,保持与改层级前的视觉一致 make.left.equalTo(self).offset(46); - make.bottom.equalTo(self.topBar.mas_top).offset(22); - make.width.mas_equalTo(70); - make.height.mas_equalTo(107); + make.bottom.equalTo(self.topBar.mas_top).offset(20); + make.width.mas_equalTo(53); + make.height.mas_equalTo(81); }]; [self.hgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.right.equalTo(self).offset(-38); - make.bottom.equalTo(self.topBar.mas_top).offset(12); - make.width.mas_equalTo(97); - make.height.mas_equalTo(78); + make.bottom.equalTo(self.topBar.mas_top).offset(16); + make.width.mas_equalTo(82); + make.height.mas_equalTo(66); }]; } @@ -348,11 +341,24 @@ make.width.mas_equalTo(78); }]; if (index == 0) { - self.leftImageView.hidden = false; - self.rightImageView.hidden = true; - }else{ - self.leftImageView.hidden = true; - self.rightImageView.hidden = false; + self.leftBgImageView.hidden = NO; + self.rightBgImageView.hidden = YES; + self.personImageView.hidden = YES; + self.hgImageView.hidden = NO; + } else { + self.leftBgImageView.hidden = YES; + self.rightBgImageView.hidden = NO; + self.personImageView.hidden = NO; + self.hgImageView.hidden = YES; + } + + // 确认层级:把可见的装饰图放到当前背景图后面 + UIView *visibleBg = self.rightBgImageView.hidden ? self.leftBgImageView : self.rightBgImageView; + if (!self.hgImageView.hidden) { + [self.secWhiteContentView insertSubview:self.hgImageView belowSubview:visibleBg]; + } + if (!self.personImageView.hidden) { + [self.secWhiteContentView insertSubview:self.personImageView belowSubview:visibleBg]; } if (animated) { @@ -382,25 +388,6 @@ return _secWhiteContentView; } -- (UIImageView *)leftImageView{ - if (!_leftImageView) { - _leftImageView = [[UIImageView alloc] init]; - _leftImageView.image = [UIImage imageNamed:@"home_left_image"]; - _leftImageView.contentMode = UIViewContentModeScaleToFill; - } - return _leftImageView; -} - -- (UIImageView *)rightImageView{ - if (!_rightImageView) { - _rightImageView = [[UIImageView alloc] init]; - _rightImageView.image = [UIImage imageNamed:@"home_right_image"]; - _rightImageView.contentMode = UIViewContentModeScaleAspectFit; - _rightImageView.hidden = true; - } - return _rightImageView; -} - - (UIImageView *)hgImageView{ if (!_hgImageView) { _hgImageView = [[UIImageView alloc] init]; diff --git a/keyBoard/Class/Home/V/KBTopThreeView.m b/keyBoard/Class/Home/V/KBTopThreeView.m index 0f2d15d..2c95e93 100644 --- a/keyBoard/Class/Home/V/KBTopThreeView.m +++ b/keyBoard/Class/Home/V/KBTopThreeView.m @@ -9,9 +9,7 @@ /// 头像占位(圆形描边) @property (nonatomic, strong) UIView *avatarCircleView; /// 彩条卡片背景 -@property (nonatomic, strong) UIView *cardView; -/// 勋章数字(1/2/3) -@property (nonatomic, strong) UILabel *medalLabel; +@property (nonatomic, strong) UIImageView *cardImageView; /// 标题 @property (nonatomic, strong) UILabel *titleLabel; /// 底部加号按钮 @@ -32,11 +30,10 @@ - (void)setupUI { // 卡片 - [self addSubview:self.cardView]; + [self addSubview:self.cardImageView]; // 头像圆圈 [self addSubview:self.avatarCircleView]; - [self.cardView addSubview:self.medalLabel]; - [self.cardView addSubview:self.titleLabel]; + [self.cardImageView addSubview:self.titleLabel]; // 加号按钮 [self addSubview:self.plusButton]; @@ -47,25 +44,21 @@ make.width.height.mas_equalTo(68); }]; - [self.cardView mas_makeConstraints:^(MASConstraintMaker *make) { + [self.cardImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.avatarCircleView.mas_bottom).offset(-34); // 顶部悬浮重叠 make.left.right.equalTo(self); - make.height.mas_equalTo(146); + make.height.mas_equalTo(148); }]; - [self.medalLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.cardView).offset(34 + 15); - make.centerX.equalTo(self.cardView); - make.width.height.mas_equalTo(28); - }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { - make.centerX.equalTo(self.cardView); - make.top.equalTo(self.medalLabel.mas_bottom).offset(20); + make.centerX.equalTo(self.cardImageView); + make.top.equalTo(self.cardImageView).offset(84); }]; [self.plusButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.cardView.mas_bottom).offset(12); + make.top.equalTo(self.cardImageView.mas_bottom).offset(12); make.centerX.equalTo(self); make.width.mas_equalTo(52); make.height.mas_equalTo(28); @@ -75,16 +68,29 @@ - (void)renderWithTitle:(NSString *)title rank:(NSInteger)rank { self.titleLabel.text = title.length ? title : @""; - self.medalLabel.text = [NSString stringWithFormat:@"%ld", (long)rank]; // 不同名次数的配色 UIColor *theme; + UIImage *image; switch (rank) { - case 1: theme = [UIColor colorWithRed:1.00 green:0.86 blue:0.43 alpha:1.0]; break; // 金 - case 2: theme = [UIColor colorWithRed:0.68 green:0.80 blue:1.00 alpha:1.0]; break; // 蓝 - default: theme = [UIColor colorWithRed:1.00 green:0.78 blue:0.63 alpha:1.0]; break; // 橙 + case 1: + { + theme = [UIColor colorWithRed:1.00 green:0.86 blue:0.43 alpha:1.0]; + image = [UIImage imageNamed:@"home_rank_1"]; + } + break; // 金 + case 2: { + theme = [UIColor colorWithRed:0.68 green:0.80 blue:1.00 alpha:1.0]; + image = [UIImage imageNamed:@"home_rank_2"]; + } + break; // 蓝 + default: { + theme = [UIColor colorWithRed:1.00 green:0.78 blue:0.63 alpha:1.0]; + image = [UIImage imageNamed:@"home_rank_3"]; + + } break; // 橙 } - self.cardView.backgroundColor = theme; + self.cardImageView.image = image; self.plusButton.backgroundColor = [theme colorWithAlphaComponent:0.3]; // 圆圈描边 @@ -105,28 +111,13 @@ return _avatarCircleView; } -- (UIView *)cardView { - if (!_cardView) { - _cardView = [[UIView alloc] init]; - _cardView.layer.cornerRadius = 14.0; - _cardView.layer.masksToBounds = YES; - _cardView.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1]; +- (UIImageView *)cardImageView { + if (!_cardImageView) { + _cardImageView = [[UIImageView alloc] init]; } - return _cardView; + return _cardImageView; } -- (UILabel *)medalLabel { - if (!_medalLabel) { - _medalLabel = [[UILabel alloc] init]; - _medalLabel.textAlignment = NSTextAlignmentCenter; - _medalLabel.font = [UIFont boldSystemFontOfSize:15]; - _medalLabel.textColor = [UIColor whiteColor]; - _medalLabel.backgroundColor = [UIColor colorWithWhite:0.3 alpha:0.7]; - _medalLabel.layer.cornerRadius = 14; - _medalLabel.layer.masksToBounds = YES; - } - return _medalLabel; -} - (UILabel *)titleLabel { if (!_titleLabel) { @@ -163,7 +154,7 @@ - (instancetype)initWithFrame:(CGRect)frame { if (self = [super initWithFrame:frame]) { - self.backgroundColor = [UIColor colorWithWhite:0.98 alpha:1]; + self.backgroundColor = [UIColor whiteColor]; [self setupUI]; } return self; From 91d754b389169a38fbb942a75ee47788ce82986e Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 19:55:11 +0800 Subject: [PATCH 24/47] 1 --- keyBoard/Class/Home/V/KBTopThreeView.m | 68 ++++++++++++++------------ 1 file changed, 37 insertions(+), 31 deletions(-) diff --git a/keyBoard/Class/Home/V/KBTopThreeView.m b/keyBoard/Class/Home/V/KBTopThreeView.m index 2c95e93..232ae77 100644 --- a/keyBoard/Class/Home/V/KBTopThreeView.m +++ b/keyBoard/Class/Home/V/KBTopThreeView.m @@ -12,8 +12,6 @@ @property (nonatomic, strong) UIImageView *cardImageView; /// 标题 @property (nonatomic, strong) UILabel *titleLabel; -/// 底部加号按钮 -@property (nonatomic, strong) UIButton *plusButton; /// 渲染 - (void)renderWithTitle:(NSString *)title rank:(NSInteger)rank; @@ -34,8 +32,6 @@ // 头像圆圈 [self addSubview:self.avatarCircleView]; [self.cardImageView addSubview:self.titleLabel]; - // 加号按钮 - [self addSubview:self.plusButton]; // 布局 [self.avatarCircleView mas_makeConstraints:^(MASConstraintMaker *make) { @@ -47,7 +43,7 @@ [self.cardImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.avatarCircleView.mas_bottom).offset(-34); // 顶部悬浮重叠 make.left.right.equalTo(self); - make.height.mas_equalTo(148); + make.height.mas_equalTo(KBFit(148)); }]; @@ -57,13 +53,6 @@ make.top.equalTo(self.cardImageView).offset(84); }]; - [self.plusButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.cardImageView.mas_bottom).offset(12); - make.centerX.equalTo(self); - make.width.mas_equalTo(52); - make.height.mas_equalTo(28); - make.bottom.equalTo(self.mas_bottom); // 由外部控制总体高度 - }]; } - (void)renderWithTitle:(NSString *)title rank:(NSInteger)rank { @@ -91,7 +80,7 @@ } break; // 橙 } self.cardImageView.image = image; - self.plusButton.backgroundColor = [theme colorWithAlphaComponent:0.3]; + // 加号按钮移至 KBTopThreeView,由其统一控制样式与布局 // 圆圈描边 self.avatarCircleView.layer.borderColor = [UIColor colorWithRed:0.83 green:0.95 blue:0.27 alpha:1.0].CGColor; @@ -129,17 +118,7 @@ return _titleLabel; } -- (UIButton *)plusButton { - if (!_plusButton) { - _plusButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [_plusButton setTitle:@"+" forState:UIControlStateNormal]; - [_plusButton setTitleColor:[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] forState:UIControlStateNormal]; - _plusButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; - _plusButton.layer.cornerRadius = 14.0; - _plusButton.layer.masksToBounds = YES; - } - return _plusButton; -} +// 此类不再持有 plusButton @end @@ -148,6 +127,8 @@ @property (nonatomic, strong) KBTopThreeCardView *leftCard; @property (nonatomic, strong) KBTopThreeCardView *centerCard; @property (nonatomic, strong) KBTopThreeCardView *rightCard; +/// 统一的底部加号按钮(移出卡片,放到 KBTopThreeView) +@property (nonatomic, strong) UIButton *plusButton; @end @implementation KBTopThreeView @@ -164,27 +145,39 @@ [self addSubview:self.leftCard]; [self addSubview:self.centerCard]; [self addSubview:self.rightCard]; + [self addSubview:self.plusButton]; // 横向均分布局 [self.centerCard mas_makeConstraints:^(MASConstraintMaker *make) { make.centerX.equalTo(self); make.top.equalTo(self).offset(8); - make.width.equalTo(self.mas_width).multipliedBy(1.0/3.0).offset(-12); + make.width.mas_equalTo(KBFit(96)); + make.height.mas_equalTo(KBFit(180)); }]; + // 第二、三名比第一名矮一点:顶部向下偏移 + CGFloat sideTopDelta = 12.0; // 侧边两张比中间低 12pt(可按设计调整) [self.leftCard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.centerCard); + make.top.equalTo(self.centerCard).offset(sideTopDelta); make.right.equalTo(self.centerCard.mas_left).offset(-8); make.width.equalTo(self.centerCard); + // 与中间卡片底部对齐,通过高度差体现“更矮” + make.height.equalTo(self.centerCard); }]; [self.rightCard mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.centerCard); + make.top.equalTo(self.centerCard).offset(sideTopDelta); make.left.equalTo(self.centerCard.mas_right).offset(8); make.width.equalTo(self.centerCard); + make.height.equalTo(self.centerCard); }]; - // 让最右/最左卡片对齐底部,撑起本视图 - [self.leftCard mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self).offset(-8); }]; - [self.rightCard mas_makeConstraints:^(MASConstraintMaker *make) { make.bottom.equalTo(self).offset(-8); }]; + // 用 plusButton 来“撑起”本视图,且底部对齐 + [self.plusButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.centerCard.mas_bottom).offset(12); + make.centerX.equalTo(self); + make.width.mas_equalTo(52); + make.height.mas_equalTo(28); + make.bottom.equalTo(self).offset(-8); + }]; } - (void)configWithItems:(NSArray *)items { @@ -207,5 +200,18 @@ - (KBTopThreeCardView *)centerCard { if (!_centerCard) _centerCard = [KBTopThreeCardView new]; return _centerCard; } - (KBTopThreeCardView *)rightCard { if (!_rightCard) _rightCard = [KBTopThreeCardView new]; return _rightCard; } -@end +- (UIButton *)plusButton { + if (!_plusButton) { + _plusButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_plusButton setTitle:@"+" forState:UIControlStateNormal]; + [_plusButton setTitleColor:[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] forState:UIControlStateNormal]; + _plusButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _plusButton.layer.cornerRadius = 14.0; + _plusButton.layer.masksToBounds = YES; + // 默认浅色背景,可按需要在外层配置 + _plusButton.backgroundColor = [[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] colorWithAlphaComponent:0.15]; + } + return _plusButton; +} +@end From 48a12f091992fdeac8b4d32b85a5e3dc70549c6d Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 20:58:14 +0800 Subject: [PATCH 25/47] 1 --- keyBoard.xcodeproj/project.pbxproj | 6 +++ .../Home/hoem_love_key.imageset/Contents.json | 22 ++++++++ .../hoem_love_key@2x.png | Bin 0 -> 189099 bytes .../hoem_love_key@3x.png | Bin 0 -> 388609 bytes .../Home/home_ai_icon.imageset/Contents.json | 22 ++++++++ .../home_ai_icon.imageset/home_ai_icon@2x.png | Bin 0 -> 9605 bytes .../home_ai_icon.imageset/home_ai_icon@3x.png | Bin 0 -> 18964 bytes .../home_chat_icon.imageset/Contents.json | 22 ++++++++ .../home_chat_icon@2x.png | Bin 0 -> 8346 bytes .../home_chat_icon@3x.png | Bin 0 -> 16594 bytes .../home_emotion_icon.imageset/Contents.json | 22 ++++++++ .../home_emotion_icon@2x.png | Bin 0 -> 9487 bytes .../home_emotion_icon@3x.png | Bin 0 -> 18689 bytes .../home_keyboard_icon.imageset/Contents.json | 22 ++++++++ .../home_keyboard_icon@2x.png | Bin 0 -> 12705 bytes .../home_keyboard_icon@3x.png | Bin 0 -> 25954 bytes .../home_topvip_icon.imageset/Contents.json | 22 ++++++++ .../home_topvip_icon@2x.png | Bin 0 -> 120195 bytes .../home_topvip_icon@3x.png | Bin 0 -> 215855 bytes keyBoard/Class/Base/VC/BaseViewController.h | 16 ++++++ keyBoard/Class/Base/VC/BaseViewController.m | 32 +++++++++++ keyBoard/Class/Home/V/HomeHeadView.m | 48 +++++++++-------- keyBoard/Class/Home/V/HomeHotCell.m | 18 +++---- keyBoard/Class/Home/V/KBPanModalView.m | 16 +++--- keyBoard/Class/Home/V/KBTopThreeView.m | 51 ++++++++++++++++-- keyBoard/Class/Home/VC/HomeHotVC.h | 2 +- keyBoard/Class/Home/VC/HomeHotVC.m | 2 - keyBoard/Class/Home/VC/HomeRankVC.h | 2 +- keyBoard/Class/Home/VC/HomeRankVC.m | 1 - keyBoard/KeyBoardPrefixHeader.pch | 2 + 30 files changed, 282 insertions(+), 46 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Home/hoem_love_key.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/hoem_love_key.imageset/hoem_love_key@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/hoem_love_key.imageset/hoem_love_key@3x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_ai_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_ai_icon.imageset/home_ai_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_ai_icon.imageset/home_ai_icon@3x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_chat_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_chat_icon.imageset/home_chat_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_chat_icon.imageset/home_chat_icon@3x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_emotion_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_emotion_icon.imageset/home_emotion_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_emotion_icon.imageset/home_emotion_icon@3x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_keyboard_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_keyboard_icon.imageset/home_keyboard_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_keyboard_icon.imageset/home_keyboard_icon@3x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_topvip_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_topvip_icon.imageset/home_topvip_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_topvip_icon.imageset/home_topvip_icon@3x.png create mode 100644 keyBoard/Class/Base/VC/BaseViewController.h create mode 100644 keyBoard/Class/Base/VC/BaseViewController.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 0da26de..4da11d3 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -52,6 +52,7 @@ 047C65582EBCC06D0035E841 /* HomeRankCardCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C65572EBCC06D0035E841 /* HomeRankCardCell.m */; }; 047C655C2EBCD0F80035E841 /* UIView+KBShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C655B2EBCD08E0035E841 /* UIView+KBShadow.m */; }; 047C655E2EBCD5B20035E841 /* UIImage+KBColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C655D2EBCD5B20035E841 /* UIImage+KBColor.m */; }; + 048908BC2EBE1FCB00FABA60 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908BB2EBE1FCB00FABA60 /* BaseViewController.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -194,6 +195,8 @@ 047C655B2EBCD08E0035E841 /* UIView+KBShadow.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIView+KBShadow.m"; sourceTree = ""; }; 047C655C2EBCD5B20035E841 /* UIImage+KBColor.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIImage+KBColor.h"; sourceTree = ""; }; 047C655D2EBCD5B20035E841 /* UIImage+KBColor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIImage+KBColor.m"; sourceTree = ""; }; + 048908BA2EBE1FCB00FABA60 /* BaseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = ""; }; + 048908BB2EBE1FCB00FABA60 /* BaseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -738,6 +741,8 @@ 04FC95C82EB1E4C9007BD342 /* BaseNavigationController.m */, 04FC95CA2EB1E780007BD342 /* BaseTabBarController.h */, 04FC95CB2EB1E780007BD342 /* BaseTabBarController.m */, + 048908BA2EBE1FCB00FABA60 /* BaseViewController.h */, + 048908BB2EBE1FCB00FABA60 /* BaseViewController.m */, ); path = VC; sourceTree = ""; @@ -1171,6 +1176,7 @@ 04FC95F12EB339A7007BD342 /* LoginViewController.m in Sources */, 04FC96142EB34E00007BD342 /* KBLoginSheetViewController.m in Sources */, 04A9FE1B2EB892460020DB6D /* KBLocalizationManager.m in Sources */, + 048908BC2EBE1FCB00FABA60 /* BaseViewController.m in Sources */, 04FC95D72EB1EA16007BD342 /* BaseTableView.m in Sources */, 0477BDF32EBB7B850055D639 /* KBDirectionIndicatorView.m in Sources */, 04FC95D82EB1EA16007BD342 /* BaseCell.m in Sources */, diff --git a/keyBoard/Assets.xcassets/Home/hoem_love_key.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/hoem_love_key.imageset/Contents.json new file mode 100644 index 0000000..10a98fd --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/hoem_love_key.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "hoem_love_key@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "hoem_love_key@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/hoem_love_key.imageset/hoem_love_key@2x.png b/keyBoard/Assets.xcassets/Home/hoem_love_key.imageset/hoem_love_key@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..4f1f2e16f7f740c01337a81f916e199a0c0bc276 GIT binary patch literal 189099 zcmZ6yWmufevNepu;0*3IxNC4H%;4_s1eXL4gF|qK;0^(TYj6l2JV0=_;O>0v{hs}t zeZD{URrjy%tE;POtyR^Ls>*U0s3fQ`FfbSpu#7qk3|!8eeTahe_C?c|b%cSzhJnaP zYI?yQJsZ?p4yMpY_}jNWcJ^NzUSP*CYhoc53Y3H#m?3C%jlrKY*L(kbLV1pqc|ppE z$#`J!I5dh2=1;ofoU7p{1!UzAL}UCNIb`LOwA^i#>0e#)ue$degiuMsX;JCP*6G%& z_|-n0jHdZIyqbH3~qr-n~1K7reCmO)?eQ8VphPO<^w%&8Hwc{CBMNgEkw2OWtW^$D#v+M_c(K z?~jqwukU<^N;f^S|Fy>dTlRm9r}Se5J7sENJ+scVPN zlH3bF$@xKF*&w@htv!jxW3@){A}1S0fwx~|nQv-^PRYD%lH*WL1wp?j)oQbwh(Q~*}{`a=O zxoBbr4)l>H@CgG_O)e)Akdx@WMwbzz-@N;4BOtnT@!gU?`Vg&%)HAEiwc87R)3)o9 zs%Tu`;2OrFhr|-=WRi5OV;-`*65gG85SxBO6h=A*tDIs5j1f}}x1xRUcQmv3#sagp zN^Z*(-Od{0_cL-wVC|(Q*$+s(klH9jxeM>`VzI%}2Y16^i^BsLX2#BI(}1-vxitS1 zE&sa7PZ0g}qS;}%u4cq6nG1UXm4s8*wHl4jq{s z4YoHL<&O+6`d@2RLF>nxG&%^=s!5loa%JxZ&{Qs>)OfM?10L=%RM_C$@rpdH%ja&vKjWdi zzVjo<<*X{vX_t6*9P_-kDeJPk2fz4|K^RY}|G@iDz8Ljq7S$hW#?4PmmQ#m9@#N5d zu|ywJ6i1PR1qO>vx6fP8h79MqhQlmtfx|qqG*^ZNIi>4+Bu{W-xMDzb0Wkie?qNa3ZvmURaLnwXO0OxZIJ!JKZzUw9hIJO!xo9 z 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Μ8 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%0A9-QuM1e^nNTr*>3mbgxjYwYtn=U6?QgSB6o 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

    oR{iD5` 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_chat_icon.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_chat_icon.imageset/Contents.json new file mode 100644 index 0000000..f7f7caa --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_chat_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_chat_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_chat_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_chat_icon.imageset/home_chat_icon@2x.png b/keyBoard/Assets.xcassets/Home/home_chat_icon.imageset/home_chat_icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..09dd0b9ba0dd0a3fb8120f2f4c1b02691cead3cf GIT binary patch literal 8346 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 TyYbHgiZFP(`njxgN@xNAopm!U literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_emotion_icon.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_emotion_icon.imageset/Contents.json new file mode 100644 index 0000000..37c6f7c --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_emotion_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_emotion_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_emotion_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_emotion_icon.imageset/home_emotion_icon@2x.png b/keyBoard/Assets.xcassets/Home/home_emotion_icon.imageset/home_emotion_icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..511516ca7a8d2912f60d9ab9c4c7dd041c39c374 GIT binary patch literal 9487 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_keyboard_icon.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_keyboard_icon.imageset/Contents.json new file mode 100644 index 0000000..a1613b4 --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_keyboard_icon.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_keyboard_icon@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_keyboard_icon@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_keyboard_icon.imageset/home_keyboard_icon@2x.png b/keyBoard/Assets.xcassets/Home/home_keyboard_icon.imageset/home_keyboard_icon@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..7b21e2433c28d8a019f3a95b096315516d52c06b GIT binary patch literal 12705 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 + +NS_ASSUME_NONNULL_BEGIN + +@interface BaseViewController : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Base/VC/BaseViewController.m b/keyBoard/Class/Base/VC/BaseViewController.m new file mode 100644 index 0000000..e736182 --- /dev/null +++ b/keyBoard/Class/Base/VC/BaseViewController.m @@ -0,0 +1,32 @@ +// +// BaseViewController.m +// keyBoard +// +// Created by Mac on 2025/11/7. +// + +#import "BaseViewController.h" + +@interface BaseViewController () + +@end + +@implementation BaseViewController + +- (void)viewDidLoad { + [super viewDidLoad]; + // Do any additional setup after loading the view. + self.view.backgroundColor = [UIColor whiteColor]; +} + +/* +#pragma mark - Navigation + +// In a storyboard-based application, you will often want to do a little preparation before navigation +- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { + // Get the new view controller using [segue destinationViewController]. + // Pass the selected object to the new view controller. +} +*/ + +@end diff --git a/keyBoard/Class/Home/V/HomeHeadView.m b/keyBoard/Class/Home/V/HomeHeadView.m index b2f57c8..a97db12 100644 --- a/keyBoard/Class/Home/V/HomeHeadView.m +++ b/keyBoard/Class/Home/V/HomeHeadView.m @@ -11,6 +11,8 @@ @interface HomeHeadView() +@property (nonatomic, strong) UIImageView *loveKeyImageView; + // 顶部会员卡图片 @property (nonatomic, strong) UIImageView *vipImageView; // 主/副标题 @@ -43,6 +45,7 @@ #pragma mark - UI - (void)setupViews { +// [self addSubview:self.loveKeyImageView]; [self addSubview:self.vipImageView]; [self addSubview:self.titleLabel]; [self addSubview:self.subTitleLabel]; @@ -58,6 +61,13 @@ make.width.mas_equalTo(217); make.height.mas_equalTo(166); }]; + +// [self.loveKeyImageView mas_makeConstraints:^(MASConstraintMaker *make) { +// make.top.equalTo(self.vipImageView.mas_centerY).offset(0); +// make.right.equalTo(self).offset(-16); +// make.width.mas_equalTo(335); +// make.height.mas_equalTo(117); +// }]; // 主标题 [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { @@ -82,7 +92,7 @@ make.top.equalTo(self.subTitleLabel.mas_bottom).offset(16); make.left.equalTo(self.mas_left).offset(16); make.right.equalTo(self.mas_right).offset(-16); - make.height.mas_equalTo(94); + make.height.mas_equalTo(80); }]; // 四个按钮等宽分布 @@ -128,7 +138,11 @@ @"Personalized\nKeyboard", @"Chat\nPersona", @"Emotional\nCounseling"]; - [self configureFeatureTitles:titles images:nil]; + NSArray *images = @[[UIImage imageNamed:@"home_ai_icon"], + [UIImage imageNamed:@"home_keyboard_icon"], + [UIImage imageNamed:@"home_chat_icon"], + [UIImage imageNamed:@"home_emotion_icon"]]; + [self configureFeatureTitles:titles images:images]; } #pragma mark - Public @@ -141,21 +155,6 @@ btn.textLabel.text = titles[i]; } UIImage *img = (i < images.count) ? images[i] : nil; - if (!img) { - // 生成一张柔和的渐变占位图 - CGSize s = btn.iconSize; - CGFloat cr = MIN(s.width, s.height) * 0.26; - UIColor *c1 = [UIColor colorWithHex:0xC9F7E9]; - UIColor *c2 = [UIColor colorWithHex:0xA6E6FF]; - if (i == 1) { c1 = [UIColor colorWithHex:0xD7E5FF]; c2 = [UIColor colorWithHex:0xBFD2FF]; } - if (i == 2) { c1 = [UIColor colorWithHex:0xEBD8FF]; c2 = [UIColor colorWithHex:0xDDBBFF]; } - if (i == 3) { c1 = [UIColor colorWithHex:0xD1F5DE]; c2 = [UIColor colorWithHex:0xB6EBCE]; } - img = [UIImage kb_gradientImageWithColors:@[c1, c2] - locations:nil - size:s - direction:KBGradientDirectionLeftTopToRightBottom - cornerRadius:cr]; - } btn.iconView.image = img; } } @@ -169,12 +168,19 @@ - (UIImageView *)vipImageView{ if (!_vipImageView) { _vipImageView = [[UIImageView alloc] init]; - _vipImageView.image = [UIImage imageNamed:@"home_vip_card"]; + _vipImageView.image = [UIImage imageNamed:@"home_topvip_icon"]; _vipImageView.contentMode = UIViewContentModeScaleAspectFit; - _vipImageView.backgroundColor = [UIColor redColor]; } return _vipImageView; } +- (UIImageView *)loveKeyImageView{ + if (!_loveKeyImageView) { + _loveKeyImageView = [[UIImageView alloc] init]; + _loveKeyImageView.image = [UIImage imageNamed:@"hoem_love_key"]; + _loveKeyImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _loveKeyImageView; +} - (UILabel *)titleLabel { if (!_titleLabel) { @@ -206,8 +212,8 @@ NSMutableArray *arr = [NSMutableArray arrayWithCapacity:4]; for (int i = 0; i < 4; i++) { KBTopImageButton *btn = [[KBTopImageButton alloc] init]; - btn.iconSize = CGSizeMake(46, 46); - btn.spacing = 5; + btn.iconSize = CGSizeMake(54, 44); + btn.spacing = 0; [self.featuresContainer addSubview:btn]; [arr addObject:btn]; } diff --git a/keyBoard/Class/Home/V/HomeHotCell.m b/keyBoard/Class/Home/V/HomeHotCell.m index 950316a..fa757c2 100644 --- a/keyBoard/Class/Home/V/HomeHotCell.m +++ b/keyBoard/Class/Home/V/HomeHotCell.m @@ -39,14 +39,14 @@ [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.rankLabel.mas_right).offset(12); make.centerY.equalTo(self.contentView); - make.width.height.mas_equalTo(52); + make.width.height.mas_equalTo(56); }]; [self.actionButton mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(self.contentView); make.right.equalTo(self.contentView).offset(-16); - make.width.mas_equalTo(64); - make.height.mas_equalTo(36); + make.width.mas_equalTo(56); + make.height.mas_equalTo(38); }]; [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { @@ -104,8 +104,8 @@ - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; - _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; - _titleLabel.textColor = [UIColor colorWithWhite:0.1 alpha:1]; + _titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + _titleLabel.textColor = [UIColor colorWithHex:0x1B1F1A]; } return _titleLabel; } @@ -113,9 +113,9 @@ - (UILabel *)subLabel { if (!_subLabel) { _subLabel = [[UILabel alloc] init]; - _subLabel.font = [UIFont systemFontOfSize:13]; - _subLabel.textColor = [UIColor colorWithWhite:0.5 alpha:1]; - _subLabel.numberOfLines = 1; + _subLabel.font = [UIFont systemFontOfSize:12]; + _subLabel.textColor = [UIColor colorWithHex:0x9A9A9A]; + _subLabel.numberOfLines = 2; } return _subLabel; } @@ -123,7 +123,7 @@ - (UIButton *)actionButton { if (!_actionButton) { _actionButton = [UIButton buttonWithType:UIButtonTypeCustom]; - _actionButton.layer.cornerRadius = 18; + _actionButton.layer.cornerRadius = 12; _actionButton.layer.masksToBounds = YES; _actionButton.titleLabel.font = [UIFont systemFontOfSize:20 weight:UIFontWeightBold]; } diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m index af6af3f..2a27572 100644 --- a/keyBoard/Class/Home/V/KBPanModalView.m +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -45,7 +45,8 @@ // 该背景色会被 HWPanModal 用来设置容器的 _contentView 背景色 // 参考 Pods/HWPanModal/Sources/View/PanModal/HWPanModalContainerView.m: adjustPanContainerBackgroundColor // 想要改变外层白色底(截图中 _contentView)的颜色,只需改这里即可 - self.backgroundColor = [UIColor colorWithHex:0xE8FFF4]; // 柔和的绿色 +// self.backgroundColor = [UIColor colorWithHex:0xE8FFF4]; // 柔和的绿色 + self.backgroundColor = [UIColor clearColor]; // HWBackgroundConfig *config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; // config.backgroundAlpha = 0; // [self.hw_dimmedView reloadConfig:config]; @@ -180,11 +181,11 @@ [self.leftBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.equalTo(self.secWhiteContentView); - make.bottom.equalTo(self.secWhiteContentView); +// make.bottom.equalTo(self.secWhiteContentView); }]; [self.rightBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.top.equalTo(self.secWhiteContentView); - make.bottom.equalTo(self.secWhiteContentView); +// make.bottom.equalTo(self.secWhiteContentView); }]; @@ -231,7 +232,7 @@ [self.topBar addSubview:self.underlineImageView]; // Masonry 约束 - CGFloat topPadding = 0; // 与顶部小指示器留点空间 + CGFloat topPadding = 12; // 与顶部小指示器留点空间 [self.topBar mas_makeConstraints:^(MASConstraintMaker *make) { make.left.right.equalTo(self.secWhiteContentView); make.top.equalTo(self.secWhiteContentView).offset(topPadding); @@ -259,14 +260,14 @@ [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.topBar.mas_bottom).offset(8); - make.left.right.equalTo(self.secWhiteContentView).inset(16); + make.left.right.equalTo(self.secWhiteContentView).inset(20); make.bottom.equalTo(self.secWhiteContentView); }]; [self.personImageView mas_makeConstraints:^(MASConstraintMaker *make) { // 仍按页面整体的左右边距定位,保持与改层级前的视觉一致 make.left.equalTo(self).offset(46); - make.bottom.equalTo(self.topBar.mas_top).offset(20); + make.bottom.equalTo(self.topBar.mas_top).offset(11); make.width.mas_equalTo(53); make.height.mas_equalTo(81); }]; @@ -283,7 +284,7 @@ #pragma mark - Action - (void)onTapTopButton:(UIButton *)sender { - [self switchToIndex:sender.tag animated:YES]; + [self switchToIndex:sender.tag animated:false]; // [self hw_panModalSetNeedsLayoutUpdate]; } @@ -318,7 +319,6 @@ // 添加目标 // [self addChildViewController:target]; [self.containerView addSubview:target.view]; - target.view.backgroundColor = [UIColor colorWithWhite:0.98 alpha:1]; [target.view mas_makeConstraints:^(MASConstraintMaker *make) { make.left.top.right.equalTo(self.containerView); make.bottom.equalTo(self.containerView).offset(-KB_TABBAR_HEIGHT); diff --git a/keyBoard/Class/Home/V/KBTopThreeView.m b/keyBoard/Class/Home/V/KBTopThreeView.m index 232ae77..be5fe95 100644 --- a/keyBoard/Class/Home/V/KBTopThreeView.m +++ b/keyBoard/Class/Home/V/KBTopThreeView.m @@ -43,7 +43,7 @@ [self.cardImageView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.avatarCircleView.mas_bottom).offset(-34); // 顶部悬浮重叠 make.left.right.equalTo(self); - make.height.mas_equalTo(KBFit(148)); + make.height.mas_equalTo(KBFit(158)); }]; @@ -129,6 +129,9 @@ @property (nonatomic, strong) KBTopThreeCardView *rightCard; /// 统一的底部加号按钮(移出卡片,放到 KBTopThreeView) @property (nonatomic, strong) UIButton *plusButton; +/// 左右卡片底部也有 plus 按钮 +@property (nonatomic, strong) UIButton *leftPlusButton; +@property (nonatomic, strong) UIButton *rightPlusButton; @end @implementation KBTopThreeView @@ -146,6 +149,8 @@ [self addSubview:self.centerCard]; [self addSubview:self.rightCard]; [self addSubview:self.plusButton]; + [self addSubview:self.leftPlusButton]; + [self addSubview:self.rightPlusButton]; // 横向均分布局 [self.centerCard mas_makeConstraints:^(MASConstraintMaker *make) { @@ -173,11 +178,25 @@ // 用 plusButton 来“撑起”本视图,且底部对齐 [self.plusButton mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.centerCard.mas_bottom).offset(12); - make.centerX.equalTo(self); - make.width.mas_equalTo(52); + make.centerX.equalTo(self); // 或改为 equalTo(self.centerCard) 以严格与中卡居中 + make.width.mas_equalTo(60); make.height.mas_equalTo(28); make.bottom.equalTo(self).offset(-8); }]; + + // 左右 plus 按钮,同样底部对齐,用它们一起撑起视图 + [self.leftPlusButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.leftCard.mas_bottom).offset(12); + make.centerX.equalTo(self.leftCard); + make.width.height.equalTo(self.plusButton); + make.bottom.equalTo(self).offset(-8); + }]; + [self.rightPlusButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.rightCard.mas_bottom).offset(12); + make.centerX.equalTo(self.rightCard); + make.width.height.equalTo(self.plusButton); + make.bottom.equalTo(self).offset(-8); + }]; } - (void)configWithItems:(NSArray *)items { @@ -214,4 +233,30 @@ return _plusButton; } +- (UIButton *)leftPlusButton { + if (!_leftPlusButton) { + _leftPlusButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_leftPlusButton setTitle:@"+" forState:UIControlStateNormal]; + [_leftPlusButton setTitleColor:[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] forState:UIControlStateNormal]; + _leftPlusButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _leftPlusButton.layer.cornerRadius = 14.0; + _leftPlusButton.layer.masksToBounds = YES; + _leftPlusButton.backgroundColor = [[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] colorWithAlphaComponent:0.15]; + } + return _leftPlusButton; +} + +- (UIButton *)rightPlusButton { + if (!_rightPlusButton) { + _rightPlusButton = [UIButton buttonWithType:UIButtonTypeCustom]; + [_rightPlusButton setTitle:@"+" forState:UIControlStateNormal]; + [_rightPlusButton setTitleColor:[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] forState:UIControlStateNormal]; + _rightPlusButton.titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _rightPlusButton.layer.cornerRadius = 14.0; + _rightPlusButton.layer.masksToBounds = YES; + _rightPlusButton.backgroundColor = [[UIColor colorWithRed:0.20 green:0.65 blue:0.50 alpha:1.0] colorWithAlphaComponent:0.15]; + } + return _rightPlusButton; +} + @end diff --git a/keyBoard/Class/Home/VC/HomeHotVC.h b/keyBoard/Class/Home/VC/HomeHotVC.h index 2d43462..37b2ab3 100644 --- a/keyBoard/Class/Home/VC/HomeHotVC.h +++ b/keyBoard/Class/Home/VC/HomeHotVC.h @@ -9,7 +9,7 @@ NS_ASSUME_NONNULL_BEGIN -@interface HomeHotVC : UIViewController +@interface HomeHotVC : BaseViewController // 列表 @property (nonatomic, strong) BaseTableView *tableView; @end diff --git a/keyBoard/Class/Home/VC/HomeHotVC.m b/keyBoard/Class/Home/VC/HomeHotVC.m index 402ec42..3b133df 100644 --- a/keyBoard/Class/Home/VC/HomeHotVC.m +++ b/keyBoard/Class/Home/VC/HomeHotVC.m @@ -29,8 +29,6 @@ - (void)viewDidLoad { [super viewDidLoad]; - self.view.backgroundColor = [UIColor whiteColor]; - // 构建数据(演示) self.dataSource = @[ @{@"rank":@4, @"title":@"Ambiguous", @"sub":@"Be Neither Too Close Nor Too Distant, Want To ...", @"joined":@NO}, diff --git a/keyBoard/Class/Home/VC/HomeRankVC.h b/keyBoard/Class/Home/VC/HomeRankVC.h index 2e81a51..c9a3963 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.h +++ b/keyBoard/Class/Home/VC/HomeRankVC.h @@ -10,7 +10,7 @@ #import "JXCategoryListContainerView.h" NS_ASSUME_NONNULL_BEGIN -@interface HomeRankVC : UIViewController +@interface HomeRankVC : BaseViewController // 列表 @property (nonatomic, strong) UICollectionView *collectionView; @end diff --git a/keyBoard/Class/Home/VC/HomeRankVC.m b/keyBoard/Class/Home/VC/HomeRankVC.m index c7476f0..e0c8c88 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.m +++ b/keyBoard/Class/Home/VC/HomeRankVC.m @@ -21,7 +21,6 @@ - (void)viewDidLoad { [super viewDidLoad]; // Do any additional setup after loading the view. - self.view.backgroundColor = [UIColor grayColor]; self.titles = @[@"螃蟹啊斯柯达积分卡", @"小龙虾", @"苹果", @"胡萝卜", @"葡萄", @"西瓜"]; [self.view addSubview:self.myCategoryView]; [self.view addSubview:self.listContainerView]; diff --git a/keyBoard/KeyBoardPrefixHeader.pch b/keyBoard/KeyBoardPrefixHeader.pch index 967257e..7a7c720 100644 --- a/keyBoard/KeyBoardPrefixHeader.pch +++ b/keyBoard/KeyBoardPrefixHeader.pch @@ -33,6 +33,8 @@ #import "BaseNavigationController.h" #import "BaseTableView.h" #import "BaseCell.h" +#import "BaseViewController.h" + #import "KBLocalizationManager.h" // 全局多语言封装 From 50dd53b0c0d18fe38363244de7cf07ee86172de8 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 21:05:25 +0800 Subject: [PATCH 26/47] 1 --- keyBoard/Class/Home/V/HomeHotCell.m | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/keyBoard/Class/Home/V/HomeHotCell.m b/keyBoard/Class/Home/V/HomeHotCell.m index fa757c2..f09890f 100644 --- a/keyBoard/Class/Home/V/HomeHotCell.m +++ b/keyBoard/Class/Home/V/HomeHotCell.m @@ -8,6 +8,7 @@ @interface HomeHotCell() // 左侧序号 @property (nonatomic, strong) UILabel *rankLabel; +@property (nonatomic, strong) UIView *yuanView; // 左侧圆形头像占位 @property (nonatomic, strong) UIView *avatarView; // 标题 @@ -24,6 +25,7 @@ [super setupUI]; // 添加控件 + [self.contentView addSubview:self.yuanView]; [self.contentView addSubview:self.rankLabel]; [self.contentView addSubview:self.avatarView]; [self.contentView addSubview:self.titleLabel]; @@ -35,6 +37,11 @@ make.left.equalTo(self.contentView).offset(16); make.centerY.equalTo(self.contentView); }]; + [self.yuanView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self.rankLabel).offset(2); + make.bottom.equalTo(self.rankLabel).offset(-3); + make.width.height.mas_equalTo(6); + }]; [self.avatarView mas_makeConstraints:^(MASConstraintMaker *make) { make.left.equalTo(self.rankLabel.mas_right).offset(12); @@ -85,8 +92,8 @@ - (UILabel *)rankLabel { if (!_rankLabel) { _rankLabel = [[UILabel alloc] init]; - _rankLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; - _rankLabel.textColor = [UIColor colorWithRed:0.15 green:0.55 blue:0.45 alpha:1.0]; + _rankLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _rankLabel.textColor = [UIColor colorWithHex:0x1B1F1A]; } return _rankLabel; } @@ -95,12 +102,22 @@ if (!_avatarView) { _avatarView = [[UIView alloc] init]; _avatarView.backgroundColor = [UIColor colorWithWhite:0.9 alpha:1]; - _avatarView.layer.cornerRadius = 26; + _avatarView.layer.cornerRadius = 28; _avatarView.layer.masksToBounds = YES; } return _avatarView; } +- (UIView *)yuanView { + if (!_yuanView) { + _yuanView = [[UIView alloc] init]; + _yuanView.backgroundColor = [UIColor colorWithHex:0x26D3AA]; + _yuanView.layer.cornerRadius = 3; + _yuanView.layer.masksToBounds = YES; + } + return _yuanView; +} + - (UILabel *)titleLabel { if (!_titleLabel) { _titleLabel = [[UILabel alloc] init]; From 96cd32ed9920635f83746aab121c8b273015a000 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 21:37:31 +0800 Subject: [PATCH 27/47] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E7=AE=AD=E5=A4=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home_down_arrow.imageset/Contents.json | 21 +++++ .../home_down_arrow.png | Bin 0 -> 852 bytes .../Home/home_up_arrow.imageset/Contents.json | 21 +++++ .../home_up_arrow.imageset/home_up_arrow.png | Bin 0 -> 773 bytes keyBoard/Class/Home/V/KBPanModalView.m | 81 +++++++++++++----- 5 files changed, 100 insertions(+), 23 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Home/home_down_arrow.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_down_arrow.imageset/home_down_arrow.png create mode 100644 keyBoard/Assets.xcassets/Home/home_up_arrow.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_up_arrow.imageset/home_up_arrow.png diff --git a/keyBoard/Assets.xcassets/Home/home_down_arrow.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_down_arrow.imageset/Contents.json new file mode 100644 index 0000000..d5f9251 --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_down_arrow.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "home_down_arrow.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_down_arrow.imageset/home_down_arrow.png b/keyBoard/Assets.xcassets/Home/home_down_arrow.imageset/home_down_arrow.png new file mode 100644 index 0000000000000000000000000000000000000000..60c653c0b6d2170bd14438f527716062eabc1817 GIT binary patch literal 852 zcmV-a1FQUrP)E=T00001b5ch_0Itp) z=>Px#1am@3R0s$N2z&@+hyVZr{z*hZRA_ z?g1oPYro&`zu-S748vz3#1nuU04pKHgyJ|}0vMm%d(c`>`u+aulh*1?7=|MuL;zrT z^3j~)IR2fgzr>4_(!aaAJ2bG)tJrS0-FCaZB%)EyEeXYOya&)NdDdJ?x%i5rQyV@3 zcrN(T0AM4OQVYg2pF5q-&nSvc%l%V{qG+s?`UPNCA{1I{p8#OD+YMW-)*Is+27rT7 z>e2JObybVDB@Dw65lst9_AgrNwbt7AJa0|e527d<6Va3@x^X{eItQo15~Y;ydEVSy zpwm0H+ikbg=@<`im`N#L>lAI_OT%0U;rDvIBzy5ptRWRWW$xmkuKt|1k|n3wwASnQ z_xH!Vjn5Tph@$A8h=Qj5yxZ-DLWqFlOYZ+I6>Dh9&uPg{nKnuQ%x`aRea^GlV&Uj# zA;jX;J9(rd-t-z@7GWjUP_>^6M!Yk!t;BZSPGSv~rF}Raj}L>vU}G*YM!XMyf9*@~ zDzOGzKOc|BMXS~N&TJ(~TC!|ACl-Tg0<0ZNu4!$Az)U?1(qx_OeqfL|eBKSVlZbdt1PGuJhZl zXxGa|ydo?|$wz|2NGPTJ=CZhq=%Lm+arLF^DEXoFWDcpma>R2UCG#Sl&D+%3&o)#s zN|r@DbHrN4mx*{q*5E`un-;Q>Qa)5s+76>+>CrEHTx`nEmZuU{qohm3E=T00001b5ch_0Itp) z=>Px#1am@3R0s$N2z&@+hyVZruSrBfRA_w45=va~x-DVojZ!t#G+)@i95)-0zy_&diFE^+d^brA|w` zwOK_j0bolh^;PE-MX_sZx|P`^NtTq-y$qL}^CRcncO2*V>$NC~#>3&zd$dbGQ0vmx zGONgC&N+8&+dk9{5T?ILZf1E|mM^o}?4-78MYD=rUPQ_6CX>lU=JV4ueIC~4Q_|$A$E_G#s=UTII94{!PL04SrO0hXP z6-Dt>0hu1uDk^IUh+_}e0$;CU^o zHl&p9I?1yNTmrzMEKA?AtWPk|5;p07#Cs-1E-&Jot6gN5En$;%BHkKu<@fJKJQXh6 z+y$$aHh{3}h!;F*JODEhF95KT7~U@8sdC8}^G)3Mc3IkW5ziQxx>8JJ4_nV0vwd-? ztF}kg?}(>xTX Date: Fri, 7 Nov 2025 21:57:42 +0800 Subject: [PATCH 28/47] =?UTF-8?q?=E5=A4=84=E7=90=86=E6=89=80=E6=9C=89UI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../home_item_normal.imageset/Contents.json | 22 ++++++++++++++ .../home_item_normal@2x.png | Bin 0 -> 1036 bytes .../home_item_normal@3x.png | Bin 0 -> 1876 bytes .../home_item_selected.imageset/Contents.json | 22 ++++++++++++++ .../home_item_selected@2x.png | Bin 0 -> 1090 bytes .../home_item_selected@3x.png | Bin 0 -> 1980 bytes keyBoard/Class/Home/V/HomeRankCardCell.m | 27 +++++++++--------- keyBoard/Class/Home/VC/HomeRankContentVC.m | 2 +- keyBoard/Class/Home/VC/HomeRankVC.m | 10 +++++-- 9 files changed, 66 insertions(+), 17 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Home/home_item_normal.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_item_normal.imageset/home_item_normal@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_item_normal.imageset/home_item_normal@3x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_item_selected.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_item_selected.imageset/home_item_selected@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_item_selected.imageset/home_item_selected@3x.png diff --git a/keyBoard/Assets.xcassets/Home/home_item_normal.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_item_normal.imageset/Contents.json new file mode 100644 index 0000000..94cd72b --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_item_normal.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_item_normal@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_item_normal@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_item_normal.imageset/home_item_normal@2x.png b/keyBoard/Assets.xcassets/Home/home_item_normal.imageset/home_item_normal@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..542f6f42eb04883cd8cfddcc96166d999671b759 GIT binary patch literal 1036 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 O0000 Date: Fri, 7 Nov 2025 22:22:41 +0800 Subject: [PATCH 29/47] 2 --- keyBoard.xcodeproj/project.pbxproj | 62 +++++ keyBoard/Class/Home/VC/HomeHotVC.m | 3 +- keyBoard/Class/Search/V/KBSearchBarView.h | 31 +++ keyBoard/Class/Search/V/KBSearchBarView.m | 124 ++++++++++ .../Class/Search/V/KBSearchSectionHeader.h | 29 +++ .../Class/Search/V/KBSearchSectionHeader.m | 72 ++++++ keyBoard/Class/Search/V/KBSkinCardCell.h | 17 ++ keyBoard/Class/Search/V/KBSkinCardCell.m | 86 +++++++ keyBoard/Class/Search/V/KBTagCell.h | 19 ++ keyBoard/Class/Search/V/KBTagCell.m | 50 ++++ keyBoard/Class/Search/VC/KBSearchVC.h | 21 ++ keyBoard/Class/Search/VC/KBSearchVC.m | 218 ++++++++++++++++++ 12 files changed, 731 insertions(+), 1 deletion(-) create mode 100644 keyBoard/Class/Search/V/KBSearchBarView.h create mode 100644 keyBoard/Class/Search/V/KBSearchBarView.m create mode 100644 keyBoard/Class/Search/V/KBSearchSectionHeader.h create mode 100644 keyBoard/Class/Search/V/KBSearchSectionHeader.m create mode 100644 keyBoard/Class/Search/V/KBSkinCardCell.h create mode 100644 keyBoard/Class/Search/V/KBSkinCardCell.m create mode 100644 keyBoard/Class/Search/V/KBTagCell.h create mode 100644 keyBoard/Class/Search/V/KBTagCell.m create mode 100644 keyBoard/Class/Search/VC/KBSearchVC.h create mode 100644 keyBoard/Class/Search/VC/KBSearchVC.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 4da11d3..11d8623 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -53,6 +53,11 @@ 047C655C2EBCD0F80035E841 /* UIView+KBShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C655B2EBCD08E0035E841 /* UIView+KBShadow.m */; }; 047C655E2EBCD5B20035E841 /* UIImage+KBColor.m in Sources */ = {isa = PBXBuildFile; fileRef = 047C655D2EBCD5B20035E841 /* UIImage+KBColor.m */; }; 048908BC2EBE1FCB00FABA60 /* BaseViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908BB2EBE1FCB00FABA60 /* BaseViewController.m */; }; + 048908C32EBE32B800FABA60 /* KBSearchVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908C22EBE32B800FABA60 /* KBSearchVC.m */; }; + 048908CC2EBE373500FABA60 /* KBSearchBarView.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908C52EBE373500FABA60 /* KBSearchBarView.m */; }; + 048908CD2EBE373500FABA60 /* KBSearchSectionHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908C72EBE373500FABA60 /* KBSearchSectionHeader.m */; }; + 048908CE2EBE373500FABA60 /* KBSkinCardCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908C92EBE373500FABA60 /* KBSkinCardCell.m */; }; + 048908CF2EBE373500FABA60 /* KBTagCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908CB2EBE373500FABA60 /* KBTagCell.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -197,6 +202,16 @@ 047C655D2EBCD5B20035E841 /* UIImage+KBColor.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIImage+KBColor.m"; sourceTree = ""; }; 048908BA2EBE1FCB00FABA60 /* BaseViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = BaseViewController.h; sourceTree = ""; }; 048908BB2EBE1FCB00FABA60 /* BaseViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = BaseViewController.m; sourceTree = ""; }; + 048908C12EBE32B800FABA60 /* KBSearchVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSearchVC.h; sourceTree = ""; }; + 048908C22EBE32B800FABA60 /* KBSearchVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSearchVC.m; sourceTree = ""; }; + 048908C42EBE373500FABA60 /* KBSearchBarView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSearchBarView.h; sourceTree = ""; }; + 048908C52EBE373500FABA60 /* KBSearchBarView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSearchBarView.m; sourceTree = ""; }; + 048908C62EBE373500FABA60 /* KBSearchSectionHeader.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSearchSectionHeader.h; sourceTree = ""; }; + 048908C72EBE373500FABA60 /* KBSearchSectionHeader.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSearchSectionHeader.m; sourceTree = ""; }; + 048908C82EBE373500FABA60 /* KBSkinCardCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinCardCell.h; sourceTree = ""; }; + 048908C92EBE373500FABA60 /* KBSkinCardCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinCardCell.m; sourceTree = ""; }; + 048908CA2EBE373500FABA60 /* KBTagCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBTagCell.h; sourceTree = ""; }; + 048908CB2EBE373500FABA60 /* KBTagCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBTagCell.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -475,6 +490,47 @@ path = Common; sourceTree = ""; }; + 048908BD2EBE329D00FABA60 /* M */ = { + isa = PBXGroup; + children = ( + ); + path = M; + sourceTree = ""; + }; + 048908BE2EBE329D00FABA60 /* V */ = { + isa = PBXGroup; + children = ( + 048908C42EBE373500FABA60 /* KBSearchBarView.h */, + 048908C52EBE373500FABA60 /* KBSearchBarView.m */, + 048908C62EBE373500FABA60 /* KBSearchSectionHeader.h */, + 048908C72EBE373500FABA60 /* KBSearchSectionHeader.m */, + 048908C82EBE373500FABA60 /* KBSkinCardCell.h */, + 048908C92EBE373500FABA60 /* KBSkinCardCell.m */, + 048908CA2EBE373500FABA60 /* KBTagCell.h */, + 048908CB2EBE373500FABA60 /* KBTagCell.m */, + ); + path = V; + sourceTree = ""; + }; + 048908BF2EBE329D00FABA60 /* VC */ = { + isa = PBXGroup; + children = ( + 048908C12EBE32B800FABA60 /* KBSearchVC.h */, + 048908C22EBE32B800FABA60 /* KBSearchVC.m */, + ); + path = VC; + sourceTree = ""; + }; + 048908C02EBE329D00FABA60 /* Search */ = { + isa = PBXGroup; + children = ( + 048908BD2EBE329D00FABA60 /* M */, + 048908BE2EBE329D00FABA60 /* V */, + 048908BF2EBE329D00FABA60 /* VC */, + ); + path = Search; + sourceTree = ""; + }; 04A9FE122EB4D0D20020DB6D /* Manager */ = { isa = PBXGroup; children = ( @@ -699,6 +755,7 @@ 04FC95BF2EB1E3B1007BD342 /* Class */ = { isa = PBXGroup; children = ( + 048908C02EBE329D00FABA60 /* Search */, 048908B92EBDC11200FABA60 /* Common */, 04FC95B62EB1E3B1007BD342 /* Home */, 047C654D2EBCBA880035E841 /* Shop */, @@ -1184,6 +1241,7 @@ 04FC95C92EB1E4C9007BD342 /* BaseNavigationController.m in Sources */, 047C65102EBCA8DD0035E841 /* HomeRankContentVC.m in Sources */, 047C655C2EBCD0F80035E841 /* UIView+KBShadow.m in Sources */, + 048908C32EBE32B800FABA60 /* KBSearchVC.m in Sources */, 047C655E2EBCD5B20035E841 /* UIImage+KBColor.m in Sources */, 04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */, 04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */, @@ -1202,6 +1260,10 @@ 047C65502EBCBA9E0035E841 /* KBShopVC.m in Sources */, 0477BE042EBC83130055D639 /* HomeMainVC.m in Sources */, 0477BDFD2EBC6A170055D639 /* HomeHotVC.m in Sources */, + 048908CC2EBE373500FABA60 /* KBSearchBarView.m in Sources */, + 048908CD2EBE373500FABA60 /* KBSearchSectionHeader.m in Sources */, + 048908CE2EBE373500FABA60 /* KBSkinCardCell.m in Sources */, + 048908CF2EBE373500FABA60 /* KBTagCell.m in Sources */, 0477BEA22EBCF0000055D639 /* KBTopImageButton.m in Sources */, A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */, A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */, diff --git a/keyBoard/Class/Home/VC/HomeHotVC.m b/keyBoard/Class/Home/VC/HomeHotVC.m index 3b133df..bed2000 100644 --- a/keyBoard/Class/Home/VC/HomeHotVC.m +++ b/keyBoard/Class/Home/VC/HomeHotVC.m @@ -10,6 +10,7 @@ #import "KBTopThreeView.h" #import "HomeHotCell.h" #import "HomeRankVC.h" +#import "KBSearchVC.h" #import @interface HomeHotVC () @@ -80,7 +81,7 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; - HomeRankVC *vc = [[HomeRankVC alloc] init]; + KBSearchVC *vc = [[KBSearchVC alloc] init]; // [self.navigationController pushViewController:vc animated:true]; UINavigationController *nav = KB_CURRENT_NAV; [nav pushViewController:vc animated:true]; diff --git a/keyBoard/Class/Search/V/KBSearchBarView.h b/keyBoard/Class/Search/V/KBSearchBarView.h new file mode 100644 index 0000000..da1750e --- /dev/null +++ b/keyBoard/Class/Search/V/KBSearchBarView.h @@ -0,0 +1,31 @@ +// +// KBSearchBarView.h +// keyBoard +// +// 顶部搜索栏,独立封装的 View。 +// - 左侧圆角输入框,右侧搜索按钮 +// - 通过 block 将搜索事件回传给 VC +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBSearchBarView : UIView + +/// 输入框 +@property (nonatomic, strong, readonly) UITextField *textField; + +/// 点击键盘 return 或右侧按钮时回调 +@property (nonatomic, copy) void(^onSearch)(NSString *keyword); + +/// 占位文字,默认“Themes” +@property (nonatomic, copy) NSString *placeholder; + +/// 外部可设置关键字 +- (void)updateKeyword:(NSString *)keyword; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Search/V/KBSearchBarView.m b/keyBoard/Class/Search/V/KBSearchBarView.m new file mode 100644 index 0000000..3d9baf7 --- /dev/null +++ b/keyBoard/Class/Search/V/KBSearchBarView.m @@ -0,0 +1,124 @@ +// +// KBSearchBarView.m +// keyBoard +// +// 顶部搜索栏封装。 +// + +#import "KBSearchBarView.h" + +@interface KBSearchBarView () +@property (nonatomic, strong) UIView *bgView; // 圆角背景 +@property (nonatomic, strong, readwrite) UITextField *textField; // 输入框 +@property (nonatomic, strong) UIButton *searchButton; // 右侧搜索按钮 +@end + +@implementation KBSearchBarView + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self setupUI]; + } + return self; +} + +- (void)setupUI { + // 添加子视图 + [self addSubview:self.bgView]; + [self.bgView addSubview:self.textField]; + [self.bgView addSubview:self.searchButton]; + + // layout - Masonry + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self); + make.height.mas_equalTo(40); + }]; + + [self.searchButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.bgView); + make.right.equalTo(self.bgView).offset(-8); + make.width.mas_equalTo(84); + make.height.mas_equalTo(32); + }]; + + [self.textField mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.bgView).offset(12); + make.centerY.equalTo(self.bgView); + make.right.equalTo(self.searchButton.mas_left).offset(-8); + make.height.mas_equalTo(30); + }]; +} + +#pragma mark - Action + +- (void)searchButtonTapped { + NSString *kw = self.textField.text ?: @""; + if (self.onSearch) { self.onSearch(kw); } +} + +- (BOOL)textFieldShouldReturn:(UITextField *)textField { + [textField resignFirstResponder]; + if (self.onSearch) { self.onSearch(textField.text ?: @""); } + return YES; +} + +- (void)updateKeyword:(NSString *)keyword { + self.textField.text = keyword ?: @""; +} + +#pragma mark - Lazy + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + // 淡灰色背景 + 圆角 + _bgView.backgroundColor = [UIColor colorWithWhite:0.95 alpha:1.0]; + _bgView.layer.cornerRadius = 20; + _bgView.layer.masksToBounds = YES; + } + return _bgView; +} + +- (UITextField *)textField { + if (!_textField) { + _textField = [[UITextField alloc] init]; + _textField.delegate = self; + _textField.font = [UIFont systemFontOfSize:15]; + _textField.textColor = [UIColor colorWithHex:0x1B1F1A]; + _textField.clearButtonMode = UITextFieldViewModeWhileEditing; + _textField.returnKeyType = UIReturnKeySearch; + _textField.placeholder = @"Themes"; // 默认占位 + + // 左侧占位图标 + UIView *pad = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 8, 8)]; + _textField.leftView = [[UIView alloc] initWithFrame:CGRectMake(0, 0, 6, 1)]; + _textField.leftViewMode = UITextFieldViewModeAlways; + (void)pad; // 保留变量避免未使用告警 + } + return _textField; +} + +- (UIButton *)searchButton { + if (!_searchButton) { + _searchButton = [UIButton buttonWithType:UIButtonTypeSystem]; + _searchButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + [_searchButton setTitle:@"Search" forState:UIControlStateNormal]; + // 绿色样式 + [_searchButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + _searchButton.backgroundColor = [UIColor colorWithRed:0.15 green:0.72 blue:0.62 alpha:1.0]; + _searchButton.layer.cornerRadius = 16; + _searchButton.layer.masksToBounds = YES; + [_searchButton addTarget:self action:@selector(searchButtonTapped) forControlEvents:UIControlEventTouchUpInside]; + } + return _searchButton; +} + +#pragma mark - Public + +- (void)setPlaceholder:(NSString *)placeholder { + _placeholder = [placeholder copy]; + self.textField.placeholder = placeholder; +} + +@end + diff --git a/keyBoard/Class/Search/V/KBSearchSectionHeader.h b/keyBoard/Class/Search/V/KBSearchSectionHeader.h new file mode 100644 index 0000000..4faea23 --- /dev/null +++ b/keyBoard/Class/Search/V/KBSearchSectionHeader.h @@ -0,0 +1,29 @@ +// +// KBSearchSectionHeader.h +// keyBoard +// +// 通用区头:左侧标题,右侧可选垃圾桶按钮。 +// 用于“历史搜索”和“推荐皮肤”两个 section。 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBSearchSectionHeader : UICollectionReusableView + +/// 标题 +@property (nonatomic, strong, readonly) UILabel *titleLabel; +/// 右侧垃圾桶按钮(仅历史搜索使用) +@property (nonatomic, strong, readonly) UIButton *trashButton; + +/// 配置标题与是否显示垃圾桶 +- (void)configWithTitle:(NSString *)title showTrash:(BOOL)showTrash; + +/// 清除按钮点击回调 +@property (nonatomic, copy) void(^onTapTrash)(void); + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Search/V/KBSearchSectionHeader.m b/keyBoard/Class/Search/V/KBSearchSectionHeader.m new file mode 100644 index 0000000..792f27f --- /dev/null +++ b/keyBoard/Class/Search/V/KBSearchSectionHeader.m @@ -0,0 +1,72 @@ +// +// KBSearchSectionHeader.m +// keyBoard +// + +#import "KBSearchSectionHeader.h" + +@interface KBSearchSectionHeader () +@property (nonatomic, strong, readwrite) UILabel *titleLabel; +@property (nonatomic, strong, readwrite) UIButton *trashButton; +@end + +@implementation KBSearchSectionHeader + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + [self setupUI]; + } + return self; +} + +- (void)setupUI { + self.backgroundColor = [UIColor whiteColor]; + + [self addSubview:self.titleLabel]; + [self addSubview:self.trashButton]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self).offset(16); + make.centerY.equalTo(self); + make.right.lessThanOrEqualTo(self.trashButton.mas_left).offset(-8); + }]; + + [self.trashButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self); + make.right.equalTo(self).offset(-16); + make.width.height.mas_equalTo(24); + }]; +} + +- (void)tapTrash { + if (self.onTapTrash) { self.onTapTrash(); } +} + +- (void)configWithTitle:(NSString *)title showTrash:(BOOL)showTrash { + self.titleLabel.text = title; + self.trashButton.hidden = !showTrash; +} + +#pragma mark - Lazy + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _titleLabel.textColor = [UIColor colorWithHex:0x1B1F1A]; + } + return _titleLabel; +} + +- (UIButton *)trashButton { + if (!_trashButton) { + _trashButton = [UIButton buttonWithType:UIButtonTypeSystem]; + [_trashButton setImage:[UIImage systemImageNamed:@"trash"] forState:UIControlStateNormal]; + _trashButton.tintColor = [UIColor colorWithHex:0x9A9A9A]; + [_trashButton addTarget:self action:@selector(tapTrash) forControlEvents:UIControlEventTouchUpInside]; + } + return _trashButton; +} + +@end + diff --git a/keyBoard/Class/Search/V/KBSkinCardCell.h b/keyBoard/Class/Search/V/KBSkinCardCell.h new file mode 100644 index 0000000..f475e35 --- /dev/null +++ b/keyBoard/Class/Search/V/KBSkinCardCell.h @@ -0,0 +1,17 @@ +// +// KBSkinCardCell.h +// keyBoard +// +// 推荐皮肤 - 简单卡片 cell。 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBSkinCardCell : UICollectionViewCell +- (void)configWithTitle:(NSString *)title imageURL:(nullable NSString *)url price:(NSString *)price; +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Search/V/KBSkinCardCell.m b/keyBoard/Class/Search/V/KBSkinCardCell.m new file mode 100644 index 0000000..c1238b3 --- /dev/null +++ b/keyBoard/Class/Search/V/KBSkinCardCell.m @@ -0,0 +1,86 @@ +// +// KBSkinCardCell.m +// keyBoard +// + +#import "KBSkinCardCell.h" + +@interface KBSkinCardCell () +@property (nonatomic, strong) UIImageView *coverView; // 封面 +@property (nonatomic, strong) UILabel *titleLabel; // 标题 +@property (nonatomic, strong) UILabel *priceLabel; // 价格 +@end + +@implementation KBSkinCardCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.contentView.backgroundColor = [UIColor whiteColor]; + self.contentView.layer.cornerRadius = 12; + self.contentView.layer.masksToBounds = YES; + self.contentView.layer.shadowColor = [UIColor colorWithWhite:0 alpha:0.06].CGColor; + self.contentView.layer.shadowOpacity = 1; + self.contentView.layer.shadowOffset = CGSizeMake(0, 2); + + [self.contentView addSubview:self.coverView]; + [self.contentView addSubview:self.titleLabel]; + [self.contentView addSubview:self.priceLabel]; + + [self.coverView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.equalTo(self.contentView); + make.height.equalTo(self.contentView.mas_width).multipliedBy(0.75); // 4:3 + }]; + + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.contentView).offset(12); + make.right.equalTo(self.contentView).offset(-12); + make.top.equalTo(self.coverView.mas_bottom).offset(8); + }]; + + [self.priceLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.titleLabel); + make.bottom.equalTo(self.contentView).offset(-10); + }]; + } + return self; +} + +- (void)configWithTitle:(NSString *)title imageURL:(NSString *)url price:(NSString *)price { + self.titleLabel.text = title.length ? title : @"Dopamine"; + self.priceLabel.text = price.length ? price : @"20"; + // 简化:本地展示占位色,无网络图 + self.coverView.backgroundColor = [UIColor colorWithWhite:0.92 alpha:1.0]; +} + +#pragma mark - Lazy + +- (UIImageView *)coverView { + if (!_coverView) { + _coverView = [[UIImageView alloc] init]; + _coverView.contentMode = UIViewContentModeScaleAspectFill; + _coverView.clipsToBounds = YES; + _coverView.backgroundColor = [UIColor colorWithWhite:0.94 alpha:1.0]; + } + return _coverView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; + _titleLabel.textColor = [UIColor colorWithHex:0x1B1F1A]; + } + return _titleLabel; +} + +- (UILabel *)priceLabel { + if (!_priceLabel) { + _priceLabel = [[UILabel alloc] init]; + _priceLabel.font = [UIFont systemFontOfSize:14]; + _priceLabel.textColor = [UIColor colorWithRed:0.15 green:0.72 blue:0.62 alpha:1.0]; + } + return _priceLabel; +} + +@end + diff --git a/keyBoard/Class/Search/V/KBTagCell.h b/keyBoard/Class/Search/V/KBTagCell.h new file mode 100644 index 0000000..372b864 --- /dev/null +++ b/keyBoard/Class/Search/V/KBTagCell.h @@ -0,0 +1,19 @@ +// +// KBTagCell.h +// keyBoard +// +// 历史搜索 - 标签样式 cell。 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBTagCell : UICollectionViewCell +- (void)config:(NSString *)text; +/// 根据文案计算自适应宽度(外部布局用) ++ (CGSize)sizeForText:(NSString *)text; +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Search/V/KBTagCell.m b/keyBoard/Class/Search/V/KBTagCell.m new file mode 100644 index 0000000..2838baf --- /dev/null +++ b/keyBoard/Class/Search/V/KBTagCell.m @@ -0,0 +1,50 @@ +// +// KBTagCell.m +// keyBoard +// + +#import "KBTagCell.h" + +@interface KBTagCell () +@property (nonatomic, strong) UILabel *titleLabel; +@end + +@implementation KBTagCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.contentView.backgroundColor = [UIColor colorWithWhite:0.96 alpha:1.0]; + self.contentView.layer.cornerRadius = 16; + self.contentView.layer.masksToBounds = YES; + [self.contentView addSubview:self.titleLabel]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.contentView).insets(UIEdgeInsetsMake(6, 12, 6, 12)); + }]; + } + return self; +} + +- (void)config:(NSString *)text { + self.titleLabel.text = text ?: @""; +} + ++ (CGSize)sizeForText:(NSString *)text { + if (text.length == 0) { return CGSizeMake(40, 32); } + CGSize s = [text sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]}]; + // 两侧内边距 12 + 12,高度固定 32 + return CGSizeMake(ceil(s.width) + 24, 32); +} + +#pragma mark - Lazy + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [UIColor colorWithHex:0x1B1F1A]; + } + return _titleLabel; +} + +@end + diff --git a/keyBoard/Class/Search/VC/KBSearchVC.h b/keyBoard/Class/Search/VC/KBSearchVC.h new file mode 100644 index 0000000..149f133 --- /dev/null +++ b/keyBoard/Class/Search/VC/KBSearchVC.h @@ -0,0 +1,21 @@ +// +// KBSearchVC.h +// keyBoard +// +// Created by Mac on 2025/11/7. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 搜索页:顶部搜索视图 + 底部集合列表 +/// 说明: +/// - 顶部搜索栏封装为单独 View(KBSearchBarView) +/// - 底部使用 `UICollectionView` 展示:历史搜索(标签流式)/ 推荐皮肤(两列卡片) +/// - 当历史记录为空时,不展示“历史搜索”标题与右侧垃圾桶 +@interface KBSearchVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Search/VC/KBSearchVC.m b/keyBoard/Class/Search/VC/KBSearchVC.m new file mode 100644 index 0000000..54dabb5 --- /dev/null +++ b/keyBoard/Class/Search/VC/KBSearchVC.m @@ -0,0 +1,218 @@ +// +// KBSearchVC.m +// keyBoard +// +// Created by Mac on 2025/11/7. +// + +#import "KBSearchVC.h" +#import "KBSearchBarView.h" +#import "KBSearchSectionHeader.h" +#import "KBTagCell.h" +#import "KBSkinCardCell.h" + +static NSString * const kTagCellId = @"KBTagCell"; +static NSString * const kSkinCellId = @"KBSkinCardCell"; +static NSString * const kHeaderId = @"KBSearchSectionHeader"; + +typedef NS_ENUM(NSInteger, KBSearchSection) { + KBSearchSectionHistory = 0, + KBSearchSectionRecommend = 1, +}; + +@interface KBSearchVC () +// 顶部搜索栏(封装的 View) +@property (nonatomic, strong) KBSearchBarView *searchBarView; +// 列表 +@property (nonatomic, strong) UICollectionView *collectionView; +@property (nonatomic, strong) UICollectionViewFlowLayout *flowLayout; + +// 数据 +@property (nonatomic, strong) NSMutableArray *historyWords; // 历史搜索 +@property (nonatomic, strong) NSArray *recommendItems; // 推荐数据(title/price) +@end + +@implementation KBSearchVC + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor whiteColor]; + + // UI + [self.view addSubview:self.searchBarView]; + [self.view addSubview:self.collectionView]; + + // 布局 - Masonry + [self.searchBarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.view.mas_top).offset(KB_NAV_TOTAL_HEIGHT + 8); + make.left.equalTo(self.view).offset(16); + make.right.equalTo(self.view).offset(-16); + make.height.mas_equalTo(40); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.searchBarView.mas_bottom).offset(12); + make.left.right.bottom.equalTo(self.view); + }]; + + // 初始化测试数据 + self.historyWords = [@[@"果冻橙", @"芒果", @"有机水果卷心菜", @"水果萝卜", @"熟冻帝王蟹", @"赣南脐橙"] mutableCopy]; + self.recommendItems = @[ + @{@"title":@"Dopamine", @"price":@"20"}, + @{@"title":@"Dopamine", @"price":@"20"}, + @{@"title":@"Dopamine", @"price":@"20"}, + @{@"title":@"Dopamine", @"price":@"20"}, + @{@"title":@"Dopamine", @"price":@"20"}, + @{@"title":@"Dopamine", @"price":@"20"}, + ]; + + [self.collectionView reloadData]; +} + +#pragma mark - Private + +/// 执行搜索:简单将关键字加入历史 +- (void)performSearch:(NSString *)kw { + NSString *trim = [kw stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + if (trim.length == 0) { return; } + // 去重插入到最前 + [self.historyWords removeObject:trim]; + [self.historyWords insertObject:trim atIndex:0]; + [self.collectionView reloadData]; +} + +/// 清空历史 +- (void)clearHistory { + [self.historyWords removeAllObjects]; + [self.collectionView reloadData]; +} + +#pragma mark - UICollectionViewDataSource + +- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { + return 2; // 历史 + 推荐 +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + if (section == KBSearchSectionHistory) { + return self.historyWords.count; // 无历史则为 0 + } + return self.recommendItems.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == KBSearchSectionHistory) { + KBTagCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kTagCellId forIndexPath:indexPath]; + [cell config:self.historyWords[indexPath.item]]; + return cell; + } + KBSkinCardCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kSkinCellId forIndexPath:indexPath]; + NSDictionary *it = self.recommendItems[indexPath.item]; + [cell configWithTitle:it[@"title"] imageURL:nil price:it[@"price"]]; + return cell; +} + +- (UICollectionReusableView *)collectionView:(UICollectionView *)collectionView viewForSupplementaryElementOfKind:(NSString *)kind atIndexPath:(NSIndexPath *)indexPath { + if (kind == UICollectionElementKindSectionHeader) { + KBSearchSectionHeader *header = [collectionView dequeueReusableSupplementaryViewOfKind:kind withReuseIdentifier:kHeaderId forIndexPath:indexPath]; + if (indexPath.section == KBSearchSectionHistory) { + // 当没有历史时,外部通过 sizeForHeader 返回 0,这里仍设置但不会显示 + [header configWithTitle:@"Historical Search" showTrash:self.historyWords.count > 0]; + __weak typeof(self) weakSelf = self; + header.onTapTrash = ^{ [weakSelf clearHistory]; }; + } else { + [header configWithTitle:@"Recommended Skin" showTrash:NO]; + } + return header; + } + return [UICollectionReusableView new]; +} + +#pragma mark - UICollectionViewDelegateFlowLayout + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + CGFloat width = collectionView.bounds.size.width; + if (indexPath.section == KBSearchSectionHistory) { + NSString *t = self.historyWords[indexPath.item]; + return [KBTagCell sizeForText:t]; + } + // 两列卡片 + CGFloat inset = 16; // 左右间距 + CGFloat spacing = 12; // 列间距 + CGFloat w = floor((width - inset*2 - spacing) / 2.0); + // 高度:封面 0.75w + 标题 + 价格 + 边距,近似定高 + CGFloat h = w*0.75 + 8 + 20 + 10 + 6 + 8; // 估算 + return CGSizeMake(w, h); +} + +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { + if (section == KBSearchSectionHistory) { + return UIEdgeInsetsMake(8, 16, 12, 16); + } + return UIEdgeInsetsMake(8, 16, 20, 16); +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { + return section == KBSearchSectionHistory ? 8 : 12; +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { + return section == KBSearchSectionHistory ? 8 : 16; +} + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout referenceSizeForHeaderInSection:(NSInteger)section { + // 当历史记录为空时,header 高度为 0,从而不显示标题与垃圾桶 + if (section == KBSearchSectionHistory) { + return self.historyWords.count == 0 ? CGSizeZero : CGSizeMake(collectionView.bounds.size.width, 40); + } + return CGSizeMake(collectionView.bounds.size.width, 40); +} + +#pragma mark - UICollectionViewDelegate + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + if (indexPath.section == KBSearchSectionHistory) { + NSString *kw = self.historyWords[indexPath.item]; + [self.searchBarView updateKeyword:kw]; + [self performSearch:kw]; + } +} + +#pragma mark - Lazy + +- (KBSearchBarView *)searchBarView { + if (!_searchBarView) { + _searchBarView = [[KBSearchBarView alloc] init]; + _searchBarView.placeholder = @"Themes"; + __weak typeof(self) weakSelf = self; + _searchBarView.onSearch = ^(NSString * _Nonnull keyword) { + [weakSelf performSearch:keyword]; + }; + } + return _searchBarView; +} + +- (UICollectionViewFlowLayout *)flowLayout { + if (!_flowLayout) { + _flowLayout = [[UICollectionViewFlowLayout alloc] init]; + _flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical; + _flowLayout.sectionHeadersPinToVisibleBounds = NO; + } + return _flowLayout; +} + +- (UICollectionView *)collectionView { + if (!_collectionView) { + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:self.flowLayout]; + _collectionView.backgroundColor = [UIColor whiteColor]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + // 注册 cell & header + [_collectionView registerClass:KBTagCell.class forCellWithReuseIdentifier:kTagCellId]; + [_collectionView registerClass:KBSkinCardCell.class forCellWithReuseIdentifier:kSkinCellId]; + [_collectionView registerClass:KBSearchSectionHeader.class forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kHeaderId]; + } + return _collectionView; +} + +@end From faeb930fe371781c69ef735b71f8ae1f800f4796 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sat, 8 Nov 2025 11:48:06 +0800 Subject: [PATCH 30/47] 1 --- keyBoard/Class/Search/V/KBSearchBarView.m | 7 ++-- keyBoard/Class/Search/VC/KBSearchVC.m | 40 +++++++++++++++++------ 2 files changed, 34 insertions(+), 13 deletions(-) diff --git a/keyBoard/Class/Search/V/KBSearchBarView.m b/keyBoard/Class/Search/V/KBSearchBarView.m index 3d9baf7..92256c0 100644 --- a/keyBoard/Class/Search/V/KBSearchBarView.m +++ b/keyBoard/Class/Search/V/KBSearchBarView.m @@ -30,8 +30,7 @@ // layout - Masonry [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(self); - make.height.mas_equalTo(40); + make.edges.equalTo(self); // 高度由外部容器决定 }]; [self.searchButton mas_makeConstraints:^(MASConstraintMaker *make) { @@ -47,6 +46,9 @@ make.right.equalTo(self.searchButton.mas_left).offset(-8); make.height.mas_equalTo(30); }]; + + self.bgView.layer.borderWidth = 1; + self.bgView.layer.borderColor = [UIColor colorWithHex:0xE6E6E6].CGColor; } #pragma mark - Action @@ -121,4 +123,3 @@ } @end - diff --git a/keyBoard/Class/Search/VC/KBSearchVC.m b/keyBoard/Class/Search/VC/KBSearchVC.m index 54dabb5..1369294 100644 --- a/keyBoard/Class/Search/VC/KBSearchVC.m +++ b/keyBoard/Class/Search/VC/KBSearchVC.m @@ -21,8 +21,9 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { }; @interface KBSearchVC () -// 顶部搜索栏(封装的 View) +// 顶部搜索栏(封装的 View)——放到导航栏的 titleView 中,Y 轴与返回按钮一致 @property (nonatomic, strong) KBSearchBarView *searchBarView; +@property (nonatomic, strong) UIView *titleContainer; // 承载 searchBarView 的容器 // 列表 @property (nonatomic, strong) UICollectionView *collectionView; @property (nonatomic, strong) UICollectionViewFlowLayout *flowLayout; @@ -39,19 +40,14 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { self.view.backgroundColor = [UIColor whiteColor]; // UI - [self.view addSubview:self.searchBarView]; [self.view addSubview:self.collectionView]; - // 布局 - Masonry - [self.searchBarView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.view.mas_top).offset(KB_NAV_TOTAL_HEIGHT + 8); - make.left.equalTo(self.view).offset(16); - make.right.equalTo(self.view).offset(-16); - make.height.mas_equalTo(40); - }]; + // 将搜索栏放进导航栏 titleView,Y 轴自然与返回按钮对齐 + self.navigationItem.titleView = self.titleContainer; + // 布局 - Masonry(列表顶端紧贴导航栏底部) [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.searchBarView.mas_bottom).offset(12); + make.top.equalTo(self.view.mas_top).offset(KB_NAV_TOTAL_HEIGHT + 8); make.left.right.bottom.equalTo(self.view); }]; @@ -192,6 +188,30 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { return _searchBarView; } +- (UIView *)titleContainer { + if (!_titleContainer) { + // 固定尺寸:宽 315,高 36(与返回按钮同一 Y 轴,作为 titleView 显示) + CGFloat width = KBFit(315.0); + _titleContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 36.0)]; + _titleContainer.backgroundColor = [UIColor clearColor]; + // 告诉导航栏使用 AutoLayout 计算尺寸,并强约束宽高为 315x36 + _titleContainer.translatesAutoresizingMaskIntoConstraints = NO; + [[_titleContainer.widthAnchor constraintEqualToConstant:width] setActive:YES]; + [[_titleContainer.heightAnchor constraintEqualToConstant:36.0] setActive:YES]; + [_titleContainer setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + [_titleContainer setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; + + // 将 searchBarView 塞入容器,充满容器 + [_titleContainer addSubview:self.searchBarView]; + [self.searchBarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(_titleContainer); + make.height.mas_equalTo(36.0); + }]; + + } + return _titleContainer; +} + - (UICollectionViewFlowLayout *)flowLayout { if (!_flowLayout) { _flowLayout = [[UICollectionViewFlowLayout alloc] init]; From 3b0beb52da7adcd7d1ed244b07f83beca568fb39 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sat, 8 Nov 2025 20:04:50 +0800 Subject: [PATCH 31/47] 2 --- keyBoard.xcodeproj/project.pbxproj | 34 ++++ keyBoard/Class/Search/V/KBHistoryMoreCell.h | 18 ++ keyBoard/Class/Search/V/KBHistoryMoreCell.m | 56 ++++++ keyBoard/Class/Search/VC/KBSearchResultVC.h | 21 ++ keyBoard/Class/Search/VC/KBSearchResultVC.m | 169 ++++++++++++++++ keyBoard/Class/Search/VC/KBSearchVC.m | 184 ++++++++++++++++-- .../UICollectionViewLeftAlignedLayout.h | 39 ++++ .../UICollectionViewLeftAlignedLayout.m | 116 +++++++++++ 8 files changed, 620 insertions(+), 17 deletions(-) create mode 100644 keyBoard/Class/Search/V/KBHistoryMoreCell.h create mode 100644 keyBoard/Class/Search/V/KBHistoryMoreCell.m create mode 100644 keyBoard/Class/Search/VC/KBSearchResultVC.h create mode 100644 keyBoard/Class/Search/VC/KBSearchResultVC.m create mode 100644 keyBoard/Class/Vender/UICollectionViewLeftAlignedLayout/UICollectionViewLeftAlignedLayout.h create mode 100644 keyBoard/Class/Vender/UICollectionViewLeftAlignedLayout/UICollectionViewLeftAlignedLayout.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 11d8623..bf2367f 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -58,6 +58,9 @@ 048908CD2EBE373500FABA60 /* KBSearchSectionHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908C72EBE373500FABA60 /* KBSearchSectionHeader.m */; }; 048908CE2EBE373500FABA60 /* KBSkinCardCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908C92EBE373500FABA60 /* KBSkinCardCell.m */; }; 048908CF2EBE373500FABA60 /* KBTagCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908CB2EBE373500FABA60 /* KBTagCell.m */; }; + 048908D22EBF611D00FABA60 /* KBHistoryMoreCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908D12EBF611D00FABA60 /* KBHistoryMoreCell.m */; }; + 048908DA2EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908D82EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.m */; }; + 048908DD2EBF67EB00FABA60 /* KBSearchResultVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908DC2EBF67EB00FABA60 /* KBSearchResultVC.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -212,6 +215,12 @@ 048908C92EBE373500FABA60 /* KBSkinCardCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinCardCell.m; sourceTree = ""; }; 048908CA2EBE373500FABA60 /* KBTagCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBTagCell.h; sourceTree = ""; }; 048908CB2EBE373500FABA60 /* KBTagCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBTagCell.m; sourceTree = ""; }; + 048908D02EBF611D00FABA60 /* KBHistoryMoreCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBHistoryMoreCell.h; sourceTree = ""; }; + 048908D12EBF611D00FABA60 /* KBHistoryMoreCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBHistoryMoreCell.m; sourceTree = ""; }; + 048908D72EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = UICollectionViewLeftAlignedLayout.h; sourceTree = ""; }; + 048908D82EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UICollectionViewLeftAlignedLayout.m; sourceTree = ""; }; + 048908DB2EBF67EB00FABA60 /* KBSearchResultVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSearchResultVC.h; sourceTree = ""; }; + 048908DC2EBF67EB00FABA60 /* KBSearchResultVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSearchResultVC.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -506,6 +515,8 @@ 048908C72EBE373500FABA60 /* KBSearchSectionHeader.m */, 048908C82EBE373500FABA60 /* KBSkinCardCell.h */, 048908C92EBE373500FABA60 /* KBSkinCardCell.m */, + 048908D02EBF611D00FABA60 /* KBHistoryMoreCell.h */, + 048908D12EBF611D00FABA60 /* KBHistoryMoreCell.m */, 048908CA2EBE373500FABA60 /* KBTagCell.h */, 048908CB2EBE373500FABA60 /* KBTagCell.m */, ); @@ -517,6 +528,8 @@ children = ( 048908C12EBE32B800FABA60 /* KBSearchVC.h */, 048908C22EBE32B800FABA60 /* KBSearchVC.m */, + 048908DB2EBF67EB00FABA60 /* KBSearchResultVC.h */, + 048908DC2EBF67EB00FABA60 /* KBSearchResultVC.m */, ); path = VC; sourceTree = ""; @@ -531,6 +544,23 @@ path = Search; sourceTree = ""; }; + 048908D32EBF618E00FABA60 /* Vender */ = { + isa = PBXGroup; + children = ( + 048908D92EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout */, + ); + path = Vender; + sourceTree = ""; + }; + 048908D92EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout */ = { + isa = PBXGroup; + children = ( + 048908D72EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.h */, + 048908D82EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.m */, + ); + path = UICollectionViewLeftAlignedLayout; + sourceTree = ""; + }; 04A9FE122EB4D0D20020DB6D /* Manager */ = { isa = PBXGroup; children = ( @@ -755,6 +785,7 @@ 04FC95BF2EB1E3B1007BD342 /* Class */ = { isa = PBXGroup; children = ( + 048908D32EBF618E00FABA60 /* Vender */, 048908C02EBE329D00FABA60 /* Search */, 048908B92EBDC11200FABA60 /* Common */, 04FC95B62EB1E3B1007BD342 /* Home */, @@ -1236,9 +1267,11 @@ 048908BC2EBE1FCB00FABA60 /* BaseViewController.m in Sources */, 04FC95D72EB1EA16007BD342 /* BaseTableView.m in Sources */, 0477BDF32EBB7B850055D639 /* KBDirectionIndicatorView.m in Sources */, + 048908D22EBF611D00FABA60 /* KBHistoryMoreCell.m in Sources */, 04FC95D82EB1EA16007BD342 /* BaseCell.m in Sources */, 0477BDF72EBC63A80055D639 /* KBTestVC.m in Sources */, 04FC95C92EB1E4C9007BD342 /* BaseNavigationController.m in Sources */, + 048908DD2EBF67EB00FABA60 /* KBSearchResultVC.m in Sources */, 047C65102EBCA8DD0035E841 /* HomeRankContentVC.m in Sources */, 047C655C2EBCD0F80035E841 /* UIView+KBShadow.m in Sources */, 048908C32EBE32B800FABA60 /* KBSearchVC.m in Sources */, @@ -1255,6 +1288,7 @@ 04FC970F2EB334F8007BD342 /* KBWebImageManager.m in Sources */, 04FC95CF2EB1E7A1007BD342 /* HomeVC.m in Sources */, A1B2D7022EB8C00100000001 /* KBLangTestVC.m in Sources */, + 048908DA2EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.m in Sources */, 04C6EABF2EAF86530089C901 /* main.m in Sources */, 04FC95CC2EB1E780007BD342 /* BaseTabBarController.m in Sources */, 047C65502EBCBA9E0035E841 /* KBShopVC.m in Sources */, diff --git a/keyBoard/Class/Search/V/KBHistoryMoreCell.h b/keyBoard/Class/Search/V/KBHistoryMoreCell.h new file mode 100644 index 0000000..95ce74c --- /dev/null +++ b/keyBoard/Class/Search/V/KBHistoryMoreCell.h @@ -0,0 +1,18 @@ +// +// KBHistoryMoreCell.h +// keyBoard +// +// 历史记录第二行尾部的“展开更多”按钮 cell(向下箭头)。 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBHistoryMoreCell : UICollectionViewCell +/// 固定尺寸建议(高度与标签一致 32) ++ (CGSize)fixedSize; +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Search/V/KBHistoryMoreCell.m b/keyBoard/Class/Search/V/KBHistoryMoreCell.m new file mode 100644 index 0000000..938f653 --- /dev/null +++ b/keyBoard/Class/Search/V/KBHistoryMoreCell.m @@ -0,0 +1,56 @@ +// +// KBHistoryMoreCell.m +// keyBoard +// + +#import "KBHistoryMoreCell.h" + +@interface KBHistoryMoreCell () +@property (nonatomic, strong) UIView *bgView; +@property (nonatomic, strong) UIImageView *iconView; +@end + +@implementation KBHistoryMoreCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.contentView.backgroundColor = [UIColor clearColor]; + [self.contentView addSubview:self.bgView]; + [self.bgView addSubview:self.iconView]; + + [self.bgView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.contentView); + }]; + [self.iconView mas_makeConstraints:^(MASConstraintMaker *make) { + make.center.equalTo(self.bgView); + make.width.height.mas_equalTo(14); + }]; + } + return self; +} + ++ (CGSize)fixedSize { return CGSizeMake(32, 32); } + +#pragma mark - Lazy + +- (UIView *)bgView { + if (!_bgView) { + _bgView = [[UIView alloc] init]; + _bgView.backgroundColor = [UIColor colorWithWhite:0.96 alpha:1.0]; + _bgView.layer.cornerRadius = 16; + _bgView.layer.masksToBounds = YES; + } + return _bgView; +} + +- (UIImageView *)iconView { + if (!_iconView) { + _iconView = [[UIImageView alloc] initWithImage:[UIImage systemImageNamed:@"chevron.down"]]; + _iconView.tintColor = [UIColor colorWithHex:0x9A9A9A]; + _iconView.contentMode = UIViewContentModeScaleAspectFit; + } + return _iconView; +} + +@end + diff --git a/keyBoard/Class/Search/VC/KBSearchResultVC.h b/keyBoard/Class/Search/VC/KBSearchResultVC.h new file mode 100644 index 0000000..e2da78c --- /dev/null +++ b/keyBoard/Class/Search/VC/KBSearchResultVC.h @@ -0,0 +1,21 @@ +// +// KBSearchResultVC.h +// keyBoard +// +// 搜索结果页:顶部搜索框 + 下方网格列表 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +/// 简单的搜索结果页,供外部 push 使用 +@interface KBSearchResultVC : UIViewController + +/// 可选:进入页面时默认关键字 +@property (nonatomic, copy, nullable) NSString *defaultKeyword; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Search/VC/KBSearchResultVC.m b/keyBoard/Class/Search/VC/KBSearchResultVC.m new file mode 100644 index 0000000..77208e6 --- /dev/null +++ b/keyBoard/Class/Search/VC/KBSearchResultVC.m @@ -0,0 +1,169 @@ +// +// KBSearchResultVC.m +// keyBoard +// +// 搜索结果页:顶部为 KBSearchBarView,下面为两列卡片的 UICollectionView。 +// - Masonry 约束 +// - 懒加载子视图 +// - 中文注释 +// + +#import "KBSearchResultVC.h" +#import "KBSearchBarView.h" +#import "KBSkinCardCell.h" + +static NSString * const kResultCellId = @"KBSkinCardCell"; + +@interface KBSearchResultVC () + +// 顶部搜索栏(复用已封装的 KBSearchBarView) +@property (nonatomic, strong) KBSearchBarView *searchBarView; + +// 结果列表 +@property (nonatomic, strong) UICollectionView *collectionView; +@property (nonatomic, strong) UICollectionViewFlowLayout *flowLayout; + +// 数据源(示例数据,实际项目中由网络返回) +@property (nonatomic, strong) NSMutableArray *resultItems; // @{title, price} + +@end + +@implementation KBSearchResultVC + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor whiteColor]; + + // 添加子视图 + [self.view addSubview:self.searchBarView]; + [self.view addSubview:self.collectionView]; + + // Masonry 布局:搜索在顶部,列表紧随其下 + [self.searchBarView mas_makeConstraints:^(MASConstraintMaker *make) { + // 顶部与导航栏底对齐,左右各 16 间距,高度 40 + make.top.equalTo(self.view.mas_top).offset(KB_NAV_TOTAL_HEIGHT + 8); + make.left.equalTo(self.view).offset(16); + make.right.equalTo(self.view).offset(-16); + make.height.mas_equalTo(40); + }]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.searchBarView.mas_bottom).offset(12); + make.left.right.bottom.equalTo(self.view); + }]; + + // 默认关键字(如果有) + if (self.defaultKeyword.length > 0) { + [self.searchBarView updateKeyword:self.defaultKeyword]; + [self performSearch:self.defaultKeyword]; + } else { + // 填充一些示例数据 + [self loadMockData]; + } +} + +#pragma mark - Private + +/// 执行搜索(示例:本地生成一些数据) +- (void)performSearch:(NSString *)keyword { + // 这里可以发起网络请求;演示中生成 10 条假数据 + [self.resultItems removeAllObjects]; + for (int i = 0; i < 10; i++) { + [self.resultItems addObject:@{ @"title": @"Dopamine", @"price": @"20" }]; + } + [self.collectionView reloadData]; +} + +/// 示例数据 +- (void)loadMockData { + [self.resultItems removeAllObjects]; + for (int i = 0; i < 12; i++) { + [self.resultItems addObject:@{ @"title": @"Dopamine", @"price": @"20" }]; + } + [self.collectionView reloadData]; +} + +#pragma mark - UICollectionViewDataSource + +- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { + return 1; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.resultItems.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + KBSkinCardCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kResultCellId forIndexPath:indexPath]; + NSDictionary *it = self.resultItems[indexPath.item]; + [cell configWithTitle:it[@"title"] imageURL:nil price:it[@"price"]]; + return cell; +} + +#pragma mark - UICollectionViewDelegateFlowLayout + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + // 两列布局 + CGFloat width = collectionView.bounds.size.width; + CGFloat inset = 16; // 左右间距 + CGFloat spacing = 12; // 列间距 + CGFloat w = floor((width - inset * 2 - spacing) / 2.0); + CGFloat h = w * 0.75 + 8 + 20 + 10 + 6 + 8; // 与 KBSkinCardCell 估算一致 + return CGSizeMake(w, h); +} + +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { + return UIEdgeInsetsMake(8, 16, 20, 16); +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { + return 12; +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { + return 16; +} + +#pragma mark - Lazy + +- (KBSearchBarView *)searchBarView { + if (!_searchBarView) { + _searchBarView = [[KBSearchBarView alloc] init]; + _searchBarView.placeholder = @"Themes"; + __weak typeof(self) weakSelf = self; + _searchBarView.onSearch = ^(NSString * _Nonnull keyword) { + [weakSelf performSearch:keyword]; + }; + } + return _searchBarView; +} + +- (UICollectionViewFlowLayout *)flowLayout { + if (!_flowLayout) { + _flowLayout = [[UICollectionViewFlowLayout alloc] init]; + _flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical; + } + return _flowLayout; +} + +- (UICollectionView *)collectionView { + if (!_collectionView) { + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:self.flowLayout]; + _collectionView.backgroundColor = [UIColor whiteColor]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + // 注册结果卡片 cell + [_collectionView registerClass:KBSkinCardCell.class forCellWithReuseIdentifier:kResultCellId]; + } + return _collectionView; +} + +- (NSMutableArray *)resultItems { + if (!_resultItems) { + _resultItems = [NSMutableArray array]; + } + return _resultItems; +} + +@end + diff --git a/keyBoard/Class/Search/VC/KBSearchVC.m b/keyBoard/Class/Search/VC/KBSearchVC.m index 1369294..1586cd5 100644 --- a/keyBoard/Class/Search/VC/KBSearchVC.m +++ b/keyBoard/Class/Search/VC/KBSearchVC.m @@ -10,10 +10,16 @@ #import "KBSearchSectionHeader.h" #import "KBTagCell.h" #import "KBSkinCardCell.h" +#import "KBHistoryMoreCell.h" +#import "KBSearchResultVC.h" +#import "UICollectionViewLeftAlignedLayout.h" -static NSString * const kTagCellId = @"KBTagCell"; + +static NSString * const kTagCellId = @"KBTagCell"; static NSString * const kSkinCellId = @"KBSkinCardCell"; -static NSString * const kHeaderId = @"KBSearchSectionHeader"; +static NSString * const kHeaderId = @"KBSearchSectionHeader"; +static NSString * const kMoreCellId = @"KBHistoryMoreCell"; +static NSString * const kMoreToken = @"__KB_MORE__"; // 用于内部计算的占位标识 typedef NS_ENUM(NSInteger, KBSearchSection) { KBSearchSectionHistory = 0, @@ -26,11 +32,13 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { @property (nonatomic, strong) UIView *titleContainer; // 承载 searchBarView 的容器 // 列表 @property (nonatomic, strong) UICollectionView *collectionView; -@property (nonatomic, strong) UICollectionViewFlowLayout *flowLayout; +@property (nonatomic, strong) UICollectionViewLeftAlignedLayout *flowLayout; // 数据 @property (nonatomic, strong) NSMutableArray *historyWords; // 历史搜索 @property (nonatomic, strong) NSArray *recommendItems; // 推荐数据(title/price) +@property (nonatomic, assign) BOOL historyExpanded; // 是否展开所有历史 +@property (nonatomic, assign) CGFloat lastCollectionWidth; // 记录宽度变化,用于重新计算 @end @implementation KBSearchVC @@ -65,18 +73,137 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { [self.collectionView reloadData]; } +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + CGFloat w = self.collectionView.bounds.size.width; + if (w > 0 && fabs(w - self.lastCollectionWidth) > 0.5) { + self.lastCollectionWidth = w; + [self.collectionView reloadData]; + } +} + #pragma mark - Private -/// 执行搜索:简单将关键字加入历史 +/// 执行搜索:将关键字置顶到历史(去重、忽略大小写/前后空格) - (void)performSearch:(NSString *)kw { NSString *trim = [kw stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; if (trim.length == 0) { return; } - // 去重插入到最前 - [self.historyWords removeObject:trim]; + // 忽略大小写去重(把所有等同项移除) + for (NSInteger i = (NSInteger)self.historyWords.count - 1; i >= 0; i--) { + NSString *old = self.historyWords[i]; + if ([old caseInsensitiveCompare:trim] == NSOrderedSame) { + [self.historyWords removeObjectAtIndex:i]; + } + } + // 插入最前 [self.historyWords insertObject:trim atIndex:0]; [self.collectionView reloadData]; } +/// 打开搜索结果页,把关键字传过去 +- (void)openResultForKeyword:(NSString *)kw { + NSString *trim = [kw stringByTrimmingCharactersInSet:[NSCharacterSet whitespaceAndNewlineCharacterSet]]; + if (trim.length == 0) { return; } + KBSearchResultVC *vc = [[KBSearchResultVC alloc] init]; + vc.defaultKeyword = trim; + [self.navigationController pushViewController:vc animated:YES]; +} + +/// 计算“最多两行展示”的历史数据,若超出则在第二行尾部添加一个“更多”按钮(向下箭头)。 +- (NSArray *)currentDisplayHistory { + if (self.historyExpanded) { return self.historyWords; } + if (self.collectionView.bounds.size.width <= 0) { return self.historyWords; } + + CGFloat width = self.collectionView.bounds.size.width; + UIEdgeInsets inset = UIEdgeInsetsMake(8, 16, 12, 16); + CGFloat available = width - inset.left - inset.right; + CGFloat itemSpacing = 8.0; // 与代理中保持一致 + + NSMutableArray *display = [NSMutableArray array]; + NSInteger line = 1; + CGFloat lineUsed = 0.0; // 当前行已占宽度 + // 记录当前第2行每个 item 的宽度与在 display 中的下标,便于回退 + NSMutableArray *lineWidths = [NSMutableArray array]; + NSMutableArray *lineIndexes = [NSMutableArray array]; + + for (NSInteger i = 0; i < self.historyWords.count; i++) { + NSString *text = self.historyWords[i]; + CGSize sz = [KBTagCell sizeForText:text]; + CGFloat w = sz.width; + CGFloat need = (lineUsed == 0 ? w : (lineUsed + itemSpacing + w)); + + if (need <= available) { + // 放得下,加入当前行 + [display addObject:text]; + if (line == 2) { + [lineWidths addObject:@(w)]; + [lineIndexes addObject:@(display.count - 1)]; + } + lineUsed = need; + continue; + } + + // 放不下,需要换行或截断 + if (line == 1) { + // 换到第 2 行 + line = 2; + lineUsed = 0.0; + [lineWidths removeAllObjects]; + [lineIndexes removeAllObjects]; + + // 直接把该元素作为第 2 行的第一个 + if (w <= available) { + [display addObject:text]; + [lineWidths addObject:@(w)]; + [lineIndexes addObject:@(display.count - 1)]; + lineUsed = w; + continue; + } else { + // 极端情况:单个标签就超过一行可用宽,直接用“更多”按钮占位 + [display addObject:kMoreToken]; + return display; + } + } + + // 已在第 2 行且再次超出,说明超过两行。需要在第二行末尾放“更多”按钮。 + CGSize moreSize = [KBHistoryMoreCell fixedSize]; + CGFloat moreNeed = (lineUsed == 0 ? moreSize.width : (lineUsed + itemSpacing + moreSize.width)); + if (moreNeed <= available) { + [display addObject:kMoreToken]; + return display; + } + + // 放不下“更多”,从当前行尾部回退一个标签,直到能放下“更多”。 + while (lineIndexes.count > 0) { + NSNumber *lastIndexNum = lineIndexes.lastObject; // display 中的下标 + NSNumber *lastWidthNum = lineWidths.lastObject; + [display removeObjectAtIndex:lastIndexNum.integerValue]; + [lineIndexes removeLastObject]; + [lineWidths removeLastObject]; + + // 重新计算当前行已占宽 + lineUsed = 0.0; + for (NSInteger k = 0; k < lineWidths.count; k++) { + CGFloat iw = lineWidths[k].doubleValue; + lineUsed = (k == 0 ? iw : (lineUsed + itemSpacing + iw)); + } + // 加入更多后是否能放得下 + moreNeed = (lineUsed == 0 ? moreSize.width : (lineUsed + itemSpacing + moreSize.width)); + if (moreNeed <= available) { + [display addObject:kMoreToken]; + return display; + } + } + + // 如果全部移除仍放不下,则第二行只显示“更多” + [display addObject:kMoreToken]; + return display; + } + + // 循环结束:数据未超过两行,无需“更多” + return display; +} + /// 清空历史 - (void)clearHistory { [self.historyWords removeAllObjects]; @@ -91,16 +218,24 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { - (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { if (section == KBSearchSectionHistory) { - return self.historyWords.count; // 无历史则为 0 + NSArray *list = [self currentDisplayHistory]; + return list.count; // 历史最多两行;可能包含“更多”占位 } return self.recommendItems.count; } - (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == KBSearchSectionHistory) { - KBTagCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kTagCellId forIndexPath:indexPath]; - [cell config:self.historyWords[indexPath.item]]; - return cell; + NSArray *list = [self currentDisplayHistory]; + NSString *text = list[indexPath.item]; + if ([text isEqualToString:kMoreToken]) { + KBHistoryMoreCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kMoreCellId forIndexPath:indexPath]; + return cell; + } else { + KBTagCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kTagCellId forIndexPath:indexPath]; + [cell config:text]; + return cell; + } } KBSkinCardCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kSkinCellId forIndexPath:indexPath]; NSDictionary *it = self.recommendItems[indexPath.item]; @@ -129,7 +264,11 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { - (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout*)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { CGFloat width = collectionView.bounds.size.width; if (indexPath.section == KBSearchSectionHistory) { - NSString *t = self.historyWords[indexPath.item]; + NSArray *list = [self currentDisplayHistory]; + NSString *t = list[indexPath.item]; + if ([t isEqualToString:kMoreToken]) { + return [KBHistoryMoreCell fixedSize]; + } return [KBTagCell sizeForText:t]; } // 两列卡片 @@ -168,9 +307,17 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { - (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { if (indexPath.section == KBSearchSectionHistory) { - NSString *kw = self.historyWords[indexPath.item]; - [self.searchBarView updateKeyword:kw]; - [self performSearch:kw]; + NSArray *list = [self currentDisplayHistory]; + NSString *kw = list[indexPath.item]; + if ([kw isEqualToString:kMoreToken]) { + // 展开所有历史 + self.historyExpanded = YES; + [self.collectionView reloadData]; + } else { + [self.searchBarView updateKeyword:kw]; + [self performSearch:kw]; + [self openResultForKeyword:kw]; + } } } @@ -182,7 +329,9 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { _searchBarView.placeholder = @"Themes"; __weak typeof(self) weakSelf = self; _searchBarView.onSearch = ^(NSString * _Nonnull keyword) { + // 置顶到历史 + 打开结果页 [weakSelf performSearch:keyword]; + [weakSelf openResultForKeyword:keyword]; }; } return _searchBarView; @@ -191,7 +340,7 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { - (UIView *)titleContainer { if (!_titleContainer) { // 固定尺寸:宽 315,高 36(与返回按钮同一 Y 轴,作为 titleView 显示) - CGFloat width = KBFit(315.0); + CGFloat width = 315.0; _titleContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 36.0)]; _titleContainer.backgroundColor = [UIColor clearColor]; // 告诉导航栏使用 AutoLayout 计算尺寸,并强约束宽高为 315x36 @@ -212,9 +361,9 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { return _titleContainer; } -- (UICollectionViewFlowLayout *)flowLayout { +- (UICollectionViewLeftAlignedLayout *)flowLayout { if (!_flowLayout) { - _flowLayout = [[UICollectionViewFlowLayout alloc] init]; + _flowLayout = [[UICollectionViewLeftAlignedLayout alloc] init]; _flowLayout.scrollDirection = UICollectionViewScrollDirectionVertical; _flowLayout.sectionHeadersPinToVisibleBounds = NO; } @@ -230,6 +379,7 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { // 注册 cell & header [_collectionView registerClass:KBTagCell.class forCellWithReuseIdentifier:kTagCellId]; [_collectionView registerClass:KBSkinCardCell.class forCellWithReuseIdentifier:kSkinCellId]; + [_collectionView registerClass:KBHistoryMoreCell.class forCellWithReuseIdentifier:kMoreCellId]; [_collectionView registerClass:KBSearchSectionHeader.class forSupplementaryViewOfKind:UICollectionElementKindSectionHeader withReuseIdentifier:kHeaderId]; } return _collectionView; diff --git a/keyBoard/Class/Vender/UICollectionViewLeftAlignedLayout/UICollectionViewLeftAlignedLayout.h b/keyBoard/Class/Vender/UICollectionViewLeftAlignedLayout/UICollectionViewLeftAlignedLayout.h new file mode 100644 index 0000000..b51c8d3 --- /dev/null +++ b/keyBoard/Class/Vender/UICollectionViewLeftAlignedLayout/UICollectionViewLeftAlignedLayout.h @@ -0,0 +1,39 @@ +// Copyright (c) 2014-2023 Giovanni Lodi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +/** + * Simple UICollectionViewFlowLayout that aligns the cells to the left rather than justify them + * + * Based on http://stackoverflow.com/questions/13017257/how-do-you-determine-spacing-between-cells-in-uicollectionview-flowlayout + */ + +#import + +@interface UICollectionViewLeftAlignedLayout : UICollectionViewFlowLayout + +@end + +/** + * Just a convenience protocol to keep things consistent. + * Someone could find it confusing for a delegate object to conform to UICollectionViewDelegateFlowLayout + * while using UICollectionViewLeftAlignedLayout. + */ +@protocol UICollectionViewDelegateLeftAlignedLayout + +@end diff --git a/keyBoard/Class/Vender/UICollectionViewLeftAlignedLayout/UICollectionViewLeftAlignedLayout.m b/keyBoard/Class/Vender/UICollectionViewLeftAlignedLayout/UICollectionViewLeftAlignedLayout.m new file mode 100644 index 0000000..a234789 --- /dev/null +++ b/keyBoard/Class/Vender/UICollectionViewLeftAlignedLayout/UICollectionViewLeftAlignedLayout.m @@ -0,0 +1,116 @@ +// Copyright (c) 2014-2023 Giovanni Lodi +// +// Permission is hereby granted, free of charge, to any person obtaining a copy of +// this software and associated documentation files (the "Software"), to deal in +// the Software without restriction, including without limitation the rights to +// use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of +// the Software, and to permit persons to whom the Software is furnished to do so, +// subject to the following conditions: +// +// The above copyright notice and this permission notice shall be included in all +// copies or substantial portions of the Software. +// +// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS +// FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR +// COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER +// IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN +// CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. + +#import "UICollectionViewLeftAlignedLayout.h" + +@interface UICollectionViewLayoutAttributes (LeftAligned) + +- (void)leftAlignFrameWithSectionInset:(UIEdgeInsets)sectionInset; + +@end + +@implementation UICollectionViewLayoutAttributes (LeftAligned) + +- (void)leftAlignFrameWithSectionInset:(UIEdgeInsets)sectionInset +{ + CGRect frame = self.frame; + frame.origin.x = sectionInset.left; + self.frame = frame; +} + +@end + +#pragma mark - + +@implementation UICollectionViewLeftAlignedLayout + +#pragma mark - UICollectionViewLayout + +- (NSArray *)layoutAttributesForElementsInRect:(CGRect)rect { + NSArray *originalAttributes = [super layoutAttributesForElementsInRect:rect]; + NSMutableArray *updatedAttributes = [NSMutableArray arrayWithArray:originalAttributes]; + for (UICollectionViewLayoutAttributes *attributes in originalAttributes) { + if (!attributes.representedElementKind) { + NSUInteger index = [updatedAttributes indexOfObject:attributes]; + updatedAttributes[index] = [self layoutAttributesForItemAtIndexPath:attributes.indexPath]; + } + } + + return updatedAttributes; +} + +- (UICollectionViewLayoutAttributes *)layoutAttributesForItemAtIndexPath:(NSIndexPath *)indexPath { + UICollectionViewLayoutAttributes* currentItemAttributes = [[super layoutAttributesForItemAtIndexPath:indexPath] copy]; + UIEdgeInsets sectionInset = [self evaluatedSectionInsetForItemAtIndex:indexPath.section]; + + BOOL isFirstItemInSection = indexPath.item == 0; + CGFloat layoutWidth = CGRectGetWidth(self.collectionView.frame) - sectionInset.left - sectionInset.right; + + if (isFirstItemInSection) { + [currentItemAttributes leftAlignFrameWithSectionInset:sectionInset]; + return currentItemAttributes; + } + + NSIndexPath* previousIndexPath = [NSIndexPath indexPathForItem:indexPath.item-1 inSection:indexPath.section]; + CGRect previousFrame = [self layoutAttributesForItemAtIndexPath:previousIndexPath].frame; + CGFloat previousFrameRightPoint = previousFrame.origin.x + previousFrame.size.width; + CGRect currentFrame = currentItemAttributes.frame; + CGRect strecthedCurrentFrame = CGRectMake(sectionInset.left, + currentFrame.origin.y, + layoutWidth, + currentFrame.size.height); + // if the current frame, once left aligned to the left and stretched to the full collection view + // width intersects the previous frame then they are on the same line + BOOL isFirstItemInRow = !CGRectIntersectsRect(previousFrame, strecthedCurrentFrame); + + if (isFirstItemInRow) { + // make sure the first item on a line is left aligned + [currentItemAttributes leftAlignFrameWithSectionInset:sectionInset]; + return currentItemAttributes; + } + + CGRect frame = currentItemAttributes.frame; + frame.origin.x = previousFrameRightPoint + [self evaluatedMinimumInteritemSpacingForSectionAtIndex:indexPath.section]; + currentItemAttributes.frame = frame; + return currentItemAttributes; +} + +- (CGFloat)evaluatedMinimumInteritemSpacingForSectionAtIndex:(NSInteger)sectionIndex +{ + if ([self.collectionView.delegate respondsToSelector:@selector(collectionView:layout:minimumInteritemSpacingForSectionAtIndex:)]) { + id delegate = (id)self.collectionView.delegate; + + return [delegate collectionView:self.collectionView layout:self minimumInteritemSpacingForSectionAtIndex:sectionIndex]; + } else { + return self.minimumInteritemSpacing; + } +} + +- (UIEdgeInsets)evaluatedSectionInsetForItemAtIndex:(NSInteger)index +{ + if ([self.collectionView.delegate respondsToSelector:@selector(collectionView:layout:insetForSectionAtIndex:)]) { + id delegate = (id)self.collectionView.delegate; + + return [delegate collectionView:self.collectionView layout:self insetForSectionAtIndex:index]; + } else { + return self.sectionInset; + } +} + +@end From a7293964013309d2aff3c2f448fcc7d9f1403298 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sat, 8 Nov 2025 20:49:05 +0800 Subject: [PATCH 32/47] 3 --- keyBoard/Class/Search/VC/KBSearchResultVC.m | 84 ++++++++++++++---- keyBoard/Class/Search/VC/KBSearchVC.m | 95 +++++++++++++++------ 2 files changed, 135 insertions(+), 44 deletions(-) diff --git a/keyBoard/Class/Search/VC/KBSearchResultVC.m b/keyBoard/Class/Search/VC/KBSearchResultVC.m index 77208e6..fbec781 100644 --- a/keyBoard/Class/Search/VC/KBSearchResultVC.m +++ b/keyBoard/Class/Search/VC/KBSearchResultVC.m @@ -2,11 +2,6 @@ // KBSearchResultVC.m // keyBoard // -// 搜索结果页:顶部为 KBSearchBarView,下面为两列卡片的 UICollectionView。 -// - Masonry 约束 -// - 懒加载子视图 -// - 中文注释 -// #import "KBSearchResultVC.h" #import "KBSearchBarView.h" @@ -16,7 +11,9 @@ static NSString * const kResultCellId = @"KBSkinCardCell"; @interface KBSearchResultVC () -// 顶部搜索栏(复用已封装的 KBSearchBarView) +// 顶部自定义栏:返回按钮 + 搜索栏 +@property (nonatomic, strong) UIView *topBar; +@property (nonatomic, strong) UIButton *backButton; @property (nonatomic, strong) KBSearchBarView *searchBarView; // 结果列表 @@ -35,20 +32,32 @@ static NSString * const kResultCellId = @"KBSkinCardCell"; self.view.backgroundColor = [UIColor whiteColor]; // 添加子视图 - [self.view addSubview:self.searchBarView]; + [self.view addSubview:self.topBar]; + [self.topBar addSubview:self.backButton]; + [self.topBar addSubview:self.searchBarView]; [self.view addSubview:self.collectionView]; - // Masonry 布局:搜索在顶部,列表紧随其下 - [self.searchBarView mas_makeConstraints:^(MASConstraintMaker *make) { - // 顶部与导航栏底对齐,左右各 16 间距,高度 40 - make.top.equalTo(self.view.mas_top).offset(KB_NAV_TOTAL_HEIGHT + 8); - make.left.equalTo(self.view).offset(16); - make.right.equalTo(self.view).offset(-16); - make.height.mas_equalTo(40); + // Masonry 布局:顶部自定义栏(无导航栏) + [self.topBar mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.view.mas_top).offset(KB_STATUSBAR_HEIGHT + 8); + make.left.right.equalTo(self.view); + make.height.mas_equalTo(44); + }]; + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.topBar).offset(12); + make.centerY.equalTo(self.topBar); + make.width.mas_equalTo(28); + make.height.mas_equalTo(36); + }]; + [self.searchBarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.backButton); + make.left.equalTo(self.backButton.mas_right).offset(12); + make.width.mas_equalTo(315); + make.height.mas_equalTo(36); + make.right.lessThanOrEqualTo(self.topBar).offset(-16); }]; - [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.searchBarView.mas_bottom).offset(12); + make.top.equalTo(self.topBar.mas_bottom).offset(12); make.left.right.bottom.equalTo(self.view); }]; @@ -62,6 +71,19 @@ static NSString * const kResultCellId = @"KBSkinCardCell"; } } +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + // 隐藏系统导航栏 + [self.navigationController setNavigationBarHidden:YES animated:animated]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + if (self.isMovingFromParentViewController || self.isBeingDismissed) { + [self.navigationController setNavigationBarHidden:NO animated:animated]; + } +} + #pragma mark - Private /// 执行搜索(示例:本地生成一些数据) @@ -138,6 +160,35 @@ static NSString * const kResultCellId = @"KBSkinCardCell"; return _searchBarView; } +- (UIView *)topBar { + if (!_topBar) { + _topBar = [[UIView alloc] init]; + _topBar.backgroundColor = [UIColor whiteColor]; + } + return _topBar; +} + +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeSystem]; + UIImage *img = nil; + if (@available(iOS 13.0, *)) { + img = [UIImage systemImageNamed:@"chevron.left"]; + } + if (img) { + [_backButton setImage:img forState:UIControlStateNormal]; + } else { + [_backButton setTitle:@"<" forState:UIControlStateNormal]; + _backButton.titleLabel.font = [UIFont systemFontOfSize:22 weight:UIFontWeightSemibold]; + } + [_backButton setTintColor:[UIColor blackColor]]; + [_backButton addTarget:self action:@selector(onTapBack) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (void)onTapBack { [self.navigationController popViewControllerAnimated:YES]; } + - (UICollectionViewFlowLayout *)flowLayout { if (!_flowLayout) { _flowLayout = [[UICollectionViewFlowLayout alloc] init]; @@ -166,4 +217,3 @@ static NSString * const kResultCellId = @"KBSkinCardCell"; } @end - diff --git a/keyBoard/Class/Search/VC/KBSearchVC.m b/keyBoard/Class/Search/VC/KBSearchVC.m index 1586cd5..bb6c52b 100644 --- a/keyBoard/Class/Search/VC/KBSearchVC.m +++ b/keyBoard/Class/Search/VC/KBSearchVC.m @@ -27,9 +27,10 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { }; @interface KBSearchVC () -// 顶部搜索栏(封装的 View)——放到导航栏的 titleView 中,Y 轴与返回按钮一致 +// 自定义顶部区域:返回按钮 + 搜索栏 +@property (nonatomic, strong) UIView *topBar; +@property (nonatomic, strong) UIButton *backButton; @property (nonatomic, strong) KBSearchBarView *searchBarView; -@property (nonatomic, strong) UIView *titleContainer; // 承载 searchBarView 的容器 // 列表 @property (nonatomic, strong) UICollectionView *collectionView; @property (nonatomic, strong) UICollectionViewLeftAlignedLayout *flowLayout; @@ -48,14 +49,35 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { self.view.backgroundColor = [UIColor whiteColor]; // UI + [self.view addSubview:self.topBar]; + [self.topBar addSubview:self.backButton]; + [self.topBar addSubview:self.searchBarView]; [self.view addSubview:self.collectionView]; - // 将搜索栏放进导航栏 titleView,Y 轴自然与返回按钮对齐 - self.navigationItem.titleView = self.titleContainer; + // 布局 - Masonry(无导航栏) + [self.topBar mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.view.mas_top).offset(KB_STATUSBAR_HEIGHT + 8); + make.left.right.equalTo(self.view); + make.height.mas_equalTo(44); // 容器高度 + }]; + + [self.backButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.topBar).offset(12); + make.centerY.equalTo(self.topBar); + make.width.mas_equalTo(28); + make.height.mas_equalTo(36); + }]; + + [self.searchBarView mas_makeConstraints:^(MASConstraintMaker *make) { + make.centerY.equalTo(self.backButton); + make.left.equalTo(self.backButton.mas_right).offset(12); + make.width.mas_equalTo(315); + make.height.mas_equalTo(36); + make.right.lessThanOrEqualTo(self.topBar).offset(-16); + }]; - // 布局 - Masonry(列表顶端紧贴导航栏底部) [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.equalTo(self.view.mas_top).offset(KB_NAV_TOTAL_HEIGHT + 8); + make.top.equalTo(self.topBar.mas_bottom).offset(12); make.left.right.bottom.equalTo(self.view); }]; @@ -82,6 +104,20 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { } } +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + // 隐藏系统导航栏,使用自定义返回按钮 + [self.navigationController setNavigationBarHidden:YES animated:animated]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + // 仅在返回上一级时恢复导航栏;push 到下一级(同样隐藏导航栏)不做处理,避免闪烁 + if (self.isMovingFromParentViewController || self.isBeingDismissed) { + [self.navigationController setNavigationBarHidden:NO animated:animated]; + } +} + #pragma mark - Private /// 执行搜索:将关键字置顶到历史(去重、忽略大小写/前后空格) @@ -337,30 +373,35 @@ typedef NS_ENUM(NSInteger, KBSearchSection) { return _searchBarView; } -- (UIView *)titleContainer { - if (!_titleContainer) { - // 固定尺寸:宽 315,高 36(与返回按钮同一 Y 轴,作为 titleView 显示) - CGFloat width = 315.0; - _titleContainer = [[UIView alloc] initWithFrame:CGRectMake(0, 0, width, 36.0)]; - _titleContainer.backgroundColor = [UIColor clearColor]; - // 告诉导航栏使用 AutoLayout 计算尺寸,并强约束宽高为 315x36 - _titleContainer.translatesAutoresizingMaskIntoConstraints = NO; - [[_titleContainer.widthAnchor constraintEqualToConstant:width] setActive:YES]; - [[_titleContainer.heightAnchor constraintEqualToConstant:36.0] setActive:YES]; - [_titleContainer setContentHuggingPriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - [_titleContainer setContentCompressionResistancePriority:UILayoutPriorityRequired forAxis:UILayoutConstraintAxisHorizontal]; - - // 将 searchBarView 塞入容器,充满容器 - [_titleContainer addSubview:self.searchBarView]; - [self.searchBarView mas_makeConstraints:^(MASConstraintMaker *make) { - make.edges.equalTo(_titleContainer); - make.height.mas_equalTo(36.0); - }]; - +- (UIView *)topBar { + if (!_topBar) { + _topBar = [[UIView alloc] init]; + _topBar.backgroundColor = [UIColor whiteColor]; } - return _titleContainer; + return _topBar; } +- (UIButton *)backButton { + if (!_backButton) { + _backButton = [UIButton buttonWithType:UIButtonTypeSystem]; + UIImage *img = nil; + if (@available(iOS 13.0, *)) { + img = [UIImage systemImageNamed:@"chevron.left"]; + } + if (img) { + [_backButton setImage:img forState:UIControlStateNormal]; + } else { + [_backButton setTitle:@"<" forState:UIControlStateNormal]; + _backButton.titleLabel.font = [UIFont systemFontOfSize:22 weight:UIFontWeightSemibold]; + } + [_backButton setTintColor:[UIColor blackColor]]; + [_backButton addTarget:self action:@selector(onTapBack) forControlEvents:UIControlEventTouchUpInside]; + } + return _backButton; +} + +- (void)onTapBack { [self.navigationController popViewControllerAnimated:YES]; } + - (UICollectionViewLeftAlignedLayout *)flowLayout { if (!_flowLayout) { _flowLayout = [[UICollectionViewLeftAlignedLayout alloc] init]; From 41b14ceea48e05b3ebb5ffe736d61f0f6398ce3d Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sat, 8 Nov 2025 21:44:41 +0800 Subject: [PATCH 33/47] 3 --- keyBoard.xcodeproj/project.pbxproj | 12 ++ keyBoard/Class/Me/V/MySkinCell.h | 25 +++ keyBoard/Class/Me/V/MySkinCell.m | 186 +++++++++++++++++++++ keyBoard/Class/Me/VC/MySkinVC.h | 16 ++ keyBoard/Class/Me/VC/MySkinVC.m | 256 +++++++++++++++++++++++++++++ keyBoard/Class/Me/VC/MyVC.m | 4 +- 6 files changed, 498 insertions(+), 1 deletion(-) create mode 100644 keyBoard/Class/Me/V/MySkinCell.h create mode 100644 keyBoard/Class/Me/V/MySkinCell.m create mode 100644 keyBoard/Class/Me/VC/MySkinVC.h create mode 100644 keyBoard/Class/Me/VC/MySkinVC.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index bf2367f..7cfc57a 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -61,6 +61,8 @@ 048908D22EBF611D00FABA60 /* KBHistoryMoreCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908D12EBF611D00FABA60 /* KBHistoryMoreCell.m */; }; 048908DA2EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908D82EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.m */; }; 048908DD2EBF67EB00FABA60 /* KBSearchResultVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908DC2EBF67EB00FABA60 /* KBSearchResultVC.m */; }; + 048908E02EBF73DC00FABA60 /* MySkinVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908DF2EBF73DC00FABA60 /* MySkinVC.m */; }; + 048908E32EBF760000FABA60 /* MySkinCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908E22EBF760000FABA60 /* MySkinCell.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -221,6 +223,10 @@ 048908D82EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = UICollectionViewLeftAlignedLayout.m; sourceTree = ""; }; 048908DB2EBF67EB00FABA60 /* KBSearchResultVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSearchResultVC.h; sourceTree = ""; }; 048908DC2EBF67EB00FABA60 /* KBSearchResultVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSearchResultVC.m; sourceTree = ""; }; + 048908DE2EBF73DC00FABA60 /* MySkinVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MySkinVC.h; sourceTree = ""; }; + 048908DF2EBF73DC00FABA60 /* MySkinVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MySkinVC.m; sourceTree = ""; }; + 048908E12EBF760000FABA60 /* MySkinCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MySkinCell.h; sourceTree = ""; }; + 048908E22EBF760000FABA60 /* MySkinCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MySkinCell.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -759,6 +765,8 @@ 04FC95BC2EB1E3B1007BD342 /* V */ = { isa = PBXGroup; children = ( + 048908E12EBF760000FABA60 /* MySkinCell.h */, + 048908E22EBF760000FABA60 /* MySkinCell.m */, ); path = V; sourceTree = ""; @@ -768,6 +776,8 @@ children = ( 04FC95D02EB1E7AE007BD342 /* MyVC.h */, 04FC95D12EB1E7AE007BD342 /* MyVC.m */, + 048908DE2EBF73DC00FABA60 /* MySkinVC.h */, + 048908DF2EBF73DC00FABA60 /* MySkinVC.m */, ); path = VC; sourceTree = ""; @@ -1278,6 +1288,7 @@ 047C655E2EBCD5B20035E841 /* UIImage+KBColor.m in Sources */, 04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */, 04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */, + 048908E02EBF73DC00FABA60 /* MySkinVC.m in Sources */, 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */, 04FC97002EB30A00007BD342 /* KBGuideTopCell.m in Sources */, 0477BDFA2EBC66340055D639 /* HomeHeadView.m in Sources */, @@ -1308,6 +1319,7 @@ 047C65532EBCBAC60035E841 /* KBCommunityVC.m in Sources */, A1B2C4212EB4B7A100000001 /* KBKeyboardPermissionManager.m in Sources */, 0459D1B42EBA284C00F2D189 /* KBSkinCenterVC.m in Sources */, + 048908E32EBF760000FABA60 /* MySkinCell.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; diff --git a/keyBoard/Class/Me/V/MySkinCell.h b/keyBoard/Class/Me/V/MySkinCell.h new file mode 100644 index 0000000..e8d1359 --- /dev/null +++ b/keyBoard/Class/Me/V/MySkinCell.h @@ -0,0 +1,25 @@ +// +// MySkinCell.h +// keyBoard +// +// 我的皮肤 - 列表 cell。编辑态显示选择圆点。 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MySkinCell : UICollectionViewCell +/// 是否处于编辑态(显示左上角选择圆点) +@property (nonatomic, assign, getter=isEditing) BOOL editing; + +/// 配置显示内容(演示仅传标题与占位图) +- (void)configWithTitle:(NSString *)title image:(nullable UIImage *)image; + +/// 根据选中状态刷新打勾样式(供外部在 select/deselect 时调用) +- (void)updateSelected:(BOOL)selected; + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Me/V/MySkinCell.m b/keyBoard/Class/Me/V/MySkinCell.m new file mode 100644 index 0000000..7f91fec --- /dev/null +++ b/keyBoard/Class/Me/V/MySkinCell.m @@ -0,0 +1,186 @@ +// +// MySkinCell.m +// keyBoard +// + +#import "MySkinCell.h" +#import +#import "UIColor+Extension.h" + +// 左上角小圆点 + 对勾视图(无需切图,用 CAShapeLayer 绘制) +@interface KBSelectDotView : UIView +@property (nonatomic, assign) BOOL selectedState; // 选中状态 +- (void)applySelected:(BOOL)selected; // 刷新外观 +@end + +@implementation KBSelectDotView { + CAShapeLayer *_circleLayer; // 圆形背景 + CAShapeLayer *_checkLayer; // 白色对勾 +} + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.backgroundColor = UIColor.clearColor; + + _circleLayer = [CAShapeLayer layer]; + _circleLayer.fillColor = [UIColor colorWithWhite:0 alpha:0.51].CGColor; // 默认未选中:#000000 51% + [self.layer addSublayer:_circleLayer]; + + _checkLayer = [CAShapeLayer layer]; + _checkLayer.strokeColor = UIColor.whiteColor.CGColor; // 对勾白色 + _checkLayer.fillColor = UIColor.clearColor.CGColor; + _checkLayer.lineWidth = 2.0; + _checkLayer.lineCap = kCALineCapRound; + _checkLayer.lineJoin = kCALineJoinRound; + _checkLayer.hidden = YES; // 未选中时隐藏 + [self.layer addSublayer:_checkLayer]; + } + return self; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + CGFloat size = MIN(self.bounds.size.width, self.bounds.size.height); + CGRect r = CGRectMake((self.bounds.size.width - size) * 0.5, + (self.bounds.size.height - size) * 0.5, + size, size); + UIBezierPath *circle = [UIBezierPath bezierPathWithOvalInRect:r]; + _circleLayer.path = circle.CGPath; + + // 对勾路径(相对 size) + CGFloat s = size; + CGPoint p1 = CGPointMake(CGRectGetMinX(r) + s * 0.26, CGRectGetMinY(r) + s * 0.55); + CGPoint p2 = CGPointMake(CGRectGetMinX(r) + s * 0.43, CGRectGetMinY(r) + s * 0.72); + CGPoint p3 = CGPointMake(CGRectGetMinX(r) + s * 0.76, CGRectGetMinY(r) + s * 0.28); + UIBezierPath *check = [UIBezierPath bezierPath]; + [check moveToPoint:p1]; + [check addLineToPoint:p2]; + [check addLineToPoint:p3]; + _checkLayer.path = check.CGPath; +} + +- (void)applySelected:(BOOL)selected { + self.selectedState = selected; + UIColor *fill = selected ? [UIColor colorWithHex:0x02BEAC] : [UIColor colorWithWhite:0 alpha:0.51]; + _circleLayer.fillColor = fill.CGColor; // 选中改为 #02BEAC + _checkLayer.hidden = !selected; // 选中显示白对勾 +} +@end + +@interface MySkinCell () +@property (nonatomic, strong) UIView *cardView; // 卡片容器(圆角) +@property (nonatomic, strong) UIImageView *coverView; // 预览图 +@property (nonatomic, strong) UILabel *titleLabel; // 标题 + +@property (nonatomic, strong) KBSelectDotView *markView; // 左上角勾选图标(自绘) +@end + +@implementation MySkinCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.contentView.backgroundColor = [UIColor whiteColor]; + + [self.contentView addSubview:self.cardView]; + [self.cardView addSubview:self.coverView]; + [self.cardView addSubview:self.titleLabel]; + [self.contentView addSubview:self.markView]; + + [self.cardView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.contentView); + }]; + [self.coverView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.left.right.equalTo(self.cardView); + make.height.equalTo(self.cardView.mas_width).multipliedBy(0.66); // 接近截图比例 + }]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.cardView).offset(12); + make.right.equalTo(self.cardView).offset(-12); + make.top.equalTo(self.coverView.mas_bottom).offset(10); + }]; + [self.markView mas_makeConstraints:^(MASConstraintMaker *make) { + // 直接相对 contentView,避免受 cardView/masksToBounds 等影响 + make.left.equalTo(self.contentView).offset(8); + make.top.equalTo(self.contentView).offset(8); + make.width.height.mas_equalTo(15); // 设计要求:直径 15px + }]; + + self.markView.hidden = YES; // 默认非编辑态隐藏 + } + return self; +} + +- (void)prepareForReuse { + [super prepareForReuse]; + self.editing = NO; + [self updateSelected:NO]; +} + +- (void)setSelected:(BOOL)selected { + [super setSelected:selected]; + // 统一在系统选中态变更时同步小圆点 + [self updateSelected:selected]; +} + +- (void)configWithTitle:(NSString *)title image:(UIImage *)image { + self.titleLabel.text = title.length ? title : @"Dopamine"; + // 简化:展示本地占位色 + self.coverView.backgroundColor = [UIColor colorWithWhite:0.92 alpha:1.0]; +} + +- (void)setEditing:(BOOL)editing { + _editing = editing; + self.markView.hidden = !editing; + if (editing) { [self.markView applySelected:self.isSelected]; } +} + +- (void)updateSelected:(BOOL)selected { + if (!self.isEditing) { + self.markView.hidden = YES; + return; + } + self.markView.hidden = NO; + [self.markView applySelected:selected]; +} + +#pragma mark - Lazy + +- (UIView *)cardView { + if (!_cardView) { + _cardView = [UIView new]; + _cardView.backgroundColor = [UIColor colorWithWhite:0.97 alpha:1.0]; + _cardView.layer.cornerRadius = 12; + _cardView.layer.masksToBounds = YES; + } + return _cardView; +} + +- (UIImageView *)coverView { + if (!_coverView) { + _coverView = [[UIImageView alloc] init]; + _coverView.contentMode = UIViewContentModeScaleAspectFill; + _coverView.clipsToBounds = YES; + } + return _coverView; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [UILabel new]; + _titleLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightSemibold]; + _titleLabel.textColor = [UIColor colorWithHex:0x333333]; + _titleLabel.text = @"Dopamine"; + } + return _titleLabel; +} + +- (KBSelectDotView *)markView { + if (!_markView) { + _markView = [[KBSelectDotView alloc] init]; + _markView.userInteractionEnabled = NO; // 只作展示 + _markView.layer.zPosition = 10; // 置顶,确保不被图片遮挡 + } + return _markView; +} + +@end diff --git a/keyBoard/Class/Me/VC/MySkinVC.h b/keyBoard/Class/Me/VC/MySkinVC.h new file mode 100644 index 0000000..7f80dd8 --- /dev/null +++ b/keyBoard/Class/Me/VC/MySkinVC.h @@ -0,0 +1,16 @@ +// +// MySkinVC.h +// keyBoard +// +// Created by Mac on 2025/11/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface MySkinVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Me/VC/MySkinVC.m b/keyBoard/Class/Me/VC/MySkinVC.m new file mode 100644 index 0000000..41bc318 --- /dev/null +++ b/keyBoard/Class/Me/VC/MySkinVC.m @@ -0,0 +1,256 @@ +// +// MySkinVC.m +// keyBoard +// +// 我的皮肤列表页(支持编辑多选删除)。 +// 需求要点: +// - 顶部右侧 Editor/Cancel 切换 +// - CollectionView Masonry 约束 + 懒加载控件 +// - 自定义 cell,编辑态显示左上角选择圆点,支持多选 +// - 底部 bottomView 展示已选择数量与删除按钮,数量>0 时 Delete 变为 #02BEAC 可点 +// + +#import "MySkinVC.h" +#import +#import "UIColor+Extension.h" + +#import "MySkinCell.h" + +static NSString * const kMySkinCellId = @"kMySkinCellId"; + +@interface MySkinVC () +@property (nonatomic, strong) UICollectionView *collectionView; // 列表 +@property (nonatomic, strong) UIView *bottomView; // 底部操作条 +@property (nonatomic, strong) UILabel *selectedLabel; // 已选择数量 +@property (nonatomic, strong) UIButton *deleteButton; // 删除 + +@property (nonatomic, strong) NSMutableArray *data; // 简单数据源 +@property (nonatomic, assign, getter=isEditingMode) BOOL editingMode; // 是否编辑态 +@end + +@implementation MySkinVC + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor whiteColor]; + + self.title = @"My Skin"; // 标题 + + // 右上角 Editor/Cancel + self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Editor" style:UIBarButtonItemStylePlain target:self action:@selector(onToggleEdit)]; + + // 数据源(演示用) + self.data = [@[ + @{ @"title": @"Dopamine" }, + @{ @"title": @"Dopamine" }, + @{ @"title": @"Dopamine" }, + @{ @"title": @"Dopamine" }, + ] mutableCopy]; + + // 视图 + [self.view addSubview:self.collectionView]; + [self.view addSubview:self.bottomView]; + + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.top.equalTo(self.view.mas_safeAreaLayoutGuideTop); + make.left.right.equalTo(self.view); + make.bottom.equalTo(self.view.mas_bottom); // 底部被 bottomView 覆盖即可 + }]; + + [self.bottomView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.view); + make.bottom.equalTo(self.view.mas_safeAreaLayoutGuideBottom); + make.height.mas_equalTo(64); + }]; + + // 初始:非编辑态,隐藏底部 + self.bottomView.hidden = YES; +} + +#pragma mark - Actions + +- (void)onToggleEdit { + self.editingMode = !self.editingMode; + + // 更新顶部按钮 + self.navigationItem.rightBarButtonItem.title = self.isEditingMode ? @"Cancel" : @"Editor"; + + // 控制底部栏显隐 + self.bottomView.hidden = !self.isEditingMode; + + // 列表进入/退出多选 + self.collectionView.allowsMultipleSelection = self.isEditingMode; + // 直接刷新可见 cell,确保切换后立刻出现/隐藏 markView + for (UICollectionViewCell *c in self.collectionView.visibleCells) { + if (![c isKindOfClass:MySkinCell.class]) continue; + MySkinCell *cell = (MySkinCell *)c; + cell.editing = self.isEditingMode; + NSIndexPath *ip = [self.collectionView indexPathForCell:cell]; + BOOL selected = [[self.collectionView indexPathsForSelectedItems] containsObject:ip]; + [cell updateSelected:selected]; + } + // 再做一次 reload 保守刷新(防止 offscreen cell) + [self.collectionView reloadData]; + + // 清空选择并刷新底部文案 + for (NSIndexPath *ip in [self.collectionView indexPathsForSelectedItems]) { + [self.collectionView deselectItemAtIndexPath:ip animated:NO]; + } + [self updateBottomUI]; +} + +- (void)onDelete { + // 根据选中项删除 + NSArray *selected = [[self.collectionView indexPathsForSelectedItems] sortedArrayUsingSelector:@selector(compare:)]; + if (selected.count == 0) return; + + // 批量更新,先改数据,再删 UI + [self.collectionView performBatchUpdates:^{ + NSMutableIndexSet *set = [NSMutableIndexSet indexSet]; + for (NSIndexPath *ip in selected) { [set addIndex:ip.item]; } + [self.data removeObjectsAtIndexes:set]; + [self.collectionView deleteItemsAtIndexPaths:selected]; + } completion:^(BOOL finished) { + [self updateBottomUI]; + }]; +} + +- (void)updateBottomUI { + NSInteger count = self.collectionView.indexPathsForSelectedItems.count; + self.selectedLabel.text = [NSString stringWithFormat:@"Selected: %ld Skins", (long)count]; + + BOOL enable = count > 0; + self.deleteButton.enabled = enable; + if (enable) { + self.deleteButton.backgroundColor = [UIColor colorWithHex:0x02BEAC]; + [self.deleteButton setTitleColor:[UIColor whiteColor] forState:UIControlStateNormal]; + self.deleteButton.layer.borderColor = [UIColor colorWithHex:0x02BEAC].CGColor; + } else { + self.deleteButton.backgroundColor = [UIColor colorWithHex:0xF2F2F2]; + [self.deleteButton setTitleColor:[UIColor colorWithHex:0xC8C8C8] forState:UIControlStateNormal]; + self.deleteButton.layer.borderColor = [UIColor colorWithHex:0xE6E6E6].CGColor; + } +} + +#pragma mark - UICollectionView + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.data.count; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + MySkinCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kMySkinCellId forIndexPath:indexPath]; + NSDictionary *d = self.data[indexPath.item]; + [cell configWithTitle:d[@"title"] image:nil]; + cell.editing = self.isEditingMode; // 控制是否显示选择圆点 + // 同步选中状态(复用时) + BOOL selected = [[collectionView indexPathsForSelectedItems] containsObject:indexPath]; + [cell updateSelected:selected]; + return cell; +} + +- (void)collectionView:(UICollectionView *)collectionView didSelectItemAtIndexPath:(NSIndexPath *)indexPath { + if (!self.isEditingMode) { + // 非编辑态:可在此进入详情,当前示例不处理 + [collectionView deselectItemAtIndexPath:indexPath animated:YES]; + return; + } + MySkinCell *cell = (MySkinCell *)[collectionView cellForItemAtIndexPath:indexPath]; + [cell updateSelected:YES]; + [self updateBottomUI]; +} + +- (void)collectionView:(UICollectionView *)collectionView didDeselectItemAtIndexPath:(NSIndexPath *)indexPath { + if (!self.isEditingMode) return; + MySkinCell *cell = (MySkinCell *)[collectionView cellForItemAtIndexPath:indexPath]; + [cell updateSelected:NO]; + [self updateBottomUI]; +} + +- (void)collectionView:(UICollectionView *)collectionView willDisplayCell:(UICollectionViewCell *)cell forItemAtIndexPath:(NSIndexPath *)indexPath { + if (![cell isKindOfClass:MySkinCell.class]) return; + MySkinCell *c = (MySkinCell *)cell; + c.editing = self.isEditingMode; // 保证滚动出现的新 cell 同步编辑态 + BOOL selected = [[collectionView indexPathsForSelectedItems] containsObject:indexPath]; + [c updateSelected:selected]; +} + +#pragma mark - Lazy + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout new]; + CGFloat inset = 16; + CGFloat spacing = 12; + CGFloat W = UIScreen.mainScreen.bounds.size.width; + CGFloat itemW = floor((W - inset * 2 - spacing) / 2.0); + CGFloat itemH = itemW * 0.82f; // 接近截图比例 + layout.itemSize = CGSizeMake(itemW, itemH); + layout.minimumInteritemSpacing = spacing; + layout.minimumLineSpacing = spacing; + layout.sectionInset = UIEdgeInsetsMake(12, inset, 12, inset); + + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.backgroundColor = [UIColor whiteColor]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + _collectionView.allowsMultipleSelection = NO; // 初始 + [_collectionView registerClass:MySkinCell.class forCellWithReuseIdentifier:kMySkinCellId]; + } + return _collectionView; +} + +- (UIView *)bottomView { + if (!_bottomView) { + _bottomView = [UIView new]; + _bottomView.backgroundColor = [UIColor whiteColor]; + _bottomView.layer.shadowColor = [UIColor colorWithWhite:0 alpha:0.06].CGColor; + _bottomView.layer.shadowOpacity = 1; + _bottomView.layer.shadowOffset = CGSizeMake(0, -2); + + [_bottomView addSubview:self.selectedLabel]; + [_bottomView addSubview:self.deleteButton]; + + [self.selectedLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(_bottomView).offset(16); + make.centerY.equalTo(_bottomView); + }]; + [self.deleteButton mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(_bottomView).offset(-16); + make.centerY.equalTo(_bottomView); + make.width.mas_equalTo(92); + make.height.mas_equalTo(36); + }]; + } + return _bottomView; +} + +- (UILabel *)selectedLabel { + if (!_selectedLabel) { + _selectedLabel = [UILabel new]; + _selectedLabel.textColor = [UIColor colorWithHex:0x666666]; + _selectedLabel.font = [UIFont systemFontOfSize:14 weight:UIFontWeightMedium]; + _selectedLabel.text = @"Selected: 0 Skins"; + } + return _selectedLabel; +} + +- (UIButton *)deleteButton { + if (!_deleteButton) { + _deleteButton = [UIButton buttonWithType:UIButtonTypeSystem]; + [_deleteButton setTitle:@"Delete" forState:UIControlStateNormal]; + _deleteButton.titleLabel.font = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + _deleteButton.layer.cornerRadius = 18; + _deleteButton.layer.borderWidth = 1; + _deleteButton.clipsToBounds = YES; + [_deleteButton addTarget:self action:@selector(onDelete) forControlEvents:UIControlEventTouchUpInside]; + // 初始禁用态样式 + _deleteButton.enabled = NO; + _deleteButton.backgroundColor = [UIColor colorWithHex:0xF2F2F2]; + [_deleteButton setTitleColor:[UIColor colorWithHex:0xC8C8C8] forState:UIControlStateNormal]; + _deleteButton.layer.borderColor = [UIColor colorWithHex:0xE6E6E6].CGColor; + } + return _deleteButton; +} + +@end diff --git a/keyBoard/Class/Me/VC/MyVC.m b/keyBoard/Class/Me/VC/MyVC.m index b98e244..2e91868 100644 --- a/keyBoard/Class/Me/VC/MyVC.m +++ b/keyBoard/Class/Me/VC/MyVC.m @@ -6,6 +6,7 @@ // #import "MyVC.h" +#import "MySkinVC.h" @interface MyVC () @@ -27,7 +28,8 @@ } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ - [KBHUD show]; + MySkinVC *vc = [[MySkinVC alloc] init]; + [self.navigationController pushViewController:vc animated:true]; } /* From 675a9f6d64c47bd9893c22f59de4f181c4458640 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sat, 8 Nov 2025 22:25:57 +0800 Subject: [PATCH 34/47] 3 --- keyBoard.xcodeproj/project.pbxproj | 36 +++- keyBoard/Class/Me/V/KBSkinDetailHeaderCell.h | 19 ++ keyBoard/Class/Me/V/KBSkinDetailHeaderCell.m | 75 ++++++++ keyBoard/Class/Me/V/KBSkinDetailTagCell.h | 18 ++ keyBoard/Class/Me/V/KBSkinDetailTagCell.m | 48 +++++ keyBoard/Class/Me/V/KBSkinSectionTitleCell.h | 17 ++ keyBoard/Class/Me/V/KBSkinSectionTitleCell.m | 36 ++++ keyBoard/Class/Me/V/KBSkinTagsContainerCell.h | 20 +++ keyBoard/Class/Me/V/KBSkinTagsContainerCell.m | 91 ++++++++++ keyBoard/Class/Me/VC/KBSkinDetailVC.h | 16 ++ keyBoard/Class/Me/VC/KBSkinDetailVC.m | 167 ++++++++++++++++++ keyBoard/Class/Me/VC/MyVC.m | 5 +- 12 files changed, 544 insertions(+), 4 deletions(-) create mode 100644 keyBoard/Class/Me/V/KBSkinDetailHeaderCell.h create mode 100644 keyBoard/Class/Me/V/KBSkinDetailHeaderCell.m create mode 100644 keyBoard/Class/Me/V/KBSkinDetailTagCell.h create mode 100644 keyBoard/Class/Me/V/KBSkinDetailTagCell.m create mode 100644 keyBoard/Class/Me/V/KBSkinSectionTitleCell.h create mode 100644 keyBoard/Class/Me/V/KBSkinSectionTitleCell.m create mode 100644 keyBoard/Class/Me/V/KBSkinTagsContainerCell.h create mode 100644 keyBoard/Class/Me/V/KBSkinTagsContainerCell.m create mode 100644 keyBoard/Class/Me/VC/KBSkinDetailVC.h create mode 100644 keyBoard/Class/Me/VC/KBSkinDetailVC.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 7cfc57a..f2b0638 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -62,7 +62,12 @@ 048908DA2EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908D82EBF61AF00FABA60 /* UICollectionViewLeftAlignedLayout.m */; }; 048908DD2EBF67EB00FABA60 /* KBSearchResultVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908DC2EBF67EB00FABA60 /* KBSearchResultVC.m */; }; 048908E02EBF73DC00FABA60 /* MySkinVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908DF2EBF73DC00FABA60 /* MySkinVC.m */; }; - 048908E32EBF760000FABA60 /* MySkinCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908E22EBF760000FABA60 /* MySkinCell.m */; }; + 048908E32EBF760000FABA60 /* MySkinCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908E22EBF760000FABA60 /* MySkinCell.m */; }; + 048908E32EBF821700FABA60 /* KBSkinDetailVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908E22EBF821700FABA60 /* KBSkinDetailVC.m */; }; + 048908E62EBF841B00FABA60 /* KBSkinDetailTagCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908E52EBF841B00FABA60 /* KBSkinDetailTagCell.m */; }; + 048908E92EBF843000FABA60 /* KBSkinDetailHeaderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908E82EBF843000FABA60 /* KBSkinDetailHeaderCell.m */; }; + 048908EC2EBF849300FABA60 /* KBSkinTagsContainerCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908EB2EBF849300FABA60 /* KBSkinTagsContainerCell.m */; }; + 048908EF2EBF861800FABA60 /* KBSkinSectionTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908EE2EBF861800FABA60 /* KBSkinSectionTitleCell.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -225,8 +230,18 @@ 048908DC2EBF67EB00FABA60 /* KBSearchResultVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSearchResultVC.m; sourceTree = ""; }; 048908DE2EBF73DC00FABA60 /* MySkinVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MySkinVC.h; sourceTree = ""; }; 048908DF2EBF73DC00FABA60 /* MySkinVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MySkinVC.m; sourceTree = ""; }; - 048908E12EBF760000FABA60 /* MySkinCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MySkinCell.h; sourceTree = ""; }; - 048908E22EBF760000FABA60 /* MySkinCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MySkinCell.m; sourceTree = ""; }; + 048908E12EBF760000FABA60 /* MySkinCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = MySkinCell.h; sourceTree = ""; }; + 048908E12EBF821700FABA60 /* KBSkinDetailVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinDetailVC.h; sourceTree = ""; }; + 048908E22EBF760000FABA60 /* MySkinCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = MySkinCell.m; sourceTree = ""; }; + 048908E22EBF821700FABA60 /* KBSkinDetailVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinDetailVC.m; sourceTree = ""; }; + 048908E42EBF841B00FABA60 /* KBSkinDetailTagCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinDetailTagCell.h; sourceTree = ""; }; + 048908E52EBF841B00FABA60 /* KBSkinDetailTagCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinDetailTagCell.m; sourceTree = ""; }; + 048908E72EBF843000FABA60 /* KBSkinDetailHeaderCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinDetailHeaderCell.h; sourceTree = ""; }; + 048908E82EBF843000FABA60 /* KBSkinDetailHeaderCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinDetailHeaderCell.m; sourceTree = ""; }; + 048908EA2EBF849300FABA60 /* KBSkinTagsContainerCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinTagsContainerCell.h; sourceTree = ""; }; + 048908EB2EBF849300FABA60 /* KBSkinTagsContainerCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinTagsContainerCell.m; sourceTree = ""; }; + 048908ED2EBF861800FABA60 /* KBSkinSectionTitleCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinSectionTitleCell.h; sourceTree = ""; }; + 048908EE2EBF861800FABA60 /* KBSkinSectionTitleCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinSectionTitleCell.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -767,6 +782,14 @@ children = ( 048908E12EBF760000FABA60 /* MySkinCell.h */, 048908E22EBF760000FABA60 /* MySkinCell.m */, + 048908E42EBF841B00FABA60 /* KBSkinDetailTagCell.h */, + 048908E52EBF841B00FABA60 /* KBSkinDetailTagCell.m */, + 048908E72EBF843000FABA60 /* KBSkinDetailHeaderCell.h */, + 048908E82EBF843000FABA60 /* KBSkinDetailHeaderCell.m */, + 048908EA2EBF849300FABA60 /* KBSkinTagsContainerCell.h */, + 048908EB2EBF849300FABA60 /* KBSkinTagsContainerCell.m */, + 048908ED2EBF861800FABA60 /* KBSkinSectionTitleCell.h */, + 048908EE2EBF861800FABA60 /* KBSkinSectionTitleCell.m */, ); path = V; sourceTree = ""; @@ -778,6 +801,8 @@ 04FC95D12EB1E7AE007BD342 /* MyVC.m */, 048908DE2EBF73DC00FABA60 /* MySkinVC.h */, 048908DF2EBF73DC00FABA60 /* MySkinVC.m */, + 048908E12EBF821700FABA60 /* KBSkinDetailVC.h */, + 048908E22EBF821700FABA60 /* KBSkinDetailVC.m */, ); path = VC; sourceTree = ""; @@ -1272,10 +1297,13 @@ 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */, 04C6EABE2EAF86530089C901 /* AppDelegate.m in Sources */, 04FC95F12EB339A7007BD342 /* LoginViewController.m in Sources */, + 048908E92EBF843000FABA60 /* KBSkinDetailHeaderCell.m in Sources */, 04FC96142EB34E00007BD342 /* KBLoginSheetViewController.m in Sources */, 04A9FE1B2EB892460020DB6D /* KBLocalizationManager.m in Sources */, 048908BC2EBE1FCB00FABA60 /* BaseViewController.m in Sources */, 04FC95D72EB1EA16007BD342 /* BaseTableView.m in Sources */, + 048908EF2EBF861800FABA60 /* KBSkinSectionTitleCell.m in Sources */, + 048908E32EBF821700FABA60 /* KBSkinDetailVC.m in Sources */, 0477BDF32EBB7B850055D639 /* KBDirectionIndicatorView.m in Sources */, 048908D22EBF611D00FABA60 /* KBHistoryMoreCell.m in Sources */, 04FC95D82EB1EA16007BD342 /* BaseCell.m in Sources */, @@ -1289,7 +1317,9 @@ 04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */, 04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */, 048908E02EBF73DC00FABA60 /* MySkinVC.m in Sources */, + 048908EC2EBF849300FABA60 /* KBSkinTagsContainerCell.m in Sources */, 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */, + 048908E62EBF841B00FABA60 /* KBSkinDetailTagCell.m in Sources */, 04FC97002EB30A00007BD342 /* KBGuideTopCell.m in Sources */, 0477BDFA2EBC66340055D639 /* HomeHeadView.m in Sources */, 04FC97032EB30A00007BD342 /* KBGuideKFCell.m in Sources */, diff --git a/keyBoard/Class/Me/V/KBSkinDetailHeaderCell.h b/keyBoard/Class/Me/V/KBSkinDetailHeaderCell.h new file mode 100644 index 0000000..20cb401 --- /dev/null +++ b/keyBoard/Class/Me/V/KBSkinDetailHeaderCell.h @@ -0,0 +1,19 @@ +// +// KBSkinDetailHeaderCell.h +// keyBoard +// +// Created by Mac on 2025/11/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBSkinDetailHeaderCell : UICollectionViewCell +@property (nonatomic, strong) UIImageView *coverView; // 顶部大图 +@property (nonatomic, strong) UILabel *leftLabel; // 下方左侧文案(#1B1F1A) +@property (nonatomic, strong) UILabel *rightLabel; // 下方右侧文案(#02BEAC) +- (void)configWithTitle:(NSString *)title right:(NSString *)right; +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Me/V/KBSkinDetailHeaderCell.m b/keyBoard/Class/Me/V/KBSkinDetailHeaderCell.m new file mode 100644 index 0000000..0950ccd --- /dev/null +++ b/keyBoard/Class/Me/V/KBSkinDetailHeaderCell.m @@ -0,0 +1,75 @@ +// +// KBSkinDetailHeaderCell.m +// keyBoard +// +// Created by Mac on 2025/11/8. +// + +#import "KBSkinDetailHeaderCell.h" + +@implementation KBSkinDetailHeaderCell +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.contentView.backgroundColor = [UIColor whiteColor]; + self.contentView.layer.cornerRadius = 12; + self.contentView.layer.masksToBounds = YES; + + [self.contentView addSubview:self.coverView]; + [self.contentView addSubview:self.leftLabel]; + [self.contentView addSubview:self.rightLabel]; + + // 上图,16:9 比例;下方左右文案 + [self.coverView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.top.right.equalTo(self.contentView); + // 高度按照宽度等比(接近截图比例) + make.height.equalTo(self.contentView.mas_width).multipliedBy(0.58); + }]; + [self.leftLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.contentView).offset(12); + make.top.equalTo(self.coverView.mas_bottom).offset(10); + }]; + [self.rightLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self.contentView).offset(-12); + make.centerY.equalTo(self.leftLabel); + }]; + } + return self; +} + +- (void)configWithTitle:(NSString *)title right:(NSString *)right { + // 演示:标题/下载量文案 + self.leftLabel.text = title.length ? title : @"Dopamine"; + self.rightLabel.text = right.length ? right : @"Download: 1 Million"; + // 本示例不做网络图,直接用占位背景色 + self.coverView.backgroundColor = [UIColor colorWithWhite:0.94 alpha:1.0]; +} + +#pragma mark - Lazy +- (UIImageView *)coverView { + if (!_coverView) { + _coverView = [[UIImageView alloc] init]; + _coverView.contentMode = UIViewContentModeScaleAspectFill; + _coverView.clipsToBounds = YES; + } + return _coverView; +} +- (UILabel *)leftLabel { + if (!_leftLabel) { + _leftLabel = [UILabel new]; + _leftLabel.textColor = [UIColor colorWithHex:0x1B1F1A]; + _leftLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _leftLabel.text = @"Dopamine"; + } + return _leftLabel; +} +- (UILabel *)rightLabel { + if (!_rightLabel) { + _rightLabel = [UILabel new]; + _rightLabel.textColor = [UIColor colorWithHex:0x02BEAC]; + _rightLabel.font = [UIFont systemFontOfSize:15 weight:UIFontWeightMedium]; + _rightLabel.textAlignment = NSTextAlignmentRight; + _rightLabel.text = @"Download: 1 Million"; + } + return _rightLabel; +} +@end diff --git a/keyBoard/Class/Me/V/KBSkinDetailTagCell.h b/keyBoard/Class/Me/V/KBSkinDetailTagCell.h new file mode 100644 index 0000000..b2be094 --- /dev/null +++ b/keyBoard/Class/Me/V/KBSkinDetailTagCell.h @@ -0,0 +1,18 @@ +// +// KBSkinDetailTagCell.h +// keyBoard +// +// Created by Mac on 2025/11/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBSkinDetailTagCell : UICollectionViewCell +- (void)config:(NSString *)text; +/// 根据文案计算自适应宽度(外部布局用) ++ (CGSize)sizeForText:(NSString *)text; +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Me/V/KBSkinDetailTagCell.m b/keyBoard/Class/Me/V/KBSkinDetailTagCell.m new file mode 100644 index 0000000..63ee5fd --- /dev/null +++ b/keyBoard/Class/Me/V/KBSkinDetailTagCell.m @@ -0,0 +1,48 @@ +// +// KBSkinDetailTagCell.m +// keyBoard +// +// Created by Mac on 2025/11/8. +// + +#import "KBSkinDetailTagCell.h" +@interface KBSkinDetailTagCell () +@property (nonatomic, strong) UILabel *titleLabel; +@end +@implementation KBSkinDetailTagCell +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.contentView.backgroundColor = [UIColor colorWithWhite:0.96 alpha:1.0]; + self.contentView.layer.cornerRadius = 16; + self.contentView.layer.masksToBounds = YES; + [self.contentView addSubview:self.titleLabel]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.contentView).insets(UIEdgeInsetsMake(6, 12, 6, 12)); + }]; + } + return self; +} + +- (void)config:(NSString *)text { + self.titleLabel.text = text ?: @""; +} + ++ (CGSize)sizeForText:(NSString *)text { + if (text.length == 0) { return CGSizeMake(40, 32); } + CGSize s = [text sizeWithAttributes:@{NSFontAttributeName:[UIFont systemFontOfSize:14]}]; + // 两侧内边距 12 + 12,高度固定 32 + return CGSizeMake(ceil(s.width) + 24, 32); +} + +#pragma mark - Lazy + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.font = [UIFont systemFontOfSize:14]; + _titleLabel.textColor = [UIColor colorWithHex:0x1B1F1A]; + } + return _titleLabel; +} + +@end diff --git a/keyBoard/Class/Me/V/KBSkinSectionTitleCell.h b/keyBoard/Class/Me/V/KBSkinSectionTitleCell.h new file mode 100644 index 0000000..c7e6cb8 --- /dev/null +++ b/keyBoard/Class/Me/V/KBSkinSectionTitleCell.h @@ -0,0 +1,17 @@ +// +// KBSkinSectionTitleCell.h +// keyBoard +// +// Created by Mac on 2025/11/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN +/// MARK: - 区块标题 cell +@interface KBSkinSectionTitleCell : UICollectionViewCell +@property (nonatomic, strong) UILabel *titleLabel; +- (void)config:(NSString *)title; +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Me/V/KBSkinSectionTitleCell.m b/keyBoard/Class/Me/V/KBSkinSectionTitleCell.m new file mode 100644 index 0000000..397cbaf --- /dev/null +++ b/keyBoard/Class/Me/V/KBSkinSectionTitleCell.m @@ -0,0 +1,36 @@ +// +// KBSkinSectionTitleCell.m +// keyBoard +// +// Created by Mac on 2025/11/8. +// + +#import "KBSkinSectionTitleCell.h" + +@implementation KBSkinSectionTitleCell +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.contentView.backgroundColor = [UIColor whiteColor]; + [self.contentView addSubview:self.titleLabel]; + [self.titleLabel mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self.contentView).offset(16); + make.centerY.equalTo(self.contentView); + }]; + } + return self; +} + +- (void)config:(NSString *)title { + self.titleLabel.text = title ?: @"Recommended Skin"; +} + +- (UILabel *)titleLabel { + if (!_titleLabel) { + _titleLabel = [UILabel new]; + _titleLabel.textColor = [UIColor colorWithHex:0x1B1F1A]; + _titleLabel.font = [UIFont systemFontOfSize:18 weight:UIFontWeightSemibold]; + _titleLabel.text = @"Recommended Skin"; + } + return _titleLabel; +} +@end diff --git a/keyBoard/Class/Me/V/KBSkinTagsContainerCell.h b/keyBoard/Class/Me/V/KBSkinTagsContainerCell.h new file mode 100644 index 0000000..3cf4f72 --- /dev/null +++ b/keyBoard/Class/Me/V/KBSkinTagsContainerCell.h @@ -0,0 +1,20 @@ +// +// KBSkinTagsContainerCell.h +// keyBoard +// +// Created by Mac on 2025/11/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBSkinTagsContainerCell : UICollectionViewCell +@property (nonatomic, strong) UICollectionView *tagsView; // 内部标签列表 +@property (nonatomic, copy) NSArray *tags; // 标签文案 +- (void)configWithTags:(NSArray *)tags; +/// 根据给定宽度,计算该容器需要的高度(用于外部 sizeForItem) ++ (CGFloat)heightForTags:(NSArray *)tags width:(CGFloat)width; +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Me/V/KBSkinTagsContainerCell.m b/keyBoard/Class/Me/V/KBSkinTagsContainerCell.m new file mode 100644 index 0000000..e23ba59 --- /dev/null +++ b/keyBoard/Class/Me/V/KBSkinTagsContainerCell.m @@ -0,0 +1,91 @@ +// +// KBSkinTagsContainerCell.m +// keyBoard +// +// Created by Mac on 2025/11/8. +// + +#import "KBSkinTagsContainerCell.h" +#import "KBSkinDetailTagCell.h" +#import "UICollectionViewLeftAlignedLayout.h" +static NSString * const kInnerTagCellId = @"kInnerTagCellId"; + +@implementation KBSkinTagsContainerCell + +- (instancetype)initWithFrame:(CGRect)frame { + if (self = [super initWithFrame:frame]) { + self.contentView.backgroundColor = [UIColor whiteColor]; + [self.contentView addSubview:self.tagsView]; + [self.tagsView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.contentView); + }]; + } + return self; +} + +- (void)configWithTags:(NSArray *)tags { + self.tags = tags; + [self.tagsView reloadData]; +} + +#pragma mark - UICollectionView + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + return self.tags.count; +} +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + KBSkinDetailTagCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kInnerTagCellId forIndexPath:indexPath]; + [cell config:self.tags[indexPath.item]]; + return cell; +} +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + // 根据文案自适应宽度,高度固定 32 + return [KBSkinDetailTagCell sizeForText:self.tags[indexPath.item]]; +} + +#pragma mark - Height Helper + ++ (CGFloat)heightForTags:(NSArray *)tags width:(CGFloat)width { + if (tags.count == 0) { return 0; } + // 计算在给定宽度下的自动换行高度(与内部布局保持一致:行间距 8,item 间距 8,sectionInsets = {0,16,0,16}) + CGFloat leftRight = 16 * 2; // 外部 VC 会给整体 sectionInset=16,这里额外留一点安全边距 + CGFloat maxWidth = width - leftRight; + CGFloat x = 0; + CGFloat rows = 1; + for (NSString *t in tags) { + CGSize s = [KBSkinDetailTagCell sizeForText:t]; + CGFloat iw = ceil(s.width); + if (x == 0) { + x = iw; + } else { + // item 间距 8 + if (x + 8 + iw > maxWidth) { // 换行 + rows += 1; + x = iw; + } else { + x += 8 + iw; + } + } + } + // 行高固定 32;行间距 8;上下额外增加 8 视觉留白 + return rows * 32 + (rows - 1) * 8 + 16; +} + +#pragma mark - Lazy +- (UICollectionView *)tagsView { + if (!_tagsView) { + UICollectionViewLeftAlignedLayout *layout = [UICollectionViewLeftAlignedLayout new]; + layout.minimumInteritemSpacing = 8; + layout.minimumLineSpacing = 8; + layout.sectionInset = UIEdgeInsetsMake(8, 0, 8, 16); + + _tagsView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _tagsView.backgroundColor = [UIColor whiteColor]; + _tagsView.dataSource = self; + _tagsView.delegate = self; + [_tagsView registerClass:KBSkinDetailTagCell.class forCellWithReuseIdentifier:kInnerTagCellId]; + _tagsView.scrollEnabled = NO; // 由外层滚动 + } + return _tagsView; +} +@end diff --git a/keyBoard/Class/Me/VC/KBSkinDetailVC.h b/keyBoard/Class/Me/VC/KBSkinDetailVC.h new file mode 100644 index 0000000..addd4c6 --- /dev/null +++ b/keyBoard/Class/Me/VC/KBSkinDetailVC.h @@ -0,0 +1,16 @@ +// +// KBSkinDetailVC.h +// keyBoard +// +// Created by Mac on 2025/11/8. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBSkinDetailVC : UIViewController + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Me/VC/KBSkinDetailVC.m b/keyBoard/Class/Me/VC/KBSkinDetailVC.m new file mode 100644 index 0000000..4670012 --- /dev/null +++ b/keyBoard/Class/Me/VC/KBSkinDetailVC.m @@ -0,0 +1,167 @@ +// +// KBSkinDetailVC.m +// keyBoard +// +// 皮肤详情页(UICollectionView 实现) +// 结构: +// - Section0:顶部大卡片(上图,下方左右两段文案) +// - Section1:标签容器 cell(内部再嵌套一个 collectionView 以展示 Cute/Fresh 等标签) +// - Section2:区块标题 cell(例如 “Recommended Skin”) +// - Section3:推荐皮肤 2 列网格(使用已有 KBSkinCardCell) +// + +#import "KBSkinDetailVC.h" +#import +#import "UIColor+Extension.h" +#import "UICollectionViewLeftAlignedLayout.h" +#import "KBSkinDetailHeaderCell.h" +#import "KBSkinTagsContainerCell.h" +#import "KBSkinCardCell.h" // 已有的 皮肤卡片 cell(用作 2 列网格) +#import "KBSkinSectionTitleCell.h" + +static NSString * const kHeaderCellId = @"kHeaderCellId"; +static NSString * const kTagsContainerCellId = @"kTagsContainerCellId"; +static NSString * const kSectionTitleCellId = @"kSectionTitleCellId"; +static NSString * const kGridCellId = @"kGridCellId"; // 直接复用 KBSkinCardCell + +typedef NS_ENUM(NSInteger, KBSkinDetailSection) { + KBSkinDetailSectionHeader = 0, + KBSkinDetailSectionTags, + KBSkinDetailSectionTitle, + KBSkinDetailSectionGrid, + KBSkinDetailSectionCount +}; + +@interface KBSkinDetailVC () +@property (nonatomic, strong) UICollectionView *collectionView; // 主列表 +@property (nonatomic, copy) NSArray *tags; // 标签数据 +@property (nonatomic, copy) NSArray *gridData; // 底部网格数据 +@end + +@implementation KBSkinDetailVC + +- (void)viewDidLoad { + [super viewDidLoad]; + self.view.backgroundColor = [UIColor whiteColor]; + + // 简单数据(演示) + self.tags = @[ @"Cute", @"Fresh", @"Cute", @"Fresh", @"Cute", @"Fresh" ]; + self.gridData = @[ + @{ @"title": @"Dopamine" }, @{ @"title": @"Dopamine" }, + @{ @"title": @"Dopamine" }, @{ @"title": @"Dopamine" }, + @{ @"title": @"Dopamine" }, @{ @"title": @"Dopamine" }, + ]; + + [self.view addSubview:self.collectionView]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); + }]; +} + +#pragma mark - UICollectionView DataSource + +- (NSInteger)numberOfSectionsInCollectionView:(UICollectionView *)collectionView { + return KBSkinDetailSectionCount; +} + +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + switch (section) { + case KBSkinDetailSectionHeader: return 1; // 顶部大卡片 + case KBSkinDetailSectionTags: return 1; // 标签容器 + case KBSkinDetailSectionTitle: return 1; // 标题 + case KBSkinDetailSectionGrid: return self.gridData.count; // 2 列网格 + } + return 0; +} + +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + switch (indexPath.section) { + case KBSkinDetailSectionHeader: { + KBSkinDetailHeaderCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kHeaderCellId forIndexPath:indexPath]; + [cell configWithTitle:@"Dopamine" right:@"Download: 1 Million"]; + return cell; + } + case KBSkinDetailSectionTags: { + KBSkinTagsContainerCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kTagsContainerCellId forIndexPath:indexPath]; + [cell configWithTags:self.tags]; + return cell; + } + case KBSkinDetailSectionTitle: { + KBSkinSectionTitleCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kSectionTitleCellId forIndexPath:indexPath]; + [cell config:@"Recommended Skin"]; + return cell; + } + case KBSkinDetailSectionGrid: { + KBSkinCardCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:kGridCellId forIndexPath:indexPath]; + NSDictionary *d = self.gridData[indexPath.item]; + [cell configWithTitle:d[@"title"] imageURL:nil price:@"20"]; + return cell; + } + } + return [UICollectionViewCell new]; +} + +#pragma mark - UICollectionView DelegateFlowLayout + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + CGFloat W = collectionView.bounds.size.width; + CGFloat insetLR = 16.0; + CGFloat contentW = W - insetLR * 2; + switch (indexPath.section) { + case KBSkinDetailSectionHeader: { + // 高度 = 图片 0.58W + 文案与上下留白(≈56) + CGFloat h = contentW * 0.58 + 56; + return CGSizeMake(contentW, h); + } + case KBSkinDetailSectionTags: { + CGFloat h = [KBSkinTagsContainerCell heightForTags:self.tags width:W]; + return CGSizeMake(contentW, h); + } + case KBSkinDetailSectionTitle: { + return CGSizeMake(contentW, 44); + } + case KBSkinDetailSectionGrid: { + // 2 列 + CGFloat spacing = 12.0; + CGFloat itemW = floor((contentW - spacing) / 2.0); + CGFloat itemH = itemW * 0.75 + 56; // 参考 KBSkinCardCell 内部布局 + return CGSizeMake(itemW, itemH); + } + } + return CGSizeZero; +} + +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { + return UIEdgeInsetsMake(12, 16, 12, 16); +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { + return 12.0; +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { + // 网格区需要这个间距,其它区也保持统一 + return 12.0; +} + +#pragma mark - Lazy + +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout new]; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.backgroundColor = [UIColor whiteColor]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + + // 注册 cell + [_collectionView registerClass:KBSkinDetailHeaderCell.class forCellWithReuseIdentifier:kHeaderCellId]; + [_collectionView registerClass:KBSkinTagsContainerCell.class forCellWithReuseIdentifier:kTagsContainerCellId]; + [_collectionView registerClass:KBSkinSectionTitleCell.class forCellWithReuseIdentifier:kSectionTitleCellId]; + [_collectionView registerClass:KBSkinCardCell.class forCellWithReuseIdentifier:kGridCellId]; + } + return _collectionView; +} + +@end diff --git a/keyBoard/Class/Me/VC/MyVC.m b/keyBoard/Class/Me/VC/MyVC.m index 2e91868..44fba6c 100644 --- a/keyBoard/Class/Me/VC/MyVC.m +++ b/keyBoard/Class/Me/VC/MyVC.m @@ -7,6 +7,7 @@ #import "MyVC.h" #import "MySkinVC.h" +#import "KBSkinDetailVC.h" @interface MyVC () @@ -28,7 +29,9 @@ } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ - MySkinVC *vc = [[MySkinVC alloc] init]; +// MySkinVC *vc = [[MySkinVC alloc] init]; + KBSkinDetailVC *vc = [[KBSkinDetailVC alloc] init]; + [self.navigationController pushViewController:vc animated:true]; } From 5d2a3de2f496c45824a6a1dd3dc8181abc80a983 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 13:56:13 +0800 Subject: [PATCH 35/47] fix --- keyBoard.xcodeproj/project.pbxproj | 12 ++ keyBoard/Class/Me/VC/MyVC.m | 2 +- keyBoard/Class/Shop/V/KBShopHeadView.h | 16 +++ keyBoard/Class/Shop/V/KBShopHeadView.m | 20 +++ keyBoard/Class/Shop/VC/KBShopItemVC.h | 21 ++++ keyBoard/Class/Shop/VC/KBShopItemVC.m | 141 +++++++++++++++++++++ keyBoard/Class/Shop/VC/KBShopVC.m | 168 +++++++++++++++++++++++-- 7 files changed, 370 insertions(+), 10 deletions(-) create mode 100644 keyBoard/Class/Shop/V/KBShopHeadView.h create mode 100644 keyBoard/Class/Shop/V/KBShopHeadView.m create mode 100644 keyBoard/Class/Shop/VC/KBShopItemVC.h create mode 100644 keyBoard/Class/Shop/VC/KBShopItemVC.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index f2b0638..748fc23 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -68,6 +68,8 @@ 048908E92EBF843000FABA60 /* KBSkinDetailHeaderCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908E82EBF843000FABA60 /* KBSkinDetailHeaderCell.m */; }; 048908EC2EBF849300FABA60 /* KBSkinTagsContainerCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908EB2EBF849300FABA60 /* KBSkinTagsContainerCell.m */; }; 048908EF2EBF861800FABA60 /* KBSkinSectionTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908EE2EBF861800FABA60 /* KBSkinSectionTitleCell.m */; }; + 048908F22EC047FD00FABA60 /* KBShopHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908F12EC047FD00FABA60 /* KBShopHeadView.m */; }; + 048908F52EC0496400FABA60 /* KBShopItemVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908F42EC0496400FABA60 /* KBShopItemVC.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -242,6 +244,10 @@ 048908EB2EBF849300FABA60 /* KBSkinTagsContainerCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinTagsContainerCell.m; sourceTree = ""; }; 048908ED2EBF861800FABA60 /* KBSkinSectionTitleCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBSkinSectionTitleCell.h; sourceTree = ""; }; 048908EE2EBF861800FABA60 /* KBSkinSectionTitleCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBSkinSectionTitleCell.m; sourceTree = ""; }; + 048908F02EC047FD00FABA60 /* KBShopHeadView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBShopHeadView.h; sourceTree = ""; }; + 048908F12EC047FD00FABA60 /* KBShopHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBShopHeadView.m; sourceTree = ""; }; + 048908F32EC0496400FABA60 /* KBShopItemVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBShopItemVC.h; sourceTree = ""; }; + 048908F42EC0496400FABA60 /* KBShopItemVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBShopItemVC.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -482,6 +488,8 @@ 047C654B2EBCBA880035E841 /* V */ = { isa = PBXGroup; children = ( + 048908F02EC047FD00FABA60 /* KBShopHeadView.h */, + 048908F12EC047FD00FABA60 /* KBShopHeadView.m */, ); path = V; sourceTree = ""; @@ -491,6 +499,8 @@ children = ( 047C654E2EBCBA9E0035E841 /* KBShopVC.h */, 047C654F2EBCBA9E0035E841 /* KBShopVC.m */, + 048908F32EC0496400FABA60 /* KBShopItemVC.h */, + 048908F42EC0496400FABA60 /* KBShopItemVC.m */, ); path = VC; sourceTree = ""; @@ -1317,6 +1327,7 @@ 04FC95DD2EB202A3007BD342 /* KBGuideVC.m in Sources */, 04FC95E52EB220B5007BD342 /* UIColor+Extension.m in Sources */, 048908E02EBF73DC00FABA60 /* MySkinVC.m in Sources */, + 048908F22EC047FD00FABA60 /* KBShopHeadView.m in Sources */, 048908EC2EBF849300FABA60 /* KBSkinTagsContainerCell.m in Sources */, 0477BDF02EBB76E30055D639 /* HomeSheetVC.m in Sources */, 048908E62EBF841B00FABA60 /* KBSkinDetailTagCell.m in Sources */, @@ -1343,6 +1354,7 @@ A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */, A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */, 0459D1B72EBA287900F2D189 /* KBSkinManager.m in Sources */, + 048908F52EC0496400FABA60 /* KBShopItemVC.m in Sources */, 04FC95F42EB339C1007BD342 /* AppleSignInManager.m in Sources */, 04C6EAC12EAF86530089C901 /* ViewController.m in Sources */, A1B2C4002EB4A0A100000004 /* KBAuthManager.m in Sources */, diff --git a/keyBoard/Class/Me/VC/MyVC.m b/keyBoard/Class/Me/VC/MyVC.m index 44fba6c..a422724 100644 --- a/keyBoard/Class/Me/VC/MyVC.m +++ b/keyBoard/Class/Me/VC/MyVC.m @@ -32,7 +32,7 @@ // MySkinVC *vc = [[MySkinVC alloc] init]; KBSkinDetailVC *vc = [[KBSkinDetailVC alloc] init]; - [self.navigationController pushViewController:vc animated:true]; +// [self.navigationController pushViewController:vc animated:true]; } /* diff --git a/keyBoard/Class/Shop/V/KBShopHeadView.h b/keyBoard/Class/Shop/V/KBShopHeadView.h new file mode 100644 index 0000000..d6d1276 --- /dev/null +++ b/keyBoard/Class/Shop/V/KBShopHeadView.h @@ -0,0 +1,16 @@ +// +// KBShopHeadView.h +// keyBoard +// +// Created by Mac on 2025/11/9. +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBShopHeadView : UIView + +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Shop/V/KBShopHeadView.m b/keyBoard/Class/Shop/V/KBShopHeadView.m new file mode 100644 index 0000000..95e0909 --- /dev/null +++ b/keyBoard/Class/Shop/V/KBShopHeadView.m @@ -0,0 +1,20 @@ +// +// KBShopHeadView.m +// keyBoard +// +// Created by Mac on 2025/11/9. +// + +#import "KBShopHeadView.h" + +@implementation KBShopHeadView + +/* +// Only override drawRect: if you perform custom drawing. +// An empty implementation adversely affects performance during animation. +- (void)drawRect:(CGRect)rect { + // Drawing code +} +*/ + +@end diff --git a/keyBoard/Class/Shop/VC/KBShopItemVC.h b/keyBoard/Class/Shop/VC/KBShopItemVC.h new file mode 100644 index 0000000..a32b6b2 --- /dev/null +++ b/keyBoard/Class/Shop/VC/KBShopItemVC.h @@ -0,0 +1,21 @@ +// +// KBShopItemVC.h +// keyBoard +// +// Created by Mac on 2025/11/9. +// + +#import +#import + +NS_ASSUME_NONNULL_BEGIN + +@interface KBShopItemVC : UIViewController +@property (nonatomic, strong) UITableView *tableView; +@property (nonatomic, strong) NSMutableArray *dataSource; +@property (nonatomic, assign) BOOL isNeedFooter; +@property (nonatomic, assign) BOOL isNeedHeader; +@property (nonatomic, assign) BOOL isHeaderRefreshed; //默认为YES +@end + +NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Shop/VC/KBShopItemVC.m b/keyBoard/Class/Shop/VC/KBShopItemVC.m new file mode 100644 index 0000000..2cd9d90 --- /dev/null +++ b/keyBoard/Class/Shop/VC/KBShopItemVC.m @@ -0,0 +1,141 @@ +// +// KBShopItemVC.m +// keyBoard +// +// Created by Mac on 2025/11/9. +// + +#import "KBShopItemVC.h" +#import +@interface KBShopItemVC () + +@property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); + +@end + +@implementation KBShopItemVC + +- (void)viewDidLoad { + [super viewDidLoad]; + + _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; + self.tableView.backgroundColor = [UIColor whiteColor]; + self.tableView.tableFooterView = [UIView new]; + self.tableView.dataSource = self; + self.tableView.delegate = self; + [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; + + [self.view addSubview:self.tableView]; + + __weak typeof(self)weakSelf = self; + if (self.isNeedHeader) { + self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [weakSelf.tableView.mj_header endRefreshing]; + }); + }]; + } + if (self.isNeedFooter) { + self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + [weakSelf.dataSource addObject:@"加载更多成功"]; + [weakSelf.tableView reloadData]; + [weakSelf.tableView.mj_footer endRefreshing]; + }); + }]; + if (@available(iOS 11.0, *)) { + self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; + } + } else { + //列表的contentInsetAdjustmentBehavior失效,需要自己设置底部inset +// self.tableView.contentInset = UIEdgeInsetsMake(0, 0, UIApplication.sharedApplication.keyWindow.jx_layoutInsets.bottom, 0); + } + + [self beginFirstRefresh]; +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + + self.tableView.frame = self.view.bounds; +} + +- (void)beginFirstRefresh { + if (!self.isHeaderRefreshed) { + [self beginRefreshImmediately]; + } +} + +- (void)beginRefreshImmediately { + if (self.isNeedHeader) { + [self.tableView.mj_header beginRefreshing]; + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + self.isHeaderRefreshed = YES; + [self.tableView reloadData]; + [self.tableView.mj_header endRefreshing]; + }); + }else { + self.isHeaderRefreshed = YES; + [self.tableView reloadData]; + } +} + +#pragma mark - UITableViewDataSource, UITableViewDelegate + +- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { + if (!self.isHeaderRefreshed) { + return 0; + } + return self.dataSource.count; +} + +- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { + UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; + cell.textLabel.text = self.dataSource[indexPath.row]; + return cell; +} + +- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { + return 50; +} + +- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { +// DetailViewController *detailVC = [[DetailViewController alloc] init]; +// detailVC.infoString = self.dataSource[indexPath.row]; +// [self.navigationController pushViewController:detailVC animated:YES]; +} + +- (void)scrollViewDidScroll:(UIScrollView *)scrollView { + !self.scrollCallback ?: self.scrollCallback(scrollView); +} + +#pragma mark - JXPagingViewListViewDelegate + +- (UIView *)listView { + return self.view; +} + +- (UIScrollView *)listScrollView { + return self.tableView; +} + +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { + self.scrollCallback = callback; +} + +- (void)listWillAppear { + NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); +} + +- (void)listDidAppear { + NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); +} + +- (void)listWillDisappear { + NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); +} + +- (void)listDidDisappear { + NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); +} +@end diff --git a/keyBoard/Class/Shop/VC/KBShopVC.m b/keyBoard/Class/Shop/VC/KBShopVC.m index cacd540..f1a4e77 100644 --- a/keyBoard/Class/Shop/VC/KBShopVC.m +++ b/keyBoard/Class/Shop/VC/KBShopVC.m @@ -6,26 +6,176 @@ // #import "KBShopVC.h" +#import "JXPagerView.h" +#import "KBShopHeadView.h" +#import +#import +#import +#import "KBShopItemVC.h" -@interface KBShopVC () +static const CGFloat JXTableHeaderViewHeight = (323); +static const CGFloat JXheightForHeaderInSection = 50; +@interface KBShopVC () +@property (nonatomic, strong) UIView *naviBGView; + +@property (nonatomic, strong) JXPagerView *pagerView; +@property (nonatomic, strong) KBShopHeadView *userHeaderView; +@property (nonatomic, assign) BOOL isNeedFooter; +@property (nonatomic, assign) BOOL isNeedHeader; +- (JXPagerView *)preferredPagingView; + +@property (nonatomic, strong) JXCategoryTitleView *categoryView; +@property (nonatomic, strong) NSArray *titles; @end @implementation KBShopVC - (void)viewDidLoad { [super viewDidLoad]; - // Do any additional setup after loading the view. + + self.automaticallyAdjustsScrollViewInsets = NO; + self.view.backgroundColor = [UIColor whiteColor]; + self.navigationController.navigationBar.translucent = false; + self.edgesForExtendedLayout = UIRectEdgeNone; + _titles = @[@"能力", @"爱好", @"队友",@"能力2", @"爱好2", @"队友2"]; + + _userHeaderView = [[KBShopHeadView alloc] init]; + + _categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, JXheightForHeaderInSection)]; + self.categoryView.titles = self.titles; + self.categoryView.backgroundColor = [UIColor whiteColor]; + self.categoryView.delegate = self; + self.categoryView.titleSelectedColor = [UIColor colorWithHex:0x1B1F1A]; + self.categoryView.titleColor = [UIColor colorWithHex:0x9F9F9F]; + self.categoryView.titleColorGradientEnabled = YES; + self.categoryView.titleLabelZoomEnabled = YES; + self.categoryView.contentScrollViewClickTransitionAnimationEnabled = NO; + + JXCategoryIndicatorBackgroundView *backgroundView = [[JXCategoryIndicatorBackgroundView alloc] init]; + backgroundView.indicatorHeight = 20; + backgroundView.indicatorCornerRadius = JXCategoryViewAutomaticDimension; + backgroundView.layer.borderColor = [UIColor colorWithHex:0x02BEAC].CGColor; + backgroundView.layer.borderWidth = 1; + self.categoryView.indicators = @[backgroundView]; + + _pagerView = [self preferredPagingView]; + self.pagerView.mainTableView.gestureDelegate = self; + [self.view addSubview:self.pagerView]; + + self.categoryView.listContainer = (id)self.pagerView.listContainerView; + + //导航栏隐藏的情况,处理扣边返回,下面的代码要加上 +// [self.pagerView.listContainerView.scrollView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer]; +// [self.pagerView.mainTableView.panGestureRecognizer requireGestureRecognizerToFail:self.navigationController.interactivePopGestureRecognizer]; + + __weak typeof(self)weakSelf = self; + self.pagerView.mainTableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + self.categoryView.titles = @[@"高级能力", @"高级爱好", @"高级队友"]; + self.categoryView.defaultSelectedIndex = 0; + [self.categoryView reloadData]; + [self.pagerView reloadData]; + [weakSelf.pagerView.mainTableView.mj_header endRefreshing]; + }); + }]; + + self.pagerView.pinSectionHeaderVerticalOffset = KB_NAV_TOTAL_HEIGHT; + + self.naviBGView = [[UIView alloc] init]; + self.naviBGView.alpha = 0; + self.naviBGView.backgroundColor = [UIColor whiteColor]; + self.naviBGView.frame = CGRectMake(0, 0, KB_SCREEN_WIDTH, KB_NAV_TOTAL_HEIGHT); + [self.view addSubview:self.naviBGView]; + UILabel *naviTitleLabel = [[UILabel alloc] init]; + naviTitleLabel.text = @"导航栏隐藏"; + naviTitleLabel.textAlignment = NSTextAlignmentCenter; + naviTitleLabel.frame = CGRectMake(0, KB_STATUSBAR_HEIGHT, self.view.bounds.size.width, 44); + [self.naviBGView addSubview:naviTitleLabel]; } -/* -#pragma mark - Navigation +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; -// In a storyboard-based application, you will often want to do a little preparation before navigation -- (void)prepareForSegue:(UIStoryboardSegue *)segue sender:(id)sender { - // Get the new view controller using [segue destinationViewController]. - // Pass the selected object to the new view controller. + [self.navigationController setNavigationBarHidden:YES animated:YES]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + [self.navigationController setNavigationBarHidden:NO animated:NO]; +} + +- (JXPagerView *)preferredPagingView { + return [[JXPagerView alloc] initWithDelegate:self]; +} + +- (void)viewDidLayoutSubviews { + [super viewDidLayoutSubviews]; + + self.pagerView.frame = self.view.bounds; +} + +#pragma mark - JXPagerViewDelegate + +- (UIView *)tableHeaderViewInPagerView:(JXPagerView *)pagerView { + return self.userHeaderView; +} + +- (NSUInteger)tableHeaderViewHeightInPagerView:(JXPagerView *)pagerView { + return KBFit(JXTableHeaderViewHeight); +} + +- (NSUInteger)heightForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return JXheightForHeaderInSection; +} + +- (UIView *)viewForPinSectionHeaderInPagerView:(JXPagerView *)pagerView { + return self.categoryView; +} + +- (NSInteger)numberOfListsInPagerView:(JXPagerView *)pagerView { + //和categoryView的item数量一致 + return self.categoryView.titles.count; +} + +- (id)pagerView:(JXPagerView *)pagerView initListAtIndex:(NSInteger)index { + KBShopItemVC *list = [[KBShopItemVC alloc] init]; + list.title = self.titles[index]; + list.isNeedHeader = self.isNeedHeader; + list.isNeedFooter = self.isNeedFooter; + if (index == 0) { + list.dataSource = @[@"橡胶火箭", @"橡胶火箭炮", @"橡胶机关枪", @"橡胶子弹", @"橡胶攻城炮", @"橡胶象枪", @"橡胶象枪乱打", @"橡胶灰熊铳", @"橡胶雷神象枪", @"橡胶猿王枪", @"橡胶犀·榴弹炮", @"橡胶大蛇炮", @"橡胶火箭", @"橡胶火箭炮", @"橡胶机关枪", @"橡胶子弹", @"橡胶攻城炮", @"橡胶象枪", @"橡胶象枪乱打", @"橡胶灰熊铳", @"橡胶雷神象枪", @"橡胶猿王枪", @"橡胶犀·榴弹炮", @"橡胶大蛇炮"].mutableCopy; + }else if (index == 1) { + list.dataSource = @[@"吃烤肉", @"吃鸡腿肉", @"吃牛肉", @"各种肉"].mutableCopy; + }else { + list.dataSource = @[@"【剑士】罗罗诺亚·索隆", @"【航海士】娜美", @"【狙击手】乌索普", @"【厨师】香吉士", @"【船医】托尼托尼·乔巴", @"【船匠】 弗兰奇", @"【音乐家】布鲁克", @"【考古学家】妮可·罗宾"].mutableCopy; + } + return list; +} + +#pragma mark - JXCategoryViewDelegate + +- (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { + self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); +} + +#pragma mark - JXPagerMainTableViewGestureDelegate + +- (BOOL)mainTableViewGestureRecognizer:(UIGestureRecognizer *)gestureRecognizer shouldRecognizeSimultaneouslyWithGestureRecognizer:(UIGestureRecognizer *)otherGestureRecognizer { + //禁止categoryView左右滑动的时候,上下和左右都可以滚动 + if (otherGestureRecognizer == self.categoryView.collectionView.panGestureRecognizer) { + return NO; + } + return [gestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]] && [otherGestureRecognizer isKindOfClass:[UIPanGestureRecognizer class]]; +} + + +- (void)pagerView:(JXPagerView *)pagerView mainTableViewDidScroll:(UIScrollView *)scrollView { + CGFloat thresholdDistance = JXTableHeaderViewHeight; + CGFloat percent = scrollView.contentOffset.y/thresholdDistance; + percent = MAX(0, MIN(1, percent)); + self.naviBGView.alpha = percent; } -*/ @end From 5bdc7ddec0744fed1662fb159f8b8479c3e3aa5b Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 14:26:02 +0800 Subject: [PATCH 36/47] 1 --- keyBoard.xcodeproj/project.pbxproj | 12 +++++ keyBoard/Class/Shop/V/KBCategoryTitleCell.h | 14 ++++++ keyBoard/Class/Shop/V/KBCategoryTitleCell.m | 56 +++++++++++++++++++++ keyBoard/Class/Shop/V/KBCategoryTitleView.h | 13 +++++ keyBoard/Class/Shop/V/KBCategoryTitleView.m | 18 +++++++ keyBoard/Class/Shop/VC/KBShopVC.m | 14 +++++- 6 files changed, 126 insertions(+), 1 deletion(-) create mode 100644 keyBoard/Class/Shop/V/KBCategoryTitleCell.h create mode 100644 keyBoard/Class/Shop/V/KBCategoryTitleCell.m create mode 100644 keyBoard/Class/Shop/V/KBCategoryTitleView.h create mode 100644 keyBoard/Class/Shop/V/KBCategoryTitleView.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 748fc23..7820df6 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -124,6 +124,8 @@ A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */; }; A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */; }; ECC9EE02174D86E8D792472F /* Pods_keyBoard.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 967065BB5230E43F293B3AF9 /* Pods_keyBoard.framework */; }; + 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */; }; + 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -353,6 +355,10 @@ B12EC429812407B9F0E67565 /* Pods-CustomKeyboard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CustomKeyboard.release.xcconfig"; path = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.release.xcconfig"; sourceTree = ""; }; B8CA018AB878499327504AAD /* Pods-CustomKeyboard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CustomKeyboard.debug.xcconfig"; path = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.debug.xcconfig"; sourceTree = ""; }; F67DDBD716E4E616D8CC2C9C /* Pods-keyBoard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-keyBoard.debug.xcconfig"; path = "Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig"; sourceTree = ""; }; + 048909F02EC0AAAA00FABA60 /* KBCategoryTitleCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleCell.h; sourceTree = ""; }; + 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleCell.m; sourceTree = ""; }; + 048909F22EC0AAAA00FABA60 /* KBCategoryTitleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleView.h; sourceTree = ""; }; + 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleView.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -490,6 +496,10 @@ children = ( 048908F02EC047FD00FABA60 /* KBShopHeadView.h */, 048908F12EC047FD00FABA60 /* KBShopHeadView.m */, + 048909F02EC0AAAA00FABA60 /* KBCategoryTitleCell.h */, + 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */, + 048909F22EC0AAAA00FABA60 /* KBCategoryTitleView.h */, + 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */, ); path = V; sourceTree = ""; @@ -1298,6 +1308,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */, + 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */, 04FC95E92EB23B67007BD342 /* KBNetworkManager.m in Sources */, 04FC95D22EB1E7AE007BD342 /* MyVC.m in Sources */, 047C65582EBCC06D0035E841 /* HomeRankCardCell.m in Sources */, diff --git a/keyBoard/Class/Shop/V/KBCategoryTitleCell.h b/keyBoard/Class/Shop/V/KBCategoryTitleCell.h new file mode 100644 index 0000000..1d38eb5 --- /dev/null +++ b/keyBoard/Class/Shop/V/KBCategoryTitleCell.h @@ -0,0 +1,14 @@ +// +// KBCategoryTitleCell.h +// keyBoard +// +// Custom title cell to show a smaller pill background for unselected state +// without modifying the third-party JXCategoryView sources. +// + +#import + +@interface KBCategoryTitleCell : JXCategoryTitleCell + +@end + diff --git a/keyBoard/Class/Shop/V/KBCategoryTitleCell.m b/keyBoard/Class/Shop/V/KBCategoryTitleCell.m new file mode 100644 index 0000000..3b31edd --- /dev/null +++ b/keyBoard/Class/Shop/V/KBCategoryTitleCell.m @@ -0,0 +1,56 @@ +// +// KBCategoryTitleCell.m +// keyBoard +// +// A JXCategoryTitleCell subclass that renders a 20pt-high rounded pill +// as the cell background. The pill is gray when unselected and clear when +// selected (so the indicator can show the white+border style). +// + +#import "KBCategoryTitleCell.h" +#import + +@interface KBCategoryTitleCell () +@property (nonatomic, strong) UIView *kb_pillBackgroundView; +@end + +@implementation KBCategoryTitleCell + +- (void)initializeViews { + [super initializeViews]; + self.kb_pillBackgroundView = [[UIView alloc] initWithFrame:CGRectZero]; + self.kb_pillBackgroundView.userInteractionEnabled = NO; + // 放在最底层,避免遮挡标题 + [self.contentView insertSubview:self.kb_pillBackgroundView atIndex:0]; +} + +- (void)layoutSubviews { + [super layoutSubviews]; + // 固定圆角块高度 20pt,使之更接近设计稿 + CGFloat pillHeight = 20.0; + CGFloat vPadding = MAX(0.0, (self.contentView.bounds.size.height - pillHeight)/2.0); + CGRect frame = CGRectInset(self.contentView.bounds, 0, vPadding); + self.kb_pillBackgroundView.frame = frame; + self.kb_pillBackgroundView.layer.cornerRadius = CGRectGetHeight(frame)/2.0; + self.kb_pillBackgroundView.layer.masksToBounds = YES; +} + +- (void)reloadData:(JXCategoryBaseCellModel *)cellModel { + [super reloadData:cellModel]; + // 使用父类的模型即可,里面已经包含了 cell 背景色渐变能力 + JXCategoryTitleCellModel *model = (JXCategoryTitleCellModel *)cellModel; + // 取消父类对 contentView 背景色的设置,由我们自己的 pill 来渲染 + self.contentView.backgroundColor = [UIColor clearColor]; + if (model.isCellBackgroundColorGradientEnabled) { + // 未选中:灰色椭圆;选中:透明(由指示器负责白底+描边) + if (model.isSelected) { + self.kb_pillBackgroundView.backgroundColor = [UIColor clearColor]; + } else { + self.kb_pillBackgroundView.backgroundColor = model.cellBackgroundUnselectedColor; + } + } else { + self.kb_pillBackgroundView.backgroundColor = [UIColor clearColor]; + } +} + +@end diff --git a/keyBoard/Class/Shop/V/KBCategoryTitleView.h b/keyBoard/Class/Shop/V/KBCategoryTitleView.h new file mode 100644 index 0000000..06552c0 --- /dev/null +++ b/keyBoard/Class/Shop/V/KBCategoryTitleView.h @@ -0,0 +1,13 @@ +// +// KBCategoryTitleView.h +// keyBoard +// +// A JXCategoryTitleView subclass that uses KBCategoryTitleCell. +// + +#import + +@interface KBCategoryTitleView : JXCategoryTitleView + +@end + diff --git a/keyBoard/Class/Shop/V/KBCategoryTitleView.m b/keyBoard/Class/Shop/V/KBCategoryTitleView.m new file mode 100644 index 0000000..6c16713 --- /dev/null +++ b/keyBoard/Class/Shop/V/KBCategoryTitleView.m @@ -0,0 +1,18 @@ +// +// KBCategoryTitleView.m +// keyBoard +// +// Swap in KBCategoryTitleCell to add a custom unselected pill background. +// + +#import "KBCategoryTitleView.h" +#import "KBCategoryTitleCell.h" + +@implementation KBCategoryTitleView + +- (Class)preferredCellClass { + return [KBCategoryTitleCell class]; +} + +@end + diff --git a/keyBoard/Class/Shop/VC/KBShopVC.m b/keyBoard/Class/Shop/VC/KBShopVC.m index f1a4e77..0ee9226 100644 --- a/keyBoard/Class/Shop/VC/KBShopVC.m +++ b/keyBoard/Class/Shop/VC/KBShopVC.m @@ -9,6 +9,7 @@ #import "JXPagerView.h" #import "KBShopHeadView.h" #import +#import "KBCategoryTitleView.h" #import #import #import "KBShopItemVC.h" @@ -42,7 +43,7 @@ static const CGFloat JXheightForHeaderInSection = 50; _userHeaderView = [[KBShopHeadView alloc] init]; - _categoryView = [[JXCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, JXheightForHeaderInSection)]; + _categoryView = (JXCategoryTitleView *)[[KBCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, JXheightForHeaderInSection)]; self.categoryView.titles = self.titles; self.categoryView.backgroundColor = [UIColor whiteColor]; self.categoryView.delegate = self; @@ -51,10 +52,21 @@ static const CGFloat JXheightForHeaderInSection = 50; self.categoryView.titleColorGradientEnabled = YES; self.categoryView.titleLabelZoomEnabled = YES; self.categoryView.contentScrollViewClickTransitionAnimationEnabled = NO; + // Unselected items need a rounded gray background like the screenshot. + // JXCategoryTitleView supports cell background colors via JXCategoryIndicatorView. + self.categoryView.cellBackgroundColorGradientEnabled = YES; + self.categoryView.cellBackgroundUnselectedColor = [UIColor colorWithHex:0xEFEFEF]; + self.categoryView.cellBackgroundSelectedColor = [UIColor whiteColor]; + // Make the pills look compact + self.categoryView.cellWidthIncrement = 20; // horizontal padding for each item + self.categoryView.cellSpacing = 12; // spacing between items + self.categoryView.contentEdgeInsetLeft = 16; + self.categoryView.contentEdgeInsetRight = 16; JXCategoryIndicatorBackgroundView *backgroundView = [[JXCategoryIndicatorBackgroundView alloc] init]; backgroundView.indicatorHeight = 20; backgroundView.indicatorCornerRadius = JXCategoryViewAutomaticDimension; + backgroundView.indicatorColor = [UIColor whiteColor]; // keep selected fill white backgroundView.layer.borderColor = [UIColor colorWithHex:0x02BEAC].CGColor; backgroundView.layer.borderWidth = 1; self.categoryView.indicators = @[backgroundView]; From 705b0f374ee1d0df8534ae628839d192e89dcdcb Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 14:44:31 +0800 Subject: [PATCH 37/47] 1 --- keyBoard/Class/Shop/VC/KBShopVC.m | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/keyBoard/Class/Shop/VC/KBShopVC.m b/keyBoard/Class/Shop/VC/KBShopVC.m index 0ee9226..76e925a 100644 --- a/keyBoard/Class/Shop/VC/KBShopVC.m +++ b/keyBoard/Class/Shop/VC/KBShopVC.m @@ -50,7 +50,8 @@ static const CGFloat JXheightForHeaderInSection = 50; self.categoryView.titleSelectedColor = [UIColor colorWithHex:0x1B1F1A]; self.categoryView.titleColor = [UIColor colorWithHex:0x9F9F9F]; self.categoryView.titleColorGradientEnabled = YES; - self.categoryView.titleLabelZoomEnabled = YES; + // 不需要文字放大效果 + self.categoryView.titleLabelZoomEnabled = NO; self.categoryView.contentScrollViewClickTransitionAnimationEnabled = NO; // Unselected items need a rounded gray background like the screenshot. // JXCategoryTitleView supports cell background colors via JXCategoryIndicatorView. @@ -62,6 +63,7 @@ static const CGFloat JXheightForHeaderInSection = 50; self.categoryView.cellSpacing = 12; // spacing between items self.categoryView.contentEdgeInsetLeft = 16; self.categoryView.contentEdgeInsetRight = 16; + self.categoryView.averageCellSpacingEnabled = NO; JXCategoryIndicatorBackgroundView *backgroundView = [[JXCategoryIndicatorBackgroundView alloc] init]; backgroundView.indicatorHeight = 20; @@ -74,6 +76,8 @@ static const CGFloat JXheightForHeaderInSection = 50; _pagerView = [self preferredPagingView]; self.pagerView.mainTableView.gestureDelegate = self; [self.view addSubview:self.pagerView]; + self.pagerView.listContainerView.scrollView.scrollEnabled = false; + self.categoryView.listContainer = (id)self.pagerView.listContainerView; From 80b61026732a28107e04da7fa55261a4aa480594 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 14:58:44 +0800 Subject: [PATCH 38/47] 1 --- keyBoard/Class/Shop/V/KBCategoryTitleView.m | 16 +++++++++++++++- keyBoard/Class/Shop/VC/KBShopVC.m | 8 ++++++-- 2 files changed, 21 insertions(+), 3 deletions(-) diff --git a/keyBoard/Class/Shop/V/KBCategoryTitleView.m b/keyBoard/Class/Shop/V/KBCategoryTitleView.m index 6c16713..b7f3d52 100644 --- a/keyBoard/Class/Shop/V/KBCategoryTitleView.m +++ b/keyBoard/Class/Shop/V/KBCategoryTitleView.m @@ -7,6 +7,8 @@ #import "KBCategoryTitleView.h" #import "KBCategoryTitleCell.h" +#import +#import @implementation KBCategoryTitleView @@ -14,5 +16,17 @@ return [KBCategoryTitleCell class]; } -@end +// 关闭左右滑动时的颜色/背景渐变(保持状态不变) +- (void)refreshLeftCellModel:(JXCategoryBaseCellModel *)leftCellModel + rightCellModel:(JXCategoryBaseCellModel *)rightCellModel + ratio:(CGFloat)ratio { + // 不调用 super,避免 JXCategoryIndicatorView/JXCategoryTitleView 内部的渐变计算 + JXCategoryTitleCellModel *left = (JXCategoryTitleCellModel *)leftCellModel; + JXCategoryTitleCellModel *right = (JXCategoryTitleCellModel *)rightCellModel; + // 固定颜色:选中用选中色,未选中用普通色 + left.titleCurrentColor = left.isSelected ? left.titleSelectedColor : left.titleNormalColor; + right.titleCurrentColor = right.isSelected ? right.titleSelectedColor : right.titleNormalColor; +} + +@end diff --git a/keyBoard/Class/Shop/VC/KBShopVC.m b/keyBoard/Class/Shop/VC/KBShopVC.m index 76e925a..7af20ca 100644 --- a/keyBoard/Class/Shop/VC/KBShopVC.m +++ b/keyBoard/Class/Shop/VC/KBShopVC.m @@ -49,7 +49,8 @@ static const CGFloat JXheightForHeaderInSection = 50; self.categoryView.delegate = self; self.categoryView.titleSelectedColor = [UIColor colorWithHex:0x1B1F1A]; self.categoryView.titleColor = [UIColor colorWithHex:0x9F9F9F]; - self.categoryView.titleColorGradientEnabled = YES; + // 左右滑动时不要文字渐变色 + self.categoryView.titleColorGradientEnabled = NO; // 不需要文字放大效果 self.categoryView.titleLabelZoomEnabled = NO; self.categoryView.contentScrollViewClickTransitionAnimationEnabled = NO; @@ -71,12 +72,15 @@ static const CGFloat JXheightForHeaderInSection = 50; backgroundView.indicatorColor = [UIColor whiteColor]; // keep selected fill white backgroundView.layer.borderColor = [UIColor colorWithHex:0x02BEAC].CGColor; backgroundView.layer.borderWidth = 1; + // 点击切换时不需要左右滚动动画,直接跳转到目标位置 + backgroundView.scrollEnabled = NO; + backgroundView.scrollAnimationDuration = 0; self.categoryView.indicators = @[backgroundView]; _pagerView = [self preferredPagingView]; self.pagerView.mainTableView.gestureDelegate = self; [self.view addSubview:self.pagerView]; - self.pagerView.listContainerView.scrollView.scrollEnabled = false; +// self.pagerView.listContainerView.scrollView.scrollEnabled = false; self.categoryView.listContainer = (id)self.pagerView.listContainerView; From 553238de0c13f59d9278506ea679888f06ba810e Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 15:59:18 +0800 Subject: [PATCH 39/47] 1 --- keyBoard/Class/Shop/V/KBCategoryTitleCell.m | 2 +- keyBoard/Class/Shop/VC/KBShopVC.m | 35 ++++++++++++--------- 2 files changed, 21 insertions(+), 16 deletions(-) diff --git a/keyBoard/Class/Shop/V/KBCategoryTitleCell.m b/keyBoard/Class/Shop/V/KBCategoryTitleCell.m index 3b31edd..451e9ff 100644 --- a/keyBoard/Class/Shop/V/KBCategoryTitleCell.m +++ b/keyBoard/Class/Shop/V/KBCategoryTitleCell.m @@ -27,7 +27,7 @@ - (void)layoutSubviews { [super layoutSubviews]; // 固定圆角块高度 20pt,使之更接近设计稿 - CGFloat pillHeight = 20.0; + CGFloat pillHeight = 30.0; CGFloat vPadding = MAX(0.0, (self.contentView.bounds.size.height - pillHeight)/2.0); CGRect frame = CGRectInset(self.contentView.bounds, 0, vPadding); self.kb_pillBackgroundView.frame = frame; diff --git a/keyBoard/Class/Shop/VC/KBShopVC.m b/keyBoard/Class/Shop/VC/KBShopVC.m index 7af20ca..655f798 100644 --- a/keyBoard/Class/Shop/VC/KBShopVC.m +++ b/keyBoard/Class/Shop/VC/KBShopVC.m @@ -34,15 +34,32 @@ static const CGFloat JXheightForHeaderInSection = 50; - (void)viewDidLoad { [super viewDidLoad]; +// [self setupUI]; + +} + +- (void)viewWillAppear:(BOOL)animated { + [super viewWillAppear:animated]; + + [self.navigationController setNavigationBarHidden:YES animated:YES]; +} + +- (void)viewWillDisappear:(BOOL)animated { + [super viewWillDisappear:animated]; + + [self.navigationController setNavigationBarHidden:NO animated:NO]; +} + +- (void)setupUI{ + self.automaticallyAdjustsScrollViewInsets = NO; self.view.backgroundColor = [UIColor whiteColor]; self.navigationController.navigationBar.translucent = false; self.edgesForExtendedLayout = UIRectEdgeNone; - _titles = @[@"能力", @"爱好", @"队友",@"能力2", @"爱好2", @"队友2"]; + _titles = @[@"能力", @"爱好", @"队友",@"能力2", @"爱好2", @"队友2",@"能力", @"爱好", @"队友",@"能力2", @"爱好2", @"队友2"]; _userHeaderView = [[KBShopHeadView alloc] init]; - _categoryView = (JXCategoryTitleView *)[[KBCategoryTitleView alloc] initWithFrame:CGRectMake(0, 0, [UIScreen mainScreen].bounds.size.width, JXheightForHeaderInSection)]; self.categoryView.titles = self.titles; self.categoryView.backgroundColor = [UIColor whiteColor]; @@ -67,7 +84,7 @@ static const CGFloat JXheightForHeaderInSection = 50; self.categoryView.averageCellSpacingEnabled = NO; JXCategoryIndicatorBackgroundView *backgroundView = [[JXCategoryIndicatorBackgroundView alloc] init]; - backgroundView.indicatorHeight = 20; + backgroundView.indicatorHeight = 30; backgroundView.indicatorCornerRadius = JXCategoryViewAutomaticDimension; backgroundView.indicatorColor = [UIColor whiteColor]; // keep selected fill white backgroundView.layer.borderColor = [UIColor colorWithHex:0x02BEAC].CGColor; @@ -114,18 +131,6 @@ static const CGFloat JXheightForHeaderInSection = 50; [self.naviBGView addSubview:naviTitleLabel]; } -- (void)viewWillAppear:(BOOL)animated { - [super viewWillAppear:animated]; - - [self.navigationController setNavigationBarHidden:YES animated:YES]; -} - -- (void)viewWillDisappear:(BOOL)animated { - [super viewWillDisappear:animated]; - - [self.navigationController setNavigationBarHidden:NO animated:NO]; -} - - (JXPagerView *)preferredPagingView { return [[JXPagerView alloc] initWithDelegate:self]; } From 2c4a4329ffb82681a7f403135d4b27e967882c46 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 16:05:42 +0800 Subject: [PATCH 40/47] 2 --- keyBoard/Class/Home/VC/HomeRankVC.m | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/keyBoard/Class/Home/VC/HomeRankVC.m b/keyBoard/Class/Home/VC/HomeRankVC.m index 20fabcc..68ad23e 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.m +++ b/keyBoard/Class/Home/VC/HomeRankVC.m @@ -131,7 +131,14 @@ // 点击选中或者滚动选中都会调用该方法。适用于只关心选中事件,不关心具体是点击还是滚动选中的。 - (void)categoryView:(JXCategoryBaseView *)categoryView didSelectedItemAtIndex:(NSInteger)index { NSLog(@"%@", NSStringFromSelector(_cmd)); - self. + // 拿到当前显示的列表 VC(已创建/显示过的会记录在 validListDict 中) + id list = self.listContainerView.validListDict[@(index)]; + if ([list isKindOfClass:[HomeRankContentVC class]]) { + HomeRankContentVC *currentVC = (HomeRankContentVC *)list; + // 如需拿到对应的 collectionView,可以在这里同步一下 + self.collectionView = currentVC.collectionView; + // TODO: 在这里对 currentVC 做需要的操作 + } // 侧滑手势处理 self.navigationController.interactivePopGestureRecognizer.enabled = (index == 0); } From dc9ee100236a5b4adb878f4574f93cb370918745 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 17:07:43 +0800 Subject: [PATCH 41/47] 1 --- keyBoard/Class/Home/VC/HomeRankVC.m | 5 +++++ keyBoard/Class/Shop/VC/KBShopVC.m | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/keyBoard/Class/Home/VC/HomeRankVC.m b/keyBoard/Class/Home/VC/HomeRankVC.m index 68ad23e..8be82b6 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.m +++ b/keyBoard/Class/Home/VC/HomeRankVC.m @@ -36,6 +36,11 @@ self.myCategoryView.titleColor = [UIColor colorWithHex:0x1B1F1A]; self.myCategoryView.titleSelectedColor = [UIColor whiteColor]; self.myCategoryView.titleFont = [UIFont systemFontOfSize:12]; + // 关闭各种“放大”效果,保持选中与未选中宽度一致 + self.myCategoryView.titleLabelZoomEnabled = NO; // 关闭文字缩放 + self.myCategoryView.titleLabelZoomScale = 1.0; + self.myCategoryView.cellWidthZoomEnabled = NO; // 关闭cell宽度缩放 + self.myCategoryView.cellWidthZoomScale = 1.0; self.myCategoryView.selectedImageInfoArray = selectedImageNames; self.myCategoryView.loadImageBlock = ^(UIImageView *imageView, id info) { diff --git a/keyBoard/Class/Shop/VC/KBShopVC.m b/keyBoard/Class/Shop/VC/KBShopVC.m index 655f798..bf50b79 100644 --- a/keyBoard/Class/Shop/VC/KBShopVC.m +++ b/keyBoard/Class/Shop/VC/KBShopVC.m @@ -34,7 +34,7 @@ static const CGFloat JXheightForHeaderInSection = 50; - (void)viewDidLoad { [super viewDidLoad]; -// [self setupUI]; + [self setupUI]; } @@ -69,7 +69,8 @@ static const CGFloat JXheightForHeaderInSection = 50; // 左右滑动时不要文字渐变色 self.categoryView.titleColorGradientEnabled = NO; // 不需要文字放大效果 - self.categoryView.titleLabelZoomEnabled = NO; + self.categoryView.cellWidthZoomEnabled = NO; + self.categoryView.cellWidthZoomScale = 1.0; self.categoryView.contentScrollViewClickTransitionAnimationEnabled = NO; // Unselected items need a rounded gray background like the screenshot. // JXCategoryTitleView supports cell background colors via JXCategoryIndicatorView. @@ -89,6 +90,7 @@ static const CGFloat JXheightForHeaderInSection = 50; backgroundView.indicatorColor = [UIColor whiteColor]; // keep selected fill white backgroundView.layer.borderColor = [UIColor colorWithHex:0x02BEAC].CGColor; backgroundView.layer.borderWidth = 1; + backgroundView.indicatorWidthIncrement = 0; // 指示器宽度不额外加宽 // 点击切换时不需要左右滚动动画,直接跳转到目标位置 backgroundView.scrollEnabled = NO; backgroundView.scrollAnimationDuration = 0; From 883b22225487a5d62f292a9a12e57ca52d61f896 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 18:07:47 +0800 Subject: [PATCH 42/47] fix --- keyBoard/Class/Shop/VC/KBShopItemVC.h | 11 +- keyBoard/Class/Shop/VC/KBShopItemVC.m | 149 +++++++++++++------------- 2 files changed, 85 insertions(+), 75 deletions(-) diff --git a/keyBoard/Class/Shop/VC/KBShopItemVC.h b/keyBoard/Class/Shop/VC/KBShopItemVC.h index a32b6b2..cf5e84c 100644 --- a/keyBoard/Class/Shop/VC/KBShopItemVC.h +++ b/keyBoard/Class/Shop/VC/KBShopItemVC.h @@ -11,11 +11,16 @@ NS_ASSUME_NONNULL_BEGIN @interface KBShopItemVC : UIViewController -@property (nonatomic, strong) UITableView *tableView; -@property (nonatomic, strong) NSMutableArray *dataSource; +/// 列表:使用 UICollectionView 展示两列皮肤卡片 +@property (nonatomic, strong) UICollectionView *collectionView; +/// 数据源:简单字符串作为标题(演示用) +@property (nonatomic, strong) NSMutableArray *dataSource; +/// 是否需要上拉加载更多 @property (nonatomic, assign) BOOL isNeedFooter; +/// 是否需要下拉刷新 @property (nonatomic, assign) BOOL isNeedHeader; -@property (nonatomic, assign) BOOL isHeaderRefreshed; //默认为YES +/// 首次是否已刷新过(避免重复触发) +@property (nonatomic, assign) BOOL isHeaderRefreshed; // 默认为 YES @end NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Shop/VC/KBShopItemVC.m b/keyBoard/Class/Shop/VC/KBShopItemVC.m index 2cd9d90..89da023 100644 --- a/keyBoard/Class/Shop/VC/KBShopItemVC.m +++ b/keyBoard/Class/Shop/VC/KBShopItemVC.m @@ -7,59 +7,55 @@ #import "KBShopItemVC.h" #import -@interface KBShopItemVC () +#import +#import "KBSkinCardCell.h" +/// 商城列表:使用 UICollectionView,两列网格,复用 KBSkinCardCell +@interface KBShopItemVC () @property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); - @end @implementation KBShopItemVC - (void)viewDidLoad { [super viewDidLoad]; + self.view.backgroundColor = [UIColor whiteColor]; - _tableView = [[UITableView alloc] initWithFrame:CGRectZero style:UITableViewStylePlain]; - self.tableView.backgroundColor = [UIColor whiteColor]; - self.tableView.tableFooterView = [UIView new]; - self.tableView.dataSource = self; - self.tableView.delegate = self; - [self.tableView registerClass:[UITableViewCell class] forCellReuseIdentifier:@"cell"]; - - [self.view addSubview:self.tableView]; + // 懒加载 collectionView,并添加到视图 + [self.view addSubview:self.collectionView]; + [self.collectionView mas_makeConstraints:^(MASConstraintMaker *make) { + make.edges.equalTo(self.view); // mas 布局:铺满 + }]; - __weak typeof(self)weakSelf = self; + // 刷新组件(演示:2 秒后结束) + __weak typeof(self) weakSelf = self; if (self.isNeedHeader) { - self.tableView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ + self.collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingBlock:^{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [weakSelf.tableView.mj_header endRefreshing]; + [weakSelf.collectionView.mj_header endRefreshing]; }); }]; } if (self.isNeedFooter) { - self.tableView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ + self.collectionView.mj_footer = [MJRefreshAutoNormalFooter footerWithRefreshingBlock:^{ dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ - [weakSelf.dataSource addObject:@"加载更多成功"]; - [weakSelf.tableView reloadData]; - [weakSelf.tableView.mj_footer endRefreshing]; + [weakSelf.dataSource addObject:@"加载更多成功"]; // 模拟新增一条 + [weakSelf.collectionView reloadData]; + [weakSelf.collectionView.mj_footer endRefreshing]; }); }]; - if (@available(iOS 11.0, *)) { - self.tableView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; - } - } else { - //列表的contentInsetAdjustmentBehavior失效,需要自己设置底部inset -// self.tableView.contentInset = UIEdgeInsetsMake(0, 0, UIApplication.sharedApplication.keyWindow.jx_layoutInsets.bottom, 0); + } + + if (@available(iOS 11.0, *)) { + self.collectionView.contentInsetAdjustmentBehavior = UIScrollViewContentInsetAdjustmentNever; } [self beginFirstRefresh]; } -- (void)viewDidLayoutSubviews { - [super viewDidLayoutSubviews]; - - self.tableView.frame = self.view.bounds; -} +#pragma mark - 刷新控制 +// 首次进入自动触发一次刷新(如果需要) - (void)beginFirstRefresh { if (!self.isHeaderRefreshed) { [self beginRefreshImmediately]; @@ -68,74 +64,83 @@ - (void)beginRefreshImmediately { if (self.isNeedHeader) { - [self.tableView.mj_header beginRefreshing]; + [self.collectionView.mj_header beginRefreshing]; dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(2 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ self.isHeaderRefreshed = YES; - [self.tableView reloadData]; - [self.tableView.mj_header endRefreshing]; + [self.collectionView reloadData]; + [self.collectionView.mj_header endRefreshing]; }); - }else { + } else { self.isHeaderRefreshed = YES; - [self.tableView reloadData]; + [self.collectionView reloadData]; } } -#pragma mark - UITableViewDataSource, UITableViewDelegate +#pragma mark - UICollectionView DataSource -- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section { - if (!self.isHeaderRefreshed) { - return 0; - } +- (NSInteger)collectionView:(UICollectionView *)collectionView numberOfItemsInSection:(NSInteger)section { + if (!self.isHeaderRefreshed) return 0; return self.dataSource.count; } -- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath { - UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:@"cell" forIndexPath:indexPath]; - cell.textLabel.text = self.dataSource[indexPath.row]; +- (__kindof UICollectionViewCell *)collectionView:(UICollectionView *)collectionView cellForItemAtIndexPath:(NSIndexPath *)indexPath { + KBSkinCardCell *cell = [collectionView dequeueReusableCellWithReuseIdentifier:@"KBSkinCardCell" forIndexPath:indexPath]; + NSString *title = (indexPath.item < self.dataSource.count) ? self.dataSource[indexPath.item] : @"Dopamine"; + [cell configWithTitle:title imageURL:nil price:@"20"]; // 价格写死 20(演示) return cell; } -- (CGFloat)tableView:(UITableView *)tableView heightForRowAtIndexPath:(NSIndexPath *)indexPath { - return 50; +#pragma mark - UICollectionView DelegateFlowLayout + +- (CGSize)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout sizeForItemAtIndexPath:(NSIndexPath *)indexPath { + // 两列布局:左右 16 间距,中间列间距 12 + CGFloat insetLR = 16.0; + CGFloat spacing = 12.0; + CGFloat contentW = collectionView.bounds.size.width - insetLR * 2; + CGFloat itemW = floor((contentW - spacing) / 2.0); + CGFloat itemH = itemW * 0.75 + 56; // KBSkinCardCell 内部高度估算 + return CGSizeMake(itemW, itemH); } -- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { -// DetailViewController *detailVC = [[DetailViewController alloc] init]; -// detailVC.infoString = self.dataSource[indexPath.row]; -// [self.navigationController pushViewController:detailVC animated:YES]; +- (UIEdgeInsets)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout insetForSectionAtIndex:(NSInteger)section { + return UIEdgeInsetsMake(12, 16, 12, 16); } +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumLineSpacingForSectionAtIndex:(NSInteger)section { + return 12.0; +} + +- (CGFloat)collectionView:(UICollectionView *)collectionView layout:(UICollectionViewLayout *)collectionViewLayout minimumInteritemSpacingForSectionAtIndex:(NSInteger)section { + return 12.0; +} + +#pragma mark - UIScrollView Delegate(转发给分页容器) - (void)scrollViewDidScroll:(UIScrollView *)scrollView { !self.scrollCallback ?: self.scrollCallback(scrollView); } #pragma mark - JXPagingViewListViewDelegate +- (UIView *)listView { return self.view; } +- (UIScrollView *)listScrollView { return self.collectionView; } +- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { self.scrollCallback = callback; } +- (void)listWillAppear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); } +- (void)listDidAppear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); } +- (void)listWillDisappear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); } +- (void)listDidDisappear { NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); } -- (UIView *)listView { - return self.view; +#pragma mark - Lazy +- (UICollectionView *)collectionView { + if (!_collectionView) { + UICollectionViewFlowLayout *layout = [UICollectionViewFlowLayout new]; + layout.scrollDirection = UICollectionViewScrollDirectionVertical; + _collectionView = [[UICollectionView alloc] initWithFrame:CGRectZero collectionViewLayout:layout]; + _collectionView.backgroundColor = [UIColor whiteColor]; + _collectionView.dataSource = self; + _collectionView.delegate = self; + // 注册皮肤卡片 cell + [_collectionView registerClass:KBSkinCardCell.class forCellWithReuseIdentifier:@"KBSkinCardCell"]; // 复用标识 + } + return _collectionView; } -- (UIScrollView *)listScrollView { - return self.tableView; -} - -- (void)listViewDidScrollCallback:(void (^)(UIScrollView *))callback { - self.scrollCallback = callback; -} - -- (void)listWillAppear { - NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); -} - -- (void)listDidAppear { - NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); -} - -- (void)listWillDisappear { - NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); -} - -- (void)listDidDisappear { - NSLog(@"%@:%@", self.title, NSStringFromSelector(_cmd)); -} @end From e5ddcc4308410280a205203b028c1b6e80a42036 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 20:54:14 +0800 Subject: [PATCH 43/47] =?UTF-8?q?=E6=B7=BB=E5=8A=A0LYEmptyView=20'~>=200.3?= =?UTF-8?q?.10'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Podfile | 1 + Podfile.lock | 8 +- .../Indicator/JXCategoryIndicatorCell.m | 2 - Pods/LYEmptyView/LICENSE | 21 + .../LYEmptyView/LYEmptyView/LYEmptyBaseView.h | 146 + .../LYEmptyView/LYEmptyView/LYEmptyBaseView.m | 212 + Pods/LYEmptyView/LYEmptyView/LYEmptyView.h | 142 + Pods/LYEmptyView/LYEmptyView/LYEmptyView.m | 656 ++ .../LYEmptyView/LYEmptyViewHeader.h | 15 + Pods/LYEmptyView/LYEmptyView/UIView+Empty.h | 54 + Pods/LYEmptyView/LYEmptyView/UIView+Empty.m | 224 + .../LYEmptyView/UIView+LYExtension.h | 26 + .../LYEmptyView/UIView+LYExtension.m | 108 + Pods/LYEmptyView/README.md | 297 + Pods/Manifest.lock | 8 +- Pods/Pods.xcodeproj/project.pbxproj | 6391 +++++++++-------- .../xcschemes/LYEmptyView.xcscheme | 58 + .../LYEmptyView/LYEmptyView-Info.plist | 26 + .../LYEmptyView/LYEmptyView-dummy.m | 5 + .../LYEmptyView/LYEmptyView-prefix.pch | 12 + .../LYEmptyView/LYEmptyView-umbrella.h | 21 + .../LYEmptyView/LYEmptyView.debug.xcconfig | 12 + .../LYEmptyView/LYEmptyView.modulemap | 6 + .../LYEmptyView/LYEmptyView.release.xcconfig | 12 + .../Pods-keyBoard-acknowledgements.markdown | 25 + .../Pods-keyBoard-acknowledgements.plist | 31 + ...rd-frameworks-Debug-input-files.xcfilelist | 1 + ...d-frameworks-Debug-output-files.xcfilelist | 1 + ...-frameworks-Release-input-files.xcfilelist | 1 + ...frameworks-Release-output-files.xcfilelist | 1 + .../Pods-keyBoard/Pods-keyBoard-frameworks.sh | 2 + .../Pods-keyBoard.debug.xcconfig | 8 +- .../Pods-keyBoard.release.xcconfig | 8 +- keyBoard.xcodeproj/project.pbxproj | 28 +- 34 files changed, 5454 insertions(+), 3115 deletions(-) create mode 100644 Pods/LYEmptyView/LICENSE create mode 100644 Pods/LYEmptyView/LYEmptyView/LYEmptyBaseView.h create mode 100644 Pods/LYEmptyView/LYEmptyView/LYEmptyBaseView.m create mode 100755 Pods/LYEmptyView/LYEmptyView/LYEmptyView.h create mode 100755 Pods/LYEmptyView/LYEmptyView/LYEmptyView.m create mode 100644 Pods/LYEmptyView/LYEmptyView/LYEmptyViewHeader.h create mode 100644 Pods/LYEmptyView/LYEmptyView/UIView+Empty.h create mode 100644 Pods/LYEmptyView/LYEmptyView/UIView+Empty.m create mode 100644 Pods/LYEmptyView/LYEmptyView/UIView+LYExtension.h create mode 100644 Pods/LYEmptyView/LYEmptyView/UIView+LYExtension.m create mode 100644 Pods/LYEmptyView/README.md create mode 100644 Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LYEmptyView.xcscheme create mode 100644 Pods/Target Support Files/LYEmptyView/LYEmptyView-Info.plist create mode 100644 Pods/Target Support Files/LYEmptyView/LYEmptyView-dummy.m create mode 100644 Pods/Target Support Files/LYEmptyView/LYEmptyView-prefix.pch create mode 100644 Pods/Target Support Files/LYEmptyView/LYEmptyView-umbrella.h create mode 100644 Pods/Target Support Files/LYEmptyView/LYEmptyView.debug.xcconfig create mode 100644 Pods/Target Support Files/LYEmptyView/LYEmptyView.modulemap create mode 100644 Pods/Target Support Files/LYEmptyView/LYEmptyView.release.xcconfig diff --git a/Podfile b/Podfile index b4c0cbf..4a60ff4 100644 --- a/Podfile +++ b/Podfile @@ -15,6 +15,7 @@ target 'keyBoard' do pod 'HWPanModal', '~> 0.9.9' pod 'LSTPopView', '~> 0.3.10' pod 'LookinServer', :configurations => ['Debug'] + pod 'LYEmptyView' pod 'Masonry', '1.1.0' pod 'MBProgressHUD', '1.2.0' pod 'MJExtension', '3.4.2' diff --git a/Podfile.lock b/Podfile.lock index 9ed0f51..b42892d 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -29,6 +29,7 @@ PODS: - LSTPopView/Code (0.3.10): - LSTTimer - LSTTimer (0.2.10) + - LYEmptyView (1.3.1) - Masonry (1.1.0) - MBProgressHUD (1.2.0) - MJExtension (3.4.2) @@ -43,10 +44,11 @@ DEPENDENCIES: - DZNEmptyDataSet (= 1.8.1) - FLAnimatedImage (~> 1.0.17) - HWPanModal (~> 0.9.9) - - JXCategoryView + - JXCategoryView (~> 1.6.8) - JXPagingView/Pager (~> 2.1.3) - LookinServer - LSTPopView (~> 0.3.10) + - LYEmptyView - Masonry (= 1.1.0) - MBProgressHUD (= 1.2.0) - MJExtension (= 3.4.2) @@ -65,6 +67,7 @@ SPEC REPOS: - LookinServer - LSTPopView - LSTTimer + - LYEmptyView - Masonry - MBProgressHUD - MJExtension @@ -82,12 +85,13 @@ SPEC CHECKSUMS: LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80 LSTPopView: 9379f00f6ce7d1fc620b50ab00ed3ef97b2d4d52 LSTTimer: caf8f02ff366ca175cf4c1778d26c166183c1b6f + LYEmptyView: b6d418cfa38b78df0cf243f9a9c25ccbdc399922 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 MJExtension: e97d164cb411aa9795cf576093a1fa208b4a8dd8 MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: ce689000a7b9b24f5d74cc50a93350665c3af035 +PODFILE CHECKSUM: e5e2037c9180ed40ba4a0e264e837eaf839ca6b2 COCOAPODS: 1.16.2 diff --git a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m index 152ee90..390701f 100644 --- a/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m +++ b/Pods/JXCategoryView/Sources/Indicator/JXCategoryIndicatorCell.m @@ -20,8 +20,6 @@ self.separatorLine = [[UIView alloc] init]; self.separatorLine.hidden = YES; - /// STTODO 修改 - self.contentView.layer.cornerRadius = 4; [self.contentView addSubview:self.separatorLine]; } diff --git a/Pods/LYEmptyView/LICENSE b/Pods/LYEmptyView/LICENSE new file mode 100644 index 0000000..6d38ce5 --- /dev/null +++ b/Pods/LYEmptyView/LICENSE @@ -0,0 +1,21 @@ +MIT License + +Copyright (c) 2017 yang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. diff --git a/Pods/LYEmptyView/LYEmptyView/LYEmptyBaseView.h b/Pods/LYEmptyView/LYEmptyView/LYEmptyBaseView.h new file mode 100644 index 0000000..e2b273d --- /dev/null +++ b/Pods/LYEmptyView/LYEmptyView/LYEmptyBaseView.h @@ -0,0 +1,146 @@ +// +// LYEmptyBaseView.h +// LYEmptyViewDemo +// +// Created by liyang on 2017/5/5. +// Copyright © 2017年 liyang. All rights reserved. +// + +#import +#import "UIView+LYExtension.h" + +//事件回调 +typedef void (^LYActionTapBlock)(void); + +@interface LYEmptyBaseView : UIView + +/////////属性传递(可修改) +/* image 的优先级大于 imageStr,只有一个有效*/ +@property (nonatomic, strong)UIImage *image; +@property (nonatomic, copy) NSString *imageStr; +@property (nonatomic, copy) NSString *titleStr; +@property (nonatomic, copy) NSString *detailStr; +@property (nonatomic, copy) NSString *btnTitleStr; + +/////////属性传递 (只读) +@property (nonatomic,strong,readonly) UIView *contentView; +@property (nonatomic, weak, readonly) id actionBtnTarget; +@property (nonatomic,assign,readonly) SEL actionBtnAction; +@property (nonatomic, copy, readonly) LYActionTapBlock btnClickBlock; +@property (nonatomic,strong,readonly) UIView *customView; + +/** + emptyView点击事件 + */ +@property (nonatomic, copy) LYActionTapBlock tapEmptyViewBlock; + + +///初始化配置 +- (void)prepare; + +///重置Subviews +- (void)setupSubviews; + + +/** + 构造方法 - 创建emptyView + + @param image 占位图片 + @param titleStr 标题 + @param detailStr 详细描述 + @param btnTitleStr 按钮的名称 + @param target 响应的对象 + @param action 按钮点击事件 + @return 返回一个emptyView + */ ++ (instancetype)emptyActionViewWithImage:(UIImage *)image + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr + btnTitleStr:(NSString *)btnTitleStr + target:(id)target + action:(SEL)action; + +/** + 构造方法 - 创建emptyView + + @param image 占位图片 + @param titleStr 占位描述 + @param detailStr 详细描述 + @param btnTitleStr 按钮的名称 + @param btnClickBlock 按钮点击事件回调 + @return 返回一个emptyView + */ ++ (instancetype)emptyActionViewWithImage:(UIImage *)image + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr + btnTitleStr:(NSString *)btnTitleStr + btnClickBlock:(LYActionTapBlock)btnClickBlock; + +/** + 构造方法 - 创建emptyView + + @param imageStr 占位图片名称 + @param titleStr 标题 + @param detailStr 详细描述 + @param btnTitleStr 按钮的名称 + @param target 响应的对象 + @param action 按钮点击事件 + @return 返回一个emptyView + */ ++ (instancetype)emptyActionViewWithImageStr:(NSString *)imageStr + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr + btnTitleStr:(NSString *)btnTitleStr + target:(id)target + action:(SEL)action; + +/** + 构造方法 - 创建emptyView + + @param imageStr 占位图片名称 + @param titleStr 占位描述 + @param detailStr 详细描述 + @param btnTitleStr 按钮的名称 + @param btnClickBlock 按钮点击事件回调 + @return 返回一个emptyView + */ ++ (instancetype)emptyActionViewWithImageStr:(NSString *)imageStr + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr + btnTitleStr:(NSString *)btnTitleStr + btnClickBlock:(LYActionTapBlock)btnClickBlock; + +/** + 构造方法 - 创建emptyView + + @param image 占位图片 + @param titleStr 占位描述 + @param detailStr 详细描述 + @return 返回一个没有点击事件的emptyView + */ ++ (instancetype)emptyViewWithImage:(UIImage *)image + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr; + +/** + 构造方法 - 创建emptyView + + @param imageStr 占位图片名称 + @param titleStr 占位描述 + @param detailStr 详细描述 + @return 返回一个没有点击事件的emptyView + */ ++ (instancetype)emptyViewWithImageStr:(NSString *)imageStr + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr; + +/** + 构造方法 - 创建一个自定义的emptyView + + @param customView 自定义view + @return 返回一个自定义内容的emptyView + */ ++ (instancetype)emptyViewWithCustomView:(UIView *)customView; + + +@end diff --git a/Pods/LYEmptyView/LYEmptyView/LYEmptyBaseView.m b/Pods/LYEmptyView/LYEmptyView/LYEmptyBaseView.m new file mode 100644 index 0000000..a5898aa --- /dev/null +++ b/Pods/LYEmptyView/LYEmptyView/LYEmptyBaseView.m @@ -0,0 +1,212 @@ +// +// LYEmptyBaseView.h +// LYEmptyViewDemo +// +// Created by liyang on 2017/5/5. +// Copyright © 2017年 liyang. All rights reserved. +// + +#import "LYEmptyBaseView.h" + +@interface LYEmptyBaseView () + +@end + +@implementation LYEmptyBaseView + +#pragma mark - ------------------ Life Cycle ------------------ +- (instancetype)init +{ + self = [super init]; + if (self) { + [self initialize]; + [self prepare]; + } + return self; +} + +- (void)initialize{ +} + +- (void)prepare{ + self.autoresizingMask = UIViewAutoresizingFlexibleWidth | UIViewAutoresizingFlexibleHeight; +} + +- (void)layoutSubviews +{ + [super layoutSubviews]; + + UIView *view = self.superview; + //不是UIView,不做操作 + if (view && [view isKindOfClass:[UIView class]]){ + self.ly_width = view.ly_width; + self.ly_height = view.ly_height; + } + + [self setupSubviews]; +} + +- (void)setupSubviews{ +} + +- (void)willMoveToSuperview:(UIView *)newSuperview +{ + [super willMoveToSuperview:newSuperview]; + + //不是UIView,不做操作 + if (newSuperview && ![newSuperview isKindOfClass:[UIView class]]) return; + + if (newSuperview) { + self.ly_width = newSuperview.ly_width; + self.ly_height = newSuperview.ly_height; + } +} + +#pragma mark - ------------------ 实例化 ------------------ ++ (instancetype)emptyActionViewWithImage:(UIImage *)image + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr + btnTitleStr:(NSString *)btnTitleStr + target:(id)target + action:(SEL)action{ + + LYEmptyBaseView *emptyView = [[self alloc] init]; + [emptyView creatEmptyViewWithImage:image imageStr:nil titleStr:titleStr detailStr:detailStr btnTitleStr:btnTitleStr target:target action:action btnClickBlock:nil]; + + return emptyView; +} + ++ (instancetype)emptyActionViewWithImage:(UIImage *)image + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr + btnTitleStr:(NSString *)btnTitleStr + btnClickBlock:(LYActionTapBlock)btnClickBlock{ + + LYEmptyBaseView *emptyView = [[self alloc] init]; + [emptyView creatEmptyViewWithImage:image imageStr:nil titleStr:titleStr detailStr:detailStr btnTitleStr:btnTitleStr target:nil action:nil btnClickBlock:btnClickBlock]; + + return emptyView; +} + ++ (instancetype)emptyActionViewWithImageStr:(NSString *)imageStr + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr + btnTitleStr:(NSString *)btnTitleStr + target:(id)target + action:(SEL)action{ + + LYEmptyBaseView *emptyView = [[self alloc] init]; + [emptyView creatEmptyViewWithImage:nil imageStr:imageStr titleStr:titleStr detailStr:detailStr btnTitleStr:btnTitleStr target:target action:action btnClickBlock:nil]; + + return emptyView; +} + ++ (instancetype)emptyActionViewWithImageStr:(NSString *)imageStr + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr + btnTitleStr:(NSString *)btnTitleStr + btnClickBlock:(LYActionTapBlock)btnClickBlock{ + + LYEmptyBaseView *emptyView = [[self alloc] init]; + [emptyView creatEmptyViewWithImage:nil imageStr:imageStr titleStr:titleStr detailStr:detailStr btnTitleStr:btnTitleStr target:nil action:nil btnClickBlock:btnClickBlock]; + + return emptyView; +} + ++ (instancetype)emptyViewWithImage:(UIImage *)image + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr{ + + LYEmptyBaseView *emptyView = [[self alloc] init]; + [emptyView creatEmptyViewWithImage:image imageStr:nil titleStr:titleStr detailStr:detailStr btnTitleStr:nil target:nil action:nil btnClickBlock:nil]; + + return emptyView; +} + ++ (instancetype)emptyViewWithImageStr:(NSString *)imageStr + titleStr:(NSString *)titleStr + detailStr:(NSString *)detailStr{ + + LYEmptyBaseView *emptyView = [[self alloc] init]; + [emptyView creatEmptyViewWithImage:nil imageStr:imageStr titleStr:titleStr detailStr:detailStr btnTitleStr:nil target:nil action:nil btnClickBlock:nil]; + + return emptyView; +} + ++ (instancetype)emptyViewWithCustomView:(UIView *)customView{ + + LYEmptyBaseView *emptyView = [[self alloc] init]; + [emptyView creatEmptyViewWithCustomView:customView]; + + return emptyView; +} + +- (void)creatEmptyViewWithImage:(UIImage *)image imageStr:(NSString *)imageStr titleStr:(NSString *)titleStr detailStr:(NSString *)detailStr btnTitleStr:(NSString *)btnTitleStr target:(id)target action:(SEL)action btnClickBlock:(LYActionTapBlock)btnClickBlock{ + + _image = image; + _imageStr = imageStr; + _titleStr = titleStr; + _detailStr = detailStr; + _btnTitleStr = btnTitleStr; + _actionBtnTarget = target; + _actionBtnAction = action; + _btnClickBlock = btnClickBlock; + + //内容物背景视图 + if (!_contentView) { + _contentView = [[UIView alloc] initWithFrame:CGRectZero]; + [self addSubview:_contentView]; + } + + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapEmptyView:)]; + [self addGestureRecognizer:tap]; +} + +- (void)creatEmptyViewWithCustomView:(UIView *)customView{ + + //内容物背景视图 + if (!_contentView) { + _contentView = [[UIView alloc] initWithFrame:CGRectZero]; + [self addSubview:_contentView]; + } + + if (!_customView) { + [_contentView addSubview:customView]; + } + _customView = customView; + + UITapGestureRecognizer *tap = [[UITapGestureRecognizer alloc] initWithTarget:self action:@selector(tapEmptyView:)]; + [self addGestureRecognizer:tap]; +} + +#pragma mark - ------------------ Event Method ------------------ +- (void)tapEmptyView:(UITapGestureRecognizer *)tap{ + if (_tapEmptyViewBlock) { + _tapEmptyViewBlock(); + } +} + +#pragma mark - ------------------ Setter ------------------ + +- (void)setImage:(UIImage *)image{ + _image = image; + [self setNeedsLayout]; +} +- (void)setImageStr:(NSString *)imageStr{ + _imageStr = imageStr; + [self setNeedsLayout]; +} +- (void)setTitleStr:(NSString *)titleStr{ + _titleStr = titleStr; + [self setNeedsLayout]; +} +- (void)setDetailStr:(NSString *)detailStr{ + _detailStr = detailStr; + [self setNeedsLayout]; +} +- (void)setBtnTitleStr:(NSString *)btnTitleStr{ + _btnTitleStr = btnTitleStr; + [self setNeedsLayout]; +} + +@end diff --git a/Pods/LYEmptyView/LYEmptyView/LYEmptyView.h b/Pods/LYEmptyView/LYEmptyView/LYEmptyView.h new file mode 100755 index 0000000..a6c2a92 --- /dev/null +++ b/Pods/LYEmptyView/LYEmptyView/LYEmptyView.h @@ -0,0 +1,142 @@ +// +// LYEmptyView.h +// LYEmptyViewDemo +// +// Created by liyang on 2017/5/10. +// Copyright © 2017年 liyang. All rights reserved. +// + +#import "LYEmptyBaseView.h" + +@interface LYEmptyView : LYEmptyBaseView + +/** + 是否自动显隐EmptyView, default=YES + */ +@property (nonatomic, assign) BOOL autoShowEmptyView; + +/** + 占位图是否完全覆盖父视图, default=NO + 当设置为YES后,占位图的backgroundColor默认为浅白色,可自行设置 + */ +@property (nonatomic, assign) BOOL emptyViewIsCompleteCoverSuperView; + +/** + 内容物上每个子控件之间的间距 default is 20.f , 这是统一设置的,每个子控件可单独设置 + */ +@property (nonatomic, assign) CGFloat subViewMargin; + +/** + 内容物-垂直方向偏移 (此属性与contentViewY 互斥,只有一个会有效) + */ +@property (nonatomic, assign) CGFloat contentViewOffset; + +/** + 内容物-Y坐标 (此属性与contentViewOffset 互斥,只有一个会有效) + */ +@property (nonatomic, assign) CGFloat contentViewY; + +/** + 是否忽略scrollView的contentInset + */ +@property (nonatomic, assign) BOOL ignoreContentInset; + + +//-------------------------- image --------------------------// +/** + 图片可设置固定大小 (default=图片实际大小) + */ +@property (nonatomic, assign) CGSize imageSize; + + +//-------------------------- titleLab 相关 --------------------------// +/** + 标题字体, 大小default is 16.f + */ +@property (nonatomic, strong) UIFont *titleLabFont; + +/** + 标题文字颜色 + */ +@property (nonatomic, strong) UIColor *titleLabTextColor; + +/** + 标题与图片之间的间距 default is @subViewMargin + */ +@property (nonatomic, assign) CGFloat titleLabMargin; + + +//-------------------------- detailLab 相关 --------------------------// +/** + 详细描述字体,大小default is 14.f + */ +@property (nonatomic, strong) UIFont *detailLabFont; + +/** + 详细描述最大行数, default is 2 + */ +@property (nonatomic, assign) NSInteger detailLabMaxLines; + +/** + 详细描述文字颜色 + */ +@property (nonatomic, strong) UIColor *detailLabTextColor; + +/** + 详细描述文字行间距 + */ +@property (nonatomic, assign) NSInteger detailLabLineSpacing; + +/** + 详细描述 与 (标题或图片) 之间的间距 default is @subViewMargin + */ +@property (nonatomic, assign) CGFloat detailLabMargin; + + +//-------------------------- Button 相关 --------------------------// +/** + 按钮字体, 大小default is 14.f + */ +@property (nonatomic, strong) UIFont *actionBtnFont; +/** + 按钮的高度, default is 40.f + */ +@property (nonatomic, assign) CGFloat actionBtnHeight; +/** + 按钮的宽度, default is 0.f, (此属性和actionBtnHorizontalMargin只有一个有效,都>0时,此属性优先级大) + */ +@property (nonatomic, assign) CGFloat actionBtnWidth; +/** + 按钮的水平方向内边距, default is 30.f, (此属性和actionBtnWidth只有一个有效,都>0时,此属性优先级小) + */ +@property (nonatomic, assign) CGFloat actionBtnHorizontalMargin; +/** + 按钮的圆角大小, default is 0 + */ +@property (nonatomic, assign) CGFloat actionBtnCornerRadius; +/** + 按钮边框border的宽度, default is 0 + */ +@property (nonatomic, assign) CGFloat actionBtnBorderWidth; +/** + 按钮边框颜色 + */ +@property (nonatomic, strong) UIColor *actionBtnBorderColor; +/** + 按钮文字颜色 + */ +@property (nonatomic, strong) UIColor *actionBtnTitleColor; +/** + 按钮背景颜色 + */ +@property (nonatomic, strong) UIColor *actionBtnBackGroundColor; +/** + 按钮背景渐变颜色集合,2个 + */ +@property (nonatomic, strong) NSArray *actionBtnBackGroundGradientColors; +/** + 按钮 与 (详细描述或标题或图片) 之间的间距 default is @subViewMargin + */ +@property (nonatomic, assign) CGFloat actionBtnMargin; + +@end diff --git a/Pods/LYEmptyView/LYEmptyView/LYEmptyView.m b/Pods/LYEmptyView/LYEmptyView/LYEmptyView.m new file mode 100755 index 0000000..5178b45 --- /dev/null +++ b/Pods/LYEmptyView/LYEmptyView/LYEmptyView.m @@ -0,0 +1,656 @@ +// +// LYEmptyView.m +// LYEmptyViewDemo +// +// Created by liyang on 2017/5/10. +// Copyright © 2017年 liyang. All rights reserved. +// + +#import "LYEmptyView.h" + +//每个子控件之间的间距 +#define kSubViewMargin 20.f + +//描述字体 +#define kTitleLabFont [UIFont systemFontOfSize:16.f] + +//详细描述字体 +#define kDetailLabFont [UIFont systemFontOfSize:14.f] + +//按钮字体大小 +#define kActionBtnFont [UIFont systemFontOfSize:14.f] + +//按钮高度 +#define kActionBtnHeight 40.f +//按钮宽度 +#define kActionBtnWidth 120.f +//水平方向内边距 +#define kActionBtnHorizontalMargin 30.f + +//背景色 +#define kBackgroundColor [UIColor colorWithRed:250.f/255.f green:250.f/255.f blue:250.f/255.f alpha:1.f] +//黑色 +#define kBlackColor [UIColor colorWithRed:0.3f green:0.3f blue:0.3f alpha:1.f] +//灰色 +#define kGrayColor [UIColor colorWithRed:0.5f green:0.5f blue:0.5f alpha:1.f] + +@interface LYEmptyView () + +@property (nonatomic, strong) UIImageView *promptImageView; +@property (nonatomic, strong) UILabel *titleLabel; +@property (nonatomic, strong) UILabel *detailLabel; +@property (nonatomic, strong) UIButton *actionButton; +@property (nonatomic, strong) UIView *customV; + +@end + +@implementation LYEmptyView +{ + CGFloat contentMaxWidth; //最大宽度 + CGFloat contentWidth; //内容物宽度 + CGFloat contentHeight; //内容物高度 + CGFloat subViweMargin; //内容物上每个子控件之间的间距 +} + +- (void)initialize{ + self.actionBtnHeight = 40.f; + self.actionBtnWidth = 120.f; + self.actionBtnHorizontalMargin = 30.f; + self.detailLabMaxLines = 2; +} + +- (void)prepare{ + [super prepare]; + + self.autoShowEmptyView = YES; //默认自动显隐 + self.contentViewY = 1000; //默认值,用来判断是否设置过content的Y值 +} + +- (void)setupSubviews{ + [super setupSubviews]; + + contentMaxWidth = self.emptyViewIsCompleteCoverSuperView ? self.ly_width : self.ly_width - 30.f; + contentWidth = 0;//内容物宽度 + contentHeight = 0;//内容物高度 + subViweMargin = self.subViewMargin ? self.subViewMargin : kSubViewMargin; + + //占位图片 + UIImage *image; + if (self.imageStr.length) { + image = [UIImage imageNamed:self.imageStr]; + } + if(self.image){ + [self setupPromptImageView:self.image]; + }else if (image) { + [self setupPromptImageView:image]; + } else{ + if (_promptImageView) { + [self.promptImageView removeFromSuperview]; + self.promptImageView = nil; + } + } + + //标题 + if (self.titleStr.length) { + [self setupTitleLabel:self.titleStr]; + }else{ + if (_titleLabel) { + [self.titleLabel removeFromSuperview]; + self.titleLabel = nil; + } + } + + //详细描述 + if (self.detailStr.length) { + [self setupDetailLabel:self.detailStr]; + }else{ + if (_detailLabel) { + [self.detailLabel removeFromSuperview]; + self.detailLabel = nil; + } + } + + //按钮 + if (self.btnTitleStr.length) { + if (self.actionBtnTarget && self.actionBtnAction) { + [self setupActionBtn:self.btnTitleStr target:self.actionBtnTarget action:self.actionBtnAction btnClickBlock:nil]; + }else if (self.btnClickBlock) { + [self setupActionBtn:self.btnTitleStr target:nil action:nil btnClickBlock:self.btnClickBlock]; + }else{ + if (_actionButton) { + [self.actionButton removeFromSuperview]; + self.actionButton = nil; + } + } + }else{ + if (_actionButton) { + [self.actionButton removeFromSuperview]; + self.actionButton = nil; + } + } + + //自定义view + if (self.customView) { + contentWidth = self.customView.ly_width; + contentHeight = self.customView.ly_maxY; + } + + ///设置frame + [self setSubViewFrame]; +} + +- (void)setSubViewFrame{ + + //emptyView初始宽高 + CGFloat originEmptyWidth = self.ly_width; + CGFloat originEmptyHeight = self.ly_height; + + CGFloat emptyViewCenterX = originEmptyWidth * 0.5f; + CGFloat emptyViewCenterY = originEmptyHeight * 0.5f; + + //不是完全覆盖父视图时,重新设置self的frame(大小为content的大小) + if (!self.emptyViewIsCompleteCoverSuperView) { + self.ly_size = CGSizeMake(contentWidth, contentHeight); + } + self.center = CGPointMake(emptyViewCenterX, emptyViewCenterY); + + //设置contentView + self.contentView.ly_size = CGSizeMake(contentWidth, contentHeight); + if (self.emptyViewIsCompleteCoverSuperView) { + self.contentView.center = CGPointMake(emptyViewCenterX, emptyViewCenterY); + } else { + self.contentView.center = CGPointMake(contentWidth*0.5, contentHeight*0.5); + } + + //子控件的centerX设置 + CGFloat centerX = self.contentView.ly_width * 0.5f; + if (self.customView) { + self.customView.ly_centerX = centerX; + + }else{ + _promptImageView.ly_centerX = centerX; + _titleLabel.ly_centerX = centerX; + _detailLabel.ly_centerX = centerX; + _actionButton.ly_centerX = centerX; + } + + if (self.contentViewOffset) { //有无设置偏移 + self.ly_centerY += self.contentViewOffset; + + } else if (self.contentViewY < 1000) { //有无设置Y坐标值 + self.ly_y = self.contentViewY; + + } + + //是否忽略scrollView的contentInset + if (self.ignoreContentInset && [self.superview isKindOfClass:[UIScrollView class]]) { + UIScrollView *scrollView = (UIScrollView *)self.superview; + self.ly_centerY -= scrollView.contentInset.top; + self.ly_centerX -= scrollView.contentInset.left; + self.ly_centerY += scrollView.contentInset.bottom; + self.ly_centerX += scrollView.contentInset.right; + } +} + +#pragma mark - ------------------ Setup View ------------------ +- (void)setupPromptImageView:(UIImage *)img{ + + self.promptImageView.image = img; + + CGFloat imgViewWidth = img.size.width; + CGFloat imgViewHeight = img.size.height; + + if (self.imageSize.width && self.imageSize.height) {//设置了宽高大小 + if (imgViewWidth > imgViewHeight) {//以宽为基准,按比例缩放高度 + imgViewHeight = (imgViewHeight / imgViewWidth) * self.imageSize.width; + imgViewWidth = self.imageSize.width; + + }else{//以高为基准,按比例缩放宽度 + imgViewWidth = (imgViewWidth / imgViewHeight) * self.imageSize.height; + imgViewHeight = self.imageSize.height; + } + } + self.promptImageView.frame = CGRectMake(0, 0, imgViewWidth, imgViewHeight); + + contentWidth = self.promptImageView.ly_size.width; + contentHeight = self.promptImageView.ly_maxY; +} + +- (void)setupTitleLabel:(NSString *)titleStr{ + + UIFont *font = self.titleLabFont.pointSize ? self.titleLabFont : kTitleLabFont; + CGFloat fontSize = font.pointSize; + UIColor *textColor = self.titleLabTextColor ? self.titleLabTextColor : kBlackColor; + CGFloat titleMargin = self.titleLabMargin > 0 ? self.titleLabMargin : (contentHeight == 0 ?: subViweMargin); + CGSize size = [self returnTextWidth:titleStr size:CGSizeMake(contentMaxWidth, fontSize + 5) font:font]; + + CGFloat width = size.width; + CGFloat height = size.height; + + self.titleLabel.frame = CGRectMake(0, contentHeight + titleMargin, width, height); + self.titleLabel.font = font; + self.titleLabel.text = titleStr; + self.titleLabel.textColor = textColor; + + contentWidth = width > contentWidth ? width : contentWidth; + contentHeight = self.titleLabel.ly_maxY; +} + +- (void)setupDetailLabel:(NSString *)detailStr{ + + UIColor *textColor = self.detailLabTextColor ? self.detailLabTextColor : kGrayColor; + UIFont *font = self.detailLabFont.pointSize ? self.detailLabFont : kDetailLabFont; + CGFloat fontSize = font.pointSize; + CGFloat maxLines = self.detailLabMaxLines > 0 ? self.detailLabMaxLines : 1; + CGFloat detailMargin = self.detailLabMargin > 0 ? self.detailLabMargin : (contentHeight == 0 ?: subViweMargin); + self.detailLabel.font = font; + self.detailLabel.textColor = textColor; + self.detailLabel.text = detailStr; + + CGFloat width = 0; + CGFloat height = 0; + + //设置行高 + if(self.detailLabLineSpacing){ + + CGFloat maxHeight = maxLines * (fontSize + 5) + (maxLines-1) * self.detailLabLineSpacing; + + NSDictionary *dic = [self sizeWithAttributedString:self.detailLabel.text font:font lineSpacing:self.detailLabLineSpacing maxSize:CGSizeMake(contentMaxWidth, maxHeight)]; + + NSMutableAttributedString *attStr = dic[@"attributed"]; + NSValue *sizeValue = dic[@"size"]; + CGSize size = sizeValue.CGSizeValue; + width = size.width; + height = size.height; + self.detailLabel.attributedText = attStr; + + } + else{ + + CGFloat maxHeight = maxLines * (fontSize + 5); + CGSize size = [self returnTextWidth:detailStr size:CGSizeMake(contentMaxWidth, maxHeight) font:font];//计算得出label大小 + width = size.width; + height = size.height; + } + + self.detailLabel.frame = CGRectMake(0, contentHeight + detailMargin, width, height); + + contentWidth = width > contentWidth ? width : contentWidth; + contentHeight = self.detailLabel.ly_maxY; + +} + +- (void)setupActionBtn:(NSString *)btnTitle target:(id)target action:(SEL)action btnClickBlock:(LYActionTapBlock)btnClickBlock{ + + UIFont *font = self.actionBtnFont.pointSize ? self.actionBtnFont : kActionBtnFont; + CGFloat fontSize = font.pointSize; + UIColor *titleColor = self.actionBtnTitleColor ?: kBlackColor; + UIColor *backGColor = self.actionBtnBackGroundColor ?: [UIColor whiteColor]; + UIColor *borderColor = self.actionBtnBorderColor ?: [UIColor colorWithRed:0.8f green:0.8f blue:0.8f alpha:1.f]; + CGFloat borderWidth = self.actionBtnBorderWidth ?: 0; + CGFloat cornerRadius = self.actionBtnCornerRadius ?: 0; + CGFloat width = self.actionBtnWidth; + CGFloat horiMargin = self.actionBtnHorizontalMargin; + CGFloat height = self.actionBtnHeight; + CGSize textSize = [self returnTextWidth:btnTitle size:CGSizeMake(contentMaxWidth, fontSize) font:font];//计算得出title文字内容大小 + if (height < textSize.height) { + height = textSize.height + 4.f; + } + + //按钮的宽 + CGFloat btnWidth = textSize.width; + if (width) { + btnWidth = width; + } else if (horiMargin) { + btnWidth = textSize.width + horiMargin * 2.f; + } + + //按钮的高 + CGFloat btnHeight = height; + btnWidth = btnWidth > contentMaxWidth ? contentMaxWidth : btnWidth; + CGFloat btnMargin = self.actionBtnMargin > 0 ? self.actionBtnMargin : (contentHeight == 0 ?: subViweMargin); + + self.actionButton.frame = CGRectMake(0, contentHeight + btnMargin, btnWidth, btnHeight); + [self.actionButton setTitle:btnTitle forState:UIControlStateNormal]; + self.actionButton.titleLabel.font = font; + self.actionButton.backgroundColor = backGColor; + if (self.actionBtnBackGroundGradientColors) [self addGradientWithView:self.actionButton gradientColors:self.actionBtnBackGroundGradientColors]; + [self.actionButton setTitleColor:titleColor forState:UIControlStateNormal]; + self.actionButton.layer.borderColor = borderColor.CGColor; + self.actionButton.layer.borderWidth = borderWidth; + self.actionButton.layer.cornerRadius = cornerRadius; + + //添加事件 + if (target && action) { + [self.actionButton addTarget:target action:action forControlEvents:UIControlEventTouchUpInside]; + [self.actionButton addTarget:self action:@selector(actionBtnClick:) forControlEvents:UIControlEventTouchUpInside]; + }else if (btnClickBlock) { + [self.actionButton addTarget:self action:@selector(actionBtnClick:) forControlEvents:UIControlEventTouchUpInside]; + } + + contentWidth = btnWidth > contentWidth ? btnWidth : contentWidth; + contentHeight = self.actionButton.ly_maxY; +} + +#pragma mark - ------------------ Event Method ------------------ +- (void)actionBtnClick:(UIButton *)sender{ + if (self.btnClickBlock) { + self.btnClickBlock(); + } +} + +#pragma mark - ------------------ setter ------------------ + +- (void)setEmptyViewIsCompleteCoverSuperView:(BOOL)emptyViewIsCompleteCoverSuperView{ + _emptyViewIsCompleteCoverSuperView = emptyViewIsCompleteCoverSuperView; + if (emptyViewIsCompleteCoverSuperView) { + if (!self.backgroundColor || [self.backgroundColor isEqual:[UIColor clearColor]]) { + self.backgroundColor = kBackgroundColor; + } + [self setNeedsLayout]; + }else{ + self.backgroundColor = [UIColor clearColor]; + } +} + +#pragma mark 内容物背景视图 相关 +- (void)setSubViewMargin:(CGFloat)subViewMargin{ + if (_subViewMargin != subViewMargin) { + _subViewMargin = subViewMargin; + + [self reSetupSubviews]; + } +} +- (void)setTitleLabMargin:(CGFloat)titleLabMargin{ + if (_titleLabMargin != titleLabMargin) { + _titleLabMargin = titleLabMargin; + + [self reSetupSubviews]; + } +} +- (void)setDetailLabMargin:(CGFloat)detailLabMargin{ + if (_detailLabMargin != detailLabMargin) { + _detailLabMargin = detailLabMargin; + + [self reSetupSubviews]; + } +} +- (void)setActionBtnMargin:(CGFloat)actionBtnMargin{ + if (_actionBtnMargin != actionBtnMargin) { + _actionBtnMargin = actionBtnMargin; + + [self reSetupSubviews]; + } +} +- (void)reSetupSubviews{ + if (_promptImageView || _titleLabel || _detailLabel || _actionButton || self.customView) {//此判断的意思只是确定self是否已加载完毕 + [self setupSubviews]; + } +} +- (void)setContentViewOffset:(CGFloat)contentViewOffset{ + if (_contentViewOffset != contentViewOffset) { + _contentViewOffset = contentViewOffset; + + if (_promptImageView || _titleLabel || _detailLabel || _actionButton || self.customView) { + self.ly_centerY += self.contentViewOffset; + } + } +} +- (void)setContentViewY:(CGFloat)contentViewY{ + if (_contentViewY != contentViewY) { + _contentViewY = contentViewY; + + if (_promptImageView || _titleLabel || _detailLabel || _actionButton || self.customView) { + self.ly_y = self.contentViewY; + } + } +} + +#pragma mark 提示图Image 相关 +- (void)setImageSize:(CGSize)imageSize{ + if (_imageSize.width != imageSize.width || _imageSize.height != imageSize.height) { + _imageSize = imageSize; + + if (_promptImageView) { + [self setupSubviews]; + } + } +} + +#pragma mark 描述Label 相关 +- (void)setTitleLabFont:(UIFont *)titleLabFont{ + if (_titleLabFont != titleLabFont) { + _titleLabFont = titleLabFont; + + if (_titleLabel) { + [self setupSubviews]; + } + } + +} +- (void)setTitleLabTextColor:(UIColor *)titleLabTextColor{ + if (_titleLabTextColor != titleLabTextColor) { + _titleLabTextColor = titleLabTextColor; + + if (_titleLabel) { + _titleLabel.textColor = titleLabTextColor; + } + } +} + +#pragma mark 详细描述Label 相关 +- (void)setDetailLabFont:(UIFont *)detailLabFont{ + if (_detailLabFont != detailLabFont) { + _detailLabFont = detailLabFont; + + if (_detailLabel) { + [self setupSubviews]; + } + } +} +- (void)setDetailLabMaxLines:(NSInteger)detailLabMaxLines{ + if (_detailLabMaxLines != detailLabMaxLines) { + _detailLabMaxLines = detailLabMaxLines; + + if (_detailLabel) { + [self setupSubviews]; + } + } +} +- (void)setDetailLabTextColor:(UIColor *)detailLabTextColor{ + if (_detailLabTextColor != detailLabTextColor) { + _detailLabTextColor = detailLabTextColor; + + if (_detailLabel) { + _detailLabel.textColor = detailLabTextColor; + } + } +} + +- (void)setDetailLabLineSpacing:(NSInteger)detailLabLineSpacing{ + if (_detailLabLineSpacing != detailLabLineSpacing) { + _detailLabLineSpacing = detailLabLineSpacing; + + if (_detailLabel) { + [self setupSubviews]; + } + } +} + +#pragma mark Button 相关 +//////////大小位置相关-需要重新布局 +- (void)setActionBtnFont:(UIFont *)actionBtnFont{ + if (_actionBtnFont != actionBtnFont) { + _actionBtnFont = actionBtnFont; + + if (_actionButton) { + [self setupSubviews]; + } + } +} +- (void)setActionBtnHeight:(CGFloat)actionBtnHeight{ + if (_actionBtnHeight != actionBtnHeight) { + _actionBtnHeight = actionBtnHeight; + + if (_actionButton) { + [self setupSubviews]; + } + } +} +- (void)setActionBtnWidth:(CGFloat)actionBtnWidth{ + if (_actionBtnWidth != actionBtnWidth) { + _actionBtnWidth = actionBtnWidth; + + if (_actionButton) { + [self setupSubviews]; + } + } +} +- (void)setActionBtnHorizontalMargin:(CGFloat)actionBtnHorizontalMargin{ + if (_actionBtnHorizontalMargin != actionBtnHorizontalMargin) { + _actionBtnHorizontalMargin = actionBtnHorizontalMargin; + + if (_actionButton) { + [self setupSubviews]; + } + } +} +//////////其他相关-直接赋值 +- (void)setActionBtnCornerRadius:(CGFloat)actionBtnCornerRadius{ + if (_actionBtnCornerRadius != actionBtnCornerRadius) { + _actionBtnCornerRadius = actionBtnCornerRadius; + + if (_actionButton) { + _actionButton.layer.cornerRadius = actionBtnCornerRadius; + } + } +} +- (void)setActionBtnBorderWidth:(CGFloat)actionBtnBorderWidth{ + if (actionBtnBorderWidth != _actionBtnBorderWidth) { + _actionBtnBorderWidth = actionBtnBorderWidth; + + if (_actionButton) { + _actionButton.layer.borderWidth = actionBtnBorderWidth; + } + } +} +- (void)setActionBtnBorderColor:(UIColor *)actionBtnBorderColor{ + if (_actionBtnBorderColor != actionBtnBorderColor) { + _actionBtnBorderColor = actionBtnBorderColor; + + if (_actionButton) { + _actionButton.layer.borderColor = actionBtnBorderColor.CGColor; + } + } +} +- (void)setActionBtnTitleColor:(UIColor *)actionBtnTitleColor{ + if (_actionBtnTitleColor != actionBtnTitleColor) { + _actionBtnTitleColor = actionBtnTitleColor; + + if (_actionButton) { + [_actionButton setTitleColor:actionBtnTitleColor forState:UIControlStateNormal]; + } + } +} +- (void)setActionBtnBackGroundColor:(UIColor *)actionBtnBackGroundColor{ + if (actionBtnBackGroundColor != _actionBtnBackGroundColor) { + _actionBtnBackGroundColor = actionBtnBackGroundColor; + + if (_actionButton) { + [_actionButton setBackgroundColor:actionBtnBackGroundColor]; + } + } +} +- (void)setActionBtnBackGroundGradientColors:(NSArray *)actionBtnBackGroundGradientColors +{ + if (actionBtnBackGroundGradientColors.count >= 2) { + _actionBtnBackGroundGradientColors = [actionBtnBackGroundGradientColors subarrayWithRange:NSMakeRange(0, 2)]; + if (_actionButton) { + [self addGradientWithView:_actionButton gradientColors:_actionBtnBackGroundGradientColors]; + } + } +} + +#pragma mark - ------------------ getter ------------------ +- (UIImageView *)promptImageView{ + if (!_promptImageView) { + _promptImageView = [[UIImageView alloc] init]; + _promptImageView.contentMode = UIViewContentModeScaleAspectFit; + [self.contentView addSubview:_promptImageView]; + } + return _promptImageView; +} +- (UILabel *)titleLabel{ + if (!_titleLabel) { + _titleLabel = [[UILabel alloc] init]; + _titleLabel.textAlignment = NSTextAlignmentCenter; + [self.contentView addSubview:_titleLabel]; + } + return _titleLabel; +} +- (UILabel *)detailLabel{ + if (!_detailLabel) { + _detailLabel = [[UILabel alloc] init]; + _detailLabel.textAlignment = NSTextAlignmentCenter; + _detailLabel.numberOfLines = 0; + [self.contentView addSubview:_detailLabel]; + } + return _detailLabel; +} +- (UIButton *)actionButton{ + if (!_actionButton) { + _actionButton = [[UIButton alloc] init]; + _actionButton.layer.masksToBounds = YES; + [self.contentView addSubview:_actionButton]; + } + return _actionButton; +} + +#pragma mark - ------------------ Help Method ------------------ +- (CGSize)returnTextWidth:(NSString *)text size:(CGSize)size font:(UIFont *)font{ + CGSize textSize = [text boundingRectWithSize:size options:NSStringDrawingUsesLineFragmentOrigin attributes:@{NSFontAttributeName : font} context:nil].size; + return textSize; +} + +- (NSDictionary *)sizeWithAttributedString:(NSString *)string font:(UIFont *)font lineSpacing:(CGFloat)lineSpacing maxSize:(CGSize)maxSize{ + + NSMutableParagraphStyle *paragraphStyle = [[NSMutableParagraphStyle alloc] init]; + paragraphStyle.lineBreakMode = NSLineBreakByWordWrapping; + paragraphStyle.lineSpacing = lineSpacing; // 设置行间距 + paragraphStyle.alignment = NSTextAlignmentCenter; + + NSMutableAttributedString *attributedStr = [[NSMutableAttributedString alloc] initWithString:string attributes:@{NSParagraphStyleAttributeName: paragraphStyle, NSFontAttributeName:font}]; + + CGSize size = [attributedStr boundingRectWithSize:maxSize options:NSStringDrawingUsesLineFragmentOrigin | NSStringDrawingUsesFontLeading context:nil].size; + + NSDictionary *dic = @{ + @"attributed":attributedStr, + @"size": [NSValue valueWithCGSize:size] + }; + return dic; +} + +- (void)addGradientWithView:(UIView *)view gradientColors:(NSArray *)gradientColors +{ + [view setBackgroundColor:[UIColor clearColor]]; + + NSArray *colors = @[(__bridge id)[gradientColors.firstObject CGColor], + (__bridge id)[gradientColors.lastObject CGColor]]; + CAGradientLayer *layer = [CAGradientLayer layer]; + layer.colors = colors; + layer.locations = @[@0.3, @0.5, @1.0]; + layer.startPoint = CGPointMake(0, 0); + layer.endPoint = CGPointMake(1.0, 0); + layer.frame = view.bounds; + layer.masksToBounds = YES; + layer.cornerRadius = view.frame.size.height * 0.5; + + CALayer *firstLayer = self.layer.sublayers.firstObject; + if ([firstLayer isKindOfClass:[CAGradientLayer class]]) { + [view.layer replaceSublayer:firstLayer with:layer]; + } else { + [view.layer insertSublayer:layer atIndex:0]; + } +} + +@end diff --git a/Pods/LYEmptyView/LYEmptyView/LYEmptyViewHeader.h b/Pods/LYEmptyView/LYEmptyView/LYEmptyViewHeader.h new file mode 100644 index 0000000..e99b96f --- /dev/null +++ b/Pods/LYEmptyView/LYEmptyView/LYEmptyViewHeader.h @@ -0,0 +1,15 @@ +// +// LYEmptyViewHeader.h +// LYEmptyViewDemo +// +// Created by 李阳 on 2017/5/11. +// Copyright © 2017年 liyang. All rights reserved. +// + +#ifndef LYEmptyViewHeader_h +#define LYEmptyViewHeader_h + +#import "LYEmptyView.h" +#import "UIView+Empty.h" + +#endif /* LYEmptyViewHeader_h */ diff --git a/Pods/LYEmptyView/LYEmptyView/UIView+Empty.h b/Pods/LYEmptyView/LYEmptyView/UIView+Empty.h new file mode 100644 index 0000000..2ac8e07 --- /dev/null +++ b/Pods/LYEmptyView/LYEmptyView/UIView+Empty.h @@ -0,0 +1,54 @@ +// +// UIView+Empty.h +// LYEmptyViewDemo +// +// Created by liyang on 2018/5/10. +// Copyright © 2018年 liyang. All rights reserved. +// + +#import + +@class LYEmptyView; + +@interface UIView (Empty) + +/** + 空页面占位图控件 + */ +@property (nonatomic, strong) LYEmptyView *ly_emptyView; + +/////////////////////// +/////////////////////// +//使用下面的四个方法请将EmptyView的autoShowEmptyView值置为NO,关闭自动显隐,以保证不受自动显隐的影响 +/////////////////////// +/////////////////////// + +/** + 一般用于开始请求网络时调用,ly_startLoading调用时会暂时隐藏emptyView + 当调用ly_endLoading方法时,ly_endLoading方法内部会根据当前的tableView/collectionView的 + DataSource来自动判断是否显示emptyView + */ +- (void)ly_startLoading; + +/** + 在想要刷新emptyView状态时调用 + 注意:ly_endLoading 的调用时机,有刷新UI的地方一定要等到刷新UI的方法之后调用, + 因为只有刷新了UI,view的DataSource才会更新,故调用此方法才能正确判断是否有内容。 + */ +- (void)ly_endLoading; + + +//调用下面两个手动显隐的方法,不受DataSource的影响,单独设置显示与隐藏(前提是关闭autoShowEmptyView) + +/** + 手动调用显示emptyView + */ +- (void)ly_showEmptyView; + +/** + 手动调用隐藏emptyView + */ +- (void)ly_hideEmptyView; + +@end + diff --git a/Pods/LYEmptyView/LYEmptyView/UIView+Empty.m b/Pods/LYEmptyView/LYEmptyView/UIView+Empty.m new file mode 100644 index 0000000..5cc2332 --- /dev/null +++ b/Pods/LYEmptyView/LYEmptyView/UIView+Empty.m @@ -0,0 +1,224 @@ +// +// UIView+Empty.m +// LYEmptyViewDemo +// +// Created by liyang on 2018/5/10. +// Copyright © 2018年 liyang. All rights reserved. +// + +#import "UIView+Empty.h" +#import +#import "LYEmptyView.h" + +#pragma mark - ------------------ UIView ------------------ + +@implementation UIView (Empty) + ++ (void)exchangeInstanceMethod1:(SEL)method1 method2:(SEL)method2 +{ + method_exchangeImplementations(class_getInstanceMethod(self, method1), class_getInstanceMethod(self, method2)); +} + +#pragma mark - Setter/Getter + +static char kEmptyViewKey; +- (void)setLy_emptyView:(LYEmptyView *)ly_emptyView{ + if (ly_emptyView != self.ly_emptyView) { + + objc_setAssociatedObject(self, &kEmptyViewKey, ly_emptyView, OBJC_ASSOCIATION_RETAIN_NONATOMIC); + + for (UIView *view in self.subviews) { + if ([view isKindOfClass:[LYEmptyView class]]) { + [view removeFromSuperview]; + } + } + [self addSubview:self.ly_emptyView]; + + if ([self isKindOfClass:[UITableView class]] || [self isKindOfClass:[UICollectionView class]]) { + [self getDataAndSet]; // 添加时根据DataSource去决定显隐 + } else { + self.ly_emptyView.hidden = YES;// 添加时默认隐藏 + } + } +} +- (LYEmptyView *)ly_emptyView{ + return objc_getAssociatedObject(self, &kEmptyViewKey); +} + +#pragma mark - Private Method (UITableView、UICollectionView有效) +- (NSInteger)totalDataCount +{ + NSInteger totalCount = 0; + if ([self isKindOfClass:[UITableView class]]) { + UITableView *tableView = (UITableView *)self; + + for (NSInteger section = 0; section < tableView.numberOfSections; section++) { + totalCount += [tableView numberOfRowsInSection:section]; + } + } else if ([self isKindOfClass:[UICollectionView class]]) { + UICollectionView *collectionView = (UICollectionView *)self; + + for (NSInteger section = 0; section < collectionView.numberOfSections; section++) { + totalCount += [collectionView numberOfItemsInSection:section]; + } + } + return totalCount; +} +- (void)getDataAndSet{ + //没有设置emptyView的,直接返回 + if (!self.ly_emptyView) { + return; + } + + if ([self totalDataCount] == 0) { + [self show]; + }else{ + [self hide]; + } +} +- (void)show{ + //当不自动显隐时,内部自动调用show方法时也不要去显示,要显示的话只有手动去调用 ly_showEmptyView + if (!self.ly_emptyView.autoShowEmptyView) { + return; + } + + [self ly_showEmptyView]; +} +- (void)hide{ + //当不自动显隐时,内部自动调用hide方法时也不要去隐藏,要隐藏的话只有手动去调用 ly_hideEmptyView + if (!self.ly_emptyView.autoShowEmptyView) { + return; + } + + [self ly_hideEmptyView]; +} + +#pragma mark - Public Method +- (void)ly_showEmptyView{ + + NSAssert(![self isKindOfClass:[LYEmptyView class]], @"LYEmptyView及其子类不能调用ly_showEmptyView方法"); + + self.ly_emptyView.hidden = NO; + + //让 emptyBGView 始终保持在最上层 + [self bringSubviewToFront:self.ly_emptyView]; +} +- (void)ly_hideEmptyView{ + NSAssert(![self isKindOfClass:[LYEmptyView class]], @"LYEmptyView及其子类不能调用ly_hideEmptyView方法"); + self.ly_emptyView.hidden = YES; +} +- (void)ly_startLoading{ + NSAssert(![self isKindOfClass:[LYEmptyView class]], @"LYEmptyView及其子类不能调用ly_startLoading方法"); + self.ly_emptyView.hidden = YES; +} +- (void)ly_endLoading{ + NSAssert(![self isKindOfClass:[LYEmptyView class]], @"LYEmptyView及其子类不能调用ly_endLoading方法"); + self.ly_emptyView.hidden = [self totalDataCount]; +} + +@end + +#pragma mark - ------------------ UITableView ------------------ + +@implementation UITableView (Empty) ++ (void)load{ + + [self exchangeInstanceMethod1:@selector(reloadData) method2:@selector(ly_reloadData)]; + + ///section + [self exchangeInstanceMethod1:@selector(insertSections:withRowAnimation:) method2:@selector(ly_insertSections:withRowAnimation:)]; + [self exchangeInstanceMethod1:@selector(deleteSections:withRowAnimation:) method2:@selector(ly_deleteSections:withRowAnimation:)]; + [self exchangeInstanceMethod1:@selector(reloadSections:withRowAnimation:) method2:@selector(ly_reloadSections:withRowAnimation:)]; + + ///row + [self exchangeInstanceMethod1:@selector(insertRowsAtIndexPaths:withRowAnimation:) method2:@selector(ly_insertRowsAtIndexPaths:withRowAnimation:)]; + [self exchangeInstanceMethod1:@selector(deleteRowsAtIndexPaths:withRowAnimation:) method2:@selector(ly_deleteRowsAtIndexPaths:withRowAnimation:)]; + [self exchangeInstanceMethod1:@selector(reloadRowsAtIndexPaths:withRowAnimation:) method2:@selector(ly_reloadRowsAtIndexPaths:withRowAnimation:)]; +} +- (void)ly_reloadData{ + [self ly_reloadData]; + [self getDataAndSet]; +} +///section +- (void)ly_insertSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation{ + [self ly_insertSections:sections withRowAnimation:animation]; + [self getDataAndSet]; +} +- (void)ly_deleteSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation{ + [self ly_deleteSections:sections withRowAnimation:animation]; + [self getDataAndSet]; +} +- (void)ly_reloadSections:(NSIndexSet *)sections withRowAnimation:(UITableViewRowAnimation)animation{ + [self ly_reloadSections:sections withRowAnimation:animation]; + [self getDataAndSet]; +} + +///row +- (void)ly_insertRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation{ + [self ly_insertRowsAtIndexPaths:indexPaths withRowAnimation:animation]; + [self getDataAndSet]; +} +- (void)ly_deleteRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation{ + [self ly_deleteRowsAtIndexPaths:indexPaths withRowAnimation:animation]; + [self getDataAndSet]; +} +- (void)ly_reloadRowsAtIndexPaths:(NSArray *)indexPaths withRowAnimation:(UITableViewRowAnimation)animation{ + [self ly_reloadRowsAtIndexPaths:indexPaths withRowAnimation:animation]; + [self getDataAndSet]; +} + + +@end + +#pragma mark - ------------------ UICollectionView ------------------ + +@implementation UICollectionView (Empty) + ++ (void)load{ + + [self exchangeInstanceMethod1:@selector(reloadData) method2:@selector(ly_reloadData)]; + + ///section + [self exchangeInstanceMethod1:@selector(insertSections:) method2:@selector(ly_insertSections:)]; + [self exchangeInstanceMethod1:@selector(deleteSections:) method2:@selector(ly_deleteSections:)]; + [self exchangeInstanceMethod1:@selector(reloadSections:) method2:@selector(ly_reloadSections:)]; + + ///item + [self exchangeInstanceMethod1:@selector(insertItemsAtIndexPaths:) method2:@selector(ly_insertItemsAtIndexPaths:)]; + [self exchangeInstanceMethod1:@selector(deleteItemsAtIndexPaths:) method2:@selector(ly_deleteItemsAtIndexPaths:)]; + [self exchangeInstanceMethod1:@selector(reloadItemsAtIndexPaths:) method2:@selector(ly_reloadItemsAtIndexPaths:)]; + +} +- (void)ly_reloadData{ + [self ly_reloadData]; + [self getDataAndSet]; +} +///section +- (void)ly_insertSections:(NSIndexSet *)sections{ + [self ly_insertSections:sections]; + [self getDataAndSet]; +} +- (void)ly_deleteSections:(NSIndexSet *)sections{ + [self ly_deleteSections:sections]; + [self getDataAndSet]; +} +- (void)ly_reloadSections:(NSIndexSet *)sections{ + [self ly_reloadSections:sections]; + [self getDataAndSet]; +} + +///item +- (void)ly_insertItemsAtIndexPaths:(NSArray *)indexPaths{ + [self ly_insertItemsAtIndexPaths:indexPaths]; + [self getDataAndSet]; +} +- (void)ly_deleteItemsAtIndexPaths:(NSArray *)indexPaths{ + [self ly_deleteItemsAtIndexPaths:indexPaths]; + [self getDataAndSet]; +} +- (void)ly_reloadItemsAtIndexPaths:(NSArray *)indexPaths{ + [self ly_reloadItemsAtIndexPaths:indexPaths]; + [self getDataAndSet]; +} +@end + diff --git a/Pods/LYEmptyView/LYEmptyView/UIView+LYExtension.h b/Pods/LYEmptyView/LYEmptyView/UIView+LYExtension.h new file mode 100644 index 0000000..44fabf0 --- /dev/null +++ b/Pods/LYEmptyView/LYEmptyView/UIView+LYExtension.h @@ -0,0 +1,26 @@ +// +// UIView+LYExtension.h +// LYEmptyViewDemo +// +// Created by 李阳 on 2017/5/12. +// Copyright © 2017年 liyang. All rights reserved. +// + +#import + +@interface UIView (LYExtension) + +@property (nonatomic, assign) CGFloat ly_x; +@property (nonatomic, assign) CGFloat ly_y; +@property (nonatomic, assign) CGFloat ly_width; +@property (nonatomic, assign) CGFloat ly_height; +@property (nonatomic, assign) CGFloat ly_centerX; +@property (nonatomic, assign) CGFloat ly_centerY; +@property (nonatomic, assign) CGSize ly_size; +@property (nonatomic, assign) CGPoint ly_origin; +@property (nonatomic, assign, readonly) CGFloat ly_maxX; +@property (nonatomic, assign, readonly) CGFloat ly_maxY; + + +@end + diff --git a/Pods/LYEmptyView/LYEmptyView/UIView+LYExtension.m b/Pods/LYEmptyView/LYEmptyView/UIView+LYExtension.m new file mode 100644 index 0000000..a1ab06e --- /dev/null +++ b/Pods/LYEmptyView/LYEmptyView/UIView+LYExtension.m @@ -0,0 +1,108 @@ +// +// UIView+LYExtension.m +// LYEmptyViewDemo +// +// Created by 李阳 on 2017/5/12. +// Copyright © 2017年 liyang. All rights reserved. +// + +#import "UIView+LYExtension.h" + +@implementation UIView (LYExtension) + +- (void)setLy_x:(CGFloat)ly_x{ + + CGRect frame = self.frame; + frame.origin.x = ly_x; + self.frame = frame; +} +- (CGFloat)ly_x +{ + return self.frame.origin.x; +} + +- (void)setLy_y:(CGFloat)ly_y{ + + CGRect frame = self.frame; + frame.origin.y = ly_y; + self.frame = frame; +} +- (CGFloat)ly_y +{ + return self.frame.origin.y; +} + +- (void)setLy_centerX:(CGFloat)ly_centerX{ + CGPoint center = self.center; + center.x = ly_centerX; + self.center = center; +} +- (CGFloat)ly_centerX +{ + return self.center.x; +} + +- (void)setLy_centerY:(CGFloat)ly_centerY +{ + CGPoint center = self.center; + center.y = ly_centerY; + self.center = center; +} +- (CGFloat)ly_centerY +{ + return self.center.y; +} + +- (void)setLy_width:(CGFloat)ly_width +{ + CGRect frame = self.frame; + frame.size.width = ly_width; + self.frame = frame; +} +- (CGFloat)ly_width +{ + return self.frame.size.width; +} + +- (void)setLy_height:(CGFloat)ly_height +{ + CGRect frame = self.frame; + frame.size.height = ly_height; + self.frame = frame; +} +- (CGFloat)ly_height +{ + return self.frame.size.height; +} + +- (void)setLy_size:(CGSize)ly_size +{ + CGRect frame = self.frame; + frame.size = ly_size; + self.frame = frame; +} +- (CGSize)ly_size +{ + return self.frame.size; +} + +- (void)setLy_origin:(CGPoint)ly_origin +{ + CGRect frame = self.frame; + frame.origin = ly_origin; + self.frame = frame; +} + +- (CGPoint)ly_origin +{ + return self.frame.origin; +} +- (CGFloat)ly_maxX{ + return self.frame.origin.x + self.frame.size.width; +} +- (CGFloat)ly_maxY{ + return self.frame.origin.y + self.frame.size.height; +} + +@end + diff --git a/Pods/LYEmptyView/README.md b/Pods/LYEmptyView/README.md new file mode 100644 index 0000000..404cd9d --- /dev/null +++ b/Pods/LYEmptyView/README.md @@ -0,0 +1,297 @@ +# LYEmptyView +不需要遵循协议,不需要设置代理,不需要实现代理方法,只需这一句代码,就可为一个UITableViwe/UICollectionView集成空白页面占位图。
    `self.tableView.ly_emptyView = [MyDIYEmpty diyNoDataEmpty];` + +#### 注意点: +#### 1.除UITableViwe/UICollectionView外,这些View(包括UIScrollView)没有DataSource,代码层面无法判断有无数据,需手动管理显示隐藏,调用示例请移步示例8 + +| 特点 | 描述 | +| ---------- | -----------| +| 与项目完全解耦 | 在需要集成的界面中加入一行代码即可集成,与原代码没有一点耦合度 | +| 0学习成本 | 无需关心视图的显示隐藏时机,只需加入一行代码即可,框架监听了系统刷新UI的方法,其内部计算后自动进行显示隐藏 | +| 调用简单 | 利用分类+runtime,使调用非常简便 | +| 高度自定义   | 利用继承特性,可对框架进行二次封装,使自定义更简便 | +| 支持全部的刷新方法 | reload...、insert...、delete...等方法。你的项目中调用这些刷新方法时,该框架都会自动根据DataSource自动进行计算判断是否显示emptyView | + +# 目录 +* [一、效果展示](#效果展示)
    +* [二、集成方式](#集成方式)
    +* [三、使用参考示例](#使用参考示例)
    + * [1.一行代码集成空内容视图](#一行代码集成空内容视图)
    + * [2.自由选择空内容元素](#自由选择空内容元素)
    + * [3.自定义空内容元素](#自定义空内容元素)
    + * [4.自定义元素的UI样式](#自定义元素的UI样式)
    + * [5.二次封装](#二次封装)
    + * [6.延迟显示emptyView](#延迟显示emptyView)
    + * [7.特殊需求,手动控制emptyView的显示隐藏](#特殊需求,手动控制emptyView的显示隐藏)
    + * [8.普通view调用示例](#普通view调用示例)
    + * [9.占位图完全覆盖父视图](#占位图完全覆盖父视图)
    + +##
    一、效果展示 + +![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/ImitateOtherApp.png) + +## 二、集成方式 + +1.Cocoapods方式集成: `pod 'LYEmptyView'`
    +使用时导入头文件 `#import ` +

    +2.手动下载集成: 将LYEmptyView文件夹,导入你的工程
    +使用时导入头文件:`#import "LYEmptyViewHeader.h"` + + +## 三、使用参考示例 + +### 1.一行代码集成空内容视图 + +```Objective-C +//框架方法 +self.tableView.ly_emptyView = [LYEmptyView emptyViewWithImageStr:@"noData" + titleStr:@"暂无数据,点击重新加载" + detailStr:@""]; +``` + +PS:可对库进行二次封装,调用更简洁(二次封装方法在下面的示例5中会讲到) +```Objective-C +//二次封装方法,调用简洁 +self.tableView.ly_emptyView = [MyDIYEmpty diyNoDataEmpty]; +``` + +完全低耦合,在你的项目中加入这一行代码就可集成
    +不管项目中是reloadData方法刷UI还是insert、delete等方式刷UI,不需做其他任何操作,只需这一行代码就可实现以下效果 + +![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/example1.gif) + +### 2.自由选择空内容元素 +```Objective-C +交互事件可选择SEL或block方式 +self.tableView.ly_emptyView = [LYEmptyView emptyActionViewWithImageStr:@"noData" + titleStr:@"无数据" + detailStr:@"请稍后再试!" + btnTitleStr:@"重新加载" + target:target + action:action]; +self.tableView.ly_emptyView = [LYEmptyView emptyActionViewWithImageStr:@"noData" + titleStr:@"" + detailStr:@"" + btnTitleStr:@"" + btnClickBlock:^{}]; +// imageStr   : 占位图片 +// titleStr   : 标题 +// detailStr   : 详细描述 +// btnTitleStr : 按钮标题 +``` +框架提供四个元素,传入相应元素的字符串即可显示对应元素(按钮的显示前提是传入target,action或btnClickBlock) +可根据项目需求,自由进行组合,如下只展示了部分组合效果 + +![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/example2.png) + +### 3.自定义空内容元素 +特殊情况下,如果空内容状态布局不满足需求时,可进行自定义
    +通过方法` + (instancetype)emptyViewWithCustomView:(UIView *)customView;`
    +传入一个View 即可创建一个自定义的emptyView +```Objective-C +self.tableView.ly_emptyView = [LYEmptyView emptyViewWithCustomView:customView]; +``` + +![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/example3.png) + + +### 4.自定义元素的UI样式 +这里自定义UI样式需要很多代码,别担心,在示例5中会讲解二次封装的方式,封装后调用时就只需要一行代码了 ^_^ +```Objective-C + //初始化一个emptyView + LYEmptyView *emptyView = [LYEmptyView emptyActionViewWithImageStr:@"noData" + titleStr:@"无数据" + detailStr:@"请稍后再试!" + btnTitleStr:@"重新加载" + btnClickBlock:^{}]; + //元素竖直方向的间距 + emptyView.subViewMargin = 20.f; + //标题颜色 + emptyView.titleLabTextColor = MainColor(90, 180, 160); + //描述字体 + emptyView.detailLabFont = [UIFont systemFontOfSize:17]; + //按钮背景色 + emptyView.actionBtnBackGroundColor = MainColor(90, 180, 160); + + //设置空内容占位图 + self.tableView.ly_emptyView = emptyView; +``` +>这里只列举了一些常用的属性,更多属性请到LYEmptyView.h查看 + +![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/example4.png) +### 5.二次封装 +第4小节的示例代码,修改emptyView的样式需要一个个属性单独去改,如果项目中每个界面都这么写就显得很麻烦,而且不易维护
    +解决办法是对库进行二次封装,二次封装后,对UI样式单独管理,方便维护
    + +##### 1)新建一个类继承自LYEmptyView,例如demo中的MyDIYEmpty +##### 2)重写`- (void)prepare` 方法,并修改想要改变的元素的UI样式 +```Objective-C +- (void)prepare{ + [super prepare]; + + self.titleLabFont = [UIFont systemFontOfSize:25]; + self.titleLabTextColor = MainColor(90, 180, 160); + + self.detailLabFont = [UIFont systemFontOfSize:17]; + self.detailLabTextColor = MainColor(180, 120, 90); + self.detailLabMaxLines = 5; + + self.actionBtnBackGroundColor = MainColor(90, 180, 160); + self.actionBtnTitleColor = [UIColor whiteColor]; +} +``` +操作上面的两步就可实现对样式的单独管理
    +调用方法不变,只是调用的类变成了MYDiyEmpty +```Objective-C +self.tableView.ly_emptyView = [MyDIYEmpty emptyActionViewWithImageStr:@"noData" + titleStr:@"无数据" + detailStr:@"请稍后再试!" + btnTitleStr:@"重新加载" +                                                        btnClickBlock:^{}]; +``` +##### 3)进一步封装显示的元素内容,比如无数据状态图、无网络状态图
    +在MyDIYEmpty.h定义方法`+ (instancetype)diyNoDataEmpty;`
    +在MyDIYEmpty.m实现方法 +```Objective-C ++ (instancetype)diyNoDataEmpty{ + return [MyDIYEmpty emptyViewWithImageStr:@"nodata" + titleStr:@"暂无数据" + detailStr:@"请检查您的网络连接是否正确!"]; +} +``` +>经过3步封装,自定义了UI样式,使管理更方便,使调用更简洁
    +self.tableView.ly_emptyView = [MyDIYEmpty diyNoDataEmpty]; + +### 6.延迟显示emptyView +如示例1图,框架自动根据DataSource计算是否显示emptyView,在空页面发起网络请求时,DataSource肯定为空,会自动显示emptyView,有的产品需求可能不希望这样,希望发起请求时暂时隐藏emptyView。 +本框架提供了两个方法可实现此需求,两个方法都是scrollView的分类,调用非常方便 +```Objective-C + /** + 一般用于开始请求网络时调用,ly_startLoading调用时会暂时隐藏emptyView + 当调用ly_endLoading方法时,ly_endLoading方法内部会根据当前的tableView/collectionView的 + DataSource来自动判断是否显示emptyView + */ +- (void)ly_startLoading; + + /** + 在想要刷新emptyView状态时调用 + 注意:ly_endLoading 的调用时机,有刷新UI的地方一定要等到刷新UI的方法之后调用, + 因为只有刷新了UI,view的DataSource才会更新,故调用此方法才能正确判断是否有内容。 + */ +- (void)ly_endLoading; +``` + +*注意点:使用这两个方法,请先将emptyView的autoShowEmptyView属性置为NO,关闭自动显隐 + +以下是调用示例(具体细节可参看demo中的demo2) +```Objective-C +//1.先设置样式 +self.tableView.ly_emptyView = [MyDIYEmpty diyNoDataEmpty]; +//2.关闭自动显隐(此步可封装进自定义类中,相关调用就可省去这步) +self.tableView.ly_emptyView.autoShowEmptyView = NO; +//3.网络请求时调用 +[self.tableView ly_startLoading]; +//4.刷新UI时调用(保证在刷新UI后调用) +[self.tableView ly_endLoading]; +``` + +![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/example6.gif) + +### 7.特殊需求,手动控制emptyView的显示隐藏 +在某些特殊界面下,有的tableView/collectionView有固定的一些死数据,其它的数据根据网络加载,这时根据以上的示例方法可能达不到这需求。
    +本框架提供另外的两个方法来解决这个问题。 + +```Objective-C +/** + 手动调用显示emptyView + */ +- (void)ly_showEmptyView; + +/** + 手动调用隐藏emptyView + */ +- (void)ly_hideEmptyView; +``` + +*注意点:使用这两个方法,请先将emptyView的autoShowEmptyView属性置为NO,关闭自动显隐 + +以下是调用示例(具体细节可参看demo中的demo4) +```Objective-C +//1.先设置样式 +self.tableView.ly_emptyView = [MyDIYEmpty diyNoDataEmpty]; +//2.关闭自动显隐(此步可封装进自定义类中,相关调用就可省去这步) +self.tableView.ly_emptyView.autoShowEmptyView = NO; +//3.显示emptyView +[self.tableView ly_showEmptyView]; +//4.隐藏emptyView +[self.tableView ly_hideEmptyView]; +``` + +![](https://github.com/dev-liyang/LYEmptyView/blob/master/images/example7.gif) + +### 8.普通view调用示例 +因普通view(包括scrollView)没有DataSource,代码层面无法判断view上有无数据,所以view想要实现占位图, +还需通过两个方法来手动控制emptyView的显示和隐藏。 +以下是调用示例 +```Objective-C +//1.先设置样式 +self.view.ly_emptyView = [MyDIYEmpty diyNoDataEmpty]; +//2.显示emptyView +[self.view ly_showEmptyView]; +//3.隐藏emptyView +[self.view ly_hideEmptyView]; +``` +### 9.占位图完全覆盖父视图 +每个项目需求不同,有的占位图内容多大,占位图就多大,这种情况是默认的,不用设置属性。而有的占位图想要和父视图一样大,以达到覆盖住父视图的目的,这种情况下将LYEmptyView的emptyViewIsCompleteCoverSuperView属性值设置为YES即可。 +```Objective-C +DemoEmptyView *emptyView = [DemoEmptyView diyEmptyView]; +emptyView.emptyViewIsCompleteCoverSuperView = YES;//完全覆盖父视图,背景色默认为浅白色,可自行设置 +//emptyView.backgroundColor = [UIColor redColor];//自己设置背景色为红色,此设置也可封装到公共的地方(DemoEmptyView),就不用每次都单独设置了 +self.tableView.ly_emptyView = emptyView; +``` + +## 更新记录 + +### 2019-08-16 (pod V1.3.0) +* 1.detailLab添加行间距属性 +* 2.每个子控件可单独设置间距 +* 3.actionBtn添加渐变背景颜色属性 +* 4.更改添加emptyView时其显隐的逻辑 + +### 2019-07-04 (pod V1.2.5) +* 1.新增属性:按钮宽度actionBtnWidth +* 2.修改属性默认值:按钮的圆角actionBtnCornerRadius默认改为0 + +### 2019-06-18 (pod V1.2.4) +* 1.将点击重试事件加到emptyView上(当设置empty完全覆盖父视图时,就可实现点击屏幕重试的效果) +* 2.swift项目中imageNamed:方法string为nil时崩溃解决 + +### 2018-12-04 (pod V1.2.3) +* 1.fix bug:当子控件的文字被设置为空并再次设置为非空时, 子控件无法正常显示 +* 2.新增属性:ignoreContentInset,是否忽略scrollView的contentInset + +### 2018-09-11 (pod V1.2.2) +* 新增构造方法,具体请查看LYEmptyBaseView.h + +### 2018-08-22 (pod V1.2.1) +* 大神的建议,不要手动调用layoutSubviews。优化baseView里setter方法调用的重绘机制,使用setNeedsLayout更加优美 + +### 2018-07-31 (pod V1.2.0) +* 新增属性:emptyViewIsCompleteCoverSuperView, 占位图是否完全覆盖父视图 + +### 2018-05-11 (pod V1.1.0) +* 新增普通View可设置占位图,实现所有的View都能集成占位图 + +### 2018-03-26 (pod V1.0.3) +* 添加reloadSections、reloadRows、reloadItems 等方法的监听 +* emptyBaseView setter 方法bug fix + +### 2018-02-09 (pod V1.0.2) +* 解决只是在导入本框架的情况下,导致UIScrollView上的内容不显示的bug + + +## 技术交流 +本人QQ:944801216
    +技术交流群:818290484
    +大家有任何的问题和建议,可以联系我,我一定尽力为大家解决问题,也可以进群和大家一起交流。 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index 9ed0f51..b42892d 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -29,6 +29,7 @@ PODS: - LSTPopView/Code (0.3.10): - LSTTimer - LSTTimer (0.2.10) + - LYEmptyView (1.3.1) - Masonry (1.1.0) - MBProgressHUD (1.2.0) - MJExtension (3.4.2) @@ -43,10 +44,11 @@ DEPENDENCIES: - DZNEmptyDataSet (= 1.8.1) - FLAnimatedImage (~> 1.0.17) - HWPanModal (~> 0.9.9) - - JXCategoryView + - JXCategoryView (~> 1.6.8) - JXPagingView/Pager (~> 2.1.3) - LookinServer - LSTPopView (~> 0.3.10) + - LYEmptyView - Masonry (= 1.1.0) - MBProgressHUD (= 1.2.0) - MJExtension (= 3.4.2) @@ -65,6 +67,7 @@ SPEC REPOS: - LookinServer - LSTPopView - LSTTimer + - LYEmptyView - Masonry - MBProgressHUD - MJExtension @@ -82,12 +85,13 @@ SPEC CHECKSUMS: LookinServer: 1b2b61c6402ae29fa22182d48f5cd067b4e99e80 LSTPopView: 9379f00f6ce7d1fc620b50ab00ed3ef97b2d4d52 LSTTimer: caf8f02ff366ca175cf4c1778d26c166183c1b6f + LYEmptyView: b6d418cfa38b78df0cf243f9a9c25ccbdc399922 Masonry: 678fab65091a9290e40e2832a55e7ab731aad201 MBProgressHUD: 3ee5efcc380f6a79a7cc9b363dd669c5e1ae7406 MJExtension: e97d164cb411aa9795cf576093a1fa208b4a8dd8 MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: ce689000a7b9b24f5d74cc50a93350665c3af035 +PODFILE CHECKSUM: e5e2037c9180ed40ba4a0e264e837eaf839ca6b2 COCOAPODS: 1.16.2 diff --git a/Pods/Pods.xcodeproj/project.pbxproj b/Pods/Pods.xcodeproj/project.pbxproj index 323828f..8a4f23b 100644 --- a/Pods/Pods.xcodeproj/project.pbxproj +++ b/Pods/Pods.xcodeproj/project.pbxproj @@ -19,1568 +19,1618 @@ /* End PBXAggregateTarget section */ /* Begin PBXBuildFile section */ - 0005259AEE76604A26E43EA994475B68 /* HWShoppingCartPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = 62C28B0ACA1E8D749FA6E65D70CFCB2D /* HWShoppingCartPresentingAnimation.m */; }; - 00DAE48C9A4FBCD1FCAA922CA57B45F9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 02986FE530B6F5FD0ABF721900839DA5 /* SDWebImageDownloaderRequestModifier.m */; }; - 01D2F1D0ABE13AAB2CDC0C25E378E964 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = BD89A8E0323AB57CE283C150C3D4C556 /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 020FEDA58170EE1ABDF9E268D373CF4F /* JXCategoryNumberView.m in Sources */ = {isa = PBXBuildFile; fileRef = 44CB5B4F2C2351C8F32C675C94C2EAC0 /* JXCategoryNumberView.m */; }; - 021ACCD4343D154E4782A5ECE222A8DF /* LookinIvarTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 765DBAD68AB5F355FB80870758AFB22C /* LookinIvarTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 03623FBDBE9F6B422E9A5C6EAD321A58 /* HWPanModalPresenterProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = E8DC9FFB899510CE978017ADFAFE6D87 /* HWPanModalPresenterProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 042D40751BD2F51FBE9FECD4707CBBE9 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F246E4D58E65C83AB3493871F692FC9C /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 0453019EC6578A67B82CF569EC765546 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3201B19667C12026E1C92EA1DD973BB7 /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 05E2B7C1DB7528A0BBEA1521BE0DBAF1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E18E15D3A7901E5A84136DADC023216 /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 05EEA40D460AB9A5A6E8D33AAAEF801E /* JXPagingView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AFBCBD9F77FD5CF26B2BEBE02B1E19D9 /* JXPagingView-dummy.m */; }; - 060B00D5B019369654AEAB7C116DC119 /* LSTTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = C4A783F974F95D31DCCDA721D4F965EC /* LSTTimer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 06C4E233E7977DB81A24482E69B2D7D7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = A67C49E3D329D82553E5FEBB4951ABD7 /* UIImage+Transform.m */; }; - 0845A6CB7AE77A99CC475BD14101FE87 /* LookinAttrType.h in Headers */ = {isa = PBXBuildFile; fileRef = D7DFD14540146731FB9E466FA1EB81F0 /* LookinAttrType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08719ABCE689ED74FE7486B1E49DAA6C /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 15D9AA9876374637F32E00BE13AA1880 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 089F3C4BAA46A37EC5763DD312771021 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 390647665D633FF246584D1E27162F0D /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 08D50C5AC969A3701B6F9137CF3A10F1 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = 6645D9E2FCEC9ED435B284460DEDDF89 /* UIImage+ForceDecode.m */; }; - 09A2ACBC8CE1761652EAA20886AEFE10 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 471A02E298FA363A6051045C83C8BE05 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0A7342FACEBA0077F1B06178940883DB /* HWPanModal.h in Headers */ = {isa = PBXBuildFile; fileRef = 6260795D5ABBA18F8EFECC2CEB871872 /* HWPanModal.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0AA1842830C770B1E299BAC977E813D9 /* JXCategoryIndicatorRainbowLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = FD5B9F06C28C32AA434A5A2FFACDF89A /* JXCategoryIndicatorRainbowLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0B0E6CECDF516BC83756C1D5515A725B /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E8666C77464C3B683AB0F8D4DEA6951 /* SDAsyncBlockOperation.m */; }; - 0B449236AF25C6C11B0DE3D6D0E4A19B /* LookinEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = E97B2ACE11733D7DD5ECA116979B91D5 /* LookinEventHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0BE3B8DB6034364E7CF3AE9D01C7C0B4 /* CALayer+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 673B42B9F094B1F5ED808EE1BA26FC30 /* CALayer+Lookin.m */; }; - 0C312924F0A07471A1D04AD15D32BF3A /* JXCategoryIndicatorRainbowLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = CC8BAAD188938B05A876ECFEAA39F2E6 /* JXCategoryIndicatorRainbowLineView.m */; }; - 0C79142D1349DD9A969F47A0A8AAA0CB /* Lookin_PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 9545413A1EE5D2E50A21E8D9794A771A /* Lookin_PTProtocol.m */; }; - 0D6EFFD314E70C1E547970D8CEF11131 /* JXPagerMainTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 119B8F0EF70910D693FCCA816529E357 /* JXPagerMainTableView.m */; }; - 0EF10747EF2A02413E84BD5EF7C87A4B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = CAD02815855109CE0DDD83222F913EF8 /* MJRefreshNormalHeader.m */; }; - 0F1D0F5DCC8C94A4C684DF846D14F436 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = E48A50CB4DE0A87DE4F3E1BFE24DC7B7 /* SDWebImagePrefetcher.m */; }; - 0FF9F459ED16719292443A4C99B52B20 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 11EEC0D59FA31FAAD209A208EB338575 /* SDImageCache.m */; }; - 10017B43AC38C3A89D7AC1376C6E7066 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = E889A3C02C6D9C2F5501AF30759E916C /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 104D9196010D2A8C52C0C19E9C9D52E8 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 93081A25D8BCD8327365F5FAC77C46F3 /* MBProgressHUD-dummy.m */; }; - 117F4B6F653A8DA2637C5C93B4993884 /* Peertalk.h in Headers */ = {isa = PBXBuildFile; fileRef = 6FDFBF5B5FE03EAE7CBA31ED300F848E /* Peertalk.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 11AD210D385F977383AFB974D3CDEF53 /* JXCategoryListContainerRTLCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C36F83AF55E2873F497777F59071760 /* JXCategoryListContainerRTLCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 11C929E6BFB46F981685446F26DCE605 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BE6EFE785E6216D9C7C1D6B7A4EEA5EA /* MJRefreshAutoFooter.m */; }; - 11D4DC1FCE5647EEA8484AA4A880AF8F /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = DB3619AB8798CD8CAE31E140F80F2DC0 /* MBProgressHUD.m */; }; - 126496714AD564062A8C10787CC01B8B /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A7EBF5198D90CFC9C01A0BA03924D8 /* MJFoundation.m */; }; - 12EC136F97CCCDD8C3765925FABA52CD /* HWPanModalHeight.h in Headers */ = {isa = PBXBuildFile; fileRef = 5731585BDD8DA229201CF537357BCA56 /* HWPanModalHeight.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1399CD097E164E2C7A6882F0C8FFA525 /* JXCategoryIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = D6F5B88F49EB151A388B58319A67E2A1 /* JXCategoryIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14943D0EE97A4966510A86F5C3FC66A5 /* MJExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AE09548D63659FAE72F5C6F1EBF230FC /* MJExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14CA284AC4FF1EED75E785641EE98034 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 94DB79C6893EAE9D1A7D3559B485BCC5 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 150116E888969E8304BA3E2BB6529461 /* LookinHierarchyFile.h in Headers */ = {isa = PBXBuildFile; fileRef = 63000DF25140BBB4F03EDFC289F2B197 /* LookinHierarchyFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0005259AEE76604A26E43EA994475B68 /* HWShoppingCartPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = C5D725B550FCED60C80870F1B120D3B4 /* HWShoppingCartPresentingAnimation.m */; }; + 00DAE48C9A4FBCD1FCAA922CA57B45F9 /* SDWebImageDownloaderRequestModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 607560CCA2D3766D85B5AEE557812D0E /* SDWebImageDownloaderRequestModifier.m */; }; + 01D2F1D0ABE13AAB2CDC0C25E378E964 /* FLAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 18EAC20398B46C2C580B542618314D9E /* FLAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 020FEDA58170EE1ABDF9E268D373CF4F /* JXCategoryNumberView.m in Sources */ = {isa = PBXBuildFile; fileRef = D5119B7CF0FE429CF0E185983E72F98F /* JXCategoryNumberView.m */; }; + 021ACCD4343D154E4782A5ECE222A8DF /* LookinIvarTrace.h in Headers */ = {isa = PBXBuildFile; fileRef = 00C9A4038FA1CE3381055E02DAAEC90E /* LookinIvarTrace.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 03623FBDBE9F6B422E9A5C6EAD321A58 /* HWPanModalPresenterProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = DE4F66BD16AF47C58F5E08D62D7916E3 /* HWPanModalPresenterProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 042D40751BD2F51FBE9FECD4707CBBE9 /* SDDeviceHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = F287F335FB60871C584FAC1904FF4181 /* SDDeviceHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 0453019EC6578A67B82CF569EC765546 /* SDFileAttributeHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 0ED5656E5971882A3EA314E222EBC2C5 /* SDFileAttributeHelper.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 05E2B7C1DB7528A0BBEA1521BE0DBAF1 /* MASViewAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 7083FA062632CC52050FC4EB53D64E3A /* MASViewAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 05EEA40D460AB9A5A6E8D33AAAEF801E /* JXPagingView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 10AACE3BDEFABB8B9E709942B03E5595 /* JXPagingView-dummy.m */; }; + 06C4E233E7977DB81A24482E69B2D7D7 /* UIImage+Transform.m in Sources */ = {isa = PBXBuildFile; fileRef = 0EBF81CE72AA8B4B06F1BC37CFA7B96A /* UIImage+Transform.m */; }; + 0845A6CB7AE77A99CC475BD14101FE87 /* LookinAttrType.h in Headers */ = {isa = PBXBuildFile; fileRef = C9E1D6C567F43B4A9410AC83170573DE /* LookinAttrType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08719ABCE689ED74FE7486B1E49DAA6C /* MJRefreshBackStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = ED2A7F3394578B0F6BEA7FBFFE1E2291 /* MJRefreshBackStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 089F3C4BAA46A37EC5763DD312771021 /* SDImageIOAnimatedCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = B75E67C2319B8FDBF4D6263203A06D6B /* SDImageIOAnimatedCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 08D50C5AC969A3701B6F9137CF3A10F1 /* UIImage+ForceDecode.m in Sources */ = {isa = PBXBuildFile; fileRef = CF91BA63B659D0E10C9E123EBEAB8FA3 /* UIImage+ForceDecode.m */; }; + 09A2ACBC8CE1761652EAA20886AEFE10 /* SDImageCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EF3B546633CC3DB26A173DE519AC3D7 /* SDImageCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0A7342FACEBA0077F1B06178940883DB /* HWPanModal.h in Headers */ = {isa = PBXBuildFile; fileRef = EC37DBDA721D0EFF5AB018086BE1B195 /* HWPanModal.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0AA1842830C770B1E299BAC977E813D9 /* JXCategoryIndicatorRainbowLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = D25C8F67455D872A48F4797213321EA4 /* JXCategoryIndicatorRainbowLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0B0E6CECDF516BC83756C1D5515A725B /* SDAsyncBlockOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A03E8820B42DFF0FCE849CB64302CAF /* SDAsyncBlockOperation.m */; }; + 0B449236AF25C6C11B0DE3D6D0E4A19B /* LookinEventHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 05EE9449F14265ADB3100E60632AB642 /* LookinEventHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 0BE3B8DB6034364E7CF3AE9D01C7C0B4 /* CALayer+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 657631264951C7514A1788B1C6316E7F /* CALayer+Lookin.m */; }; + 0C312924F0A07471A1D04AD15D32BF3A /* JXCategoryIndicatorRainbowLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 021930E01F482BDF2DEAAA2AF9FDCF18 /* JXCategoryIndicatorRainbowLineView.m */; }; + 0C79142D1349DD9A969F47A0A8AAA0CB /* Lookin_PTProtocol.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B6F5F5F32C55F6B9F4E87EC57A0A074 /* Lookin_PTProtocol.m */; }; + 0D6EFFD314E70C1E547970D8CEF11131 /* JXPagerMainTableView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C2DAB09AC8F3AD6E82FDC5DB2562CB4 /* JXPagerMainTableView.m */; }; + 0E97928FD3B4476EDC015E83A8E2CAA3 /* UIView+Empty.m in Sources */ = {isa = PBXBuildFile; fileRef = A34A186C33DB71F8C4ACB6E0705472D0 /* UIView+Empty.m */; }; + 0EF10747EF2A02413E84BD5EF7C87A4B /* MJRefreshNormalHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 61D65BB6AAD351E64F3FE46FACDEED4F /* MJRefreshNormalHeader.m */; }; + 0F1D0F5DCC8C94A4C684DF846D14F436 /* SDWebImagePrefetcher.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AA439B2B87976D37C23F7DCCE897F8C /* SDWebImagePrefetcher.m */; }; + 0FF9F459ED16719292443A4C99B52B20 /* SDImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 77715D6F65035CFA25715F00E4915BA5 /* SDImageCache.m */; }; + 10017B43AC38C3A89D7AC1376C6E7066 /* SDImageLoadersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C1F5F86210D3FB1EF59D8665E7C4A77 /* SDImageLoadersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 104D9196010D2A8C52C0C19E9C9D52E8 /* MBProgressHUD-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D30B8333D334528105E28100C243348D /* MBProgressHUD-dummy.m */; }; + 117F4B6F653A8DA2637C5C93B4993884 /* Peertalk.h in Headers */ = {isa = PBXBuildFile; fileRef = 70D52E1253BDF6EF05A1C5C1D46734EA /* Peertalk.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11AD210D385F977383AFB974D3CDEF53 /* JXCategoryListContainerRTLCell.h in Headers */ = {isa = PBXBuildFile; fileRef = E948F26A10F663204E24603E8527A7F5 /* JXCategoryListContainerRTLCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 11C929E6BFB46F981685446F26DCE605 /* MJRefreshAutoFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 14CF605A6E1A867AA3131733CCE53D99 /* MJRefreshAutoFooter.m */; }; + 11D4DC1FCE5647EEA8484AA4A880AF8F /* MBProgressHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 347DA9A1002297848F6BF9D97BB1F302 /* MBProgressHUD.m */; }; + 126496714AD564062A8C10787CC01B8B /* MJFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = BCF14CEE3203A4E740B9A9FD66CCABA4 /* MJFoundation.m */; }; + 12EC136F97CCCDD8C3765925FABA52CD /* HWPanModalHeight.h in Headers */ = {isa = PBXBuildFile; fileRef = EF7183977EF6286C16A64DBC3D765320 /* HWPanModalHeight.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1399CD097E164E2C7A6882F0C8FFA525 /* JXCategoryIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 92A35222DEEC452079F1343331C6E154 /* JXCategoryIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14943D0EE97A4966510A86F5C3FC66A5 /* MJExtension-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 2713EAAF042877733E01E359F3224ABF /* MJExtension-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14CA284AC4FF1EED75E785641EE98034 /* SDImageCacheConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = E368F7BC820788B717CC047A744E4326 /* SDImageCacheConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 150116E888969E8304BA3E2BB6529461 /* LookinHierarchyFile.h in Headers */ = {isa = PBXBuildFile; fileRef = FDCCFFDED68135F2816CA2167E15CF64 /* LookinHierarchyFile.h */; settings = {ATTRIBUTES = (Public, ); }; }; 15B27182B591769C57B55544260DC886 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 165F1C9CBD621828C788A3018D0426C5 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = FB334521D7F08199DE839AB68A37105C /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 168889E3E897E6D6102A2AA7F7C47496 /* JXCategoryIndicatorComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B0139E3193D3960F1A46D73064CA34A /* JXCategoryIndicatorComponentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 165F1C9CBD621828C788A3018D0426C5 /* SDImageAPNGCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 3501E850F701BA678364B4AFBF1C8417 /* SDImageAPNGCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 168889E3E897E6D6102A2AA7F7C47496 /* JXCategoryIndicatorComponentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 37C2A3B1C753D4547646108720BF5321 /* JXCategoryIndicatorComponentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 16D7DCB7CC985C33EEC41B371C029C84 /* SDWebImage-SDWebImage in Resources */ = {isa = PBXBuildFile; fileRef = CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */; }; - 1708C1D28B421C4AD310426D1695CE77 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B609960A71B1FE2AB814B679D9E7609 /* SDAnimatedImage.m */; }; - 17341EDF872432C3966B77976F3E0470 /* JXCategoryTitleVerticalZoomCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 60A68C8A5D160FE046F60DF6C446111D /* JXCategoryTitleVerticalZoomCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1754DD5511A7BF462B116F70B0D4006A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = ED2932A528EF3931C345CFE64B9F95D6 /* SDWebImageOperation.m */; }; - 1830558A4D2D63C8E76BC3136D8213F9 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 75B6A4916D912131001F61C28CCA6565 /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 18660FA595DBE133BB784E813A7122A8 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3125F7D904D9F1F20C7699EF5186B19F /* SDImageHEICCoder.m */; }; - 186B573F1BEB8A23419A02814A7741DB /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CE7B5832F4AC9648A3CEB7DD03473E4 /* MJRefreshFooter.m */; }; - 18AD90784D549657DF51BC8377DA3085 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = EC33F9EE9311F0E41E69AB2D40770217 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B52E938D7999FC0CDA2AA22674948EB /* LookinAttributesGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = 57D32F597DFAC06B9198FA1F48D2995D /* LookinAttributesGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1B6CE67196EE181E6B56788EFC7E00D3 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 911E6F5D1D17453D35BE3FA4A9086972 /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1BC44E2FDD197D5210A23C9CCF1A906B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = 64891F4568CD87380D133019B00B2324 /* SDWebImageCompat.m */; }; - 1C0FA6017CAD67C1A80FFA70024FC6FD /* JXCategoryIndicatorCell.m in Sources */ = {isa = PBXBuildFile; fileRef = CF64931699D303A3C9AE1FFC4682E257 /* JXCategoryIndicatorCell.m */; }; - 1C1BC9F0555B36914FF5278D30152DE6 /* JXCategoryNumberView.h in Headers */ = {isa = PBXBuildFile; fileRef = C6B6ABC9B259D86AA3C2451E682BE701 /* JXCategoryNumberView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C5CCB87E5B9C500F07A8244D7906295 /* LookinAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 908BDA99457974AD8998A674A0C0FB12 /* LookinAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1C8B70C74291A3076746C3B18781568E /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DC4AC8D166AB2BD8B557BFA9FA9872C /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = A8105D73597438386DADF22233AAD4B3 /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 95EB1D88070F8207A333D4573DA43A15 /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 94D99E2E2730992302FB9BAA7CCE2A1C /* HWPanModalPresentationController.m */; }; - 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = DAFBC54BDE2AC21397492351C31C587A /* HWPanModalPresentableHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1DC161351EBD409CC622E826340E4FD8 /* JXCategoryTitleVerticalZoomCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 54CBDA1EBC8A896E6DB3A15D5332DB1C /* JXCategoryTitleVerticalZoomCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = 9777292C62AA2375C63BAEF75D1F940C /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1EC3AEA15AE416A53357261B37C622BD /* LKS_TraceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1278AB0B776862F23D89B7E8596E3598 /* LKS_TraceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1ECC5F320AEFB120081358B4FFB7442F /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B4EF64EB8018D8E9CE7C8CB5FACCD5B /* NSString+MJExtension.m */; }; - 1EDC6F899051F0E858270F7556AF2F12 /* UIVisualEffectView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CE6BF39C6199FC5B55217046DDE2CDB /* UIVisualEffectView+LookinServer.m */; }; - 1EDF5F5B68D4A76CE59D5B6CC7B6C469 /* LookinAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 659E6E588427268237F9F2C40D2F6CBD /* LookinAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1F778CA18D1F4A50D9F15280B25D10EB /* JXCategoryTitleImageCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = DDAA59B8AF34E0C4765874AEE69571F7 /* JXCategoryTitleImageCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FD36A180D43C773D95D8E5BF719494C /* LookinDisplayItemDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E7F18004D9337D64F0F606975492DF4 /* LookinDisplayItemDetail.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1FDEA3FFA45F29C1331723E9579D66A5 /* LookinAutoLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 5DA1EEEB5386D6FCA6523BE43601C382 /* LookinAutoLayoutConstraint.m */; }; - 2055774CD703B52DABFB1CC588394A94 /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D4A62A4549AC17B0296FF7D29E15454 /* MJExtension-dummy.m */; }; - 20D5706AD3ED295B4FBACD8825DC3A1E /* JXPagerListRefreshView.h in Headers */ = {isa = PBXBuildFile; fileRef = 359AD735B8CFD982730F6CEB0F56A487 /* JXPagerListRefreshView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 20D618EF3EA5E3BE96DA24D36E3CA9EF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9820AAA1C732351179414BB46300A1B7 /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 20E738E52B4712385489A62374C74C7F /* Lookin_PTUSBHub.m in Sources */ = {isa = PBXBuildFile; fileRef = BC38AB7DAEDA3DEEFFAC64BDA7FA3C88 /* Lookin_PTUSBHub.m */; }; - 20FBBC12322412237D48D3695D98E043 /* JXCategoryDotView.m in Sources */ = {isa = PBXBuildFile; fileRef = EED2C7FD129EA6F065286A12502B79B7 /* JXCategoryDotView.m */; }; - 2175B894008D948C762468307BA677B8 /* RTLManager.m in Sources */ = {isa = PBXBuildFile; fileRef = E5EA191D7CFA74A3FEAFB27130A3FEC7 /* RTLManager.m */; }; - 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 23648E3B16301958DD4429C021EB223C /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 22C38AE7AB145224FF646303AFED11D2 /* JXCategoryDotCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = ABD4819FE00A1A954ABDDF0893C72587 /* JXCategoryDotCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 76724C714C93839E6993DF68B545F17B /* UIViewController+LayoutHelper.m */; }; - 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A56B5A6CAF35241FF9D41CAC7DC1D6D2 /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2395CE03CE80FC5F9A7F61C48270618B /* JXCategoryViewAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = B46184374613AB561CB67E0F1EF14DD8 /* JXCategoryViewAnimator.m */; }; - 2460C08042AF8B7D0492A062F755986E /* NSString+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = D9EC522C5B6A10C53A05FE81CED85983 /* NSString+Lookin.m */; }; - 24E8E4ED0B5D988E3346E6638619F4E4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = EAEC3302C39E58E44D49A12FA8699A84 /* SDImageFrame.m */; }; - 24E963C1D6245F98BAC8A0ACCB7DE987 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 824A8DE6460C98A565B1EDD8B4432F50 /* NSBundle+MJRefresh.m */; }; + 1708C1D28B421C4AD310426D1695CE77 /* SDAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = BDB258BF0BE17AFC3BFB4FB942403B82 /* SDAnimatedImage.m */; }; + 17341EDF872432C3966B77976F3E0470 /* JXCategoryTitleVerticalZoomCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = C4D51AE584C5960F5C6B60C866377741 /* JXCategoryTitleVerticalZoomCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1754DD5511A7BF462B116F70B0D4006A /* SDWebImageOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A70A9B1B9D076F21A4C704EAC69B3E9 /* SDWebImageOperation.m */; }; + 1830558A4D2D63C8E76BC3136D8213F9 /* UIImage+ExtendedCacheData.h in Headers */ = {isa = PBXBuildFile; fileRef = 8D2F3BF5EE9E269F816330AC6BF6745F /* UIImage+ExtendedCacheData.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 18660FA595DBE133BB784E813A7122A8 /* SDImageHEICCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 1CA6A325AACF7253FFEB9D258746335D /* SDImageHEICCoder.m */; }; + 186B573F1BEB8A23419A02814A7741DB /* MJRefreshFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0260C833576479A14C0F759F9D161479 /* MJRefreshFooter.m */; }; + 18AD90784D549657DF51BC8377DA3085 /* SDWebImageDownloaderResponseModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = 6F1245D39980C8CC23C4FFA557C72FA3 /* SDWebImageDownloaderResponseModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B52E938D7999FC0CDA2AA22674948EB /* LookinAttributesGroup.h in Headers */ = {isa = PBXBuildFile; fileRef = E6FEAED2BC2A577A78A12FA14FC3BB6B /* LookinAttributesGroup.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1B6CE67196EE181E6B56788EFC7E00D3 /* SDImageGIFCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C0E279B5FFB9696801CC86ACF92805A /* SDImageGIFCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1BC44E2FDD197D5210A23C9CCF1A906B /* SDWebImageCompat.m in Sources */ = {isa = PBXBuildFile; fileRef = F00B3F2B17BB2816232EB507B7AC9018 /* SDWebImageCompat.m */; }; + 1C0FA6017CAD67C1A80FFA70024FC6FD /* JXCategoryIndicatorCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F9F30602CBEA307F110682B47DBF3B59 /* JXCategoryIndicatorCell.m */; }; + 1C1BC9F0555B36914FF5278D30152DE6 /* JXCategoryNumberView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B8734ED62BE39C69073D2C32183C6FC /* JXCategoryNumberView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C5CCB87E5B9C500F07A8244D7906295 /* LookinAppInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D8A828331C79742A41F54C2050C90A8 /* LookinAppInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1C8B70C74291A3076746C3B18781568E /* SDImageCachesManagerOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A41E1A305241C5A627FAD06CB90A275 /* SDImageCachesManagerOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 1CA85ECC202E5CF62530BAD7C0DCDAF2 /* LookinHierarchyInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 26469EA2BF7F49FCDA80695277950B2B /* LookinHierarchyInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D18A1A5D485D57192B021A8765C0AF5 /* LookinTuple.h in Headers */ = {isa = PBXBuildFile; fileRef = 17A16F153D08C8BBF15070C730EC0C3A /* LookinTuple.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1D3DCD05B685A7CAF291C25D922B1831 /* HWPanModalPresentationController.m in Sources */ = {isa = PBXBuildFile; fileRef = 1F9506DDA8FBAA7420E9B8137BFCFDFA /* HWPanModalPresentationController.m */; }; + 1DB724891F1F6468BDB333369F667F39 /* HWPanModalPresentableHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = C644FF26241C14C759578567892EF00D /* HWPanModalPresentableHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1DC161351EBD409CC622E826340E4FD8 /* JXCategoryTitleVerticalZoomCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 25475D081A3343232AD119F5F5A5F24A /* JXCategoryTitleVerticalZoomCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EA011B45EC780B434507AFB3D9647ED /* NSObject+MJCoding.h in Headers */ = {isa = PBXBuildFile; fileRef = DD2F0E472487CBFBA5CA4F3C62C1BB0B /* NSObject+MJCoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EC3AEA15AE416A53357261B37C622BD /* LKS_TraceManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 52AF8374431A1EA8420BA1E29139131E /* LKS_TraceManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1ECC5F320AEFB120081358B4FFB7442F /* NSString+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 15C39377834B42681C3BF6A5471C5F78 /* NSString+MJExtension.m */; }; + 1ED0D560CC57BCED931C26E643B2A96A /* UIView+Empty.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A5F8A5650078BFF9587944F0042AE79 /* UIView+Empty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1EDC6F899051F0E858270F7556AF2F12 /* UIVisualEffectView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = A7DF910F689AA8FEAD1EF63DDDFCB780 /* UIVisualEffectView+LookinServer.m */; }; + 1EDF5F5B68D4A76CE59D5B6CC7B6C469 /* LookinAttribute.h in Headers */ = {isa = PBXBuildFile; fileRef = 903EBE6439B30182644FFF066DE11129 /* LookinAttribute.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1F2863645F3DEAC57B592AFFB45D5E77 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 20674A80959A90C9F9E51DBDC8807D93 /* PrivacyInfo.xcprivacy */; }; + 1F778CA18D1F4A50D9F15280B25D10EB /* JXCategoryTitleImageCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B812F8DDDC6CC3E3ACDB1D17716E70C /* JXCategoryTitleImageCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FD36A180D43C773D95D8E5BF719494C /* LookinDisplayItemDetail.h in Headers */ = {isa = PBXBuildFile; fileRef = 407D327724ADF96791DFD9B922AA254A /* LookinDisplayItemDetail.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 1FDEA3FFA45F29C1331723E9579D66A5 /* LookinAutoLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 38F21B02ED02115E613C152CE563BD5A /* LookinAutoLayoutConstraint.m */; }; + 2055774CD703B52DABFB1CC588394A94 /* MJExtension-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 43E163147E40F868F458CD979D77C4E4 /* MJExtension-dummy.m */; }; + 20D5706AD3ED295B4FBACD8825DC3A1E /* JXPagerListRefreshView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B250EFB659FBBBBA5D680859085344D /* JXPagerListRefreshView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 20D618EF3EA5E3BE96DA24D36E3CA9EF /* SDAsyncBlockOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 026BB0AEDD69539DEC39191EE0C5214B /* SDAsyncBlockOperation.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 20E738E52B4712385489A62374C74C7F /* Lookin_PTUSBHub.m in Sources */ = {isa = PBXBuildFile; fileRef = B1850D4E22F95780586FA04DA695C24C /* Lookin_PTUSBHub.m */; }; + 20FBBC12322412237D48D3695D98E043 /* JXCategoryDotView.m in Sources */ = {isa = PBXBuildFile; fileRef = C86FEA7FA982FA034501F7AB37760D49 /* JXCategoryDotView.m */; }; + 21232E67D630EBF8EA4CB3322B359F0D /* LSTTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = CE5782C68BCDC8C49DD74B206B3FFFF1 /* LSTTimer.m */; }; + 2175B894008D948C762468307BA677B8 /* RTLManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9A3BA26DC995AB016051D522F5691C91 /* RTLManager.m */; }; + 2210A1E405AB21104E7AF86D05C8AD39 /* LYEmptyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 39267406AD82F75ABB872A20BE14F010 /* LYEmptyView.m */; }; + 22516EA77E7120000632C30BD9A03927 /* UIScrollView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 304FA88F8B2636C2DD7FA535D2BD617D /* UIScrollView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 22C38AE7AB145224FF646303AFED11D2 /* JXCategoryDotCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 931669FB7F8BA540208B2F23E13B2F19 /* JXCategoryDotCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 22F19B23471EE7840581A348EB735BD1 /* UIViewController+LayoutHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = F9AA00EC509DE2C0E25E749F629EF1F6 /* UIViewController+LayoutHelper.m */; }; + 231A40F14D020AE2F61AA5C3289E6CF9 /* UITextView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = FCA4EBF34C88159600AC127D3548346D /* UITextView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2395CE03CE80FC5F9A7F61C48270618B /* JXCategoryViewAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 95BCF1B96C9A492409E9634BC63A400B /* JXCategoryViewAnimator.m */; }; + 2460C08042AF8B7D0492A062F755986E /* NSString+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = C9A08CB30EFC3A6CB342354C253BE4D8 /* NSString+Lookin.m */; }; + 24E8E4ED0B5D988E3346E6638619F4E4 /* SDImageFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 452754C8CDFE17EC42C563B4B6E1F69A /* SDImageFrame.m */; }; + 24E963C1D6245F98BAC8A0ACCB7DE987 /* NSBundle+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 9ECA4FF1A4B2A73F055139B44105081C /* NSBundle+MJRefresh.m */; }; 2567FE276DB76481DEFC7DDFE7D775CC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 261C31F4038EC00D5961218C97905E21 /* LookinConnectionResponseAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 989150BD3DA7E7AE5D05E2F37E778A8D /* LookinConnectionResponseAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 266352AA446DAE8C9502E83810C174D9 /* JXCategoryImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7778E8300903006F261959B2010A06D2 /* JXCategoryImageView.m */; }; - 27212D06F5EDE3BB10264D93075B2275 /* LookinDashboardBlueprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 9D31ED01216EF87422BD04709990AFA0 /* LookinDashboardBlueprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2759D8D4FCE58812ADECB348E369C6F0 /* LKS_MultiplatformAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FBD8AFE7FA55EAB140791EC34C18CD4 /* LKS_MultiplatformAdapter.m */; }; - 27CC45A4ABE5B40723D35310D05CD146 /* LKS_EventHandlerMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C21A04AB85F6948BCB44480387E46C5 /* LKS_EventHandlerMaker.m */; }; - 288CD3416B265CAC1300D7938167AE66 /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 367088C36E8BF33957802AE4A6256CC1 /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 288D796F3F7B9F42690E24A3B1018B2C /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 3504487D6CA5438A7FB00D149564DDFC /* SDImageIOAnimatedCoder.m */; }; - 28BA9702905AA2B4C1E9E4878032D4E4 /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 55A76B2979ED12495977612719BE47A2 /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 29F7F0E98FD26A96364DBACD7D5F237A /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 402826B784C1198142F399AD251F2A3A /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2A24F241D7D74FF6DEA953F9DD49391C /* LKS_EventHandlerMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = E5AA796F8B4298B625A467D39523F40F /* LKS_EventHandlerMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2CDC7B9EAD356E35FEAF526EEA6A8E91 /* LookinWeakContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 16464E573FCB8AFF2E7DB58E7A507D73 /* LookinWeakContainer.m */; }; - 2D0E2E3CDCB12399497B4F31D4C20E3E /* HWShoppingCartPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = B9C3A1374DADDEAE813F69F05F5A2564 /* HWShoppingCartPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2DC44A09A6C9D6DC7D1BDA2DFCF99EE3 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 42EF67A85226C8C14C983E81C71F392D /* MJRefreshConfig.m */; }; - 2DDA5F044BC698BC5D48A7CFDDBF71E3 /* LookinAttributeModification.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B35D70EDD8A3E56FE6F0E6934A400CC /* LookinAttributeModification.m */; }; - 2DDD48230ED9E8068C7E439D79B99A8E /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 3422D3CB84719A98D68CD9DE2857E694 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 2E86A7C77E43AEA4697979F1F848E68D /* LKS_RequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = B9D007BE64FBA88DB3F5D92E0EAEDEAD /* LKS_RequestHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EC1750C894F036194B90CFD26072B0C /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 761A654F557EA15B24079623AF9184F9 /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EC7BA321016EC71EA595E4BAF0B7E8B /* JXCategoryDotCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 98D2F9331639FC6D12A4091DD5F47C96 /* JXCategoryDotCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EDA227454079ED3F6371BF34AFD4735 /* JXCategoryIndicatorCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3875C6FE72ED2368D3701E9901F883B7 /* JXCategoryIndicatorCellModel.m */; }; - 2EEB29D2C570F11620D4CF90D7DFD569 /* Pods-keyBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2EFF1EFA2FF0D2F1AE44A9DDBB932425 /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 797DE6794620B6AD238FF0B8B61A1B32 /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2F6D9BEA582A2DBB70A6C3B2FC2DB91E /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC2FF6B1D45486A6893E456C4B85E05 /* SDWebImageDownloaderResponseModifier.m */; }; - 3111CEA93C868CA68CBD351C934FEB80 /* LSTPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9B2F1B06BC651834D7B3EA1FBC96E466 /* LSTPopView.m */; }; - 3127F22BF0A5465D472669272D586BDC /* HWPanModalIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = C8BABB078FC5FF697A3609C777FC51FC /* HWPanModalIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3187FF0C251D1B78BE87F64F6F6E944A /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = BFEF7CB304E59179EBDA954FA636E74D /* SDWebImageTransition.m */; }; - 31DC2EC78AD1F8241AE6051EF9E73B0A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C599636DAB63CB63CC65E368E1BAAFC /* SDWebImageDefine.m */; }; - 31FA8264AA5553AB85039530B1FB8C4B /* JXCategoryNumberCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 874DD2FA3B20B6BCBCBEE03BEEBE1281 /* JXCategoryNumberCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 320DE42AF3CFE11FF785FEB1A7E6547B /* SDImageFramePool.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E8C0DD47533304FD7479FB5A47A4E3B /* SDImageFramePool.m */; }; - 321F87DA34863DC5C977323BAEDB2B55 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FD309B3FADE968B4258080AC443EFCB /* NSObject+MJCoding.m */; }; - 325CA20B9271F3E008234E1518B79061 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7626DD9951DC84318DF6E875CD7A8C20 /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 261C31F4038EC00D5961218C97905E21 /* LookinConnectionResponseAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D9BB987ADE61FFDF3C240961F2EB4DDB /* LookinConnectionResponseAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 266352AA446DAE8C9502E83810C174D9 /* JXCategoryImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 5CB6F43E2EFE165260D66B0BFF9A8831 /* JXCategoryImageView.m */; }; + 27212D06F5EDE3BB10264D93075B2275 /* LookinDashboardBlueprint.h in Headers */ = {isa = PBXBuildFile; fileRef = 6AB6F2617132C99A6B5CB953305CCA89 /* LookinDashboardBlueprint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2759D8D4FCE58812ADECB348E369C6F0 /* LKS_MultiplatformAdapter.m in Sources */ = {isa = PBXBuildFile; fileRef = 957B3209BD81CDA1C8049B3245F6946E /* LKS_MultiplatformAdapter.m */; }; + 27CC45A4ABE5B40723D35310D05CD146 /* LKS_EventHandlerMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = CD6BC672271DF551FD22D8BABC528CA6 /* LKS_EventHandlerMaker.m */; }; + 27CE2AFFB3219A5D3717045970929C80 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 7EC4505824D228FB201DC90A544C01B3 /* PrivacyInfo.xcprivacy */; }; + 288CD3416B265CAC1300D7938167AE66 /* MJPropertyKey.h in Headers */ = {isa = PBXBuildFile; fileRef = 05A7B005509B15E31ECEED7DFEEB1EDB /* MJPropertyKey.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 288D796F3F7B9F42690E24A3B1018B2C /* SDImageIOAnimatedCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = B92B905C66437721BB933FEDA5B00CB4 /* SDImageIOAnimatedCoder.m */; }; + 28BA9702905AA2B4C1E9E4878032D4E4 /* MJRefreshConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 63A3BD4651AA1DDCB216ABB7FBC3A69E /* MJRefreshConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 29F7F0E98FD26A96364DBACD7D5F237A /* SDWebImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 96AEDA915084E949F39F28D248C2FB43 /* SDWebImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2A24F241D7D74FF6DEA953F9DD49391C /* LKS_EventHandlerMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 51AB8F5FA4517AC80D7763B2894462EB /* LKS_EventHandlerMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2C2405D23D1A7428F65C7D740476ABA2 /* Pods-keyBoard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2CDC7B9EAD356E35FEAF526EEA6A8E91 /* LookinWeakContainer.m in Sources */ = {isa = PBXBuildFile; fileRef = 60F9066C601EE11D24D22C170F05AF13 /* LookinWeakContainer.m */; }; + 2D0E2E3CDCB12399497B4F31D4C20E3E /* HWShoppingCartPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = FCBCC9D408AF4A848CBB9CEE3327E256 /* HWShoppingCartPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2DC44A09A6C9D6DC7D1BDA2DFCF99EE3 /* MJRefreshConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 3C71B9877A51B54673C7FFC0C3276863 /* MJRefreshConfig.m */; }; + 2DDA5F044BC698BC5D48A7CFDDBF71E3 /* LookinAttributeModification.m in Sources */ = {isa = PBXBuildFile; fileRef = 39592D3DD29808CC34F5BDE8FFAD64E6 /* LookinAttributeModification.m */; }; + 2DDD48230ED9E8068C7E439D79B99A8E /* SDInternalMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 962D7794EB805E6D2F4F5F0B58218401 /* SDInternalMacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 2E86A7C77E43AEA4697979F1F848E68D /* LKS_RequestHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = AFBA747DBA20D4BACF78CA8DE98ADF94 /* LKS_RequestHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EC1750C894F036194B90CFD26072B0C /* FLAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = E386525610DF7AB4E84ED0202969AB8E /* FLAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EC7BA321016EC71EA595E4BAF0B7E8B /* JXCategoryDotCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B890DAD1E942EF3DB7BF5C23113C1B6 /* JXCategoryDotCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2EDA227454079ED3F6371BF34AFD4735 /* JXCategoryIndicatorCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E73D1DD407F0535009A207AB317F8B7 /* JXCategoryIndicatorCellModel.m */; }; + 2EFF1EFA2FF0D2F1AE44A9DDBB932425 /* UIScrollView+EmptyDataSet.h in Headers */ = {isa = PBXBuildFile; fileRef = 2945888F89AB6D3ECBBEDD6E09D1B949 /* UIScrollView+EmptyDataSet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2F6D9BEA582A2DBB70A6C3B2FC2DB91E /* SDWebImageDownloaderResponseModifier.m in Sources */ = {isa = PBXBuildFile; fileRef = 4BC98580A0BA844CDD661F01812A35C7 /* SDWebImageDownloaderResponseModifier.m */; }; + 3111CEA93C868CA68CBD351C934FEB80 /* LSTPopView.m in Sources */ = {isa = PBXBuildFile; fileRef = 633C3F66E9BA0FD7538C55D5287ED77E /* LSTPopView.m */; }; + 3127F22BF0A5465D472669272D586BDC /* HWPanModalIndicatorProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = BCDE5AFCF524DCA9CD59B6F4A4738325 /* HWPanModalIndicatorProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3187FF0C251D1B78BE87F64F6F6E944A /* SDWebImageTransition.m in Sources */ = {isa = PBXBuildFile; fileRef = A4B49E8FCEA2AFEE938A133ECC269CF2 /* SDWebImageTransition.m */; }; + 31DC2EC78AD1F8241AE6051EF9E73B0A /* SDWebImageDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = AEEC6C323BA320F8FE0EFED607BC9994 /* SDWebImageDefine.m */; }; + 31FA8264AA5553AB85039530B1FB8C4B /* JXCategoryNumberCell.h in Headers */ = {isa = PBXBuildFile; fileRef = A23AD7EF4A12F64EAAFE5154D8DC5843 /* JXCategoryNumberCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 320DE42AF3CFE11FF785FEB1A7E6547B /* SDImageFramePool.m in Sources */ = {isa = PBXBuildFile; fileRef = BF31B533FDEE0B0DA7ED824B4F336534 /* SDImageFramePool.m */; }; + 321F87DA34863DC5C977323BAEDB2B55 /* NSObject+MJCoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 0249A8711339B6CD1E26258C064677E9 /* NSObject+MJCoding.m */; }; + 325CA20B9271F3E008234E1518B79061 /* MJRefresh-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A2E7581F1DA07EBD6D2568091FCCB71 /* MJRefresh-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 327BA3DDA513422E632D3DA4A8FC60EC /* MJRefresh-MJRefresh.Privacy in Resources */ = {isa = PBXBuildFile; fileRef = 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */; }; - 32ACEDCEBE0507A82D6323114A1C74F1 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F21EDB4000AA52958FC207353BC36367 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 32F2B91621A2F8F9AD7C8E2B224D73F6 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = DBE1F0821F32567F3E84359D65C8422C /* SDWebImageDownloaderDecryptor.m */; }; - 32FF240AE9443A1D2CFE27F50B55F591 /* LKS_MultiplatformAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = 06BE908D1EBE4269ACB69B26DE9B834E /* LKS_MultiplatformAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 332F2099D726E75CEFAF1F734104A066 /* LookinWeakContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = 886E6269011F3D0F924F30F32F08508F /* LookinWeakContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3331A013D48A5063B483A51B7E9068ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 55E89941A6B7A73D479A0770A9C96C14 /* AFURLSessionManager.m */; }; - 33D3587AF629B2FA21554DA002D6ACB8 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 25A5CCE05BC1D97AB685203E1D41C4B0 /* SDImageCachesManager.m */; }; - 34B28D4F0168194B6EFAC0520EB7A7F4 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = F55015AACD21AF6274741BBDAC6148E2 /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 353C1D03325B8F3E65F985DA29245F18 /* UIViewController+LayoutHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 23A344AF55814873B0105902E9FBBB2A /* UIViewController+LayoutHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 35D42759A562C482EA5DF574F75CF3B8 /* NSArray+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = B937D529B74DB9581A000F395FF3B6F7 /* NSArray+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3679603CE8336E00A0BFAA39E10A92D0 /* HWPanModalShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 039AC3B9A6AA2BDAB5EB71E7A54C1EF5 /* HWPanModalShadow.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36B3F095DFFC8D2AF2C0A8C523173927 /* HWPanModalContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = A87C5BAF6B8038E9EE8A33551A798606 /* HWPanModalContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36F4B09E7C71DCC5CEC6057814033C37 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 8179AB093F869B4BCCBBF8427F69555B /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32ACEDCEBE0507A82D6323114A1C74F1 /* UIImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B5075BB968E268BB5D61B393C333DB4 /* UIImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 32F2B91621A2F8F9AD7C8E2B224D73F6 /* SDWebImageDownloaderDecryptor.m in Sources */ = {isa = PBXBuildFile; fileRef = E38A10934CB29F9B2C75A0785209FA84 /* SDWebImageDownloaderDecryptor.m */; }; + 32FF240AE9443A1D2CFE27F50B55F591 /* LKS_MultiplatformAdapter.h in Headers */ = {isa = PBXBuildFile; fileRef = EDA0AA2D50C091E5400CDFDEC4B5B802 /* LKS_MultiplatformAdapter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 332F2099D726E75CEFAF1F734104A066 /* LookinWeakContainer.h in Headers */ = {isa = PBXBuildFile; fileRef = B0922492568B0DD6D1F92C0E3B3A53A1 /* LookinWeakContainer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3331A013D48A5063B483A51B7E9068ED /* AFURLSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EA3E73CFAE53223D9EC3DE4B0794DB06 /* AFURLSessionManager.m */; }; + 33D3587AF629B2FA21554DA002D6ACB8 /* SDImageCachesManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DFE214BE294126C1B4FFE49DDADA7AEE /* SDImageCachesManager.m */; }; + 34B28D4F0168194B6EFAC0520EB7A7F4 /* NSImage+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = B09C6285E70223CDED72989080A8442A /* NSImage+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 353C1D03325B8F3E65F985DA29245F18 /* UIViewController+LayoutHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DC211B96CB1A7D40B3203E4778066C9 /* UIViewController+LayoutHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 35D42759A562C482EA5DF574F75CF3B8 /* NSArray+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 852A42FAC0EA5F64033033841A03891A /* NSArray+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3679603CE8336E00A0BFAA39E10A92D0 /* HWPanModalShadow.h in Headers */ = {isa = PBXBuildFile; fileRef = 568F43CF567335FABEC4825ED4776B19 /* HWPanModalShadow.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36B3F095DFFC8D2AF2C0A8C523173927 /* HWPanModalContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 091DAAA7597B1233173C3BB1DC8D1D79 /* HWPanModalContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 36F4B09E7C71DCC5CEC6057814033C37 /* UIView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 36BEAD7507B8644D14D46C852A6EF20B /* UIView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; 3777CD89D444CBBB48AE323B303F3FC7 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */; }; - 37B890ABDC7DD441E6AA662325D412E6 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = ED6F94603AF0AF72D292CADE8ABCEEB3 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3800EA1B83FDE869FB2E4B049F519962 /* UIViewController+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3753072CB1EE987F4CDC7E86385B9A99 /* UIViewController+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 381E0DBE152CA0D9C66310CB77A20A83 /* HWPanModalInteractiveAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BE68C7303DE07C8DA01573CDDE9003F /* HWPanModalInteractiveAnimator.m */; }; - 38938E604A7D708E6378A44063EF3512 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A1600286757D192233397A2BF1A2371 /* UIImageView+WebCache.m */; }; - 392F62298E0D8C669229E132D791BBF5 /* UIImageView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C560A21071D707C98AE6CD75AED8BFD /* UIImageView+LookinServer.m */; }; - 3A1AD84C0DC3C256418CC46739024E96 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 5A6A16B78780399804F5DD15816ADE2B /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 3A2FCB914F6EADED828FF05F7E9132AE /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 47F474CA83A8EC338136568BDBFF8343 /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B1C72DC480AB19BD55B6275750D62FE /* NSSet+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = D40E6AE30D19137ABA0A5D046329BCCD /* NSSet+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3B62431BEF820E7FC779F344AB2A1D17 /* JXCategoryIndicatorLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1711B81346B8ED1944B5A8A478A4CF3F /* JXCategoryIndicatorLineView.m */; }; - 3B8EDFF69A68ABD3735E0C6931CA5C95 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = B2D84B5B7090CE22D8AFB107E403CA13 /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3BB69CB142D744367868F834912993CB /* UITextField+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 877837A5816B3B110C5B763CCBD0ECFD /* UITextField+LookinServer.m */; }; - 3BD85ED8999015326D93D8EEADCCF910 /* HWPanModalPresentationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 6749EA453DC312E08B14CE8AFDB79F3C /* HWPanModalPresentationDelegate.m */; }; - 3BF23DD02B40D2A2E98FF9D042A5AF4E /* Pods-keyBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */; }; - 3C7815EEC599DD7D42FDEF19B2FF1563 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FCD0CB41F1E259546B6F8A9BFF05378 /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C7EAECB8C573E714C818BA04EB33773 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 35DC020855ECA02C5E2568299594E9C0 /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3C8F2F868D0C361CAF43E53CDB8EB631 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = E95C47EFA2CADA467B5A46831F0EA87A /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3CA9E838F014DC32CFCF6AD36F5D7E58 /* HWPanModalInteractiveAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DAB18271BAF2DB3E49BCAF049FC4F01 /* HWPanModalInteractiveAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3CE13969772F4180701A575FAB98E978 /* JXPagingView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 85E262E36BEDDEA0E7B4F4A870DA4314 /* JXPagingView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3D0BBFEC1921CE71BC240DC18D8BE540 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = AC558AE5F168E24878BD4ACF3EE1274A /* SDImageTransformer.m */; }; - 3E3D09700A62280A9EB8D65B97335ED8 /* LKS_CustomDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = E74AC99A06CC9DE9D81D54044B013F98 /* LKS_CustomDisplayItemsMaker.m */; }; - 3E982309E295BB31C065D62750D0F1FD /* UIView+LSTPV.h in Headers */ = {isa = PBXBuildFile; fileRef = A5262AA56B4C8511CBA390D4808E37F2 /* UIView+LSTPV.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3FF7252DD60182221BB1E5A167C41A07 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = E152B4E044E172623798E791ACCC157E /* UIProgressView+AFNetworking.m */; }; - 40AD5D0AB3ABF7F3A5A4A98BC5B84419 /* LookinAttributesSection.h in Headers */ = {isa = PBXBuildFile; fileRef = B74F835090D47DFE066B4DAD231882AC /* LookinAttributesSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 416DA8B2997381F954DBA6E6A53DA4A2 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 2132EF8C73164960BCAFD57CF9C7A53F /* NSData+ImageContentType.m */; }; - 41A4AAE7E6024E7AAB83DD22FB42D34D /* UIColor+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = C626E0F07BD081EBE5955DEA5669BF14 /* UIColor+LookinServer.m */; }; - 425C9EA28FBEB7F7FC09A3F4A88C5955 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = F8A31B7D92D4FBD879F8C39ED3139439 /* SDWebImageError.m */; }; - 4281CC31F4D4EAE690F999C778F17E5B /* JXCategoryViewAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = E0A4E94FB3CF9B468E72117C85C2E773 /* JXCategoryViewAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 37B890ABDC7DD441E6AA662325D412E6 /* MASConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = FD61DA71A7253ED59D65D424C86E2C50 /* MASConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3800EA1B83FDE869FB2E4B049F519962 /* UIViewController+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C7F47A09BE728487DF546FE00CA555E /* UIViewController+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 381E0DBE152CA0D9C66310CB77A20A83 /* HWPanModalInteractiveAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 74751305705DEA03873DFA2AF4DDC9B7 /* HWPanModalInteractiveAnimator.m */; }; + 38938E604A7D708E6378A44063EF3512 /* UIImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = FB718B97DF8D94DCF736C973F8184652 /* UIImageView+WebCache.m */; }; + 392F62298E0D8C669229E132D791BBF5 /* UIImageView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = DA0C012CAB8552E7EA8382B0E5D6B738 /* UIImageView+LookinServer.m */; }; + 3A1AD84C0DC3C256418CC46739024E96 /* SDmetamacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 98B3D67E4B164109B9B94A959496BA25 /* SDmetamacros.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 3A2FCB914F6EADED828FF05F7E9132AE /* UIView+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 38C2193309DE8B485EA6F0495C08B115 /* UIView+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B1C72DC480AB19BD55B6275750D62FE /* NSSet+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = C1D06F4343D9C630BC102E7BCD9CECCF /* NSSet+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3B62431BEF820E7FC779F344AB2A1D17 /* JXCategoryIndicatorLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = B49F76B93F72D361782D7DA99B65ADC9 /* JXCategoryIndicatorLineView.m */; }; + 3B8EDFF69A68ABD3735E0C6931CA5C95 /* AFURLSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 1612A7E2EB4D912BD038AFA9FAE11CFD /* AFURLSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3BB69CB142D744367868F834912993CB /* UITextField+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = C64A52A00F5D8A13BA6BD40D1834BF56 /* UITextField+LookinServer.m */; }; + 3BD85ED8999015326D93D8EEADCCF910 /* HWPanModalPresentationDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1724C0944D7BC65545806EE9EDED203D /* HWPanModalPresentationDelegate.m */; }; + 3C7815EEC599DD7D42FDEF19B2FF1563 /* SDWebImageOptionsProcessor.h in Headers */ = {isa = PBXBuildFile; fileRef = FD3C0DF69EC6CFA1DD8299F62B1A84FB /* SDWebImageOptionsProcessor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C7EAECB8C573E714C818BA04EB33773 /* UIImage+MultiFormat.h in Headers */ = {isa = PBXBuildFile; fileRef = 517D8EDC9F4BA34E4E4060247125B56D /* UIImage+MultiFormat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3C8F2F868D0C361CAF43E53CDB8EB631 /* SDWebImageCacheSerializer.h in Headers */ = {isa = PBXBuildFile; fileRef = BD430BA3E5DB115A0F8BF9D6110923AE /* SDWebImageCacheSerializer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CA9E838F014DC32CFCF6AD36F5D7E58 /* HWPanModalInteractiveAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 47A97040129EEE8B96AEEA0A9B73DA45 /* HWPanModalInteractiveAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3CE13969772F4180701A575FAB98E978 /* JXPagingView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B4319C3394898C8897D6580DAC5A5124 /* JXPagingView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3D0BBFEC1921CE71BC240DC18D8BE540 /* SDImageTransformer.m in Sources */ = {isa = PBXBuildFile; fileRef = C45DF4498F0949CD4F02FA86BFE50D93 /* SDImageTransformer.m */; }; + 3E3D09700A62280A9EB8D65B97335ED8 /* LKS_CustomDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = C19EBB7B5E5A5B4CB83F93B794EA02A1 /* LKS_CustomDisplayItemsMaker.m */; }; + 3E982309E295BB31C065D62750D0F1FD /* UIView+LSTPV.h in Headers */ = {isa = PBXBuildFile; fileRef = 6757029D58C1BFD772BCC87D14A52E39 /* UIView+LSTPV.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3FF7252DD60182221BB1E5A167C41A07 /* UIProgressView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 5B758502F7753329D591359BA2747831 /* UIProgressView+AFNetworking.m */; }; + 40AD5D0AB3ABF7F3A5A4A98BC5B84419 /* LookinAttributesSection.h in Headers */ = {isa = PBXBuildFile; fileRef = CAE21A3C562355122DA705E505CCA673 /* LookinAttributesSection.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 416DA8B2997381F954DBA6E6A53DA4A2 /* NSData+ImageContentType.m in Sources */ = {isa = PBXBuildFile; fileRef = 928339E7523C1267D5DF15E548454A5E /* NSData+ImageContentType.m */; }; + 41A4AAE7E6024E7AAB83DD22FB42D34D /* UIColor+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = FED91C88820F2942B3A007C5E5D17ACB /* UIColor+LookinServer.m */; }; + 425C9EA28FBEB7F7FC09A3F4A88C5955 /* SDWebImageError.m in Sources */ = {isa = PBXBuildFile; fileRef = A4F1299F85FD74B081B5C5F85EF530B7 /* SDWebImageError.m */; }; + 4281CC31F4D4EAE690F999C778F17E5B /* JXCategoryViewAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 8FF761C99D422AE106C31A4A7AE469C7 /* JXCategoryViewAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; 431023914A5D2653ABAE7AB54880C9AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 4334CCEA5B7EA16A4EF26702D287CB07 /* UIScrollView+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 22613DFB1026F3E41B141E34C637D600 /* UIScrollView+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4424E7517B86FE622BCD3D5040FC579C /* JXCategoryTitleCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 00B67A73E7EE0522188FAE4145324D19 /* JXCategoryTitleCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 442F468E261A1106C291BF52BDBF9DB7 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 195B648C25562B52954B1E7C1D8964C3 /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 447BBB1BCA8E0F2D23634888BED6DA81 /* LookinDashboardBlueprint.m in Sources */ = {isa = PBXBuildFile; fileRef = 2783C33881FB9ED3037D4D66B93FAD7E /* LookinDashboardBlueprint.m */; }; - 44CD842019B1CEA681F820F37A30B7C4 /* SDImageFramePool.h in Headers */ = {isa = PBXBuildFile; fileRef = F86F79271CDA27370B63C4004FB83EF7 /* SDImageFramePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4503182D5F8EF2F02609862026D2D455 /* HWVisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = BC5B799F7FC71DC9649AD62AE8B34DC7 /* HWVisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 452C940762F65B125C216F73B369F583 /* MJRefreshStateTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = B26771C31428D52F8DFB859AE1AC3503 /* MJRefreshStateTrailer.m */; }; + 4334CCEA5B7EA16A4EF26702D287CB07 /* UIScrollView+Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 7BDFAC11D184E7F4498FC12FE0AFDCFC /* UIScrollView+Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4424E7517B86FE622BCD3D5040FC579C /* JXCategoryTitleCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CF1A36FA548FCE3A4F7DA66625E9583 /* JXCategoryTitleCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 442F468E261A1106C291BF52BDBF9DB7 /* MJRefreshHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 16308A5AF08E401B61B68CCD953A0528 /* MJRefreshHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 447BBB1BCA8E0F2D23634888BED6DA81 /* LookinDashboardBlueprint.m in Sources */ = {isa = PBXBuildFile; fileRef = 73A2C1D7BD2A650246BEE1A00F6D836C /* LookinDashboardBlueprint.m */; }; + 44CD842019B1CEA681F820F37A30B7C4 /* SDImageFramePool.h in Headers */ = {isa = PBXBuildFile; fileRef = 449CCE39A5A9EA789B9A284113D1025E /* SDImageFramePool.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4503182D5F8EF2F02609862026D2D455 /* HWVisualEffectView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7E270235979252FF388A0C6D1E54966D /* HWVisualEffectView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 452C940762F65B125C216F73B369F583 /* MJRefreshStateTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 29792A8AE7CB7444FE7BA20424B814AD /* MJRefreshStateTrailer.m */; }; 4571A0EA37DC84F39E3830D38A1531AB /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - 45E1583D7EF53489B82C4CA2AD1AD0CF /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 17D9582F158C09F75D84ECE893151E91 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 464A0100327C8531D86BDC31737CCF75 /* LookinAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = CB40236F7A3DB0EECDBA370753BEDDD4 /* LookinAppInfo.m */; }; - 4688743B7B845309486559EB7BD5D147 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = AB253C473EBD2DF633A230C7FAA304B7 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 475B4F3E71C293065AAFDB1888696CF6 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = C746AE302AD12A4D0F6E287CACA690C6 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 48916DE9521F627589300512ECC2D4A5 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A970B89D7ECEFF994ACF22A5493E001 /* NSButton+WebCache.m */; }; - 48EB84614F04E6089393ADDFA4BA8603 /* LSTTimer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 3F5F8D57BABE5A9AD2D0BC75B55D1A52 /* LSTTimer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4A15ABB502D625EBE3E63100664AB822 /* LookinCodingValueType.h in Headers */ = {isa = PBXBuildFile; fileRef = F2698AC3972900E338490644A2E03A2A /* LookinCodingValueType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 45E1583D7EF53489B82C4CA2AD1AD0CF /* MJRefreshBackFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = F32DF0242A37C60B9E8BEDC175125BB2 /* MJRefreshBackFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 464A0100327C8531D86BDC31737CCF75 /* LookinAppInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = DF85367F662269F3652AFC693AA2B00F /* LookinAppInfo.m */; }; + 4688743B7B845309486559EB7BD5D147 /* SDWebImageCompat.h in Headers */ = {isa = PBXBuildFile; fileRef = B87895ABF5221A865DF2D53247763F89 /* SDWebImageCompat.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 475B4F3E71C293065AAFDB1888696CF6 /* MJRefreshBackGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = BBA58A99F7E528A8D41BD96706230160 /* MJRefreshBackGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 47C6C10BB05445BCB8CBCA4DADE7E933 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 48916DE9521F627589300512ECC2D4A5 /* NSButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 53155231B4EB5B29274A0546D6F39B91 /* NSButton+WebCache.m */; }; + 4A15ABB502D625EBE3E63100664AB822 /* LookinCodingValueType.h in Headers */ = {isa = PBXBuildFile; fileRef = 99712B41FFAFC24C5F649A94D8DD7FFE /* LookinCodingValueType.h */; settings = {ATTRIBUTES = (Public, ); }; }; 4A2D7878579537881DD3859B3359F702 /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */; }; - 4ACC15DF96D179E48E4276AE3C540C7C /* KeyValueObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = E1F236D1BF028AEAD75A9FB3C9DCAE0F /* KeyValueObserver.m */; }; - 4B2C2AE16AE3DDA7417AFCF7952588F1 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D3543E70B7F1B6F0CB25AB731CA0DFBE /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 4C8C34A09D61A3881DFB1A544A2CA2A5 /* JXCategoryFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E96574DDD94EB958E64B0AD7C7B20F2 /* JXCategoryFactory.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4D2C79AB2D24CFEC864F08D913CE7692 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D1EF86D80B6333688465CCC41BA33F7 /* SDImageCodersManager.m */; }; - 4DA2C6099343CD55160ECB3EBDDFE1DF /* NSObject+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 9FD83B41506E28893BC297C4BDAB1B46 /* NSObject+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DCA75BFE1558CE59DFC56607E49B3D2 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = E9598F4E504AE0DA98A0B2DC305F1C83 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2CAA34C64434033ACBB7F68A74F4D15B /* HWPanModalContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4E0FBD829EB07B8D5D2A5F6115457BE7 /* LSTTimer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C181D8B9B1142624BE8BFFA787AA2854 /* LSTTimer-dummy.m */; }; - 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C2FE2279B0EA1E9F949E0AF58D09E3B /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 4BC6F317480167EA6C97C3ED771D57CA /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4ECE7F80A917130DE4045E25D741EAF9 /* JXCategoryTitleCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3545C9AC3AD500CD4E48A3E2630C521B /* JXCategoryTitleCellModel.m */; }; - 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = 06EFD395C240E38E2ED0DCAF40CE73FC /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 50096BAC0F3270FB111E76D32714E579 /* Image+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = FB1E7E734FDF6F7CAC668B6BD6A2A014 /* Image+Lookin.m */; }; - 506FC58999564A737C745F2590E9B4D5 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F31829B35104CCEC70FD712B1D4D4E2 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5106193FDEA44A08AAAAB9B8A227CBE9 /* HWPanModalPanGestureDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 95BD516A8F354C5C9CD65BFD30C9BED7 /* HWPanModalPanGestureDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5111A0A0934551CD2B9DDB1A1CA79FA7 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = FBF4C669CA968A448B7E1DD3A141A41C /* SDAnimatedImageRep.m */; }; - 512B9661FC34235E0EEB3A6D3E319B88 /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = 4688EE09ADCEE19CD4BDF95833F7E81D /* MJPropertyType.m */; }; - 5163FC6D715F6881B1FA1AB13DCEF870 /* UICollectionViewLayout+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = F0FF9B39CB74F30B336CF7D4085E2AE0 /* UICollectionViewLayout+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5174DD2019966DFDC21B8864453ED3DE /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = 96BA563F965A1054AC53D0F3D5BD3AFE /* NSObject+MJClass.m */; }; - 523235228A1C021C67F2E3776A922DC5 /* MJRefreshTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A91961A508CA556983A4A3F57FB3133 /* MJRefreshTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 526485EF6D2B62B24DB59122FB94BD42 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4CF942497E18FEE75DD2CDC6779A790A /* SDDeviceHelper.m */; }; - 52E60EE26D065DB63D272298AC8867DF /* JXCategoryTitleVerticalZoomView.h in Headers */ = {isa = PBXBuildFile; fileRef = 059C3C014AA92686FDCE895211A108CE /* JXCategoryTitleVerticalZoomView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5308E660E723C11E7691D311FD59C459 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 61A0FA60F5E41A8B04C442FE582DA298 /* SDDisplayLink.m */; }; - 53433003112C4FE271EC985803862B61 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = C205DB74EDBD3C80FB36923BD2255DBB /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 53C1722650FCAB2637867D0DC31FC3CB /* Lookin_PTUSBHub.h in Headers */ = {isa = PBXBuildFile; fileRef = 3416384E4A531494C7B12CDD1AEA74A1 /* Lookin_PTUSBHub.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 541AD3B0F5EA216EE730ECC6E8B84C31 /* HWPanModalPresentationAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 15D78A0355CAA0B846DBC1DAC7B101F4 /* HWPanModalPresentationAnimator.m */; }; - 546DE9D8142C6D8554E083C6FD65D0BE /* JXCategoryIndicatorTriangleView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3381742E54E03DCDB9DD644DF65C4689 /* JXCategoryIndicatorTriangleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5490C03887ACF6C4EAC25ADFBB509CE5 /* NSSet+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = C02B6DB0CED9923894E4B972F8B03882 /* NSSet+Lookin.m */; }; - 54E268C32915CF908E7AA776909B45EB /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 7032D81BB8B12F48732F1EBEA7A020D7 /* MJRefreshConst.m */; }; - 55910DBCDF99E39955BE01EAD8251081 /* JXCategoryImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = FAC311E0F10AA1170D905B6C90AE765F /* JXCategoryImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 55F7C7F055A18044497F8C88CAE34118 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = E6B846D03C97210EDD55850D04A8F27A /* SDImageCachesManagerOperation.m */; }; - 561420A20DC0A84258A902E9EB69A15A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = A96A60100BE610809D6E0C7741CF992C /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 564714D075CF51356D3D8437846AA6EB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 32F3C5B0B7D11631504E27D25E8CB5A2 /* AFURLRequestSerialization.m */; }; - 56D8A7EAE4D72FF6C23421CAB6F21504 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E2D9F4632DB7036D701CB57007800AB /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 56E800EB3B2BE8AE0BA45A30974D7920 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 99302CD0854353E1FA9C8EE70F3FCF59 /* Masonry-dummy.m */; }; - 56F1B543BC54204336CB5E50B60F719F /* Color+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = EEB6F4442CB80A88D94B35721714C121 /* Color+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5735091665AC18FAD028EB68786A85AE /* LKS_CustomAttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B2ACD52F18B25CE1FB40A0F1DF81B4A /* LKS_CustomAttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 579DDC4FE78455D88E0350C3268D96C4 /* JXCategoryIndicatorComponentView.m in Sources */ = {isa = PBXBuildFile; fileRef = D4E6C9FAE7DD5348F64FBD66AA03DA5B /* JXCategoryIndicatorComponentView.m */; }; - 58F7CE37BB4CB3BE806B68A502E6E1A7 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 45880427FEDFE00B81EA46DB6F5AFD52 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 596180E0EC9F46D12BA840DC4AA62659 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 5107F5A871AC7AEDAD8C78C1F1AB8E40 /* UIImage+MemoryCacheCost.m */; }; - 597E390C0BBB75B8045B651C487C2034 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E5DB75D5C223CDC5703FA115447A148 /* SDImageAWebPCoder.m */; }; - 5A6D3BE92C77ED70C397567996DFAEB9 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9DA5F48CB9575D0E2C775D8D7C262C14 /* AFHTTPSessionManager.m */; }; - 5A8BC91257FF6B36237BF09A7A6EADF6 /* LookinObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 05B3B08A0927761DC2CBA02E9412CD21 /* LookinObject.m */; }; - 5AF22814CD055B553AD9D78BE54B94E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 7446E6EDA4118B08C0D538CAA41C47AA /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5B08596E856E4CC2F34A8A2372F9F764 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D3CF8B366EB9A41FEDB94035F404215D /* NSArray+MASAdditions.m */; }; - 5BB6B99986FD7111B3AEBE931C7F507B /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 02E945EEF3757BDF2B47E65C51C4D6D6 /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5BD5D9B8F61C124A62C75D9AC36A07BD /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5128E7CF3F35BE25186575F63661EEF6 /* MJRefreshTrailer.m */; }; - 5C8279C226EB028B044C5A0F4AC5A91A /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = C0ECED1A3FCBB93D40B1BFFF5AE2F27D /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 5CAB535753B28B463140F421E9B00136 /* JXCategoryIndicatorCell.h in Headers */ = {isa = PBXBuildFile; fileRef = BF9910B7B2FF86AF620A45955A338072 /* JXCategoryIndicatorCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5D0DEC179A7B4143769C663082E2662A /* LKS_ExportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = EB3C413B4ED21D886E50FCBC0761408E /* LKS_ExportManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DCBA14510E091D6A1CE499B08B794B5 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 3EA0FACBE46F43AB7A99266BBBF20510 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5DF02901155278BE109057E17C7C1D99 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 360A9029323DBF687A82BCD2C22F386C /* PrivacyInfo.xcprivacy */; }; - 5DFCBADAC7D0FAC82C84A6C8E7BF1DA6 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 13B6B935F583A1ED5234B7E3DF044521 /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E10328A83E05D0015D7459FAAEF121D /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3653F678D1C9DBE34F6262A65263C642 /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5EE53074B8A35D48AB76CAF38C88A37A /* JXCategoryView.h in Headers */ = {isa = PBXBuildFile; fileRef = DACFBFCC588CFB73AE8A6DB153DEA42F /* JXCategoryView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F45735DF355530CC955066D3C007E19 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = DEDFC34DB720F4FD92E634E486425845 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F5426608460A8B17C1AE5C2351BAA19 /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F77AB571A5252972C84B67134918B5F /* UIScrollView+EmptyDataSet.m */; }; - 5FDC4239F7B651092BF582D0F460BAD4 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 239F725CB21A7ABF0EDB35FC92732A5C /* UIView+MJExtension.m */; }; - 6002CB94684D7C786700D2A294146AEC /* Color+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = F2A8643D9113999359ADC6C79DA48111 /* Color+Lookin.m */; }; - 61461B0D9D7B81C3F8D24066D9A19DCE /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = C4B0E298E792EE24705C7E8457669228 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61507E402F1F7C58BF119995A0479A22 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A8DC30D2C209AB66D8E812915E6F319 /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 616A8338C42FB01748DF1BDDA944858D /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = ECA422AB0F45E3F4B650188FEE476C8C /* UIView+WebCache.m */; }; - 61857C821395B868C65A8FFE4DA1B4E3 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = E5B1C13BB84FC1E79BC9BB233B793A5A /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61EAFBCDC83B2C603918B3C9D9A73A18 /* LookinConnectionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = F3AD144DF03231D478D237DCFC615D36 /* LookinConnectionAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6204F3E4E75772BB6CAB13CD53D9D93E /* JXPagerSmoothView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7F178706A5ED2B8C0CCCEA56CC4A04B6 /* JXPagerSmoothView.m */; }; - 620A0FFFDE5AEF215E28135566106BA4 /* JXCategoryBaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = 72F67C5C9E4A93AFE6FF113487609183 /* JXCategoryBaseView.m */; }; - 62FE895DF9D65A2955A275D909ECBE18 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 635235003B3FEDB8B457A8FFF46C69E3 /* SDAnimatedImageView.m */; }; - 6525ECE1CAFC1259F9E6E5FDDE6CF218 /* UIVisualEffectView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D013F3B6606D04CFD12051F02350DB55 /* UIVisualEffectView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4ACC15DF96D179E48E4276AE3C540C7C /* KeyValueObserver.m in Sources */ = {isa = PBXBuildFile; fileRef = A2350DF4D8FE6C892E64B8C644667527 /* KeyValueObserver.m */; }; + 4B2C2AE16AE3DDA7417AFCF7952588F1 /* SDImageAssetManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F5507B4A6BD90BF5F74B1AAC009AD90 /* SDImageAssetManager.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 4C8C34A09D61A3881DFB1A544A2CA2A5 /* JXCategoryFactory.h in Headers */ = {isa = PBXBuildFile; fileRef = 1C9E2AC9C9AE14EBBFDCDBBA925613E4 /* JXCategoryFactory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4D2C79AB2D24CFEC864F08D913CE7692 /* SDImageCodersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 03700B93F7A3FF6F3675D80E5DB1C1C7 /* SDImageCodersManager.m */; }; + 4DA2C6099343CD55160ECB3EBDDFE1DF /* NSObject+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A2BDE1ACE119E645C72F92B4CCAECF4 /* NSObject+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DCA75BFE1558CE59DFC56607E49B3D2 /* MJRefreshConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B4792E0E693278C27DB918B70E58272 /* MJRefreshConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4DD9F4BAA95C3527A660D3AAD055CF1E /* HWPanModalContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = E6CAC4483459A4704E779D629644670B /* HWPanModalContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4E964FFE29CFF8613C0029C913F39A05 /* LKS_InbuiltAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8796E86BD11BC29D00EED72E50AE91 /* LKS_InbuiltAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4EC8DBADA7BB954276351A639EB4398D /* UIBlurEffect+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = C41AE199679E3EEC03FA1272FE103027 /* UIBlurEffect+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4ECE7F80A917130DE4045E25D741EAF9 /* JXCategoryTitleCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = B70A750F053AB9B0B60CBF456ED577A9 /* JXCategoryTitleCellModel.m */; }; + 4ED05DB3E43FF6AE1FA22130B2B50F05 /* UIImage+MemoryCacheCost.h in Headers */ = {isa = PBXBuildFile; fileRef = 0055AF44029FABEF5E29D1BC1B86CC15 /* UIImage+MemoryCacheCost.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 50096BAC0F3270FB111E76D32714E579 /* Image+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = C6553D3214536278C24D990CC36267F3 /* Image+Lookin.m */; }; + 506FC58999564A737C745F2590E9B4D5 /* AFHTTPSessionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = FB614FC70886C761E2BA7E9C7E7F2D88 /* AFHTTPSessionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5106193FDEA44A08AAAAB9B8A227CBE9 /* HWPanModalPanGestureDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = F764EB4004D4A21398D072493BD19D56 /* HWPanModalPanGestureDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5111A0A0934551CD2B9DDB1A1CA79FA7 /* SDAnimatedImageRep.m in Sources */ = {isa = PBXBuildFile; fileRef = C94F3031AB6C5451E9610DBD24FE9029 /* SDAnimatedImageRep.m */; }; + 512B9661FC34235E0EEB3A6D3E319B88 /* MJPropertyType.m in Sources */ = {isa = PBXBuildFile; fileRef = 073DE0C455B2CE33A0FBA3C6ECF4F8CF /* MJPropertyType.m */; }; + 5163FC6D715F6881B1FA1AB13DCEF870 /* UICollectionViewLayout+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 70021D526E8906DE61E9D2D0F92A78C3 /* UICollectionViewLayout+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5174DD2019966DFDC21B8864453ED3DE /* NSObject+MJClass.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D149C2EB765D348E439D96EC2A80A04 /* NSObject+MJClass.m */; }; + 523235228A1C021C67F2E3776A922DC5 /* MJRefreshTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 572433DB55AF2085E2E4D419FCE37679 /* MJRefreshTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 526485EF6D2B62B24DB59122FB94BD42 /* SDDeviceHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = F947DB2E34F4112ED83356B8AA944880 /* SDDeviceHelper.m */; }; + 52E60EE26D065DB63D272298AC8867DF /* JXCategoryTitleVerticalZoomView.h in Headers */ = {isa = PBXBuildFile; fileRef = 996C55702A2E4E7B3785C0C5454598C9 /* JXCategoryTitleVerticalZoomView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5308E660E723C11E7691D311FD59C459 /* SDDisplayLink.m in Sources */ = {isa = PBXBuildFile; fileRef = 1679E08A4A241FB86455E71FDFB20D9F /* SDDisplayLink.m */; }; + 53433003112C4FE271EC985803862B61 /* SDWebImageCacheKeyFilter.h in Headers */ = {isa = PBXBuildFile; fileRef = B4F7FC0CFCBE2143A4999C2F356D2B47 /* SDWebImageCacheKeyFilter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 53C1722650FCAB2637867D0DC31FC3CB /* Lookin_PTUSBHub.h in Headers */ = {isa = PBXBuildFile; fileRef = 210B700E8324769F741C26126E6B1F4A /* Lookin_PTUSBHub.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 541AD3B0F5EA216EE730ECC6E8B84C31 /* HWPanModalPresentationAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 831897EBD9EF72C4D55D02DE399C410A /* HWPanModalPresentationAnimator.m */; }; + 546DE9D8142C6D8554E083C6FD65D0BE /* JXCategoryIndicatorTriangleView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5B766998FBEAD558A15F06134D5A9335 /* JXCategoryIndicatorTriangleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5490C03887ACF6C4EAC25ADFBB509CE5 /* NSSet+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = E312EC8FB74A492C6D5A647700644AC4 /* NSSet+Lookin.m */; }; + 54E268C32915CF908E7AA776909B45EB /* MJRefreshConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 8638AEC16F5A3F7D05EF0F7C39544261 /* MJRefreshConst.m */; }; + 55910DBCDF99E39955BE01EAD8251081 /* JXCategoryImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 31C9A23E37AE09BB9DC1BC766BD3A6AA /* JXCategoryImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 55F7C7F055A18044497F8C88CAE34118 /* SDImageCachesManagerOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = EE9E5D3590E1EC14CD269A8B340CE3F0 /* SDImageCachesManagerOperation.m */; }; + 561420A20DC0A84258A902E9EB69A15A /* MJRefreshAutoFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = DE7E60B5B6A0850596F935D95CAFE167 /* MJRefreshAutoFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 564714D075CF51356D3D8437846AA6EB /* AFURLRequestSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = DE378B71C4559C86FA84F1AB2F15BD03 /* AFURLRequestSerialization.m */; }; + 56D8A7EAE4D72FF6C23421CAB6F21504 /* MJPropertyType.h in Headers */ = {isa = PBXBuildFile; fileRef = A0329494F5B3BBF4A9C54DD83622388B /* MJPropertyType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56E800EB3B2BE8AE0BA45A30974D7920 /* Masonry-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 07001E763AE097A75E1AFBEB80197373 /* Masonry-dummy.m */; }; + 56F1B543BC54204336CB5E50B60F719F /* Color+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 8BE10EB8B74E3D1DE4172EF863BC22F8 /* Color+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5735091665AC18FAD028EB68786A85AE /* LKS_CustomAttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 52FF07E10C8C0B816653B6836CCFFD04 /* LKS_CustomAttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 579DDC4FE78455D88E0350C3268D96C4 /* JXCategoryIndicatorComponentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D490F15AED6B55BCD64F4D5193A9375 /* JXCategoryIndicatorComponentView.m */; }; + 58852265A6A355CDF8D25BCD71F54F3D /* Pods-keyBoard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */; }; + 58F7CE37BB4CB3BE806B68A502E6E1A7 /* SDWeakProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = A92BC89EBEE6C3CE964CA994B506EA43 /* SDWeakProxy.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 596180E0EC9F46D12BA840DC4AA62659 /* UIImage+MemoryCacheCost.m in Sources */ = {isa = PBXBuildFile; fileRef = 0451FF8513ABCE79BA473B450192579B /* UIImage+MemoryCacheCost.m */; }; + 597E390C0BBB75B8045B651C487C2034 /* SDImageAWebPCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = BC30CFC7778FEADF9DCBF0A4ABA1769C /* SDImageAWebPCoder.m */; }; + 5A6D3BE92C77ED70C397567996DFAEB9 /* AFHTTPSessionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A11C415AC80BAC0B06685E1F8AC7C7C8 /* AFHTTPSessionManager.m */; }; + 5A8BC91257FF6B36237BF09A7A6EADF6 /* LookinObject.m in Sources */ = {isa = PBXBuildFile; fileRef = CFC8ED8D34DD2679124911EB0F515607 /* LookinObject.m */; }; + 5AF22814CD055B553AD9D78BE54B94E1 /* UIProgressView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = EB461C49F04DBE8D8B709BDAA4911ADC /* UIProgressView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5B08596E856E4CC2F34A8A2372F9F764 /* NSArray+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 3E34DAE4904CE87FBB70688EA36DF9D3 /* NSArray+MASAdditions.m */; }; + 5BB6B99986FD7111B3AEBE931C7F507B /* MJRefreshAutoStateFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C065D632F2F749CBD48B178A68B1631 /* MJRefreshAutoStateFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5BD5D9B8F61C124A62C75D9AC36A07BD /* MJRefreshTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C64D6AC35DE27CAD74CA154541AF1C9 /* MJRefreshTrailer.m */; }; + 5C8279C226EB028B044C5A0F4AC5A91A /* SDAssociatedObject.h in Headers */ = {isa = PBXBuildFile; fileRef = E4BFFACAA945CC17167910BF3C319571 /* SDAssociatedObject.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 5CAB535753B28B463140F421E9B00136 /* JXCategoryIndicatorCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 913F72595D3AEFAFE006FD96A54FD8DA /* JXCategoryIndicatorCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5D0DEC179A7B4143769C663082E2662A /* LKS_ExportManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C47102257C212ED978684D39466579B /* LKS_ExportManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DCBA14510E091D6A1CE499B08B794B5 /* UIImage+Metadata.h in Headers */ = {isa = PBXBuildFile; fileRef = 429004AF40A48DE835234068590E6A94 /* UIImage+Metadata.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5DFCBADAC7D0FAC82C84A6C8E7BF1DA6 /* MJRefreshStateHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = F8CEEFBE4317D04F4FD181E44C90A119 /* MJRefreshStateHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5E10328A83E05D0015D7459FAAEF121D /* SDGraphicsImageRenderer.h in Headers */ = {isa = PBXBuildFile; fileRef = D444527057532BACBF8EC98BE62D3E03 /* SDGraphicsImageRenderer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5EE53074B8A35D48AB76CAF38C88A37A /* JXCategoryView.h in Headers */ = {isa = PBXBuildFile; fileRef = 892976CDE28E9BEF86BFABB5F84E72F6 /* JXCategoryView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5EFCAC311A0285F51E8B1B0F7416D7D8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 5F45735DF355530CC955066D3C007E19 /* MASViewConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EB329DC3D8A252CA69C19DAF330A784 /* MASViewConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5F5426608460A8B17C1AE5C2351BAA19 /* UIScrollView+EmptyDataSet.m in Sources */ = {isa = PBXBuildFile; fileRef = 45FCB10C5ADD911EC17F1E6BAAFE9892 /* UIScrollView+EmptyDataSet.m */; }; + 5FDC4239F7B651092BF582D0F460BAD4 /* UIView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 60696FE70F42B1A0CD7B0614C2A2F16C /* UIView+MJExtension.m */; }; + 6002CB94684D7C786700D2A294146AEC /* Color+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 4B2681504ECC11F7B0563ECF0A1FDDFA /* Color+Lookin.m */; }; + 61461B0D9D7B81C3F8D24066D9A19DCE /* MJRefreshGifHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 7718D3A1CB256B2263AD76B8EFDC9B86 /* MJRefreshGifHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61507E402F1F7C58BF119995A0479A22 /* NSArray+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 986324EA3CC9A3BDF0E5C7B1763862EE /* NSArray+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 616A8338C42FB01748DF1BDDA944858D /* UIView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F8CCC7FB49429A8093BC8191C6474D58 /* UIView+WebCache.m */; }; + 61857C821395B868C65A8FFE4DA1B4E3 /* MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 13AC6B7EC0E45B7BC751451206C8C575 /* MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 61EAFBCDC83B2C603918B3C9D9A73A18 /* LookinConnectionAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 10DBEAC7DAAC95D5A947ACA061058C0B /* LookinConnectionAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6204F3E4E75772BB6CAB13CD53D9D93E /* JXPagerSmoothView.m in Sources */ = {isa = PBXBuildFile; fileRef = CF46C0579CB3C54966C0F025487DB215 /* JXPagerSmoothView.m */; }; + 620A0FFFDE5AEF215E28135566106BA4 /* JXCategoryBaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = 39D939E1825294C23871CD06F0A1E6A2 /* JXCategoryBaseView.m */; }; + 62FE895DF9D65A2955A275D909ECBE18 /* SDAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 883434364AD74D3F77868A0CF2FB7A09 /* SDAnimatedImageView.m */; }; + 6525ECE1CAFC1259F9E6E5FDDE6CF218 /* UIVisualEffectView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 9ABEB6B0A44AC8BCBC6CB1A8A8A9A0FF /* UIVisualEffectView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; 659D38386A3E09422812283BF27D71D1 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 6630C0B541E50903F9AD81FD847CFE7A /* JXCategoryIndicatorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = 74444E41B3920B9EB4DA66DCD2975612 /* JXCategoryIndicatorBackgroundView.m */; }; - 67178A8153B1A2F1D0D544B8093E23C5 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = D547696F5943987BC61D389F16B201E8 /* SDAnimatedImageView+WebCache.m */; }; - 676775CB29378BB6CA3CA5992E9C6A99 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 06077AACB035D8452C9F730B2E1F00DF /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 67FCC0F9B42B1C20A66E99A3D56BED18 /* LookinStaticAsyncUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = A7A769F7014A1F30EE6690E054898162 /* LookinStaticAsyncUpdateTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 683D708C157C95ADB467BDD2230BD4E3 /* UITextField+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 94807C278EC259800EBCD3A346749877 /* UITextField+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 68C3E98F8B9D6035962F29AE025DA891 /* UIImage+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E075739451FCFAA914670EB353642C16 /* UIImage+LookinServer.m */; }; - 69345CBCB31076EBF8A2C5885AF973AB /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C0E4900E01624D5262A1ED1DF2F6D35 /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 694B8697854A776E32032999B2EF1FEA /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B5C2096D95608EEB566217452868E46 /* UIImage+Metadata.m */; }; - 6960FF2C4D61A09722930B33B1C7135D /* LKS_ObjectRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = 8127266FF8D9AAE89CDF3511D05BB245 /* LKS_ObjectRegistry.m */; }; - 69A06A02F52EB26259FAD1DF6B121BE1 /* SDCallbackQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E8762E22AB8C87B76E6D94D44665136 /* SDCallbackQueue.m */; }; - 69AB6A513D5F36D7360FEF4FDA1D60D0 /* UIView+WebCacheState.h in Headers */ = {isa = PBXBuildFile; fileRef = B072B2B3BF7FE061CC694AE00BCF5858 /* UIView+WebCacheState.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69E353C99C6EEA3C93CCF2E526460B9D /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 241FDB4FE9E3CE45C4854F0FEB6F8BAF /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 69F6E66A089C40FB1063DE15499BCFDE /* LKS_Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 38A98EA0745C9E839DCFD56B22BF1256 /* LKS_Helper.m */; }; - 6A19379E3B0370EDA447743C9B1A1379 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 806C18993732E8D418AEA50EC6162EDC /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6B0978C9398336656EE309E62060AEAB /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F94B604866DB37515D32D88635EFEE2 /* SDImageAssetManager.m */; }; - 6B5C3592B5E911E833D067D0BC785B1A /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C3B1F50C3A3E82B67AE98F2BAAD5C3C /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6B9D333C18DDBF4E7CC889F7FDE05EEA /* JXCategoryDotView.h in Headers */ = {isa = PBXBuildFile; fileRef = 50BCF4AA1A75105CC04AA446B0DB9B40 /* JXCategoryDotView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6BC2A615678C8BAE9F34ABA68BFDEF78 /* LKS_AttrModificationPatchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 908A8A591A12931E59C177277E1D126D /* LKS_AttrModificationPatchHandler.m */; }; - 6BE86A0FFB0D69C6098CC75E1FB4E8B5 /* JXCategoryIndicatorCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B3FF5D113848A5A9AC244C579FF1441 /* JXCategoryIndicatorCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6BF5DB46D42D8B9D536C870EC77BF4A3 /* JXCategoryIndicatorBallView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A60D0CF9AE4E6671E2A6BBECEE57E4D /* JXCategoryIndicatorBallView.m */; }; - 6C57809DCEA4B6C0CA79918A69FD75DE /* LKS_ConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F1C50876E480E256FAA99FC38F2BC478 /* LKS_ConnectionManager.m */; }; - 6C76DB1B99B98C951F687DE80FE6F463 /* JXPagerListRefreshView.m in Sources */ = {isa = PBXBuildFile; fileRef = 603287955CE071E6EBDC96A98AB97750 /* JXPagerListRefreshView.m */; }; - 6C85CA8D99E50C137D056B6057DAC58A /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = BEC06B30EADD5F0931B350F94CD4D15C /* UIRefreshControl+AFNetworking.m */; }; - 6CA0B4A9E7B2957063163BC673F355CD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 4A984C0F36AC5CCB478D87C1F7E4019D /* AFAutoPurgingImageCache.m */; }; - 6CE8701D161A4BC0860FAF3951762A34 /* LookinHierarchyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 16E6E00D729B1498CE18200F50778930 /* LookinHierarchyFile.m */; }; - 6D637D02F5EE50D21C8548061956C898 /* UIViewController+Presentation.h in Headers */ = {isa = PBXBuildFile; fileRef = 201E2681B892F05C3D7CAFE9E9927D15 /* UIViewController+Presentation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6DE6C7F0FA965828E4FCE687BF75FBBE /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D2CC2D1F9AB2D4CFC68B6327C2793C5 /* MJRefreshAutoNormalFooter.m */; }; - 6E4DE8085E69AD1DDB49B059DCE286DB /* HWBackgroundConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = ED71DE4537C6ECADC81696A80C943E64 /* HWBackgroundConfig.m */; }; - 6E66305665DBCFBCF5B2480BF705D500 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 28EBA38DF7DE3C55A1DCF1C9536E3712 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EFC0630CB2761A2B1FC47176CCD62D1 /* LookinCustomDisplayItemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = CF0E98CA3E42AAC3B854E232BB1AF7FB /* LookinCustomDisplayItemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6EFEEE3AE22E97DCEC4F5A3B88F56FC7 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = FA395F2DBB98D70F218443EA65E0D442 /* SDImageLoader.m */; }; - 6F3637EE643EABB1DE9212EA68649A64 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = E29E39BBB558CC51A6DB91379351B72E /* UIColor+SDHexString.m */; }; - 6F3A575F2B9E1CEB696248B9CB96F357 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = C1227D6957584FA14F5EFE311854C54A /* PrivacyInfo.xcprivacy */; }; - 6F75FDB9BE37C9A8473F97B1696B5D09 /* JXCategoryListContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = E25EECD78C776DB2FDB519D3AA7CB0BD /* JXCategoryListContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7053A9EB6335BEAC9EFDF2D5320E6E2A /* UIView+HW_Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = B444EEABD213A46C07AC5F1B8D73FBF1 /* UIView+HW_Frame.m */; }; - 7074EA7FCC90B4967A437F5C43496828 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = A5C74D4E7CA539C956587A3615702D24 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 70D30BC7134E3C8006BF0B6A4B438057 /* JXCategoryTitleImageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 639A45B880AEBFE1C16D4A9F3AA3D49C /* JXCategoryTitleImageCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 711D32EF4A9901567A488291603BF906 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = BB4D65769822C57911F4A84B9F8FADFA /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 713D162A627185DA38847832AB5BDA44 /* LSTPopView.h in Headers */ = {isa = PBXBuildFile; fileRef = BF40FB09CDD92326BB3177C14DF172AD /* LSTPopView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 71538A1D21015F459964BA625D5EE90A /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = F7CD4CF41A222A66B3E435AB32DF697D /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 717F76926C7BCB5B10C3037AD9239084 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = D2F471FC57FF6DD1F698134B35D27C95 /* SDImageIOCoder.m */; }; - 71BEB1D9532900291A5A24B1C038516F /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = 368AF39857A6659131D7CD15698E6867 /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 71F2B8CBB99087F348C472230200586F /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = FC52B8F222678A49BF1BA307CD9A7777 /* SDGraphicsImageRenderer.m */; }; - 72157F8282836C3F6D65008E2F193655 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 6630C0B541E50903F9AD81FD847CFE7A /* JXCategoryIndicatorBackgroundView.m in Sources */ = {isa = PBXBuildFile; fileRef = D68722AFBA338282E0B3C89AFE0F83AC /* JXCategoryIndicatorBackgroundView.m */; }; + 67178A8153B1A2F1D0D544B8093E23C5 /* SDAnimatedImageView+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = A2C2A9B920BB92B872BA2AC2EA086220 /* SDAnimatedImageView+WebCache.m */; }; + 676775CB29378BB6CA3CA5992E9C6A99 /* SDImageIOAnimatedCoderInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = EF1815C1F114106321929B2F631067E5 /* SDImageIOAnimatedCoderInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 67FCC0F9B42B1C20A66E99A3D56BED18 /* LookinStaticAsyncUpdateTask.h in Headers */ = {isa = PBXBuildFile; fileRef = 09799A44FC43F3184E20B590CC73FFC7 /* LookinStaticAsyncUpdateTask.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 683D708C157C95ADB467BDD2230BD4E3 /* UITextField+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D2F2FDA20E8BC9884D1E9ED05D83DDF /* UITextField+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 68C3E98F8B9D6035962F29AE025DA891 /* UIImage+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 20C453B83E1025092DAD587080018B43 /* UIImage+LookinServer.m */; }; + 69345CBCB31076EBF8A2C5885AF973AB /* MJRefreshComponent.h in Headers */ = {isa = PBXBuildFile; fileRef = 5E9C6ED309FB0F6481FF6639AA9C417B /* MJRefreshComponent.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 694B8697854A776E32032999B2EF1FEA /* UIImage+Metadata.m in Sources */ = {isa = PBXBuildFile; fileRef = 5E5C516541F7C7AC40E990C05307FEEF /* UIImage+Metadata.m */; }; + 6960FF2C4D61A09722930B33B1C7135D /* LKS_ObjectRegistry.m in Sources */ = {isa = PBXBuildFile; fileRef = CB5214881D82D6C122FB4D3B471F9D93 /* LKS_ObjectRegistry.m */; }; + 69A06A02F52EB26259FAD1DF6B121BE1 /* SDCallbackQueue.m in Sources */ = {isa = PBXBuildFile; fileRef = 7BD134826FCB54429F667B8DBF296710 /* SDCallbackQueue.m */; }; + 69AB6A513D5F36D7360FEF4FDA1D60D0 /* UIView+WebCacheState.h in Headers */ = {isa = PBXBuildFile; fileRef = 919C930C4E0162377E3C95D0F6F11177 /* UIView+WebCacheState.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69E353C99C6EEA3C93CCF2E526460B9D /* UIScrollView+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = DE0511947F57D1CF3F274B6414AE449B /* UIScrollView+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 69F6E66A089C40FB1063DE15499BCFDE /* LKS_Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 4D2B4D757199E020DE43661B60EB2819 /* LKS_Helper.m */; }; + 6A19379E3B0370EDA447743C9B1A1379 /* UIImageView+HighlightedWebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 855BA7199BD9AC7B4687AF3F66E21279 /* UIImageView+HighlightedWebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B0978C9398336656EE309E62060AEAB /* SDImageAssetManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 87B2A7EE05A20B3EDDFE045A6B7911E5 /* SDImageAssetManager.m */; }; + 6B5C3592B5E911E833D067D0BC785B1A /* SDImageFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = 6D8BE2762FA18EF88A5BAD861C739B02 /* SDImageFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6B9D333C18DDBF4E7CC889F7FDE05EEA /* JXCategoryDotView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8EFBD2E7A88C44123D980C42CB8702A4 /* JXCategoryDotView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6BC2A615678C8BAE9F34ABA68BFDEF78 /* LKS_AttrModificationPatchHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = DEFCE7D8BFD813860A380F7F5B5EB401 /* LKS_AttrModificationPatchHandler.m */; }; + 6BE86A0FFB0D69C6098CC75E1FB4E8B5 /* JXCategoryIndicatorCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EFCD05B81004D2C239BFBEBEE4DC3D5 /* JXCategoryIndicatorCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6BF5DB46D42D8B9D536C870EC77BF4A3 /* JXCategoryIndicatorBallView.m in Sources */ = {isa = PBXBuildFile; fileRef = F9FBE6B4C01D1445DBFC466AEA64E5D8 /* JXCategoryIndicatorBallView.m */; }; + 6C57809DCEA4B6C0CA79918A69FD75DE /* LKS_ConnectionManager.m in Sources */ = {isa = PBXBuildFile; fileRef = DA49453EBB9C905AD701D17F18479113 /* LKS_ConnectionManager.m */; }; + 6C76DB1B99B98C951F687DE80FE6F463 /* JXPagerListRefreshView.m in Sources */ = {isa = PBXBuildFile; fileRef = 659E098AEC86E789470E344EB23EC1DD /* JXPagerListRefreshView.m */; }; + 6C85CA8D99E50C137D056B6057DAC58A /* UIRefreshControl+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 80E9CB1F62E65A837FF5E47B2FC3ECA1 /* UIRefreshControl+AFNetworking.m */; }; + 6CA0B4A9E7B2957063163BC673F355CD /* AFAutoPurgingImageCache.m in Sources */ = {isa = PBXBuildFile; fileRef = ED87146FC94850F3891F867B1931F652 /* AFAutoPurgingImageCache.m */; }; + 6CE8701D161A4BC0860FAF3951762A34 /* LookinHierarchyFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A1C13D0C9F5E8ED93D0398C379507C1 /* LookinHierarchyFile.m */; }; + 6D637D02F5EE50D21C8548061956C898 /* UIViewController+Presentation.h in Headers */ = {isa = PBXBuildFile; fileRef = DB3B6BBCBC04C438F099DE5DEC15C188 /* UIViewController+Presentation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6DE6C7F0FA965828E4FCE687BF75FBBE /* MJRefreshAutoNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 6021531912761F1BDBFE14A61784B26D /* MJRefreshAutoNormalFooter.m */; }; + 6E4DE8085E69AD1DDB49B059DCE286DB /* HWBackgroundConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 3F0DA836C065C821DDDE100A36B1C087 /* HWBackgroundConfig.m */; }; + 6E66305665DBCFBCF5B2480BF705D500 /* SDWebImageTransition.h in Headers */ = {isa = PBXBuildFile; fileRef = 59CF9D4B8C92110B4BC1E1792E4AAEA5 /* SDWebImageTransition.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EFC0630CB2761A2B1FC47176CCD62D1 /* LookinCustomDisplayItemInfo.h in Headers */ = {isa = PBXBuildFile; fileRef = 3DDFB85C3FF1851267A20FACB64B4497 /* LookinCustomDisplayItemInfo.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6EFEEE3AE22E97DCEC4F5A3B88F56FC7 /* SDImageLoader.m in Sources */ = {isa = PBXBuildFile; fileRef = B9E1D06297B630EA32D1369915C0CB97 /* SDImageLoader.m */; }; + 6F3637EE643EABB1DE9212EA68649A64 /* UIColor+SDHexString.m in Sources */ = {isa = PBXBuildFile; fileRef = 343C42E325F84441C510AF8DEE739ADF /* UIColor+SDHexString.m */; }; + 6F75FDB9BE37C9A8473F97B1696B5D09 /* JXCategoryListContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = D9CF33220A4EDFF59077DE1F83605414 /* JXCategoryListContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7053A9EB6335BEAC9EFDF2D5320E6E2A /* UIView+HW_Frame.m in Sources */ = {isa = PBXBuildFile; fileRef = ECA7ED760D61427E9195A2805DB71798 /* UIView+HW_Frame.m */; }; + 7074EA7FCC90B4967A437F5C43496828 /* SDDisplayLink.h in Headers */ = {isa = PBXBuildFile; fileRef = B5F6ED51FA52849CB3D9D44DD45396E2 /* SDDisplayLink.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 70D30BC7134E3C8006BF0B6A4B438057 /* JXCategoryTitleImageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 524557CADCF9674C470A7B1764594AEC /* JXCategoryTitleImageCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 711D32EF4A9901567A488291603BF906 /* SDWebImage.h in Headers */ = {isa = PBXBuildFile; fileRef = EE827BC4171898B142EBDE3C763AFC7F /* SDWebImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 713D162A627185DA38847832AB5BDA44 /* LSTPopView.h in Headers */ = {isa = PBXBuildFile; fileRef = DB7D4CE7BA063A9CA415CD86C8825985 /* LSTPopView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 71538A1D21015F459964BA625D5EE90A /* NSObject+MJClass.h in Headers */ = {isa = PBXBuildFile; fileRef = DEDA7D852A16AEB2E4133F8138BB40A3 /* NSObject+MJClass.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 717F76926C7BCB5B10C3037AD9239084 /* SDImageIOCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 04094D9F916F0B3E8A409CF5EEC45FCC /* SDImageIOCoder.m */; }; + 71BEB1D9532900291A5A24B1C038516F /* UIColor+SDHexString.h in Headers */ = {isa = PBXBuildFile; fileRef = DC85B08C4C82F12C3AA7970FE44E1D9F /* UIColor+SDHexString.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 71F2B8CBB99087F348C472230200586F /* SDGraphicsImageRenderer.m in Sources */ = {isa = PBXBuildFile; fileRef = 46F71F9F19999F6D4F186847FA3CC8F7 /* SDGraphicsImageRenderer.m */; }; 723D1925C39764631641D0DBFDF6833B /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 724991CA89C46BAFBC08264D94D86484 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = DC285A6C8053D7E2AE423BE51B24E8AE /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7276688DEA6FB95D4DEB7F3D019C3958 /* HWPageSheetPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = DD3CC2F2CD0FD607BD99AA89E970269A /* HWPageSheetPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 728107C8D8479AADE986F4EC23233DC3 /* UIScrollView+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = CCA4AAE27B9CAF06CC2B0A3C0A3F0594 /* UIScrollView+Helper.m */; }; - 73B19D03C7B7DF1C944544165F742D82 /* HWPanModalContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2BB86632EEB3EB44D0413B3A6F7F6875 /* HWPanModalContainerView.m */; }; - 74ABF19BACB99F862DB62AA14508AFA0 /* LookinAttributesGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E02457FB07FECD161E03C2A1A8B72B3 /* LookinAttributesGroup.m */; }; - 74C474676C69A80BEC29B0F55FDF4D19 /* UIView+WebCacheState.m in Sources */ = {isa = PBXBuildFile; fileRef = FF6C98975F33C466CDCC506B95080046 /* UIView+WebCacheState.m */; }; - 74E069F8C9E22C0E37F261A5AB03A613 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 47655EC4466A20F4BEC0C76B8F4C5440 /* SDWebImageDownloaderConfig.m */; }; - 752822FE3F5092322D18FEC4533B79A9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 2FED06425BD958CD54FC4A96C6FF1992 /* SDWebImageDownloader.m */; }; - 75771A97B77FA30A0175A81B480F80EF /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = D843F393C308E0D3BCB88A0B04FDB291 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76019F9FDD44B8F79261AD55C8728164 /* UIView+HW_Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = B63B552A0A52E65141ED8027A3FCCB0D /* UIView+HW_Frame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 76C8C631DF9AC2F667369EEA0CE46522 /* HWDimmedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 017032FDD415E1762246EBCDD2228351 /* HWDimmedView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 772CF8E9CD02ECA4275B6173E2110E80 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D93DBFF5810549335063D430FB33721 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 780EDF2615923E89C179EB5A60D2DA41 /* JXCategoryCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 6999AA4E4990D39E732B0FABF0CBB3CA /* JXCategoryCollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 724991CA89C46BAFBC08264D94D86484 /* AFURLRequestSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = 4228538168305A12A3465600D6FA372A /* AFURLRequestSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7276688DEA6FB95D4DEB7F3D019C3958 /* HWPageSheetPresentingAnimation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EC115C953943E0027F6AD5AFEE41A30 /* HWPageSheetPresentingAnimation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 728107C8D8479AADE986F4EC23233DC3 /* UIScrollView+Helper.m in Sources */ = {isa = PBXBuildFile; fileRef = 330AFA4D280CBB2EE073DCC942489EAB /* UIScrollView+Helper.m */; }; + 73B19D03C7B7DF1C944544165F742D82 /* HWPanModalContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 0BED1E57A7780D7944D806EF7FB48648 /* HWPanModalContainerView.m */; }; + 743BBA00940EF6877AE1D5014755D0D6 /* UIView+LYExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B4EEA7B77703F45AB157AC651CEF4EA /* UIView+LYExtension.m */; }; + 74ABF19BACB99F862DB62AA14508AFA0 /* LookinAttributesGroup.m in Sources */ = {isa = PBXBuildFile; fileRef = D0B1EDD790AB62D80A6CA23D5272938B /* LookinAttributesGroup.m */; }; + 74C474676C69A80BEC29B0F55FDF4D19 /* UIView+WebCacheState.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E4925A54FF503F963785651A98856BD /* UIView+WebCacheState.m */; }; + 74E069F8C9E22C0E37F261A5AB03A613 /* SDWebImageDownloaderConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = 6650E50E5FAFFD61FC973E5A0D5C8398 /* SDWebImageDownloaderConfig.m */; }; + 752822FE3F5092322D18FEC4533B79A9 /* SDWebImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = B453C947A0F7F0133F2F98F9E8EF1E43 /* SDWebImageDownloader.m */; }; + 75771A97B77FA30A0175A81B480F80EF /* UIImage+ForceDecode.h in Headers */ = {isa = PBXBuildFile; fileRef = 317AEF64C0405ADA2DB47569A6D72FC4 /* UIImage+ForceDecode.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76019F9FDD44B8F79261AD55C8728164 /* UIView+HW_Frame.h in Headers */ = {isa = PBXBuildFile; fileRef = 2B0B272843C604B68C602DEE1AD3605F /* UIView+HW_Frame.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 76C8C631DF9AC2F667369EEA0CE46522 /* HWDimmedView.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F1705DF1CC5E82194523F85FE871354 /* HWDimmedView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 772CF8E9CD02ECA4275B6173E2110E80 /* View+MASShorthandAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = EBEEA0239556FEF194877FD307A4ADD6 /* View+MASShorthandAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 780EDF2615923E89C179EB5A60D2DA41 /* JXCategoryCollectionView.h in Headers */ = {isa = PBXBuildFile; fileRef = 051A66FC7C22537DD150BA86539EC9D4 /* JXCategoryCollectionView.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7873F2F89CD0A435FAB776BC27BFB56A /* MJExtension-MJExtension in Resources */ = {isa = PBXBuildFile; fileRef = 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */; }; - 78A3C3994AFFC6A2D4970AEB6D797CE5 /* LKS_HierarchyDetailsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 6736D1FBB305C05AEAB982F817CD80C1 /* LKS_HierarchyDetailsHandler.m */; }; - 7902D28FC9EF5AFEB452F508C7F266B1 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = DEDB698B7BC2AF63B53722CF1D2D8E57 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 79534562F85AA71041043B395DE14AD0 /* HWPanModalContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 77BA4318333FADE07B128DB446EA0F64 /* HWPanModalContentView.m */; }; - 79701CF51014A7C02D810F9DAEFE6D79 /* JXCategoryTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 057CD48F09C7A5468D77A9691A639803 /* JXCategoryTitleCell.m */; }; - 7989A6E79BFA78440C39F568D972305C /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 1325B9E2F97C77F3E9191898C4045E7E /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7A4EB9ED5D4E03170FFE61FCB299687B /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8532F3DD3C373C14A106D14F67A3C301 /* SDAnimatedImagePlayer.m */; }; - 7C45DBA62EE045C4922404182F6393B8 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 109DC293F90D678E22D453F41A197049 /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C53FB6BBB0CBAA879F1603B0FEDB80B /* LookinAttributesSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 97428E2E54CAC989DD7A12908613EE16 /* LookinAttributesSection.m */; }; - 7C5505A2D3F2A697A5F324787061F4B7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C2B7AF68C3BEF4AD97A93A90F9EFF44 /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7C8782A3078662BC2EF639A9608A2C82 /* LKS_InbuiltAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = DC0451732A9C9A896EEC15BEC88B3151 /* LKS_InbuiltAttrModificationHandler.m */; }; - 7D1E98BE9558F6E5E29B0E81EC526A90 /* JXCategoryImageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E2875C79F8461486A975B000C1ABDE3 /* JXCategoryImageCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7D736CE5AD0A987D2A7D2FD72E31BF41 /* CALayer+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E1921A1332A20D950700741950E97126 /* CALayer+LookinServer.m */; }; - 7E4F0978B25350B2B28678A0BE7B3785 /* LKS_HierarchyDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = A9B0E721EBB3914236D06250E333F1E9 /* LKS_HierarchyDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7E8A564A958AF81E5F63F34B8E550E58 /* LookinAttributeModification.h in Headers */ = {isa = PBXBuildFile; fileRef = C9F0D4D92726FF95FE428AA975E93DE2 /* LookinAttributeModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = D675E9EED90BA5941D43EB2C520A01B8 /* WKWebView+AFNetworking.m */; }; - 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 4D000260D6BB658E0BB519087E88F883 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = B46DF40E1300BE3FC009F0D7D5CF5ED0 /* UIViewController+PanModalPresenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 6CE2A9B22B9FC87A02A230599E72D4F1 /* NSObject+MJKeyValue.m */; }; - 7FF8A56511E71D6FEC966BF9FEE135B5 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 7965DB1FD06E64A9C5B34CB6D9909B3A /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80EBFDD01E84CE4E8AE5BAE9CB3C7C1D /* HWPanModalAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D7B291E3BCDB41106F548FA3B84901 /* HWPanModalAnimator.m */; }; - 810C8D7902163BBA0185A4A112B2DFD6 /* LKS_TraceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 36457C61634F1414F6DDF4C701ABF567 /* LKS_TraceManager.m */; }; - 8128D2BD3AC890F75E7AD243AA104C13 /* JXCategoryIndicatorParamsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = AAFEF3383472BCA83D71A7DAAC5522CC /* JXCategoryIndicatorParamsModel.m */; }; - 813BE4C96A6D39C13EC50C6CD164F0AF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 979A3BAC302F65855776332D6027B80C /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 81A5635CEA2AD9623E30CAE9AFC3BF65 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 10B904BAC9CC3925EE6B4E2130826A6F /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 821FF6B43F7ADAB6B60459D2966B33CB /* CALayer+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 732327FB0ADC252437B580203795D95F /* CALayer+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 83530BF68848CD2C4A79A1FD69B304A5 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = CE77C4D90418C342647C55D75A5C1AE8 /* SDImageGIFCoder.m */; }; + 78A3C3994AFFC6A2D4970AEB6D797CE5 /* LKS_HierarchyDetailsHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0719BBC5095E9B709A7485C347010514 /* LKS_HierarchyDetailsHandler.m */; }; + 7902D28FC9EF5AFEB452F508C7F266B1 /* MJRefreshAutoNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 77973C87CC9649629EBEE249DCC355F5 /* MJRefreshAutoNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 79534562F85AA71041043B395DE14AD0 /* HWPanModalContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E31AD6314EC8102DE4FC6291C0FE66F /* HWPanModalContentView.m */; }; + 79701CF51014A7C02D810F9DAEFE6D79 /* JXCategoryTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B49837A2AA042F710F43F143A929D49F /* JXCategoryTitleCell.m */; }; + 7989A6E79BFA78440C39F568D972305C /* MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = F64D04ACE9EB0341E57129D44479C065 /* MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7A4EB9ED5D4E03170FFE61FCB299687B /* SDAnimatedImagePlayer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A5D6AD5CB7122607D6E477D373A31E2 /* SDAnimatedImagePlayer.m */; }; + 7BC817F176759B34FDC3C9A3BDE900BF /* LYEmptyBaseView.h in Headers */ = {isa = PBXBuildFile; fileRef = B5885DEE0FCB371101A605FDA3D3F35C /* LYEmptyBaseView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C45DBA62EE045C4922404182F6393B8 /* SDWebImageError.h in Headers */ = {isa = PBXBuildFile; fileRef = 16465B6B7358098E137335C9985BBBBC /* SDWebImageError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C53FB6BBB0CBAA879F1603B0FEDB80B /* LookinAttributesSection.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F8D39C76EB84B28054B453882C78E41 /* LookinAttributesSection.m */; }; + 7C5505A2D3F2A697A5F324787061F4B7 /* MASConstraint+Private.h in Headers */ = {isa = PBXBuildFile; fileRef = AC368BF52013B3AE323DC35D782A044B /* MASConstraint+Private.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7C8782A3078662BC2EF639A9608A2C82 /* LKS_InbuiltAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = A1DAAC915F745C515E0BF4D613B5CB1C /* LKS_InbuiltAttrModificationHandler.m */; }; + 7D1C6E10B8E0F98E19048BB416A39A0D /* LYEmptyBaseView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D0C4CB17BF463D490AE3400293A0D47 /* LYEmptyBaseView.m */; }; + 7D1E98BE9558F6E5E29B0E81EC526A90 /* JXCategoryImageCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 9234E8779322D7F9722AF6E18FF9F6F3 /* JXCategoryImageCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7D4B5D7A593F4436B57347FD2A5072B4 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 7AC0215893BDD3C5E126FCE996097AB4 /* PrivacyInfo.xcprivacy */; }; + 7D736CE5AD0A987D2A7D2FD72E31BF41 /* CALayer+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 798B3DCD95877B6C7D997E0652FB6E9A /* CALayer+LookinServer.m */; }; + 7DFACBAC8324FE3F177FA465E0006A9C /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = A0497973DD4190C4C37CC950C86C6F2B /* PrivacyInfo.xcprivacy */; }; + 7E4F0978B25350B2B28678A0BE7B3785 /* LKS_HierarchyDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = F1FB9919B7B8171A6A8679BDDA407F68 /* LKS_HierarchyDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7E8A564A958AF81E5F63F34B8E550E58 /* LookinAttributeModification.h in Headers */ = {isa = PBXBuildFile; fileRef = B915A35174E3017D6DC61C0A3E31050E /* LookinAttributeModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7F10C0D094C74F2FA4CD38C7FD77B0A8 /* WKWebView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = A1C4717F035C7128013EA7E000DAC18A /* WKWebView+AFNetworking.m */; }; + 7F886FC2763F0BF1625A24EE4F94C04D /* UIRefreshControl+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 48A816CF0BA23EA39A514E31ED98C5D3 /* UIRefreshControl+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7FA48BF8B9F73775654E75CEB5363FF4 /* UIViewController+PanModalPresenter.h in Headers */ = {isa = PBXBuildFile; fileRef = 82F6D1678A37FB68B3455162AB8BDAA2 /* UIViewController+PanModalPresenter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 7FA8C78DB021A7731D30D80C102DE042 /* NSObject+MJKeyValue.m in Sources */ = {isa = PBXBuildFile; fileRef = 0C7575113B17F46DF34D3C118CB31308 /* NSObject+MJKeyValue.m */; }; + 7FF8A56511E71D6FEC966BF9FEE135B5 /* AFNetworkActivityIndicatorManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A198AAC0BC41558B9FC61F89E90D900F /* AFNetworkActivityIndicatorManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 80EBFDD01E84CE4E8AE5BAE9CB3C7C1D /* HWPanModalAnimator.m in Sources */ = {isa = PBXBuildFile; fileRef = EDA5337EF8951852F4AA839734BF6786 /* HWPanModalAnimator.m */; }; + 810C8D7902163BBA0185A4A112B2DFD6 /* LKS_TraceManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C7F42FC60A06A5673FA7DE53298188E2 /* LKS_TraceManager.m */; }; + 8128D2BD3AC890F75E7AD243AA104C13 /* JXCategoryIndicatorParamsModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 1936EF3FEE34E513D746BA5037CDEE80 /* JXCategoryIndicatorParamsModel.m */; }; + 813BE4C96A6D39C13EC50C6CD164F0AF /* MASConstraintMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 404BBFC3B5A2ADAEF4E188881B357111 /* MASConstraintMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 81A5635CEA2AD9623E30CAE9AFC3BF65 /* NSBundle+MJRefresh.h in Headers */ = {isa = PBXBuildFile; fileRef = 412FD8B68949345873B82E2D0C864C85 /* NSBundle+MJRefresh.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 821FF6B43F7ADAB6B60459D2966B33CB /* CALayer+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 768785318FEB9536A4DAAD47BD76396B /* CALayer+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 83530BF68848CD2C4A79A1FD69B304A5 /* SDImageGIFCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 763CF36C11B6092D9D5485AC2363F205 /* SDImageGIFCoder.m */; }; 83A4F2816C1B3F072E1A26A34C3BC4AC /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; 8414CFEEB64ACA817EB88D2FEADDA3B3 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 854807558DCB972EDDFC1D00032BA6E4 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = E138C277A1DD60E5BB20AB4EC7CEBDB2 /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 85AB23275E9D19394969235E5DC2300E /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 1A2B6D97C6E9B5572232985B40BDA6C4 /* MJRefreshHeader.m */; }; - 85BB8B4B5C29C5EEC52282F33A4CAF23 /* LookinCustomAttrModification.m in Sources */ = {isa = PBXBuildFile; fileRef = F6CC661C43717D8BBB4405FD037BDC03 /* LookinCustomAttrModification.m */; }; - 85C0B4EE334B9972299E62DE61A4BB56 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = B3F518DFA534AD602991065542FADB29 /* SDImageLoadersManager.m */; }; - 85ED10431A6C01970A3DAD8A8C9BF25F /* JXPagerView.h in Headers */ = {isa = PBXBuildFile; fileRef = D3F906D47799FB7ED8D4AA1C036BF3BC /* JXPagerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 860CB3A5D2E13B946CD2EFB7F749C4CF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 81D4FD0C7D7C987D10815371E729DAC0 /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 864972FB0DF4B464B1B505AA5F788E91 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = 123714F0F2335CBE901933785D4D26FB /* SDInternalMacros.m */; }; - 874CE8F3650D220092077846A46598E6 /* JXCategoryTitleImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FBDD10C8770914A56998AB2021E385B /* JXCategoryTitleImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 88197D535BEBB0F4B71F106AE300631D /* JXCategoryBaseView.h in Headers */ = {isa = PBXBuildFile; fileRef = 173BFB44F7DA63CD3AF5A497970B8203 /* JXCategoryBaseView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 88473AE7C22F952DACB39FA0758D1624 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 82BDCD67CE12306B5AF6A9E3DB88E0DA /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8872BEB0954C0254A792469F4DBC9891 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 401F0F0AAEEDDA40C2D25DB817C9B5C6 /* MJRefreshAutoStateFooter.m */; }; - 88889F5DA04EB4FA08125742B5E522DA /* JXCategoryTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = E42238B57F88C70438DE479E184E4352 /* JXCategoryTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 88A23DF6F5638AC66C28C4102824E8B5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 102C92CE02746A6588B44F852322AB39 /* NSImage+Compatibility.m */; }; - 89B88FAD396608AAA9F935E471BB3CB9 /* LKS_HierarchyDetailsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 21696AB985A15DE2C63BD9A8CD978F59 /* LKS_HierarchyDetailsHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 89EAB8D0452D0E2114ED971B10D98CC3 /* LKS_HierarchyDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 3D3112C49688EF3F713F0D64A22E6E66 /* LKS_HierarchyDisplayItemsMaker.m */; }; - 8A256CA266FB314BBD4DB2287DAEF247 /* LookinAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = DDDA744A029AF23E45515CE37C056256 /* LookinAttribute.m */; }; - 8AF38EDB1E9BF0D334AEB23C488870B8 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 4561971E2CF7A1F1B00AC6091B3448DE /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 854807558DCB972EDDFC1D00032BA6E4 /* SDWebImageDownloaderConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = CBD58A6BE5B4D23DDB42D3D26A87CAEA /* SDWebImageDownloaderConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 85AB23275E9D19394969235E5DC2300E /* MJRefreshHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 66E849825D4B5783372753D6820DE97F /* MJRefreshHeader.m */; }; + 85BB8B4B5C29C5EEC52282F33A4CAF23 /* LookinCustomAttrModification.m in Sources */ = {isa = PBXBuildFile; fileRef = 7E445C787AA09C1E3A771E4C7DBCE2CA /* LookinCustomAttrModification.m */; }; + 85C0B4EE334B9972299E62DE61A4BB56 /* SDImageLoadersManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E585503EB164F6C036C85B124140368 /* SDImageLoadersManager.m */; }; + 85ED10431A6C01970A3DAD8A8C9BF25F /* JXPagerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8310CCDF3085A9EE32455CB865148664 /* JXPagerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 860CB3A5D2E13B946CD2EFB7F749C4CF /* UIActivityIndicatorView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = DCB771163568003A2EA8F4B1A606B9ED /* UIActivityIndicatorView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 864972FB0DF4B464B1B505AA5F788E91 /* SDInternalMacros.m in Sources */ = {isa = PBXBuildFile; fileRef = F1CF9E4569F5B94286E175AF9D675C11 /* SDInternalMacros.m */; }; + 874CE8F3650D220092077846A46598E6 /* JXCategoryTitleImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E91A12C513A640E68663D4ED668C0FC /* JXCategoryTitleImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88197D535BEBB0F4B71F106AE300631D /* JXCategoryBaseView.h in Headers */ = {isa = PBXBuildFile; fileRef = 45E71D8592674E85D7D5DA4831A592BE /* JXCategoryBaseView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88473AE7C22F952DACB39FA0758D1624 /* SDMemoryCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 256D50D68BFC3FD314552D1D0BC2044D /* SDMemoryCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8872BEB0954C0254A792469F4DBC9891 /* MJRefreshAutoStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 8CF1445CC744306AE4ECBA85DFD6DB27 /* MJRefreshAutoStateFooter.m */; }; + 88889F5DA04EB4FA08125742B5E522DA /* JXCategoryTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5105F32D29B4C0D80B780EE2DF6D2898 /* JXCategoryTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 88A23DF6F5638AC66C28C4102824E8B5 /* NSImage+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 23763927ED025640A4CAA94867A3D823 /* NSImage+Compatibility.m */; }; + 89B88FAD396608AAA9F935E471BB3CB9 /* LKS_HierarchyDetailsHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = FEA159570B75D1C95DC0E0B5836BACFF /* LKS_HierarchyDetailsHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 89EAB8D0452D0E2114ED971B10D98CC3 /* LKS_HierarchyDisplayItemsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 00B27A1456536538B2E7220C71AA3F4F /* LKS_HierarchyDisplayItemsMaker.m */; }; + 8A256CA266FB314BBD4DB2287DAEF247 /* LookinAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = B267D6EC269C7ADF7A4202363528E8C2 /* LookinAttribute.m */; }; + 8AF38EDB1E9BF0D334AEB23C488870B8 /* NSData+ImageContentType.h in Headers */ = {isa = PBXBuildFile; fileRef = 00449113F3BDDB46E11CEE02CF1F29A1 /* NSData+ImageContentType.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8B47B7F220A2B9E121EFF5A28B477972 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 8B990235A0006E1F9C1E6F68AD81F77C /* JXCategoryView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = CBA389E7DB380F4012EFBD733C81D43A /* JXCategoryView-dummy.m */; }; - 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = D48043130F64D218A676B16D2CDA0ED8 /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8B990235A0006E1F9C1E6F68AD81F77C /* JXCategoryView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D98B4BEA4820634A8F01172731FF97B7 /* JXCategoryView-dummy.m */; }; + 8C6C7E25C5A24C936F81823978190E96 /* ViewController+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = FED4C87CAD14B9336A225C943B75263C /* ViewController+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8D2CBEBF5F1DA6766A833CCD0BF02B5B /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */; }; - 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = B5C750768FB8EE26E8F613C1D910045B /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8D8AD606ECD8E1F247965CD43956D412 /* UIImage+Transform.h in Headers */ = {isa = PBXBuildFile; fileRef = A39050EBA53940D0CE63B52BF031BE6C /* UIImage+Transform.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8F30C8026F48C60D5B2CAE9CFC166004 /* Pods-CustomKeyboard-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */; }; - 8FF4E9A492CA258F45C0BC51F6F69650 /* JXCategoryTitleImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = D4AA530BA675D0E78BDD9644338B48A3 /* JXCategoryTitleImageCell.m */; }; - 8FF7B6477BFA6E6ABA168E1417291D5F /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = FD6EC1E4FB3615CE938900B23CEAD0F8 /* MASCompositeConstraint.m */; }; - 906DCE66CD5BD236081D468616199BB7 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 6A632B4F7EA06C55CADB3BF7C49D7860 /* SDWebImageOptionsProcessor.m */; }; - 91AAF555B286FBF53E4F98D092B406BD /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A543722998E5C6171A0B4A729D11BBB /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 8FF4E9A492CA258F45C0BC51F6F69650 /* JXCategoryTitleImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 5EADC8693C7692FBBE4CE165F51B28E9 /* JXCategoryTitleImageCell.m */; }; + 8FF7B6477BFA6E6ABA168E1417291D5F /* MASCompositeConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 70CD4567ACE296214EA982091E2B8F90 /* MASCompositeConstraint.m */; }; + 906DCE66CD5BD236081D468616199BB7 /* SDWebImageOptionsProcessor.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B82CFD6AD23DAB70352983FFFA8DBBE /* SDWebImageOptionsProcessor.m */; }; + 91AAF555B286FBF53E4F98D092B406BD /* SDWebImageTransitionInternal.h in Headers */ = {isa = PBXBuildFile; fileRef = ACD18D412C592E0FB706C10554E5283E /* SDWebImageTransitionInternal.h */; settings = {ATTRIBUTES = (Private, ); }; }; 91AFF41167C616A131F2E24563B8DDD8 /* JXPagingView-JXPagerView in Resources */ = {isa = PBXBuildFile; fileRef = E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */; }; - 91BEBD471C408E6C72763AFB6926242B /* JXCategoryTitleImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8618BF2AA2A260801FDF48131074A906 /* JXCategoryTitleImageView.m */; }; - 91E8B94F8E02ABF5197DF5AE7D0B3934 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 5716AF79F54782358457FBB452B73975 /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928371B066E1211CE87089668D5BCB4C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CAD21419CFC8A372DB941E7983ADDD9D /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 928A1ED0692DF0229F66A87135F93F2A /* LKS_CustomAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 29CA4DC7FB25B91EAA2B3847B7BB46A9 /* LKS_CustomAttrModificationHandler.m */; }; - 9345137ED10358B60E37D05FB6165759 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 41B90877BBAECA72C2F67A5E39E1E87A /* SDFileAttributeHelper.m */; }; - 9358FC6C6DA728AEE250D8E7DD236946 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 1326C5B7B2B67B2A6E9A785F1ECEA87F /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 93E2C24501FAE3C3B886B9879786EF22 /* JXCategoryTitleVerticalZoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D390F38F6574F6D973E2C4A52D004A1 /* JXCategoryTitleVerticalZoomCell.m */; }; - 93E8C78EAE0B7613201813966B8E04E2 /* Image+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 17FBA36FB2D4DFAA4437CEE5C69F4BBE /* Image+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 940CD731A431894B0EE4E3283E6F352F /* JXCategoryBaseCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 51E7542749774862B8EB9AAB7010F1AA /* JXCategoryBaseCellModel.m */; }; - 955B87902E039163281C4F47C95DB851 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = C55730A1966B5DF338B0554ACC4B0B16 /* MJRefreshBackNormalFooter.m */; }; - 95CCA80D6790CF64F974A53E815420F8 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 75A91D4BB6118442A9B7E27598AE7C99 /* PrivacyInfo.xcprivacy */; }; - 96C1D55B3436C158B4CBB4E3D0AE53EE /* UIColor+JXAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = 137AD002D5B6FA89785842F03034A5B1 /* UIColor+JXAdd.m */; }; - 96E97174F4614FFA0649085022CB4AFE /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 13B82D87F3DD4A8EB4C508E0BFA04090 /* SDWebImage-dummy.m */; }; - 97235408E59E16C18B6BDA1D29E1CB26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 2ED4FAFE5BD7891D4471852209337077 /* SDWebImageManager.m */; }; - 97385A64CA020489951EF769392C6DCF /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A19BDA4E648916460C20489D6D183F0 /* UIView+WebCacheOperation.m */; }; - 9887678D7D6BC165694560D92AF2C31A /* LookinConnectionResponseAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4ED1A3436209E7EBF3356CEC094C7391 /* LookinConnectionResponseAttachment.m */; }; + 91BEBD471C408E6C72763AFB6926242B /* JXCategoryTitleImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9EC4E80691EA4009AB067722DA72E4D5 /* JXCategoryTitleImageView.m */; }; + 91E8B94F8E02ABF5197DF5AE7D0B3934 /* SDWebImageDownloaderDecryptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 3ED4F75E10F9C3D76FF139C89BBB8154 /* SDWebImageDownloaderDecryptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 928371B066E1211CE87089668D5BCB4C /* SDDiskCache.h in Headers */ = {isa = PBXBuildFile; fileRef = A464713D364DCC51BD1C744435EF31A3 /* SDDiskCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 928A1ED0692DF0229F66A87135F93F2A /* LKS_CustomAttrModificationHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D00729EFDA62359B2F2AA1EF43FADFD9 /* LKS_CustomAttrModificationHandler.m */; }; + 9345137ED10358B60E37D05FB6165759 /* SDFileAttributeHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = 72CEA2C3193763834CD0E25D8DB88F2D /* SDFileAttributeHelper.m */; }; + 9358FC6C6DA728AEE250D8E7DD236946 /* MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = AB379411892DE9D6AC2BA478DD047B45 /* MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 93E2C24501FAE3C3B886B9879786EF22 /* JXCategoryTitleVerticalZoomCell.m in Sources */ = {isa = PBXBuildFile; fileRef = F3BAE7C9BD506017B4C0D7BBB9100900 /* JXCategoryTitleVerticalZoomCell.m */; }; + 93E8C78EAE0B7613201813966B8E04E2 /* Image+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 8679B55EBC5DC660D8E798D1B986FC22 /* Image+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 940CD731A431894B0EE4E3283E6F352F /* JXCategoryBaseCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 897530E070833B039DC2821D0B63B137 /* JXCategoryBaseCellModel.m */; }; + 955B87902E039163281C4F47C95DB851 /* MJRefreshBackNormalFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = A64A22A853C13E4375B73E01D1D90CB1 /* MJRefreshBackNormalFooter.m */; }; + 96C1D55B3436C158B4CBB4E3D0AE53EE /* UIColor+JXAdd.m in Sources */ = {isa = PBXBuildFile; fileRef = EA759F283932CC196A3C378E0037B993 /* UIColor+JXAdd.m */; }; + 96E97174F4614FFA0649085022CB4AFE /* SDWebImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 61C0CC288A628CFA871D599D497E2A8E /* SDWebImage-dummy.m */; }; + 97235408E59E16C18B6BDA1D29E1CB26 /* SDWebImageManager.m in Sources */ = {isa = PBXBuildFile; fileRef = EFC3A24D1CE615DA957AE8C5AC47E5D7 /* SDWebImageManager.m */; }; + 97385A64CA020489951EF769392C6DCF /* UIView+WebCacheOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 43901AAA2BB40AE5F534540676833E30 /* UIView+WebCacheOperation.m */; }; + 9887678D7D6BC165694560D92AF2C31A /* LookinConnectionResponseAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = B2B7D0FDFC6ECF60B59728E60160431B /* LookinConnectionResponseAttachment.m */; }; 98AB6B8EB7FF096BCE87488C5AB3DF1C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - 9A7FB1E975A5955C896E6B195C521804 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E42525F0D8B91406B2C7015E3E52B29 /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9A89C16038149623A1DF06D47E7F953A /* LookinStaticAsyncUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = EC9D66F9AD565D0A6E6595CFC812165E /* LookinStaticAsyncUpdateTask.m */; }; - 9B06400877E40C173F5A1C9761F288CB /* UITextView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 3791DA4B477B236E8816C08DD01E3B45 /* UITextView+LookinServer.m */; }; - 9B1EF09A8A473D92C1258B00791BF5F0 /* UIView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = E9CB22320707CAEB4EE4C1DF62EB9E1A /* UIView+LookinServer.m */; }; - 9B3420DEB8A0CCB9E1241A669AEFCA8E /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = 167D63F7114C5D501803C08C617324CA /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9B9343E8599EE5196BA75E842DCB48B7 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = 32CCCC7F014C0FE2CA551D9AF48EEF89 /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; - 9BBBDC6BB6583BCAA75242231B62B530 /* HWPanModalPresentationUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 4B98EB1E5D5490C1C17C90E124262C80 /* HWPanModalPresentationUpdateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9CE425B89294BE2C13E70A86E75B15CF /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 45505B1DFA133379CEE6DD6D8148013D /* SDDiskCache.m */; }; - 9D422527A25BAE6A207DEFE11958ABBC /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 29C25E996193BA4D1FCBB5C2A7812FB9 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9D859B99561C389C0F494428F66F1871 /* HWDimmedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6194A35582043CD8893F293567547D72 /* HWDimmedView.m */; }; - 9DDDCFC08B54A61C519DA78F94464E6B /* LookinHierarchyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D8B581D78D02F65425434F924BB64B3 /* LookinHierarchyInfo.m */; }; - 9DF446F8CA5BC4D4098766EC9063012C /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 2ECB40CAF1E6F3F4A5F02F74E30B95E8 /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9DFFD4780CA32B8E53D9F4FBC8B3F5AC /* LookinAttrIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = 6B857386E2ABDB8C3FD8B5797430DF26 /* LookinAttrIdentifiers.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9E3C5CB1C97B2ED16218956999BFF7AC /* LookinTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A60F6547480237BC04A6287158556B4 /* LookinTuple.m */; }; - 9E6B00AF2ECE462D4D3C42AFC02F2AD7 /* LookinEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CAEC579F15CFFDB2E384C98A046EA76 /* LookinEventHandler.m */; }; - 9E7FD4501C2EF7FBF3379D21E46DB07B /* JXCategoryBaseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 0B08ADE1A4FFE94FDBBE13FE7CC2C1E5 /* JXCategoryBaseCell.m */; }; - 9EBA682DA814406E9E5EF300587AF341 /* LookinAutoLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 1FFD17C3FF6DE53EF72736C597DF5B82 /* LookinAutoLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F89DCAA4092F3897E43E89842069A26 /* LKS_AttrModificationPatchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 9F0B0B2E800350D0E38B61EF43E6CE75 /* LKS_AttrModificationPatchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9FB234EB4D8B5BCC699DB491E204594F /* LKS_GestureTargetActionsSearcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 029DB3501B51C5C14FA8EC0A89559639 /* LKS_GestureTargetActionsSearcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A078A275FFFA48D620074790DA3CA6CE /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 119F71892BB85FDC29B99AE148231087 /* MJRefreshStateHeader.m */; }; + 9A7FB1E975A5955C896E6B195C521804 /* MJRefreshBackNormalFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = E45A9679E38D826E316675D8F368F69C /* MJRefreshBackNormalFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9A89C16038149623A1DF06D47E7F953A /* LookinStaticAsyncUpdateTask.m in Sources */ = {isa = PBXBuildFile; fileRef = FCBD8DFA94436F5E62F1AA0F1AD2F2FA /* LookinStaticAsyncUpdateTask.m */; }; + 9B06400877E40C173F5A1C9761F288CB /* UITextView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D8DC297A0249D2FB0109542F14B89AB /* UITextView+LookinServer.m */; }; + 9B1EF09A8A473D92C1258B00791BF5F0 /* UIView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 76AEEFCD2262D6843C63EB46FD6663BB /* UIView+LookinServer.m */; }; + 9B3420DEB8A0CCB9E1241A669AEFCA8E /* SDAnimatedImage.h in Headers */ = {isa = PBXBuildFile; fileRef = A1411B1EA7A3C51DB2072BF40B4D5A60 /* SDAnimatedImage.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9B9343E8599EE5196BA75E842DCB48B7 /* NSBezierPath+SDRoundedCorners.h in Headers */ = {isa = PBXBuildFile; fileRef = E4A5839D54BEE8A98756D5288A3E5050 /* NSBezierPath+SDRoundedCorners.h */; settings = {ATTRIBUTES = (Private, ); }; }; + 9BBBDC6BB6583BCAA75242231B62B530 /* HWPanModalPresentationUpdateProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = EF62C88D7041DEBD26117AF61789D8AB /* HWPanModalPresentationUpdateProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9C623DECA454522DB641AA29C86F6387 /* LSTTimer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = A3211D6272FC8FFC9717C01969D328F7 /* LSTTimer-dummy.m */; }; + 9C6A760E54D2281BBE39A443C0F78D55 /* LYEmptyViewHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = FA5C6E28985540EE03804DDC4277D459 /* LYEmptyViewHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9CE425B89294BE2C13E70A86E75B15CF /* SDDiskCache.m in Sources */ = {isa = PBXBuildFile; fileRef = FAA3871C50E5746944D1C3FA3E4736CE /* SDDiskCache.m */; }; + 9D07985CF518269347F3FD5FE6D22609 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; + 9D422527A25BAE6A207DEFE11958ABBC /* AFCompatibilityMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = 060133813AFA51D11B917CB91A3D4950 /* AFCompatibilityMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9D859B99561C389C0F494428F66F1871 /* HWDimmedView.m in Sources */ = {isa = PBXBuildFile; fileRef = 9230BE776665C8EB51C8889631B1B31B /* HWDimmedView.m */; }; + 9DDDCFC08B54A61C519DA78F94464E6B /* LookinHierarchyInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = F4F901625B3879AD34FA2A0373208F59 /* LookinHierarchyInfo.m */; }; + 9DF446F8CA5BC4D4098766EC9063012C /* SDWebImageOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 949A8C57291DF7D8139F90AD367DB80C /* SDWebImageOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9DFFD4780CA32B8E53D9F4FBC8B3F5AC /* LookinAttrIdentifiers.h in Headers */ = {isa = PBXBuildFile; fileRef = F32705CBE56ACF430653A1C459F5351E /* LookinAttrIdentifiers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9E3C5CB1C97B2ED16218956999BFF7AC /* LookinTuple.m in Sources */ = {isa = PBXBuildFile; fileRef = B5157027D16B7E61C1D5AB091D10458E /* LookinTuple.m */; }; + 9E6B00AF2ECE462D4D3C42AFC02F2AD7 /* LookinEventHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = D4CFF1EB3CBDD5217E39DD58BD101359 /* LookinEventHandler.m */; }; + 9E7FD4501C2EF7FBF3379D21E46DB07B /* JXCategoryBaseCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6FD544A644986722B86F15A292995457 /* JXCategoryBaseCell.m */; }; + 9EBA682DA814406E9E5EF300587AF341 /* LookinAutoLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 97DE751E0ED3939932D72FB39C5A934A /* LookinAutoLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F89DCAA4092F3897E43E89842069A26 /* LKS_AttrModificationPatchHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = ADF656282B85E6C974597F555BDE3F21 /* LKS_AttrModificationPatchHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9F8A77D8902C98115735987BA80BD5C9 /* UIView+LYExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 0CA8B3EFCD9E73829676C70CE3E88BE0 /* UIView+LYExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9FB234EB4D8B5BCC699DB491E204594F /* LKS_GestureTargetActionsSearcher.h in Headers */ = {isa = PBXBuildFile; fileRef = AA7E9357D1D22FB737AEE89305734112 /* LKS_GestureTargetActionsSearcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A078A275FFFA48D620074790DA3CA6CE /* MJRefreshStateHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = 3259CC7D8EE4331CC9B8A86DA09EA5B3 /* MJRefreshStateHeader.m */; }; A0ADDB3C7DF96DF0E6BC53086778A103 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - A0B7A3B941134AA95A20F5A85165CC72 /* LSTPopView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 97E0EEAE3EFB0492B434EC2A704903DE /* LSTPopView-dummy.m */; }; - A0E0DC76F51300E7EB1EBA5492DE854D /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 156CBD2266287775279363430A374818 /* UIImageView+AFNetworking.m */; }; - A1560247914C760D9EE5F7A2392CC06C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = 21199D87A8FB4561900F6BC425147989 /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A0B7A3B941134AA95A20F5A85165CC72 /* LSTPopView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = C98FF255A58DDF6F211BD72458B9C3D0 /* LSTPopView-dummy.m */; }; + A0E0DC76F51300E7EB1EBA5492DE854D /* UIImageView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = B628043D13CE1145E17714D58AB2A687 /* UIImageView+AFNetworking.m */; }; + A1560247914C760D9EE5F7A2392CC06C /* UIImage+GIF.h in Headers */ = {isa = PBXBuildFile; fileRef = FB1FCAC52ADC49B2B3A81FFCCD3D56EE /* UIImage+GIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; A1A1266FD70CEB545FD7602CC33F2F7B /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */; }; - A1ACD509069144C27542774A41FE0243 /* UITableView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 40380EFCFB5E34558C193A723D077BE3 /* UITableView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1BFCC1BC5107F5F72BDBDB98E12559C /* JXCategoryViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = C617C2D863C4AC28AF0370EDC02120A9 /* JXCategoryViewDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1ACD509069144C27542774A41FE0243 /* UITableView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = E847BE3D7FA245C62A989A8A4F90542A /* UITableView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1BFCC1BC5107F5F72BDBDB98E12559C /* JXCategoryViewDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = B4750EDA171CA7EB95AFE62489A712EF /* JXCategoryViewDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; A1C02A0C13BE4A139BC38BBE20217FA2 /* JXCategoryView-JXCategoryView in Resources */ = {isa = PBXBuildFile; fileRef = BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */; }; - A1DC9EFDF50DF0EAF24D9D7C219AD2C1 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = BE09431A1BE57A882CA02B1E434916A8 /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A1E44277704AD68E867FD7C955A6632D /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A8EB0FE66AD3E48C10CDD802521D146 /* MJRefreshBackGifFooter.m */; }; - A324722BA42F21E98F158EA6C133D715 /* LookinServerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = D03FDB7D5A636ED3DC51EF05677C546A /* LookinServerDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A325C7E5098EB5641EF49D279EA9EF03 /* JXCategoryTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 202D2DE7A9C3209A4BF4D407CF1AB06A /* JXCategoryTitleView.m */; }; - A3EA39A13714B3103B82F4066A642F53 /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 04A50C0A5F4CA1B3AF632BFE12460FC6 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A643679AC9795083558C6D8E33AF6151 /* JXCategoryBaseCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A08646B05BD58116699CDFD07CA2977 /* JXCategoryBaseCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6728DA26A7C457B78A7A3CCFA9D9A10 /* UILabel+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 015571B1499F434BC7171DE7EA094577 /* UILabel+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A6B2B022993BBC55550CFBB0A0C78209 /* LookinConnectionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 595E9691CC1A487C44431E51893A1D01 /* LookinConnectionAttachment.m */; }; - A6FCF74348D1907891FBDE3F2E331136 /* DZNEmptyDataSet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A05508640C7796358B45E0B5C0C73183 /* DZNEmptyDataSet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A760FF1452F08B787F0997D91F4A2C98 /* HWPageSheetPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = C947209A5CDFABA11FEBE5D709864961 /* HWPageSheetPresentingAnimation.m */; }; - A839428F403C52D8AA3466B65E20C27A /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 0A7095DB3527991440F374C9F9DB5050 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A86CC1AFDFDD692DC4EE66F57C0F39E6 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 9AFDFE95B53BDA0F282212CF3E9B940F /* UIScrollView+MJRefresh.m */; }; - A8AD2AE9695630E93DE504211EBAFBF1 /* LKS_CustomDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 230F8C4FD68EA2D95EA48F31DA295CE9 /* LKS_CustomDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A92AB5E65CA85947368E46E6627F1BFB /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 21C74D93A3238750FF610EABE13EB50F /* UIButton+WebCache.m */; }; - A93BA1C5A4FFEF3ACF371690485A2703 /* NSObject+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B26E1BE3EBF37131688F5656289ACA2 /* NSObject+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9609EEBDD5FD40292925E80ED84D5DF /* LookinServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 5F4DF3FAFAFDE0BEC7606CB8D4C2C98B /* LookinServer-dummy.m */; }; - A9A49E4A3BE8882F60DF32BAF39DE191 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 32DEFB57DAEAFA1A97A9826678533D16 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A9BEDE2ADF9D1E0D0D1A241806A1A486 /* LKSConfigManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 17DDB1AC9EC1929E6B6DFC0CFA9D927D /* LKSConfigManager.m */; }; - AA1EA8F0F0470F1596B1FFA58ABF3375 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = D68B54EB4EEB9AF6B9ED16CAB83E16BA /* SDWebImageDownloaderOperation.m */; }; - ABCB80C4813C849FC93D57676820C907 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 7A8A3FC6E6388A4864974A3D3B9C02F6 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC14E56ECA7A4980A8E1CA68E800B12C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = C63ECE6EA6AB3C1B9F676C1A2510CA67 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AC710813CB6A1DAEEE45914402F864D2 /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = C9DDC2FE19D7DC5621872F440C5E8A37 /* MJProperty.m */; }; - AD01931D200C49153984E27CBCEFE9D1 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = CE3837EC7E52B2C2855416D01CB974C7 /* FLAnimatedImage.m */; }; - AD395F6BD7F53258A431E9479D07C6AF /* JXCategoryTitleImageCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 04AE87BD26EBAF13B558201544C0E822 /* JXCategoryTitleImageCellModel.m */; }; - ADAB2E78F005C6413F9F3699D60CF727 /* LSTTimer.m in Sources */ = {isa = PBXBuildFile; fileRef = EF426A2B87D32263A2C56A13732C8201 /* LSTTimer.m */; }; - AE69A3B75BEEB9E2C54168BF0C502BC6 /* LKS_RequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 15E765BB9B77EA9AC2800F30D2802C1C /* LKS_RequestHandler.m */; }; - AE7B02645B8F769CA5F215EE8F7CC5B0 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = E44ED3A05255119AA352B7DE0C64E994 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF17C7BD3344504E243E234004B4593E /* JXCategoryIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = FD4AB223CCA1E3159EE2C805605A0657 /* JXCategoryIndicatorView.m */; }; - AF185CDCA462AD6450543676951C82F9 /* LKS_ObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A2FC8CB1CFEB2812A4E5E466940232C /* LKS_ObjectRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AFD1D411A9387DCEC6F0034653E23787 /* DZNEmptyDataSet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FFFC6DDC16F58E87A8A30CA92223320F /* DZNEmptyDataSet-dummy.m */; }; - AFDC0B8255B2F3CED8E609F8A3BD1CDB /* LKS_AttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C4B5B00D7224F098F6B2FE0962E5086 /* LKS_AttrGroupsMaker.m */; }; - B01F27CEAE1971DEC56A8811FE669EB6 /* UIViewController+Presentation.m in Sources */ = {isa = PBXBuildFile; fileRef = C806BECAA1C722F04FE4A89D9B14A0E0 /* UIViewController+Presentation.m */; }; - B030B558BE97E0225652EFB8C8FA431F /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = F7FE08919F8BE5AACFB3A1E812E57C03 /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1DC9EFDF50DF0EAF24D9D7C219AD2C1 /* NSObject+MJProperty.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C6F8F3E8953AADD74838D4A882F45A1 /* NSObject+MJProperty.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A1E44277704AD68E867FD7C955A6632D /* MJRefreshBackGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = FD937703BB1091324CC7A54FB95A5217 /* MJRefreshBackGifFooter.m */; }; + A324722BA42F21E98F158EA6C133D715 /* LookinServerDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = EB54379A72A5DCC64A2C9D42F05AE928 /* LookinServerDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A325C7E5098EB5641EF49D279EA9EF03 /* JXCategoryTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FEE8F6EEF601125225DCB1FEACED91C /* JXCategoryTitleView.m */; }; + A3EA39A13714B3103B82F4066A642F53 /* MJExtensionConst.h in Headers */ = {isa = PBXBuildFile; fileRef = 65CCB6F10EC6B284E771B999975CE0B0 /* MJExtensionConst.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A59F64C74CB407EBC0385F026FC7234A /* LYEmptyView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F19C07EBC4D3E8EF1AD6C474E7F24FE /* LYEmptyView-dummy.m */; }; + A643679AC9795083558C6D8E33AF6151 /* JXCategoryBaseCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 72B1B153E1909E0A9DFA6E6097FD363D /* JXCategoryBaseCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6728DA26A7C457B78A7A3CCFA9D9A10 /* UILabel+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = D5909A44E1AC01893309CADDDBC4E50C /* UILabel+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A6B2B022993BBC55550CFBB0A0C78209 /* LookinConnectionAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 9C75F181A3E07F7E7B4B017B48488393 /* LookinConnectionAttachment.m */; }; + A6FCF74348D1907891FBDE3F2E331136 /* DZNEmptyDataSet-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 6523AFC889399B6B25C08CCBEEE2F0B6 /* DZNEmptyDataSet-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A760FF1452F08B787F0997D91F4A2C98 /* HWPageSheetPresentingAnimation.m in Sources */ = {isa = PBXBuildFile; fileRef = F5EB73BE761C595601603CE39EC8D850 /* HWPageSheetPresentingAnimation.m */; }; + A839428F403C52D8AA3466B65E20C27A /* NSButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = CE2B5265F3721FD7EAE15556CCDB1151 /* NSButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A86CC1AFDFDD692DC4EE66F57C0F39E6 /* UIScrollView+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 6B94BD4B7CE09D63E43117EFC4B15D0D /* UIScrollView+MJRefresh.m */; }; + A8AD2AE9695630E93DE504211EBAFBF1 /* LKS_CustomDisplayItemsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 98935AEC9F6608D5CCBFEF667B9F658A /* LKS_CustomDisplayItemsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A92AB5E65CA85947368E46E6627F1BFB /* UIButton+WebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = E8B2553B72F322F7DC0ED38BB760DDC6 /* UIButton+WebCache.m */; }; + A93BA1C5A4FFEF3ACF371690485A2703 /* NSObject+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A9477BE731926B610D9B847EF5B7347 /* NSObject+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9609EEBDD5FD40292925E80ED84D5DF /* LookinServer-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D00FB0A2824B0B4E8A345D97C52AA3B /* LookinServer-dummy.m */; }; + A9A49E4A3BE8882F60DF32BAF39DE191 /* SDWebImageManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 253C2858A52DB3FD4BE13D65D2B6C2A6 /* SDWebImageManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + A9BEDE2ADF9D1E0D0D1A241806A1A486 /* LKSConfigManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 32E665F5EEABCF137D52CE4A3889C9F0 /* LKSConfigManager.m */; }; + AA1EA8F0F0470F1596B1FFA58ABF3375 /* SDWebImageDownloaderOperation.m in Sources */ = {isa = PBXBuildFile; fileRef = 35B67A3C0E25A19B996355E03ED4A3CD /* SDWebImageDownloaderOperation.m */; }; + ABCB80C4813C849FC93D57676820C907 /* SDImageCacheDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = B2C2A4CA80B5FE7CB8927FAEE4CAF5F4 /* SDImageCacheDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC14E56ECA7A4980A8E1CA68E800B12C /* SDWebImagePrefetcher.h in Headers */ = {isa = PBXBuildFile; fileRef = 6099FBA2A3EE3D602B49D82E19FA5875 /* SDWebImagePrefetcher.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AC710813CB6A1DAEEE45914402F864D2 /* MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7E307063029FFE21DDCDC0455FA473 /* MJProperty.m */; }; + AD01931D200C49153984E27CBCEFE9D1 /* FLAnimatedImage.m in Sources */ = {isa = PBXBuildFile; fileRef = D1046C4A0F4D596969B881D83BCC0FA1 /* FLAnimatedImage.m */; }; + AD395F6BD7F53258A431E9479D07C6AF /* JXCategoryTitleImageCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = B28192DA39251C0AC1C30AE245A9A547 /* JXCategoryTitleImageCellModel.m */; }; + AE69A3B75BEEB9E2C54168BF0C502BC6 /* LKS_RequestHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = DF017A36F518C19E10298190FD8A84C4 /* LKS_RequestHandler.m */; }; + AE7B02645B8F769CA5F215EE8F7CC5B0 /* View+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8AB8065F8811289957B59E9EBA6B47 /* View+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AF17C7BD3344504E243E234004B4593E /* JXCategoryIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1817B2506E6D89DAFA8176C4A51738C0 /* JXCategoryIndicatorView.m */; }; + AF185CDCA462AD6450543676951C82F9 /* LKS_ObjectRegistry.h in Headers */ = {isa = PBXBuildFile; fileRef = DBFA6FCFCE1CB3F169BDBDCE936950B5 /* LKS_ObjectRegistry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AFD1D411A9387DCEC6F0034653E23787 /* DZNEmptyDataSet-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B8322800FD1F06BC2FEA3A9EEA874E20 /* DZNEmptyDataSet-dummy.m */; }; + AFDC0B8255B2F3CED8E609F8A3BD1CDB /* LKS_AttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 00AE10F23D2B898E9F45884FD9904B2F /* LKS_AttrGroupsMaker.m */; }; + B01F27CEAE1971DEC56A8811FE669EB6 /* UIViewController+Presentation.m in Sources */ = {isa = PBXBuildFile; fileRef = F6CDCEC9BF52B36734600241EB9CC345 /* UIViewController+Presentation.m */; }; + B030B558BE97E0225652EFB8C8FA431F /* AFAutoPurgingImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = C3DBF2503619D6F278D203DBF5D29B4E /* AFAutoPurgingImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; B03761E468C3B0F1BFEB2401CF2D5245 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - B09F08548ACA8379445F6525011EE219 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = DD1439668AF92748DEFAD18BF418CE55 /* MJRefreshBackStateFooter.m */; }; - B0F512045830FAB66AE7526E35501800 /* JXCategoryImageCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = D4C17E87C77E85F28C83D98FAB4AB7F4 /* JXCategoryImageCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B2704AFFC5CC053154839DB44924D255 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = BBC5ED786070BB7777881EF2B55FF369 /* SDImageCoderHelper.m */; }; - B2B5444DFE63D2835A7561C1D64C9344 /* LKS_CustomAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 137E45FE90DEED579DF255BB11ADABF4 /* LKS_CustomAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B2BC43DEC8DE2B9234693FE3782AB76C /* LKSConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D16058E57E3F07CA628E8A17A3B944C1 /* LKSConfigManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B331CE2D3DEB461E738B886086A365F9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = B5EF3518EEE6DB69526EE34FF9D58DFD /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B48A975992E58328254C494F133DE467 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = CFD12B92C17E28346EDC2EC75D0BF494 /* NSObject+MJProperty.m */; }; - B4F231C5CBAB3D4A184699D0066E0E83 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = DC870A534B766E7815C7744EE9E7E3E1 /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B565C08CE947CF591B1D3582272D5E1D /* LKS_CustomAttrSetterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 567674319F769F7E8B80920BBBD444B6 /* LKS_CustomAttrSetterManager.m */; }; - B59E60FBC9665FC1061B88B8E6FD9FAF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CBDE62F720E1751DB8B8E4DF3B0E9F /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5AF87C11A465F666473F6191D173905 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 634BE374E20F830B5B77550EFCF89612 /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B5C521FFB8E09DFE348238E21556842F /* UILabel+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E285AA5C9AFC477B5336B5AC2C863D1 /* UILabel+LookinServer.m */; }; - B61728EFE4A95013413ED38D371A33B0 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 187A3F425AA5E5A93F8784E11F9E28CF /* PrivacyInfo.xcprivacy */; }; - B66356D4E7E43B3D15324569AA7EBB05 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9B89E97BE59B9448BC63E348FA77F055 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B680C2604BD8BC9644AE7C67BC46B9BB /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 1D56371580E6496005BC9D35C2C49570 /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B741DBE2A466E6211F879EF997D9322D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 83B5308ADA544D7E6FCE86EFD21D5CBB /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B79864F972C51037B350802D8CD48024 /* LKS_GestureTargetActionsSearcher.m in Sources */ = {isa = PBXBuildFile; fileRef = BC88BA608872DDF711D78498FD36C1AA /* LKS_GestureTargetActionsSearcher.m */; }; - B81566F19789EBD9BE2714E2A6059D36 /* LookinDisplayItem.m in Sources */ = {isa = PBXBuildFile; fileRef = BCE8E065BE01E56E0D55097E36AB8FC2 /* LookinDisplayItem.m */; }; - B8CA1F338C44C633916650FD85DA5A30 /* HWPanModalPresentationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 195F1795B17C3F026E46BBEF64C1EA67 /* HWPanModalPresentationController.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B948DCB652CEF1509FBE410D85844A53 /* JXCategoryView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 84C7B13561A207799480933E11856D99 /* JXCategoryView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B95C63A039D9D08896421291DEBD3AEB /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = 34C31D8DFEC22296E69E97BC5CEAE316 /* SDWebImageCacheKeyFilter.m */; }; - B987864019E987FE32AB26A9CF2C8E12 /* UIViewController+PanModalDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = 9BAC219B4754C1E13B6929143780BE52 /* UIViewController+PanModalDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BA904ABA8ED36CC4E5EB2B2004CA1F18 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = F451B2E12A8192978BB7FB1B45BF1E04 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BACAA91A92F35CD7E7795232A83F21D1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = A5FC57ACB22E21DCA20F2B582D18A03F /* AFNetworkActivityIndicatorManager.m */; }; - BADA31750A2136D073EDA4461DBE1EEA /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C4CB24406FFC32C73C615D12F0532C7 /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBA61EF31BFDFA6FCA34DC4EBE6E1D9A /* NSString+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 06AB57BB46CC82FE3257276649BAF8EA /* NSString+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BBF5FDA7D647517E2F904FE8E5596D96 /* LKS_AttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = BE10A2A4B13E0F15A962DBEA161DE595 /* LKS_AttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC2F9B1D6986FEB23B4FB1288B512538 /* MJRefreshNormalTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 342267EEBD80FDDCEAA647EFBE0EB6BD /* MJRefreshNormalTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC5458210A973BC7A29D1F45D458A14B /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A1067B051CF7A4C36817E6F668A3E7A6 /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BC7A1933CCF40C3C5E2E4A70AD2D0657 /* LookinDisplayItemDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = F90D97C684BADB3FE9796E626B98C43A /* LookinDisplayItemDetail.m */; }; - BCDC1E1D46DD124B5726A064D2EE66A3 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 5734E5CBE9E63CD37E71A375796587B5 /* UIImage+MultiFormat.m */; }; - BCEEAFC24178DE5AABACC74245CE1739 /* JXCategoryIndicatorDotLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 898DE7614EA3416744425477D130D9C7 /* JXCategoryIndicatorDotLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BCEFDE57BB0E0B36731C8D39FFA1BE2C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = AF302A5E7BA56F9F631A8591DA72D3C3 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD2F6B06ADB5136DA881D1B918367125 /* UIViewController+PanModalPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = B05FD8A103E2A06EE08BE59B38FC36B4 /* UIViewController+PanModalPresenter.m */; }; - BD30193C1E3D7B1F17B1B1F3F08BE655 /* UICollectionViewLayout+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = 99CBD01AD35AF793B343AC0ACF2CF164 /* UICollectionViewLayout+MJRefresh.m */; }; - BD7E02AB6057AD5A6AC513C34D508135 /* JXCategoryIndicatorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = FEF91306ED7817FCE47628D37A94BF1B /* JXCategoryIndicatorBackgroundView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BDBE494BAC544843982C3CA96A6C41DD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2BEAAFCDD4CD23AABA4CD7359454B646 /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BE4F0DF600FBF07E812D262B293CF76C /* UIView+LSTPV.m in Sources */ = {isa = PBXBuildFile; fileRef = A4D8DE877E59C1B5596F10D0213ADC5D /* UIView+LSTPV.m */; }; - BE7F6E08A9BDA2EF6FA625EB5CD685EC /* JXCategoryCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = D9DA60EBF6A57B0D3224E3ACD3E51971 /* JXCategoryCollectionView.m */; }; - BF0C3D2782FE1425C2F1F8827132A94B /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C9F5466A18204DE825F30433C784EDB /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BF22D137EF6324675FA50080C5D93C00 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C07CC30774DAAE34D68C477CE151A36 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BFAC671767912906E90060B0F4BED5FB /* LookinCustomAttrModification.h in Headers */ = {isa = PBXBuildFile; fileRef = 06A633B376D525417B93138405029540 /* LookinCustomAttrModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BFD8EC99CD8DA66E3C6C0B3EE8CC4859 /* JXCategoryNumberCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = C74AFAA0D49E0563D9312CEA70CCF8B3 /* JXCategoryNumberCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C04D578067F77AAB6717D32712CC39A2 /* HWPanModal-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 83FBF1722FEB1FC5E339C64BC2275D81 /* HWPanModal-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C07F8A334C739FD38D9CB5C5239D683F /* JXCategoryTitleCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C34880EFF82114AECCB354A57C47E7C /* JXCategoryTitleCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C0D7926E41A294ACA98D7B033B283919 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 21E66554273E5793F0BC4D1CD5A058CD /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C16483526F6C6287240A75EDCB7E2F2F /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E3535B97DCD1B05E059D045B16700F34 /* FLAnimatedImage-dummy.m */; }; - C1D9802BE2A6410FFDFB1650FB9BA317 /* LookinDisplayItem.h in Headers */ = {isa = PBXBuildFile; fileRef = FED61E621A88CB9CE3C421FDEB1106FC /* LookinDisplayItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C1DD8C6A64F948E4C53560C76B995DA4 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = BEE43BCA7C1A101BFC7A5856F8793387 /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2033A68F13923BF9B3EE19F39FC1411 /* UIColor+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6A34A08E72CC7EE2DEDDC6F48148CD79 /* UIColor+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2068AEACC2D9C7F1FFE41AA25B12A68 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 9E54C32C4CB68C01C57E81C03350F4B2 /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C22BFD04EAB76981E7F112D57A1F5E79 /* JXCategoryNumberCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B8FD707DDEC1F98F5C5FE19647F0592 /* JXCategoryNumberCell.m */; }; - C2840BF1950FF7EE2DCD6D55F768A49C /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 35205291EDA412911A7CCBF5DB6087EB /* UIImage+GIF.m */; }; + B09F08548ACA8379445F6525011EE219 /* MJRefreshBackStateFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = E7485AA213719656370219B55A0AAE3C /* MJRefreshBackStateFooter.m */; }; + B0F512045830FAB66AE7526E35501800 /* JXCategoryImageCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = D51E4D4230E01D5F3D9340BDF320C3E1 /* JXCategoryImageCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2704AFFC5CC053154839DB44924D255 /* SDImageCoderHelper.m in Sources */ = {isa = PBXBuildFile; fileRef = FEE19DBCD45615CC389DD7223D3C447A /* SDImageCoderHelper.m */; }; + B2B5444DFE63D2835A7561C1D64C9344 /* LKS_CustomAttrModificationHandler.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EFF4D34DD5391DCE7D206B11306BCE5 /* LKS_CustomAttrModificationHandler.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2BC43DEC8DE2B9234693FE3782AB76C /* LKSConfigManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A4CFB2BE169777F50B29077639FCFEC4 /* LKSConfigManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2E706AF15CBC9BBDA6B180AA008345E /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 0FFF1AB10AC30C72DB3B2F106B23E5B3 /* PrivacyInfo.xcprivacy */; }; + B331CE2D3DEB461E738B886086A365F9 /* SDImageGraphics.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EA970CCF2164DC59ECEE9DE06B1BCBA /* SDImageGraphics.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B48A975992E58328254C494F133DE467 /* NSObject+MJProperty.m in Sources */ = {isa = PBXBuildFile; fileRef = D44C8E719DA4251716FDA4B2519C022D /* NSObject+MJProperty.m */; }; + B4F231C5CBAB3D4A184699D0066E0E83 /* SDImageAWebPCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = BF3C6AEB909F4472F8D8E4E21B25B716 /* SDImageAWebPCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B565C08CE947CF591B1D3582272D5E1D /* LKS_CustomAttrSetterManager.m in Sources */ = {isa = PBXBuildFile; fileRef = F363F53534ED7FE5A4BB0A1E1863D5E7 /* LKS_CustomAttrSetterManager.m */; }; + B59E60FBC9665FC1061B88B8E6FD9FAF /* Masonry-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 128CF11122A7C2009F733361122E39A1 /* Masonry-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5AF87C11A465F666473F6191D173905 /* UIView+WebCacheOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = CF6ABA6691731EEA533F56170FB03C5C /* UIView+WebCacheOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B5C521FFB8E09DFE348238E21556842F /* UILabel+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BD526972490CFC41EE7106FF8E272CC /* UILabel+LookinServer.m */; }; + B66356D4E7E43B3D15324569AA7EBB05 /* SDWebImageDownloaderOperation.h in Headers */ = {isa = PBXBuildFile; fileRef = 304D443FD07AF14BA7F1628D80971669 /* SDWebImageDownloaderOperation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B680C2604BD8BC9644AE7C67BC46B9BB /* MASLayoutConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A98EB9CE425ECC87D9747E4EAC3DB0C /* MASLayoutConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B741DBE2A466E6211F879EF997D9322D /* SDImageCodersManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0BC7EB117F009B160822B3FFCCC63F2A /* SDImageCodersManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B79864F972C51037B350802D8CD48024 /* LKS_GestureTargetActionsSearcher.m in Sources */ = {isa = PBXBuildFile; fileRef = C81473AB6162F68681F317D8EC207A4C /* LKS_GestureTargetActionsSearcher.m */; }; + B81566F19789EBD9BE2714E2A6059D36 /* LookinDisplayItem.m in Sources */ = {isa = PBXBuildFile; fileRef = AE19AE8E2478EF2E39C49272A1998EFE /* LookinDisplayItem.m */; }; + B8CA1F338C44C633916650FD85DA5A30 /* HWPanModalPresentationController.h in Headers */ = {isa = PBXBuildFile; fileRef = 87888E540A812F012C68F804E8F5AE7B /* HWPanModalPresentationController.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B948DCB652CEF1509FBE410D85844A53 /* JXCategoryView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = AC3EF9D4544217A0B4E13DA6B530C974 /* JXCategoryView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B95C63A039D9D08896421291DEBD3AEB /* SDWebImageCacheKeyFilter.m in Sources */ = {isa = PBXBuildFile; fileRef = C909F8904D301FB96965DD62CE4E2CA7 /* SDWebImageCacheKeyFilter.m */; }; + B987864019E987FE32AB26A9CF2C8E12 /* UIViewController+PanModalDefault.h in Headers */ = {isa = PBXBuildFile; fileRef = E8C71212CAB0DCBF4059538A93053A4A /* UIViewController+PanModalDefault.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BA904ABA8ED36CC4E5EB2B2004CA1F18 /* MASCompositeConstraint.h in Headers */ = {isa = PBXBuildFile; fileRef = AE4CC2528765A45B472AD5B813D01119 /* MASCompositeConstraint.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BACAA91A92F35CD7E7795232A83F21D1 /* AFNetworkActivityIndicatorManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 6516BB90D0CA47F75712B356350A9FC1 /* AFNetworkActivityIndicatorManager.m */; }; + BADA31750A2136D073EDA4461DBE1EEA /* UIButton+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 731A2E2A09E554B786F7BD8D9285D1CC /* UIButton+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BBA61EF31BFDFA6FCA34DC4EBE6E1D9A /* NSString+Lookin.h in Headers */ = {isa = PBXBuildFile; fileRef = 92670C1E3C13D6C6157E7AFB4347DB17 /* NSString+Lookin.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BBF5FDA7D647517E2F904FE8E5596D96 /* LKS_AttrGroupsMaker.h in Headers */ = {isa = PBXBuildFile; fileRef = 313050E8524ED89E2B2CF8F5C1CC7633 /* LKS_AttrGroupsMaker.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC2F9B1D6986FEB23B4FB1288B512538 /* MJRefreshNormalTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 83340409B38BF2A20F089A4B919FC02F /* MJRefreshNormalTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC5458210A973BC7A29D1F45D458A14B /* AFNetworking-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 83E8510A179E756198B5FC915A27736E /* AFNetworking-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BC7A1933CCF40C3C5E2E4A70AD2D0657 /* LookinDisplayItemDetail.m in Sources */ = {isa = PBXBuildFile; fileRef = 15D6A20A536D39FB4F4DE78CEC3512CE /* LookinDisplayItemDetail.m */; }; + BCDC1E1D46DD124B5726A064D2EE66A3 /* UIImage+MultiFormat.m in Sources */ = {isa = PBXBuildFile; fileRef = 373258A2F6DFCE8ADD1C1D42DE5EF5D3 /* UIImage+MultiFormat.m */; }; + BCEEAFC24178DE5AABACC74245CE1739 /* JXCategoryIndicatorDotLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = C398AC4FA166ECBDBFA37681D3C108CC /* JXCategoryIndicatorDotLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BCEFDE57BB0E0B36731C8D39FFA1BE2C /* SDWebImageDownloaderRequestModifier.h in Headers */ = {isa = PBXBuildFile; fileRef = B2CE10A014B3B7826BFF751346CE7495 /* SDWebImageDownloaderRequestModifier.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BD2F6B06ADB5136DA881D1B918367125 /* UIViewController+PanModalPresenter.m in Sources */ = {isa = PBXBuildFile; fileRef = 2A1E2D85798C902C2A1E1B714EF78587 /* UIViewController+PanModalPresenter.m */; }; + BD30193C1E3D7B1F17B1B1F3F08BE655 /* UICollectionViewLayout+MJRefresh.m in Sources */ = {isa = PBXBuildFile; fileRef = BE1A1849BD6BB4B796D54DCBEF79FB7A /* UICollectionViewLayout+MJRefresh.m */; }; + BD7E02AB6057AD5A6AC513C34D508135 /* JXCategoryIndicatorBackgroundView.h in Headers */ = {isa = PBXBuildFile; fileRef = 5EE479D553AE99C7C893E8B21299B3AC /* JXCategoryIndicatorBackgroundView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BDBE494BAC544843982C3CA96A6C41DD /* SDAnimatedImagePlayer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6C1E503B34448DC968FB5BDFADFAE70F /* SDAnimatedImagePlayer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BE4F0DF600FBF07E812D262B293CF76C /* UIView+LSTPV.m in Sources */ = {isa = PBXBuildFile; fileRef = 1B1E80842E43848FFB0F162AFF96E774 /* UIView+LSTPV.m */; }; + BE7F6E08A9BDA2EF6FA625EB5CD685EC /* JXCategoryCollectionView.m in Sources */ = {isa = PBXBuildFile; fileRef = E81450568229FA708143E74A7A580F89 /* JXCategoryCollectionView.m */; }; + BF0C3D2782FE1425C2F1F8827132A94B /* MJFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 99650956C6DC18187951AE72D50E44A2 /* MJFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BF22D137EF6324675FA50080C5D93C00 /* NSArray+MASAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = 05FF40C91ADEB302CBF4314535A1A6E7 /* NSArray+MASAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BFAC671767912906E90060B0F4BED5FB /* LookinCustomAttrModification.h in Headers */ = {isa = PBXBuildFile; fileRef = F5B865CFCA1FF1600CB766B9BC34B8D9 /* LookinCustomAttrModification.h */; settings = {ATTRIBUTES = (Public, ); }; }; + BFD8EC99CD8DA66E3C6C0B3EE8CC4859 /* JXCategoryNumberCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 292BBC0398F56F3818017A7314541B45 /* JXCategoryNumberCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C04D578067F77AAB6717D32712CC39A2 /* HWPanModal-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EFF4EEBD779C7DB39B6B044205385FA /* HWPanModal-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C07F8A334C739FD38D9CB5C5239D683F /* JXCategoryTitleCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = E01ADBA325921AF74B0FBD58F7BB5032 /* JXCategoryTitleCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C0D7926E41A294ACA98D7B033B283919 /* WKWebView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = B052BF123A39C5CF4B531584A2A83BED /* WKWebView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C16483526F6C6287240A75EDCB7E2F2F /* FLAnimatedImage-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2CCD2F6CD21BCE8D4DC6CE0FB91B91CB /* FLAnimatedImage-dummy.m */; }; + C1D9802BE2A6410FFDFB1650FB9BA317 /* LookinDisplayItem.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EE8AE5699FC4ACD4283D4626ACDF742 /* LookinDisplayItem.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C1DD8C6A64F948E4C53560C76B995DA4 /* SDAnimatedImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = 37977014CE5B8A9E93F1EC56C3AC6D52 /* SDAnimatedImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2033A68F13923BF9B3EE19F39FC1411 /* UIColor+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = A810CCF3953514350B557ABBEEBE5FF6 /* UIColor+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2068AEACC2D9C7F1FFE41AA25B12A68 /* MASUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 1BFABBA210FF6BEF09CABCCBE8AE590F /* MASUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C22BFD04EAB76981E7F112D57A1F5E79 /* JXCategoryNumberCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B51D3C0C65114DF44F6DDB3ED9C4E4E /* JXCategoryNumberCell.m */; }; + C2840BF1950FF7EE2DCD6D55F768A49C /* UIImage+GIF.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A2AEB4C3E4F6147F107DF9376FA7264 /* UIImage+GIF.m */; }; C2F8C43CFD4C890405F217DA7E00C839 /* Pods-CustomKeyboard-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C2FE60A10C792613E45031AE6E851ECB /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = CF9BCBE90C3B7C448764C897685CB0E3 /* MASViewConstraint.m */; }; - C4CC01ED368863C6E3220988FBC6CEFB /* LKS_CustomAttrSetterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 38E107BE978505B98A952E3564F532AA /* LKS_CustomAttrSetterManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C60DB44F719853DE3B7157960DAF9270 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 4F81509596D525489E9AA55CE4C0B4C1 /* MJRefreshComponent.m */; }; - C6A100159974349FEAAC99B82BE0F872 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = 9CE19B5D21ECCFC76311F186D2B3F651 /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C6FEC1088121FEA7DDC3384B7ECF3B44 /* LKS_Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = FA6406A6E74DC06D367BE38EA6C60243 /* LKS_Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C2FE60A10C792613E45031AE6E851ECB /* MASViewConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 0CE35A6903D3E473ACA2703E7286A28E /* MASViewConstraint.m */; }; + C4CC01ED368863C6E3220988FBC6CEFB /* LKS_CustomAttrSetterManager.h in Headers */ = {isa = PBXBuildFile; fileRef = A0925E96742E33F78D548F10A7C0475D /* LKS_CustomAttrSetterManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C60DB44F719853DE3B7157960DAF9270 /* MJRefreshComponent.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C9E32D40F89FB7470530B4F8AAB6162 /* MJRefreshComponent.m */; }; + C6A100159974349FEAAC99B82BE0F872 /* SDImageLoader.h in Headers */ = {isa = PBXBuildFile; fileRef = C8ED101794ADA1876F4FFCBD1F79D622 /* SDImageLoader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C6FEC1088121FEA7DDC3384B7ECF3B44 /* LKS_Helper.h in Headers */ = {isa = PBXBuildFile; fileRef = 3CA454A209E71894BC9366B10B95D086 /* LKS_Helper.h */; settings = {ATTRIBUTES = (Public, ); }; }; C71935C30C1AEDF32B96670BD8FA64CE /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - C74589E03918328E4D27EFCBF6C4A0B8 /* JXCategoryBaseCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 65F97EE1352D7FC02982C03FB1D0FBEB /* JXCategoryBaseCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C857B8D2D0BAA5A8A764F9E1C4B85807 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1BABE1F324CED82D14350741682D422B /* ViewController+MASAdditions.m */; }; - C8685678D1B020F87365D022216FFE29 /* JXCategoryIndicatorImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D5D75E71D2ABCC5D3DDCC662DACBFAED /* JXCategoryIndicatorImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C8771885BEA9EA0BD2E2C474587325E2 /* LKS_ExportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 44ABB514E2C8BB7AA8881283E1F0FE47 /* LKS_ExportManager.m */; }; - C8EC35DFB0945DBE2F2FF9ECFE6D9711 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 25A7097BBC72B099A6C5D8BE403878A8 /* NSLayoutConstraint+MASDebugAdditions.m */; }; - C922BFFF717515E5878910DF4078CE1E /* JXCategoryIndicatorDotLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = EC4AC84F5855EC104608477917DF3145 /* JXCategoryIndicatorDotLineView.m */; }; - C93E972E75F84674690300123984EC43 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 9421B0E41FC583CAD966F98C60445BAB /* SDAssociatedObject.m */; }; - C992A335399F942237E754EE65C40CA5 /* LookinObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B1D41519ED222707112BD66393CC6B2 /* LookinObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C993A4D0CFA51E567F458CA65C1298AA /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D5100072476E008E3F5E024784855C6A /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9A72F0A93329C42B77395B0F6CEA26C /* HWPanModalPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 83D5AD11F2E32B53BA1869D6DE812341 /* HWPanModalPresentable.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9B63C6ED2ED691EA83D3EE65939444B /* Lookin_PTProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = FB5DC78AEFAB6098819933CF81AAB15B /* Lookin_PTProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C9E19D164C26414115CC969ED9A303C1 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = EB21E143FD58D712C16E9026FBFFE194 /* MASLayoutConstraint.m */; }; - C9E8C9372C2DA29D302B058BE3AE9877 /* CALayer+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 26925632A670841DDFC5067C12B16515 /* CALayer+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA1E0DCDF679EA2DE2ED0915426E1D04 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = C5A9A86ABA54140CD0A5B6CD44C79740 /* SDWeakProxy.m */; }; - CA56274BE7CBB3E759E0364785DF9799 /* Lookin_PTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 35269DC2485E9AA07A892FDEB96B16C7 /* Lookin_PTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA9AFE3460622CC65F75A2DDE845F6E9 /* JXPagerSmoothView.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A2E4F46AFE1B8413F8C1C81323B5831 /* JXPagerSmoothView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CE2AF36EBB17CDA2652CBADD4A7ABF82 /* JXCategoryImageCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EC57F0405D7809ECABB52C0C041C6F2F /* JXCategoryImageCellModel.m */; }; - CE86196C00DC1D658B6CB7D47A0233AA /* LKS_ConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 60913F6F25D56976457BFFCFF2C2FADC /* LKS_ConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CEC9EF043F69710AC29940EB4E1E2B19 /* RTLManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 0E752820782AF474A360AC65F5EFA79D /* RTLManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CF7005F2C42AC2E2DD6D437D52C7048B /* HWPresentingVCAnimatedTransitioning.h in Headers */ = {isa = PBXBuildFile; fileRef = 5AEB6DDDE2B74ABEB1D68CE037D784DC /* HWPresentingVCAnimatedTransitioning.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CFF8D1A5E4C2097EF05E1021FE112886 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A8F3B5ED5052E8AFF569E50436DC3C0 /* SDWebImageIndicator.m */; }; - D06BB547D59D183FD1DDD84DEBAC9EE8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6BEFA0A1959620AC394975A01082A23B /* SDWebImageCacheSerializer.m */; }; - D08901EA319887BE6D694F8333BE8D1F /* JXCategoryIndicatorTriangleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1E17CF24E4278604BB723E30B9997957 /* JXCategoryIndicatorTriangleView.m */; }; - D091F05269EE0566B665B00C7D912F8E /* Lookin_PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 69AE4F19374B51CFBF6330CC5F82B32A /* Lookin_PTChannel.m */; }; - D0E37358C3DCF2A8A572C4F38BB0569B /* JXCategoryListContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 29EA07EA8EF3C7818A9505A783C4FF02 /* JXCategoryListContainerView.m */; }; - D121163078CA9BBE54A83BD73EF784CF /* LSTPopViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 5F35F0E5B188FD04E8E889503DEA5841 /* LSTPopViewProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D1230E19DD1507E6370B80DF6653AC2A /* NSArray+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = D4BC45247918896A52CA0C54F038B447 /* NSArray+Lookin.m */; }; - D2AF9A7FD73B95960FDA4FD06C4BED08 /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = BDE2764DE3EEF78845A18DB898232DC0 /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D2CD8848F856EC9942A76610AAE66F0A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 31894250FE81D510485178A2F984B715 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D31558927DE3F62D1BB1FC416E6F237D /* JXCategoryDotCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = EF3A8DFB97BB54D169F6E8AC578F498C /* JXCategoryDotCellModel.m */; }; - D3615499AFE4D2A8EC2E773F4D8A82B2 /* KeyValueObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E70DDAD553B6A4AC2379D01C3F133EF /* KeyValueObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D380F9C945002DBF2E7D64983ABDC890 /* JXPagerListContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = CF85D3EF505C17C565E691AC344CCE5C /* JXPagerListContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D559CC4D0695CEE05F3B4C1C06475044 /* UIImageView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = F45F2EB9AE5E2D5BDC0F9860DB695385 /* UIImageView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D5C046C46961BE465293625D6B870620 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 17CD950341D8F0132ADFEDC39B7267A7 /* AFNetworking-dummy.m */; }; - D62A672EEB252581BD972DDA862BE1DD /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 5409A465D5BE745D21B9F8847B798BD5 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D662C83ECE8BEDA5FFB52F3575CA3E1A /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = BCAF03C4FF87945F86C061039CB2443F /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C74589E03918328E4D27EFCBF6C4A0B8 /* JXCategoryBaseCellModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D7A76984F1E3BB7440B31DF8D5447F0 /* JXCategoryBaseCellModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C857B8D2D0BAA5A8A764F9E1C4B85807 /* ViewController+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = DB1B5D6DA097974C176F91F3853055EC /* ViewController+MASAdditions.m */; }; + C8685678D1B020F87365D022216FFE29 /* JXCategoryIndicatorImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = EF2876A2D62001FE741FE92492A10CFF /* JXCategoryIndicatorImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C8771885BEA9EA0BD2E2C474587325E2 /* LKS_ExportManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 207535A186296DE018201ED1B7DDD076 /* LKS_ExportManager.m */; }; + C8EC35DFB0945DBE2F2FF9ECFE6D9711 /* NSLayoutConstraint+MASDebugAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = D8B8A062E76BF87D54F581F6428D4E28 /* NSLayoutConstraint+MASDebugAdditions.m */; }; + C922BFFF717515E5878910DF4078CE1E /* JXCategoryIndicatorDotLineView.m in Sources */ = {isa = PBXBuildFile; fileRef = FD7C0DEE68BC5E8256170F72FCC61847 /* JXCategoryIndicatorDotLineView.m */; }; + C93E972E75F84674690300123984EC43 /* SDAssociatedObject.m in Sources */ = {isa = PBXBuildFile; fileRef = 321334B98147E6E64FCE056E3717FEE0 /* SDAssociatedObject.m */; }; + C992A335399F942237E754EE65C40CA5 /* LookinObject.h in Headers */ = {isa = PBXBuildFile; fileRef = 371A20C759D3E78183B0BC7EA626FA2D /* LookinObject.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C993A4D0CFA51E567F458CA65C1298AA /* MBProgressHUD-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A8AF8342462E3EDE8E3D40F840DFA00C /* MBProgressHUD-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9A72F0A93329C42B77395B0F6CEA26C /* HWPanModalPresentable.h in Headers */ = {isa = PBXBuildFile; fileRef = 3A10B1AFB4B6959F4A11AB1B1BC4A437 /* HWPanModalPresentable.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9B63C6ED2ED691EA83D3EE65939444B /* Lookin_PTProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 3E05D85B85A84A7D628539AD042EC841 /* Lookin_PTProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C9E19D164C26414115CC969ED9A303C1 /* MASLayoutConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 7DEDD90DB6CF7DD05B6B753765E65AAD /* MASLayoutConstraint.m */; }; + C9E8C9372C2DA29D302B058BE3AE9877 /* CALayer+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 77DEC7B6CE458C6AAB89A25A3E05BA4B /* CALayer+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA1E0DCDF679EA2DE2ED0915426E1D04 /* SDWeakProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 98901829A364C7B4F13375AEB6AA0FBE /* SDWeakProxy.m */; }; + CA543D086B4C8E314FB43F0B78147FE9 /* LSTTimer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 88F65BAED091224357C1ABFEA1C484FA /* LSTTimer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA56274BE7CBB3E759E0364785DF9799 /* Lookin_PTChannel.h in Headers */ = {isa = PBXBuildFile; fileRef = 07C3DB4C7661755654D296A929BE2CE7 /* Lookin_PTChannel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CA9AFE3460622CC65F75A2DDE845F6E9 /* JXPagerSmoothView.h in Headers */ = {isa = PBXBuildFile; fileRef = 7B167FA26CB7B8DC98E1A68B1B44BA8A /* JXPagerSmoothView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CE2AF36EBB17CDA2652CBADD4A7ABF82 /* JXCategoryImageCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 570A4EA50A989D93BDAC90837E4F3637 /* JXCategoryImageCellModel.m */; }; + CE86196C00DC1D658B6CB7D47A0233AA /* LKS_ConnectionManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 769C3408F11A51A90B589A6DBB334C55 /* LKS_ConnectionManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CEC9EF043F69710AC29940EB4E1E2B19 /* RTLManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 22A80188C121A76950A88A3321260BFD /* RTLManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CF7005F2C42AC2E2DD6D437D52C7048B /* HWPresentingVCAnimatedTransitioning.h in Headers */ = {isa = PBXBuildFile; fileRef = E4F1989DBFF7A3D94A0CF758DF35B3F6 /* HWPresentingVCAnimatedTransitioning.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CFF8D1A5E4C2097EF05E1021FE112886 /* SDWebImageIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = A56060BC793E00F370FD0DF3B4157376 /* SDWebImageIndicator.m */; }; + D06BB547D59D183FD1DDD84DEBAC9EE8 /* SDWebImageCacheSerializer.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D6771046C7CF97C82B7D303F2AFD49E /* SDWebImageCacheSerializer.m */; }; + D08901EA319887BE6D694F8333BE8D1F /* JXCategoryIndicatorTriangleView.m in Sources */ = {isa = PBXBuildFile; fileRef = C31C4A7197700436AFBAB631C088A6AE /* JXCategoryIndicatorTriangleView.m */; }; + D091F05269EE0566B665B00C7D912F8E /* Lookin_PTChannel.m in Sources */ = {isa = PBXBuildFile; fileRef = 862D8BDF52FBE8FCF3A562F5A62C802E /* Lookin_PTChannel.m */; }; + D0E37358C3DCF2A8A572C4F38BB0569B /* JXCategoryListContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = C63CFE9D73B31D9EBEF51E32F9AC7286 /* JXCategoryListContainerView.m */; }; + D121163078CA9BBE54A83BD73EF784CF /* LSTPopViewProtocol.h in Headers */ = {isa = PBXBuildFile; fileRef = 7D7595F0F8BE4F40C64D68F0D491C6C6 /* LSTPopViewProtocol.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D1230E19DD1507E6370B80DF6653AC2A /* NSArray+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = 4AAF4EE016C54A7F264F9B8FBB0853C8 /* NSArray+Lookin.m */; }; + D2AF9A7FD73B95960FDA4FD06C4BED08 /* NSObject+MJKeyValue.h in Headers */ = {isa = PBXBuildFile; fileRef = 1B41D364B66F85CF33EB15116929CF48 /* NSObject+MJKeyValue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D2CD8848F856EC9942A76610AAE66F0A /* SDImageIOCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = E4718E4C19C181FBAEBD080580F8C026 /* SDImageIOCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D31558927DE3F62D1BB1FC416E6F237D /* JXCategoryDotCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3AF0216318F4C1EBD4207012E5E70EB1 /* JXCategoryDotCellModel.m */; }; + D3615499AFE4D2A8EC2E773F4D8A82B2 /* KeyValueObserver.h in Headers */ = {isa = PBXBuildFile; fileRef = 05D708E8F9065868500ABC98E789B739 /* KeyValueObserver.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D380F9C945002DBF2E7D64983ABDC890 /* JXPagerListContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 57460121EED43E41D624C46A92FE9E08 /* JXPagerListContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D559CC4D0695CEE05F3B4C1C06475044 /* UIImageView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 310DC522C0637DDB20D8D38412CB4153 /* UIImageView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D5C046C46961BE465293625D6B870620 /* AFNetworking-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 18106F0763EC023048DB3F77457B9596 /* AFNetworking-dummy.m */; }; + D62A672EEB252581BD972DDA862BE1DD /* SDWebImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = FB84DF0F5016EBAF04FE5FE9F22081C0 /* SDWebImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D662C83ECE8BEDA5FFB52F3575CA3E1A /* SDImageCache.h in Headers */ = {isa = PBXBuildFile; fileRef = DEEA81C89F22AF300ABFA4E5550B7B06 /* SDImageCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; D663837F4347AF58660EE6F7FD426ECE /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - D737D93725B0E072027AB6DA9C4DDDEC /* HWPanModalAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 42F934D080B2CC7F2CD859E2B472A585 /* HWPanModalAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D788BA4B9E8186271BA75CA52B30502C /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 903038F34EE93C82A3EF6A1F6BDF857B /* View+MASAdditions.m */; }; - D7B3E8948DB04BD8FB6748419DA03EA9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = 13D84A2503CDD440D0A0063FF97A2EB4 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D89C7D5455E3E8E2D7EC6B880253BD9B /* LookinIvarTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 89DA873F803BF9043720F615E8BC4CD5 /* LookinIvarTrace.m */; }; - D90607B4E56247B19B14462E487BA86E /* MJRefreshNormalTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = DD3BFE6DB15E8FF64920F720EA31EEDE /* MJRefreshNormalTrailer.m */; }; - D90DED0F5638B1C44F4B6C62D600D240 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = D40BB639047461966566FFED666B3ACF /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D90DF1376DF5E2EA644313BCD2E03058 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 43F4AA149B8B7307ED5DA363EBC93DBF /* MJRefresh.bundle */; }; - D93EA925FC24665584B3653514A56706 /* JXCategoryIndicatorImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = A2C056F5D1231FA94F92AA3712D545C2 /* JXCategoryIndicatorImageView.m */; }; + D737D93725B0E072027AB6DA9C4DDDEC /* HWPanModalAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = CF7B4B9CB0EF762A12884D6FE337E068 /* HWPanModalAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D788BA4B9E8186271BA75CA52B30502C /* View+MASAdditions.m in Sources */ = {isa = PBXBuildFile; fileRef = 1069EA3A85D1A1A87FE087B0FE402436 /* View+MASAdditions.m */; }; + D7B3E8948DB04BD8FB6748419DA03EA9 /* SDAnimatedImageView+WebCache.h in Headers */ = {isa = PBXBuildFile; fileRef = B705DD8FCD54B3AFD61B70C82828ACE4 /* SDAnimatedImageView+WebCache.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D89C7D5455E3E8E2D7EC6B880253BD9B /* LookinIvarTrace.m in Sources */ = {isa = PBXBuildFile; fileRef = 6148399DD529311A930CEF2A2AC2FBD4 /* LookinIvarTrace.m */; }; + D90607B4E56247B19B14462E487BA86E /* MJRefreshNormalTrailer.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DE6908A836615F946533A6FEE623373 /* MJRefreshNormalTrailer.m */; }; + D90DED0F5638B1C44F4B6C62D600D240 /* MJRefreshFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 800ECE845D6F36BE51A284DFCAE27307 /* MJRefreshFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D90DF1376DF5E2EA644313BCD2E03058 /* MJRefresh.bundle in Resources */ = {isa = PBXBuildFile; fileRef = 083F5143D12F213638EF9FE439F1CEFA /* MJRefresh.bundle */; }; + D93EA925FC24665584B3653514A56706 /* JXCategoryIndicatorImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = B3443BE7FBE80A857A146093C743D9BF /* JXCategoryIndicatorImageView.m */; }; D968461E31E8FF3FF6BA1DC621B0433B /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* UIKit.framework */; }; - DBA9500CBBA5FF6FCBBA115AE4D12152 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = A75069F0A291D74DCBF8F50AA213D806 /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBA9500CBBA5FF6FCBBA115AE4D12152 /* NSLayoutConstraint+MASDebugAdditions.h in Headers */ = {isa = PBXBuildFile; fileRef = BE9E061AE26F933A7BBEFF3D94E9B32D /* NSLayoutConstraint+MASDebugAdditions.h */; settings = {ATTRIBUTES = (Public, ); }; }; DBB7D12AC159E50D059772E4B6CF1D2F /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - DBD9152526A180771BF7D7CD209B957E /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 2AD36233DB657DAA0ACBB8EEEAEB38EA /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DCCBFE0D3914D33369C19AC135AB54AA /* HWBackgroundConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = ACC63F439241C64C221C18A8991C569B /* HWBackgroundConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DD7F63D4E4640C7386877BB787740272 /* LookinServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = A98C5DE93CCDA0FE6E6A916B05B69DCC /* LookinServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDA16FB9C21AD941442357DAE6939530 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 4AD6EDFD2A6C9CC51CFC6A4BAA9C72A9 /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DDB268F1408C6AA5860C768310E9B9D6 /* LSTPopView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = DBE3855004E17CACAC82F75DF8EFEBD4 /* LSTPopView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DE5A78F116018E2AC54714238276574D /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = FE8EB43019635F8DC34B96037E258505 /* UIActivityIndicatorView+AFNetworking.m */; }; - DE98ECCCA7106A4EA575EF34830D41FF /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = D58A6363674921528AA6EC052D65C890 /* MJRefresh-dummy.m */; }; - DEA09692CF813A23899CD4949A9B6801 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 807026E96F55910EB566C0F4535DF3EB /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DED9ADFC8CC65243FC54E008A853742C /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = C8B51A0410EE632DF42E1C298E25B221 /* MJPropertyKey.m */; }; - DF2B15402CE105F5A8CE48BBDCFFD5DD /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A94C1FE25186BE811E6EC878BFA019B /* MASConstraint.m */; }; - DF525E5405FAD3B98B0C2D966EB2DD95 /* UIViewController+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 920CD059C1364A6BD18420074E635F40 /* UIViewController+LookinServer.m */; }; - E038F02D08E33A673A360ED34648A027 /* JXCategoryDotCell.m in Sources */ = {isa = PBXBuildFile; fileRef = BEB32B7BEE20F8A74F80D03511F02260 /* JXCategoryDotCell.m */; }; - E0B48B9D5D45AF3500FC718459D66E6C /* LookinDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = AFC299E1B60C8759EA1F35B7A91019A4 /* LookinDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E0BCF21E9FA59F638C13ECCECC4D9690 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = B7AD3647BEEBE4C691B28F5746D51E7D /* SDMemoryCache.m */; }; - E0DB14976CA6F6E604FD5E4EDF3378E7 /* JXPagerListContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 3BC6BE1672FC4A4AA70F4CBD7E23C808 /* JXPagerListContainerView.m */; }; - E1B4145C5201DB66B65520B36849067C /* HWPanModal-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = EE80578D9DB416BD158323BE4D5C76F4 /* HWPanModal-dummy.m */; }; - E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 3B56A01456E5166288620482B2A2180C /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = 433A3E0D94E768912FBBE36F7C961678 /* UIScrollView+MJExtension.m */; }; - E2DF1B379D9444D40D78320E90B1DC07 /* JXCategoryIndicatorLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = 62CDFF5EFD0FE66B2DEECF2E904EBEC1 /* JXCategoryIndicatorLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = A2309A5B4A1B9C14AF7AEDEC1036F76E /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E42D6EF120A5C17DA2F6FD6473CE7E7A /* JXCategoryTitleVerticalZoomCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 6549E81907E05317DA862F329B2D4DDC /* JXCategoryTitleVerticalZoomCellModel.m */; }; - E4773572BED239AA7D618F1C05BAF51E /* HWPanModalPresentationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 82C5C527FD40FDC2434064E6DE931921 /* HWPanModalPresentationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4B688B8A0D07AFB883A52250CA874A1 /* JXCategoryNumberCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = F15C652E7FDB0BE287A551718B00B6A8 /* JXCategoryNumberCellModel.m */; }; - E4F1B478580D6D7328BC29607BDE46F6 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = C1F534C5FFF39633128C9B99F1BBF1B5 /* UIImage+ExtendedCacheData.m */; }; - E50613C67DD02AF6EA825DA0B31EFFAD /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = 2504FFB7834ECCFC15329B28F3C9A331 /* SDImageGraphics.m */; }; - E516B5B11193439E020DD2A908700B79 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - E52DCE394A6E02B6BA11FA64624F68F3 /* JXCategoryIndicatorParamsModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E5F2B584A65C9246E3E8A7A856FF44D /* JXCategoryIndicatorParamsModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E55B3151D86660E28CEABC3CDE6B1508 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = 5C519E29CD93815AEE0C119E2109F0A2 /* UIButton+AFNetworking.m */; }; - E5B057BC87284367918B2DB9CA084B4E /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D7FC4156E6779F82E6B8036FA7A1307 /* MJRefreshAutoGifFooter.m */; }; - E7520DAA65004368C61453B8A2740295 /* HWPanModalShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 5FD7A1D3C3D9D8E6D3476B7C2093A431 /* HWPanModalShadow.m */; }; - E76969F9B01139118427505B18F9CD21 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 0F050843F5053FDD98D8FE72C1E28A5F /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E77175BDAE33AADF66766B28AA710247 /* JXPagerMainTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8087FD233990CE787D9977700977D0B8 /* JXPagerMainTableView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E7FEAB9F421F7EBAF021F792D8E9C4D6 /* LookinCustomDisplayItemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 8F0F258366D8ED06A7D9EAD3DFCD004E /* LookinCustomDisplayItemInfo.m */; }; - E82964ED7092CDCDAD08BC596A57B43A /* UIImage+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = DB3CBBCBF7B8B49A86FAC8D0A1741C77 /* UIImage+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E8AB529B9E0B4C23921344F6C4ABFEA4 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D7E450C43D308EE4C1B879D0B60A4BF /* SDImageCoder.m */; }; - E930A5612DC6D120BE040AD17C6D1BCD /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = AAF02F3D4DFB903955A463298716DCE2 /* MASViewAttribute.m */; }; - E97B2C62D3EE772504A939BEE7D6B459 /* HWPanModalPresentationAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = 552D2F14AF7B393E80A67680A66A34D4 /* HWPanModalPresentationAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EA82B6D97C9C5D0558047AF552D63203 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B0013F9906622545E27B913F2092F22 /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DBD9152526A180771BF7D7CD209B957E /* AFSecurityPolicy.h in Headers */ = {isa = PBXBuildFile; fileRef = 4C354F545C0CC91C4033DC0D648B3819 /* AFSecurityPolicy.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DCCBFE0D3914D33369C19AC135AB54AA /* HWBackgroundConfig.h in Headers */ = {isa = PBXBuildFile; fileRef = FC8583F4233091326F271A4C13185F5B /* HWBackgroundConfig.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DD7F63D4E4640C7386877BB787740272 /* LookinServer-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 469576EF612EDF18C057B4FB1E423192 /* LookinServer-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDA16FB9C21AD941442357DAE6939530 /* UIKit+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = CBB2B3782C3C4626F075A8900436D09D /* UIKit+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DDB268F1408C6AA5860C768310E9B9D6 /* LSTPopView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = D7C0280DF79D384D6CBED6E080E02BB8 /* LSTPopView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DE5A78F116018E2AC54714238276574D /* UIActivityIndicatorView+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = BF141C03BAA67847DFB6B6DFF0D1CBFC /* UIActivityIndicatorView+AFNetworking.m */; }; + DE98ECCCA7106A4EA575EF34830D41FF /* MJRefresh-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 741E2A603352D4102F1DAFBB68C69122 /* MJRefresh-dummy.m */; }; + DEA09692CF813A23899CD4949A9B6801 /* SDAnimatedImageRep.h in Headers */ = {isa = PBXBuildFile; fileRef = 674659ECD497CB56B02FD385F68621CA /* SDAnimatedImageRep.h */; settings = {ATTRIBUTES = (Public, ); }; }; + DED9ADFC8CC65243FC54E008A853742C /* MJPropertyKey.m in Sources */ = {isa = PBXBuildFile; fileRef = 57A3558C23C0EFA92D7C80FBF8A6332A /* MJPropertyKey.m */; }; + DF2B15402CE105F5A8CE48BBDCFFD5DD /* MASConstraint.m in Sources */ = {isa = PBXBuildFile; fileRef = 23B6D3BC0C4291E4CB154E7F35862BCB /* MASConstraint.m */; }; + DF525E5405FAD3B98B0C2D966EB2DD95 /* UIViewController+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 8A9BFDE06B11541EA7E87336A09C3816 /* UIViewController+LookinServer.m */; }; + E038F02D08E33A673A360ED34648A027 /* JXCategoryDotCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 87D7822F88C7B9608DF7E50878B7970B /* JXCategoryDotCell.m */; }; + E0B48B9D5D45AF3500FC718459D66E6C /* LookinDefines.h in Headers */ = {isa = PBXBuildFile; fileRef = 7DD55E3EFF5073BEBD483D293C40A0D6 /* LookinDefines.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E0BCF21E9FA59F638C13ECCECC4D9690 /* SDMemoryCache.m in Sources */ = {isa = PBXBuildFile; fileRef = C202F1C5D8455CDDCAE965BD7BAAFC3B /* SDMemoryCache.m */; }; + E0DB14976CA6F6E604FD5E4EDF3378E7 /* JXPagerListContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = E0742EB318197474CB672E4520705ACC /* JXPagerListContainerView.m */; }; + E1B4145C5201DB66B65520B36849067C /* HWPanModal-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 0AE235E52EF7BBF7348F9B4CAB71F7D8 /* HWPanModal-dummy.m */; }; + E1BF615DD0422B06C97542F03C879D41 /* AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 860D7179002683A0368E532B751FC40E /* AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E1DE69F6BB6235A6EDB6C99A184BEDB4 /* UIScrollView+MJExtension.m in Sources */ = {isa = PBXBuildFile; fileRef = B8F1319B150BB3DBD94BEB4C80F6F296 /* UIScrollView+MJExtension.m */; }; + E2DF1B379D9444D40D78320E90B1DC07 /* JXCategoryIndicatorLineView.h in Headers */ = {isa = PBXBuildFile; fileRef = A527D460219BC25D3D8E05E8A68C23C9 /* JXCategoryIndicatorLineView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E3FC6BEE41652C0500F57E0CB83B347F /* UIButton+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = D7F6132E07FDE40130D6C51920456A21 /* UIButton+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E42D6EF120A5C17DA2F6FD6473CE7E7A /* JXCategoryTitleVerticalZoomCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 230B07768E56A05E48373DAA2EAC05DE /* JXCategoryTitleVerticalZoomCellModel.m */; }; + E4773572BED239AA7D618F1C05BAF51E /* HWPanModalPresentationDelegate.h in Headers */ = {isa = PBXBuildFile; fileRef = 4EBFFAE4CE0471C78DB70755CFCC7609 /* HWPanModalPresentationDelegate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E4B688B8A0D07AFB883A52250CA874A1 /* JXCategoryNumberCellModel.m in Sources */ = {isa = PBXBuildFile; fileRef = 5633AC0E53EEE3085AFE9CB101E6C0CF /* JXCategoryNumberCellModel.m */; }; + E4F1B478580D6D7328BC29607BDE46F6 /* UIImage+ExtendedCacheData.m in Sources */ = {isa = PBXBuildFile; fileRef = A7A348B5BB8CB7A444F827000C95DAE5 /* UIImage+ExtendedCacheData.m */; }; + E50613C67DD02AF6EA825DA0B31EFFAD /* SDImageGraphics.m in Sources */ = {isa = PBXBuildFile; fileRef = E9FA8ED817E86A0F4415B8E73B62DCF8 /* SDImageGraphics.m */; }; + E52DCE394A6E02B6BA11FA64624F68F3 /* JXCategoryIndicatorParamsModel.h in Headers */ = {isa = PBXBuildFile; fileRef = 30E03A823CD994C7C3DEA8D91B90C5DE /* JXCategoryIndicatorParamsModel.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E55B3151D86660E28CEABC3CDE6B1508 /* UIButton+AFNetworking.m in Sources */ = {isa = PBXBuildFile; fileRef = BF0EE7E880EA65C279154531EF91F5E8 /* UIButton+AFNetworking.m */; }; + E5B057BC87284367918B2DB9CA084B4E /* MJRefreshAutoGifFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = BC7F3F9323470C634DC0D469E7C13B10 /* MJRefreshAutoGifFooter.m */; }; + E7520DAA65004368C61453B8A2740295 /* HWPanModalShadow.m in Sources */ = {isa = PBXBuildFile; fileRef = 513C1A2EE22268DD51EB02AE24E3B579 /* HWPanModalShadow.m */; }; + E76969F9B01139118427505B18F9CD21 /* SDImageHEICCoder.h in Headers */ = {isa = PBXBuildFile; fileRef = 55488AFE93BF97340EF80D0D6C1E2CA0 /* SDImageHEICCoder.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E77175BDAE33AADF66766B28AA710247 /* JXPagerMainTableView.h in Headers */ = {isa = PBXBuildFile; fileRef = D564B14F434E85E8016FF192E33548A8 /* JXPagerMainTableView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E7FEAB9F421F7EBAF021F792D8E9C4D6 /* LookinCustomDisplayItemInfo.m in Sources */ = {isa = PBXBuildFile; fileRef = 44B0B0F109E74E6F92B6497967BCE536 /* LookinCustomDisplayItemInfo.m */; }; + E82964ED7092CDCDAD08BC596A57B43A /* UIImage+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 60195DBDE404C5ECBC4E710D0F5E50E7 /* UIImage+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E8AB529B9E0B4C23921344F6C4ABFEA4 /* SDImageCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 2E79D80C613F4B57826DA627018BB1C5 /* SDImageCoder.m */; }; + E930A5612DC6D120BE040AD17C6D1BCD /* MASViewAttribute.m in Sources */ = {isa = PBXBuildFile; fileRef = B9CA9F01554205BFBACCA553143C8676 /* MASViewAttribute.m */; }; + E97B2C62D3EE772504A939BEE7D6B459 /* HWPanModalPresentationAnimator.h in Headers */ = {isa = PBXBuildFile; fileRef = DB48FEC8123075E04395CF34F6F8227D /* HWPanModalPresentationAnimator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EA82B6D97C9C5D0558047AF552D63203 /* SDWebImageDefine.h in Headers */ = {isa = PBXBuildFile; fileRef = 3313EDBDBF7A4CA0DC32526D9ED0B496 /* SDWebImageDefine.h */; settings = {ATTRIBUTES = (Public, ); }; }; EABCB60A26B06BF576E50BBD2F89A385 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - EB3DF628891F7D6AB114718AF760CB2A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = 8E1682EACA92F366216BAB7320C375AA /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EB646114ABEA7A4D6C2A724404778670 /* LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = 2E80EA469F2079302F38A991886C4B5A /* LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC078D5CD76868BDE0F67BBEAFFEA217 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 1C37C8F103EDECD09126133069B80115 /* PrivacyInfo.xcprivacy */; }; - EC8E84A8FFADDCA562A8608D141D9027 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 3FAF0BE8296496D28F5C6AA6974B39E8 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC9B34262AED632D7EFB49804337648E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 56642F6C221107F2F8D033758EEB482A /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EC9B8D81AEAF11E16149869246F7D4C1 /* JXCategoryFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9E9F380E4292210FA99A8F5918C667C3 /* JXCategoryFactory.m */; }; - ECC6BC85943DB873215826A344A462FD /* JXCategoryIndicatorBallView.h in Headers */ = {isa = PBXBuildFile; fileRef = 8A0C74EF09B54680C98CCBF1F2BD297A /* JXCategoryIndicatorBallView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ECE64B732F9FA7C402DDEEC58DCB9D98 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 92B0AD9AA2CE09EEB0EF8C040E103B97 /* SDImageAPNGCoder.m */; }; - ED8991A8AE7C04362C2BED3875DC1656 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 9F3CA71777F849F0196634A7AB215BDC /* AFURLResponseSerialization.m */; }; - ED8F64FF98CFAE0B12CF60A1B0E6BAF8 /* SDCallbackQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 491DFACE04BF80FD0F37C4ECFE908522 /* SDCallbackQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EDB9E11998290348E4DFB5140D678942 /* HWPanContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = DAB0E506E749384DE93170FA1EE1FD3B /* HWPanContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EE101918DFCDC1D6728BF910DB5AF29A /* JXPagerView.m in Sources */ = {isa = PBXBuildFile; fileRef = D31BFB25B2F3620735E09AC6DE1CBFE3 /* JXPagerView.m */; }; - EE6E8FE636D2C02E3D2FC1E8555B4612 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = 367DF77D41DE010B9FA86137928C7C44 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EED016DE8173CD38CC01D88CD2628984 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = EE1A5661BE1EACFB3D2C7F19D51BF011 /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EEF0BF7E53148EB20BED242061BDC5ED /* JXCategoryTitleVerticalZoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7B4337532A4911F88E85BB14DE78FBB7 /* JXCategoryTitleVerticalZoomView.m */; }; - EF6A6C725598F572A70C5FCEE328C184 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 61080F57DD92AB8ABC811791B547090C /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB3DF628891F7D6AB114718AF760CB2A /* UIImageView+AFNetworking.h in Headers */ = {isa = PBXBuildFile; fileRef = ED332DDCE634104C42A2AF8F698EDFB2 /* UIImageView+AFNetworking.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EB646114ABEA7A4D6C2A724404778670 /* LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = E23048DA7D038B179D12173BA0F800DB /* LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC6671997676ABEBC34F2BE6C01266B1 /* LSTTimer.h in Headers */ = {isa = PBXBuildFile; fileRef = 68AAA13D71385283DB69A35327BC2F47 /* LSTTimer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC8E84A8FFADDCA562A8608D141D9027 /* MJRefreshAutoGifFooter.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CE9A594E8A127B7273A7D82E1882497 /* MJRefreshAutoGifFooter.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC9B34262AED632D7EFB49804337648E /* Masonry.h in Headers */ = {isa = PBXBuildFile; fileRef = 1E2CD23DF8D29ECCE7278412B1BFFFA2 /* Masonry.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EC9B8D81AEAF11E16149869246F7D4C1 /* JXCategoryFactory.m in Sources */ = {isa = PBXBuildFile; fileRef = B82D0099E75E96FE5ACCF5B647388551 /* JXCategoryFactory.m */; }; + ECC6BC85943DB873215826A344A462FD /* JXCategoryIndicatorBallView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2A4AC508097EE18B75D5D75FDA7CF5C1 /* JXCategoryIndicatorBallView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + ECE64B732F9FA7C402DDEEC58DCB9D98 /* SDImageAPNGCoder.m in Sources */ = {isa = PBXBuildFile; fileRef = 07274C755D75F4A07C925D1DDE5FA529 /* SDImageAPNGCoder.m */; }; + ED8991A8AE7C04362C2BED3875DC1656 /* AFURLResponseSerialization.m in Sources */ = {isa = PBXBuildFile; fileRef = 1DD3D7BBD826081D1399FCDA65D59838 /* AFURLResponseSerialization.m */; }; + ED8F64FF98CFAE0B12CF60A1B0E6BAF8 /* SDCallbackQueue.h in Headers */ = {isa = PBXBuildFile; fileRef = 402736588AC9D07AA589F2943BAE3C89 /* SDCallbackQueue.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EDB9E11998290348E4DFB5140D678942 /* HWPanContainerView.h in Headers */ = {isa = PBXBuildFile; fileRef = 94CE97E5A9659D6EE58C83DCB52F73D5 /* HWPanContainerView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EE101918DFCDC1D6728BF910DB5AF29A /* JXPagerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 044A47D1E36901CA79D51CC72EA995C9 /* JXPagerView.m */; }; + EE6E8FE636D2C02E3D2FC1E8555B4612 /* MJRefreshNormalHeader.h in Headers */ = {isa = PBXBuildFile; fileRef = D411D25D78A2F9E3CF17B20443ED9F40 /* MJRefreshNormalHeader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EED016DE8173CD38CC01D88CD2628984 /* NSString+MJExtension.h in Headers */ = {isa = PBXBuildFile; fileRef = 12702606A08588ACD81E031A777BAB70 /* NSString+MJExtension.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EEF0BF7E53148EB20BED242061BDC5ED /* JXCategoryTitleVerticalZoomView.m in Sources */ = {isa = PBXBuildFile; fileRef = 43BA7B9A75BE654B8242649314595C2D /* JXCategoryTitleVerticalZoomView.m */; }; + EF51279C724969A99FF5EF85F832FC00 /* LYEmptyView.h in Headers */ = {isa = PBXBuildFile; fileRef = 374CEB5E4CAC5B1889E4B3A57B47546E /* LYEmptyView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EF6A6C725598F572A70C5FCEE328C184 /* SDImageTransformer.h in Headers */ = {isa = PBXBuildFile; fileRef = 6EAD8B1C822E0F2BAB884329D798190B /* SDImageTransformer.h */; settings = {ATTRIBUTES = (Public, ); }; }; F1A04C26FAF235FD6B0AF30E7ACD5DD5 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 9D41AAC213895165C450F5576DE42CB2 /* Foundation.framework */; }; - F1ABB5428A1CCF2EAC42A4C3B388F25D /* JXCategoryIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 658F3554D0CFB5BC5E252408F8CD5317 /* JXCategoryIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F1D845E22D5B8FC6AFC3C2E41DA1B6DF /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 60461DAD42E3B1F75AD82553A6C40C64 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2AD91050B1FE3C8BC78567F1FDE3ED5 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = BBB6E7BC9BF649910D7654B98B396BD4 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F2C9F9038FBEFD951516694AE873A2B9 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = A98C848E174628ED3A950CA220B4CB9A /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F3263D294D688533EB974E37C61F1E24 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 47A777C7602E23E11AE500103D52A253 /* MJExtensionConst.m */; }; - F3AECEF6D3BB919B3E7392942E1BC58B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = 0A5E3A2C0C49EB165C854762A832D48A /* MJRefreshBackFooter.m */; }; - F3DA1005917E252B306712DAAA287FB0 /* UIViewController+PanModalDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = 3474F65ACB0FE00EF732580936B91D06 /* UIViewController+PanModalDefault.m */; }; - F3F4A6309BD95DFAA4DCC60A4E07C515 /* UITableView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 95E2C10E638AC6421FE377F88DA72A45 /* UITableView+LookinServer.m */; }; - F43396B5CB23638E5509B3ED61AE6192 /* JXCategoryListContainerRTLCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 6C70C9B1AD0F41A4C5E9026F5AF7F65F /* JXCategoryListContainerRTLCell.m */; }; - F458385338076D8734DD74BE4A94B33F /* UIColor+JXAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = F904F7CF43AB518217FB1AB9236020D4 /* UIColor+JXAdd.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F47EBDD360E642A0499A767BC7C17B4B /* HWPanIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 6EF0D4A56B002AB1528A77EBDA7EC804 /* HWPanIndicatorView.m */; }; - F49CB22863CCFEC7817D259F27F91C57 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = AD28EF542A0B7F210E7C92D1D9DEC003 /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F53BE4449AE5896F76325E4DCB6D0B13 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = D744043462D81E4ED2BB1ECAE8E9F696 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F600BB873FD4764BAA9E02826F804486 /* FLAnimatedImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 87DD67829823038B4E0D04582C0CB95C /* FLAnimatedImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F60F90EAF35CFF40DF1C33557965787D /* MJRefreshStateTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = 846CA0BB8166DB9008D71F59F4A301EA /* MJRefreshStateTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F62B0711DA506CCB3DF79F65134566C7 /* Lookin_PTPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 6DD8CB4B9EF9002F59BC7DE12F17ED7E /* Lookin_PTPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F68889CD481716EE5D6B75EBD8FD53A6 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = C7E392E347A9555F1447E0FBB3E777E5 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A0D6EA1B5DC3FE04DC4A1B0A914121 /* UIView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = DC82DAFD220FAA7899CE21078C2C649D /* UIView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F6A2DEEA8E8B92D365AFDDBD5E8C1218 /* NSObject+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = D52171C8DB630868289299203B4ECD0C /* NSObject+Lookin.m */; }; - F6A34F74BE7FE816114D7F3902296AF2 /* HWVisualEffectView.m in Sources */ = {isa = PBXBuildFile; fileRef = DACDF6DBB7030D05CC43C7DB516265EE /* HWVisualEffectView.m */; }; - F6D1C960368EB1E067ABD0BFF707FC56 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = CDE98EE96840F02E6074E842D456A2E3 /* MASConstraintMaker.m */; }; - F7623E7C314AA5010D8D0BD6ED4AAAD4 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 25A773C46121E6091EEB9AC88DC4E2A2 /* AFImageDownloader.m */; }; - F847E3C26E5AC43CD73364AD3DF49AFE /* JXCategoryImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = B7498A05A9D7A9FEE19E027CABE6B9DD /* JXCategoryImageCell.m */; }; - F8616FAFEE1124368CB96473CE20CDB4 /* LookinAttrIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = 41EF7420DD5FC6E4D1134632895868F3 /* LookinAttrIdentifiers.m */; }; - F8F1B1196CAA5114BA9A95AA7E6D6AEB /* UIBlurEffect+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = 98EB3787337AAE5AD71D422A832D852F /* UIBlurEffect+LookinServer.m */; }; - F9789D86D3279D71B398B550F27C3EFF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 2458E327D6233EBA29A07B3E63113146 /* AFSecurityPolicy.m */; }; - FA3021DED76B9B182CC9195A60EB1209 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = C5A25B7B454717DB3993591B5E8B612E /* NSBezierPath+SDRoundedCorners.m */; }; - FA6DA93357E2E9E9AADDFB3E39DEB6C2 /* NSObject+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = C5719A8B6A945982F0856B5A616B379E /* NSObject+LookinServer.m */; }; + F1ABB5428A1CCF2EAC42A4C3B388F25D /* JXCategoryIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 2DFC8007FA865661CA9E295ADD1014BA /* JXCategoryIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F1D845E22D5B8FC6AFC3C2E41DA1B6DF /* AFNetworkReachabilityManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C0082C9FF6875DA300AE3D8453DCB62 /* AFNetworkReachabilityManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2892F71762EC5410EE733B862712BB3 /* LYEmptyView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = C00601FB0A8CFBE203150BAEC58E95FC /* LYEmptyView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2AD91050B1FE3C8BC78567F1FDE3ED5 /* AFURLResponseSerialization.h in Headers */ = {isa = PBXBuildFile; fileRef = B5A6B26A93BDE64568CF7AF44D709974 /* AFURLResponseSerialization.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F2C9F9038FBEFD951516694AE873A2B9 /* MBProgressHUD.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DC759BB8D0141E0F064F3BCA7197315 /* MBProgressHUD.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F3263D294D688533EB974E37C61F1E24 /* MJExtensionConst.m in Sources */ = {isa = PBXBuildFile; fileRef = 2D0DE149DDBAC4B5DCFA0C2217970015 /* MJExtensionConst.m */; }; + F3AECEF6D3BB919B3E7392942E1BC58B /* MJRefreshBackFooter.m in Sources */ = {isa = PBXBuildFile; fileRef = A7EA79586CBF531A23E8B00CFA7B82C7 /* MJRefreshBackFooter.m */; }; + F3DA1005917E252B306712DAAA287FB0 /* UIViewController+PanModalDefault.m in Sources */ = {isa = PBXBuildFile; fileRef = B95FDE5F86C6AC76E24A82E181084256 /* UIViewController+PanModalDefault.m */; }; + F3F4A6309BD95DFAA4DCC60A4E07C515 /* UITableView+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = B77422F87DF00923771B3EF8E6C0A9BF /* UITableView+LookinServer.m */; }; + F43396B5CB23638E5509B3ED61AE6192 /* JXCategoryListContainerRTLCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 96D1E2DE4F6F4EB00BD41C7ABD504109 /* JXCategoryListContainerRTLCell.m */; }; + F458385338076D8734DD74BE4A94B33F /* UIColor+JXAdd.h in Headers */ = {isa = PBXBuildFile; fileRef = 3D72A1C48CB238B4D5F50BA925DEDEAE /* UIColor+JXAdd.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F47EBDD360E642A0499A767BC7C17B4B /* HWPanIndicatorView.m in Sources */ = {isa = PBXBuildFile; fileRef = 77E6EFEE426EA2068D5FE2B73740D659 /* HWPanIndicatorView.m */; }; + F49CB22863CCFEC7817D259F27F91C57 /* SDWebImageIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = E0DD4370E4AF2D75716AE1B5D67EABEB /* SDWebImageIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F53BE4449AE5896F76325E4DCB6D0B13 /* SDImageCachesManager.h in Headers */ = {isa = PBXBuildFile; fileRef = 839CCD719F79C7FBC2909C72822FB470 /* SDImageCachesManager.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F600BB873FD4764BAA9E02826F804486 /* FLAnimatedImage-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 7FAB126742756E8C628ED27AEC1B9567 /* FLAnimatedImage-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F60F90EAF35CFF40DF1C33557965787D /* MJRefreshStateTrailer.h in Headers */ = {isa = PBXBuildFile; fileRef = AB1D54171867DC3B104DAE8C6D30F644 /* MJRefreshStateTrailer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F62B0711DA506CCB3DF79F65134566C7 /* Lookin_PTPrivate.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B523AAA92DB90BD5B95092AF6B85BFB /* Lookin_PTPrivate.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F68889CD481716EE5D6B75EBD8FD53A6 /* SDImageCoderHelper.h in Headers */ = {isa = PBXBuildFile; fileRef = A3E40CB9D351DF0E70C7A452071E82E1 /* SDImageCoderHelper.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A0D6EA1B5DC3FE04DC4A1B0A914121 /* UIView+LookinServer.h in Headers */ = {isa = PBXBuildFile; fileRef = DC7496C927F9E881D19A203C207B5417 /* UIView+LookinServer.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F6A2DEEA8E8B92D365AFDDBD5E8C1218 /* NSObject+Lookin.m in Sources */ = {isa = PBXBuildFile; fileRef = B6575913AB2C7FDA723D279165349FF6 /* NSObject+Lookin.m */; }; + F6A34F74BE7FE816114D7F3902296AF2 /* HWVisualEffectView.m in Sources */ = {isa = PBXBuildFile; fileRef = F5D8EBF4698D8B331794EA6F9BF47665 /* HWVisualEffectView.m */; }; + F6D1C960368EB1E067ABD0BFF707FC56 /* MASConstraintMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 673C80521DE4F20FDE3E9A82E6EBEC53 /* MASConstraintMaker.m */; }; + F7623E7C314AA5010D8D0BD6ED4AAAD4 /* AFImageDownloader.m in Sources */ = {isa = PBXBuildFile; fileRef = 41B61F60FDADCD1988F2A5F1B93F6FB0 /* AFImageDownloader.m */; }; + F847E3C26E5AC43CD73364AD3DF49AFE /* JXCategoryImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 8067C53E08CA3787D9D5C3551F86EF9D /* JXCategoryImageCell.m */; }; + F8616FAFEE1124368CB96473CE20CDB4 /* LookinAttrIdentifiers.m in Sources */ = {isa = PBXBuildFile; fileRef = 9D4F497397BEDE35BC05F6C2B6D33577 /* LookinAttrIdentifiers.m */; }; + F8F1B1196CAA5114BA9A95AA7E6D6AEB /* UIBlurEffect+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = B041D1C998D0894DB89A31049CC1B872 /* UIBlurEffect+LookinServer.m */; }; + F9789D86D3279D71B398B550F27C3EFF /* AFSecurityPolicy.m in Sources */ = {isa = PBXBuildFile; fileRef = 4883D2BC668CDDE38C319AC414885077 /* AFSecurityPolicy.m */; }; + FA3021DED76B9B182CC9195A60EB1209 /* NSBezierPath+SDRoundedCorners.m in Sources */ = {isa = PBXBuildFile; fileRef = 34F0487226F5EBEBA3C6D3E1743C5260 /* NSBezierPath+SDRoundedCorners.m */; }; + FA6DA93357E2E9E9AADDFB3E39DEB6C2 /* NSObject+LookinServer.m in Sources */ = {isa = PBXBuildFile; fileRef = A566FD7AC8F85BE1E72F6DF11FEA6338 /* NSObject+LookinServer.m */; }; FB6E014B34F33B89E5060DA1F00168A5 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */; }; - FC32143CA2A916F032F2B569313315AA /* HWPanContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 2310AA8AAF9A85F5E639409B8AF0F292 /* HWPanContainerView.m */; }; - FCDEC6A53CF5517E1AF5B331FD65F6D9 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = AEB0E8A16F89DAA71F5718EDBF3E2A83 /* SDImageCacheConfig.m */; }; - FCEE5BD645E95FF55468C4AB6D17CFDA /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = 88D5019FBBC4DC80F31FB68B1820A427 /* UIImageView+HighlightedWebCache.m */; }; - FD3AF10F8723DABEE406D25592B5F562 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = B4121F7B04BCCD0FB01ED16A27F6E571 /* FLAnimatedImageView.m */; }; - FDACBA49610EA6F39CABB7FE44B137D1 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = FA94CFBBBF3DC429BAF55FD9493336B4 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FC32143CA2A916F032F2B569313315AA /* HWPanContainerView.m in Sources */ = {isa = PBXBuildFile; fileRef = 453FB14441528B4AE2CF3592D5874C54 /* HWPanContainerView.m */; }; + FCDEC6A53CF5517E1AF5B331FD65F6D9 /* SDImageCacheConfig.m in Sources */ = {isa = PBXBuildFile; fileRef = C3D9450A4AAE9542E6A1A0473B7DF812 /* SDImageCacheConfig.m */; }; + FCEE5BD645E95FF55468C4AB6D17CFDA /* UIImageView+HighlightedWebCache.m in Sources */ = {isa = PBXBuildFile; fileRef = F139F3BFF4ABD0678E7947E118F47774 /* UIImageView+HighlightedWebCache.m */; }; + FD3AF10F8723DABEE406D25592B5F562 /* FLAnimatedImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 148EEB030F62D4D33B4C03AE45AD6C08 /* FLAnimatedImageView.m */; }; + FDACBA49610EA6F39CABB7FE44B137D1 /* AFImageDownloader.h in Headers */ = {isa = PBXBuildFile; fileRef = 36CBA5AB35EE7DE7B4A5CDBAC4BE20A8 /* AFImageDownloader.h */; settings = {ATTRIBUTES = (Public, ); }; }; FDD4C4D4F03502D5CB0B8763009A0948 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = BDEE6097B6411333154FEF90A280E3E4 /* QuartzCore.framework */; }; - FE07C069C2E3543002CEB5D751ABA9AC /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 81D1103F43F39D4BF9AE80E76478FA69 /* AFNetworkReachabilityManager.m */; }; - FEA8BA4F82CCBD1D28DCC7EF39FB4096 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = 6DB3789FF1142F1817E52B4F6C9BA1B6 /* SDImageCacheDefine.m */; }; - FEE3D901B4A4638F9E00935144E982B3 /* HWPanModalPresentableHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = B8E404753BE7BE627A458AE982427654 /* HWPanModalPresentableHandler.m */; }; - FEE883575278D5BE8F185437AB5DB3BB /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = A1E84842FBF29954156976CB6DD0F275 /* MJRefreshGifHeader.m */; }; - FF106518AFECA24E74B1D649E4F9AC70 /* HWPanIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4DE32E1B12FEE2A9EAE1F5A67697D6E8 /* HWPanIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - FFC6D50089FA32FD7AAF25747E56EA60 /* LKS_CustomAttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CF7F647B9D3AA2FB234C1CC5BB53582 /* LKS_CustomAttrGroupsMaker.m */; }; + FE07C069C2E3543002CEB5D751ABA9AC /* AFNetworkReachabilityManager.m in Sources */ = {isa = PBXBuildFile; fileRef = C75FCCDECEB6A92A56B67E27033473B6 /* AFNetworkReachabilityManager.m */; }; + FEA8BA4F82CCBD1D28DCC7EF39FB4096 /* SDImageCacheDefine.m in Sources */ = {isa = PBXBuildFile; fileRef = C74EA9D59FFCBE16D0C0E5B7B2D53516 /* SDImageCacheDefine.m */; }; + FEE3D901B4A4638F9E00935144E982B3 /* HWPanModalPresentableHandler.m in Sources */ = {isa = PBXBuildFile; fileRef = 0FC2E352D2D0DD942A9B4488E3654AB0 /* HWPanModalPresentableHandler.m */; }; + FEE883575278D5BE8F185437AB5DB3BB /* MJRefreshGifHeader.m in Sources */ = {isa = PBXBuildFile; fileRef = B6242B29A00A9DBC6FF1CD09266BBF54 /* MJRefreshGifHeader.m */; }; + FF106518AFECA24E74B1D649E4F9AC70 /* HWPanIndicatorView.h in Headers */ = {isa = PBXBuildFile; fileRef = 4A15AB0AB6FCF1589E2A6CEDC3CF0B95 /* HWPanIndicatorView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + FFC6D50089FA32FD7AAF25747E56EA60 /* LKS_CustomAttrGroupsMaker.m in Sources */ = {isa = PBXBuildFile; fileRef = AB2B98D8DC3605842D8528F53C1896A2 /* LKS_CustomAttrGroupsMaker.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0A1A465C500FD28324C60FF2111766F1 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8B7D23DD98E41BAE91418E9E85F191D6; - remoteInfo = LSTPopView; - }; - 0CEF032AE3DE8459AABC366D5EAD57AC /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; - remoteInfo = LSTTimer; - }; - 2635D33260052793F7319FAC3997C416 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; - remoteInfo = LSTTimer; - }; - 36EAD987437C03F015C383238BF3C1B7 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; - remoteInfo = DZNEmptyDataSet; - }; - 398B300FAF20E4012B54089285C6D68D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; - remoteInfo = AFNetworking; - }; - 39F2619DE86130266FA45394FE5C260D /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; - }; - 4262F1710F9698DFC113026BA2E31021 /* PBXContainerItemProxy */ = { + 02FAAF39D5DC83544D9E66B036B176EA /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4A68CFD979D413A619DF631BB121D98F; remoteInfo = Bugly; }; - 4E0DD9B103CA9ED24B513A6147DEDB93 /* PBXContainerItemProxy */ = { + 080FDB8CF401316D3CCD779F38297489 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; - remoteInfo = MJExtension; + remoteGlobalIDString = 4AA4C7BB776C55F3421BA137B643DD64; + remoteInfo = LYEmptyView; }; - 648F8AAC5DF3351FEF10F1C29B3E11DF /* PBXContainerItemProxy */ = { + 0AC2AD8EAFB742F27A3D34C64E40AFC6 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 8BEAFAA726C1965864B79B4B441AA513; remoteInfo = JXCategoryView; }; - 686994C0035F8FADAF6A6C4E910239B2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; - remoteInfo = MBProgressHUD; - }; - 6DB0C5460735B353E7FB2A7058DEB8F3 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C4E1020AF425614337737213AA26DBD5; - remoteInfo = JXPagingView; - }; - 6FA747ECA11691BE7229C287223E399A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; - remoteInfo = DZNEmptyDataSet; - }; - 79523FDE8CA807F68BC7DF678B3199B5 /* PBXContainerItemProxy */ = { + 492374464B2EEB82B866DBC203FB6CF9 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; remoteInfo = MJExtension; }; - 7B014B80CCB8DDBC4906B5D8D3002093 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = E79E29F55A2453370D27112480FCF6A2; - remoteInfo = "JXCategoryView-JXCategoryView"; - }; - 803F302DC5C2EA85B4CBBDCD27A43286 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; - remoteInfo = SDWebImage; - }; - 9E88A4DD9EF59B6718F28ECC701DF551 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; - remoteInfo = MJRefresh; - }; - AE8D5D579627FAFF8F43B7CEFE066FF2 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; - remoteInfo = LookinServer; - }; - B296FC77430103DDB971813228C8D4EF /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 94CFBA7D633ECA58DF85C327B035E6A3; - remoteInfo = "SDWebImage-SDWebImage"; - }; - C279C7A3A264FD3391C8C73B80D3A426 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B26054DF1DEA11585A231AF6D1D80D5E; - remoteInfo = "MJRefresh-MJRefresh.Privacy"; - }; - C389A17163C51915594BC17BC8BF9DE0 /* PBXContainerItemProxy */ = { + 4B52CF33FA25735578A3E44A4CD0C61E /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 16704C6B67439DA959DB043702C75A7A; remoteInfo = "JXPagingView-JXPagerView"; }; - CE0514BD8BDC97E49F2A38CD065EDCFC /* PBXContainerItemProxy */ = { + 4F853CA6F77CC1808AF5BAF0CCAB86C0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 4A8E8992707D01510894596DB9BCCA00; - remoteInfo = FLAnimatedImage; + remoteGlobalIDString = 4D3BA58D0583DF37575CACAB3DDADC85; + remoteInfo = MJExtension; }; - D89A563DA511A2A01EFDD5299EBCEE42 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B32AF3F43989CBA171BB1FB3957A4509; - remoteInfo = "MJExtension-MJExtension"; - }; - DB3A9F97FFF5759DFB4E243D0C12B290 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 31DCABABCA873FBA7A92FEB47D71ED8E; - remoteInfo = HWPanModal; - }; - EF1EC9615D03559D465834BE2D7F527F /* PBXContainerItemProxy */ = { + 586A5F02457EAA9AECE8CFCC7EDC4A36 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; remoteInfo = AFNetworking; }; - F121CDAC85A6DCADB4F82D081323C7C5 /* PBXContainerItemProxy */ = { + 6B502CE29B8265D64E66B68DA64E8BAF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; - remoteInfo = Masonry; + remoteGlobalIDString = 94CFBA7D633ECA58DF85C327B035E6A3; + remoteInfo = "SDWebImage-SDWebImage"; }; - F9F28B72CAD6F7E15F267C3F8D685EA8 /* PBXContainerItemProxy */ = { + 6C0462143C24DADCF6D346CFCCF1F2DF /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; remoteInfo = MBProgressHUD; }; + 6C532ADBCD9DB30208C8082362062867 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 3847153A6E5EEFB86565BA840768F429; + remoteInfo = SDWebImage; + }; + 70663BD3E4659CFF0C7EF0B56DBC9C78 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 82B0A41D3031FF27D78E17B0A9A46FB0; + remoteInfo = MBProgressHUD; + }; + 71C3BF8323A3B89C42C815297FB1B486 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 638FEAAFC575BB76BC6AC055CDDA3506; + remoteInfo = LookinServer; + }; + 9D62F9D7E8B03E6D53909480991C8AEA /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; + remoteInfo = LSTTimer; + }; + A2D6E99D61C37E2D571D73F75FCFE0B4 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B26054DF1DEA11585A231AF6D1D80D5E; + remoteInfo = "MJRefresh-MJRefresh.Privacy"; + }; + A3A1467D883FED3ABCAC49113A737098 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 5A2609DB0612F95A3450D2E02CA850A0; + remoteInfo = LSTTimer; + }; + B0121AEB150BEE5708989CCC69A51E6E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 6868056D761E163D10FDAF8CF1C4D9B8; + remoteInfo = MJRefresh; + }; + BAEC79AAEBBDF2BA3087612B7E05FD8E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = E79E29F55A2453370D27112480FCF6A2; + remoteInfo = "JXCategoryView-JXCategoryView"; + }; + C30FB24BD734A3779E20934DB3D4D9C8 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B32AF3F43989CBA171BB1FB3957A4509; + remoteInfo = "MJExtension-MJExtension"; + }; + C548A30C8E9A6CD52D6655421F9E80B2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 0130B3724283586C0E9D2A112D4F2AA1; + remoteInfo = AFNetworking; + }; + CEFF12BAC2DF7A2FB2A16265805F8779 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = C4E1020AF425614337737213AA26DBD5; + remoteInfo = JXPagingView; + }; + D031B103E98AAB5CEC13491B24F6A82E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; + remoteInfo = DZNEmptyDataSet; + }; + D9630B9E5DE60DCADFA9106CF013D735 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8B7D23DD98E41BAE91418E9E85F191D6; + remoteInfo = LSTPopView; + }; + DB09B1B3C4EF493AB0763F0795077728 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 31DCABABCA873FBA7A92FEB47D71ED8E; + remoteInfo = HWPanModal; + }; + F02666E823668E7F6E705B610204BBE2 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = F1BCD9702276377FB5B3BDB6EAF709D7; + remoteInfo = DZNEmptyDataSet; + }; + F24DDDDEE9FC26F48E2EA84062015B72 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; + }; + F518DC696627DF925BE789501947DBC7 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 55AF53E6C77A10ED4985E04D74A8878E; + remoteInfo = Masonry; + }; + FD339A2CF804D4CD1FADE6633BE4DB45 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 4A8E8992707D01510894596DB9BCCA00; + remoteInfo = FLAnimatedImage; + }; /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 00B67A73E7EE0522188FAE4145324D19 /* JXCategoryTitleCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleCell.h; path = Sources/Title/JXCategoryTitleCell.h; sourceTree = ""; }; - 015571B1499F434BC7171DE7EA094577 /* UILabel+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+LookinServer.h"; path = "Src/Main/Server/Category/UILabel+LookinServer.h"; sourceTree = ""; }; - 017032FDD415E1762246EBCDD2228351 /* HWDimmedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWDimmedView.h; path = Sources/View/HWDimmedView.h; sourceTree = ""; }; - 0210A2376F4634FAF99E871533D6AD1C /* LSTTimer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTTimer.modulemap; sourceTree = ""; }; - 02986FE530B6F5FD0ABF721900839DA5 /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; - 029DB3501B51C5C14FA8EC0A89559639 /* LKS_GestureTargetActionsSearcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_GestureTargetActionsSearcher.h; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.h; sourceTree = ""; }; - 02E945EEF3757BDF2B47E65C51C4D6D6 /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; - 035807D7A9181D8E0DF6FAF1E2D6B33C /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; - 039AC3B9A6AA2BDAB5EB71E7A54C1EF5 /* HWPanModalShadow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalShadow.h; path = Sources/View/HWPanModalShadow.h; sourceTree = ""; }; - 04A50C0A5F4CA1B3AF632BFE12460FC6 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; - 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.release.xcconfig; sourceTree = ""; }; - 04AE87BD26EBAF13B558201544C0E822 /* JXCategoryTitleImageCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageCellModel.m; path = Sources/TitleImage/JXCategoryTitleImageCellModel.m; sourceTree = ""; }; - 057CD48F09C7A5468D77A9691A639803 /* JXCategoryTitleCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleCell.m; path = Sources/Title/JXCategoryTitleCell.m; sourceTree = ""; }; - 059C3C014AA92686FDCE895211A108CE /* JXCategoryTitleVerticalZoomView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomView.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h; sourceTree = ""; }; - 05B3B08A0927761DC2CBA02E9412CD21 /* LookinObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinObject.m; path = Src/Main/Shared/LookinObject.m; sourceTree = ""; }; - 06077AACB035D8452C9F730B2E1F00DF /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; - 06A633B376D525417B93138405029540 /* LookinCustomAttrModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomAttrModification.h; path = Src/Main/Shared/LookinCustomAttrModification.h; sourceTree = ""; }; - 06AB57BB46CC82FE3257276649BAF8EA /* NSString+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Lookin.h"; path = "Src/Main/Shared/Category/NSString+Lookin.h"; sourceTree = ""; }; - 06BE908D1EBE4269ACB69B26DE9B834E /* LKS_MultiplatformAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_MultiplatformAdapter.h; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.h; sourceTree = ""; }; - 06EFD395C240E38E2ED0DCAF40CE73FC /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; - 0A19BDA4E648916460C20489D6D183F0 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; - 0A5E3A2C0C49EB165C854762A832D48A /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; - 0A7095DB3527991440F374C9F9DB5050 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; - 0A8F3B5ED5052E8AFF569E50436DC3C0 /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; - 0B08ADE1A4FFE94FDBBE13FE7CC2C1E5 /* JXCategoryBaseCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseCell.m; path = Sources/Base/JXCategoryBaseCell.m; sourceTree = ""; }; - 0B0EEEE5F23AC446F4729522F4FC7A73 /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; - 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; - 0B1D41519ED222707112BD66393CC6B2 /* LookinObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinObject.h; path = Src/Main/Shared/LookinObject.h; sourceTree = ""; }; - 0B35D70EDD8A3E56FE6F0E6934A400CC /* LookinAttributeModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributeModification.m; path = Src/Main/Shared/LookinAttributeModification.m; sourceTree = ""; }; + 00449113F3BDDB46E11CEE02CF1F29A1 /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; + 0055AF44029FABEF5E29D1BC1B86CC15 /* UIImage+MemoryCacheCost.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MemoryCacheCost.h"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.h"; sourceTree = ""; }; + 00AE10F23D2B898E9F45884FD9904B2F /* LKS_AttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.m; sourceTree = ""; }; + 00B27A1456536538B2E7220C71AA3F4F /* LKS_HierarchyDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.m; sourceTree = ""; }; + 00C9A4038FA1CE3381055E02DAAEC90E /* LookinIvarTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinIvarTrace.h; path = Src/Base/LookinIvarTrace.h; sourceTree = ""; }; + 021930E01F482BDF2DEAAA2AF9FDCF18 /* JXCategoryIndicatorRainbowLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorRainbowLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m; sourceTree = ""; }; + 0249A8711339B6CD1E26258C064677E9 /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; + 0260C833576479A14C0F759F9D161479 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; + 026BB0AEDD69539DEC39191EE0C5214B /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; + 03700B93F7A3FF6F3675D80E5DB1C1C7 /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; + 04094D9F916F0B3E8A409CF5EEC45FCC /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; + 044A47D1E36901CA79D51CC72EA995C9 /* JXPagerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerView.m; path = Sources/JXPagerView/JXPagerView.m; sourceTree = ""; }; + 0451FF8513ABCE79BA473B450192579B /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; + 04996832466C0B682760DEB660586A88 /* MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJRefresh-Info.plist"; sourceTree = ""; }; + 051A66FC7C22537DD150BA86539EC9D4 /* JXCategoryCollectionView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryCollectionView.h; path = Sources/Common/JXCategoryCollectionView.h; sourceTree = ""; }; + 05A7B005509B15E31ECEED7DFEEB1EDB /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; + 05D708E8F9065868500ABC98E789B739 /* KeyValueObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KeyValueObserver.h; path = Sources/KVO/KeyValueObserver.h; sourceTree = ""; }; + 05EE9449F14265ADB3100E60632AB642 /* LookinEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinEventHandler.h; path = Src/Main/Shared/LookinEventHandler.h; sourceTree = ""; }; + 05FF40C91ADEB302CBF4314535A1A6E7 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; + 060133813AFA51D11B917CB91A3D4950 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; + 06878A6718B46A5E825D03CB581CD8B2 /* LookinServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LookinServer-Info.plist"; sourceTree = ""; }; + 07001E763AE097A75E1AFBEB80197373 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; + 0719BBC5095E9B709A7485C347010514 /* LKS_HierarchyDetailsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDetailsHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.m; sourceTree = ""; }; + 07274C755D75F4A07C925D1DDE5FA529 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; + 073DE0C455B2CE33A0FBA3C6ECF4F8CF /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; + 07C3DB4C7661755654D296A929BE2CE7 /* Lookin_PTChannel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTChannel.h; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.h; sourceTree = ""; }; + 083F5143D12F213638EF9FE439F1CEFA /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; + 091DAAA7597B1233173C3BB1DC8D1D79 /* HWPanModalContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContainerView.h; path = Sources/View/PanModal/HWPanModalContainerView.h; sourceTree = ""; }; + 09799A44FC43F3184E20B590CC73FFC7 /* LookinStaticAsyncUpdateTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinStaticAsyncUpdateTask.h; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.h; sourceTree = ""; }; + 0A70A9B1B9D076F21A4C704EAC69B3E9 /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; + 0A7D8AD4481BE4F0D7389A1662CCA111 /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Masonry.modulemap; sourceTree = ""; }; + 0AD4477B34BC6EAF1A362183974F34DC /* Bugly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.release.xcconfig; sourceTree = ""; }; + 0AE235E52EF7BBF7348F9B4CAB71F7D8 /* HWPanModal-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HWPanModal-dummy.m"; sourceTree = ""; }; 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-CustomKeyboard"; path = Pods_CustomKeyboard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 0BE68C7303DE07C8DA01573CDDE9003F /* HWPanModalInteractiveAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalInteractiveAnimator.m; path = Sources/Animator/HWPanModalInteractiveAnimator.m; sourceTree = ""; }; + 0B4EEA7B77703F45AB157AC651CEF4EA /* UIView+LYExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LYExtension.m"; path = "LYEmptyView/UIView+LYExtension.m"; sourceTree = ""; }; + 0B5075BB968E268BB5D61B393C333DB4 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; + 0BC7EB117F009B160822B3FFCCC63F2A /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; + 0BED1E57A7780D7944D806EF7FB48648 /* HWPanModalContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContainerView.m; path = Sources/View/PanModal/HWPanModalContainerView.m; sourceTree = ""; }; 0C4AE62ED97252893F28F670D61AFB24 /* Pods-keyBoard-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-keyBoard-Info.plist"; sourceTree = ""; }; - 0C9F5466A18204DE825F30433C784EDB /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; + 0C6F8F3E8953AADD74838D4A882F45A1 /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; + 0C7575113B17F46DF34D3C118CB31308 /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; + 0CA8B3EFCD9E73829676C70CE3E88BE0 /* UIView+LYExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LYExtension.h"; path = "LYEmptyView/UIView+LYExtension.h"; sourceTree = ""; }; + 0CE35A6903D3E473ACA2703E7286A28E /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; + 0CF1A36FA548FCE3A4F7DA66625E9583 /* JXCategoryTitleCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleCell.h; path = Sources/Title/JXCategoryTitleCell.h; sourceTree = ""; }; 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CustomKeyboard.debug.xcconfig"; sourceTree = ""; }; - 0D8B581D78D02F65425434F924BB64B3 /* LookinHierarchyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyInfo.m; path = Src/Main/Shared/LookinHierarchyInfo.m; sourceTree = ""; }; - 0E2875C79F8461486A975B000C1ABDE3 /* JXCategoryImageCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageCell.h; path = Sources/Image/JXCategoryImageCell.h; sourceTree = ""; }; + 0D6771046C7CF97C82B7D303F2AFD49E /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; + 0DEA9604C374890EC86557DA00C054E0 /* LookinServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LookinServer.modulemap; sourceTree = ""; }; 0E732C0D026ACBC7DBD039DC3BDC2BCE /* Pods-keyBoard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-keyBoard.modulemap"; sourceTree = ""; }; - 0E752820782AF474A360AC65F5EFA79D /* RTLManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RTLManager.h; path = Sources/RLTManager/RTLManager.h; sourceTree = ""; }; - 0E90E49C067121A7254AE81E49E663A2 /* JXPagingView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXPagingView-prefix.pch"; sourceTree = ""; }; - 0F050843F5053FDD98D8FE72C1E28A5F /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; - 0FABDACBA6BA6926D5F19E502E77474E /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; - 102C92CE02746A6588B44F852322AB39 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; - 109DC293F90D678E22D453F41A197049 /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; - 10B904BAC9CC3925EE6B4E2130826A6F /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; - 119B8F0EF70910D693FCCA816529E357 /* JXPagerMainTableView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerMainTableView.m; path = Sources/JXPagerView/JXPagerMainTableView.m; sourceTree = ""; }; - 119F71892BB85FDC29B99AE148231087 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; - 11EEC0D59FA31FAAD209A208EB338575 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; - 12142FAAA1C74097D8F4441EAD4066E1 /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; - 123714F0F2335CBE901933785D4D26FB /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; - 1278AB0B776862F23D89B7E8596E3598 /* LKS_TraceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_TraceManager.h; path = Src/Main/Server/Others/LKS_TraceManager.h; sourceTree = ""; }; - 1325B9E2F97C77F3E9191898C4045E7E /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; - 1326C5B7B2B67B2A6E9A785F1ECEA87F /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; - 137AD002D5B6FA89785842F03034A5B1 /* UIColor+JXAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+JXAdd.m"; path = "Sources/Common/UIColor+JXAdd.m"; sourceTree = ""; }; - 137E45FE90DEED579DF255BB11ADABF4 /* LKS_CustomAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.h; sourceTree = ""; }; - 13B6B935F583A1ED5234B7E3DF044521 /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; - 13B82D87F3DD4A8EB4C508E0BFA04090 /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; - 13D84A2503CDD440D0A0063FF97A2EB4 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; - 156CBD2266287775279363430A374818 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; - 15D78A0355CAA0B846DBC1DAC7B101F4 /* HWPanModalPresentationAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationAnimator.m; path = Sources/Animator/HWPanModalPresentationAnimator.m; sourceTree = ""; }; - 15D9AA9876374637F32E00BE13AA1880 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; - 15E765BB9B77EA9AC2800F30D2802C1C /* LKS_RequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_RequestHandler.m; path = Src/Main/Server/Connection/LKS_RequestHandler.m; sourceTree = ""; }; - 16464E573FCB8AFF2E7DB58E7A507D73 /* LookinWeakContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinWeakContainer.m; path = Src/Main/Shared/LookinWeakContainer.m; sourceTree = ""; }; - 167D63F7114C5D501803C08C617324CA /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; - 16E6E00D729B1498CE18200F50778930 /* LookinHierarchyFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyFile.m; path = Src/Main/Shared/LookinHierarchyFile.m; sourceTree = ""; }; - 1711B81346B8ED1944B5A8A478A4CF3F /* JXCategoryIndicatorLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m; sourceTree = ""; }; - 173BFB44F7DA63CD3AF5A497970B8203 /* JXCategoryBaseView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseView.h; path = Sources/Base/JXCategoryBaseView.h; sourceTree = ""; }; - 17CD950341D8F0132ADFEDC39B7267A7 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; - 17D9582F158C09F75D84ECE893151E91 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; - 17DDB1AC9EC1929E6B6DFC0CFA9D927D /* LKSConfigManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKSConfigManager.m; path = Src/Main/Server/Others/LKSConfigManager.m; sourceTree = ""; }; - 17FBA36FB2D4DFAA4437CEE5C69F4BBE /* Image+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Image+Lookin.h"; path = "Src/Main/Shared/Category/Image+Lookin.h"; sourceTree = ""; }; - 187A3F425AA5E5A93F8784E11F9E28CF /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJRefresh/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 195B648C25562B52954B1E7C1D8964C3 /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; - 195F1795B17C3F026E46BBEF64C1EA67 /* HWPanModalPresentationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationController.h; path = Sources/Controller/HWPanModalPresentationController.h; sourceTree = ""; }; - 19AE4F199F0E794B9F2956EE4530887A /* MJExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJExtension.modulemap; sourceTree = ""; }; - 1A08646B05BD58116699CDFD07CA2977 /* JXCategoryBaseCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseCell.h; path = Sources/Base/JXCategoryBaseCell.h; sourceTree = ""; }; - 1A1600286757D192233397A2BF1A2371 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; - 1A2B6D97C6E9B5572232985B40BDA6C4 /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; - 1B8FD707DDEC1F98F5C5FE19647F0592 /* JXCategoryNumberCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberCell.m; path = Sources/Number/JXCategoryNumberCell.m; sourceTree = ""; }; - 1BABE1F324CED82D14350741682D422B /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; - 1C21A04AB85F6948BCB44480387E46C5 /* LKS_EventHandlerMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_EventHandlerMaker.m; path = Src/Main/Server/Others/LKS_EventHandlerMaker.m; sourceTree = ""; }; - 1C37C8F103EDECD09126133069B80115 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJExtension/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 1C4B5B00D7224F098F6B2FE0962E5086 /* LKS_AttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.m; sourceTree = ""; }; - 1D56371580E6496005BC9D35C2C49570 /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; + 0EBF81CE72AA8B4B06F1BC37CFA7B96A /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; + 0ED5656E5971882A3EA314E222EBC2C5 /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; + 0F1705DF1CC5E82194523F85FE871354 /* HWDimmedView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWDimmedView.h; path = Sources/View/HWDimmedView.h; sourceTree = ""; }; + 0FC2E352D2D0DD942A9B4488E3654AB0 /* HWPanModalPresentableHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentableHandler.m; path = Sources/Mediator/HWPanModalPresentableHandler.m; sourceTree = ""; }; + 0FFF1AB10AC30C72DB3B2F106B23E5B3 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJExtension/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 1069EA3A85D1A1A87FE087B0FE402436 /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; + 10AACE3BDEFABB8B9E709942B03E5595 /* JXPagingView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JXPagingView-dummy.m"; sourceTree = ""; }; + 10DBEAC7DAAC95D5A947ACA061058C0B /* LookinConnectionAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionAttachment.h; path = Src/Main/Shared/LookinConnectionAttachment.h; sourceTree = ""; }; + 12702606A08588ACD81E031A777BAB70 /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; + 128CF11122A7C2009F733361122E39A1 /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; + 13AC6B7EC0E45B7BC751451206C8C575 /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; + 148EEB030F62D4D33B4C03AE45AD6C08 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; + 14CF605A6E1A867AA3131733CCE53D99 /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; + 15C39377834B42681C3BF6A5471C5F78 /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; + 15D6A20A536D39FB4F4DE78CEC3512CE /* LookinDisplayItemDetail.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItemDetail.m; path = Src/Main/Shared/LookinDisplayItemDetail.m; sourceTree = ""; }; + 1612A7E2EB4D912BD038AFA9FAE11CFD /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; + 16308A5AF08E401B61B68CCD953A0528 /* MJRefreshHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshHeader.h; path = MJRefresh/Base/MJRefreshHeader.h; sourceTree = ""; }; + 163DD1C8E32A767AC162D451FB47DECB /* LSTPopView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.debug.xcconfig; sourceTree = ""; }; + 16465B6B7358098E137335C9985BBBBC /* SDWebImageError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageError.h; path = SDWebImage/Core/SDWebImageError.h; sourceTree = ""; }; + 1679E08A4A241FB86455E71FDFB20D9F /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; + 1724C0944D7BC65545806EE9EDED203D /* HWPanModalPresentationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationDelegate.m; path = Sources/Delegate/HWPanModalPresentationDelegate.m; sourceTree = ""; }; + 17A16F153D08C8BBF15070C730EC0C3A /* LookinTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinTuple.h; path = Src/Main/Shared/LookinTuple.h; sourceTree = ""; }; + 18106F0763EC023048DB3F77457B9596 /* AFNetworking-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "AFNetworking-dummy.m"; sourceTree = ""; }; + 1817B2506E6D89DAFA8176C4A51738C0 /* JXCategoryIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorView.m; path = Sources/Indicator/JXCategoryIndicatorView.m; sourceTree = ""; }; + 18EAC20398B46C2C580B542618314D9E /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/include/FLAnimatedImageView.h; sourceTree = ""; }; + 1936EF3FEE34E513D746BA5037CDEE80 /* JXCategoryIndicatorParamsModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorParamsModel.m; path = Sources/Common/JXCategoryIndicatorParamsModel.m; sourceTree = ""; }; + 1B1E80842E43848FFB0F162AFF96E774 /* UIView+LSTPV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LSTPV.m"; path = "LSTPopView/Classes/Code/UIView+LSTPV.m"; sourceTree = ""; }; + 1B41D364B66F85CF33EB15116929CF48 /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; + 1B82CFD6AD23DAB70352983FFFA8DBBE /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; + 1BFABBA210FF6BEF09CABCCBE8AE590F /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; + 1C9E2AC9C9AE14EBBFDCDBBA925613E4 /* JXCategoryFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryFactory.h; path = Sources/Common/JXCategoryFactory.h; sourceTree = ""; }; + 1CA6A325AACF7253FFEB9D258746335D /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; + 1D0C4CB17BF463D490AE3400293A0D47 /* LYEmptyBaseView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LYEmptyBaseView.m; path = LYEmptyView/LYEmptyBaseView.m; sourceTree = ""; }; + 1D490F15AED6B55BCD64F4D5193A9375 /* JXCategoryIndicatorComponentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorComponentView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m; sourceTree = ""; }; 1D774D8146EBC82B4A77204A273761B8 /* Pods-CustomKeyboard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-CustomKeyboard.release.xcconfig"; sourceTree = ""; }; - 1E17CF24E4278604BB723E30B9997957 /* JXCategoryIndicatorTriangleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorTriangleView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m; sourceTree = ""; }; - 1E7F18004D9337D64F0F606975492DF4 /* LookinDisplayItemDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItemDetail.h; path = Src/Main/Shared/LookinDisplayItemDetail.h; sourceTree = ""; }; - 1FBD8AFE7FA55EAB140791EC34C18CD4 /* LKS_MultiplatformAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_MultiplatformAdapter.m; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.m; sourceTree = ""; }; - 1FCD0CB41F1E259546B6F8A9BFF05378 /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; - 1FFD17C3FF6DE53EF72736C597DF5B82 /* LookinAutoLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAutoLayoutConstraint.h; path = Src/Main/Shared/LookinAutoLayoutConstraint.h; sourceTree = ""; }; + 1D8DC297A0249D2FB0109542F14B89AB /* UITextView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+LookinServer.m"; path = "Src/Main/Server/Category/UITextView+LookinServer.m"; sourceTree = ""; }; + 1DD3D7BBD826081D1399FCDA65D59838 /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; + 1E2CD23DF8D29ECCE7278412B1BFFFA2 /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; + 1EC115C953943E0027F6AD5AFEE41A30 /* HWPageSheetPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPageSheetPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h; sourceTree = ""; }; + 1EFF4D34DD5391DCE7D206B11306BCE5 /* LKS_CustomAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.h; sourceTree = ""; }; + 1EFF4EEBD779C7DB39B6B044205385FA /* HWPanModal-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-umbrella.h"; sourceTree = ""; }; + 1F9506DDA8FBAA7420E9B8137BFCFDFA /* HWPanModalPresentationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationController.m; path = Sources/Controller/HWPanModalPresentationController.m; sourceTree = ""; }; 1FFED36A657123030ABB700256D73F15 /* Masonry */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = Masonry; path = Masonry.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 201E2681B892F05C3D7CAFE9E9927D15 /* UIViewController+Presentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Presentation.h"; path = "Sources/Presentable/UIViewController+Presentation.h"; sourceTree = ""; }; - 202D2DE7A9C3209A4BF4D407CF1AB06A /* JXCategoryTitleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleView.m; path = Sources/Title/JXCategoryTitleView.m; sourceTree = ""; }; - 20BCC481544CBBCE47AC61F792449041 /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; - 21199D87A8FB4561900F6BC425147989 /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; - 2132EF8C73164960BCAFD57CF9C7A53F /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; - 21696AB985A15DE2C63BD9A8CD978F59 /* LKS_HierarchyDetailsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDetailsHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.h; sourceTree = ""; }; - 21C74D93A3238750FF610EABE13EB50F /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; - 21E66554273E5793F0BC4D1CD5A058CD /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; - 2219CD4B41E42AA4B9864251F1CFEF59 /* LSTPopView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTPopView-Info.plist"; sourceTree = ""; }; - 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; - 22613DFB1026F3E41B141E34C637D600 /* UIScrollView+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+Helper.h"; path = "Sources/Category/UIScrollView+Helper.h"; sourceTree = ""; }; - 230F8C4FD68EA2D95EA48F31DA295CE9 /* LKS_CustomDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.h; sourceTree = ""; }; - 2310AA8AAF9A85F5E639409B8AF0F292 /* HWPanContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanContainerView.m; path = Sources/View/HWPanContainerView.m; sourceTree = ""; }; - 231F7AC591603501EC449D697A5C6668 /* JXCategoryView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = JXCategoryView.modulemap; sourceTree = ""; }; - 23648E3B16301958DD4429C021EB223C /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; - 239F725CB21A7ABF0EDB35FC92732A5C /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; - 23A344AF55814873B0105902E9FBBB2A /* UIViewController+LayoutHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LayoutHelper.h"; path = "Sources/Presentable/UIViewController+LayoutHelper.h"; sourceTree = ""; }; - 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXPagingView.release.xcconfig; sourceTree = ""; }; - 241FDB4FE9E3CE45C4854F0FEB6F8BAF /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; - 2458E327D6233EBA29A07B3E63113146 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; - 2504FFB7834ECCFC15329B28F3C9A331 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; + 20674A80959A90C9F9E51DBDC8807D93 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = MJRefresh/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 207535A186296DE018201ED1B7DDD076 /* LKS_ExportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ExportManager.m; path = Src/Main/Server/Others/LKS_ExportManager.m; sourceTree = ""; }; + 20C453B83E1025092DAD587080018B43 /* UIImage+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+LookinServer.m"; path = "Src/Main/Server/Category/UIImage+LookinServer.m"; sourceTree = ""; }; + 210B700E8324769F741C26126E6B1F4A /* Lookin_PTUSBHub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTUSBHub.h; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.h; sourceTree = ""; }; + 22A80188C121A76950A88A3321260BFD /* RTLManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = RTLManager.h; path = Sources/RLTManager/RTLManager.h; sourceTree = ""; }; + 230B07768E56A05E48373DAA2EAC05DE /* JXCategoryTitleVerticalZoomCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomCellModel.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m; sourceTree = ""; }; + 23763927ED025640A4CAA94867A3D823 /* NSImage+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSImage+Compatibility.m"; path = "SDWebImage/Core/NSImage+Compatibility.m"; sourceTree = ""; }; + 23B693321C3E2CA46CF401E48AE2795D /* MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJExtension-Info.plist"; sourceTree = ""; }; + 23B6D3BC0C4291E4CB154E7F35862BCB /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; + 253C2858A52DB3FD4BE13D65D2B6C2A6 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; + 25475D081A3343232AD119F5F5A5F24A /* JXCategoryTitleVerticalZoomCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomCell.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h; sourceTree = ""; }; 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LookinServer; path = LookinServer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 25A5CCE05BC1D97AB685203E1D41C4B0 /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; - 25A7097BBC72B099A6C5D8BE403878A8 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; - 25A773C46121E6091EEB9AC88DC4E2A2 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; - 26925632A670841DDFC5067C12B16515 /* CALayer+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+LookinServer.h"; path = "Src/Main/Server/Category/CALayer+LookinServer.h"; sourceTree = ""; }; - 2783C33881FB9ED3037D4D66B93FAD7E /* LookinDashboardBlueprint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDashboardBlueprint.m; path = Src/Main/Shared/LookinDashboardBlueprint.m; sourceTree = ""; }; + 256D50D68BFC3FD314552D1D0BC2044D /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; + 26469EA2BF7F49FCDA80695277950B2B /* LookinHierarchyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyInfo.h; path = Src/Main/Shared/LookinHierarchyInfo.h; sourceTree = ""; }; + 2713EAAF042877733E01E359F3224ABF /* MJExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-umbrella.h"; sourceTree = ""; }; + 2795C0F083BB71E948BE56DAFC73957B /* LSTPopView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTPopView.modulemap; sourceTree = ""; }; 281686F4C9CC2C718B45E1DEB7E63948 /* Pods-CustomKeyboard-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-CustomKeyboard-acknowledgements.markdown"; sourceTree = ""; }; - 28EBA38DF7DE3C55A1DCF1C9536E3712 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; - 294754F45B0BF3519369080425B4F2FD /* LSTTimer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.release.xcconfig; sourceTree = ""; }; - 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXPagingView.debug.xcconfig; sourceTree = ""; }; - 29C25E996193BA4D1FCBB5C2A7812FB9 /* AFCompatibilityMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFCompatibilityMacros.h; path = AFNetworking/AFCompatibilityMacros.h; sourceTree = ""; }; - 29CA4DC7FB25B91EAA2B3847B7BB46A9 /* LKS_CustomAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.m; sourceTree = ""; }; - 29EA07EA8EF3C7818A9505A783C4FF02 /* JXCategoryListContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryListContainerView.m; path = Sources/Common/JXCategoryListContainerView.m; sourceTree = ""; }; - 2A543722998E5C6171A0B4A729D11BBB /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; - 2AD36233DB657DAA0ACBB8EEEAEB38EA /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; + 292BBC0398F56F3818017A7314541B45 /* JXCategoryNumberCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberCellModel.h; path = Sources/Number/JXCategoryNumberCellModel.h; sourceTree = ""; }; + 2945888F89AB6D3ECBBEDD6E09D1B949 /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; + 29792A8AE7CB7444FE7BA20424B814AD /* MJRefreshStateTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m; sourceTree = ""; }; + 2A03E8820B42DFF0FCE849CB64302CAF /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; + 2A1E2D85798C902C2A1E1B714EF78587 /* UIViewController+PanModalPresenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalPresenter.m"; path = "Sources/Presenter/UIViewController+PanModalPresenter.m"; sourceTree = ""; }; + 2A4AC508097EE18B75D5D75FDA7CF5C1 /* JXCategoryIndicatorBallView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorBallView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h; sourceTree = ""; }; + 2A98EB9CE425ECC87D9747E4EAC3DB0C /* MASLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASLayoutConstraint.h; path = Masonry/MASLayoutConstraint.h; sourceTree = ""; }; + 2B0B272843C604B68C602DEE1AD3605F /* UIView+HW_Frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+HW_Frame.h"; path = "Sources/Category/UIView+HW_Frame.h"; sourceTree = ""; }; 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MJExtension; path = MJExtension.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2BB86632EEB3EB44D0413B3A6F7F6875 /* HWPanModalContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContainerView.m; path = Sources/View/PanModal/HWPanModalContainerView.m; sourceTree = ""; }; - 2BEAAFCDD4CD23AABA4CD7359454B646 /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; - 2BF8D28C7089A47299DB62B980D954C8 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; - 2CAA34C64434033ACBB7F68A74F4D15B /* HWPanModalContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContentView.h; path = Sources/View/PanModal/HWPanModalContentView.h; sourceTree = ""; }; - 2CE7B5832F4AC9648A3CEB7DD03473E4 /* MJRefreshFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshFooter.m; path = MJRefresh/Base/MJRefreshFooter.m; sourceTree = ""; }; - 2E5DB75D5C223CDC5703FA115447A148 /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; - 2E70DDAD553B6A4AC2379D01C3F133EF /* KeyValueObserver.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = KeyValueObserver.h; path = Sources/KVO/KeyValueObserver.h; sourceTree = ""; }; - 2E80EA469F2079302F38A991886C4B5A /* LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServer.h; path = Src/Main/Server/LookinServer.h; sourceTree = ""; }; - 2E96574DDD94EB958E64B0AD7C7B20F2 /* JXCategoryFactory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryFactory.h; path = Sources/Common/JXCategoryFactory.h; sourceTree = ""; }; - 2ECB40CAF1E6F3F4A5F02F74E30B95E8 /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; - 2ED4FAFE5BD7891D4471852209337077 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; + 2B4792E0E693278C27DB918B70E58272 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; + 2B53DEB14A9698F954D95E54715C1911 /* DZNEmptyDataSet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DZNEmptyDataSet-Info.plist"; sourceTree = ""; }; + 2CB55990BE7673BB5930FB77BB2A2C33 /* FLAnimatedImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.debug.xcconfig; sourceTree = ""; }; + 2CCD2F6CD21BCE8D4DC6CE0FB91B91CB /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; + 2D0DE149DDBAC4B5DCFA0C2217970015 /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; + 2DC211B96CB1A7D40B3203E4778066C9 /* UIViewController+LayoutHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LayoutHelper.h"; path = "Sources/Presentable/UIViewController+LayoutHelper.h"; sourceTree = ""; }; + 2DFC8007FA865661CA9E295ADD1014BA /* JXCategoryIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorView.h; path = Sources/Indicator/JXCategoryIndicatorView.h; sourceTree = ""; }; + 2E585503EB164F6C036C85B124140368 /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; + 2E79D80C613F4B57826DA627018BB1C5 /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; + 2F04E40EC66FE8A57ECA4BC540959E1D /* ResourceBundle-JXPagerView-JXPagingView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-JXPagerView-JXPagingView-Info.plist"; sourceTree = ""; }; + 2F19C07EBC4D3E8EF1AD6C474E7F24FE /* LYEmptyView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LYEmptyView-dummy.m"; sourceTree = ""; }; 2F4A1CCB21DB7EA5A2ACEB11E374FBCA /* JXPagingView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = JXPagingView; path = JXPagingView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 2FED06425BD958CD54FC4A96C6FF1992 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; - 3125F7D904D9F1F20C7699EF5186B19F /* SDImageHEICCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageHEICCoder.m; path = SDWebImage/Core/SDImageHEICCoder.m; sourceTree = ""; }; - 31894250FE81D510485178A2F984B715 /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; - 3201B19667C12026E1C92EA1DD973BB7 /* SDFileAttributeHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDFileAttributeHelper.h; path = SDWebImage/Private/SDFileAttributeHelper.h; sourceTree = ""; }; - 32CCCC7F014C0FE2CA551D9AF48EEF89 /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; - 32DEFB57DAEAFA1A97A9826678533D16 /* SDWebImageManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageManager.h; path = SDWebImage/Core/SDWebImageManager.h; sourceTree = ""; }; - 32F3C5B0B7D11631504E27D25E8CB5A2 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; - 3381742E54E03DCDB9DD644DF65C4689 /* JXCategoryIndicatorTriangleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorTriangleView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h; sourceTree = ""; }; - 3415299E0D5D7B9C22E99D16B6F89983 /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJRefresh.modulemap; sourceTree = ""; }; - 3416384E4A531494C7B12CDD1AEA74A1 /* Lookin_PTUSBHub.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTUSBHub.h; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.h; sourceTree = ""; }; - 342267EEBD80FDDCEAA647EFBE0EB6BD /* MJRefreshNormalTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h; sourceTree = ""; }; - 3422D3CB84719A98D68CD9DE2857E694 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; - 3474F65ACB0FE00EF732580936B91D06 /* UIViewController+PanModalDefault.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalDefault.m"; path = "Sources/Presentable/UIViewController+PanModalDefault.m"; sourceTree = ""; }; - 34C31D8DFEC22296E69E97BC5CEAE316 /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; - 3504487D6CA5438A7FB00D149564DDFC /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; - 35205291EDA412911A7CCBF5DB6087EB /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; - 35269DC2485E9AA07A892FDEB96B16C7 /* Lookin_PTChannel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTChannel.h; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.h; sourceTree = ""; }; - 3545C9AC3AD500CD4E48A3E2630C521B /* JXCategoryTitleCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleCellModel.m; path = Sources/Title/JXCategoryTitleCellModel.m; sourceTree = ""; }; - 359AD735B8CFD982730F6CEB0F56A487 /* JXPagerListRefreshView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerListRefreshView.h; path = Sources/JXPagerView/JXPagerListRefreshView.h; sourceTree = ""; }; + 304D443FD07AF14BA7F1628D80971669 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; + 304FA88F8B2636C2DD7FA535D2BD617D /* UIScrollView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJExtension.h"; path = "MJRefresh/UIScrollView+MJExtension.h"; sourceTree = ""; }; + 30E03A823CD994C7C3DEA8D91B90C5DE /* JXCategoryIndicatorParamsModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorParamsModel.h; path = Sources/Common/JXCategoryIndicatorParamsModel.h; sourceTree = ""; }; + 310DC522C0637DDB20D8D38412CB4153 /* UIImageView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+LookinServer.h"; path = "Src/Main/Server/Category/UIImageView+LookinServer.h"; sourceTree = ""; }; + 313050E8524ED89E2B2CF8F5C1CC7633 /* LKS_AttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.h; sourceTree = ""; }; + 317AEF64C0405ADA2DB47569A6D72FC4 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; + 31C9A23E37AE09BB9DC1BC766BD3A6AA /* JXCategoryImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageView.h; path = Sources/Image/JXCategoryImageView.h; sourceTree = ""; }; + 321334B98147E6E64FCE056E3717FEE0 /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; + 3259CC7D8EE4331CC9B8A86DA09EA5B3 /* MJRefreshStateHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateHeader.m; path = MJRefresh/Custom/Header/MJRefreshStateHeader.m; sourceTree = ""; }; + 32E665F5EEABCF137D52CE4A3889C9F0 /* LKSConfigManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKSConfigManager.m; path = Src/Main/Server/Others/LKSConfigManager.m; sourceTree = ""; }; + 330AFA4D280CBB2EE073DCC942489EAB /* UIScrollView+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+Helper.m"; path = "Sources/Category/UIScrollView+Helper.m"; sourceTree = ""; }; + 3313EDBDBF7A4CA0DC32526D9ED0B496 /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; + 343C42E325F84441C510AF8DEE739ADF /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; + 347DA9A1002297848F6BF9D97BB1F302 /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; + 34F0487226F5EBEBA3C6D3E1743C5260 /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; + 3501E850F701BA678364B4AFBF1C8417 /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; + 353BBBDE951248D62CFDF267ACFAD0A7 /* FLAnimatedImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-prefix.pch"; sourceTree = ""; }; + 35B67A3C0E25A19B996355E03ED4A3CD /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-keyBoard.debug.xcconfig"; sourceTree = ""; }; - 35DC020855ECA02C5E2568299594E9C0 /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; - 360A9029323DBF687A82BCD2C22F386C /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 36457C61634F1414F6DDF4C701ABF567 /* LKS_TraceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_TraceManager.m; path = Src/Main/Server/Others/LKS_TraceManager.m; sourceTree = ""; }; - 3653F678D1C9DBE34F6262A65263C642 /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; - 367088C36E8BF33957802AE4A6256CC1 /* MJPropertyKey.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyKey.h; path = MJExtension/MJPropertyKey.h; sourceTree = ""; }; - 367DF77D41DE010B9FA86137928C7C44 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; - 368AF39857A6659131D7CD15698E6867 /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; - 36A28302FD0C37C0A56E64EA97977A8E /* FLAnimatedImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.debug.xcconfig; sourceTree = ""; }; - 3753072CB1EE987F4CDC7E86385B9A99 /* UIViewController+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LookinServer.h"; path = "Src/Main/Server/Category/UIViewController+LookinServer.h"; sourceTree = ""; }; - 3791DA4B477B236E8816C08DD01E3B45 /* UITextView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextView+LookinServer.m"; path = "Src/Main/Server/Category/UITextView+LookinServer.m"; sourceTree = ""; }; - 3875C6FE72ED2368D3701E9901F883B7 /* JXCategoryIndicatorCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorCellModel.m; path = Sources/Indicator/JXCategoryIndicatorCellModel.m; sourceTree = ""; }; - 38A98EA0745C9E839DCFD56B22BF1256 /* LKS_Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_Helper.m; path = Src/Main/Server/Others/LKS_Helper.m; sourceTree = ""; }; - 38E107BE978505B98A952E3564F532AA /* LKS_CustomAttrSetterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrSetterManager.h; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.h; sourceTree = ""; }; - 390647665D633FF246584D1E27162F0D /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; + 36BEAD7507B8644D14D46C852A6EF20B /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; + 36CBA5AB35EE7DE7B4A5CDBAC4BE20A8 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; + 371A20C759D3E78183B0BC7EA626FA2D /* LookinObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinObject.h; path = Src/Main/Shared/LookinObject.h; sourceTree = ""; }; + 373258A2F6DFCE8ADD1C1D42DE5EF5D3 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; + 374CEB5E4CAC5B1889E4B3A57B47546E /* LYEmptyView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LYEmptyView.h; path = LYEmptyView/LYEmptyView.h; sourceTree = ""; }; + 37977014CE5B8A9E93F1EC56C3AC6D52 /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; + 37C2A3B1C753D4547646108720BF5321 /* JXCategoryIndicatorComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorComponentView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h; sourceTree = ""; }; + 38C2193309DE8B485EA6F0495C08B115 /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; + 38F21B02ED02115E613C152CE563BD5A /* LookinAutoLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAutoLayoutConstraint.m; path = Src/Main/Shared/LookinAutoLayoutConstraint.m; sourceTree = ""; }; + 39267406AD82F75ABB872A20BE14F010 /* LYEmptyView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LYEmptyView.m; path = LYEmptyView/LYEmptyView.m; sourceTree = ""; }; + 39592D3DD29808CC34F5BDE8FFAD64E6 /* LookinAttributeModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributeModification.m; path = Src/Main/Shared/LookinAttributeModification.m; sourceTree = ""; }; 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LSTPopView; path = LSTPopView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 3A2E4F46AFE1B8413F8C1C81323B5831 /* JXPagerSmoothView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerSmoothView.h; path = Sources/JXPagerView/JXPagerSmoothView.h; sourceTree = ""; }; - 3A8DC30D2C209AB66D8E812915E6F319 /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; - 3A8EB0FE66AD3E48C10CDD802521D146 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; - 3A94C1FE25186BE811E6EC878BFA019B /* MASConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraint.m; path = Masonry/MASConstraint.m; sourceTree = ""; }; - 3B26E1BE3EBF37131688F5656289ACA2 /* NSObject+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+LookinServer.h"; path = "Src/Main/Server/Category/NSObject+LookinServer.h"; sourceTree = ""; }; - 3B2ACD52F18B25CE1FB40A0F1DF81B4A /* LKS_CustomAttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.h; sourceTree = ""; }; - 3B3FF5D113848A5A9AC244C579FF1441 /* JXCategoryIndicatorCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorCellModel.h; path = Sources/Indicator/JXCategoryIndicatorCellModel.h; sourceTree = ""; }; - 3B56A01456E5166288620482B2A2180C /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; - 3BC6BE1672FC4A4AA70F4CBD7E23C808 /* JXPagerListContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerListContainerView.m; path = Sources/JXPagerView/JXPagerListContainerView.m; sourceTree = ""; }; + 39D7BCC784A30383722D127896FE591E /* JXPagingView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXPagingView.debug.xcconfig; sourceTree = ""; }; + 39D939E1825294C23871CD06F0A1E6A2 /* JXCategoryBaseView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseView.m; path = Sources/Base/JXCategoryBaseView.m; sourceTree = ""; }; + 3A10B1AFB4B6959F4A11AB1B1BC4A437 /* HWPanModalPresentable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentable.h; path = Sources/Presentable/HWPanModalPresentable.h; sourceTree = ""; }; + 3A1C13D0C9F5E8ED93D0398C379507C1 /* LookinHierarchyFile.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyFile.m; path = Src/Main/Shared/LookinHierarchyFile.m; sourceTree = ""; }; + 3A9477BE731926B610D9B847EF5B7347 /* NSObject+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+LookinServer.h"; path = "Src/Main/Server/Category/NSObject+LookinServer.h"; sourceTree = ""; }; + 3AF0216318F4C1EBD4207012E5E70EB1 /* JXCategoryDotCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotCellModel.m; path = Sources/Dot/JXCategoryDotCellModel.m; sourceTree = ""; }; + 3B250EFB659FBBBBA5D680859085344D /* JXPagerListRefreshView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerListRefreshView.h; path = Sources/JXPagerView/JXPagerListRefreshView.h; sourceTree = ""; }; + 3B812F8DDDC6CC3E3ACDB1D17716E70C /* JXCategoryTitleImageCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageCellModel.h; path = Sources/TitleImage/JXCategoryTitleImageCellModel.h; sourceTree = ""; }; + 3C530EFDCDFFC732A409BADBE3F0D068 /* MBProgressHUD.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MBProgressHUD.modulemap; sourceTree = ""; }; + 3C71B9877A51B54673C7FFC0C3276863 /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; + 3CA454A209E71894BC9366B10B95D086 /* LKS_Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_Helper.h; path = Src/Main/Server/Others/LKS_Helper.h; sourceTree = ""; }; 3CB13D51E717D347023EEB57263E3072 /* Pods-CustomKeyboard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-CustomKeyboard-dummy.m"; sourceTree = ""; }; - 3D1EF86D80B6333688465CCC41BA33F7 /* SDImageCodersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCodersManager.m; path = SDWebImage/Core/SDImageCodersManager.m; sourceTree = ""; }; - 3D3112C49688EF3F713F0D64A22E6E66 /* LKS_HierarchyDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.m; sourceTree = ""; }; - 3DAB18271BAF2DB3E49BCAF049FC4F01 /* HWPanModalInteractiveAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalInteractiveAnimator.h; path = Sources/Animator/HWPanModalInteractiveAnimator.h; sourceTree = ""; }; - 3E42525F0D8B91406B2C7015E3E52B29 /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; - 3E8FEF4AED255508CB8E745D200EDE89 /* ResourceBundle-JXCategoryView-JXCategoryView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-JXCategoryView-JXCategoryView-Info.plist"; sourceTree = ""; }; - 3EA0FACBE46F43AB7A99266BBBF20510 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; - 3F5F8D57BABE5A9AD2D0BC75B55D1A52 /* LSTTimer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-umbrella.h"; sourceTree = ""; }; - 3F77AB571A5252972C84B67134918B5F /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; - 3FAF0BE8296496D28F5C6AA6974B39E8 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; - 401F0F0AAEEDDA40C2D25DB817C9B5C6 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; - 402826B784C1198142F399AD251F2A3A /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; - 40380EFCFB5E34558C193A723D077BE3 /* UITableView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+LookinServer.h"; path = "Src/Main/Server/Category/UITableView+LookinServer.h"; sourceTree = ""; }; - 41B90877BBAECA72C2F67A5E39E1E87A /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; - 41EF7420DD5FC6E4D1134632895868F3 /* LookinAttrIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttrIdentifiers.m; path = Src/Main/Shared/LookinAttrIdentifiers.m; sourceTree = ""; }; - 42EF67A85226C8C14C983E81C71F392D /* MJRefreshConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConfig.m; path = MJRefresh/MJRefreshConfig.m; sourceTree = ""; }; - 42F934D080B2CC7F2CD859E2B472A585 /* HWPanModalAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalAnimator.h; path = Sources/Animator/HWPanModalAnimator.h; sourceTree = ""; }; - 433A3E0D94E768912FBBE36F7C961678 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; + 3D72A1C48CB238B4D5F50BA925DEDEAE /* UIColor+JXAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+JXAdd.h"; path = "Sources/Common/UIColor+JXAdd.h"; sourceTree = ""; }; + 3D8A828331C79742A41F54C2050C90A8 /* LookinAppInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAppInfo.h; path = Src/Main/Shared/LookinAppInfo.h; sourceTree = ""; }; + 3DDFB85C3FF1851267A20FACB64B4497 /* LookinCustomDisplayItemInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomDisplayItemInfo.h; path = Src/Main/Shared/LookinCustomDisplayItemInfo.h; sourceTree = ""; }; + 3DF983F1377AD739C3DF33AE51632FCF /* Bugly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.debug.xcconfig; sourceTree = ""; }; + 3E05D85B85A84A7D628539AD042EC841 /* Lookin_PTProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTProtocol.h; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.h; sourceTree = ""; }; + 3E34DAE4904CE87FBB70688EA36DF9D3 /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; + 3ED4F75E10F9C3D76FF139C89BBB8154 /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; + 3F0DA836C065C821DDDE100A36B1C087 /* HWBackgroundConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWBackgroundConfig.m; path = Sources/View/HWBackgroundConfig.m; sourceTree = ""; }; + 402736588AC9D07AA589F2943BAE3C89 /* SDCallbackQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDCallbackQueue.h; path = SDWebImage/Core/SDCallbackQueue.h; sourceTree = ""; }; + 404BBFC3B5A2ADAEF4E188881B357111 /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; + 406C8D3FB686F0A24482B5EC0964787A /* DZNEmptyDataSet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DZNEmptyDataSet.modulemap; sourceTree = ""; }; + 407D327724ADF96791DFD9B922AA254A /* LookinDisplayItemDetail.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItemDetail.h; path = Src/Main/Shared/LookinDisplayItemDetail.h; sourceTree = ""; }; + 412FD8B68949345873B82E2D0C864C85 /* NSBundle+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBundle+MJRefresh.h"; path = "MJRefresh/NSBundle+MJRefresh.h"; sourceTree = ""; }; + 41B61F60FDADCD1988F2A5F1B93F6FB0 /* AFImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFImageDownloader.m; path = "UIKit+AFNetworking/AFImageDownloader.m"; sourceTree = ""; }; + 4201C2CD51C00E5AC0EC45DC41B32695 /* HWPanModal.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.debug.xcconfig; sourceTree = ""; }; + 4228538168305A12A3465600D6FA372A /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; + 429004AF40A48DE835234068590E6A94 /* UIImage+Metadata.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Metadata.h"; path = "SDWebImage/Core/UIImage+Metadata.h"; sourceTree = ""; }; + 438B056E0DAE53D40DB4894FF36879AF /* LookinServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.release.xcconfig; sourceTree = ""; }; + 43901AAA2BB40AE5F534540676833E30 /* UIView+WebCacheOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheOperation.m"; path = "SDWebImage/Core/UIView+WebCacheOperation.m"; sourceTree = ""; }; + 43BA7B9A75BE654B8242649314595C2D /* JXCategoryTitleVerticalZoomView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomView.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m; sourceTree = ""; }; + 43E163147E40F868F458CD979D77C4E4 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MJExtension-MJExtension"; path = MJExtension.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 43F4AA149B8B7307ED5DA363EBC93DBF /* MJRefresh.bundle */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = "wrapper.plug-in"; name = MJRefresh.bundle; path = MJRefresh/MJRefresh.bundle; sourceTree = ""; }; - 44ABB514E2C8BB7AA8881283E1F0FE47 /* LKS_ExportManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ExportManager.m; path = Src/Main/Server/Others/LKS_ExportManager.m; sourceTree = ""; }; - 44CB5B4F2C2351C8F32C675C94C2EAC0 /* JXCategoryNumberView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberView.m; path = Sources/Number/JXCategoryNumberView.m; sourceTree = ""; }; - 45505B1DFA133379CEE6DD6D8148013D /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; - 4561971E2CF7A1F1B00AC6091B3448DE /* NSData+ImageContentType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+ImageContentType.h"; path = "SDWebImage/Core/NSData+ImageContentType.h"; sourceTree = ""; }; - 45880427FEDFE00B81EA46DB6F5AFD52 /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; - 46461C91DF1586852C84C6489E5ED4BA /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; - 4688EE09ADCEE19CD4BDF95833F7E81D /* MJPropertyType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyType.m; path = MJExtension/MJPropertyType.m; sourceTree = ""; }; - 471A02E298FA363A6051045C83C8BE05 /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; - 47655EC4466A20F4BEC0C76B8F4C5440 /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; - 47A777C7602E23E11AE500103D52A253 /* MJExtensionConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJExtensionConst.m; path = MJExtension/MJExtensionConst.m; sourceTree = ""; }; - 47F474CA83A8EC338136568BDBFF8343 /* UIView+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+MJExtension.h"; path = "MJRefresh/UIView+MJExtension.h"; sourceTree = ""; }; - 491DFACE04BF80FD0F37C4ECFE908522 /* SDCallbackQueue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDCallbackQueue.h; path = SDWebImage/Core/SDCallbackQueue.h; sourceTree = ""; }; - 4A2FC8CB1CFEB2812A4E5E466940232C /* LKS_ObjectRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ObjectRegistry.h; path = Src/Main/Server/Others/LKS_ObjectRegistry.h; sourceTree = ""; }; - 4A970B89D7ECEFF994ACF22A5493E001 /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; - 4A984C0F36AC5CCB478D87C1F7E4019D /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; - 4AA7B1CA514C2D6FAA50ACF865AF4203 /* JXCategoryView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "JXCategoryView-Info.plist"; sourceTree = ""; }; - 4AD6EDFD2A6C9CC51CFC6A4BAA9C72A9 /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; - 4B0139E3193D3960F1A46D73064CA34A /* JXCategoryIndicatorComponentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorComponentView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.h; sourceTree = ""; }; - 4B98EB1E5D5490C1C17C90E124262C80 /* HWPanModalPresentationUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationUpdateProtocol.h; path = Sources/Presentable/HWPanModalPresentationUpdateProtocol.h; sourceTree = ""; }; - 4BC6F317480167EA6C97C3ED771D57CA /* UIBlurEffect+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBlurEffect+LookinServer.h"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.h"; sourceTree = ""; }; - 4C4CB24406FFC32C73C615D12F0532C7 /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; - 4CF942497E18FEE75DD2CDC6779A790A /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; - 4D000260D6BB658E0BB519087E88F883 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; - 4D4A62A4549AC17B0296FF7D29E15454 /* MJExtension-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJExtension-dummy.m"; sourceTree = ""; }; - 4D93DBFF5810549335063D430FB33721 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; - 4DE32E1B12FEE2A9EAE1F5A67697D6E8 /* HWPanIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanIndicatorView.h; path = Sources/View/HWPanIndicatorView.h; sourceTree = ""; }; - 4E2D9F4632DB7036D701CB57007800AB /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; - 4E5F2B584A65C9246E3E8A7A856FF44D /* JXCategoryIndicatorParamsModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorParamsModel.h; path = Sources/Common/JXCategoryIndicatorParamsModel.h; sourceTree = ""; }; - 4ED1A3436209E7EBF3356CEC094C7391 /* LookinConnectionResponseAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionResponseAttachment.m; path = Src/Main/Shared/LookinConnectionResponseAttachment.m; sourceTree = ""; }; - 4F81509596D525489E9AA55CE4C0B4C1 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; - 50BCF4AA1A75105CC04AA446B0DB9B40 /* JXCategoryDotView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotView.h; path = Sources/Dot/JXCategoryDotView.h; sourceTree = ""; }; - 5107F5A871AC7AEDAD8C78C1F1AB8E40 /* UIImage+MemoryCacheCost.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MemoryCacheCost.m"; path = "SDWebImage/Core/UIImage+MemoryCacheCost.m"; sourceTree = ""; }; - 5128E7CF3F35BE25186575F63661EEF6 /* MJRefreshTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshTrailer.m; path = MJRefresh/Base/MJRefreshTrailer.m; sourceTree = ""; }; - 51E7542749774862B8EB9AAB7010F1AA /* JXCategoryBaseCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseCellModel.m; path = Sources/Base/JXCategoryBaseCellModel.m; sourceTree = ""; }; + 449CCE39A5A9EA789B9A284113D1025E /* SDImageFramePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFramePool.h; path = SDWebImage/Private/SDImageFramePool.h; sourceTree = ""; }; + 44B0B0F109E74E6F92B6497967BCE536 /* LookinCustomDisplayItemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomDisplayItemInfo.m; path = Src/Main/Shared/LookinCustomDisplayItemInfo.m; sourceTree = ""; }; + 452754C8CDFE17EC42C563B4B6E1F69A /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; + 4531FCCC5DE7D00D6F827809F7CD4289 /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; + 453FB14441528B4AE2CF3592D5874C54 /* HWPanContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanContainerView.m; path = Sources/View/HWPanContainerView.m; sourceTree = ""; }; + 45E71D8592674E85D7D5DA4831A592BE /* JXCategoryBaseView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseView.h; path = Sources/Base/JXCategoryBaseView.h; sourceTree = ""; }; + 45FCB10C5ADD911EC17F1E6BAAFE9892 /* UIScrollView+EmptyDataSet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+EmptyDataSet.m"; path = "Source/UIScrollView+EmptyDataSet.m"; sourceTree = ""; }; + 469576EF612EDF18C057B4FB1E423192 /* LookinServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-umbrella.h"; sourceTree = ""; }; + 46F71F9F19999F6D4F186847FA3CC8F7 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; + 47A97040129EEE8B96AEEA0A9B73DA45 /* HWPanModalInteractiveAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalInteractiveAnimator.h; path = Sources/Animator/HWPanModalInteractiveAnimator.h; sourceTree = ""; }; + 4883D2BC668CDDE38C319AC414885077 /* AFSecurityPolicy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFSecurityPolicy.m; path = AFNetworking/AFSecurityPolicy.m; sourceTree = ""; }; + 48A816CF0BA23EA39A514E31ED98C5D3 /* UIRefreshControl+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIRefreshControl+AFNetworking.h"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.h"; sourceTree = ""; }; + 48E1ED2BAC3C5C1B077AAB67F3325D4E /* DZNEmptyDataSet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.debug.xcconfig; sourceTree = ""; }; + 4A15AB0AB6FCF1589E2A6CEDC3CF0B95 /* HWPanIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanIndicatorView.h; path = Sources/View/HWPanIndicatorView.h; sourceTree = ""; }; + 4A2BDE1ACE119E645C72F92B4CCAECF4 /* NSObject+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Lookin.h"; path = "Src/Main/Shared/Category/NSObject+Lookin.h"; sourceTree = ""; }; + 4A4AE7A504C340AE8EE98F70C318D63C /* Masonry.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.release.xcconfig; sourceTree = ""; }; + 4AAF4EE016C54A7F264F9B8FBB0853C8 /* NSArray+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Lookin.m"; path = "Src/Main/Shared/Category/NSArray+Lookin.m"; sourceTree = ""; }; + 4B2681504ECC11F7B0563ECF0A1FDDFA /* Color+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Color+Lookin.m"; path = "Src/Main/Shared/Category/Color+Lookin.m"; sourceTree = ""; }; + 4B6F5F5F32C55F6B9F4E87EC57A0A074 /* Lookin_PTProtocol.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTProtocol.m; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.m; sourceTree = ""; }; + 4BC98580A0BA844CDD661F01812A35C7 /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; + 4C354F545C0CC91C4033DC0D648B3819 /* AFSecurityPolicy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFSecurityPolicy.h; path = AFNetworking/AFSecurityPolicy.h; sourceTree = ""; }; + 4C7F47A09BE728487DF546FE00CA555E /* UIViewController+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+LookinServer.h"; path = "Src/Main/Server/Category/UIViewController+LookinServer.h"; sourceTree = ""; }; + 4D2B4D757199E020DE43661B60EB2819 /* LKS_Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_Helper.m; path = Src/Main/Server/Others/LKS_Helper.m; sourceTree = ""; }; + 4EBFFAE4CE0471C78DB70755CFCC7609 /* HWPanModalPresentationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationDelegate.h; path = Sources/Delegate/HWPanModalPresentationDelegate.h; sourceTree = ""; }; + 4F8D39C76EB84B28054B453882C78E41 /* LookinAttributesSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesSection.m; path = Src/Main/Shared/LookinAttributesSection.m; sourceTree = ""; }; + 4F973225F70967D6C01DF18ABCACA3C4 /* HWPanModal-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-prefix.pch"; sourceTree = ""; }; + 5048CCD1406058B50480C383463B3C39 /* LYEmptyView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LYEmptyView.debug.xcconfig; sourceTree = ""; }; + 5105F32D29B4C0D80B780EE2DF6D2898 /* JXCategoryTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleView.h; path = Sources/Title/JXCategoryTitleView.h; sourceTree = ""; }; + 513C1A2EE22268DD51EB02AE24E3B579 /* HWPanModalShadow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalShadow.m; path = Sources/View/HWPanModalShadow.m; sourceTree = ""; }; + 517D8EDC9F4BA34E4E4060247125B56D /* UIImage+MultiFormat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+MultiFormat.h"; path = "SDWebImage/Core/UIImage+MultiFormat.h"; sourceTree = ""; }; + 517EACA3BDCA2E1CB5B954656D4B9F02 /* LYEmptyView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LYEmptyView-prefix.pch"; sourceTree = ""; }; + 51AB8F5FA4517AC80D7763B2894462EB /* LKS_EventHandlerMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_EventHandlerMaker.h; path = Src/Main/Server/Others/LKS_EventHandlerMaker.h; sourceTree = ""; }; + 524557CADCF9674C470A7B1764594AEC /* JXCategoryTitleImageCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageCell.h; path = Sources/TitleImage/JXCategoryTitleImageCell.h; sourceTree = ""; }; + 526BF014AFB62CD2E2E5312B573388BC /* JXCategoryView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = JXCategoryView.modulemap; sourceTree = ""; }; + 52AF8374431A1EA8420BA1E29139131E /* LKS_TraceManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_TraceManager.h; path = Src/Main/Server/Others/LKS_TraceManager.h; sourceTree = ""; }; + 52FF07E10C8C0B816653B6836CCFFD04 /* LKS_CustomAttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.h; sourceTree = ""; }; + 53155231B4EB5B29274A0546D6F39B91 /* NSButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSButton+WebCache.m"; path = "SDWebImage/Core/NSButton+WebCache.m"; sourceTree = ""; }; 5327DD01C6533D102D66E1636B3827F3 /* Pods-keyBoard-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-keyBoard-acknowledgements.plist"; sourceTree = ""; }; - 5409A465D5BE745D21B9F8847B798BD5 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; - 54CBDA1EBC8A896E6DB3A15D5332DB1C /* JXCategoryTitleVerticalZoomCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomCell.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.h; sourceTree = ""; }; - 552D2F14AF7B393E80A67680A66A34D4 /* HWPanModalPresentationAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationAnimator.h; path = Sources/Animator/HWPanModalPresentationAnimator.h; sourceTree = ""; }; - 55A76B2979ED12495977612719BE47A2 /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; - 55E89941A6B7A73D479A0770A9C96C14 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; - 56642F6C221107F2F8D033758EEB482A /* Masonry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Masonry.h; path = Masonry/Masonry.h; sourceTree = ""; }; - 567674319F769F7E8B80920BBBD444B6 /* LKS_CustomAttrSetterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrSetterManager.m; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.m; sourceTree = ""; }; - 5716AF79F54782358457FBB452B73975 /* SDWebImageDownloaderDecryptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderDecryptor.h; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.h; sourceTree = ""; }; - 5731585BDD8DA229201CF537357BCA56 /* HWPanModalHeight.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalHeight.h; path = Sources/Presentable/HWPanModalHeight.h; sourceTree = ""; }; - 5734E5CBE9E63CD37E71A375796587B5 /* UIImage+MultiFormat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+MultiFormat.m"; path = "SDWebImage/Core/UIImage+MultiFormat.m"; sourceTree = ""; }; - 57D32F597DFAC06B9198FA1F48D2995D /* LookinAttributesGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesGroup.h; path = Src/Main/Shared/LookinAttributesGroup.h; sourceTree = ""; }; - 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; - 595E9691CC1A487C44431E51893A1D01 /* LookinConnectionAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionAttachment.m; path = Src/Main/Shared/LookinConnectionAttachment.m; sourceTree = ""; }; - 5A6A16B78780399804F5DD15816ADE2B /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; - 5AEB6DDDE2B74ABEB1D68CE037D784DC /* HWPresentingVCAnimatedTransitioning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPresentingVCAnimatedTransitioning.h; path = Sources/Animator/HWPresentingVCAnimatedTransitioning.h; sourceTree = ""; }; - 5B4EF64EB8018D8E9CE7C8CB5FACCD5B /* NSString+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+MJExtension.m"; path = "MJExtension/NSString+MJExtension.m"; sourceTree = ""; }; - 5B609960A71B1FE2AB814B679D9E7609 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; - 5C519E29CD93815AEE0C119E2109F0A2 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; - 5C560A21071D707C98AE6CD75AED8BFD /* UIImageView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+LookinServer.m"; path = "Src/Main/Server/Category/UIImageView+LookinServer.m"; sourceTree = ""; }; - 5DA1EEEB5386D6FCA6523BE43601C382 /* LookinAutoLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAutoLayoutConstraint.m; path = Src/Main/Shared/LookinAutoLayoutConstraint.m; sourceTree = ""; }; + 541552D5AA99C6DF3406BD050E1467DB /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; + 55488AFE93BF97340EF80D0D6C1E2CA0 /* SDImageHEICCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageHEICCoder.h; path = SDWebImage/Core/SDImageHEICCoder.h; sourceTree = ""; }; + 5633AC0E53EEE3085AFE9CB101E6C0CF /* JXCategoryNumberCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberCellModel.m; path = Sources/Number/JXCategoryNumberCellModel.m; sourceTree = ""; }; + 568F43CF567335FABEC4825ED4776B19 /* HWPanModalShadow.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalShadow.h; path = Sources/View/HWPanModalShadow.h; sourceTree = ""; }; + 56F54F2E70EF1B4C4CD6CC49471EBF8F /* JXPagingView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = JXPagingView.modulemap; sourceTree = ""; }; + 570A4EA50A989D93BDAC90837E4F3637 /* JXCategoryImageCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageCellModel.m; path = Sources/Image/JXCategoryImageCellModel.m; sourceTree = ""; }; + 572433DB55AF2085E2E4D419FCE37679 /* MJRefreshTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshTrailer.h; path = MJRefresh/Base/MJRefreshTrailer.h; sourceTree = ""; }; + 57460121EED43E41D624C46A92FE9E08 /* JXPagerListContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerListContainerView.h; path = Sources/JXPagerView/JXPagerListContainerView.h; sourceTree = ""; }; + 57A3558C23C0EFA92D7C80FBF8A6332A /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; + 57B2E23309380B0E15F50C277205AC0D /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; + 59720B9654BC9C6EC9F2FF79FB3FEB5A /* HWPanModal.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HWPanModal.modulemap; sourceTree = ""; }; + 5978BDDC6A977C5D014B3D0CC0294043 /* SDWebImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = SDWebImage.modulemap; sourceTree = ""; }; + 59CF9D4B8C92110B4BC1E1792E4AAEA5 /* SDWebImageTransition.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransition.h; path = SDWebImage/Core/SDWebImageTransition.h; sourceTree = ""; }; + 5B758502F7753329D591359BA2747831 /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; + 5B766998FBEAD558A15F06134D5A9335 /* JXCategoryIndicatorTriangleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorTriangleView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.h; sourceTree = ""; }; + 5C64D6AC35DE27CAD74CA154541AF1C9 /* MJRefreshTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshTrailer.m; path = MJRefresh/Base/MJRefreshTrailer.m; sourceTree = ""; }; + 5C847B3748FF7761203F8DDBD028D651 /* LookinServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-prefix.pch"; sourceTree = ""; }; + 5CB6F43E2EFE165260D66B0BFF9A8831 /* JXCategoryImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageView.m; path = Sources/Image/JXCategoryImageView.m; sourceTree = ""; }; + 5CB726B6B5C83EAABA9AC89E76D45643 /* DZNEmptyDataSet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.release.xcconfig; sourceTree = ""; }; + 5D2F2FDA20E8BC9884D1E9ED05D83DDF /* UITextField+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+LookinServer.h"; path = "Src/Main/Server/Category/UITextField+LookinServer.h"; sourceTree = ""; }; 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DZNEmptyDataSet; path = DZNEmptyDataSet.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 5DB99CA546DA98A4F2641B6CD4635589 /* LookinServer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-prefix.pch"; sourceTree = ""; }; - 5DEBBB0A3F6FE82FAB648C476116F8AF /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SDWebImage-SDWebImage-Info.plist"; sourceTree = ""; }; - 5E8666C77464C3B683AB0F8D4DEA6951 /* SDAsyncBlockOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAsyncBlockOperation.m; path = SDWebImage/Private/SDAsyncBlockOperation.m; sourceTree = ""; }; - 5F31829B35104CCEC70FD712B1D4D4E2 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; - 5F35F0E5B188FD04E8E889503DEA5841 /* LSTPopViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopViewProtocol.h; path = LSTPopView/Classes/Code/LSTPopViewProtocol.h; sourceTree = ""; }; - 5F4DF3FAFAFDE0BEC7606CB8D4C2C98B /* LookinServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LookinServer-dummy.m"; sourceTree = ""; }; - 5FD7A1D3C3D9D8E6D3476B7C2093A431 /* HWPanModalShadow.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalShadow.m; path = Sources/View/HWPanModalShadow.m; sourceTree = ""; }; - 603287955CE071E6EBDC96A98AB97750 /* JXPagerListRefreshView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerListRefreshView.m; path = Sources/JXPagerView/JXPagerListRefreshView.m; sourceTree = ""; }; - 60461DAD42E3B1F75AD82553A6C40C64 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; - 60913F6F25D56976457BFFCFF2C2FADC /* LKS_ConnectionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ConnectionManager.h; path = Src/Main/Server/Connection/LKS_ConnectionManager.h; sourceTree = ""; }; - 60A68C8A5D160FE046F60DF6C446111D /* JXCategoryTitleVerticalZoomCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomCellModel.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h; sourceTree = ""; }; - 61080F57DD92AB8ABC811791B547090C /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; - 6194A35582043CD8893F293567547D72 /* HWDimmedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWDimmedView.m; path = Sources/View/HWDimmedView.m; sourceTree = ""; }; - 61A0FA60F5E41A8B04C442FE582DA298 /* SDDisplayLink.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDisplayLink.m; path = SDWebImage/Private/SDDisplayLink.m; sourceTree = ""; }; - 61A7EBF5198D90CFC9C01A0BA03924D8 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; - 6260795D5ABBA18F8EFECC2CEB871872 /* HWPanModal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModal.h; path = Sources/HWPanModal.h; sourceTree = ""; }; - 62C28B0ACA1E8D749FA6E65D70CFCB2D /* HWShoppingCartPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWShoppingCartPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m; sourceTree = ""; }; - 62CDFF5EFD0FE66B2DEECF2E904EBEC1 /* JXCategoryIndicatorLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h; sourceTree = ""; }; - 63000DF25140BBB4F03EDFC289F2B197 /* LookinHierarchyFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyFile.h; path = Src/Main/Shared/LookinHierarchyFile.h; sourceTree = ""; }; - 6315771A902975A20B41342DD5234115 /* DZNEmptyDataSet.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.debug.xcconfig; sourceTree = ""; }; - 634BE374E20F830B5B77550EFCF89612 /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; - 635235003B3FEDB8B457A8FFF46C69E3 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; + 5DC759BB8D0141E0F064F3BCA7197315 /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; + 5E5C516541F7C7AC40E990C05307FEEF /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; + 5E9C6ED309FB0F6481FF6639AA9C417B /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; + 5EA970CCF2164DC59ECEE9DE06B1BCBA /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; + 5EADC8693C7692FBBE4CE165F51B28E9 /* JXCategoryTitleImageCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageCell.m; path = Sources/TitleImage/JXCategoryTitleImageCell.m; sourceTree = ""; }; + 5EE479D553AE99C7C893E8B21299B3AC /* JXCategoryIndicatorBackgroundView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorBackgroundView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h; sourceTree = ""; }; + 5EF3B546633CC3DB26A173DE519AC3D7 /* SDImageCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoder.h; path = SDWebImage/Core/SDImageCoder.h; sourceTree = ""; }; + 5EFCD05B81004D2C239BFBEBEE4DC3D5 /* JXCategoryIndicatorCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorCellModel.h; path = Sources/Indicator/JXCategoryIndicatorCellModel.h; sourceTree = ""; }; + 60195DBDE404C5ECBC4E710D0F5E50E7 /* UIImage+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+LookinServer.h"; path = "Src/Main/Server/Category/UIImage+LookinServer.h"; sourceTree = ""; }; + 6021531912761F1BDBFE14A61784B26D /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; + 60696FE70F42B1A0CD7B0614C2A2F16C /* UIView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+MJExtension.m"; path = "MJRefresh/UIView+MJExtension.m"; sourceTree = ""; }; + 607560CCA2D3766D85B5AEE557812D0E /* SDWebImageDownloaderRequestModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderRequestModifier.m; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.m; sourceTree = ""; }; + 6099FBA2A3EE3D602B49D82E19FA5875 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; + 60F9066C601EE11D24D22C170F05AF13 /* LookinWeakContainer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinWeakContainer.m; path = Src/Main/Shared/LookinWeakContainer.m; sourceTree = ""; }; + 6148399DD529311A930CEF2A2AC2FBD4 /* LookinIvarTrace.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinIvarTrace.m; path = Src/Base/LookinIvarTrace.m; sourceTree = ""; }; + 616DFB551B9EEC8F4D98DBDC3C2543CA /* MJExtension.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJExtension.modulemap; sourceTree = ""; }; + 61C0CC288A628CFA871D599D497E2A8E /* SDWebImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "SDWebImage-dummy.m"; sourceTree = ""; }; + 61D65BB6AAD351E64F3FE46FACDEED4F /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; + 6331F4B8E0F66A8F7B8028B33CF71268 /* LSTTimer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTTimer.modulemap; sourceTree = ""; }; + 633C3F66E9BA0FD7538C55D5287ED77E /* LSTPopView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTPopView.m; path = LSTPopView/Classes/Code/LSTPopView.m; sourceTree = ""; }; + 634119E1E65F912498A262851F72517B /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = ""; }; 638488B4F5FF9C67F848A841B1A34765 /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreGraphics.framework; sourceTree = DEVELOPER_DIR; }; - 639A45B880AEBFE1C16D4A9F3AA3D49C /* JXCategoryTitleImageCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageCell.h; path = Sources/TitleImage/JXCategoryTitleImageCell.h; sourceTree = ""; }; + 63A3BD4651AA1DDCB216ABB7FBC3A69E /* MJRefreshConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConst.h; path = MJRefresh/MJRefreshConst.h; sourceTree = ""; }; 641251D3092FFCF2B6259BF8676A212E /* Pods-CustomKeyboard-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CustomKeyboard-Info.plist"; sourceTree = ""; }; - 64891F4568CD87380D133019B00B2324 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; - 648C72C63334BCDFD466058863FCDAC9 /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; - 6549E81907E05317DA862F329B2D4DDC /* JXCategoryTitleVerticalZoomCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomCellModel.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.m; sourceTree = ""; }; - 658F3554D0CFB5BC5E252408F8CD5317 /* JXCategoryIndicatorView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorView.h; path = Sources/Indicator/JXCategoryIndicatorView.h; sourceTree = ""; }; - 659E6E588427268237F9F2C40D2F6CBD /* LookinAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttribute.h; path = Src/Main/Shared/LookinAttribute.h; sourceTree = ""; }; - 65F97EE1352D7FC02982C03FB1D0FBEB /* JXCategoryBaseCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseCellModel.h; path = Sources/Base/JXCategoryBaseCellModel.h; sourceTree = ""; }; - 6645D9E2FCEC9ED435B284460DEDDF89 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; - 6736D1FBB305C05AEAB982F817CD80C1 /* LKS_HierarchyDetailsHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_HierarchyDetailsHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.m; sourceTree = ""; }; - 673B42B9F094B1F5ED808EE1BA26FC30 /* CALayer+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Lookin.m"; path = "Src/Main/Shared/Category/CALayer+Lookin.m"; sourceTree = ""; }; - 6749EA453DC312E08B14CE8AFDB79F3C /* HWPanModalPresentationDelegate.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationDelegate.m; path = Sources/Delegate/HWPanModalPresentationDelegate.m; sourceTree = ""; }; - 6999AA4E4990D39E732B0FABF0CBB3CA /* JXCategoryCollectionView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryCollectionView.h; path = Sources/Common/JXCategoryCollectionView.h; sourceTree = ""; }; - 69AE4F19374B51CFBF6330CC5F82B32A /* Lookin_PTChannel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTChannel.m; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.m; sourceTree = ""; }; - 6A2C1D3548C9E3091DE847DA61A18E5B /* ResourceBundle-MJExtension-MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJExtension-MJExtension-Info.plist"; sourceTree = ""; }; - 6A34A08E72CC7EE2DEDDC6F48148CD79 /* UIColor+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+LookinServer.h"; path = "Src/Main/Server/Category/UIColor+LookinServer.h"; sourceTree = ""; }; - 6A632B4F7EA06C55CADB3BF7C49D7860 /* SDWebImageOptionsProcessor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOptionsProcessor.m; path = SDWebImage/Core/SDWebImageOptionsProcessor.m; sourceTree = ""; }; - 6A91961A508CA556983A4A3F57FB3133 /* MJRefreshTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshTrailer.h; path = MJRefresh/Base/MJRefreshTrailer.h; sourceTree = ""; }; - 6B5C2096D95608EEB566217452868E46 /* UIImage+Metadata.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Metadata.m"; path = "SDWebImage/Core/UIImage+Metadata.m"; sourceTree = ""; }; - 6B857386E2ABDB8C3FD8B5797430DF26 /* LookinAttrIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrIdentifiers.h; path = Src/Main/Shared/LookinAttrIdentifiers.h; sourceTree = ""; }; - 6BEFA0A1959620AC394975A01082A23B /* SDWebImageCacheSerializer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheSerializer.m; path = SDWebImage/Core/SDWebImageCacheSerializer.m; sourceTree = ""; }; - 6C07CC30774DAAE34D68C477CE151A36 /* NSArray+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASAdditions.h"; path = "Masonry/NSArray+MASAdditions.h"; sourceTree = ""; }; - 6C2FE2279B0EA1E9F949E0AF58D09E3B /* LKS_InbuiltAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_InbuiltAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.h; sourceTree = ""; }; - 6C338AB8936504A929CF0929B7D23C9F /* MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJExtension-Info.plist"; sourceTree = ""; }; - 6C34880EFF82114AECCB354A57C47E7C /* JXCategoryTitleCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleCellModel.h; path = Sources/Title/JXCategoryTitleCellModel.h; sourceTree = ""; }; - 6C3B1F50C3A3E82B67AE98F2BAAD5C3C /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; - 6C70C9B1AD0F41A4C5E9026F5AF7F65F /* JXCategoryListContainerRTLCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryListContainerRTLCell.m; path = Sources/Common/JXCategoryListContainerRTLCell.m; sourceTree = ""; }; - 6CE2A9B22B9FC87A02A230599E72D4F1 /* NSObject+MJKeyValue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJKeyValue.m"; path = "MJExtension/NSObject+MJKeyValue.m"; sourceTree = ""; }; - 6D2CC2D1F9AB2D4CFC68B6327C2793C5 /* MJRefreshAutoNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoNormalFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.m; sourceTree = ""; }; - 6D390F38F6574F6D973E2C4A52D004A1 /* JXCategoryTitleVerticalZoomCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomCell.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m; sourceTree = ""; }; - 6DB3789FF1142F1817E52B4F6C9BA1B6 /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; - 6DD8CB4B9EF9002F59BC7DE12F17ED7E /* Lookin_PTPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTPrivate.h; path = Src/Main/Shared/Peertalk/Lookin_PTPrivate.h; sourceTree = ""; }; - 6EF0D4A56B002AB1528A77EBDA7EC804 /* HWPanIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanIndicatorView.m; path = Sources/View/HWPanIndicatorView.m; sourceTree = ""; }; - 6FDFBF5B5FE03EAE7CBA31ED300F848E /* Peertalk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Peertalk.h; path = Src/Main/Shared/Peertalk/Peertalk.h; sourceTree = ""; }; - 7032D81BB8B12F48732F1EBEA7A020D7 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; - 709DA7415B508D723EE552B201284026 /* AFNetworking-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "AFNetworking-Info.plist"; sourceTree = ""; }; - 71D68B7747CE473E42AF5D55F07BB002 /* DZNEmptyDataSet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-prefix.pch"; sourceTree = ""; }; - 72F67C5C9E4A93AFE6FF113487609183 /* JXCategoryBaseView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseView.m; path = Sources/Base/JXCategoryBaseView.m; sourceTree = ""; }; - 731627030A2BE88955F55A35D6DCABC1 /* JXPagingView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = JXPagingView.modulemap; sourceTree = ""; }; - 732327FB0ADC252437B580203795D95F /* CALayer+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+Lookin.h"; path = "Src/Main/Shared/Category/CALayer+Lookin.h"; sourceTree = ""; }; - 74444E41B3920B9EB4DA66DCD2975612 /* JXCategoryIndicatorBackgroundView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorBackgroundView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m; sourceTree = ""; }; - 7446E6EDA4118B08C0D538CAA41C47AA /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; - 75A91D4BB6118442A9B7E27598AE7C99 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; - 75B6A4916D912131001F61C28CCA6565 /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; - 761A654F557EA15B24079623AF9184F9 /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/include/FLAnimatedImage.h; sourceTree = ""; }; - 7626DD9951DC84318DF6E875CD7A8C20 /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = ""; }; - 765DBAD68AB5F355FB80870758AFB22C /* LookinIvarTrace.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinIvarTrace.h; path = Src/Base/LookinIvarTrace.h; sourceTree = ""; }; - 76724C714C93839E6993DF68B545F17B /* UIViewController+LayoutHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LayoutHelper.m"; path = "Sources/Presentable/UIViewController+LayoutHelper.m"; sourceTree = ""; }; - 76DCA3DD0D37AD6B5C7C65D7829AE3A8 /* LSTPopView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LSTPopView.modulemap; sourceTree = ""; }; - 7707C9BBD69232F1162D6ACABE70B7ED /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; - 7755C313C99E29481B2A9849C31152BE /* DZNEmptyDataSet.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DZNEmptyDataSet.release.xcconfig; sourceTree = ""; }; - 7778E8300903006F261959B2010A06D2 /* JXCategoryImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageView.m; path = Sources/Image/JXCategoryImageView.m; sourceTree = ""; }; - 77BA4318333FADE07B128DB446EA0F64 /* HWPanModalContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContentView.m; path = Sources/View/PanModal/HWPanModalContentView.m; sourceTree = ""; }; + 64D49E5BC4A3E2ECFAA63B66E38A6F8D /* FLAnimatedImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FLAnimatedImage-Info.plist"; sourceTree = ""; }; + 6516BB90D0CA47F75712B356350A9FC1 /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; + 6523AFC889399B6B25C08CCBEEE2F0B6 /* DZNEmptyDataSet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-umbrella.h"; sourceTree = ""; }; + 657631264951C7514A1788B1C6316E7F /* CALayer+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+Lookin.m"; path = "Src/Main/Shared/Category/CALayer+Lookin.m"; sourceTree = ""; }; + 659E098AEC86E789470E344EB23EC1DD /* JXPagerListRefreshView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerListRefreshView.m; path = Sources/JXPagerView/JXPagerListRefreshView.m; sourceTree = ""; }; + 65CCB6F10EC6B284E771B999975CE0B0 /* MJExtensionConst.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtensionConst.h; path = MJExtension/MJExtensionConst.h; sourceTree = ""; }; + 6650E50E5FAFFD61FC973E5A0D5C8398 /* SDWebImageDownloaderConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderConfig.m; path = SDWebImage/Core/SDWebImageDownloaderConfig.m; sourceTree = ""; }; + 66E849825D4B5783372753D6820DE97F /* MJRefreshHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshHeader.m; path = MJRefresh/Base/MJRefreshHeader.m; sourceTree = ""; }; + 673C80521DE4F20FDE3E9A82E6EBEC53 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; + 674659ECD497CB56B02FD385F68621CA /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; + 6757029D58C1BFD772BCC87D14A52E39 /* UIView+LSTPV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LSTPV.h"; path = "LSTPopView/Classes/Code/UIView+LSTPV.h"; sourceTree = ""; }; + 68AAA13D71385283DB69A35327BC2F47 /* LSTTimer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTTimer.h; path = LSTTimer/Classes/LSTTimer.h; sourceTree = ""; }; + 6A2E7581F1DA07EBD6D2568091FCCB71 /* MJRefresh-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-umbrella.h"; sourceTree = ""; }; + 6A41E1A305241C5A627FAD06CB90A275 /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; + 6AB6F2617132C99A6B5CB953305CCA89 /* LookinDashboardBlueprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDashboardBlueprint.h; path = Src/Main/Shared/LookinDashboardBlueprint.h; sourceTree = ""; }; + 6B94BD4B7CE09D63E43117EFC4B15D0D /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; + 6BD04BB450562622E215B33554778CC3 /* LSTPopView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.release.xcconfig; sourceTree = ""; }; + 6BD526972490CFC41EE7106FF8E272CC /* UILabel+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+LookinServer.m"; path = "Src/Main/Server/Category/UILabel+LookinServer.m"; sourceTree = ""; }; + 6C1E503B34448DC968FB5BDFADFAE70F /* SDAnimatedImagePlayer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImagePlayer.h; path = SDWebImage/Core/SDAnimatedImagePlayer.h; sourceTree = ""; }; + 6C9E32D40F89FB7470530B4F8AAB6162 /* MJRefreshComponent.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshComponent.m; path = MJRefresh/Base/MJRefreshComponent.m; sourceTree = ""; }; + 6CE98E2FC8B92A0E98F20755C88122A4 /* LSTTimer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.debug.xcconfig; sourceTree = ""; }; + 6D00FB0A2824B0B4E8A345D97C52AA3B /* LookinServer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LookinServer-dummy.m"; sourceTree = ""; }; + 6D149C2EB765D348E439D96EC2A80A04 /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; + 6D8BE2762FA18EF88A5BAD861C739B02 /* SDImageFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFrame.h; path = SDWebImage/Core/SDImageFrame.h; sourceTree = ""; }; + 6DE6908A836615F946533A6FEE623373 /* MJRefreshNormalTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.m; sourceTree = ""; }; + 6EAD8B1C822E0F2BAB884329D798190B /* SDImageTransformer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageTransformer.h; path = SDWebImage/Core/SDImageTransformer.h; sourceTree = ""; }; + 6EB329DC3D8A252CA69C19DAF330A784 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; + 6EE8AE5699FC4ACD4283D4626ACDF742 /* LookinDisplayItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItem.h; path = Src/Main/Shared/LookinDisplayItem.h; sourceTree = ""; }; + 6F1245D39980C8CC23C4FFA557C72FA3 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; + 6FD544A644986722B86F15A292995457 /* JXCategoryBaseCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseCell.m; path = Sources/Base/JXCategoryBaseCell.m; sourceTree = ""; }; + 70021D526E8906DE61E9D2D0F92A78C3 /* UICollectionViewLayout+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+MJRefresh.h"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.h"; sourceTree = ""; }; + 7083FA062632CC52050FC4EB53D64E3A /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; + 70CD4567ACE296214EA982091E2B8F90 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; + 70D52E1253BDF6EF05A1C5C1D46734EA /* Peertalk.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Peertalk.h; path = Src/Main/Shared/Peertalk/Peertalk.h; sourceTree = ""; }; + 72B1B153E1909E0A9DFA6E6097FD363D /* JXCategoryBaseCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseCell.h; path = Sources/Base/JXCategoryBaseCell.h; sourceTree = ""; }; + 72CEA2C3193763834CD0E25D8DB88F2D /* SDFileAttributeHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDFileAttributeHelper.m; path = SDWebImage/Private/SDFileAttributeHelper.m; sourceTree = ""; }; + 731A2E2A09E554B786F7BD8D9285D1CC /* UIButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+WebCache.h"; path = "SDWebImage/Core/UIButton+WebCache.h"; sourceTree = ""; }; + 7376537428F41B571A3D20FF9175747F /* LookinServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.debug.xcconfig; sourceTree = ""; }; + 73A2C1D7BD2A650246BEE1A00F6D836C /* LookinDashboardBlueprint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDashboardBlueprint.m; path = Src/Main/Shared/LookinDashboardBlueprint.m; sourceTree = ""; }; + 73EBDE260791BF4440027F8601391D8B /* LSTTimer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.release.xcconfig; sourceTree = ""; }; + 741E2A603352D4102F1DAFBB68C69122 /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; + 74751305705DEA03873DFA2AF4DDC9B7 /* HWPanModalInteractiveAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalInteractiveAnimator.m; path = Sources/Animator/HWPanModalInteractiveAnimator.m; sourceTree = ""; }; + 763CF36C11B6092D9D5485AC2363F205 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; + 768785318FEB9536A4DAAD47BD76396B /* CALayer+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+Lookin.h"; path = "Src/Main/Shared/Category/CALayer+Lookin.h"; sourceTree = ""; }; + 769C3408F11A51A90B589A6DBB334C55 /* LKS_ConnectionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ConnectionManager.h; path = Src/Main/Server/Connection/LKS_ConnectionManager.h; sourceTree = ""; }; + 76AEEFCD2262D6843C63EB46FD6663BB /* UIView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LookinServer.m"; path = "Src/Main/Server/Category/UIView+LookinServer.m"; sourceTree = ""; }; + 7718D3A1CB256B2263AD76B8EFDC9B86 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; + 77715D6F65035CFA25715F00E4915BA5 /* SDImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCache.m; path = SDWebImage/Core/SDImageCache.m; sourceTree = ""; }; + 77973C87CC9649629EBEE249DCC355F5 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; + 77DEC7B6CE458C6AAB89A25A3E05BA4B /* CALayer+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "CALayer+LookinServer.h"; path = "Src/Main/Server/Category/CALayer+LookinServer.h"; sourceTree = ""; }; + 77E6EFEE426EA2068D5FE2B73740D659 /* HWPanIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanIndicatorView.m; path = Sources/View/HWPanIndicatorView.m; sourceTree = ""; }; 77F4C0466DFC43C56F1D982F88EF74A0 /* ImageIO.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = ImageIO.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/ImageIO.framework; sourceTree = DEVELOPER_DIR; }; 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = HWPanModal; path = HWPanModal.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 7965DB1FD06E64A9C5B34CB6D9909B3A /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; - 797DE6794620B6AD238FF0B8B61A1B32 /* UIScrollView+EmptyDataSet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+EmptyDataSet.h"; path = "Source/UIScrollView+EmptyDataSet.h"; sourceTree = ""; }; - 7A60D0CF9AE4E6671E2A6BBECEE57E4D /* JXCategoryIndicatorBallView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorBallView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m; sourceTree = ""; }; - 7A60F6547480237BC04A6287158556B4 /* LookinTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinTuple.m; path = Src/Main/Shared/LookinTuple.m; sourceTree = ""; }; - 7A8A3FC6E6388A4864974A3D3B9C02F6 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; - 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXCategoryView.release.xcconfig; sourceTree = ""; }; - 7B4337532A4911F88E85BB14DE78FBB7 /* JXCategoryTitleVerticalZoomView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomView.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.m; sourceTree = ""; }; - 7C0E4900E01624D5262A1ED1DF2F6D35 /* MJRefreshComponent.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshComponent.h; path = MJRefresh/Base/MJRefreshComponent.h; sourceTree = ""; }; - 7C2B7AF68C3BEF4AD97A93A90F9EFF44 /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; - 7C36F83AF55E2873F497777F59071760 /* JXCategoryListContainerRTLCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryListContainerRTLCell.h; path = Sources/Common/JXCategoryListContainerRTLCell.h; sourceTree = ""; }; - 7CAEC579F15CFFDB2E384C98A046EA76 /* LookinEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinEventHandler.m; path = Src/Main/Shared/LookinEventHandler.m; sourceTree = ""; }; - 7CF7F647B9D3AA2FB234C1CC5BB53582 /* LKS_CustomAttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.m; sourceTree = ""; }; - 7D7FC4156E6779F82E6B8036FA7A1307 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; - 7E02457FB07FECD161E03C2A1A8B72B3 /* LookinAttributesGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesGroup.m; path = Src/Main/Shared/LookinAttributesGroup.m; sourceTree = ""; }; + 7895C7C58218B5F79C76FA1B5A55E669 /* MJRefresh.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.debug.xcconfig; sourceTree = ""; }; + 798B3DCD95877B6C7D997E0652FB6E9A /* CALayer+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+LookinServer.m"; path = "Src/Main/Server/Category/CALayer+LookinServer.m"; sourceTree = ""; }; + 7A2AEB4C3E4F6147F107DF9376FA7264 /* UIImage+GIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+GIF.m"; path = "SDWebImage/Core/UIImage+GIF.m"; sourceTree = ""; }; + 7A307E6A261D750F85B7C9C1575036E4 /* DZNEmptyDataSet-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-prefix.pch"; sourceTree = ""; }; + 7A5F8A5650078BFF9587944F0042AE79 /* UIView+Empty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+Empty.h"; path = "LYEmptyView/UIView+Empty.h"; sourceTree = ""; }; + 7AC0215893BDD3C5E126FCE996097AB4 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 7B167FA26CB7B8DC98E1A68B1B44BA8A /* JXPagerSmoothView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerSmoothView.h; path = Sources/JXPagerView/JXPagerSmoothView.h; sourceTree = ""; }; + 7B51D3C0C65114DF44F6DDB3ED9C4E4E /* JXCategoryNumberCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberCell.m; path = Sources/Number/JXCategoryNumberCell.m; sourceTree = ""; }; + 7B582290DB93C466A4DA695035B6DA2E /* MJExtension.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.release.xcconfig; sourceTree = ""; }; + 7B8734ED62BE39C69073D2C32183C6FC /* JXCategoryNumberView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberView.h; path = Sources/Number/JXCategoryNumberView.h; sourceTree = ""; }; + 7BD134826FCB54429F667B8DBF296710 /* SDCallbackQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDCallbackQueue.m; path = SDWebImage/Core/SDCallbackQueue.m; sourceTree = ""; }; + 7BDFAC11D184E7F4498FC12FE0AFDCFC /* UIScrollView+Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+Helper.h"; path = "Sources/Category/UIScrollView+Helper.h"; sourceTree = ""; }; + 7C1F5F86210D3FB1EF59D8665E7C4A77 /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; + 7CE9A594E8A127B7273A7D82E1882497 /* MJRefreshAutoGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoGifFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.h; sourceTree = ""; }; + 7D6E9AC32A60E19ACB08AED4E4CD31A3 /* LSTTimer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-prefix.pch"; sourceTree = ""; }; + 7D7595F0F8BE4F40C64D68F0D491C6C6 /* LSTPopViewProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopViewProtocol.h; path = LSTPopView/Classes/Code/LSTPopViewProtocol.h; sourceTree = ""; }; + 7D7A76984F1E3BB7440B31DF8D5447F0 /* JXCategoryBaseCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryBaseCellModel.h; path = Sources/Base/JXCategoryBaseCellModel.h; sourceTree = ""; }; + 7DCA3ADE9B99025CE2B42367695E1E68 /* LYEmptyView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LYEmptyView-Info.plist"; sourceTree = ""; }; + 7DD55E3EFF5073BEBD483D293C40A0D6 /* LookinDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDefines.h; path = Src/Main/Shared/LookinDefines.h; sourceTree = ""; }; + 7DEDD90DB6CF7DD05B6B753765E65AAD /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; + 7E270235979252FF388A0C6D1E54966D /* HWVisualEffectView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWVisualEffectView.h; path = Sources/View/HWVisualEffectView.h; sourceTree = ""; }; 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "MJRefresh-MJRefresh.Privacy"; path = MJRefresh.Privacy.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - 7E8762E22AB8C87B76E6D94D44665136 /* SDCallbackQueue.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDCallbackQueue.m; path = SDWebImage/Core/SDCallbackQueue.m; sourceTree = ""; }; - 7F178706A5ED2B8C0CCCEA56CC4A04B6 /* JXPagerSmoothView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerSmoothView.m; path = Sources/JXPagerView/JXPagerSmoothView.m; sourceTree = ""; }; - 7FBDD10C8770914A56998AB2021E385B /* JXCategoryTitleImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageView.h; path = Sources/TitleImage/JXCategoryTitleImageView.h; sourceTree = ""; }; - 806C18993732E8D418AEA50EC6162EDC /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; - 807026E96F55910EB566C0F4535DF3EB /* SDAnimatedImageRep.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageRep.h; path = SDWebImage/Core/SDAnimatedImageRep.h; sourceTree = ""; }; - 8087FD233990CE787D9977700977D0B8 /* JXPagerMainTableView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerMainTableView.h; path = Sources/JXPagerView/JXPagerMainTableView.h; sourceTree = ""; }; - 81157F73840FB0C9186268E78281D33C /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FLAnimatedImage.modulemap; sourceTree = ""; }; - 8127266FF8D9AAE89CDF3511D05BB245 /* LKS_ObjectRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ObjectRegistry.m; path = Src/Main/Server/Others/LKS_ObjectRegistry.m; sourceTree = ""; }; - 8179AB093F869B4BCCBBF8427F69555B /* UIView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCache.h"; path = "SDWebImage/Core/UIView+WebCache.h"; sourceTree = ""; }; - 819B57A54180667AB9476455F95835CA /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; - 81C5F42CC1579DEC553C5D34C274FD68 /* LSTTimer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTTimer-Info.plist"; sourceTree = ""; }; - 81D1103F43F39D4BF9AE80E76478FA69 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; - 81D4FD0C7D7C987D10815371E729DAC0 /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; - 824A8DE6460C98A565B1EDD8B4432F50 /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; - 82BDCD67CE12306B5AF6A9E3DB88E0DA /* SDMemoryCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDMemoryCache.h; path = SDWebImage/Core/SDMemoryCache.h; sourceTree = ""; }; - 82C5C527FD40FDC2434064E6DE931921 /* HWPanModalPresentationDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationDelegate.h; path = Sources/Delegate/HWPanModalPresentationDelegate.h; sourceTree = ""; }; - 82F0AA3C9E3854CEA18B30E16DC474FC /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; - 83B5308ADA544D7E6FCE86EFD21D5CBB /* SDImageCodersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCodersManager.h; path = SDWebImage/Core/SDImageCodersManager.h; sourceTree = ""; }; - 83D5AD11F2E32B53BA1869D6DE812341 /* HWPanModalPresentable.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentable.h; path = Sources/Presentable/HWPanModalPresentable.h; sourceTree = ""; }; - 83FBF1722FEB1FC5E339C64BC2275D81 /* HWPanModal-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-umbrella.h"; sourceTree = ""; }; - 846CA0BB8166DB9008D71F59F4A301EA /* MJRefreshStateTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h; sourceTree = ""; }; - 84C7B13561A207799480933E11856D99 /* JXCategoryView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXCategoryView-umbrella.h"; sourceTree = ""; }; - 8532F3DD3C373C14A106D14F67A3C301 /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; - 85E262E36BEDDEA0E7B4F4A870DA4314 /* JXPagingView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXPagingView-umbrella.h"; sourceTree = ""; }; - 8618BF2AA2A260801FDF48131074A906 /* JXCategoryTitleImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageView.m; path = Sources/TitleImage/JXCategoryTitleImageView.m; sourceTree = ""; }; - 862F24C5813636BD088499E062B47C78 /* HWPanModal-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HWPanModal-Info.plist"; sourceTree = ""; }; - 874DD2FA3B20B6BCBCBEE03BEEBE1281 /* JXCategoryNumberCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberCell.h; path = Sources/Number/JXCategoryNumberCell.h; sourceTree = ""; }; - 877837A5816B3B110C5B763CCBD0ECFD /* UITextField+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+LookinServer.m"; path = "Src/Main/Server/Category/UITextField+LookinServer.m"; sourceTree = ""; }; - 87DD67829823038B4E0D04582C0CB95C /* FLAnimatedImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-umbrella.h"; sourceTree = ""; }; - 886E6269011F3D0F924F30F32F08508F /* LookinWeakContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinWeakContainer.h; path = Src/Main/Shared/LookinWeakContainer.h; sourceTree = ""; }; - 88D5019FBBC4DC80F31FB68B1820A427 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; - 88D7B291E3BCDB41106F548FA3B84901 /* HWPanModalAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalAnimator.m; path = Sources/Animator/HWPanModalAnimator.m; sourceTree = ""; }; - 898DE7614EA3416744425477D130D9C7 /* JXCategoryIndicatorDotLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorDotLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h; sourceTree = ""; }; - 89DA873F803BF9043720F615E8BC4CD5 /* LookinIvarTrace.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinIvarTrace.m; path = Src/Base/LookinIvarTrace.m; sourceTree = ""; }; - 8A0C74EF09B54680C98CCBF1F2BD297A /* JXCategoryIndicatorBallView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorBallView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.h; sourceTree = ""; }; - 8A6F594F279129456C02C7701DE5EDC3 /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; - 8B0013F9906622545E27B913F2092F22 /* SDWebImageDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDefine.h; path = SDWebImage/Core/SDWebImageDefine.h; sourceTree = ""; }; - 8B0B848DED77C21AEA127E58094EE39E /* ResourceBundle-JXPagerView-JXPagingView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-JXPagerView-JXPagingView-Info.plist"; sourceTree = ""; }; + 7E445C787AA09C1E3A771E4C7DBCE2CA /* LookinCustomAttrModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomAttrModification.m; path = Src/Main/Shared/LookinCustomAttrModification.m; sourceTree = ""; }; + 7E73D1DD407F0535009A207AB317F8B7 /* JXCategoryIndicatorCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorCellModel.m; path = Sources/Indicator/JXCategoryIndicatorCellModel.m; sourceTree = ""; }; + 7EC4505824D228FB201DC90A544C01B3 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/PrivacyInfo.xcprivacy; sourceTree = ""; }; + 7FAB126742756E8C628ED27AEC1B9567 /* FLAnimatedImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "FLAnimatedImage-umbrella.h"; sourceTree = ""; }; + 800ECE845D6F36BE51A284DFCAE27307 /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; + 8067C53E08CA3787D9D5C3551F86EF9D /* JXCategoryImageCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageCell.m; path = Sources/Image/JXCategoryImageCell.m; sourceTree = ""; }; + 80E9CB1F62E65A837FF5E47B2FC3ECA1 /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; + 81D115D4A9C927BEBA7B66F114F7B4EC /* MJRefresh-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJRefresh-prefix.pch"; sourceTree = ""; }; + 81F7F63875295940D9A950DB7D2EBDE7 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; + 82F6D1678A37FB68B3455162AB8BDAA2 /* UIViewController+PanModalPresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalPresenter.h"; path = "Sources/Presenter/UIViewController+PanModalPresenter.h"; sourceTree = ""; }; + 8310CCDF3085A9EE32455CB865148664 /* JXPagerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerView.h; path = Sources/JXPagerView/JXPagerView.h; sourceTree = ""; }; + 831897EBD9EF72C4D55D02DE399C410A /* HWPanModalPresentationAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationAnimator.m; path = Sources/Animator/HWPanModalPresentationAnimator.m; sourceTree = ""; }; + 83340409B38BF2A20F089A4B919FC02F /* MJRefreshNormalTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.h; sourceTree = ""; }; + 839CCD719F79C7FBC2909C72822FB470 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; + 83E8510A179E756198B5FC915A27736E /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; + 852A42FAC0EA5F64033033841A03891A /* NSArray+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Lookin.h"; path = "Src/Main/Shared/Category/NSArray+Lookin.h"; sourceTree = ""; }; + 855BA7199BD9AC7B4687AF3F66E21279 /* UIImageView+HighlightedWebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+HighlightedWebCache.h"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.h"; sourceTree = ""; }; + 85C4F1C66A75633558DC8F8AE824BC70 /* LYEmptyView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LYEmptyView.modulemap; sourceTree = ""; }; + 860D7179002683A0368E532B751FC40E /* AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworking.h; path = AFNetworking/AFNetworking.h; sourceTree = ""; }; + 862D8BDF52FBE8FCF3A562F5A62C802E /* Lookin_PTChannel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTChannel.m; path = Src/Main/Shared/Peertalk/Lookin_PTChannel.m; sourceTree = ""; }; + 8638AEC16F5A3F7D05EF0F7C39544261 /* MJRefreshConst.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshConst.m; path = MJRefresh/MJRefreshConst.m; sourceTree = ""; }; + 8679B55EBC5DC660D8E798D1B986FC22 /* Image+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Image+Lookin.h"; path = "Src/Main/Shared/Category/Image+Lookin.h"; sourceTree = ""; }; + 87888E540A812F012C68F804E8F5AE7B /* HWPanModalPresentationController.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationController.h; path = Sources/Controller/HWPanModalPresentationController.h; sourceTree = ""; }; + 87B2A7EE05A20B3EDDFE045A6B7911E5 /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; + 87D7822F88C7B9608DF7E50878B7970B /* JXCategoryDotCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotCell.m; path = Sources/Dot/JXCategoryDotCell.m; sourceTree = ""; }; + 883434364AD74D3F77868A0CF2FB7A09 /* SDAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageView.m; path = SDWebImage/Core/SDAnimatedImageView.m; sourceTree = ""; }; + 88D479C435BAEE51B8F3BBF87F8D3CC9 /* AFNetworking.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.debug.xcconfig; sourceTree = ""; }; + 88F65BAED091224357C1ABFEA1C484FA /* LSTTimer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-umbrella.h"; sourceTree = ""; }; + 892976CDE28E9BEF86BFABB5F84E72F6 /* JXCategoryView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryView.h; path = Sources/JXCategoryView.h; sourceTree = ""; }; + 897530E070833B039DC2821D0B63B137 /* JXCategoryBaseCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryBaseCellModel.m; path = Sources/Base/JXCategoryBaseCellModel.m; sourceTree = ""; }; + 8A5D6AD5CB7122607D6E477D373A31E2 /* SDAnimatedImagePlayer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImagePlayer.m; path = SDWebImage/Core/SDAnimatedImagePlayer.m; sourceTree = ""; }; + 8A9BFDE06B11541EA7E87336A09C3816 /* UIViewController+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LookinServer.m"; path = "Src/Main/Server/Category/UIViewController+LookinServer.m"; sourceTree = ""; }; + 8B523AAA92DB90BD5B95092AF6B85BFB /* Lookin_PTPrivate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTPrivate.h; path = Src/Main/Shared/Peertalk/Lookin_PTPrivate.h; sourceTree = ""; }; + 8B8796E86BD11BC29D00EED72E50AE91 /* LKS_InbuiltAttrModificationHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_InbuiltAttrModificationHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.h; sourceTree = ""; }; + 8B890DAD1E942EF3DB7BF5C23113C1B6 /* JXCategoryDotCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotCell.h; path = Sources/Dot/JXCategoryDotCell.h; sourceTree = ""; }; + 8B8AB8065F8811289957B59E9EBA6B47 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MBProgressHUD; path = MBProgressHUD.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - 8CE6BF39C6199FC5B55217046DDE2CDB /* UIVisualEffectView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIVisualEffectView+LookinServer.m"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.m"; sourceTree = ""; }; - 8E1682EACA92F366216BAB7320C375AA /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; - 8E8C0DD47533304FD7479FB5A47A4E3B /* SDImageFramePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFramePool.m; path = SDWebImage/Private/SDImageFramePool.m; sourceTree = ""; }; - 8F0F258366D8ED06A7D9EAD3DFCD004E /* LookinCustomDisplayItemInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomDisplayItemInfo.m; path = Src/Main/Shared/LookinCustomDisplayItemInfo.m; sourceTree = ""; }; - 8FD309B3FADE968B4258080AC443EFCB /* NSObject+MJCoding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJCoding.m"; path = "MJExtension/NSObject+MJCoding.m"; sourceTree = ""; }; - 903038F34EE93C82A3EF6A1F6BDF857B /* View+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "View+MASAdditions.m"; path = "Masonry/View+MASAdditions.m"; sourceTree = ""; }; - 908A8A591A12931E59C177277E1D126D /* LKS_AttrModificationPatchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrModificationPatchHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.m; sourceTree = ""; }; - 908BDA99457974AD8998A674A0C0FB12 /* LookinAppInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAppInfo.h; path = Src/Main/Shared/LookinAppInfo.h; sourceTree = ""; }; - 911E6F5D1D17453D35BE3FA4A9086972 /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; - 920CD059C1364A6BD18420074E635F40 /* UIViewController+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LookinServer.m"; path = "Src/Main/Server/Category/UIViewController+LookinServer.m"; sourceTree = ""; }; - 92B0AD9AA2CE09EEB0EF8C040E103B97 /* SDImageAPNGCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAPNGCoder.m; path = SDWebImage/Core/SDImageAPNGCoder.m; sourceTree = ""; }; - 93081A25D8BCD8327365F5FAC77C46F3 /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; - 93A6F66AA21D4921B2C52643DAEF998F /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; - 9421B0E41FC583CAD966F98C60445BAB /* SDAssociatedObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAssociatedObject.m; path = SDWebImage/Private/SDAssociatedObject.m; sourceTree = ""; }; - 94807C278EC259800EBCD3A346749877 /* UITextField+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextField+LookinServer.h"; path = "Src/Main/Server/Category/UITextField+LookinServer.h"; sourceTree = ""; }; - 94D99E2E2730992302FB9BAA7CCE2A1C /* HWPanModalPresentationController.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentationController.m; path = Sources/Controller/HWPanModalPresentationController.m; sourceTree = ""; }; - 94DB79C6893EAE9D1A7D3559B485BCC5 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; - 9545413A1EE5D2E50A21E8D9794A771A /* Lookin_PTProtocol.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTProtocol.m; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.m; sourceTree = ""; }; - 956C8FF42F553F12124DED23E19FE31D /* Bugly.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.release.xcconfig; sourceTree = ""; }; - 95BD516A8F354C5C9CD65BFD30C9BED7 /* HWPanModalPanGestureDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPanGestureDelegate.h; path = Sources/Presentable/HWPanModalPanGestureDelegate.h; sourceTree = ""; }; - 95E2C10E638AC6421FE377F88DA72A45 /* UITableView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+LookinServer.m"; path = "Src/Main/Server/Category/UITableView+LookinServer.m"; sourceTree = ""; }; - 95EB1D88070F8207A333D4573DA43A15 /* LookinTuple.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinTuple.h; path = Src/Main/Shared/LookinTuple.h; sourceTree = ""; }; + 8BE10EB8B74E3D1DE4172EF863BC22F8 /* Color+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Color+Lookin.h"; path = "Src/Main/Shared/Category/Color+Lookin.h"; sourceTree = ""; }; + 8C065D632F2F749CBD48B178A68B1631 /* MJRefreshAutoStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoStateFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.h; sourceTree = ""; }; + 8CF1445CC744306AE4ECBA85DFD6DB27 /* MJRefreshAutoStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoStateFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoStateFooter.m; sourceTree = ""; }; + 8D2F3BF5EE9E269F816330AC6BF6745F /* UIImage+ExtendedCacheData.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ExtendedCacheData.h"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.h"; sourceTree = ""; }; + 8E4925A54FF503F963785651A98856BD /* UIView+WebCacheState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheState.m"; path = "SDWebImage/Core/UIView+WebCacheState.m"; sourceTree = ""; }; + 8EFBD2E7A88C44123D980C42CB8702A4 /* JXCategoryDotView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotView.h; path = Sources/Dot/JXCategoryDotView.h; sourceTree = ""; }; + 8FEE8F6EEF601125225DCB1FEACED91C /* JXCategoryTitleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleView.m; path = Sources/Title/JXCategoryTitleView.m; sourceTree = ""; }; + 8FF761C99D422AE106C31A4A7AE469C7 /* JXCategoryViewAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryViewAnimator.h; path = Sources/Common/JXCategoryViewAnimator.h; sourceTree = ""; }; + 903EBE6439B30182644FFF066DE11129 /* LookinAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttribute.h; path = Src/Main/Shared/LookinAttribute.h; sourceTree = ""; }; + 913F72595D3AEFAFE006FD96A54FD8DA /* JXCategoryIndicatorCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorCell.h; path = Sources/Indicator/JXCategoryIndicatorCell.h; sourceTree = ""; }; + 919C930C4E0162377E3C95D0F6F11177 /* UIView+WebCacheState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheState.h"; path = "SDWebImage/Core/UIView+WebCacheState.h"; sourceTree = ""; }; + 91BC18AA2869958B15FBD2C2367C5DFC /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; + 9230BE776665C8EB51C8889631B1B31B /* HWDimmedView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWDimmedView.m; path = Sources/View/HWDimmedView.m; sourceTree = ""; }; + 9234E8779322D7F9722AF6E18FF9F6F3 /* JXCategoryImageCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageCell.h; path = Sources/Image/JXCategoryImageCell.h; sourceTree = ""; }; + 92670C1E3C13D6C6157E7AFB4347DB17 /* NSString+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Lookin.h"; path = "Src/Main/Shared/Category/NSString+Lookin.h"; sourceTree = ""; }; + 928339E7523C1267D5DF15E548454A5E /* NSData+ImageContentType.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+ImageContentType.m"; path = "SDWebImage/Core/NSData+ImageContentType.m"; sourceTree = ""; }; + 92A35222DEEC452079F1343331C6E154 /* JXCategoryIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorProtocol.h; path = Sources/Common/JXCategoryIndicatorProtocol.h; sourceTree = ""; }; + 931669FB7F8BA540208B2F23E13B2F19 /* JXCategoryDotCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotCellModel.h; path = Sources/Dot/JXCategoryDotCellModel.h; sourceTree = ""; }; + 93B896E371962B657B3B85C108092214 /* SDWebImage.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.debug.xcconfig; sourceTree = ""; }; + 949A8C57291DF7D8139F90AD367DB80C /* SDWebImageOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOperation.h; path = SDWebImage/Core/SDWebImageOperation.h; sourceTree = ""; }; + 94CE97E5A9659D6EE58C83DCB52F73D5 /* HWPanContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanContainerView.h; path = Sources/View/HWPanContainerView.h; sourceTree = ""; }; + 954035BEFF37A926FB7C25E5508CD25D /* MJExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.debug.xcconfig; sourceTree = ""; }; + 957B3209BD81CDA1C8049B3245F6946E /* LKS_MultiplatformAdapter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_MultiplatformAdapter.m; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.m; sourceTree = ""; }; + 95BCF1B96C9A492409E9634BC63A400B /* JXCategoryViewAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryViewAnimator.m; path = Sources/Common/JXCategoryViewAnimator.m; sourceTree = ""; }; + 962D7794EB805E6D2F4F5F0B58218401 /* SDInternalMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDInternalMacros.h; path = SDWebImage/Private/SDInternalMacros.h; sourceTree = ""; }; 969A9A842778EFB5D62826500DFF4E11 /* Pods-keyBoard-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-keyBoard-dummy.m"; sourceTree = ""; }; - 96BA563F965A1054AC53D0F3D5BD3AFE /* NSObject+MJClass.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJClass.m"; path = "MJExtension/NSObject+MJClass.m"; sourceTree = ""; }; - 97428E2E54CAC989DD7A12908613EE16 /* LookinAttributesSection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesSection.m; path = Src/Main/Shared/LookinAttributesSection.m; sourceTree = ""; }; - 9777292C62AA2375C63BAEF75D1F940C /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; - 979A3BAC302F65855776332D6027B80C /* MASConstraintMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraintMaker.h; path = Masonry/MASConstraintMaker.h; sourceTree = ""; }; - 97E0EEAE3EFB0492B434EC2A704903DE /* LSTPopView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTPopView-dummy.m"; sourceTree = ""; }; - 9820AAA1C732351179414BB46300A1B7 /* SDAsyncBlockOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAsyncBlockOperation.h; path = SDWebImage/Private/SDAsyncBlockOperation.h; sourceTree = ""; }; - 989150BD3DA7E7AE5D05E2F37E778A8D /* LookinConnectionResponseAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionResponseAttachment.h; path = Src/Main/Shared/LookinConnectionResponseAttachment.h; sourceTree = ""; }; - 98D2F9331639FC6D12A4091DD5F47C96 /* JXCategoryDotCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotCell.h; path = Sources/Dot/JXCategoryDotCell.h; sourceTree = ""; }; - 98EB3787337AAE5AD71D422A832D852F /* UIBlurEffect+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBlurEffect+LookinServer.m"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.m"; sourceTree = ""; }; - 99302CD0854353E1FA9C8EE70F3FCF59 /* Masonry-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Masonry-dummy.m"; sourceTree = ""; }; - 99CBD01AD35AF793B343AC0ACF2CF164 /* UICollectionViewLayout+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+MJRefresh.m"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.m"; sourceTree = ""; }; - 9AFDFE95B53BDA0F282212CF3E9B940F /* UIScrollView+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJRefresh.m"; path = "MJRefresh/UIScrollView+MJRefresh.m"; sourceTree = ""; }; - 9B2F1B06BC651834D7B3EA1FBC96E466 /* LSTPopView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTPopView.m; path = LSTPopView/Classes/Code/LSTPopView.m; sourceTree = ""; }; - 9B89E97BE59B9448BC63E348FA77F055 /* SDWebImageDownloaderOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderOperation.h; path = SDWebImage/Core/SDWebImageDownloaderOperation.h; sourceTree = ""; }; - 9BAC219B4754C1E13B6929143780BE52 /* UIViewController+PanModalDefault.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalDefault.h"; path = "Sources/Presentable/UIViewController+PanModalDefault.h"; sourceTree = ""; }; - 9C599636DAB63CB63CC65E368E1BAAFC /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; - 9CE19B5D21ECCFC76311F186D2B3F651 /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; - 9D31ED01216EF87422BD04709990AFA0 /* LookinDashboardBlueprint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDashboardBlueprint.h; path = Src/Main/Shared/LookinDashboardBlueprint.h; sourceTree = ""; }; + 96AEDA915084E949F39F28D248C2FB43 /* SDWebImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloader.h; path = SDWebImage/Core/SDWebImageDownloader.h; sourceTree = ""; }; + 96D1E2DE4F6F4EB00BD41C7ABD504109 /* JXCategoryListContainerRTLCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryListContainerRTLCell.m; path = Sources/Common/JXCategoryListContainerRTLCell.m; sourceTree = ""; }; + 97DE751E0ED3939932D72FB39C5A934A /* LookinAutoLayoutConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAutoLayoutConstraint.h; path = Src/Main/Shared/LookinAutoLayoutConstraint.h; sourceTree = ""; }; + 986324EA3CC9A3BDF0E5C7B1763862EE /* NSArray+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+MASShorthandAdditions.h"; path = "Masonry/NSArray+MASShorthandAdditions.h"; sourceTree = ""; }; + 98768C46376F54DFEB58CDD9F278AC71 /* MBProgressHUD-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-prefix.pch"; sourceTree = ""; }; + 98901829A364C7B4F13375AEB6AA0FBE /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; + 98935AEC9F6608D5CCBFEF667B9F658A /* LKS_CustomDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.h; sourceTree = ""; }; + 9897B379E415C6537D86A30137A8D274 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; sourceTree = ""; }; + 98B3D67E4B164109B9B94A959496BA25 /* SDmetamacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDmetamacros.h; path = SDWebImage/Private/SDmetamacros.h; sourceTree = ""; }; + 99650956C6DC18187951AE72D50E44A2 /* MJFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJFoundation.h; path = MJExtension/MJFoundation.h; sourceTree = ""; }; + 996C55702A2E4E7B3785C0C5454598C9 /* JXCategoryTitleVerticalZoomView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomView.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomView.h; sourceTree = ""; }; + 99712B41FFAFC24C5F649A94D8DD7FFE /* LookinCodingValueType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCodingValueType.h; path = Src/Main/Shared/LookinCodingValueType.h; sourceTree = ""; }; + 9A3BA26DC995AB016051D522F5691C91 /* RTLManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RTLManager.m; path = Sources/RLTManager/RTLManager.m; sourceTree = ""; }; + 9AA439B2B87976D37C23F7DCCE897F8C /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; + 9ABEB6B0A44AC8BCBC6CB1A8A8A9A0FF /* UIVisualEffectView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIVisualEffectView+LookinServer.h"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.h"; sourceTree = ""; }; + 9C0082C9FF6875DA300AE3D8453DCB62 /* AFNetworkReachabilityManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkReachabilityManager.h; path = AFNetworking/AFNetworkReachabilityManager.h; sourceTree = ""; }; + 9C0E279B5FFB9696801CC86ACF92805A /* SDImageGIFCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGIFCoder.h; path = SDWebImage/Core/SDImageGIFCoder.h; sourceTree = ""; }; + 9C2DAB09AC8F3AD6E82FDC5DB2562CB4 /* JXPagerMainTableView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerMainTableView.m; path = Sources/JXPagerView/JXPagerMainTableView.m; sourceTree = ""; }; + 9C47102257C212ED978684D39466579B /* LKS_ExportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ExportManager.h; path = Src/Main/Server/Others/LKS_ExportManager.h; sourceTree = ""; }; + 9C75F181A3E07F7E7B4B017B48488393 /* LookinConnectionAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionAttachment.m; path = Src/Main/Shared/LookinConnectionAttachment.m; sourceTree = ""; }; 9D41AAC213895165C450F5576DE42CB2 /* 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; }; - 9D7E450C43D308EE4C1B879D0B60A4BF /* SDImageCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoder.m; path = SDWebImage/Core/SDImageCoder.m; sourceTree = ""; }; + 9D4F497397BEDE35BC05F6C2B6D33577 /* LookinAttrIdentifiers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttrIdentifiers.m; path = Src/Main/Shared/LookinAttrIdentifiers.m; sourceTree = ""; }; + 9D7E307063029FFE21DDCDC0455FA473 /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; name = Podfile; path = ../Podfile; sourceTree = SOURCE_ROOT; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; - 9DA5F48CB9575D0E2C775D8D7C262C14 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; - 9DC4AC8D166AB2BD8B557BFA9FA9872C /* SDImageCachesManagerOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManagerOperation.h; path = SDWebImage/Private/SDImageCachesManagerOperation.h; sourceTree = ""; }; 9DDD0462C32F55EF5E9CB1056459809F /* Pods-CustomKeyboard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-CustomKeyboard-umbrella.h"; sourceTree = ""; }; - 9E18E15D3A7901E5A84136DADC023216 /* MASViewAttribute.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewAttribute.h; path = Masonry/MASViewAttribute.h; sourceTree = ""; }; - 9E285AA5C9AFC477B5336B5AC2C863D1 /* UILabel+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UILabel+LookinServer.m"; path = "Src/Main/Server/Category/UILabel+LookinServer.m"; sourceTree = ""; }; - 9E54C32C4CB68C01C57E81C03350F4B2 /* MASUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASUtilities.h; path = Masonry/MASUtilities.h; sourceTree = ""; }; - 9E9F380E4292210FA99A8F5918C667C3 /* JXCategoryFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryFactory.m; path = Sources/Common/JXCategoryFactory.m; sourceTree = ""; }; - 9F0B0B2E800350D0E38B61EF43E6CE75 /* LKS_AttrModificationPatchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrModificationPatchHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.h; sourceTree = ""; }; - 9F3CA71777F849F0196634A7AB215BDC /* AFURLResponseSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLResponseSerialization.m; path = AFNetworking/AFURLResponseSerialization.m; sourceTree = ""; }; + 9E31AD6314EC8102DE4FC6291C0FE66F /* HWPanModalContentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalContentView.m; path = Sources/View/PanModal/HWPanModalContentView.m; sourceTree = ""; }; + 9E91A12C513A640E68663D4ED668C0FC /* JXCategoryTitleImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageView.h; path = Sources/TitleImage/JXCategoryTitleImageView.h; sourceTree = ""; }; + 9EC4E80691EA4009AB067722DA72E4D5 /* JXCategoryTitleImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageView.m; path = Sources/TitleImage/JXCategoryTitleImageView.m; sourceTree = ""; }; + 9ECA4FF1A4B2A73F055139B44105081C /* NSBundle+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBundle+MJRefresh.m"; path = "MJRefresh/NSBundle+MJRefresh.m"; sourceTree = ""; }; + 9F5507B4A6BD90BF5F74B1AAC009AD90 /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; 9F5B3C0CF01454E7AC9226E88FDFBAE6 /* 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; }; - 9F94B604866DB37515D32D88635EFEE2 /* SDImageAssetManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAssetManager.m; path = SDWebImage/Private/SDImageAssetManager.m; sourceTree = ""; }; - 9FD83B41506E28893BC297C4BDAB1B46 /* NSObject+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+Lookin.h"; path = "Src/Main/Shared/Category/NSObject+Lookin.h"; sourceTree = ""; }; - 9FEF42DD4D5BC001DB0C88A7EB3DB63B /* LookinServer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LookinServer-Info.plist"; sourceTree = ""; }; - A020A834828880C972FE2E839A9DD2B4 /* FLAnimatedImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "FLAnimatedImage-Info.plist"; sourceTree = ""; }; - A05508640C7796358B45E0B5C0C73183 /* DZNEmptyDataSet-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DZNEmptyDataSet-umbrella.h"; sourceTree = ""; }; - A1067B051CF7A4C36817E6F668A3E7A6 /* AFNetworking-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-umbrella.h"; sourceTree = ""; }; - A1E84842FBF29954156976CB6DD0F275 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; - A2309A5B4A1B9C14AF7AEDEC1036F76E /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; - A237C0F799BD0639307F9DF3E58B71CE /* MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MJRefresh-Info.plist"; sourceTree = ""; }; - A2C056F5D1231FA94F92AA3712D545C2 /* JXCategoryIndicatorImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorImageView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m; sourceTree = ""; }; + 9FB49DC67A435D7D63695F113C3D398C /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; + A01B197EE310DCCE265AA065FA12EF38 /* JXCategoryView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "JXCategoryView-Info.plist"; sourceTree = ""; }; + A0329494F5B3BBF4A9C54DD83622388B /* MJPropertyType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJPropertyType.h; path = MJExtension/MJPropertyType.h; sourceTree = ""; }; + A0497973DD4190C4C37CC950C86C6F2B /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = WebImage/PrivacyInfo.xcprivacy; sourceTree = ""; }; + A0925E96742E33F78D548F10A7C0475D /* LKS_CustomAttrSetterManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_CustomAttrSetterManager.h; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.h; sourceTree = ""; }; + A11C415AC80BAC0B06685E1F8AC7C7C8 /* AFHTTPSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFHTTPSessionManager.m; path = AFNetworking/AFHTTPSessionManager.m; sourceTree = ""; }; + A1411B1EA7A3C51DB2072BF40B4D5A60 /* SDAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImage.h; path = SDWebImage/Core/SDAnimatedImage.h; sourceTree = ""; }; + A14754CFA2BACA27D3CA6DD44F6D8F10 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-SDWebImage-SDWebImage-Info.plist"; sourceTree = ""; }; + A16556ABD8D8BADE087CDC162140E59B /* MBProgressHUD-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "MBProgressHUD-Info.plist"; sourceTree = ""; }; + A198AAC0BC41558B9FC61F89E90D900F /* AFNetworkActivityIndicatorManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFNetworkActivityIndicatorManager.h; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.h"; sourceTree = ""; }; + A1C4717F035C7128013EA7E000DAC18A /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; + A1DAAC915F745C515E0BF4D613B5CB1C /* LKS_InbuiltAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_InbuiltAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.m; sourceTree = ""; }; + A2350DF4D8FE6C892E64B8C644667527 /* KeyValueObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KeyValueObserver.m; path = Sources/KVO/KeyValueObserver.m; sourceTree = ""; }; + A23AD7EF4A12F64EAAFE5154D8DC5843 /* JXCategoryNumberCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberCell.h; path = Sources/Number/JXCategoryNumberCell.h; sourceTree = ""; }; + A2C2A9B920BB92B872BA2AC2EA086220 /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; A2D8E1EB42D41EA6B94901E5B68C9011 /* Pods-keyBoard-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-keyBoard-umbrella.h"; sourceTree = ""; }; - A4D8DE877E59C1B5596F10D0213ADC5D /* UIView+LSTPV.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LSTPV.m"; path = "LSTPopView/Classes/Code/UIView+LSTPV.m"; sourceTree = ""; }; + A3211D6272FC8FFC9717C01969D328F7 /* LSTTimer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTTimer-dummy.m"; sourceTree = ""; }; + A324C5885C8FB2DC65900A0EE79A0E45 /* MJRefresh.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJRefresh.release.xcconfig; sourceTree = ""; }; + A34A186C33DB71F8C4ACB6E0705472D0 /* UIView+Empty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+Empty.m"; path = "LYEmptyView/UIView+Empty.m"; sourceTree = ""; }; + A39050EBA53940D0CE63B52BF031BE6C /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; + A3E40CB9D351DF0E70C7A452071E82E1 /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; + A464713D364DCC51BD1C744435EF31A3 /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; + A4B49E8FCEA2AFEE938A133ECC269CF2 /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; + A4CFB2BE169777F50B29077639FCFEC4 /* LKSConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKSConfigManager.h; path = Src/Main/Server/Others/LKSConfigManager.h; sourceTree = ""; }; + A4F1299F85FD74B081B5C5F85EF530B7 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = AFNetworking; path = AFNetworking.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - A5262AA56B4C8511CBA390D4808E37F2 /* UIView+LSTPV.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LSTPV.h"; path = "LSTPopView/Classes/Code/UIView+LSTPV.h"; sourceTree = ""; }; - A56B5A6CAF35241FF9D41CAC7DC1D6D2 /* UITextView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+LookinServer.h"; path = "Src/Main/Server/Category/UITextView+LookinServer.h"; sourceTree = ""; }; - A5C74D4E7CA539C956587A3615702D24 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; - A5FC57ACB22E21DCA20F2B582D18A03F /* AFNetworkActivityIndicatorManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkActivityIndicatorManager.m; path = "UIKit+AFNetworking/AFNetworkActivityIndicatorManager.m"; sourceTree = ""; }; - A67C49E3D329D82553E5FEBB4951ABD7 /* UIImage+Transform.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+Transform.m"; path = "SDWebImage/Core/UIImage+Transform.m"; sourceTree = ""; }; - A697ED78520252C2C8CA71D13BA57F79 /* AFNetworking.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = AFNetworking.release.xcconfig; sourceTree = ""; }; + A527D460219BC25D3D8E05E8A68C23C9 /* JXCategoryIndicatorLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.h; sourceTree = ""; }; + A56060BC793E00F370FD0DF3B4157376 /* SDWebImageIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageIndicator.m; path = SDWebImage/Core/SDWebImageIndicator.m; sourceTree = ""; }; + A566FD7AC8F85BE1E72F6DF11FEA6338 /* NSObject+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+LookinServer.m"; path = "Src/Main/Server/Category/NSObject+LookinServer.m"; sourceTree = ""; }; + A603B071469D044FB92322560F131681 /* Masonry.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Masonry.debug.xcconfig; sourceTree = ""; }; + A64A22A853C13E4375B73E01D1D90CB1 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-keyBoard.release.xcconfig"; sourceTree = ""; }; - A75069F0A291D74DCBF8F50AA213D806 /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; - A76F5B96F548930505FADC6CE9430C2D /* LSTTimer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTTimer.debug.xcconfig; sourceTree = ""; }; - A7A769F7014A1F30EE6690E054898162 /* LookinStaticAsyncUpdateTask.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinStaticAsyncUpdateTask.h; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.h; sourceTree = ""; }; - A8105D73597438386DADF22233AAD4B3 /* LookinHierarchyInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyInfo.h; path = Src/Main/Shared/LookinHierarchyInfo.h; sourceTree = ""; }; - A87C5BAF6B8038E9EE8A33551A798606 /* HWPanModalContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContainerView.h; path = Sources/View/PanModal/HWPanModalContainerView.h; sourceTree = ""; }; - A8CBDE62F720E1751DB8B8E4DF3B0E9F /* Masonry-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-umbrella.h"; sourceTree = ""; }; - A96A60100BE610809D6E0C7741CF992C /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; - A98C5DE93CCDA0FE6E6A916B05B69DCC /* LookinServer-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LookinServer-umbrella.h"; sourceTree = ""; }; - A98C848E174628ED3A950CA220B4CB9A /* MBProgressHUD.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = MBProgressHUD.h; sourceTree = ""; }; - A9B0E721EBB3914236D06250E333F1E9 /* LKS_HierarchyDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.h; sourceTree = ""; }; - AAF02F3D4DFB903955A463298716DCE2 /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; - AAFEF3383472BCA83D71A7DAAC5522CC /* JXCategoryIndicatorParamsModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorParamsModel.m; path = Sources/Common/JXCategoryIndicatorParamsModel.m; sourceTree = ""; }; - AB253C473EBD2DF633A230C7FAA304B7 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; - ABD4819FE00A1A954ABDDF0893C72587 /* JXCategoryDotCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryDotCellModel.h; path = Sources/Dot/JXCategoryDotCellModel.h; sourceTree = ""; }; - AC558AE5F168E24878BD4ACF3EE1274A /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; - ACC63F439241C64C221C18A8991C569B /* HWBackgroundConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWBackgroundConfig.h; path = Sources/View/HWBackgroundConfig.h; sourceTree = ""; }; - AD28EF542A0B7F210E7C92D1D9DEC003 /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; - AE09548D63659FAE72F5C6F1EBF230FC /* MJExtension-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-umbrella.h"; sourceTree = ""; }; - AEB0E8A16F89DAA71F5718EDBF3E2A83 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; - AED1D348255F77CE4BB2B0BB61E22F08 /* Bugly.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; path = Bugly.framework; sourceTree = ""; }; - AF302A5E7BA56F9F631A8591DA72D3C3 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; - AFBCBD9F77FD5CF26B2BEBE02B1E19D9 /* JXPagingView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JXPagingView-dummy.m"; sourceTree = ""; }; - AFC299E1B60C8759EA1F35B7A91019A4 /* LookinDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDefines.h; path = Src/Main/Shared/LookinDefines.h; sourceTree = ""; }; - B05FD8A103E2A06EE08BE59B38FC36B4 /* UIViewController+PanModalPresenter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalPresenter.m"; path = "Sources/Presenter/UIViewController+PanModalPresenter.m"; sourceTree = ""; }; - B072B2B3BF7FE061CC694AE00BCF5858 /* UIView+WebCacheState.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheState.h"; path = "SDWebImage/Core/UIView+WebCacheState.h"; sourceTree = ""; }; + A7A348B5BB8CB7A444F827000C95DAE5 /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; + A7DF910F689AA8FEAD1EF63DDDFCB780 /* UIVisualEffectView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIVisualEffectView+LookinServer.m"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.m"; sourceTree = ""; }; + A7EA79586CBF531A23E8B00CFA7B82C7 /* MJRefreshBackFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackFooter.m; path = MJRefresh/Base/MJRefreshBackFooter.m; sourceTree = ""; }; + A810CCF3953514350B557ABBEEBE5FF6 /* UIColor+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+LookinServer.h"; path = "Src/Main/Server/Category/UIColor+LookinServer.h"; sourceTree = ""; }; + A8AF8342462E3EDE8E3D40F840DFA00C /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; + A92BC89EBEE6C3CE964CA994B506EA43 /* SDWeakProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWeakProxy.h; path = SDWebImage/Private/SDWeakProxy.h; sourceTree = ""; }; + A9BB84448AE1154A6E3D359329D6E5D8 /* JXPagingView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXPagingView-prefix.pch"; sourceTree = ""; }; + AA7E9357D1D22FB737AEE89305734112 /* LKS_GestureTargetActionsSearcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_GestureTargetActionsSearcher.h; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.h; sourceTree = ""; }; + AAA2247A63D832BDB9097AE7D635F20C /* ResourceBundle-JXCategoryView-JXCategoryView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-JXCategoryView-JXCategoryView-Info.plist"; sourceTree = ""; }; + AB1D54171867DC3B104DAE8C6D30F644 /* MJRefreshStateTrailer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateTrailer.h; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.h; sourceTree = ""; }; + AB2B98D8DC3605842D8528F53C1896A2 /* LKS_CustomAttrGroupsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrGroupsMaker.m; path = Src/Main/Server/Others/LKS_CustomAttrGroupsMaker.m; sourceTree = ""; }; + AB379411892DE9D6AC2BA478DD047B45 /* MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJProperty.h; path = MJExtension/MJProperty.h; sourceTree = ""; }; + ABAC9F2093F2EF164CB968D710D261F5 /* MJRefresh.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = MJRefresh.modulemap; sourceTree = ""; }; + AC0C26DBF6F4D6A9D8C1BF55FE14DABA /* MBProgressHUD.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.release.xcconfig; sourceTree = ""; }; + AC368BF52013B3AE323DC35D782A044B /* MASConstraint+Private.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "MASConstraint+Private.h"; path = "Masonry/MASConstraint+Private.h"; sourceTree = ""; }; + AC3EF9D4544217A0B4E13DA6B530C974 /* JXCategoryView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXCategoryView-umbrella.h"; sourceTree = ""; }; + ACD18D412C592E0FB706C10554E5283E /* SDWebImageTransitionInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageTransitionInternal.h; path = SDWebImage/Private/SDWebImageTransitionInternal.h; sourceTree = ""; }; + ADF656282B85E6C974597F555BDE3F21 /* LKS_AttrModificationPatchHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrModificationPatchHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.h; sourceTree = ""; }; + AE19AE8E2478EF2E39C49272A1998EFE /* LookinDisplayItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItem.m; path = Src/Main/Shared/LookinDisplayItem.m; sourceTree = ""; }; + AE4CC2528765A45B472AD5B813D01119 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; + AEEC6C323BA320F8FE0EFED607BC9994 /* SDWebImageDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDefine.m; path = SDWebImage/Core/SDWebImageDefine.m; sourceTree = ""; }; + AF5F1AB306D02EC6A5F39878FAE8BEA1 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; + AFBA747DBA20D4BACF78CA8DE98ADF94 /* LKS_RequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_RequestHandler.h; path = Src/Main/Server/Connection/LKS_RequestHandler.h; sourceTree = ""; }; + B041D1C998D0894DB89A31049CC1B872 /* UIBlurEffect+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIBlurEffect+LookinServer.m"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.m"; sourceTree = ""; }; + B052BF123A39C5CF4B531584A2A83BED /* WKWebView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "WKWebView+AFNetworking.h"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.h"; sourceTree = ""; }; + B0922492568B0DD6D1F92C0E3B3A53A1 /* LookinWeakContainer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinWeakContainer.h; path = Src/Main/Shared/LookinWeakContainer.h; sourceTree = ""; }; + B09C6285E70223CDED72989080A8442A /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = SDWebImage; path = SDWebImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - B26771C31428D52F8DFB859AE1AC3503 /* MJRefreshStateTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshStateTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshStateTrailer.m; sourceTree = ""; }; - B2D84B5B7090CE22D8AFB107E403CA13 /* AFURLSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLSessionManager.h; path = AFNetworking/AFURLSessionManager.h; sourceTree = ""; }; - B3F518DFA534AD602991065542FADB29 /* SDImageLoadersManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoadersManager.m; path = SDWebImage/Core/SDImageLoadersManager.m; sourceTree = ""; }; - B4121F7B04BCCD0FB01ED16A27F6E571 /* FLAnimatedImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImageView.m; path = FLAnimatedImage/FLAnimatedImageView.m; sourceTree = ""; }; - B444EEABD213A46C07AC5F1B8D73FBF1 /* UIView+HW_Frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+HW_Frame.m"; path = "Sources/Category/UIView+HW_Frame.m"; sourceTree = ""; }; - B46184374613AB561CB67E0F1EF14DD8 /* JXCategoryViewAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryViewAnimator.m; path = Sources/Common/JXCategoryViewAnimator.m; sourceTree = ""; }; - B46DF40E1300BE3FC009F0D7D5CF5ED0 /* UIViewController+PanModalPresenter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalPresenter.h"; path = "Sources/Presenter/UIViewController+PanModalPresenter.h"; sourceTree = ""; }; - B5C750768FB8EE26E8F613C1D910045B /* UIImage+Transform.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+Transform.h"; path = "SDWebImage/Core/UIImage+Transform.h"; sourceTree = ""; }; - B5EF3518EEE6DB69526EE34FF9D58DFD /* SDImageGraphics.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageGraphics.h; path = SDWebImage/Core/SDImageGraphics.h; sourceTree = ""; }; - B63B552A0A52E65141ED8027A3FCCB0D /* UIView+HW_Frame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+HW_Frame.h"; path = "Sources/Category/UIView+HW_Frame.h"; sourceTree = ""; }; - B7498A05A9D7A9FEE19E027CABE6B9DD /* JXCategoryImageCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageCell.m; path = Sources/Image/JXCategoryImageCell.m; sourceTree = ""; }; - B74F835090D47DFE066B4DAD231882AC /* LookinAttributesSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesSection.h; path = Src/Main/Shared/LookinAttributesSection.h; sourceTree = ""; }; - B79CB4484CF793AF65C86B424D955922 /* LSTPopView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.release.xcconfig; sourceTree = ""; }; - B7AD3647BEEBE4C691B28F5746D51E7D /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; - B8E404753BE7BE627A458AE982427654 /* HWPanModalPresentableHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalPresentableHandler.m; path = Sources/Mediator/HWPanModalPresentableHandler.m; sourceTree = ""; }; - B8E77F018E5BE1F8C021ACB0978497F6 /* LookinServer.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.release.xcconfig; sourceTree = ""; }; - B937D529B74DB9581A000F395FF3B6F7 /* NSArray+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+Lookin.h"; path = "Src/Main/Shared/Category/NSArray+Lookin.h"; sourceTree = ""; }; - B9C3A1374DADDEAE813F69F05F5A2564 /* HWShoppingCartPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWShoppingCartPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h; sourceTree = ""; }; - B9D007BE64FBA88DB3F5D92E0EAEDEAD /* LKS_RequestHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_RequestHandler.h; path = Src/Main/Server/Connection/LKS_RequestHandler.h; sourceTree = ""; }; - BB4D65769822C57911F4A84B9F8FADFA /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; + B1850D4E22F95780586FA04DA695C24C /* Lookin_PTUSBHub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTUSBHub.m; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.m; sourceTree = ""; }; + B267D6EC269C7ADF7A4202363528E8C2 /* LookinAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttribute.m; path = Src/Main/Shared/LookinAttribute.m; sourceTree = ""; }; + B28192DA39251C0AC1C30AE245A9A547 /* JXCategoryTitleImageCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageCellModel.m; path = Sources/TitleImage/JXCategoryTitleImageCellModel.m; sourceTree = ""; }; + B2B7D0FDFC6ECF60B59728E60160431B /* LookinConnectionResponseAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinConnectionResponseAttachment.m; path = Src/Main/Shared/LookinConnectionResponseAttachment.m; sourceTree = ""; }; + B2C2A4CA80B5FE7CB8927FAEE4CAF5F4 /* SDImageCacheDefine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheDefine.h; path = SDWebImage/Core/SDImageCacheDefine.h; sourceTree = ""; }; + B2CE10A014B3B7826BFF751346CE7495 /* SDWebImageDownloaderRequestModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderRequestModifier.h; path = SDWebImage/Core/SDWebImageDownloaderRequestModifier.h; sourceTree = ""; }; + B3443BE7FBE80A857A146093C743D9BF /* JXCategoryIndicatorImageView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorImageView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.m; sourceTree = ""; }; + B4319C3394898C8897D6580DAC5A5124 /* JXPagingView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXPagingView-umbrella.h"; sourceTree = ""; }; + B453C947A0F7F0133F2F98F9E8EF1E43 /* SDWebImageDownloader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloader.m; path = SDWebImage/Core/SDWebImageDownloader.m; sourceTree = ""; }; + B4750EDA171CA7EB95AFE62489A712EF /* JXCategoryViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryViewDefines.h; path = Sources/Common/JXCategoryViewDefines.h; sourceTree = ""; }; + B49837A2AA042F710F43F143A929D49F /* JXCategoryTitleCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleCell.m; path = Sources/Title/JXCategoryTitleCell.m; sourceTree = ""; }; + B49F76B93F72D361782D7DA99B65ADC9 /* JXCategoryIndicatorLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorLineView.m; sourceTree = ""; }; + B4F7FC0CFCBE2143A4999C2F356D2B47 /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; + B5157027D16B7E61C1D5AB091D10458E /* LookinTuple.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinTuple.m; path = Src/Main/Shared/LookinTuple.m; sourceTree = ""; }; + B5885DEE0FCB371101A605FDA3D3F35C /* LYEmptyBaseView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LYEmptyBaseView.h; path = LYEmptyView/LYEmptyBaseView.h; sourceTree = ""; }; + B5A6B26A93BDE64568CF7AF44D709974 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; + B5F6ED51FA52849CB3D9D44DD45396E2 /* SDDisplayLink.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDisplayLink.h; path = SDWebImage/Private/SDDisplayLink.h; sourceTree = ""; }; + B6242B29A00A9DBC6FF1CD09266BBF54 /* MJRefreshGifHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshGifHeader.m; path = MJRefresh/Custom/Header/MJRefreshGifHeader.m; sourceTree = ""; }; + B628043D13CE1145E17714D58AB2A687 /* UIImageView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+AFNetworking.m"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.m"; sourceTree = ""; }; + B6575913AB2C7FDA723D279165349FF6 /* NSObject+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Lookin.m"; path = "Src/Main/Shared/Category/NSObject+Lookin.m"; sourceTree = ""; }; + B6ED434773EE7ECEDAB93E7A62107F73 /* FLAnimatedImage.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = FLAnimatedImage.modulemap; sourceTree = ""; }; + B705DD8FCD54B3AFD61B70C82828ACE4 /* SDAnimatedImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "SDAnimatedImageView+WebCache.h"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.h"; sourceTree = ""; }; + B70A750F053AB9B0B60CBF456ED577A9 /* JXCategoryTitleCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleCellModel.m; path = Sources/Title/JXCategoryTitleCellModel.m; sourceTree = ""; }; + B74E719F2E64B3E186B6F4B672482329 /* LSTTimer-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTTimer-Info.plist"; sourceTree = ""; }; + B75E67C2319B8FDBF4D6263203A06D6B /* SDImageIOAnimatedCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoder.h; path = SDWebImage/Core/SDImageIOAnimatedCoder.h; sourceTree = ""; }; + B77422F87DF00923771B3EF8E6C0A9BF /* UITableView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITableView+LookinServer.m"; path = "Src/Main/Server/Category/UITableView+LookinServer.m"; sourceTree = ""; }; + B82D0099E75E96FE5ACCF5B647388551 /* JXCategoryFactory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryFactory.m; path = Sources/Common/JXCategoryFactory.m; sourceTree = ""; }; + B8322800FD1F06BC2FEA3A9EEA874E20 /* DZNEmptyDataSet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DZNEmptyDataSet-dummy.m"; sourceTree = ""; }; + B87895ABF5221A865DF2D53247763F89 /* SDWebImageCompat.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCompat.h; path = SDWebImage/Core/SDWebImageCompat.h; sourceTree = ""; }; + B8F1319B150BB3DBD94BEB4C80F6F296 /* UIScrollView+MJExtension.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+MJExtension.m"; path = "MJRefresh/UIScrollView+MJExtension.m"; sourceTree = ""; }; + B915A35174E3017D6DC61C0A3E31050E /* LookinAttributeModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributeModification.h; path = Src/Main/Shared/LookinAttributeModification.h; sourceTree = ""; }; + B92B905C66437721BB933FEDA5B00CB4 /* SDImageIOAnimatedCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOAnimatedCoder.m; path = SDWebImage/Core/SDImageIOAnimatedCoder.m; sourceTree = ""; }; + B95FDE5F86C6AC76E24A82E181084256 /* UIViewController+PanModalDefault.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+PanModalDefault.m"; path = "Sources/Presentable/UIViewController+PanModalDefault.m"; sourceTree = ""; }; + B9CA9F01554205BFBACCA553143C8676 /* MASViewAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewAttribute.m; path = Masonry/MASViewAttribute.m; sourceTree = ""; }; + B9E1D06297B630EA32D1369915C0CB97 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "JXCategoryView-JXCategoryView"; path = JXCategoryView.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - BBB6E7BC9BF649910D7654B98B396BD4 /* AFURLResponseSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLResponseSerialization.h; path = AFNetworking/AFURLResponseSerialization.h; sourceTree = ""; }; - BBC2FF6B1D45486A6893E456C4B85E05 /* SDWebImageDownloaderResponseModifier.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderResponseModifier.m; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.m; sourceTree = ""; }; - BBC5ED786070BB7777881EF2B55FF369 /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; - BC38AB7DAEDA3DEEFFAC64BDA7FA3C88 /* Lookin_PTUSBHub.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = Lookin_PTUSBHub.m; path = Src/Main/Shared/Peertalk/Lookin_PTUSBHub.m; sourceTree = ""; }; - BC5B799F7FC71DC9649AD62AE8B34DC7 /* HWVisualEffectView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWVisualEffectView.h; path = Sources/View/HWVisualEffectView.h; sourceTree = ""; }; - BC88BA608872DDF711D78498FD36C1AA /* LKS_GestureTargetActionsSearcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_GestureTargetActionsSearcher.m; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.m; sourceTree = ""; }; - BCAF03C4FF87945F86C061039CB2443F /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; - BCE8E065BE01E56E0D55097E36AB8FC2 /* LookinDisplayItem.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItem.m; path = Src/Main/Shared/LookinDisplayItem.m; sourceTree = ""; }; - BD89A8E0323AB57CE283C150C3D4C556 /* FLAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImageView.h; path = FLAnimatedImage/include/FLAnimatedImageView.h; sourceTree = ""; }; - BDE2764DE3EEF78845A18DB898232DC0 /* NSObject+MJKeyValue.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJKeyValue.h"; path = "MJExtension/NSObject+MJKeyValue.h"; sourceTree = ""; }; + BBA58A99F7E528A8D41BD96706230160 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; + BC30CFC7778FEADF9DCBF0A4ABA1769C /* SDImageAWebPCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageAWebPCoder.m; path = SDWebImage/Core/SDImageAWebPCoder.m; sourceTree = ""; }; + BC7F3F9323470C634DC0D469E7C13B10 /* MJRefreshAutoGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoGifFooter.m; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoGifFooter.m; sourceTree = ""; }; + BCDE5AFCF524DCA9CD59B6F4A4738325 /* HWPanModalIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalIndicatorProtocol.h; path = Sources/View/HWPanModalIndicatorProtocol.h; sourceTree = ""; }; + BCF14CEE3203A4E740B9A9FD66CCABA4 /* MJFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJFoundation.m; path = MJExtension/MJFoundation.m; sourceTree = ""; }; + BD243AB5EB0FB2763BBC742A8BCF80DD /* Masonry-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Masonry-prefix.pch"; sourceTree = ""; }; + BD3BC591D3DAF10375616FB7F294F926 /* Masonry-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Masonry-Info.plist"; sourceTree = ""; }; + BD430BA3E5DB115A0F8BF9D6110923AE /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; + BDB258BF0BE17AFC3BFB4FB942403B82 /* SDAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImage.m; path = SDWebImage/Core/SDAnimatedImage.m; sourceTree = ""; }; BDEE6097B6411333154FEF90A280E3E4 /* 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; }; - BE09431A1BE57A882CA02B1E434916A8 /* NSObject+MJProperty.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJProperty.h"; path = "MJExtension/NSObject+MJProperty.h"; sourceTree = ""; }; - BE10A2A4B13E0F15A962DBEA161DE595 /* LKS_AttrGroupsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_AttrGroupsMaker.h; path = Src/Main/Server/Others/LKS_AttrGroupsMaker.h; sourceTree = ""; }; - BE6EFE785E6216D9C7C1D6B7A4EEA5EA /* MJRefreshAutoFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshAutoFooter.m; path = MJRefresh/Base/MJRefreshAutoFooter.m; sourceTree = ""; }; - BEB32B7BEE20F8A74F80D03511F02260 /* JXCategoryDotCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotCell.m; path = Sources/Dot/JXCategoryDotCell.m; sourceTree = ""; }; - BEC06B30EADD5F0931B350F94CD4D15C /* UIRefreshControl+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIRefreshControl+AFNetworking.m"; path = "UIKit+AFNetworking/UIRefreshControl+AFNetworking.m"; sourceTree = ""; }; - BEE43BCA7C1A101BFC7A5856F8793387 /* SDAnimatedImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAnimatedImageView.h; path = SDWebImage/Core/SDAnimatedImageView.h; sourceTree = ""; }; - BF40FB09CDD92326BB3177C14DF172AD /* LSTPopView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopView.h; path = LSTPopView/Classes/Code/LSTPopView.h; sourceTree = ""; }; - BF9910B7B2FF86AF620A45955A338072 /* JXCategoryIndicatorCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorCell.h; path = Sources/Indicator/JXCategoryIndicatorCell.h; sourceTree = ""; }; - BFEF7CB304E59179EBDA954FA636E74D /* SDWebImageTransition.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageTransition.m; path = SDWebImage/Core/SDWebImageTransition.m; sourceTree = ""; }; - C02B6DB0CED9923894E4B972F8B03882 /* NSSet+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSSet+Lookin.m"; path = "Src/Main/Shared/Category/NSSet+Lookin.m"; sourceTree = ""; }; - C06B04E0ABEA41660753A9D5F58572EE /* FLAnimatedImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.release.xcconfig; sourceTree = ""; }; - C0ECED1A3FCBB93D40B1BFFF5AE2F27D /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; - C1227D6957584FA14F5EFE311854C54A /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = WebImage/PrivacyInfo.xcprivacy; sourceTree = ""; }; - C181D8B9B1142624BE8BFFA787AA2854 /* LSTTimer-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTTimer-dummy.m"; sourceTree = ""; }; - C1F534C5FFF39633128C9B99F1BBF1B5 /* UIImage+ExtendedCacheData.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ExtendedCacheData.m"; path = "SDWebImage/Core/UIImage+ExtendedCacheData.m"; sourceTree = ""; }; - C205DB74EDBD3C80FB36923BD2255DBB /* SDWebImageCacheKeyFilter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheKeyFilter.h; path = SDWebImage/Core/SDWebImageCacheKeyFilter.h; sourceTree = ""; }; - C371FCAC7DF4BD1C57C3D164BD5A8759 /* JXCategoryView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXCategoryView-prefix.pch"; sourceTree = ""; }; + BE1A1849BD6BB4B796D54DCBEF79FB7A /* UICollectionViewLayout+MJRefresh.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UICollectionViewLayout+MJRefresh.m"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.m"; sourceTree = ""; }; + BE9E061AE26F933A7BBEFF3D94E9B32D /* NSLayoutConstraint+MASDebugAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSLayoutConstraint+MASDebugAdditions.h"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.h"; sourceTree = ""; }; + BF0EE7E880EA65C279154531EF91F5E8 /* UIButton+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+AFNetworking.m"; path = "UIKit+AFNetworking/UIButton+AFNetworking.m"; sourceTree = ""; }; + BF141C03BAA67847DFB6B6DFF0D1CBFC /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; + BF31B533FDEE0B0DA7ED824B4F336534 /* SDImageFramePool.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFramePool.m; path = SDWebImage/Private/SDImageFramePool.m; sourceTree = ""; }; + BF3C6AEB909F4472F8D8E4E21B25B716 /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; + C00601FB0A8CFBE203150BAEC58E95FC /* LYEmptyView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LYEmptyView-umbrella.h"; sourceTree = ""; }; + C19EBB7B5E5A5B4CB83F93B794EA02A1 /* LKS_CustomDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.m; sourceTree = ""; }; + C1D06F4343D9C630BC102E7BCD9CECCF /* NSSet+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSSet+Lookin.h"; path = "Src/Main/Shared/Category/NSSet+Lookin.h"; sourceTree = ""; }; + C202F1C5D8455CDDCAE965BD7BAAFC3B /* SDMemoryCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDMemoryCache.m; path = SDWebImage/Core/SDMemoryCache.m; sourceTree = ""; }; + C31C4A7197700436AFBAB631C088A6AE /* JXCategoryIndicatorTriangleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorTriangleView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorTriangleView.m; sourceTree = ""; }; + C398AC4FA166ECBDBFA37681D3C108CC /* JXCategoryIndicatorDotLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorDotLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.h; sourceTree = ""; }; C3A46B03C308EEEB11F2A62BA5D2E8BE /* JXCategoryView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = JXCategoryView; path = JXCategoryView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - C4A783F974F95D31DCCDA721D4F965EC /* LSTTimer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTTimer.h; path = LSTTimer/Classes/LSTTimer.h; sourceTree = ""; }; - C4B0E298E792EE24705C7E8457669228 /* MJRefreshGifHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshGifHeader.h; path = MJRefresh/Custom/Header/MJRefreshGifHeader.h; sourceTree = ""; }; - C55730A1966B5DF338B0554ACC4B0B16 /* MJRefreshBackNormalFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackNormalFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.m; sourceTree = ""; }; - C5719A8B6A945982F0856B5A616B379E /* NSObject+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+LookinServer.m"; path = "Src/Main/Server/Category/NSObject+LookinServer.m"; sourceTree = ""; }; - C5A25B7B454717DB3993591B5E8B612E /* NSBezierPath+SDRoundedCorners.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSBezierPath+SDRoundedCorners.m"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.m"; sourceTree = ""; }; - C5A9A86ABA54140CD0A5B6CD44C79740 /* SDWeakProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWeakProxy.m; path = SDWebImage/Private/SDWeakProxy.m; sourceTree = ""; }; - C5FD92D35D7D1F18C67D17C9DD534533 /* LSTTimer-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTTimer-prefix.pch"; sourceTree = ""; }; - C617C2D863C4AC28AF0370EDC02120A9 /* JXCategoryViewDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryViewDefines.h; path = Sources/Common/JXCategoryViewDefines.h; sourceTree = ""; }; - C626E0F07BD081EBE5955DEA5669BF14 /* UIColor+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+LookinServer.m"; path = "Src/Main/Server/Category/UIColor+LookinServer.m"; sourceTree = ""; }; - C63ECE6EA6AB3C1B9F676C1A2510CA67 /* SDWebImagePrefetcher.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImagePrefetcher.h; path = SDWebImage/Core/SDWebImagePrefetcher.h; sourceTree = ""; }; - C6B15D5B29642260AB882050F51A8AE5 /* HWPanModal.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.debug.xcconfig; sourceTree = ""; }; - C6B6ABC9B259D86AA3C2451E682BE701 /* JXCategoryNumberView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberView.h; path = Sources/Number/JXCategoryNumberView.h; sourceTree = ""; }; - C746AE302AD12A4D0F6E287CACA690C6 /* MJRefreshBackGifFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackGifFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.h; sourceTree = ""; }; - C74AFAA0D49E0563D9312CEA70CCF8B3 /* JXCategoryNumberCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryNumberCellModel.h; path = Sources/Number/JXCategoryNumberCellModel.h; sourceTree = ""; }; - C7E392E347A9555F1447E0FBB3E777E5 /* SDImageCoderHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCoderHelper.h; path = SDWebImage/Core/SDImageCoderHelper.h; sourceTree = ""; }; - C806BECAA1C722F04FE4A89D9B14A0E0 /* UIViewController+Presentation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Presentation.m"; path = "Sources/Presentable/UIViewController+Presentation.m"; sourceTree = ""; }; - C8B51A0410EE632DF42E1C298E25B221 /* MJPropertyKey.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJPropertyKey.m; path = MJExtension/MJPropertyKey.m; sourceTree = ""; }; - C8BABB078FC5FF697A3609C777FC51FC /* HWPanModalIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalIndicatorProtocol.h; path = Sources/View/HWPanModalIndicatorProtocol.h; sourceTree = ""; }; - C947209A5CDFABA11FEBE5D709864961 /* HWPageSheetPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPageSheetPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m; sourceTree = ""; }; - C9DDC2FE19D7DC5621872F440C5E8A37 /* MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJProperty.m; path = MJExtension/MJProperty.m; sourceTree = ""; }; - C9F0D4D92726FF95FE428AA975E93DE2 /* LookinAttributeModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributeModification.h; path = Src/Main/Shared/LookinAttributeModification.h; sourceTree = ""; }; - CA18A067DCACA93C5FD4591EBC943217 /* HWPanModal.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.release.xcconfig; sourceTree = ""; }; - CAD02815855109CE0DDD83222F913EF8 /* MJRefreshNormalHeader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalHeader.m; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.m; sourceTree = ""; }; + C3D9450A4AAE9542E6A1A0473B7DF812 /* SDImageCacheConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheConfig.m; path = SDWebImage/Core/SDImageCacheConfig.m; sourceTree = ""; }; + C3DBF2503619D6F278D203DBF5D29B4E /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; + C41AE199679E3EEC03FA1272FE103027 /* UIBlurEffect+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIBlurEffect+LookinServer.h"; path = "Src/Main/Server/Category/UIBlurEffect+LookinServer.h"; sourceTree = ""; }; + C45DF4498F0949CD4F02FA86BFE50D93 /* SDImageTransformer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageTransformer.m; path = SDWebImage/Core/SDImageTransformer.m; sourceTree = ""; }; + C4D51AE584C5960F5C6B60C866377741 /* JXCategoryTitleVerticalZoomCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleVerticalZoomCellModel.h; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCellModel.h; sourceTree = ""; }; + C5D725B550FCED60C80870F1B120D3B4 /* HWShoppingCartPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWShoppingCartPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.m; sourceTree = ""; }; + C63CFE9D73B31D9EBEF51E32F9AC7286 /* JXCategoryListContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryListContainerView.m; path = Sources/Common/JXCategoryListContainerView.m; sourceTree = ""; }; + C644FF26241C14C759578567892EF00D /* HWPanModalPresentableHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentableHandler.h; path = Sources/Mediator/HWPanModalPresentableHandler.h; sourceTree = ""; }; + C64A52A00F5D8A13BA6BD40D1834BF56 /* UITextField+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UITextField+LookinServer.m"; path = "Src/Main/Server/Category/UITextField+LookinServer.m"; sourceTree = ""; }; + C6553D3214536278C24D990CC36267F3 /* Image+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Image+Lookin.m"; path = "Src/Main/Shared/Category/Image+Lookin.m"; sourceTree = ""; }; + C74EA9D59FFCBE16D0C0E5B7B2D53516 /* SDImageCacheDefine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCacheDefine.m; path = SDWebImage/Core/SDImageCacheDefine.m; sourceTree = ""; }; + C75FCCDECEB6A92A56B67E27033473B6 /* AFNetworkReachabilityManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFNetworkReachabilityManager.m; path = AFNetworking/AFNetworkReachabilityManager.m; sourceTree = ""; }; + C7F42FC60A06A5673FA7DE53298188E2 /* LKS_TraceManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_TraceManager.m; path = Src/Main/Server/Others/LKS_TraceManager.m; sourceTree = ""; }; + C81473AB6162F68681F317D8EC207A4C /* LKS_GestureTargetActionsSearcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_GestureTargetActionsSearcher.m; path = Src/Main/Server/Others/LKS_GestureTargetActionsSearcher.m; sourceTree = ""; }; + C86FEA7FA982FA034501F7AB37760D49 /* JXCategoryDotView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotView.m; path = Sources/Dot/JXCategoryDotView.m; sourceTree = ""; }; + C8ED101794ADA1876F4FFCBD1F79D622 /* SDImageLoader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoader.h; path = SDWebImage/Core/SDImageLoader.h; sourceTree = ""; }; + C909F8904D301FB96965DD62CE4E2CA7 /* SDWebImageCacheKeyFilter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCacheKeyFilter.m; path = SDWebImage/Core/SDWebImageCacheKeyFilter.m; sourceTree = ""; }; + C94F3031AB6C5451E9610DBD24FE9029 /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; + C98FF255A58DDF6F211BD72458B9C3D0 /* LSTPopView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "LSTPopView-dummy.m"; sourceTree = ""; }; + C9A08CB30EFC3A6CB342354C253BE4D8 /* NSString+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Lookin.m"; path = "Src/Main/Shared/Category/NSString+Lookin.m"; sourceTree = ""; }; + C9E1D6C567F43B4A9410AC83170573DE /* LookinAttrType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrType.h; path = Src/Main/Shared/LookinAttrType.h; sourceTree = ""; }; + CA665BB1B8AEA701C3C1A72312BFE105 /* HWPanModal.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = HWPanModal.release.xcconfig; sourceTree = ""; }; CAD1D653361EAFCC0E4FFD8252FC1E74 /* Pods-CustomKeyboard.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-CustomKeyboard.modulemap"; sourceTree = ""; }; - CAD21419CFC8A372DB941E7983ADDD9D /* SDDiskCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDiskCache.h; path = SDWebImage/Core/SDDiskCache.h; sourceTree = ""; }; - CB40236F7A3DB0EECDBA370753BEDDD4 /* LookinAppInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAppInfo.m; path = Src/Main/Shared/LookinAppInfo.m; sourceTree = ""; }; - CBA389E7DB380F4012EFBD733C81D43A /* JXCategoryView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JXCategoryView-dummy.m"; sourceTree = ""; }; - CC8BAAD188938B05A876ECFEAA39F2E6 /* JXCategoryIndicatorRainbowLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorRainbowLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.m; sourceTree = ""; }; - CCA4AAE27B9CAF06CC2B0A3C0A3F0594 /* UIScrollView+Helper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScrollView+Helper.m"; path = "Sources/Category/UIScrollView+Helper.m"; sourceTree = ""; }; - CDE98EE96840F02E6074E842D456A2E3 /* MASConstraintMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASConstraintMaker.m; path = Masonry/MASConstraintMaker.m; sourceTree = ""; }; - CE3837EC7E52B2C2855416D01CB974C7 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; - CE77C4D90418C342647C55D75A5C1AE8 /* SDImageGIFCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGIFCoder.m; path = SDWebImage/Core/SDImageGIFCoder.m; sourceTree = ""; }; - CF0E98CA3E42AAC3B854E232BB1AF7FB /* LookinCustomDisplayItemInfo.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomDisplayItemInfo.h; path = Src/Main/Shared/LookinCustomDisplayItemInfo.h; sourceTree = ""; }; + CAE21A3C562355122DA705E505CCA673 /* LookinAttributesSection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesSection.h; path = Src/Main/Shared/LookinAttributesSection.h; sourceTree = ""; }; + CB5214881D82D6C122FB4D3B471F9D93 /* LKS_ObjectRegistry.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ObjectRegistry.m; path = Src/Main/Server/Others/LKS_ObjectRegistry.m; sourceTree = ""; }; + CBB2B3782C3C4626F075A8900436D09D /* UIKit+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIKit+AFNetworking.h"; path = "UIKit+AFNetworking/UIKit+AFNetworking.h"; sourceTree = ""; }; + CBD58A6BE5B4D23DDB42D3D26A87CAEA /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; + CD6BC672271DF551FD22D8BABC528CA6 /* LKS_EventHandlerMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_EventHandlerMaker.m; path = Src/Main/Server/Others/LKS_EventHandlerMaker.m; sourceTree = ""; }; + CDE56910104E914C73DC565FDFEABE34 /* HWPanModal-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "HWPanModal-Info.plist"; sourceTree = ""; }; + CE2B5265F3721FD7EAE15556CCDB1151 /* NSButton+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSButton+WebCache.h"; path = "SDWebImage/Core/NSButton+WebCache.h"; sourceTree = ""; }; + CE5782C68BCDC8C49DD74B206B3FFFF1 /* LSTTimer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTTimer.m; path = LSTTimer/Classes/LSTTimer.m; sourceTree = ""; }; CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "SDWebImage-SDWebImage"; path = SDWebImage.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - CF64931699D303A3C9AE1FFC4682E257 /* JXCategoryIndicatorCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorCell.m; path = Sources/Indicator/JXCategoryIndicatorCell.m; sourceTree = ""; }; - CF85D3EF505C17C565E691AC344CCE5C /* JXPagerListContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerListContainerView.h; path = Sources/JXPagerView/JXPagerListContainerView.h; sourceTree = ""; }; - CF9BCBE90C3B7C448764C897685CB0E3 /* MASViewConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASViewConstraint.m; path = Masonry/MASViewConstraint.m; sourceTree = ""; }; - CFD12B92C17E28346EDC2EC75D0BF494 /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; - D013F3B6606D04CFD12051F02350DB55 /* UIVisualEffectView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIVisualEffectView+LookinServer.h"; path = "Src/Main/Server/Category/UIVisualEffectView+LookinServer.h"; sourceTree = ""; }; - D0317376A8F5B09CBBAC757A9410CF00 /* LSTPopView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LSTPopView.debug.xcconfig; sourceTree = ""; }; - D03FDB7D5A636ED3DC51EF05677C546A /* LookinServerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServerDefines.h; path = Src/Main/Server/Others/LookinServerDefines.h; sourceTree = ""; }; - D16058E57E3F07CA628E8A17A3B944C1 /* LKSConfigManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKSConfigManager.h; path = Src/Main/Server/Others/LKSConfigManager.h; sourceTree = ""; }; - D2F471FC57FF6DD1F698134B35D27C95 /* SDImageIOCoder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageIOCoder.m; path = SDWebImage/Core/SDImageIOCoder.m; sourceTree = ""; }; - D31BFB25B2F3620735E09AC6DE1CBFE3 /* JXPagerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerView.m; path = Sources/JXPagerView/JXPagerView.m; sourceTree = ""; }; - D3543E70B7F1B6F0CB25AB731CA0DFBE /* SDImageAssetManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAssetManager.h; path = SDWebImage/Private/SDImageAssetManager.h; sourceTree = ""; }; - D3CF8B366EB9A41FEDB94035F404215D /* NSArray+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+MASAdditions.m"; path = "Masonry/NSArray+MASAdditions.m"; sourceTree = ""; }; - D3F906D47799FB7ED8D4AA1C036BF3BC /* JXPagerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerView.h; path = Sources/JXPagerView/JXPagerView.h; sourceTree = ""; }; - D40BB639047461966566FFED666B3ACF /* MJRefreshFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshFooter.h; path = MJRefresh/Base/MJRefreshFooter.h; sourceTree = ""; }; - D40E6AE30D19137ABA0A5D046329BCCD /* NSSet+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSSet+Lookin.h"; path = "Src/Main/Shared/Category/NSSet+Lookin.h"; sourceTree = ""; }; - D48043130F64D218A676B16D2CDA0ED8 /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; - D4AA530BA675D0E78BDD9644338B48A3 /* JXCategoryTitleImageCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleImageCell.m; path = Sources/TitleImage/JXCategoryTitleImageCell.m; sourceTree = ""; }; - D4BC45247918896A52CA0C54F038B447 /* NSArray+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSArray+Lookin.m"; path = "Src/Main/Shared/Category/NSArray+Lookin.m"; sourceTree = ""; }; - D4C17E87C77E85F28C83D98FAB4AB7F4 /* JXCategoryImageCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageCellModel.h; path = Sources/Image/JXCategoryImageCellModel.h; sourceTree = ""; }; - D4E6C9FAE7DD5348F64FBD66AA03DA5B /* JXCategoryIndicatorComponentView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorComponentView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorComponentView.m; sourceTree = ""; }; - D4ECB35518D14625B419D0EC58050171 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; sourceTree = ""; }; - D5100072476E008E3F5E024784855C6A /* MBProgressHUD-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MBProgressHUD-umbrella.h"; sourceTree = ""; }; - D5140E810D9AB3FD3FA724CCDD59D3AD /* Masonry.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = Masonry.modulemap; sourceTree = ""; }; - D52171C8DB630868289299203B4ECD0C /* NSObject+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+Lookin.m"; path = "Src/Main/Shared/Category/NSObject+Lookin.m"; sourceTree = ""; }; - D547696F5943987BC61D389F16B201E8 /* SDAnimatedImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "SDAnimatedImageView+WebCache.m"; path = "SDWebImage/Core/SDAnimatedImageView+WebCache.m"; sourceTree = ""; }; - D58A6363674921528AA6EC052D65C890 /* MJRefresh-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MJRefresh-dummy.m"; sourceTree = ""; }; - D5D75E71D2ABCC5D3DDCC662DACBFAED /* JXCategoryIndicatorImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorImageView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h; sourceTree = ""; }; - D675E9EED90BA5941D43EB2C520A01B8 /* WKWebView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "WKWebView+AFNetworking.m"; path = "UIKit+AFNetworking/WKWebView+AFNetworking.m"; sourceTree = ""; }; - D68B54EB4EEB9AF6B9ED16CAB83E16BA /* SDWebImageDownloaderOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderOperation.m; path = SDWebImage/Core/SDWebImageDownloaderOperation.m; sourceTree = ""; }; - D6F5B88F49EB151A388B58319A67E2A1 /* JXCategoryIndicatorProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorProtocol.h; path = Sources/Common/JXCategoryIndicatorProtocol.h; sourceTree = ""; }; + CF46C0579CB3C54966C0F025487DB215 /* JXPagerSmoothView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerSmoothView.m; path = Sources/JXPagerView/JXPagerSmoothView.m; sourceTree = ""; }; + CF6ABA6691731EEA533F56170FB03C5C /* UIView+WebCacheOperation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+WebCacheOperation.h"; path = "SDWebImage/Core/UIView+WebCacheOperation.h"; sourceTree = ""; }; + CF7B4B9CB0EF762A12884D6FE337E068 /* HWPanModalAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalAnimator.h; path = Sources/Animator/HWPanModalAnimator.h; sourceTree = ""; }; + CF91BA63B659D0E10C9E123EBEAB8FA3 /* UIImage+ForceDecode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+ForceDecode.m"; path = "SDWebImage/Core/UIImage+ForceDecode.m"; sourceTree = ""; }; + CFC8ED8D34DD2679124911EB0F515607 /* LookinObject.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinObject.m; path = Src/Main/Shared/LookinObject.m; sourceTree = ""; }; + D00729EFDA62359B2F2AA1EF43FADFD9 /* LKS_CustomAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_CustomAttrModificationHandler.m; sourceTree = ""; }; + D0B1EDD790AB62D80A6CA23D5272938B /* LookinAttributesGroup.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttributesGroup.m; path = Src/Main/Shared/LookinAttributesGroup.m; sourceTree = ""; }; + D1046C4A0F4D596969B881D83BCC0FA1 /* FLAnimatedImage.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = FLAnimatedImage.m; path = FLAnimatedImage/FLAnimatedImage.m; sourceTree = ""; }; + D25C8F67455D872A48F4797213321EA4 /* JXCategoryIndicatorRainbowLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorRainbowLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h; sourceTree = ""; }; + D30B8333D334528105E28100C243348D /* MBProgressHUD-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "MBProgressHUD-dummy.m"; sourceTree = ""; }; + D3FD4542A2D174FC95524833AB672073 /* JXPagingView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXPagingView.release.xcconfig; sourceTree = ""; }; + D411D25D78A2F9E3CF17B20443ED9F40 /* MJRefreshNormalHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshNormalHeader.h; path = MJRefresh/Custom/Header/MJRefreshNormalHeader.h; sourceTree = ""; }; + D444527057532BACBF8EC98BE62D3E03 /* SDGraphicsImageRenderer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDGraphicsImageRenderer.h; path = SDWebImage/Core/SDGraphicsImageRenderer.h; sourceTree = ""; }; + D44C8E719DA4251716FDA4B2519C022D /* NSObject+MJProperty.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSObject+MJProperty.m"; path = "MJExtension/NSObject+MJProperty.m"; sourceTree = ""; }; + D4CFF1EB3CBDD5217E39DD58BD101359 /* LookinEventHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinEventHandler.m; path = Src/Main/Shared/LookinEventHandler.m; sourceTree = ""; }; + D5119B7CF0FE429CF0E185983E72F98F /* JXCategoryNumberView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberView.m; path = Sources/Number/JXCategoryNumberView.m; sourceTree = ""; }; + D51E4D4230E01D5F3D9340BDF320C3E1 /* JXCategoryImageCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageCellModel.h; path = Sources/Image/JXCategoryImageCellModel.h; sourceTree = ""; }; + D564B14F434E85E8016FF192E33548A8 /* JXPagerMainTableView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXPagerMainTableView.h; path = Sources/JXPagerView/JXPagerMainTableView.h; sourceTree = ""; }; + D5909A44E1AC01893309CADDDBC4E50C /* UILabel+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UILabel+LookinServer.h"; path = "Src/Main/Server/Category/UILabel+LookinServer.h"; sourceTree = ""; }; + D5BBA19EC013D7414BE28B29DCA7518D /* FLAnimatedImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = FLAnimatedImage.release.xcconfig; sourceTree = ""; }; + D68722AFBA338282E0B3C89AFE0F83AC /* JXCategoryIndicatorBackgroundView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorBackgroundView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.m; sourceTree = ""; }; D742A7EF918BC67B0884AF366F7415FD /* Pods-CustomKeyboard-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-CustomKeyboard-acknowledgements.plist"; sourceTree = ""; }; - D744043462D81E4ED2BB1ECAE8E9F696 /* SDImageCachesManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCachesManager.h; path = SDWebImage/Core/SDImageCachesManager.h; sourceTree = ""; }; - D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXCategoryView.debug.xcconfig; sourceTree = ""; }; - D7DFD14540146731FB9E466FA1EB81F0 /* LookinAttrType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrType.h; path = Src/Main/Shared/LookinAttrType.h; sourceTree = ""; }; - D843F393C308E0D3BCB88A0B04FDB291 /* UIImage+ForceDecode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+ForceDecode.h"; path = "SDWebImage/Core/UIImage+ForceDecode.h"; sourceTree = ""; }; - D9922CA9D57AA94D9EE06129264F7958 /* Masonry-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Masonry-Info.plist"; sourceTree = ""; }; - D9DA60EBF6A57B0D3224E3ACD3E51971 /* JXCategoryCollectionView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryCollectionView.m; path = Sources/Common/JXCategoryCollectionView.m; sourceTree = ""; }; - D9EC522C5B6A10C53A05FE81CED85983 /* NSString+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Lookin.m"; path = "Src/Main/Shared/Category/NSString+Lookin.m"; sourceTree = ""; }; - DA5203B4ACDB110F236306ADB5531C98 /* MJExtension-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "MJExtension-prefix.pch"; sourceTree = ""; }; - DAB0E506E749384DE93170FA1EE1FD3B /* HWPanContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanContainerView.h; path = Sources/View/HWPanContainerView.h; sourceTree = ""; }; - DACDF6DBB7030D05CC43C7DB516265EE /* HWVisualEffectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWVisualEffectView.m; path = Sources/View/HWVisualEffectView.m; sourceTree = ""; }; - DACFBFCC588CFB73AE8A6DB153DEA42F /* JXCategoryView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryView.h; path = Sources/JXCategoryView.h; sourceTree = ""; }; - DAFBC54BDE2AC21397492351C31C587A /* HWPanModalPresentableHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentableHandler.h; path = Sources/Mediator/HWPanModalPresentableHandler.h; sourceTree = ""; }; - DB3619AB8798CD8CAE31E140F80F2DC0 /* MBProgressHUD.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = MBProgressHUD.m; sourceTree = ""; }; - DB3CBBCBF7B8B49A86FAC8D0A1741C77 /* UIImage+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+LookinServer.h"; path = "Src/Main/Server/Category/UIImage+LookinServer.h"; sourceTree = ""; }; - DB866CD01C61417D45924946690C442B /* HWPanModal.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = HWPanModal.modulemap; sourceTree = ""; }; - DBE1F0821F32567F3E84359D65C8422C /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; - DBE3855004E17CACAC82F75DF8EFEBD4 /* LSTPopView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-umbrella.h"; sourceTree = ""; }; - DC0451732A9C9A896EEC15BEC88B3151 /* LKS_InbuiltAttrModificationHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_InbuiltAttrModificationHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_InbuiltAttrModificationHandler.m; sourceTree = ""; }; - DC285A6C8053D7E2AE423BE51B24E8AE /* AFURLRequestSerialization.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFURLRequestSerialization.h; path = AFNetworking/AFURLRequestSerialization.h; sourceTree = ""; }; - DC82DAFD220FAA7899CE21078C2C649D /* UIView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LookinServer.h"; path = "Src/Main/Server/Category/UIView+LookinServer.h"; sourceTree = ""; }; - DC870A534B766E7815C7744EE9E7E3E1 /* SDImageAWebPCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAWebPCoder.h; path = SDWebImage/Core/SDImageAWebPCoder.h; sourceTree = ""; }; + D7C0280DF79D384D6CBED6E080E02BB8 /* LSTPopView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-umbrella.h"; sourceTree = ""; }; + D7F6132E07FDE40130D6C51920456A21 /* UIButton+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIButton+AFNetworking.h"; path = "UIKit+AFNetworking/UIButton+AFNetworking.h"; sourceTree = ""; }; + D8B8A062E76BF87D54F581F6428D4E28 /* NSLayoutConstraint+MASDebugAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSLayoutConstraint+MASDebugAdditions.m"; path = "Masonry/NSLayoutConstraint+MASDebugAdditions.m"; sourceTree = ""; }; + D98B4BEA4820634A8F01172731FF97B7 /* JXCategoryView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "JXCategoryView-dummy.m"; sourceTree = ""; }; + D9BB987ADE61FFDF3C240961F2EB4DDB /* LookinConnectionResponseAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionResponseAttachment.h; path = Src/Main/Shared/LookinConnectionResponseAttachment.h; sourceTree = ""; }; + D9CF33220A4EDFF59077DE1F83605414 /* JXCategoryListContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryListContainerView.h; path = Sources/Common/JXCategoryListContainerView.h; sourceTree = ""; }; + DA08E928976E65BC11D71562A0E4FBA2 /* LSTPopView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-prefix.pch"; sourceTree = ""; }; + DA0C012CAB8552E7EA8382B0E5D6B738 /* UIImageView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+LookinServer.m"; path = "Src/Main/Server/Category/UIImageView+LookinServer.m"; sourceTree = ""; }; + DA49453EBB9C905AD701D17F18479113 /* LKS_ConnectionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ConnectionManager.m; path = Src/Main/Server/Connection/LKS_ConnectionManager.m; sourceTree = ""; }; + DB1B5D6DA097974C176F91F3853055EC /* ViewController+MASAdditions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "ViewController+MASAdditions.m"; path = "Masonry/ViewController+MASAdditions.m"; sourceTree = ""; }; + DB3B6BBCBC04C438F099DE5DEC15C188 /* UIViewController+Presentation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+Presentation.h"; path = "Sources/Presentable/UIViewController+Presentation.h"; sourceTree = ""; }; + DB48FEC8123075E04395CF34F6F8227D /* HWPanModalPresentationAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationAnimator.h; path = Sources/Animator/HWPanModalPresentationAnimator.h; sourceTree = ""; }; + DB7D4CE7BA063A9CA415CD86C8825985 /* LSTPopView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LSTPopView.h; path = LSTPopView/Classes/Code/LSTPopView.h; sourceTree = ""; }; + DBFA6FCFCE1CB3F169BDBDCE936950B5 /* LKS_ObjectRegistry.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ObjectRegistry.h; path = Src/Main/Server/Others/LKS_ObjectRegistry.h; sourceTree = ""; }; + DC7496C927F9E881D19A203C207B5417 /* UIView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+LookinServer.h"; path = "Src/Main/Server/Category/UIView+LookinServer.h"; sourceTree = ""; }; + DC85B08C4C82F12C3AA7970FE44E1D9F /* UIColor+SDHexString.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+SDHexString.h"; path = "SDWebImage/Private/UIColor+SDHexString.h"; sourceTree = ""; }; DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-keyBoard"; path = Pods_keyBoard.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + DCB771163568003A2EA8F4B1A606B9ED /* UIActivityIndicatorView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIActivityIndicatorView+AFNetworking.h"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.h"; sourceTree = ""; }; DCFE00F3CC8CED67258D7F7DD13F3156 /* Pods-keyBoard-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-keyBoard-frameworks.sh"; sourceTree = ""; }; - DD1439668AF92748DEFAD18BF418CE55 /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; - DD3BFE6DB15E8FF64920F720EA31EEDE /* MJRefreshNormalTrailer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshNormalTrailer.m; path = MJRefresh/Custom/Trailer/MJRefreshNormalTrailer.m; sourceTree = ""; }; - DD3CC2F2CD0FD607BD99AA89E970269A /* HWPageSheetPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPageSheetPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.h; sourceTree = ""; }; - DDA8FA3EA27827F124700F1B6176E4CE /* Bugly.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = Bugly.debug.xcconfig; sourceTree = ""; }; - DDAA59B8AF34E0C4765874AEE69571F7 /* JXCategoryTitleImageCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleImageCellModel.h; path = Sources/TitleImage/JXCategoryTitleImageCellModel.h; sourceTree = ""; }; - DDDA744A029AF23E45515CE37C056256 /* LookinAttribute.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAttribute.m; path = Src/Main/Shared/LookinAttribute.m; sourceTree = ""; }; + DD2F0E472487CBFBA5CA4F3C62C1BB0B /* NSObject+MJCoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJCoding.h"; path = "MJExtension/NSObject+MJCoding.h"; sourceTree = ""; }; + DE0511947F57D1CF3F274B6414AE449B /* UIScrollView+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIScrollView+MJRefresh.h"; path = "MJRefresh/UIScrollView+MJRefresh.h"; sourceTree = ""; }; DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LSTTimer; path = LSTTimer.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - DEDB698B7BC2AF63B53722CF1D2D8E57 /* MJRefreshAutoNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoNormalFooter.h; path = MJRefresh/Custom/Footer/Auto/MJRefreshAutoNormalFooter.h; sourceTree = ""; }; - DEDFC34DB720F4FD92E634E486425845 /* MASViewConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASViewConstraint.h; path = Masonry/MASViewConstraint.h; sourceTree = ""; }; - E032CFFEFE6D0B2BC568E604265CD74C /* DZNEmptyDataSet.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DZNEmptyDataSet.modulemap; sourceTree = ""; }; + DE378B71C4559C86FA84F1AB2F15BD03 /* AFURLRequestSerialization.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLRequestSerialization.m; path = AFNetworking/AFURLRequestSerialization.m; sourceTree = ""; }; + DE4F66BD16AF47C58F5E08D62D7916E3 /* HWPanModalPresenterProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresenterProtocol.h; path = Sources/Presenter/HWPanModalPresenterProtocol.h; sourceTree = ""; }; + DE7E60B5B6A0850596F935D95CAFE167 /* MJRefreshAutoFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshAutoFooter.h; path = MJRefresh/Base/MJRefreshAutoFooter.h; sourceTree = ""; }; + DEDA7D852A16AEB2E4133F8138BB40A3 /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; + DEEA81C89F22AF300ABFA4E5550B7B06 /* SDImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCache.h; path = SDWebImage/Core/SDImageCache.h; sourceTree = ""; }; + DEFCE7D8BFD813860A380F7F5B5EB401 /* LKS_AttrModificationPatchHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_AttrModificationPatchHandler.m; path = Src/Main/Server/Connection/RequestHandler/LKS_AttrModificationPatchHandler.m; sourceTree = ""; }; + DF017A36F518C19E10298190FD8A84C4 /* LKS_RequestHandler.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_RequestHandler.m; path = Src/Main/Server/Connection/LKS_RequestHandler.m; sourceTree = ""; }; + DF80C06856CA889ADB8807594055C7DF /* JXCategoryView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXCategoryView.release.xcconfig; sourceTree = ""; }; + DF85367F662269F3652AFC693AA2B00F /* LookinAppInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinAppInfo.m; path = Src/Main/Shared/LookinAppInfo.m; sourceTree = ""; }; + DFE214BE294126C1B4FFE49DDADA7AEE /* SDImageCachesManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManager.m; path = SDWebImage/Core/SDImageCachesManager.m; sourceTree = ""; }; + E00B4B67B95B1D4B1001EF45F23EF0C4 /* LYEmptyView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LYEmptyView.release.xcconfig; sourceTree = ""; }; + E01ADBA325921AF74B0FBD58F7BB5032 /* JXCategoryTitleCellModel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleCellModel.h; path = Sources/Title/JXCategoryTitleCellModel.h; sourceTree = ""; }; E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "JXPagingView-JXPagerView"; path = JXPagerView.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; - E075739451FCFAA914670EB353642C16 /* UIImage+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+LookinServer.m"; path = "Src/Main/Server/Category/UIImage+LookinServer.m"; sourceTree = ""; }; - E0A4E94FB3CF9B468E72117C85C2E773 /* JXCategoryViewAnimator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryViewAnimator.h; path = Sources/Common/JXCategoryViewAnimator.h; sourceTree = ""; }; - E138C277A1DD60E5BB20AB4EC7CEBDB2 /* SDWebImageDownloaderConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderConfig.h; path = SDWebImage/Core/SDWebImageDownloaderConfig.h; sourceTree = ""; }; - E152B4E044E172623798E791ACCC157E /* UIProgressView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIProgressView+AFNetworking.m"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.m"; sourceTree = ""; }; - E1921A1332A20D950700741950E97126 /* CALayer+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "CALayer+LookinServer.m"; path = "Src/Main/Server/Category/CALayer+LookinServer.m"; sourceTree = ""; }; - E1F236D1BF028AEAD75A9FB3C9DCAE0F /* KeyValueObserver.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = KeyValueObserver.m; path = Sources/KVO/KeyValueObserver.m; sourceTree = ""; }; + E0742EB318197474CB672E4520705ACC /* JXPagerListContainerView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXPagerListContainerView.m; path = Sources/JXPagerView/JXPagerListContainerView.m; sourceTree = ""; }; + E0DD4370E4AF2D75716AE1B5D67EABEB /* SDWebImageIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageIndicator.h; path = SDWebImage/Core/SDWebImageIndicator.h; sourceTree = ""; }; E214C17CF404D45BDF92DD6C18D371FA /* Pods-keyBoard-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-keyBoard-acknowledgements.markdown"; sourceTree = ""; }; - E259D7D54703B047363E50046A949F68 /* JXPagingView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "JXPagingView-Info.plist"; sourceTree = ""; }; - E25EECD78C776DB2FDB519D3AA7CB0BD /* JXCategoryListContainerView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryListContainerView.h; path = Sources/Common/JXCategoryListContainerView.h; sourceTree = ""; }; - E29E39BBB558CC51A6DB91379351B72E /* UIColor+SDHexString.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+SDHexString.m"; path = "SDWebImage/Private/UIColor+SDHexString.m"; sourceTree = ""; }; - E3535B97DCD1B05E059D045B16700F34 /* FLAnimatedImage-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "FLAnimatedImage-dummy.m"; sourceTree = ""; }; - E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = SDWebImage.release.xcconfig; sourceTree = ""; }; - E42238B57F88C70438DE479E184E4352 /* JXCategoryTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryTitleView.h; path = Sources/Title/JXCategoryTitleView.h; sourceTree = ""; }; - E44ED3A05255119AA352B7DE0C64E994 /* View+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASAdditions.h"; path = "Masonry/View+MASAdditions.h"; sourceTree = ""; }; - E48A50CB4DE0A87DE4F3E1BFE24DC7B7 /* SDWebImagePrefetcher.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImagePrefetcher.m; path = SDWebImage/Core/SDWebImagePrefetcher.m; sourceTree = ""; }; + E23048DA7D038B179D12173BA0F800DB /* LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServer.h; path = Src/Main/Server/LookinServer.h; sourceTree = ""; }; + E312EC8FB74A492C6D5A647700644AC4 /* NSSet+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSSet+Lookin.m"; path = "Src/Main/Shared/Category/NSSet+Lookin.m"; sourceTree = ""; }; + E368F7BC820788B717CC047A744E4326 /* SDImageCacheConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageCacheConfig.h; path = SDWebImage/Core/SDImageCacheConfig.h; sourceTree = ""; }; + E386525610DF7AB4E84ED0202969AB8E /* FLAnimatedImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = FLAnimatedImage.h; path = FLAnimatedImage/include/FLAnimatedImage.h; sourceTree = ""; }; + E38A10934CB29F9B2C75A0785209FA84 /* SDWebImageDownloaderDecryptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageDownloaderDecryptor.m; path = SDWebImage/Core/SDWebImageDownloaderDecryptor.m; sourceTree = ""; }; + E45A9679E38D826E316675D8F368F69C /* MJRefreshBackNormalFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackNormalFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackNormalFooter.h; sourceTree = ""; }; + E4718E4C19C181FBAEBD080580F8C026 /* SDImageIOCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOCoder.h; path = SDWebImage/Core/SDImageIOCoder.h; sourceTree = ""; }; E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = MJRefresh; path = MJRefresh.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - E5592C4FA7C5389CD5E3CCE2F804F447 /* HWPanModal-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "HWPanModal-prefix.pch"; sourceTree = ""; }; - E5AA796F8B4298B625A467D39523F40F /* LKS_EventHandlerMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_EventHandlerMaker.h; path = Src/Main/Server/Others/LKS_EventHandlerMaker.h; sourceTree = ""; }; - E5B1C13BB84FC1E79BC9BB233B793A5A /* MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJExtension.h; path = MJExtension/MJExtension.h; sourceTree = ""; }; - E5EA191D7CFA74A3FEAFB27130A3FEC7 /* RTLManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = RTLManager.m; path = Sources/RLTManager/RTLManager.m; sourceTree = ""; }; - E654A0C1F961A76933C784134A3D98E4 /* LookinServer.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = LookinServer.debug.xcconfig; sourceTree = ""; }; - E6B846D03C97210EDD55850D04A8F27A /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; - E74AC99A06CC9DE9D81D54044B013F98 /* LKS_CustomDisplayItemsMaker.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomDisplayItemsMaker.m; path = Src/Main/Server/Others/LKS_CustomDisplayItemsMaker.m; sourceTree = ""; }; - E87C7E8B87671964EE3B94CB801C492E /* SDWebImage-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "SDWebImage-Info.plist"; sourceTree = ""; }; - E889A3C02C6D9C2F5501AF30759E916C /* SDImageLoadersManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageLoadersManager.h; path = SDWebImage/Core/SDImageLoadersManager.h; sourceTree = ""; }; - E8DC9FFB899510CE978017ADFAFE6D87 /* HWPanModalPresenterProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresenterProtocol.h; path = Sources/Presenter/HWPanModalPresenterProtocol.h; sourceTree = ""; }; - E9598F4E504AE0DA98A0B2DC305F1C83 /* MJRefreshConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshConfig.h; path = MJRefresh/MJRefreshConfig.h; sourceTree = ""; }; - E95C47EFA2CADA467B5A46831F0EA87A /* SDWebImageCacheSerializer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageCacheSerializer.h; path = SDWebImage/Core/SDWebImageCacheSerializer.h; sourceTree = ""; }; - E97B2ACE11733D7DD5ECA116979B91D5 /* LookinEventHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinEventHandler.h; path = Src/Main/Shared/LookinEventHandler.h; sourceTree = ""; }; - E9CB22320707CAEB4EE4C1DF62EB9E1A /* UIView+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+LookinServer.m"; path = "Src/Main/Server/Category/UIView+LookinServer.m"; sourceTree = ""; }; - EAEC3302C39E58E44D49A12FA8699A84 /* SDImageFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageFrame.m; path = SDWebImage/Core/SDImageFrame.m; sourceTree = ""; }; - EB21E143FD58D712C16E9026FBFFE194 /* MASLayoutConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASLayoutConstraint.m; path = Masonry/MASLayoutConstraint.m; sourceTree = ""; }; - EB3C413B4ED21D886E50FCBC0761408E /* LKS_ExportManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_ExportManager.h; path = Src/Main/Server/Others/LKS_ExportManager.h; sourceTree = ""; }; - EC33F9EE9311F0E41E69AB2D40770217 /* SDWebImageDownloaderResponseModifier.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageDownloaderResponseModifier.h; path = SDWebImage/Core/SDWebImageDownloaderResponseModifier.h; sourceTree = ""; }; - EC4AC84F5855EC104608477917DF3145 /* JXCategoryIndicatorDotLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorDotLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m; sourceTree = ""; }; - EC57F0405D7809ECABB52C0C041C6F2F /* JXCategoryImageCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryImageCellModel.m; path = Sources/Image/JXCategoryImageCellModel.m; sourceTree = ""; }; - EC9D66F9AD565D0A6E6595CFC812165E /* LookinStaticAsyncUpdateTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinStaticAsyncUpdateTask.m; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.m; sourceTree = ""; }; - ECA422AB0F45E3F4B650188FEE476C8C /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; - ED2932A528EF3931C345CFE64B9F95D6 /* SDWebImageOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageOperation.m; path = SDWebImage/Core/SDWebImageOperation.m; sourceTree = ""; }; - ED6F94603AF0AF72D292CADE8ABCEEB3 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; - ED71DE4537C6ECADC81696A80C943E64 /* HWBackgroundConfig.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWBackgroundConfig.m; path = Sources/View/HWBackgroundConfig.m; sourceTree = ""; }; - ED8D9D4C66EB7593131560466A9EEB08 /* SDWebImage-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-prefix.pch"; sourceTree = ""; }; - EE1A5661BE1EACFB3D2C7F19D51BF011 /* NSString+MJExtension.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+MJExtension.h"; path = "MJExtension/NSString+MJExtension.h"; sourceTree = ""; }; - EE80578D9DB416BD158323BE4D5C76F4 /* HWPanModal-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "HWPanModal-dummy.m"; sourceTree = ""; }; - EEB6F4442CB80A88D94B35721714C121 /* Color+Lookin.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "Color+Lookin.h"; path = "Src/Main/Shared/Category/Color+Lookin.h"; sourceTree = ""; }; - EED2C7FD129EA6F065286A12502B79B7 /* JXCategoryDotView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotView.m; path = Sources/Dot/JXCategoryDotView.m; sourceTree = ""; }; - EF3A8DFB97BB54D169F6E8AC578F498C /* JXCategoryDotCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryDotCellModel.m; path = Sources/Dot/JXCategoryDotCellModel.m; sourceTree = ""; }; - EF426A2B87D32263A2C56A13732C8201 /* LSTTimer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LSTTimer.m; path = LSTTimer/Classes/LSTTimer.m; sourceTree = ""; }; - F0FF9B39CB74F30B336CF7D4085E2AE0 /* UICollectionViewLayout+MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UICollectionViewLayout+MJRefresh.h"; path = "MJRefresh/UICollectionViewLayout+MJRefresh.h"; sourceTree = ""; }; - F15C652E7FDB0BE287A551718B00B6A8 /* JXCategoryNumberCellModel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryNumberCellModel.m; path = Sources/Number/JXCategoryNumberCellModel.m; sourceTree = ""; }; - F1C50876E480E256FAA99FC38F2BC478 /* LKS_ConnectionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_ConnectionManager.m; path = Src/Main/Server/Connection/LKS_ConnectionManager.m; sourceTree = ""; }; - F21EDB4000AA52958FC207353BC36367 /* UIImageView+WebCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+WebCache.h"; path = "SDWebImage/Core/UIImageView+WebCache.h"; sourceTree = ""; }; - F246E4D58E65C83AB3493871F692FC9C /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; - F2698AC3972900E338490644A2E03A2A /* LookinCodingValueType.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCodingValueType.h; path = Src/Main/Shared/LookinCodingValueType.h; sourceTree = ""; }; - F2A8643D9113999359ADC6C79DA48111 /* Color+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Color+Lookin.m"; path = "Src/Main/Shared/Category/Color+Lookin.m"; sourceTree = ""; }; - F2EB780D15F77D48AEC0D3A47833557E /* LSTPopView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "LSTPopView-prefix.pch"; sourceTree = ""; }; - F3AD144DF03231D478D237DCFC615D36 /* LookinConnectionAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinConnectionAttachment.h; path = Src/Main/Shared/LookinConnectionAttachment.h; sourceTree = ""; }; - F451B2E12A8192978BB7FB1B45BF1E04 /* MASCompositeConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASCompositeConstraint.h; path = Masonry/MASCompositeConstraint.h; sourceTree = ""; }; - F45F2EB9AE5E2D5BDC0F9860DB695385 /* UIImageView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+LookinServer.h"; path = "Src/Main/Server/Category/UIImageView+LookinServer.h"; sourceTree = ""; }; - F4D2D27159CC3A8AAABD93291FBA2B48 /* LookinServer.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = LookinServer.modulemap; sourceTree = ""; }; - F549CCE65FFF5AC81AB62FDCCB6CB8DC /* AFNetworking.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = AFNetworking.modulemap; sourceTree = ""; }; - F55015AACD21AF6274741BBDAC6148E2 /* NSImage+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSImage+Compatibility.h"; path = "SDWebImage/Core/NSImage+Compatibility.h"; sourceTree = ""; }; - F6CC661C43717D8BBB4405FD037BDC03 /* LookinCustomAttrModification.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinCustomAttrModification.m; path = Src/Main/Shared/LookinCustomAttrModification.m; sourceTree = ""; }; - F7CD4CF41A222A66B3E435AB32DF697D /* NSObject+MJClass.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSObject+MJClass.h"; path = "MJExtension/NSObject+MJClass.h"; sourceTree = ""; }; - F7FE08919F8BE5AACFB3A1E812E57C03 /* AFAutoPurgingImageCache.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFAutoPurgingImageCache.h; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.h"; sourceTree = ""; }; - F86F79271CDA27370B63C4004FB83EF7 /* SDImageFramePool.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageFramePool.h; path = SDWebImage/Private/SDImageFramePool.h; sourceTree = ""; }; - F8A31B7D92D4FBD879F8C39ED3139439 /* SDWebImageError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageError.m; path = SDWebImage/Core/SDWebImageError.m; sourceTree = ""; }; - F904F7CF43AB518217FB1AB9236020D4 /* UIColor+JXAdd.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIColor+JXAdd.h"; path = "Sources/Common/UIColor+JXAdd.h"; sourceTree = ""; }; - F90D97C684BADB3FE9796E626B98C43A /* LookinDisplayItemDetail.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinDisplayItemDetail.m; path = Src/Main/Shared/LookinDisplayItemDetail.m; sourceTree = ""; }; - FA395F2DBB98D70F218443EA65E0D442 /* SDImageLoader.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageLoader.m; path = SDWebImage/Core/SDImageLoader.m; sourceTree = ""; }; - FA6406A6E74DC06D367BE38EA6C60243 /* LKS_Helper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_Helper.h; path = Src/Main/Server/Others/LKS_Helper.h; sourceTree = ""; }; - FA94CFBBBF3DC429BAF55FD9493336B4 /* AFImageDownloader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFImageDownloader.h; path = "UIKit+AFNetworking/AFImageDownloader.h"; sourceTree = ""; }; + E4A5839D54BEE8A98756D5288A3E5050 /* NSBezierPath+SDRoundedCorners.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSBezierPath+SDRoundedCorners.h"; path = "SDWebImage/Private/NSBezierPath+SDRoundedCorners.h"; sourceTree = ""; }; + E4BFFACAA945CC17167910BF3C319571 /* SDAssociatedObject.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDAssociatedObject.h; path = SDWebImage/Private/SDAssociatedObject.h; sourceTree = ""; }; + E4F1989DBFF7A3D94A0CF758DF35B3F6 /* HWPresentingVCAnimatedTransitioning.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPresentingVCAnimatedTransitioning.h; path = Sources/Animator/HWPresentingVCAnimatedTransitioning.h; sourceTree = ""; }; + E6CAC4483459A4704E779D629644670B /* HWPanModalContentView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalContentView.h; path = Sources/View/PanModal/HWPanModalContentView.h; sourceTree = ""; }; + E6FEAED2BC2A577A78A12FA14FC3BB6B /* LookinAttributesGroup.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttributesGroup.h; path = Src/Main/Shared/LookinAttributesGroup.h; sourceTree = ""; }; + E7485AA213719656370219B55A0AAE3C /* MJRefreshBackStateFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackStateFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.m; sourceTree = ""; }; + E75295D3FB5952A7B3A8B497D502A68D /* ResourceBundle-MJExtension-MJExtension-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-MJExtension-MJExtension-Info.plist"; sourceTree = ""; }; + E81450568229FA708143E74A7A580F89 /* JXCategoryCollectionView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryCollectionView.m; path = Sources/Common/JXCategoryCollectionView.m; sourceTree = ""; }; + E847BE3D7FA245C62A989A8A4F90542A /* UITableView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITableView+LookinServer.h"; path = "Src/Main/Server/Category/UITableView+LookinServer.h"; sourceTree = ""; }; + E8B2553B72F322F7DC0ED38BB760DDC6 /* UIButton+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIButton+WebCache.m"; path = "SDWebImage/Core/UIButton+WebCache.m"; sourceTree = ""; }; + E8C71212CAB0DCBF4059538A93053A4A /* UIViewController+PanModalDefault.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIViewController+PanModalDefault.h"; path = "Sources/Presentable/UIViewController+PanModalDefault.h"; sourceTree = ""; }; + E948F26A10F663204E24603E8527A7F5 /* JXCategoryListContainerRTLCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryListContainerRTLCell.h; path = Sources/Common/JXCategoryListContainerRTLCell.h; sourceTree = ""; }; + E9FA8ED817E86A0F4415B8E73B62DCF8 /* SDImageGraphics.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageGraphics.m; path = SDWebImage/Core/SDImageGraphics.m; sourceTree = ""; }; + EA3E73CFAE53223D9EC3DE4B0794DB06 /* AFURLSessionManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFURLSessionManager.m; path = AFNetworking/AFURLSessionManager.m; sourceTree = ""; }; + EA759F283932CC196A3C378E0037B993 /* UIColor+JXAdd.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+JXAdd.m"; path = "Sources/Common/UIColor+JXAdd.m"; sourceTree = ""; }; + EB461C49F04DBE8D8B709BDAA4911ADC /* UIProgressView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIProgressView+AFNetworking.h"; path = "UIKit+AFNetworking/UIProgressView+AFNetworking.h"; sourceTree = ""; }; + EB54379A72A5DCC64A2C9D42F05AE928 /* LookinServerDefines.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinServerDefines.h; path = Src/Main/Server/Others/LookinServerDefines.h; sourceTree = ""; }; + EBEEA0239556FEF194877FD307A4ADD6 /* View+MASShorthandAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "View+MASShorthandAdditions.h"; path = "Masonry/View+MASShorthandAdditions.h"; sourceTree = ""; }; + EC37DBDA721D0EFF5AB018086BE1B195 /* HWPanModal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModal.h; path = Sources/HWPanModal.h; sourceTree = ""; }; + EC4CFDD75B85C12B1C1393BEA03A165C /* MBProgressHUD.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MBProgressHUD.debug.xcconfig; sourceTree = ""; }; + ECA7ED760D61427E9195A2805DB71798 /* UIView+HW_Frame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+HW_Frame.m"; path = "Sources/Category/UIView+HW_Frame.m"; sourceTree = ""; }; + ED2A7F3394578B0F6BEA7FBFFE1E2291 /* MJRefreshBackStateFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackStateFooter.h; path = MJRefresh/Custom/Footer/Back/MJRefreshBackStateFooter.h; sourceTree = ""; }; + ED332DDCE634104C42A2AF8F698EDFB2 /* UIImageView+AFNetworking.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImageView+AFNetworking.h"; path = "UIKit+AFNetworking/UIImageView+AFNetworking.h"; sourceTree = ""; }; + ED87146FC94850F3891F867B1931F652 /* AFAutoPurgingImageCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = AFAutoPurgingImageCache.m; path = "UIKit+AFNetworking/AFAutoPurgingImageCache.m"; sourceTree = ""; }; + EDA0AA2D50C091E5400CDFDEC4B5B802 /* LKS_MultiplatformAdapter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_MultiplatformAdapter.h; path = Src/Main/Server/Others/LKS_MultiplatformAdapter.h; sourceTree = ""; }; + EDA5337EF8951852F4AA839734BF6786 /* HWPanModalAnimator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPanModalAnimator.m; path = Sources/Animator/HWPanModalAnimator.m; sourceTree = ""; }; + EDCA67FC2B94130DF2B6CE9E65BC9944 /* AFNetworking-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "AFNetworking-prefix.pch"; sourceTree = ""; }; + EE827BC4171898B142EBDE3C763AFC7F /* SDWebImage.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImage.h; path = WebImage/SDWebImage.h; sourceTree = ""; }; + EE9E5D3590E1EC14CD269A8B340CE3F0 /* SDImageCachesManagerOperation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCachesManagerOperation.m; path = SDWebImage/Private/SDImageCachesManagerOperation.m; sourceTree = ""; }; + EEB5224BF1CABA409B3D3760EDDAEA0A /* LYEmptyView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = LYEmptyView; path = LYEmptyView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; + EF1815C1F114106321929B2F631067E5 /* SDImageIOAnimatedCoderInternal.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageIOAnimatedCoderInternal.h; path = SDWebImage/Private/SDImageIOAnimatedCoderInternal.h; sourceTree = ""; }; + EF2876A2D62001FE741FE92492A10CFF /* JXCategoryIndicatorImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorImageView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorImageView.h; sourceTree = ""; }; + EF62C88D7041DEBD26117AF61789D8AB /* HWPanModalPresentationUpdateProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPresentationUpdateProtocol.h; path = Sources/Presentable/HWPanModalPresentationUpdateProtocol.h; sourceTree = ""; }; + EF7183977EF6286C16A64DBC3D765320 /* HWPanModalHeight.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalHeight.h; path = Sources/Presentable/HWPanModalHeight.h; sourceTree = ""; }; + EFC3A24D1CE615DA957AE8C5AC47E5D7 /* SDWebImageManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageManager.m; path = SDWebImage/Core/SDWebImageManager.m; sourceTree = ""; }; + F00B3F2B17BB2816232EB507B7AC9018 /* SDWebImageCompat.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDWebImageCompat.m; path = SDWebImage/Core/SDWebImageCompat.m; sourceTree = ""; }; + F09D5DAEE3CD3FFE1B213DFEF893E818 /* JXCategoryView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "JXCategoryView-prefix.pch"; sourceTree = ""; }; + F139F3BFF4ABD0678E7947E118F47774 /* UIImageView+HighlightedWebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+HighlightedWebCache.m"; path = "SDWebImage/Core/UIImageView+HighlightedWebCache.m"; sourceTree = ""; }; + F157AC2A50D3773392D42322F67E0EB0 /* LSTPopView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "LSTPopView-Info.plist"; sourceTree = ""; }; + F1CF9E4569F5B94286E175AF9D675C11 /* SDInternalMacros.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDInternalMacros.m; path = SDWebImage/Private/SDInternalMacros.m; sourceTree = ""; }; + F1FB9919B7B8171A6A8679BDDA407F68 /* LKS_HierarchyDisplayItemsMaker.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDisplayItemsMaker.h; path = Src/Main/Server/Others/LKS_HierarchyDisplayItemsMaker.h; sourceTree = ""; }; + F287F335FB60871C584FAC1904FF4181 /* SDDeviceHelper.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDDeviceHelper.h; path = SDWebImage/Private/SDDeviceHelper.h; sourceTree = ""; }; + F32705CBE56ACF430653A1C459F5351E /* LookinAttrIdentifiers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinAttrIdentifiers.h; path = Src/Main/Shared/LookinAttrIdentifiers.h; sourceTree = ""; }; + F32DF0242A37C60B9E8BEDC175125BB2 /* MJRefreshBackFooter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshBackFooter.h; path = MJRefresh/Base/MJRefreshBackFooter.h; sourceTree = ""; }; + F363F53534ED7FE5A4BB0A1E1863D5E7 /* LKS_CustomAttrSetterManager.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LKS_CustomAttrSetterManager.m; path = Src/Main/Server/Others/LKS_CustomAttrSetterManager.m; sourceTree = ""; }; + F3BAE7C9BD506017B4C0D7BBB9100900 /* JXCategoryTitleVerticalZoomCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryTitleVerticalZoomCell.m; path = Sources/VerticalZoomTitle/JXCategoryTitleVerticalZoomCell.m; sourceTree = ""; }; + F4F901625B3879AD34FA2A0373208F59 /* LookinHierarchyInfo.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinHierarchyInfo.m; path = Src/Main/Shared/LookinHierarchyInfo.m; sourceTree = ""; }; + F5B865CFCA1FF1600CB766B9BC34B8D9 /* LookinCustomAttrModification.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinCustomAttrModification.h; path = Src/Main/Shared/LookinCustomAttrModification.h; sourceTree = ""; }; + F5D8EBF4698D8B331794EA6F9BF47665 /* HWVisualEffectView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWVisualEffectView.m; path = Sources/View/HWVisualEffectView.m; sourceTree = ""; }; + F5EB73BE761C595601603CE39EC8D850 /* HWPageSheetPresentingAnimation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = HWPageSheetPresentingAnimation.m; path = Sources/Animator/PresentingVCAnimation/HWPageSheetPresentingAnimation.m; sourceTree = ""; }; + F64D04ACE9EB0341E57129D44479C065 /* MJRefresh.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefresh.h; path = MJRefresh/MJRefresh.h; sourceTree = ""; }; + F68616E55705601CBE5D9437AD83B340 /* JXCategoryView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = JXCategoryView.debug.xcconfig; sourceTree = ""; }; + F6CDCEC9BF52B36734600241EB9CC345 /* UIViewController+Presentation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+Presentation.m"; path = "Sources/Presentable/UIViewController+Presentation.m"; sourceTree = ""; }; + F762DC35806D05FE8346CE64A0357D9A /* JXPagingView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "JXPagingView-Info.plist"; sourceTree = ""; }; + F764EB4004D4A21398D072493BD19D56 /* HWPanModalPanGestureDelegate.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWPanModalPanGestureDelegate.h; path = Sources/Presentable/HWPanModalPanGestureDelegate.h; sourceTree = ""; }; + F8CCC7FB49429A8093BC8191C6474D58 /* UIView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCache.m"; path = "SDWebImage/Core/UIView+WebCache.m"; sourceTree = ""; }; + F8CEEFBE4317D04F4FD181E44C90A119 /* MJRefreshStateHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MJRefreshStateHeader.h; path = MJRefresh/Custom/Header/MJRefreshStateHeader.h; sourceTree = ""; }; + F947DB2E34F4112ED83356B8AA944880 /* SDDeviceHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDeviceHelper.m; path = SDWebImage/Private/SDDeviceHelper.m; sourceTree = ""; }; + F9AA00EC509DE2C0E25E749F629EF1F6 /* UIViewController+LayoutHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIViewController+LayoutHelper.m"; path = "Sources/Presentable/UIViewController+LayoutHelper.m"; sourceTree = ""; }; + F9F30602CBEA307F110682B47DBF3B59 /* JXCategoryIndicatorCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorCell.m; path = Sources/Indicator/JXCategoryIndicatorCell.m; sourceTree = ""; }; + F9FBE6B4C01D1445DBFC466AEA64E5D8 /* JXCategoryIndicatorBallView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorBallView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBallView.m; sourceTree = ""; }; + FA5C6E28985540EE03804DDC4277D459 /* LYEmptyViewHeader.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LYEmptyViewHeader.h; path = LYEmptyView/LYEmptyViewHeader.h; sourceTree = ""; }; + FAA3871C50E5746944D1C3FA3E4736CE /* SDDiskCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDDiskCache.m; path = SDWebImage/Core/SDDiskCache.m; sourceTree = ""; }; FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = FLAnimatedImage; path = FLAnimatedImage.framework; sourceTree = BUILT_PRODUCTS_DIR; }; - FAC311E0F10AA1170D905B6C90AE765F /* JXCategoryImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryImageView.h; path = Sources/Image/JXCategoryImageView.h; sourceTree = ""; }; - FB1E7E734FDF6F7CAC668B6BD6A2A014 /* Image+Lookin.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "Image+Lookin.m"; path = "Src/Main/Shared/Category/Image+Lookin.m"; sourceTree = ""; }; - FB334521D7F08199DE839AB68A37105C /* SDImageAPNGCoder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDImageAPNGCoder.h; path = SDWebImage/Core/SDImageAPNGCoder.h; sourceTree = ""; }; - FB5DC78AEFAB6098819933CF81AAB15B /* Lookin_PTProtocol.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = Lookin_PTProtocol.h; path = Src/Main/Shared/Peertalk/Lookin_PTProtocol.h; sourceTree = ""; }; - FBF4C669CA968A448B7E1DD3A141A41C /* SDAnimatedImageRep.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDAnimatedImageRep.m; path = SDWebImage/Core/SDAnimatedImageRep.m; sourceTree = ""; }; - FC52B8F222678A49BF1BA307CD9A7777 /* SDGraphicsImageRenderer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDGraphicsImageRenderer.m; path = SDWebImage/Core/SDGraphicsImageRenderer.m; sourceTree = ""; }; - FD4AB223CCA1E3159EE2C805605A0657 /* JXCategoryIndicatorView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorView.m; path = Sources/Indicator/JXCategoryIndicatorView.m; sourceTree = ""; }; - FD5B9F06C28C32AA434A5A2FFACDF89A /* JXCategoryIndicatorRainbowLineView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorRainbowLineView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorRainbowLineView.h; sourceTree = ""; }; - FD6EC1E4FB3615CE938900B23CEAD0F8 /* MASCompositeConstraint.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MASCompositeConstraint.m; path = Masonry/MASCompositeConstraint.m; sourceTree = ""; }; - FDF2879588F648F9ACE28CEDF3C4F456 /* DZNEmptyDataSet-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DZNEmptyDataSet-Info.plist"; sourceTree = ""; }; - FE8EB43019635F8DC34B96037E258505 /* UIActivityIndicatorView+AFNetworking.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIActivityIndicatorView+AFNetworking.m"; path = "UIKit+AFNetworking/UIActivityIndicatorView+AFNetworking.m"; sourceTree = ""; }; - FED61E621A88CB9CE3C421FDEB1106FC /* LookinDisplayItem.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinDisplayItem.h; path = Src/Main/Shared/LookinDisplayItem.h; sourceTree = ""; }; - FEF91306ED7817FCE47628D37A94BF1B /* JXCategoryIndicatorBackgroundView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = JXCategoryIndicatorBackgroundView.h; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorBackgroundView.h; sourceTree = ""; }; - FF6C98975F33C466CDCC506B95080046 /* UIView+WebCacheState.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+WebCacheState.m"; path = "SDWebImage/Core/UIView+WebCacheState.m"; sourceTree = ""; }; - FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = MJExtension.debug.xcconfig; sourceTree = ""; }; - FFFC6DDC16F58E87A8A30CA92223320F /* DZNEmptyDataSet-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DZNEmptyDataSet-dummy.m"; sourceTree = ""; }; + FB1FCAC52ADC49B2B3A81FFCCD3D56EE /* UIImage+GIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIImage+GIF.h"; path = "SDWebImage/Core/UIImage+GIF.h"; sourceTree = ""; }; + FB614FC70886C761E2BA7E9C7E7F2D88 /* AFHTTPSessionManager.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = AFHTTPSessionManager.h; path = AFNetworking/AFHTTPSessionManager.h; sourceTree = ""; }; + FB718B97DF8D94DCF736C973F8184652 /* UIImageView+WebCache.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImageView+WebCache.m"; path = "SDWebImage/Core/UIImageView+WebCache.m"; sourceTree = ""; }; + FB84DF0F5016EBAF04FE5FE9F22081C0 /* SDWebImage-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "SDWebImage-umbrella.h"; sourceTree = ""; }; + FC8583F4233091326F271A4C13185F5B /* HWBackgroundConfig.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWBackgroundConfig.h; path = Sources/View/HWBackgroundConfig.h; sourceTree = ""; }; + FCA4EBF34C88159600AC127D3548346D /* UITextView+LookinServer.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UITextView+LookinServer.h"; path = "Src/Main/Server/Category/UITextView+LookinServer.h"; sourceTree = ""; }; + FCBCC9D408AF4A848CBB9CEE3327E256 /* HWShoppingCartPresentingAnimation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = HWShoppingCartPresentingAnimation.h; path = Sources/Animator/PresentingVCAnimation/HWShoppingCartPresentingAnimation.h; sourceTree = ""; }; + FCBD8DFA94436F5E62F1AA0F1AD2F2FA /* LookinStaticAsyncUpdateTask.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = LookinStaticAsyncUpdateTask.m; path = Src/Main/Shared/LookinStaticAsyncUpdateTask.m; sourceTree = ""; }; + FD3C0DF69EC6CFA1DD8299F62B1A84FB /* SDWebImageOptionsProcessor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = SDWebImageOptionsProcessor.h; path = SDWebImage/Core/SDWebImageOptionsProcessor.h; sourceTree = ""; }; + FD61DA71A7253ED59D65D424C86E2C50 /* MASConstraint.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = MASConstraint.h; path = Masonry/MASConstraint.h; sourceTree = ""; }; + FD7C0DEE68BC5E8256170F72FCC61847 /* JXCategoryIndicatorDotLineView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = JXCategoryIndicatorDotLineView.m; path = Sources/Indicator/IndicatorViews/JXCategoryIndicatorDotLineView.m; sourceTree = ""; }; + FD937703BB1091324CC7A54FB95A5217 /* MJRefreshBackGifFooter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = MJRefreshBackGifFooter.m; path = MJRefresh/Custom/Footer/Back/MJRefreshBackGifFooter.m; sourceTree = ""; }; + FDCCFFDED68135F2816CA2167E15CF64 /* LookinHierarchyFile.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LookinHierarchyFile.h; path = Src/Main/Shared/LookinHierarchyFile.h; sourceTree = ""; }; + FEA159570B75D1C95DC0E0B5836BACFF /* LKS_HierarchyDetailsHandler.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = LKS_HierarchyDetailsHandler.h; path = Src/Main/Server/Connection/RequestHandler/LKS_HierarchyDetailsHandler.h; sourceTree = ""; }; + FED4C87CAD14B9336A225C943B75263C /* ViewController+MASAdditions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "ViewController+MASAdditions.h"; path = "Masonry/ViewController+MASAdditions.h"; sourceTree = ""; }; + FED91C88820F2942B3A007C5E5D17ACB /* UIColor+LookinServer.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIColor+LookinServer.m"; path = "Src/Main/Server/Category/UIColor+LookinServer.m"; sourceTree = ""; }; + FEE19DBCD45615CC389DD7223D3C447A /* SDImageCoderHelper.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = SDImageCoderHelper.m; path = SDWebImage/Core/SDImageCoderHelper.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ + 04785C72D7E967FCB78D8F7E7635973B /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 0DCF6770445D0657900721EC9917ECFB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 11690A588400BBB164423D5F86311C35 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1598,6 +1648,21 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 2A4C89A05153A8C37E3B9ACF170A9EB8 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + 5EFCAC311A0285F51E8B1B0F7416D7D8 /* Foundation.framework in Frameworks */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 2D2D1D550E12F4C0C9C30D5A3CD01C4E /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 37145BAEB1B97BA7ADD7D6C3E86E99BD /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1623,10 +1688,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 49A3D4697275EC0A7C6F38E45E2F0217 /* Frameworks */ = { + 58A39759A11D8C551E18D1323674BF34 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 9D07985CF518269347F3FD5FE6D22609 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1638,6 +1704,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 6B8E82384925B650051F0C1846383E41 /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; 6E39FC1043D864A0759387AEED07D7AC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1656,11 +1729,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 96D238A614CBDD553073EEECBB41281C /* Frameworks */ = { + 98BB4909B1035551DF579C13A59BAA4D /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - E516B5B11193439E020DD2A908700B79 /* Foundation.framework in Frameworks */, + 47C6C10BB05445BCB8CBCA4DADE7E933 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1672,13 +1745,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - A815DA3563AEC721C6EAF6B39395CDD4 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; AE750D3363286EC4504AB9516776E757 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1687,28 +1753,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - AEC8B8EF401BFAE066232C67738FEB8F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - B48A7E8CCFE81BBD4AEBA45C992E5F7F /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - C44502CD70E5B1200927F3A081A60365 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - 72157F8282836C3F6D65008E2F193655 /* Foundation.framework in Frameworks */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; CA6527CF424B1AA12AF1D0BB36EBAF73 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1738,13 +1782,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D322DF9855308A001A820F202DCCBA75 /* Frameworks */ = { - isa = PBXFrameworksBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; E672724427269716049B769344D7C3DC /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; @@ -1754,284 +1791,406 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + F4019BF639D68EFAB596EA1BD86C37CB /* Frameworks */ = { + isa = PBXFrameworksBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXFrameworksBuildPhase section */ /* Begin PBXGroup section */ - 0727E8966E92BA27516AA23EF6747FF6 /* Security */ = { + 070A9E270BA37B1A5AAC97680E006F46 /* LSTPopView */ = { isa = PBXGroup; children = ( - 2AD36233DB657DAA0ACBB8EEEAEB38EA /* AFSecurityPolicy.h */, - 2458E327D6233EBA29A07B3E63113146 /* AFSecurityPolicy.m */, + EC737F9C95A0D5999B811C9A1D937DBC /* Code */, + 9A6094CFD16104AD70583A90D874C249 /* Support Files */, ); - name = Security; + name = LSTPopView; + path = LSTPopView; sourceTree = ""; }; - 0A1A9864A60D31E01F2EAB72403B1E95 /* NSURLSession */ = { + 0B3501DF96788E261B37AA47988480FF /* Resources */ = { isa = PBXGroup; children = ( - 29C25E996193BA4D1FCBB5C2A7812FB9 /* AFCompatibilityMacros.h */, - 5F31829B35104CCEC70FD712B1D4D4E2 /* AFHTTPSessionManager.h */, - 9DA5F48CB9575D0E2C775D8D7C262C14 /* AFHTTPSessionManager.m */, - B2D84B5B7090CE22D8AFB107E403CA13 /* AFURLSessionManager.h */, - 55E89941A6B7A73D479A0770A9C96C14 /* AFURLSessionManager.m */, - ); - name = NSURLSession; - sourceTree = ""; - }; - 0F19D22A7E286B575974CA8C2AD3F3DF /* Bugly */ = { - isa = PBXGroup; - children = ( - 37D1A84159EF2DA3622D5B6253D94232 /* Frameworks */, - 453238A8EA177DEF4A00D8C859B1DA27 /* Support Files */, - ); - name = Bugly; - path = Bugly; - sourceTree = ""; - }; - 119FAC4028DEE3EECB43C1CA751847B8 /* Support Files */ = { - isa = PBXGroup; - children = ( - 81157F73840FB0C9186268E78281D33C /* FLAnimatedImage.modulemap */, - E3535B97DCD1B05E059D045B16700F34 /* FLAnimatedImage-dummy.m */, - A020A834828880C972FE2E839A9DD2B4 /* FLAnimatedImage-Info.plist */, - 12142FAAA1C74097D8F4441EAD4066E1 /* FLAnimatedImage-prefix.pch */, - 87DD67829823038B4E0D04582C0CB95C /* FLAnimatedImage-umbrella.h */, - 36A28302FD0C37C0A56E64EA97977A8E /* FLAnimatedImage.debug.xcconfig */, - C06B04E0ABEA41660753A9D5F58572EE /* FLAnimatedImage.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/FLAnimatedImage"; - sourceTree = ""; - }; - 17AEA0C7D131B1C990249C70BBD62CDF /* Resources */ = { - isa = PBXGroup; - children = ( - 1C37C8F103EDECD09126133069B80115 /* PrivacyInfo.xcprivacy */, + A0497973DD4190C4C37CC950C86C6F2B /* PrivacyInfo.xcprivacy */, ); name = Resources; sourceTree = ""; }; - 1CD312D2E666224315BB46AF04231D5D /* Products */ = { + 102054A1E3292F59C346E38466BC61C8 /* Resources */ = { isa = PBXGroup; children = ( - A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */, - 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */, - FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */, - 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */, - C3A46B03C308EEEB11F2A62BA5D2E8BE /* JXCategoryView */, - BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */, - 2F4A1CCB21DB7EA5A2ACEB11E374FBCA /* JXPagingView */, - E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */, - 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */, - 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */, - DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */, - 1FFED36A657123030ABB700256D73F15 /* Masonry */, - 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */, - 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */, - 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */, - E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */, - 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */, - 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */, - DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */, - B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, - CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */, - ); - name = Products; - sourceTree = ""; - }; - 1F02F176B54A47E4D2768486D2B0A3DE /* Resources */ = { - isa = PBXGroup; - children = ( - 75A91D4BB6118442A9B7E27598AE7C99 /* PrivacyInfo.xcprivacy */, + 0FFF1AB10AC30C72DB3B2F106B23E5B3 /* PrivacyInfo.xcprivacy */, ); name = Resources; sourceTree = ""; }; - 24E6D9CD604967D0A1CF25370DFD7865 /* Code */ = { + 184D0B412C8826DE321973718A83EAD0 /* Support Files */ = { isa = PBXGroup; children = ( - BF40FB09CDD92326BB3177C14DF172AD /* LSTPopView.h */, - 9B2F1B06BC651834D7B3EA1FBC96E466 /* LSTPopView.m */, - 5F35F0E5B188FD04E8E889503DEA5841 /* LSTPopViewProtocol.h */, - A5262AA56B4C8511CBA390D4808E37F2 /* UIView+LSTPV.h */, - A4D8DE877E59C1B5596F10D0213ADC5D /* UIView+LSTPV.m */, - ); - name = Code; - sourceTree = ""; - }; - 2DD7CD81F0AED96859289DDC12B0E9CF /* Support Files */ = { - isa = PBXGroup; - children = ( - DB866CD01C61417D45924946690C442B /* HWPanModal.modulemap */, - EE80578D9DB416BD158323BE4D5C76F4 /* HWPanModal-dummy.m */, - 862F24C5813636BD088499E062B47C78 /* HWPanModal-Info.plist */, - E5592C4FA7C5389CD5E3CCE2F804F447 /* HWPanModal-prefix.pch */, - 83FBF1722FEB1FC5E339C64BC2275D81 /* HWPanModal-umbrella.h */, - C6B15D5B29642260AB882050F51A8AE5 /* HWPanModal.debug.xcconfig */, - CA18A067DCACA93C5FD4591EBC943217 /* HWPanModal.release.xcconfig */, + 91BC18AA2869958B15FBD2C2367C5DFC /* AFNetworking.modulemap */, + 18106F0763EC023048DB3F77457B9596 /* AFNetworking-dummy.m */, + 541552D5AA99C6DF3406BD050E1467DB /* AFNetworking-Info.plist */, + EDCA67FC2B94130DF2B6CE9E65BC9944 /* AFNetworking-prefix.pch */, + 83E8510A179E756198B5FC915A27736E /* AFNetworking-umbrella.h */, + 88D479C435BAEE51B8F3BBF87F8D3CC9 /* AFNetworking.debug.xcconfig */, + 57B2E23309380B0E15F50C277205AC0D /* AFNetworking.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/HWPanModal"; + path = "../Target Support Files/AFNetworking"; sourceTree = ""; }; - 2E6A5961188FF65067773B356D98FC06 /* JXCategoryView */ = { + 1C6C79318C220E5B8848BEC84F0BF1D4 /* Support Files */ = { isa = PBXGroup; children = ( - 1A08646B05BD58116699CDFD07CA2977 /* JXCategoryBaseCell.h */, - 0B08ADE1A4FFE94FDBBE13FE7CC2C1E5 /* JXCategoryBaseCell.m */, - 65F97EE1352D7FC02982C03FB1D0FBEB /* JXCategoryBaseCellModel.h */, - 51E7542749774862B8EB9AAB7010F1AA /* JXCategoryBaseCellModel.m */, - 173BFB44F7DA63CD3AF5A497970B8203 /* JXCategoryBaseView.h */, - 72F67C5C9E4A93AFE6FF113487609183 /* JXCategoryBaseView.m */, - 6999AA4E4990D39E732B0FABF0CBB3CA /* JXCategoryCollectionView.h */, - D9DA60EBF6A57B0D3224E3ACD3E51971 /* JXCategoryCollectionView.m */, - 98D2F9331639FC6D12A4091DD5F47C96 /* JXCategoryDotCell.h */, - BEB32B7BEE20F8A74F80D03511F02260 /* JXCategoryDotCell.m */, - ABD4819FE00A1A954ABDDF0893C72587 /* JXCategoryDotCellModel.h */, - EF3A8DFB97BB54D169F6E8AC578F498C /* JXCategoryDotCellModel.m */, - 50BCF4AA1A75105CC04AA446B0DB9B40 /* JXCategoryDotView.h */, - EED2C7FD129EA6F065286A12502B79B7 /* JXCategoryDotView.m */, - 2E96574DDD94EB958E64B0AD7C7B20F2 /* JXCategoryFactory.h */, - 9E9F380E4292210FA99A8F5918C667C3 /* JXCategoryFactory.m */, - 0E2875C79F8461486A975B000C1ABDE3 /* JXCategoryImageCell.h */, - B7498A05A9D7A9FEE19E027CABE6B9DD /* JXCategoryImageCell.m */, - D4C17E87C77E85F28C83D98FAB4AB7F4 /* JXCategoryImageCellModel.h */, - EC57F0405D7809ECABB52C0C041C6F2F /* JXCategoryImageCellModel.m */, - FAC311E0F10AA1170D905B6C90AE765F /* JXCategoryImageView.h */, - 7778E8300903006F261959B2010A06D2 /* JXCategoryImageView.m */, - FEF91306ED7817FCE47628D37A94BF1B /* JXCategoryIndicatorBackgroundView.h */, - 74444E41B3920B9EB4DA66DCD2975612 /* JXCategoryIndicatorBackgroundView.m */, - 8A0C74EF09B54680C98CCBF1F2BD297A /* JXCategoryIndicatorBallView.h */, - 7A60D0CF9AE4E6671E2A6BBECEE57E4D /* JXCategoryIndicatorBallView.m */, - BF9910B7B2FF86AF620A45955A338072 /* JXCategoryIndicatorCell.h */, - CF64931699D303A3C9AE1FFC4682E257 /* JXCategoryIndicatorCell.m */, - 3B3FF5D113848A5A9AC244C579FF1441 /* JXCategoryIndicatorCellModel.h */, - 3875C6FE72ED2368D3701E9901F883B7 /* JXCategoryIndicatorCellModel.m */, - 4B0139E3193D3960F1A46D73064CA34A /* JXCategoryIndicatorComponentView.h */, - D4E6C9FAE7DD5348F64FBD66AA03DA5B /* JXCategoryIndicatorComponentView.m */, - 898DE7614EA3416744425477D130D9C7 /* JXCategoryIndicatorDotLineView.h */, - EC4AC84F5855EC104608477917DF3145 /* JXCategoryIndicatorDotLineView.m */, - D5D75E71D2ABCC5D3DDCC662DACBFAED /* JXCategoryIndicatorImageView.h */, - A2C056F5D1231FA94F92AA3712D545C2 /* JXCategoryIndicatorImageView.m */, - 62CDFF5EFD0FE66B2DEECF2E904EBEC1 /* JXCategoryIndicatorLineView.h */, - 1711B81346B8ED1944B5A8A478A4CF3F /* JXCategoryIndicatorLineView.m */, - 4E5F2B584A65C9246E3E8A7A856FF44D /* JXCategoryIndicatorParamsModel.h */, - AAFEF3383472BCA83D71A7DAAC5522CC /* JXCategoryIndicatorParamsModel.m */, - D6F5B88F49EB151A388B58319A67E2A1 /* JXCategoryIndicatorProtocol.h */, - FD5B9F06C28C32AA434A5A2FFACDF89A /* JXCategoryIndicatorRainbowLineView.h */, - CC8BAAD188938B05A876ECFEAA39F2E6 /* JXCategoryIndicatorRainbowLineView.m */, - 3381742E54E03DCDB9DD644DF65C4689 /* JXCategoryIndicatorTriangleView.h */, - 1E17CF24E4278604BB723E30B9997957 /* JXCategoryIndicatorTriangleView.m */, - 658F3554D0CFB5BC5E252408F8CD5317 /* JXCategoryIndicatorView.h */, - FD4AB223CCA1E3159EE2C805605A0657 /* JXCategoryIndicatorView.m */, - 7C36F83AF55E2873F497777F59071760 /* JXCategoryListContainerRTLCell.h */, - 6C70C9B1AD0F41A4C5E9026F5AF7F65F /* JXCategoryListContainerRTLCell.m */, - E25EECD78C776DB2FDB519D3AA7CB0BD /* JXCategoryListContainerView.h */, - 29EA07EA8EF3C7818A9505A783C4FF02 /* JXCategoryListContainerView.m */, - 874DD2FA3B20B6BCBCBEE03BEEBE1281 /* JXCategoryNumberCell.h */, - 1B8FD707DDEC1F98F5C5FE19647F0592 /* JXCategoryNumberCell.m */, - C74AFAA0D49E0563D9312CEA70CCF8B3 /* JXCategoryNumberCellModel.h */, - F15C652E7FDB0BE287A551718B00B6A8 /* JXCategoryNumberCellModel.m */, - C6B6ABC9B259D86AA3C2451E682BE701 /* JXCategoryNumberView.h */, - 44CB5B4F2C2351C8F32C675C94C2EAC0 /* JXCategoryNumberView.m */, - 00B67A73E7EE0522188FAE4145324D19 /* JXCategoryTitleCell.h */, - 057CD48F09C7A5468D77A9691A639803 /* JXCategoryTitleCell.m */, - 6C34880EFF82114AECCB354A57C47E7C /* JXCategoryTitleCellModel.h */, - 3545C9AC3AD500CD4E48A3E2630C521B /* JXCategoryTitleCellModel.m */, - 639A45B880AEBFE1C16D4A9F3AA3D49C /* JXCategoryTitleImageCell.h */, - D4AA530BA675D0E78BDD9644338B48A3 /* JXCategoryTitleImageCell.m */, - DDAA59B8AF34E0C4765874AEE69571F7 /* JXCategoryTitleImageCellModel.h */, - 04AE87BD26EBAF13B558201544C0E822 /* JXCategoryTitleImageCellModel.m */, - 7FBDD10C8770914A56998AB2021E385B /* JXCategoryTitleImageView.h */, - 8618BF2AA2A260801FDF48131074A906 /* JXCategoryTitleImageView.m */, - 54CBDA1EBC8A896E6DB3A15D5332DB1C /* JXCategoryTitleVerticalZoomCell.h */, - 6D390F38F6574F6D973E2C4A52D004A1 /* JXCategoryTitleVerticalZoomCell.m */, - 60A68C8A5D160FE046F60DF6C446111D /* JXCategoryTitleVerticalZoomCellModel.h */, - 6549E81907E05317DA862F329B2D4DDC /* JXCategoryTitleVerticalZoomCellModel.m */, - 059C3C014AA92686FDCE895211A108CE /* JXCategoryTitleVerticalZoomView.h */, - 7B4337532A4911F88E85BB14DE78FBB7 /* JXCategoryTitleVerticalZoomView.m */, - E42238B57F88C70438DE479E184E4352 /* JXCategoryTitleView.h */, - 202D2DE7A9C3209A4BF4D407CF1AB06A /* JXCategoryTitleView.m */, - DACFBFCC588CFB73AE8A6DB153DEA42F /* JXCategoryView.h */, - E0A4E94FB3CF9B468E72117C85C2E773 /* JXCategoryViewAnimator.h */, - B46184374613AB561CB67E0F1EF14DD8 /* JXCategoryViewAnimator.m */, - C617C2D863C4AC28AF0370EDC02120A9 /* JXCategoryViewDefines.h */, - 0E752820782AF474A360AC65F5EFA79D /* RTLManager.h */, - E5EA191D7CFA74A3FEAFB27130A3FEC7 /* RTLManager.m */, - F904F7CF43AB518217FB1AB9236020D4 /* UIColor+JXAdd.h */, - 137AD002D5B6FA89785842F03034A5B1 /* UIColor+JXAdd.m */, - 1F02F176B54A47E4D2768486D2B0A3DE /* Resources */, - C79383FD5154699A5CFAA9706E39AF6C /* Support Files */, + 85C4F1C66A75633558DC8F8AE824BC70 /* LYEmptyView.modulemap */, + 2F19C07EBC4D3E8EF1AD6C474E7F24FE /* LYEmptyView-dummy.m */, + 7DCA3ADE9B99025CE2B42367695E1E68 /* LYEmptyView-Info.plist */, + 517EACA3BDCA2E1CB5B954656D4B9F02 /* LYEmptyView-prefix.pch */, + C00601FB0A8CFBE203150BAEC58E95FC /* LYEmptyView-umbrella.h */, + 5048CCD1406058B50480C383463B3C39 /* LYEmptyView.debug.xcconfig */, + E00B4B67B95B1D4B1001EF45F23EF0C4 /* LYEmptyView.release.xcconfig */, ); - name = JXCategoryView; - path = JXCategoryView; + name = "Support Files"; + path = "../Target Support Files/LYEmptyView"; sourceTree = ""; }; - 36091ADDE4C749A4350E3A117CAA7398 /* MJRefresh */ = { + 2397706FC09C7D8BAD347D387C455173 /* MBProgressHUD */ = { isa = PBXGroup; children = ( - 1325B9E2F97C77F3E9191898C4045E7E /* MJRefresh.h */, - A96A60100BE610809D6E0C7741CF992C /* MJRefreshAutoFooter.h */, - BE6EFE785E6216D9C7C1D6B7A4EEA5EA /* MJRefreshAutoFooter.m */, - 3FAF0BE8296496D28F5C6AA6974B39E8 /* MJRefreshAutoGifFooter.h */, - 7D7FC4156E6779F82E6B8036FA7A1307 /* MJRefreshAutoGifFooter.m */, - DEDB698B7BC2AF63B53722CF1D2D8E57 /* MJRefreshAutoNormalFooter.h */, - 6D2CC2D1F9AB2D4CFC68B6327C2793C5 /* MJRefreshAutoNormalFooter.m */, - 02E945EEF3757BDF2B47E65C51C4D6D6 /* MJRefreshAutoStateFooter.h */, - 401F0F0AAEEDDA40C2D25DB817C9B5C6 /* MJRefreshAutoStateFooter.m */, - 17D9582F158C09F75D84ECE893151E91 /* MJRefreshBackFooter.h */, - 0A5E3A2C0C49EB165C854762A832D48A /* MJRefreshBackFooter.m */, - C746AE302AD12A4D0F6E287CACA690C6 /* MJRefreshBackGifFooter.h */, - 3A8EB0FE66AD3E48C10CDD802521D146 /* MJRefreshBackGifFooter.m */, - 3E42525F0D8B91406B2C7015E3E52B29 /* MJRefreshBackNormalFooter.h */, - C55730A1966B5DF338B0554ACC4B0B16 /* MJRefreshBackNormalFooter.m */, - 15D9AA9876374637F32E00BE13AA1880 /* MJRefreshBackStateFooter.h */, - DD1439668AF92748DEFAD18BF418CE55 /* MJRefreshBackStateFooter.m */, - 7C0E4900E01624D5262A1ED1DF2F6D35 /* MJRefreshComponent.h */, - 4F81509596D525489E9AA55CE4C0B4C1 /* MJRefreshComponent.m */, - E9598F4E504AE0DA98A0B2DC305F1C83 /* MJRefreshConfig.h */, - 42EF67A85226C8C14C983E81C71F392D /* MJRefreshConfig.m */, - 55A76B2979ED12495977612719BE47A2 /* MJRefreshConst.h */, - 7032D81BB8B12F48732F1EBEA7A020D7 /* MJRefreshConst.m */, - D40BB639047461966566FFED666B3ACF /* MJRefreshFooter.h */, - 2CE7B5832F4AC9648A3CEB7DD03473E4 /* MJRefreshFooter.m */, - C4B0E298E792EE24705C7E8457669228 /* MJRefreshGifHeader.h */, - A1E84842FBF29954156976CB6DD0F275 /* MJRefreshGifHeader.m */, - 195B648C25562B52954B1E7C1D8964C3 /* MJRefreshHeader.h */, - 1A2B6D97C6E9B5572232985B40BDA6C4 /* MJRefreshHeader.m */, - 367DF77D41DE010B9FA86137928C7C44 /* MJRefreshNormalHeader.h */, - CAD02815855109CE0DDD83222F913EF8 /* MJRefreshNormalHeader.m */, - 342267EEBD80FDDCEAA647EFBE0EB6BD /* MJRefreshNormalTrailer.h */, - DD3BFE6DB15E8FF64920F720EA31EEDE /* MJRefreshNormalTrailer.m */, - 13B6B935F583A1ED5234B7E3DF044521 /* MJRefreshStateHeader.h */, - 119F71892BB85FDC29B99AE148231087 /* MJRefreshStateHeader.m */, - 846CA0BB8166DB9008D71F59F4A301EA /* MJRefreshStateTrailer.h */, - B26771C31428D52F8DFB859AE1AC3503 /* MJRefreshStateTrailer.m */, - 6A91961A508CA556983A4A3F57FB3133 /* MJRefreshTrailer.h */, - 5128E7CF3F35BE25186575F63661EEF6 /* MJRefreshTrailer.m */, - 10B904BAC9CC3925EE6B4E2130826A6F /* NSBundle+MJRefresh.h */, - 824A8DE6460C98A565B1EDD8B4432F50 /* NSBundle+MJRefresh.m */, - F0FF9B39CB74F30B336CF7D4085E2AE0 /* UICollectionViewLayout+MJRefresh.h */, - 99CBD01AD35AF793B343AC0ACF2CF164 /* UICollectionViewLayout+MJRefresh.m */, - 23648E3B16301958DD4429C021EB223C /* UIScrollView+MJExtension.h */, - 433A3E0D94E768912FBBE36F7C961678 /* UIScrollView+MJExtension.m */, - 241FDB4FE9E3CE45C4854F0FEB6F8BAF /* UIScrollView+MJRefresh.h */, - 9AFDFE95B53BDA0F282212CF3E9B940F /* UIScrollView+MJRefresh.m */, - 47F474CA83A8EC338136568BDBFF8343 /* UIView+MJExtension.h */, - 239F725CB21A7ABF0EDB35FC92732A5C /* UIView+MJExtension.m */, - 4C55C9351E9FED232300EF60CC442288 /* Resources */, - 6095F5BA99A7BC3EDE17ABB647B490AD /* Support Files */, + 5DC759BB8D0141E0F064F3BCA7197315 /* MBProgressHUD.h */, + 347DA9A1002297848F6BF9D97BB1F302 /* MBProgressHUD.m */, + 4E1FCFC15AFF6ACA076B1D8B295CDE1D /* Support Files */, + ); + name = MBProgressHUD; + path = MBProgressHUD; + sourceTree = ""; + }; + 23E095E4ABDFCF286D5B6E1FB3668170 /* MJRefresh */ = { + isa = PBXGroup; + children = ( + F64D04ACE9EB0341E57129D44479C065 /* MJRefresh.h */, + DE7E60B5B6A0850596F935D95CAFE167 /* MJRefreshAutoFooter.h */, + 14CF605A6E1A867AA3131733CCE53D99 /* MJRefreshAutoFooter.m */, + 7CE9A594E8A127B7273A7D82E1882497 /* MJRefreshAutoGifFooter.h */, + BC7F3F9323470C634DC0D469E7C13B10 /* MJRefreshAutoGifFooter.m */, + 77973C87CC9649629EBEE249DCC355F5 /* MJRefreshAutoNormalFooter.h */, + 6021531912761F1BDBFE14A61784B26D /* MJRefreshAutoNormalFooter.m */, + 8C065D632F2F749CBD48B178A68B1631 /* MJRefreshAutoStateFooter.h */, + 8CF1445CC744306AE4ECBA85DFD6DB27 /* MJRefreshAutoStateFooter.m */, + F32DF0242A37C60B9E8BEDC175125BB2 /* MJRefreshBackFooter.h */, + A7EA79586CBF531A23E8B00CFA7B82C7 /* MJRefreshBackFooter.m */, + BBA58A99F7E528A8D41BD96706230160 /* MJRefreshBackGifFooter.h */, + FD937703BB1091324CC7A54FB95A5217 /* MJRefreshBackGifFooter.m */, + E45A9679E38D826E316675D8F368F69C /* MJRefreshBackNormalFooter.h */, + A64A22A853C13E4375B73E01D1D90CB1 /* MJRefreshBackNormalFooter.m */, + ED2A7F3394578B0F6BEA7FBFFE1E2291 /* MJRefreshBackStateFooter.h */, + E7485AA213719656370219B55A0AAE3C /* MJRefreshBackStateFooter.m */, + 5E9C6ED309FB0F6481FF6639AA9C417B /* MJRefreshComponent.h */, + 6C9E32D40F89FB7470530B4F8AAB6162 /* MJRefreshComponent.m */, + 2B4792E0E693278C27DB918B70E58272 /* MJRefreshConfig.h */, + 3C71B9877A51B54673C7FFC0C3276863 /* MJRefreshConfig.m */, + 63A3BD4651AA1DDCB216ABB7FBC3A69E /* MJRefreshConst.h */, + 8638AEC16F5A3F7D05EF0F7C39544261 /* MJRefreshConst.m */, + 800ECE845D6F36BE51A284DFCAE27307 /* MJRefreshFooter.h */, + 0260C833576479A14C0F759F9D161479 /* MJRefreshFooter.m */, + 7718D3A1CB256B2263AD76B8EFDC9B86 /* MJRefreshGifHeader.h */, + B6242B29A00A9DBC6FF1CD09266BBF54 /* MJRefreshGifHeader.m */, + 16308A5AF08E401B61B68CCD953A0528 /* MJRefreshHeader.h */, + 66E849825D4B5783372753D6820DE97F /* MJRefreshHeader.m */, + D411D25D78A2F9E3CF17B20443ED9F40 /* MJRefreshNormalHeader.h */, + 61D65BB6AAD351E64F3FE46FACDEED4F /* MJRefreshNormalHeader.m */, + 83340409B38BF2A20F089A4B919FC02F /* MJRefreshNormalTrailer.h */, + 6DE6908A836615F946533A6FEE623373 /* MJRefreshNormalTrailer.m */, + F8CEEFBE4317D04F4FD181E44C90A119 /* MJRefreshStateHeader.h */, + 3259CC7D8EE4331CC9B8A86DA09EA5B3 /* MJRefreshStateHeader.m */, + AB1D54171867DC3B104DAE8C6D30F644 /* MJRefreshStateTrailer.h */, + 29792A8AE7CB7444FE7BA20424B814AD /* MJRefreshStateTrailer.m */, + 572433DB55AF2085E2E4D419FCE37679 /* MJRefreshTrailer.h */, + 5C64D6AC35DE27CAD74CA154541AF1C9 /* MJRefreshTrailer.m */, + 412FD8B68949345873B82E2D0C864C85 /* NSBundle+MJRefresh.h */, + 9ECA4FF1A4B2A73F055139B44105081C /* NSBundle+MJRefresh.m */, + 70021D526E8906DE61E9D2D0F92A78C3 /* UICollectionViewLayout+MJRefresh.h */, + BE1A1849BD6BB4B796D54DCBEF79FB7A /* UICollectionViewLayout+MJRefresh.m */, + 304FA88F8B2636C2DD7FA535D2BD617D /* UIScrollView+MJExtension.h */, + B8F1319B150BB3DBD94BEB4C80F6F296 /* UIScrollView+MJExtension.m */, + DE0511947F57D1CF3F274B6414AE449B /* UIScrollView+MJRefresh.h */, + 6B94BD4B7CE09D63E43117EFC4B15D0D /* UIScrollView+MJRefresh.m */, + 38C2193309DE8B485EA6F0495C08B115 /* UIView+MJExtension.h */, + 60696FE70F42B1A0CD7B0614C2A2F16C /* UIView+MJExtension.m */, + 27463477E43B49707581CF13A6E099B2 /* Resources */, + 28E2A9A1CEAC3F154F646A51F0227786 /* Support Files */, ); name = MJRefresh; path = MJRefresh; sourceTree = ""; }; - 37D1A84159EF2DA3622D5B6253D94232 /* Frameworks */ = { + 27463477E43B49707581CF13A6E099B2 /* Resources */ = { isa = PBXGroup; children = ( - AED1D348255F77CE4BB2B0BB61E22F08 /* Bugly.framework */, + 083F5143D12F213638EF9FE439F1CEFA /* MJRefresh.bundle */, + 20674A80959A90C9F9E51DBDC8807D93 /* PrivacyInfo.xcprivacy */, ); - name = Frameworks; + name = Resources; + sourceTree = ""; + }; + 276C8F966392FC7A9273EA1CF3239640 /* HWPanModal */ = { + isa = PBXGroup; + children = ( + FC8583F4233091326F271A4C13185F5B /* HWBackgroundConfig.h */, + 3F0DA836C065C821DDDE100A36B1C087 /* HWBackgroundConfig.m */, + 0F1705DF1CC5E82194523F85FE871354 /* HWDimmedView.h */, + 9230BE776665C8EB51C8889631B1B31B /* HWDimmedView.m */, + 1EC115C953943E0027F6AD5AFEE41A30 /* HWPageSheetPresentingAnimation.h */, + F5EB73BE761C595601603CE39EC8D850 /* HWPageSheetPresentingAnimation.m */, + 94CE97E5A9659D6EE58C83DCB52F73D5 /* HWPanContainerView.h */, + 453FB14441528B4AE2CF3592D5874C54 /* HWPanContainerView.m */, + 4A15AB0AB6FCF1589E2A6CEDC3CF0B95 /* HWPanIndicatorView.h */, + 77E6EFEE426EA2068D5FE2B73740D659 /* HWPanIndicatorView.m */, + EC37DBDA721D0EFF5AB018086BE1B195 /* HWPanModal.h */, + CF7B4B9CB0EF762A12884D6FE337E068 /* HWPanModalAnimator.h */, + EDA5337EF8951852F4AA839734BF6786 /* HWPanModalAnimator.m */, + 091DAAA7597B1233173C3BB1DC8D1D79 /* HWPanModalContainerView.h */, + 0BED1E57A7780D7944D806EF7FB48648 /* HWPanModalContainerView.m */, + E6CAC4483459A4704E779D629644670B /* HWPanModalContentView.h */, + 9E31AD6314EC8102DE4FC6291C0FE66F /* HWPanModalContentView.m */, + EF7183977EF6286C16A64DBC3D765320 /* HWPanModalHeight.h */, + BCDE5AFCF524DCA9CD59B6F4A4738325 /* HWPanModalIndicatorProtocol.h */, + 47A97040129EEE8B96AEEA0A9B73DA45 /* HWPanModalInteractiveAnimator.h */, + 74751305705DEA03873DFA2AF4DDC9B7 /* HWPanModalInteractiveAnimator.m */, + F764EB4004D4A21398D072493BD19D56 /* HWPanModalPanGestureDelegate.h */, + 3A10B1AFB4B6959F4A11AB1B1BC4A437 /* HWPanModalPresentable.h */, + C644FF26241C14C759578567892EF00D /* HWPanModalPresentableHandler.h */, + 0FC2E352D2D0DD942A9B4488E3654AB0 /* HWPanModalPresentableHandler.m */, + DB48FEC8123075E04395CF34F6F8227D /* HWPanModalPresentationAnimator.h */, + 831897EBD9EF72C4D55D02DE399C410A /* HWPanModalPresentationAnimator.m */, + 87888E540A812F012C68F804E8F5AE7B /* HWPanModalPresentationController.h */, + 1F9506DDA8FBAA7420E9B8137BFCFDFA /* HWPanModalPresentationController.m */, + 4EBFFAE4CE0471C78DB70755CFCC7609 /* HWPanModalPresentationDelegate.h */, + 1724C0944D7BC65545806EE9EDED203D /* HWPanModalPresentationDelegate.m */, + EF62C88D7041DEBD26117AF61789D8AB /* HWPanModalPresentationUpdateProtocol.h */, + DE4F66BD16AF47C58F5E08D62D7916E3 /* HWPanModalPresenterProtocol.h */, + 568F43CF567335FABEC4825ED4776B19 /* HWPanModalShadow.h */, + 513C1A2EE22268DD51EB02AE24E3B579 /* HWPanModalShadow.m */, + E4F1989DBFF7A3D94A0CF758DF35B3F6 /* HWPresentingVCAnimatedTransitioning.h */, + FCBCC9D408AF4A848CBB9CEE3327E256 /* HWShoppingCartPresentingAnimation.h */, + C5D725B550FCED60C80870F1B120D3B4 /* HWShoppingCartPresentingAnimation.m */, + 7E270235979252FF388A0C6D1E54966D /* HWVisualEffectView.h */, + F5D8EBF4698D8B331794EA6F9BF47665 /* HWVisualEffectView.m */, + 05D708E8F9065868500ABC98E789B739 /* KeyValueObserver.h */, + A2350DF4D8FE6C892E64B8C644667527 /* KeyValueObserver.m */, + 7BDFAC11D184E7F4498FC12FE0AFDCFC /* UIScrollView+Helper.h */, + 330AFA4D280CBB2EE073DCC942489EAB /* UIScrollView+Helper.m */, + 2B0B272843C604B68C602DEE1AD3605F /* UIView+HW_Frame.h */, + ECA7ED760D61427E9195A2805DB71798 /* UIView+HW_Frame.m */, + 2DC211B96CB1A7D40B3203E4778066C9 /* UIViewController+LayoutHelper.h */, + F9AA00EC509DE2C0E25E749F629EF1F6 /* UIViewController+LayoutHelper.m */, + E8C71212CAB0DCBF4059538A93053A4A /* UIViewController+PanModalDefault.h */, + B95FDE5F86C6AC76E24A82E181084256 /* UIViewController+PanModalDefault.m */, + 82F6D1678A37FB68B3455162AB8BDAA2 /* UIViewController+PanModalPresenter.h */, + 2A1E2D85798C902C2A1E1B714EF78587 /* UIViewController+PanModalPresenter.m */, + DB3B6BBCBC04C438F099DE5DEC15C188 /* UIViewController+Presentation.h */, + F6CDCEC9BF52B36734600241EB9CC345 /* UIViewController+Presentation.m */, + F9D546C8B0F4E1C342B53CD786B328AB /* Support Files */, + ); + name = HWPanModal; + path = HWPanModal; + sourceTree = ""; + }; + 288FC03C5D2C78A45B56AFFEE5C2C9F7 /* LSTTimer */ = { + isa = PBXGroup; + children = ( + 68AAA13D71385283DB69A35327BC2F47 /* LSTTimer.h */, + CE5782C68BCDC8C49DD74B206B3FFFF1 /* LSTTimer.m */, + EDCE25045C1BBF6ECB7211723055D0DB /* Support Files */, + ); + name = LSTTimer; + path = LSTTimer; + sourceTree = ""; + }; + 28E2A9A1CEAC3F154F646A51F0227786 /* Support Files */ = { + isa = PBXGroup; + children = ( + ABAC9F2093F2EF164CB968D710D261F5 /* MJRefresh.modulemap */, + 741E2A603352D4102F1DAFBB68C69122 /* MJRefresh-dummy.m */, + 04996832466C0B682760DEB660586A88 /* MJRefresh-Info.plist */, + 81D115D4A9C927BEBA7B66F114F7B4EC /* MJRefresh-prefix.pch */, + 6A2E7581F1DA07EBD6D2568091FCCB71 /* MJRefresh-umbrella.h */, + 7895C7C58218B5F79C76FA1B5A55E669 /* MJRefresh.debug.xcconfig */, + A324C5885C8FB2DC65900A0EE79A0E45 /* MJRefresh.release.xcconfig */, + 9897B379E415C6537D86A30137A8D274 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/MJRefresh"; + sourceTree = ""; + }; + 2F8EF5B81FDAABB39353996747C04D04 /* Core */ = { + isa = PBXGroup; + children = ( + E4A5839D54BEE8A98756D5288A3E5050 /* NSBezierPath+SDRoundedCorners.h */, + 34F0487226F5EBEBA3C6D3E1743C5260 /* NSBezierPath+SDRoundedCorners.m */, + CE2B5265F3721FD7EAE15556CCDB1151 /* NSButton+WebCache.h */, + 53155231B4EB5B29274A0546D6F39B91 /* NSButton+WebCache.m */, + 00449113F3BDDB46E11CEE02CF1F29A1 /* NSData+ImageContentType.h */, + 928339E7523C1267D5DF15E548454A5E /* NSData+ImageContentType.m */, + B09C6285E70223CDED72989080A8442A /* NSImage+Compatibility.h */, + 23763927ED025640A4CAA94867A3D823 /* NSImage+Compatibility.m */, + A1411B1EA7A3C51DB2072BF40B4D5A60 /* SDAnimatedImage.h */, + BDB258BF0BE17AFC3BFB4FB942403B82 /* SDAnimatedImage.m */, + 6C1E503B34448DC968FB5BDFADFAE70F /* SDAnimatedImagePlayer.h */, + 8A5D6AD5CB7122607D6E477D373A31E2 /* SDAnimatedImagePlayer.m */, + 674659ECD497CB56B02FD385F68621CA /* SDAnimatedImageRep.h */, + C94F3031AB6C5451E9610DBD24FE9029 /* SDAnimatedImageRep.m */, + 37977014CE5B8A9E93F1EC56C3AC6D52 /* SDAnimatedImageView.h */, + 883434364AD74D3F77868A0CF2FB7A09 /* SDAnimatedImageView.m */, + B705DD8FCD54B3AFD61B70C82828ACE4 /* SDAnimatedImageView+WebCache.h */, + A2C2A9B920BB92B872BA2AC2EA086220 /* SDAnimatedImageView+WebCache.m */, + E4BFFACAA945CC17167910BF3C319571 /* SDAssociatedObject.h */, + 321334B98147E6E64FCE056E3717FEE0 /* SDAssociatedObject.m */, + 026BB0AEDD69539DEC39191EE0C5214B /* SDAsyncBlockOperation.h */, + 2A03E8820B42DFF0FCE849CB64302CAF /* SDAsyncBlockOperation.m */, + 402736588AC9D07AA589F2943BAE3C89 /* SDCallbackQueue.h */, + 7BD134826FCB54429F667B8DBF296710 /* SDCallbackQueue.m */, + F287F335FB60871C584FAC1904FF4181 /* SDDeviceHelper.h */, + F947DB2E34F4112ED83356B8AA944880 /* SDDeviceHelper.m */, + A464713D364DCC51BD1C744435EF31A3 /* SDDiskCache.h */, + FAA3871C50E5746944D1C3FA3E4736CE /* SDDiskCache.m */, + B5F6ED51FA52849CB3D9D44DD45396E2 /* SDDisplayLink.h */, + 1679E08A4A241FB86455E71FDFB20D9F /* SDDisplayLink.m */, + 0ED5656E5971882A3EA314E222EBC2C5 /* SDFileAttributeHelper.h */, + 72CEA2C3193763834CD0E25D8DB88F2D /* SDFileAttributeHelper.m */, + D444527057532BACBF8EC98BE62D3E03 /* SDGraphicsImageRenderer.h */, + 46F71F9F19999F6D4F186847FA3CC8F7 /* SDGraphicsImageRenderer.m */, + 3501E850F701BA678364B4AFBF1C8417 /* SDImageAPNGCoder.h */, + 07274C755D75F4A07C925D1DDE5FA529 /* SDImageAPNGCoder.m */, + 9F5507B4A6BD90BF5F74B1AAC009AD90 /* SDImageAssetManager.h */, + 87B2A7EE05A20B3EDDFE045A6B7911E5 /* SDImageAssetManager.m */, + BF3C6AEB909F4472F8D8E4E21B25B716 /* SDImageAWebPCoder.h */, + BC30CFC7778FEADF9DCBF0A4ABA1769C /* SDImageAWebPCoder.m */, + DEEA81C89F22AF300ABFA4E5550B7B06 /* SDImageCache.h */, + 77715D6F65035CFA25715F00E4915BA5 /* SDImageCache.m */, + E368F7BC820788B717CC047A744E4326 /* SDImageCacheConfig.h */, + C3D9450A4AAE9542E6A1A0473B7DF812 /* SDImageCacheConfig.m */, + B2C2A4CA80B5FE7CB8927FAEE4CAF5F4 /* SDImageCacheDefine.h */, + C74EA9D59FFCBE16D0C0E5B7B2D53516 /* SDImageCacheDefine.m */, + 839CCD719F79C7FBC2909C72822FB470 /* SDImageCachesManager.h */, + DFE214BE294126C1B4FFE49DDADA7AEE /* SDImageCachesManager.m */, + 6A41E1A305241C5A627FAD06CB90A275 /* SDImageCachesManagerOperation.h */, + EE9E5D3590E1EC14CD269A8B340CE3F0 /* SDImageCachesManagerOperation.m */, + 5EF3B546633CC3DB26A173DE519AC3D7 /* SDImageCoder.h */, + 2E79D80C613F4B57826DA627018BB1C5 /* SDImageCoder.m */, + A3E40CB9D351DF0E70C7A452071E82E1 /* SDImageCoderHelper.h */, + FEE19DBCD45615CC389DD7223D3C447A /* SDImageCoderHelper.m */, + 0BC7EB117F009B160822B3FFCCC63F2A /* SDImageCodersManager.h */, + 03700B93F7A3FF6F3675D80E5DB1C1C7 /* SDImageCodersManager.m */, + 6D8BE2762FA18EF88A5BAD861C739B02 /* SDImageFrame.h */, + 452754C8CDFE17EC42C563B4B6E1F69A /* SDImageFrame.m */, + 449CCE39A5A9EA789B9A284113D1025E /* SDImageFramePool.h */, + BF31B533FDEE0B0DA7ED824B4F336534 /* SDImageFramePool.m */, + 9C0E279B5FFB9696801CC86ACF92805A /* SDImageGIFCoder.h */, + 763CF36C11B6092D9D5485AC2363F205 /* SDImageGIFCoder.m */, + 5EA970CCF2164DC59ECEE9DE06B1BCBA /* SDImageGraphics.h */, + E9FA8ED817E86A0F4415B8E73B62DCF8 /* SDImageGraphics.m */, + 55488AFE93BF97340EF80D0D6C1E2CA0 /* SDImageHEICCoder.h */, + 1CA6A325AACF7253FFEB9D258746335D /* SDImageHEICCoder.m */, + B75E67C2319B8FDBF4D6263203A06D6B /* SDImageIOAnimatedCoder.h */, + B92B905C66437721BB933FEDA5B00CB4 /* SDImageIOAnimatedCoder.m */, + EF1815C1F114106321929B2F631067E5 /* SDImageIOAnimatedCoderInternal.h */, + E4718E4C19C181FBAEBD080580F8C026 /* SDImageIOCoder.h */, + 04094D9F916F0B3E8A409CF5EEC45FCC /* SDImageIOCoder.m */, + C8ED101794ADA1876F4FFCBD1F79D622 /* SDImageLoader.h */, + B9E1D06297B630EA32D1369915C0CB97 /* SDImageLoader.m */, + 7C1F5F86210D3FB1EF59D8665E7C4A77 /* SDImageLoadersManager.h */, + 2E585503EB164F6C036C85B124140368 /* SDImageLoadersManager.m */, + 6EAD8B1C822E0F2BAB884329D798190B /* SDImageTransformer.h */, + C45DF4498F0949CD4F02FA86BFE50D93 /* SDImageTransformer.m */, + 962D7794EB805E6D2F4F5F0B58218401 /* SDInternalMacros.h */, + F1CF9E4569F5B94286E175AF9D675C11 /* SDInternalMacros.m */, + 256D50D68BFC3FD314552D1D0BC2044D /* SDMemoryCache.h */, + C202F1C5D8455CDDCAE965BD7BAAFC3B /* SDMemoryCache.m */, + 98B3D67E4B164109B9B94A959496BA25 /* SDmetamacros.h */, + A92BC89EBEE6C3CE964CA994B506EA43 /* SDWeakProxy.h */, + 98901829A364C7B4F13375AEB6AA0FBE /* SDWeakProxy.m */, + EE827BC4171898B142EBDE3C763AFC7F /* SDWebImage.h */, + B4F7FC0CFCBE2143A4999C2F356D2B47 /* SDWebImageCacheKeyFilter.h */, + C909F8904D301FB96965DD62CE4E2CA7 /* SDWebImageCacheKeyFilter.m */, + BD430BA3E5DB115A0F8BF9D6110923AE /* SDWebImageCacheSerializer.h */, + 0D6771046C7CF97C82B7D303F2AFD49E /* SDWebImageCacheSerializer.m */, + B87895ABF5221A865DF2D53247763F89 /* SDWebImageCompat.h */, + F00B3F2B17BB2816232EB507B7AC9018 /* SDWebImageCompat.m */, + 3313EDBDBF7A4CA0DC32526D9ED0B496 /* SDWebImageDefine.h */, + AEEC6C323BA320F8FE0EFED607BC9994 /* SDWebImageDefine.m */, + 96AEDA915084E949F39F28D248C2FB43 /* SDWebImageDownloader.h */, + B453C947A0F7F0133F2F98F9E8EF1E43 /* SDWebImageDownloader.m */, + CBD58A6BE5B4D23DDB42D3D26A87CAEA /* SDWebImageDownloaderConfig.h */, + 6650E50E5FAFFD61FC973E5A0D5C8398 /* SDWebImageDownloaderConfig.m */, + 3ED4F75E10F9C3D76FF139C89BBB8154 /* SDWebImageDownloaderDecryptor.h */, + E38A10934CB29F9B2C75A0785209FA84 /* SDWebImageDownloaderDecryptor.m */, + 304D443FD07AF14BA7F1628D80971669 /* SDWebImageDownloaderOperation.h */, + 35B67A3C0E25A19B996355E03ED4A3CD /* SDWebImageDownloaderOperation.m */, + B2CE10A014B3B7826BFF751346CE7495 /* SDWebImageDownloaderRequestModifier.h */, + 607560CCA2D3766D85B5AEE557812D0E /* SDWebImageDownloaderRequestModifier.m */, + 6F1245D39980C8CC23C4FFA557C72FA3 /* SDWebImageDownloaderResponseModifier.h */, + 4BC98580A0BA844CDD661F01812A35C7 /* SDWebImageDownloaderResponseModifier.m */, + 16465B6B7358098E137335C9985BBBBC /* SDWebImageError.h */, + A4F1299F85FD74B081B5C5F85EF530B7 /* SDWebImageError.m */, + E0DD4370E4AF2D75716AE1B5D67EABEB /* SDWebImageIndicator.h */, + A56060BC793E00F370FD0DF3B4157376 /* SDWebImageIndicator.m */, + 253C2858A52DB3FD4BE13D65D2B6C2A6 /* SDWebImageManager.h */, + EFC3A24D1CE615DA957AE8C5AC47E5D7 /* SDWebImageManager.m */, + 949A8C57291DF7D8139F90AD367DB80C /* SDWebImageOperation.h */, + 0A70A9B1B9D076F21A4C704EAC69B3E9 /* SDWebImageOperation.m */, + FD3C0DF69EC6CFA1DD8299F62B1A84FB /* SDWebImageOptionsProcessor.h */, + 1B82CFD6AD23DAB70352983FFFA8DBBE /* SDWebImageOptionsProcessor.m */, + 6099FBA2A3EE3D602B49D82E19FA5875 /* SDWebImagePrefetcher.h */, + 9AA439B2B87976D37C23F7DCCE897F8C /* SDWebImagePrefetcher.m */, + 59CF9D4B8C92110B4BC1E1792E4AAEA5 /* SDWebImageTransition.h */, + A4B49E8FCEA2AFEE938A133ECC269CF2 /* SDWebImageTransition.m */, + ACD18D412C592E0FB706C10554E5283E /* SDWebImageTransitionInternal.h */, + 731A2E2A09E554B786F7BD8D9285D1CC /* UIButton+WebCache.h */, + E8B2553B72F322F7DC0ED38BB760DDC6 /* UIButton+WebCache.m */, + DC85B08C4C82F12C3AA7970FE44E1D9F /* UIColor+SDHexString.h */, + 343C42E325F84441C510AF8DEE739ADF /* UIColor+SDHexString.m */, + 8D2F3BF5EE9E269F816330AC6BF6745F /* UIImage+ExtendedCacheData.h */, + A7A348B5BB8CB7A444F827000C95DAE5 /* UIImage+ExtendedCacheData.m */, + 317AEF64C0405ADA2DB47569A6D72FC4 /* UIImage+ForceDecode.h */, + CF91BA63B659D0E10C9E123EBEAB8FA3 /* UIImage+ForceDecode.m */, + FB1FCAC52ADC49B2B3A81FFCCD3D56EE /* UIImage+GIF.h */, + 7A2AEB4C3E4F6147F107DF9376FA7264 /* UIImage+GIF.m */, + 0055AF44029FABEF5E29D1BC1B86CC15 /* UIImage+MemoryCacheCost.h */, + 0451FF8513ABCE79BA473B450192579B /* UIImage+MemoryCacheCost.m */, + 429004AF40A48DE835234068590E6A94 /* UIImage+Metadata.h */, + 5E5C516541F7C7AC40E990C05307FEEF /* UIImage+Metadata.m */, + 517D8EDC9F4BA34E4E4060247125B56D /* UIImage+MultiFormat.h */, + 373258A2F6DFCE8ADD1C1D42DE5EF5D3 /* UIImage+MultiFormat.m */, + A39050EBA53940D0CE63B52BF031BE6C /* UIImage+Transform.h */, + 0EBF81CE72AA8B4B06F1BC37CFA7B96A /* UIImage+Transform.m */, + 855BA7199BD9AC7B4687AF3F66E21279 /* UIImageView+HighlightedWebCache.h */, + F139F3BFF4ABD0678E7947E118F47774 /* UIImageView+HighlightedWebCache.m */, + 0B5075BB968E268BB5D61B393C333DB4 /* UIImageView+WebCache.h */, + FB718B97DF8D94DCF736C973F8184652 /* UIImageView+WebCache.m */, + 36BEAD7507B8644D14D46C852A6EF20B /* UIView+WebCache.h */, + F8CCC7FB49429A8093BC8191C6474D58 /* UIView+WebCache.m */, + CF6ABA6691731EEA533F56170FB03C5C /* UIView+WebCacheOperation.h */, + 43901AAA2BB40AE5F534540676833E30 /* UIView+WebCacheOperation.m */, + 919C930C4E0162377E3C95D0F6F11177 /* UIView+WebCacheState.h */, + 8E4925A54FF503F963785651A98856BD /* UIView+WebCacheState.m */, + 0B3501DF96788E261B37AA47988480FF /* Resources */, + ); + name = Core; + sourceTree = ""; + }; + 3FB59ED98513C1B8FA6DBF40283EB341 /* Serialization */ = { + isa = PBXGroup; + children = ( + 4228538168305A12A3465600D6FA372A /* AFURLRequestSerialization.h */, + DE378B71C4559C86FA84F1AB2F15BD03 /* AFURLRequestSerialization.m */, + B5A6B26A93BDE64568CF7AF44D709974 /* AFURLResponseSerialization.h */, + 1DD3D7BBD826081D1399FCDA65D59838 /* AFURLResponseSerialization.m */, + ); + name = Serialization; sourceTree = ""; }; 4098ED899C8DF8E013F9F260ECFAA236 /* Pods-keyBoard */ = { @@ -2051,203 +2210,6 @@ path = "Target Support Files/Pods-keyBoard"; sourceTree = ""; }; - 4121134849DA04BCD3BB12CF65EEF182 /* Core */ = { - isa = PBXGroup; - children = ( - 32CCCC7F014C0FE2CA551D9AF48EEF89 /* NSBezierPath+SDRoundedCorners.h */, - C5A25B7B454717DB3993591B5E8B612E /* NSBezierPath+SDRoundedCorners.m */, - 0A7095DB3527991440F374C9F9DB5050 /* NSButton+WebCache.h */, - 4A970B89D7ECEFF994ACF22A5493E001 /* NSButton+WebCache.m */, - 4561971E2CF7A1F1B00AC6091B3448DE /* NSData+ImageContentType.h */, - 2132EF8C73164960BCAFD57CF9C7A53F /* NSData+ImageContentType.m */, - F55015AACD21AF6274741BBDAC6148E2 /* NSImage+Compatibility.h */, - 102C92CE02746A6588B44F852322AB39 /* NSImage+Compatibility.m */, - 167D63F7114C5D501803C08C617324CA /* SDAnimatedImage.h */, - 5B609960A71B1FE2AB814B679D9E7609 /* SDAnimatedImage.m */, - 2BEAAFCDD4CD23AABA4CD7359454B646 /* SDAnimatedImagePlayer.h */, - 8532F3DD3C373C14A106D14F67A3C301 /* SDAnimatedImagePlayer.m */, - 807026E96F55910EB566C0F4535DF3EB /* SDAnimatedImageRep.h */, - FBF4C669CA968A448B7E1DD3A141A41C /* SDAnimatedImageRep.m */, - BEE43BCA7C1A101BFC7A5856F8793387 /* SDAnimatedImageView.h */, - 635235003B3FEDB8B457A8FFF46C69E3 /* SDAnimatedImageView.m */, - 13D84A2503CDD440D0A0063FF97A2EB4 /* SDAnimatedImageView+WebCache.h */, - D547696F5943987BC61D389F16B201E8 /* SDAnimatedImageView+WebCache.m */, - C0ECED1A3FCBB93D40B1BFFF5AE2F27D /* SDAssociatedObject.h */, - 9421B0E41FC583CAD966F98C60445BAB /* SDAssociatedObject.m */, - 9820AAA1C732351179414BB46300A1B7 /* SDAsyncBlockOperation.h */, - 5E8666C77464C3B683AB0F8D4DEA6951 /* SDAsyncBlockOperation.m */, - 491DFACE04BF80FD0F37C4ECFE908522 /* SDCallbackQueue.h */, - 7E8762E22AB8C87B76E6D94D44665136 /* SDCallbackQueue.m */, - F246E4D58E65C83AB3493871F692FC9C /* SDDeviceHelper.h */, - 4CF942497E18FEE75DD2CDC6779A790A /* SDDeviceHelper.m */, - CAD21419CFC8A372DB941E7983ADDD9D /* SDDiskCache.h */, - 45505B1DFA133379CEE6DD6D8148013D /* SDDiskCache.m */, - A5C74D4E7CA539C956587A3615702D24 /* SDDisplayLink.h */, - 61A0FA60F5E41A8B04C442FE582DA298 /* SDDisplayLink.m */, - 3201B19667C12026E1C92EA1DD973BB7 /* SDFileAttributeHelper.h */, - 41B90877BBAECA72C2F67A5E39E1E87A /* SDFileAttributeHelper.m */, - 3653F678D1C9DBE34F6262A65263C642 /* SDGraphicsImageRenderer.h */, - FC52B8F222678A49BF1BA307CD9A7777 /* SDGraphicsImageRenderer.m */, - FB334521D7F08199DE839AB68A37105C /* SDImageAPNGCoder.h */, - 92B0AD9AA2CE09EEB0EF8C040E103B97 /* SDImageAPNGCoder.m */, - D3543E70B7F1B6F0CB25AB731CA0DFBE /* SDImageAssetManager.h */, - 9F94B604866DB37515D32D88635EFEE2 /* SDImageAssetManager.m */, - DC870A534B766E7815C7744EE9E7E3E1 /* SDImageAWebPCoder.h */, - 2E5DB75D5C223CDC5703FA115447A148 /* SDImageAWebPCoder.m */, - BCAF03C4FF87945F86C061039CB2443F /* SDImageCache.h */, - 11EEC0D59FA31FAAD209A208EB338575 /* SDImageCache.m */, - 94DB79C6893EAE9D1A7D3559B485BCC5 /* SDImageCacheConfig.h */, - AEB0E8A16F89DAA71F5718EDBF3E2A83 /* SDImageCacheConfig.m */, - 7A8A3FC6E6388A4864974A3D3B9C02F6 /* SDImageCacheDefine.h */, - 6DB3789FF1142F1817E52B4F6C9BA1B6 /* SDImageCacheDefine.m */, - D744043462D81E4ED2BB1ECAE8E9F696 /* SDImageCachesManager.h */, - 25A5CCE05BC1D97AB685203E1D41C4B0 /* SDImageCachesManager.m */, - 9DC4AC8D166AB2BD8B557BFA9FA9872C /* SDImageCachesManagerOperation.h */, - E6B846D03C97210EDD55850D04A8F27A /* SDImageCachesManagerOperation.m */, - 471A02E298FA363A6051045C83C8BE05 /* SDImageCoder.h */, - 9D7E450C43D308EE4C1B879D0B60A4BF /* SDImageCoder.m */, - C7E392E347A9555F1447E0FBB3E777E5 /* SDImageCoderHelper.h */, - BBC5ED786070BB7777881EF2B55FF369 /* SDImageCoderHelper.m */, - 83B5308ADA544D7E6FCE86EFD21D5CBB /* SDImageCodersManager.h */, - 3D1EF86D80B6333688465CCC41BA33F7 /* SDImageCodersManager.m */, - 6C3B1F50C3A3E82B67AE98F2BAAD5C3C /* SDImageFrame.h */, - EAEC3302C39E58E44D49A12FA8699A84 /* SDImageFrame.m */, - F86F79271CDA27370B63C4004FB83EF7 /* SDImageFramePool.h */, - 8E8C0DD47533304FD7479FB5A47A4E3B /* SDImageFramePool.m */, - 911E6F5D1D17453D35BE3FA4A9086972 /* SDImageGIFCoder.h */, - CE77C4D90418C342647C55D75A5C1AE8 /* SDImageGIFCoder.m */, - B5EF3518EEE6DB69526EE34FF9D58DFD /* SDImageGraphics.h */, - 2504FFB7834ECCFC15329B28F3C9A331 /* SDImageGraphics.m */, - 0F050843F5053FDD98D8FE72C1E28A5F /* SDImageHEICCoder.h */, - 3125F7D904D9F1F20C7699EF5186B19F /* SDImageHEICCoder.m */, - 390647665D633FF246584D1E27162F0D /* SDImageIOAnimatedCoder.h */, - 3504487D6CA5438A7FB00D149564DDFC /* SDImageIOAnimatedCoder.m */, - 06077AACB035D8452C9F730B2E1F00DF /* SDImageIOAnimatedCoderInternal.h */, - 31894250FE81D510485178A2F984B715 /* SDImageIOCoder.h */, - D2F471FC57FF6DD1F698134B35D27C95 /* SDImageIOCoder.m */, - 9CE19B5D21ECCFC76311F186D2B3F651 /* SDImageLoader.h */, - FA395F2DBB98D70F218443EA65E0D442 /* SDImageLoader.m */, - E889A3C02C6D9C2F5501AF30759E916C /* SDImageLoadersManager.h */, - B3F518DFA534AD602991065542FADB29 /* SDImageLoadersManager.m */, - 61080F57DD92AB8ABC811791B547090C /* SDImageTransformer.h */, - AC558AE5F168E24878BD4ACF3EE1274A /* SDImageTransformer.m */, - 3422D3CB84719A98D68CD9DE2857E694 /* SDInternalMacros.h */, - 123714F0F2335CBE901933785D4D26FB /* SDInternalMacros.m */, - 82BDCD67CE12306B5AF6A9E3DB88E0DA /* SDMemoryCache.h */, - B7AD3647BEEBE4C691B28F5746D51E7D /* SDMemoryCache.m */, - 5A6A16B78780399804F5DD15816ADE2B /* SDmetamacros.h */, - 45880427FEDFE00B81EA46DB6F5AFD52 /* SDWeakProxy.h */, - C5A9A86ABA54140CD0A5B6CD44C79740 /* SDWeakProxy.m */, - BB4D65769822C57911F4A84B9F8FADFA /* SDWebImage.h */, - C205DB74EDBD3C80FB36923BD2255DBB /* SDWebImageCacheKeyFilter.h */, - 34C31D8DFEC22296E69E97BC5CEAE316 /* SDWebImageCacheKeyFilter.m */, - E95C47EFA2CADA467B5A46831F0EA87A /* SDWebImageCacheSerializer.h */, - 6BEFA0A1959620AC394975A01082A23B /* SDWebImageCacheSerializer.m */, - AB253C473EBD2DF633A230C7FAA304B7 /* SDWebImageCompat.h */, - 64891F4568CD87380D133019B00B2324 /* SDWebImageCompat.m */, - 8B0013F9906622545E27B913F2092F22 /* SDWebImageDefine.h */, - 9C599636DAB63CB63CC65E368E1BAAFC /* SDWebImageDefine.m */, - 402826B784C1198142F399AD251F2A3A /* SDWebImageDownloader.h */, - 2FED06425BD958CD54FC4A96C6FF1992 /* SDWebImageDownloader.m */, - E138C277A1DD60E5BB20AB4EC7CEBDB2 /* SDWebImageDownloaderConfig.h */, - 47655EC4466A20F4BEC0C76B8F4C5440 /* SDWebImageDownloaderConfig.m */, - 5716AF79F54782358457FBB452B73975 /* SDWebImageDownloaderDecryptor.h */, - DBE1F0821F32567F3E84359D65C8422C /* SDWebImageDownloaderDecryptor.m */, - 9B89E97BE59B9448BC63E348FA77F055 /* SDWebImageDownloaderOperation.h */, - D68B54EB4EEB9AF6B9ED16CAB83E16BA /* SDWebImageDownloaderOperation.m */, - AF302A5E7BA56F9F631A8591DA72D3C3 /* SDWebImageDownloaderRequestModifier.h */, - 02986FE530B6F5FD0ABF721900839DA5 /* SDWebImageDownloaderRequestModifier.m */, - EC33F9EE9311F0E41E69AB2D40770217 /* SDWebImageDownloaderResponseModifier.h */, - BBC2FF6B1D45486A6893E456C4B85E05 /* SDWebImageDownloaderResponseModifier.m */, - 109DC293F90D678E22D453F41A197049 /* SDWebImageError.h */, - F8A31B7D92D4FBD879F8C39ED3139439 /* SDWebImageError.m */, - AD28EF542A0B7F210E7C92D1D9DEC003 /* SDWebImageIndicator.h */, - 0A8F3B5ED5052E8AFF569E50436DC3C0 /* SDWebImageIndicator.m */, - 32DEFB57DAEAFA1A97A9826678533D16 /* SDWebImageManager.h */, - 2ED4FAFE5BD7891D4471852209337077 /* SDWebImageManager.m */, - 2ECB40CAF1E6F3F4A5F02F74E30B95E8 /* SDWebImageOperation.h */, - ED2932A528EF3931C345CFE64B9F95D6 /* SDWebImageOperation.m */, - 1FCD0CB41F1E259546B6F8A9BFF05378 /* SDWebImageOptionsProcessor.h */, - 6A632B4F7EA06C55CADB3BF7C49D7860 /* SDWebImageOptionsProcessor.m */, - C63ECE6EA6AB3C1B9F676C1A2510CA67 /* SDWebImagePrefetcher.h */, - E48A50CB4DE0A87DE4F3E1BFE24DC7B7 /* SDWebImagePrefetcher.m */, - 28EBA38DF7DE3C55A1DCF1C9536E3712 /* SDWebImageTransition.h */, - BFEF7CB304E59179EBDA954FA636E74D /* SDWebImageTransition.m */, - 2A543722998E5C6171A0B4A729D11BBB /* SDWebImageTransitionInternal.h */, - 4C4CB24406FFC32C73C615D12F0532C7 /* UIButton+WebCache.h */, - 21C74D93A3238750FF610EABE13EB50F /* UIButton+WebCache.m */, - 368AF39857A6659131D7CD15698E6867 /* UIColor+SDHexString.h */, - E29E39BBB558CC51A6DB91379351B72E /* UIColor+SDHexString.m */, - 75B6A4916D912131001F61C28CCA6565 /* UIImage+ExtendedCacheData.h */, - C1F534C5FFF39633128C9B99F1BBF1B5 /* UIImage+ExtendedCacheData.m */, - D843F393C308E0D3BCB88A0B04FDB291 /* UIImage+ForceDecode.h */, - 6645D9E2FCEC9ED435B284460DEDDF89 /* UIImage+ForceDecode.m */, - 21199D87A8FB4561900F6BC425147989 /* UIImage+GIF.h */, - 35205291EDA412911A7CCBF5DB6087EB /* UIImage+GIF.m */, - 06EFD395C240E38E2ED0DCAF40CE73FC /* UIImage+MemoryCacheCost.h */, - 5107F5A871AC7AEDAD8C78C1F1AB8E40 /* UIImage+MemoryCacheCost.m */, - 3EA0FACBE46F43AB7A99266BBBF20510 /* UIImage+Metadata.h */, - 6B5C2096D95608EEB566217452868E46 /* UIImage+Metadata.m */, - 35DC020855ECA02C5E2568299594E9C0 /* UIImage+MultiFormat.h */, - 5734E5CBE9E63CD37E71A375796587B5 /* UIImage+MultiFormat.m */, - B5C750768FB8EE26E8F613C1D910045B /* UIImage+Transform.h */, - A67C49E3D329D82553E5FEBB4951ABD7 /* UIImage+Transform.m */, - 806C18993732E8D418AEA50EC6162EDC /* UIImageView+HighlightedWebCache.h */, - 88D5019FBBC4DC80F31FB68B1820A427 /* UIImageView+HighlightedWebCache.m */, - F21EDB4000AA52958FC207353BC36367 /* UIImageView+WebCache.h */, - 1A1600286757D192233397A2BF1A2371 /* UIImageView+WebCache.m */, - 8179AB093F869B4BCCBBF8427F69555B /* UIView+WebCache.h */, - ECA422AB0F45E3F4B650188FEE476C8C /* UIView+WebCache.m */, - 634BE374E20F830B5B77550EFCF89612 /* UIView+WebCacheOperation.h */, - 0A19BDA4E648916460C20489D6D183F0 /* UIView+WebCacheOperation.m */, - B072B2B3BF7FE061CC694AE00BCF5858 /* UIView+WebCacheState.h */, - FF6C98975F33C466CDCC506B95080046 /* UIView+WebCacheState.m */, - F897C86CB2866AB045A64520219B6522 /* Resources */, - ); - name = Core; - sourceTree = ""; - }; - 412E12540DFA0D72BBEB364F09064325 /* MJExtension */ = { - isa = PBXGroup; - children = ( - E5B1C13BB84FC1E79BC9BB233B793A5A /* MJExtension.h */, - 04A50C0A5F4CA1B3AF632BFE12460FC6 /* MJExtensionConst.h */, - 47A777C7602E23E11AE500103D52A253 /* MJExtensionConst.m */, - 0C9F5466A18204DE825F30433C784EDB /* MJFoundation.h */, - 61A7EBF5198D90CFC9C01A0BA03924D8 /* MJFoundation.m */, - 1326C5B7B2B67B2A6E9A785F1ECEA87F /* MJProperty.h */, - C9DDC2FE19D7DC5621872F440C5E8A37 /* MJProperty.m */, - 367088C36E8BF33957802AE4A6256CC1 /* MJPropertyKey.h */, - C8B51A0410EE632DF42E1C298E25B221 /* MJPropertyKey.m */, - 4E2D9F4632DB7036D701CB57007800AB /* MJPropertyType.h */, - 4688EE09ADCEE19CD4BDF95833F7E81D /* MJPropertyType.m */, - F7CD4CF41A222A66B3E435AB32DF697D /* NSObject+MJClass.h */, - 96BA563F965A1054AC53D0F3D5BD3AFE /* NSObject+MJClass.m */, - 9777292C62AA2375C63BAEF75D1F940C /* NSObject+MJCoding.h */, - 8FD309B3FADE968B4258080AC443EFCB /* NSObject+MJCoding.m */, - BDE2764DE3EEF78845A18DB898232DC0 /* NSObject+MJKeyValue.h */, - 6CE2A9B22B9FC87A02A230599E72D4F1 /* NSObject+MJKeyValue.m */, - BE09431A1BE57A882CA02B1E434916A8 /* NSObject+MJProperty.h */, - CFD12B92C17E28346EDC2EC75D0BF494 /* NSObject+MJProperty.m */, - EE1A5661BE1EACFB3D2C7F19D51BF011 /* NSString+MJExtension.h */, - 5B4EF64EB8018D8E9CE7C8CB5FACCD5B /* NSString+MJExtension.m */, - 17AEA0C7D131B1C990249C70BBD62CDF /* Resources */, - FFFE14F5389A574527140C5AC02880B9 /* Support Files */, - ); - name = MJExtension; - path = MJExtension; - sourceTree = ""; - }; - 453238A8EA177DEF4A00D8C859B1DA27 /* Support Files */ = { - isa = PBXGroup; - children = ( - DDA8FA3EA27827F124700F1B6176E4CE /* Bugly.debug.xcconfig */, - 956C8FF42F553F12124DED23E19FE31D /* Bugly.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/Bugly"; - sourceTree = ""; - }; 47B776543D6613BCB6FB72308F863018 /* Pods-CustomKeyboard */ = { isa = PBXGroup; children = ( @@ -2264,458 +2226,462 @@ path = "Target Support Files/Pods-CustomKeyboard"; sourceTree = ""; }; - 4B2DDDE1A44400085093EA342624D230 /* Support Files */ = { + 4C9B1F2E52EB330FD3C540E9E187C896 /* JXCategoryView */ = { isa = PBXGroup; children = ( - 20BCC481544CBBCE47AC61F792449041 /* MBProgressHUD.modulemap */, - 93081A25D8BCD8327365F5FAC77C46F3 /* MBProgressHUD-dummy.m */, - 0FABDACBA6BA6926D5F19E502E77474E /* MBProgressHUD-Info.plist */, - 2BF8D28C7089A47299DB62B980D954C8 /* MBProgressHUD-prefix.pch */, - D5100072476E008E3F5E024784855C6A /* MBProgressHUD-umbrella.h */, - 648C72C63334BCDFD466058863FCDAC9 /* MBProgressHUD.debug.xcconfig */, - 035807D7A9181D8E0DF6FAF1E2D6B33C /* MBProgressHUD.release.xcconfig */, + 72B1B153E1909E0A9DFA6E6097FD363D /* JXCategoryBaseCell.h */, + 6FD544A644986722B86F15A292995457 /* JXCategoryBaseCell.m */, + 7D7A76984F1E3BB7440B31DF8D5447F0 /* JXCategoryBaseCellModel.h */, + 897530E070833B039DC2821D0B63B137 /* JXCategoryBaseCellModel.m */, + 45E71D8592674E85D7D5DA4831A592BE /* JXCategoryBaseView.h */, + 39D939E1825294C23871CD06F0A1E6A2 /* JXCategoryBaseView.m */, + 051A66FC7C22537DD150BA86539EC9D4 /* JXCategoryCollectionView.h */, + E81450568229FA708143E74A7A580F89 /* JXCategoryCollectionView.m */, + 8B890DAD1E942EF3DB7BF5C23113C1B6 /* JXCategoryDotCell.h */, + 87D7822F88C7B9608DF7E50878B7970B /* JXCategoryDotCell.m */, + 931669FB7F8BA540208B2F23E13B2F19 /* JXCategoryDotCellModel.h */, + 3AF0216318F4C1EBD4207012E5E70EB1 /* JXCategoryDotCellModel.m */, + 8EFBD2E7A88C44123D980C42CB8702A4 /* JXCategoryDotView.h */, + C86FEA7FA982FA034501F7AB37760D49 /* JXCategoryDotView.m */, + 1C9E2AC9C9AE14EBBFDCDBBA925613E4 /* JXCategoryFactory.h */, + B82D0099E75E96FE5ACCF5B647388551 /* JXCategoryFactory.m */, + 9234E8779322D7F9722AF6E18FF9F6F3 /* JXCategoryImageCell.h */, + 8067C53E08CA3787D9D5C3551F86EF9D /* JXCategoryImageCell.m */, + D51E4D4230E01D5F3D9340BDF320C3E1 /* JXCategoryImageCellModel.h */, + 570A4EA50A989D93BDAC90837E4F3637 /* JXCategoryImageCellModel.m */, + 31C9A23E37AE09BB9DC1BC766BD3A6AA /* JXCategoryImageView.h */, + 5CB6F43E2EFE165260D66B0BFF9A8831 /* JXCategoryImageView.m */, + 5EE479D553AE99C7C893E8B21299B3AC /* JXCategoryIndicatorBackgroundView.h */, + D68722AFBA338282E0B3C89AFE0F83AC /* JXCategoryIndicatorBackgroundView.m */, + 2A4AC508097EE18B75D5D75FDA7CF5C1 /* JXCategoryIndicatorBallView.h */, + F9FBE6B4C01D1445DBFC466AEA64E5D8 /* JXCategoryIndicatorBallView.m */, + 913F72595D3AEFAFE006FD96A54FD8DA /* JXCategoryIndicatorCell.h */, + F9F30602CBEA307F110682B47DBF3B59 /* JXCategoryIndicatorCell.m */, + 5EFCD05B81004D2C239BFBEBEE4DC3D5 /* JXCategoryIndicatorCellModel.h */, + 7E73D1DD407F0535009A207AB317F8B7 /* JXCategoryIndicatorCellModel.m */, + 37C2A3B1C753D4547646108720BF5321 /* JXCategoryIndicatorComponentView.h */, + 1D490F15AED6B55BCD64F4D5193A9375 /* JXCategoryIndicatorComponentView.m */, + C398AC4FA166ECBDBFA37681D3C108CC /* JXCategoryIndicatorDotLineView.h */, + FD7C0DEE68BC5E8256170F72FCC61847 /* JXCategoryIndicatorDotLineView.m */, + EF2876A2D62001FE741FE92492A10CFF /* JXCategoryIndicatorImageView.h */, + B3443BE7FBE80A857A146093C743D9BF /* JXCategoryIndicatorImageView.m */, + A527D460219BC25D3D8E05E8A68C23C9 /* JXCategoryIndicatorLineView.h */, + B49F76B93F72D361782D7DA99B65ADC9 /* JXCategoryIndicatorLineView.m */, + 30E03A823CD994C7C3DEA8D91B90C5DE /* JXCategoryIndicatorParamsModel.h */, + 1936EF3FEE34E513D746BA5037CDEE80 /* JXCategoryIndicatorParamsModel.m */, + 92A35222DEEC452079F1343331C6E154 /* JXCategoryIndicatorProtocol.h */, + D25C8F67455D872A48F4797213321EA4 /* JXCategoryIndicatorRainbowLineView.h */, + 021930E01F482BDF2DEAAA2AF9FDCF18 /* JXCategoryIndicatorRainbowLineView.m */, + 5B766998FBEAD558A15F06134D5A9335 /* JXCategoryIndicatorTriangleView.h */, + C31C4A7197700436AFBAB631C088A6AE /* JXCategoryIndicatorTriangleView.m */, + 2DFC8007FA865661CA9E295ADD1014BA /* JXCategoryIndicatorView.h */, + 1817B2506E6D89DAFA8176C4A51738C0 /* JXCategoryIndicatorView.m */, + E948F26A10F663204E24603E8527A7F5 /* JXCategoryListContainerRTLCell.h */, + 96D1E2DE4F6F4EB00BD41C7ABD504109 /* JXCategoryListContainerRTLCell.m */, + D9CF33220A4EDFF59077DE1F83605414 /* JXCategoryListContainerView.h */, + C63CFE9D73B31D9EBEF51E32F9AC7286 /* JXCategoryListContainerView.m */, + A23AD7EF4A12F64EAAFE5154D8DC5843 /* JXCategoryNumberCell.h */, + 7B51D3C0C65114DF44F6DDB3ED9C4E4E /* JXCategoryNumberCell.m */, + 292BBC0398F56F3818017A7314541B45 /* JXCategoryNumberCellModel.h */, + 5633AC0E53EEE3085AFE9CB101E6C0CF /* JXCategoryNumberCellModel.m */, + 7B8734ED62BE39C69073D2C32183C6FC /* JXCategoryNumberView.h */, + D5119B7CF0FE429CF0E185983E72F98F /* JXCategoryNumberView.m */, + 0CF1A36FA548FCE3A4F7DA66625E9583 /* JXCategoryTitleCell.h */, + B49837A2AA042F710F43F143A929D49F /* JXCategoryTitleCell.m */, + E01ADBA325921AF74B0FBD58F7BB5032 /* JXCategoryTitleCellModel.h */, + B70A750F053AB9B0B60CBF456ED577A9 /* JXCategoryTitleCellModel.m */, + 524557CADCF9674C470A7B1764594AEC /* JXCategoryTitleImageCell.h */, + 5EADC8693C7692FBBE4CE165F51B28E9 /* JXCategoryTitleImageCell.m */, + 3B812F8DDDC6CC3E3ACDB1D17716E70C /* JXCategoryTitleImageCellModel.h */, + B28192DA39251C0AC1C30AE245A9A547 /* JXCategoryTitleImageCellModel.m */, + 9E91A12C513A640E68663D4ED668C0FC /* JXCategoryTitleImageView.h */, + 9EC4E80691EA4009AB067722DA72E4D5 /* JXCategoryTitleImageView.m */, + 25475D081A3343232AD119F5F5A5F24A /* JXCategoryTitleVerticalZoomCell.h */, + F3BAE7C9BD506017B4C0D7BBB9100900 /* JXCategoryTitleVerticalZoomCell.m */, + C4D51AE584C5960F5C6B60C866377741 /* JXCategoryTitleVerticalZoomCellModel.h */, + 230B07768E56A05E48373DAA2EAC05DE /* JXCategoryTitleVerticalZoomCellModel.m */, + 996C55702A2E4E7B3785C0C5454598C9 /* JXCategoryTitleVerticalZoomView.h */, + 43BA7B9A75BE654B8242649314595C2D /* JXCategoryTitleVerticalZoomView.m */, + 5105F32D29B4C0D80B780EE2DF6D2898 /* JXCategoryTitleView.h */, + 8FEE8F6EEF601125225DCB1FEACED91C /* JXCategoryTitleView.m */, + 892976CDE28E9BEF86BFABB5F84E72F6 /* JXCategoryView.h */, + 8FF761C99D422AE106C31A4A7AE469C7 /* JXCategoryViewAnimator.h */, + 95BCF1B96C9A492409E9634BC63A400B /* JXCategoryViewAnimator.m */, + B4750EDA171CA7EB95AFE62489A712EF /* JXCategoryViewDefines.h */, + 22A80188C121A76950A88A3321260BFD /* RTLManager.h */, + 9A3BA26DC995AB016051D522F5691C91 /* RTLManager.m */, + 3D72A1C48CB238B4D5F50BA925DEDEAE /* UIColor+JXAdd.h */, + EA759F283932CC196A3C378E0037B993 /* UIColor+JXAdd.m */, + 5FEA93EEEC74A71E4D426F48D7F850F2 /* Resources */, + F4552932065591EFBCEA1E5854647226 /* Support Files */, + ); + name = JXCategoryView; + path = JXCategoryView; + sourceTree = ""; + }; + 4D01249FF2A98F37C991C38E6B67067C /* JXPagingView */ = { + isa = PBXGroup; + children = ( + B4640B79F6E1B39F4E2822274BC61D23 /* Pager */, + DB5A3B2FEE3BD7A679B91E83BA32906B /* Support Files */, + ); + name = JXPagingView; + path = JXPagingView; + sourceTree = ""; + }; + 4E1FCFC15AFF6ACA076B1D8B295CDE1D /* Support Files */ = { + isa = PBXGroup; + children = ( + 3C530EFDCDFFC732A409BADBE3F0D068 /* MBProgressHUD.modulemap */, + D30B8333D334528105E28100C243348D /* MBProgressHUD-dummy.m */, + A16556ABD8D8BADE087CDC162140E59B /* MBProgressHUD-Info.plist */, + 98768C46376F54DFEB58CDD9F278AC71 /* MBProgressHUD-prefix.pch */, + A8AF8342462E3EDE8E3D40F840DFA00C /* MBProgressHUD-umbrella.h */, + EC4CFDD75B85C12B1C1393BEA03A165C /* MBProgressHUD.debug.xcconfig */, + AC0C26DBF6F4D6A9D8C1BF55FE14DABA /* MBProgressHUD.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/MBProgressHUD"; sourceTree = ""; }; - 4C55C9351E9FED232300EF60CC442288 /* Resources */ = { + 579E4939EC6AC009496870BECBDEC208 /* Reachability */ = { isa = PBXGroup; children = ( - 43F4AA149B8B7307ED5DA363EBC93DBF /* MJRefresh.bundle */, - 187A3F425AA5E5A93F8784E11F9E28CF /* PrivacyInfo.xcprivacy */, + 9C0082C9FF6875DA300AE3D8453DCB62 /* AFNetworkReachabilityManager.h */, + C75FCCDECEB6A92A56B67E27033473B6 /* AFNetworkReachabilityManager.m */, + ); + name = Reachability; + sourceTree = ""; + }; + 5FEA21AFA94BB3973C15EEFD1CA50FFA /* LookinServer */ = { + isa = PBXGroup; + children = ( + 8083A32807E86242A863314EF6818E55 /* Core */, + 831477AC631FF14EDA7861CA75B58087 /* Support Files */, + ); + name = LookinServer; + path = LookinServer; + sourceTree = ""; + }; + 5FEA93EEEC74A71E4D426F48D7F850F2 /* Resources */ = { + isa = PBXGroup; + children = ( + 7AC0215893BDD3C5E126FCE996097AB4 /* PrivacyInfo.xcprivacy */, ); name = Resources; sourceTree = ""; }; - 4EE34BF885F3E77A23F8FE0A5F1EF29E /* SDWebImage */ = { + 619A9868F13BC15F5FC65525C1D9E2CF /* DZNEmptyDataSet */ = { isa = PBXGroup; children = ( - 4121134849DA04BCD3BB12CF65EEF182 /* Core */, - 57091A5F19D7165DCEE12C9F477836F7 /* Support Files */, + 2945888F89AB6D3ECBBEDD6E09D1B949 /* UIScrollView+EmptyDataSet.h */, + 45FCB10C5ADD911EC17F1E6BAAFE9892 /* UIScrollView+EmptyDataSet.m */, + 6243689E5C76660F684D23A4B8790B3A /* Support Files */, ); - name = SDWebImage; - path = SDWebImage; + name = DZNEmptyDataSet; + path = DZNEmptyDataSet; sourceTree = ""; }; - 52BEEDAD6FE6860B049D64EEC5ED3599 /* Support Files */ = { + 6243689E5C76660F684D23A4B8790B3A /* Support Files */ = { isa = PBXGroup; children = ( - 731627030A2BE88955F55A35D6DCABC1 /* JXPagingView.modulemap */, - AFBCBD9F77FD5CF26B2BEBE02B1E19D9 /* JXPagingView-dummy.m */, - E259D7D54703B047363E50046A949F68 /* JXPagingView-Info.plist */, - 0E90E49C067121A7254AE81E49E663A2 /* JXPagingView-prefix.pch */, - 85E262E36BEDDEA0E7B4F4A870DA4314 /* JXPagingView-umbrella.h */, - 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */, - 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */, - 8B0B848DED77C21AEA127E58094EE39E /* ResourceBundle-JXPagerView-JXPagingView-Info.plist */, + 406C8D3FB686F0A24482B5EC0964787A /* DZNEmptyDataSet.modulemap */, + B8322800FD1F06BC2FEA3A9EEA874E20 /* DZNEmptyDataSet-dummy.m */, + 2B53DEB14A9698F954D95E54715C1911 /* DZNEmptyDataSet-Info.plist */, + 7A307E6A261D750F85B7C9C1575036E4 /* DZNEmptyDataSet-prefix.pch */, + 6523AFC889399B6B25C08CCBEEE2F0B6 /* DZNEmptyDataSet-umbrella.h */, + 48E1ED2BAC3C5C1B077AAB67F3325D4E /* DZNEmptyDataSet.debug.xcconfig */, + 5CB726B6B5C83EAABA9AC89E76D45643 /* DZNEmptyDataSet.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/JXPagingView"; + path = "../Target Support Files/DZNEmptyDataSet"; sourceTree = ""; }; - 57091A5F19D7165DCEE12C9F477836F7 /* Support Files */ = { + 6D1FBB10825D24E335F04D97066D9C66 /* NSURLSession */ = { isa = PBXGroup; children = ( - 5DEBBB0A3F6FE82FAB648C476116F8AF /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */, - 46461C91DF1586852C84C6489E5ED4BA /* SDWebImage.modulemap */, - 13B82D87F3DD4A8EB4C508E0BFA04090 /* SDWebImage-dummy.m */, - E87C7E8B87671964EE3B94CB801C492E /* SDWebImage-Info.plist */, - ED8D9D4C66EB7593131560466A9EEB08 /* SDWebImage-prefix.pch */, - 5409A465D5BE745D21B9F8847B798BD5 /* SDWebImage-umbrella.h */, - 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */, - E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */, + 060133813AFA51D11B917CB91A3D4950 /* AFCompatibilityMacros.h */, + FB614FC70886C761E2BA7E9C7E7F2D88 /* AFHTTPSessionManager.h */, + A11C415AC80BAC0B06685E1F8AC7C7C8 /* AFHTTPSessionManager.m */, + 1612A7E2EB4D912BD038AFA9FAE11CFD /* AFURLSessionManager.h */, + EA3E73CFAE53223D9EC3DE4B0794DB06 /* AFURLSessionManager.m */, + ); + name = NSURLSession; + sourceTree = ""; + }; + 7DD842DFF9E829253FACA707DA5ADAAB /* FLAnimatedImage */ = { + isa = PBXGroup; + children = ( + E386525610DF7AB4E84ED0202969AB8E /* FLAnimatedImage.h */, + D1046C4A0F4D596969B881D83BCC0FA1 /* FLAnimatedImage.m */, + 18EAC20398B46C2C580B542618314D9E /* FLAnimatedImageView.h */, + 148EEB030F62D4D33B4C03AE45AD6C08 /* FLAnimatedImageView.m */, + CABD2BCBA14C84A63E7608CED87846A3 /* Support Files */, + ); + name = FLAnimatedImage; + path = FLAnimatedImage; + sourceTree = ""; + }; + 8082051853063B4647901F5178837B33 /* Support Files */ = { + isa = PBXGroup; + children = ( + A14754CFA2BACA27D3CA6DD44F6D8F10 /* ResourceBundle-SDWebImage-SDWebImage-Info.plist */, + 5978BDDC6A977C5D014B3D0CC0294043 /* SDWebImage.modulemap */, + 61C0CC288A628CFA871D599D497E2A8E /* SDWebImage-dummy.m */, + 9FB49DC67A435D7D63695F113C3D398C /* SDWebImage-Info.plist */, + AF5F1AB306D02EC6A5F39878FAE8BEA1 /* SDWebImage-prefix.pch */, + FB84DF0F5016EBAF04FE5FE9F22081C0 /* SDWebImage-umbrella.h */, + 93B896E371962B657B3B85C108092214 /* SDWebImage.debug.xcconfig */, + 81F7F63875295940D9A950DB7D2EBDE7 /* SDWebImage.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/SDWebImage"; sourceTree = ""; }; - 5BDD879F155F843CED343AAC8812F0D6 /* Support Files */ = { + 8083A32807E86242A863314EF6818E55 /* Core */ = { isa = PBXGroup; children = ( - 76DCA3DD0D37AD6B5C7C65D7829AE3A8 /* LSTPopView.modulemap */, - 97E0EEAE3EFB0492B434EC2A704903DE /* LSTPopView-dummy.m */, - 2219CD4B41E42AA4B9864251F1CFEF59 /* LSTPopView-Info.plist */, - F2EB780D15F77D48AEC0D3A47833557E /* LSTPopView-prefix.pch */, - DBE3855004E17CACAC82F75DF8EFEBD4 /* LSTPopView-umbrella.h */, - D0317376A8F5B09CBBAC757A9410CF00 /* LSTPopView.debug.xcconfig */, - B79CB4484CF793AF65C86B424D955922 /* LSTPopView.release.xcconfig */, + 768785318FEB9536A4DAAD47BD76396B /* CALayer+Lookin.h */, + 657631264951C7514A1788B1C6316E7F /* CALayer+Lookin.m */, + 77DEC7B6CE458C6AAB89A25A3E05BA4B /* CALayer+LookinServer.h */, + 798B3DCD95877B6C7D997E0652FB6E9A /* CALayer+LookinServer.m */, + 8BE10EB8B74E3D1DE4172EF863BC22F8 /* Color+Lookin.h */, + 4B2681504ECC11F7B0563ECF0A1FDDFA /* Color+Lookin.m */, + 8679B55EBC5DC660D8E798D1B986FC22 /* Image+Lookin.h */, + C6553D3214536278C24D990CC36267F3 /* Image+Lookin.m */, + 313050E8524ED89E2B2CF8F5C1CC7633 /* LKS_AttrGroupsMaker.h */, + 00AE10F23D2B898E9F45884FD9904B2F /* LKS_AttrGroupsMaker.m */, + ADF656282B85E6C974597F555BDE3F21 /* LKS_AttrModificationPatchHandler.h */, + DEFCE7D8BFD813860A380F7F5B5EB401 /* LKS_AttrModificationPatchHandler.m */, + 769C3408F11A51A90B589A6DBB334C55 /* LKS_ConnectionManager.h */, + DA49453EBB9C905AD701D17F18479113 /* LKS_ConnectionManager.m */, + 52FF07E10C8C0B816653B6836CCFFD04 /* LKS_CustomAttrGroupsMaker.h */, + AB2B98D8DC3605842D8528F53C1896A2 /* LKS_CustomAttrGroupsMaker.m */, + 1EFF4D34DD5391DCE7D206B11306BCE5 /* LKS_CustomAttrModificationHandler.h */, + D00729EFDA62359B2F2AA1EF43FADFD9 /* LKS_CustomAttrModificationHandler.m */, + A0925E96742E33F78D548F10A7C0475D /* LKS_CustomAttrSetterManager.h */, + F363F53534ED7FE5A4BB0A1E1863D5E7 /* LKS_CustomAttrSetterManager.m */, + 98935AEC9F6608D5CCBFEF667B9F658A /* LKS_CustomDisplayItemsMaker.h */, + C19EBB7B5E5A5B4CB83F93B794EA02A1 /* LKS_CustomDisplayItemsMaker.m */, + 51AB8F5FA4517AC80D7763B2894462EB /* LKS_EventHandlerMaker.h */, + CD6BC672271DF551FD22D8BABC528CA6 /* LKS_EventHandlerMaker.m */, + 9C47102257C212ED978684D39466579B /* LKS_ExportManager.h */, + 207535A186296DE018201ED1B7DDD076 /* LKS_ExportManager.m */, + AA7E9357D1D22FB737AEE89305734112 /* LKS_GestureTargetActionsSearcher.h */, + C81473AB6162F68681F317D8EC207A4C /* LKS_GestureTargetActionsSearcher.m */, + 3CA454A209E71894BC9366B10B95D086 /* LKS_Helper.h */, + 4D2B4D757199E020DE43661B60EB2819 /* LKS_Helper.m */, + FEA159570B75D1C95DC0E0B5836BACFF /* LKS_HierarchyDetailsHandler.h */, + 0719BBC5095E9B709A7485C347010514 /* LKS_HierarchyDetailsHandler.m */, + F1FB9919B7B8171A6A8679BDDA407F68 /* LKS_HierarchyDisplayItemsMaker.h */, + 00B27A1456536538B2E7220C71AA3F4F /* LKS_HierarchyDisplayItemsMaker.m */, + 8B8796E86BD11BC29D00EED72E50AE91 /* LKS_InbuiltAttrModificationHandler.h */, + A1DAAC915F745C515E0BF4D613B5CB1C /* LKS_InbuiltAttrModificationHandler.m */, + EDA0AA2D50C091E5400CDFDEC4B5B802 /* LKS_MultiplatformAdapter.h */, + 957B3209BD81CDA1C8049B3245F6946E /* LKS_MultiplatformAdapter.m */, + DBFA6FCFCE1CB3F169BDBDCE936950B5 /* LKS_ObjectRegistry.h */, + CB5214881D82D6C122FB4D3B471F9D93 /* LKS_ObjectRegistry.m */, + AFBA747DBA20D4BACF78CA8DE98ADF94 /* LKS_RequestHandler.h */, + DF017A36F518C19E10298190FD8A84C4 /* LKS_RequestHandler.m */, + 52AF8374431A1EA8420BA1E29139131E /* LKS_TraceManager.h */, + C7F42FC60A06A5673FA7DE53298188E2 /* LKS_TraceManager.m */, + A4CFB2BE169777F50B29077639FCFEC4 /* LKSConfigManager.h */, + 32E665F5EEABCF137D52CE4A3889C9F0 /* LKSConfigManager.m */, + 07C3DB4C7661755654D296A929BE2CE7 /* Lookin_PTChannel.h */, + 862D8BDF52FBE8FCF3A562F5A62C802E /* Lookin_PTChannel.m */, + 8B523AAA92DB90BD5B95092AF6B85BFB /* Lookin_PTPrivate.h */, + 3E05D85B85A84A7D628539AD042EC841 /* Lookin_PTProtocol.h */, + 4B6F5F5F32C55F6B9F4E87EC57A0A074 /* Lookin_PTProtocol.m */, + 210B700E8324769F741C26126E6B1F4A /* Lookin_PTUSBHub.h */, + B1850D4E22F95780586FA04DA695C24C /* Lookin_PTUSBHub.m */, + 3D8A828331C79742A41F54C2050C90A8 /* LookinAppInfo.h */, + DF85367F662269F3652AFC693AA2B00F /* LookinAppInfo.m */, + 903EBE6439B30182644FFF066DE11129 /* LookinAttribute.h */, + B267D6EC269C7ADF7A4202363528E8C2 /* LookinAttribute.m */, + B915A35174E3017D6DC61C0A3E31050E /* LookinAttributeModification.h */, + 39592D3DD29808CC34F5BDE8FFAD64E6 /* LookinAttributeModification.m */, + E6FEAED2BC2A577A78A12FA14FC3BB6B /* LookinAttributesGroup.h */, + D0B1EDD790AB62D80A6CA23D5272938B /* LookinAttributesGroup.m */, + CAE21A3C562355122DA705E505CCA673 /* LookinAttributesSection.h */, + 4F8D39C76EB84B28054B453882C78E41 /* LookinAttributesSection.m */, + F32705CBE56ACF430653A1C459F5351E /* LookinAttrIdentifiers.h */, + 9D4F497397BEDE35BC05F6C2B6D33577 /* LookinAttrIdentifiers.m */, + C9E1D6C567F43B4A9410AC83170573DE /* LookinAttrType.h */, + 97DE751E0ED3939932D72FB39C5A934A /* LookinAutoLayoutConstraint.h */, + 38F21B02ED02115E613C152CE563BD5A /* LookinAutoLayoutConstraint.m */, + 99712B41FFAFC24C5F649A94D8DD7FFE /* LookinCodingValueType.h */, + 10DBEAC7DAAC95D5A947ACA061058C0B /* LookinConnectionAttachment.h */, + 9C75F181A3E07F7E7B4B017B48488393 /* LookinConnectionAttachment.m */, + D9BB987ADE61FFDF3C240961F2EB4DDB /* LookinConnectionResponseAttachment.h */, + B2B7D0FDFC6ECF60B59728E60160431B /* LookinConnectionResponseAttachment.m */, + F5B865CFCA1FF1600CB766B9BC34B8D9 /* LookinCustomAttrModification.h */, + 7E445C787AA09C1E3A771E4C7DBCE2CA /* LookinCustomAttrModification.m */, + 3DDFB85C3FF1851267A20FACB64B4497 /* LookinCustomDisplayItemInfo.h */, + 44B0B0F109E74E6F92B6497967BCE536 /* LookinCustomDisplayItemInfo.m */, + 6AB6F2617132C99A6B5CB953305CCA89 /* LookinDashboardBlueprint.h */, + 73A2C1D7BD2A650246BEE1A00F6D836C /* LookinDashboardBlueprint.m */, + 7DD55E3EFF5073BEBD483D293C40A0D6 /* LookinDefines.h */, + 6EE8AE5699FC4ACD4283D4626ACDF742 /* LookinDisplayItem.h */, + AE19AE8E2478EF2E39C49272A1998EFE /* LookinDisplayItem.m */, + 407D327724ADF96791DFD9B922AA254A /* LookinDisplayItemDetail.h */, + 15D6A20A536D39FB4F4DE78CEC3512CE /* LookinDisplayItemDetail.m */, + 05EE9449F14265ADB3100E60632AB642 /* LookinEventHandler.h */, + D4CFF1EB3CBDD5217E39DD58BD101359 /* LookinEventHandler.m */, + FDCCFFDED68135F2816CA2167E15CF64 /* LookinHierarchyFile.h */, + 3A1C13D0C9F5E8ED93D0398C379507C1 /* LookinHierarchyFile.m */, + 26469EA2BF7F49FCDA80695277950B2B /* LookinHierarchyInfo.h */, + F4F901625B3879AD34FA2A0373208F59 /* LookinHierarchyInfo.m */, + 00C9A4038FA1CE3381055E02DAAEC90E /* LookinIvarTrace.h */, + 6148399DD529311A930CEF2A2AC2FBD4 /* LookinIvarTrace.m */, + 371A20C759D3E78183B0BC7EA626FA2D /* LookinObject.h */, + CFC8ED8D34DD2679124911EB0F515607 /* LookinObject.m */, + E23048DA7D038B179D12173BA0F800DB /* LookinServer.h */, + EB54379A72A5DCC64A2C9D42F05AE928 /* LookinServerDefines.h */, + 09799A44FC43F3184E20B590CC73FFC7 /* LookinStaticAsyncUpdateTask.h */, + FCBD8DFA94436F5E62F1AA0F1AD2F2FA /* LookinStaticAsyncUpdateTask.m */, + 17A16F153D08C8BBF15070C730EC0C3A /* LookinTuple.h */, + B5157027D16B7E61C1D5AB091D10458E /* LookinTuple.m */, + B0922492568B0DD6D1F92C0E3B3A53A1 /* LookinWeakContainer.h */, + 60F9066C601EE11D24D22C170F05AF13 /* LookinWeakContainer.m */, + 852A42FAC0EA5F64033033841A03891A /* NSArray+Lookin.h */, + 4AAF4EE016C54A7F264F9B8FBB0853C8 /* NSArray+Lookin.m */, + 4A2BDE1ACE119E645C72F92B4CCAECF4 /* NSObject+Lookin.h */, + B6575913AB2C7FDA723D279165349FF6 /* NSObject+Lookin.m */, + 3A9477BE731926B610D9B847EF5B7347 /* NSObject+LookinServer.h */, + A566FD7AC8F85BE1E72F6DF11FEA6338 /* NSObject+LookinServer.m */, + C1D06F4343D9C630BC102E7BCD9CECCF /* NSSet+Lookin.h */, + E312EC8FB74A492C6D5A647700644AC4 /* NSSet+Lookin.m */, + 92670C1E3C13D6C6157E7AFB4347DB17 /* NSString+Lookin.h */, + C9A08CB30EFC3A6CB342354C253BE4D8 /* NSString+Lookin.m */, + 70D52E1253BDF6EF05A1C5C1D46734EA /* Peertalk.h */, + C41AE199679E3EEC03FA1272FE103027 /* UIBlurEffect+LookinServer.h */, + B041D1C998D0894DB89A31049CC1B872 /* UIBlurEffect+LookinServer.m */, + A810CCF3953514350B557ABBEEBE5FF6 /* UIColor+LookinServer.h */, + FED91C88820F2942B3A007C5E5D17ACB /* UIColor+LookinServer.m */, + 60195DBDE404C5ECBC4E710D0F5E50E7 /* UIImage+LookinServer.h */, + 20C453B83E1025092DAD587080018B43 /* UIImage+LookinServer.m */, + 310DC522C0637DDB20D8D38412CB4153 /* UIImageView+LookinServer.h */, + DA0C012CAB8552E7EA8382B0E5D6B738 /* UIImageView+LookinServer.m */, + D5909A44E1AC01893309CADDDBC4E50C /* UILabel+LookinServer.h */, + 6BD526972490CFC41EE7106FF8E272CC /* UILabel+LookinServer.m */, + E847BE3D7FA245C62A989A8A4F90542A /* UITableView+LookinServer.h */, + B77422F87DF00923771B3EF8E6C0A9BF /* UITableView+LookinServer.m */, + 5D2F2FDA20E8BC9884D1E9ED05D83DDF /* UITextField+LookinServer.h */, + C64A52A00F5D8A13BA6BD40D1834BF56 /* UITextField+LookinServer.m */, + FCA4EBF34C88159600AC127D3548346D /* UITextView+LookinServer.h */, + 1D8DC297A0249D2FB0109542F14B89AB /* UITextView+LookinServer.m */, + DC7496C927F9E881D19A203C207B5417 /* UIView+LookinServer.h */, + 76AEEFCD2262D6843C63EB46FD6663BB /* UIView+LookinServer.m */, + 4C7F47A09BE728487DF546FE00CA555E /* UIViewController+LookinServer.h */, + 8A9BFDE06B11541EA7E87336A09C3816 /* UIViewController+LookinServer.m */, + 9ABEB6B0A44AC8BCBC6CB1A8A8A9A0FF /* UIVisualEffectView+LookinServer.h */, + A7DF910F689AA8FEAD1EF63DDDFCB780 /* UIVisualEffectView+LookinServer.m */, + ); + name = Core; + sourceTree = ""; + }; + 831477AC631FF14EDA7861CA75B58087 /* Support Files */ = { + isa = PBXGroup; + children = ( + 0DEA9604C374890EC86557DA00C054E0 /* LookinServer.modulemap */, + 6D00FB0A2824B0B4E8A345D97C52AA3B /* LookinServer-dummy.m */, + 06878A6718B46A5E825D03CB581CD8B2 /* LookinServer-Info.plist */, + 5C847B3748FF7761203F8DDBD028D651 /* LookinServer-prefix.pch */, + 469576EF612EDF18C057B4FB1E423192 /* LookinServer-umbrella.h */, + 7376537428F41B571A3D20FF9175747F /* LookinServer.debug.xcconfig */, + 438B056E0DAE53D40DB4894FF36879AF /* LookinServer.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LookinServer"; + sourceTree = ""; + }; + 83B95F67C4195EA01B02C929A0C06C54 /* Support Files */ = { + isa = PBXGroup; + children = ( + 616DFB551B9EEC8F4D98DBDC3C2543CA /* MJExtension.modulemap */, + 43E163147E40F868F458CD979D77C4E4 /* MJExtension-dummy.m */, + 23B693321C3E2CA46CF401E48AE2795D /* MJExtension-Info.plist */, + 4531FCCC5DE7D00D6F827809F7CD4289 /* MJExtension-prefix.pch */, + 2713EAAF042877733E01E359F3224ABF /* MJExtension-umbrella.h */, + 954035BEFF37A926FB7C25E5508CD25D /* MJExtension.debug.xcconfig */, + 7B582290DB93C466A4DA695035B6DA2E /* MJExtension.release.xcconfig */, + E75295D3FB5952A7B3A8B497D502A68D /* ResourceBundle-MJExtension-MJExtension-Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/MJExtension"; + sourceTree = ""; + }; + 8B3672DA9A8B9E29E7BA1D933AD6F3B2 /* Bugly */ = { + isa = PBXGroup; + children = ( + BD3E878C18624C95338F2E281FA906B8 /* Frameworks */, + C910B48399196A5E00BB083DA443CDA1 /* Support Files */, + ); + name = Bugly; + path = Bugly; + sourceTree = ""; + }; + 9A6094CFD16104AD70583A90D874C249 /* Support Files */ = { + isa = PBXGroup; + children = ( + 2795C0F083BB71E948BE56DAFC73957B /* LSTPopView.modulemap */, + C98FF255A58DDF6F211BD72458B9C3D0 /* LSTPopView-dummy.m */, + F157AC2A50D3773392D42322F67E0EB0 /* LSTPopView-Info.plist */, + DA08E928976E65BC11D71562A0E4FBA2 /* LSTPopView-prefix.pch */, + D7C0280DF79D384D6CBED6E080E02BB8 /* LSTPopView-umbrella.h */, + 163DD1C8E32A767AC162D451FB47DECB /* LSTPopView.debug.xcconfig */, + 6BD04BB450562622E215B33554778CC3 /* LSTPopView.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/LSTPopView"; sourceTree = ""; }; - 6095F5BA99A7BC3EDE17ABB647B490AD /* Support Files */ = { + 9F5BA1D45C5B890529791B582CDD92E6 /* MJExtension */ = { isa = PBXGroup; children = ( - 3415299E0D5D7B9C22E99D16B6F89983 /* MJRefresh.modulemap */, - D58A6363674921528AA6EC052D65C890 /* MJRefresh-dummy.m */, - A237C0F799BD0639307F9DF3E58B71CE /* MJRefresh-Info.plist */, - 7707C9BBD69232F1162D6ACABE70B7ED /* MJRefresh-prefix.pch */, - 7626DD9951DC84318DF6E875CD7A8C20 /* MJRefresh-umbrella.h */, - 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */, - 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */, - D4ECB35518D14625B419D0EC58050171 /* ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist */, + 13AC6B7EC0E45B7BC751451206C8C575 /* MJExtension.h */, + 65CCB6F10EC6B284E771B999975CE0B0 /* MJExtensionConst.h */, + 2D0DE149DDBAC4B5DCFA0C2217970015 /* MJExtensionConst.m */, + 99650956C6DC18187951AE72D50E44A2 /* MJFoundation.h */, + BCF14CEE3203A4E740B9A9FD66CCABA4 /* MJFoundation.m */, + AB379411892DE9D6AC2BA478DD047B45 /* MJProperty.h */, + 9D7E307063029FFE21DDCDC0455FA473 /* MJProperty.m */, + 05A7B005509B15E31ECEED7DFEEB1EDB /* MJPropertyKey.h */, + 57A3558C23C0EFA92D7C80FBF8A6332A /* MJPropertyKey.m */, + A0329494F5B3BBF4A9C54DD83622388B /* MJPropertyType.h */, + 073DE0C455B2CE33A0FBA3C6ECF4F8CF /* MJPropertyType.m */, + DEDA7D852A16AEB2E4133F8138BB40A3 /* NSObject+MJClass.h */, + 6D149C2EB765D348E439D96EC2A80A04 /* NSObject+MJClass.m */, + DD2F0E472487CBFBA5CA4F3C62C1BB0B /* NSObject+MJCoding.h */, + 0249A8711339B6CD1E26258C064677E9 /* NSObject+MJCoding.m */, + 1B41D364B66F85CF33EB15116929CF48 /* NSObject+MJKeyValue.h */, + 0C7575113B17F46DF34D3C118CB31308 /* NSObject+MJKeyValue.m */, + 0C6F8F3E8953AADD74838D4A882F45A1 /* NSObject+MJProperty.h */, + D44C8E719DA4251716FDA4B2519C022D /* NSObject+MJProperty.m */, + 12702606A08588ACD81E031A777BAB70 /* NSString+MJExtension.h */, + 15C39377834B42681C3BF6A5471C5F78 /* NSString+MJExtension.m */, + 102054A1E3292F59C346E38466BC61C8 /* Resources */, + 83B95F67C4195EA01B02C929A0C06C54 /* Support Files */, ); - name = "Support Files"; - path = "../Target Support Files/MJRefresh"; + name = MJExtension; + path = MJExtension; sourceTree = ""; }; - 6DF1AE20DC3ECAE9AA7B19DCCDE41F5C /* Core */ = { + A06A903601EA30E66A3EFB3445AE0486 /* Support Files */ = { isa = PBXGroup; children = ( - 732327FB0ADC252437B580203795D95F /* CALayer+Lookin.h */, - 673B42B9F094B1F5ED808EE1BA26FC30 /* CALayer+Lookin.m */, - 26925632A670841DDFC5067C12B16515 /* CALayer+LookinServer.h */, - E1921A1332A20D950700741950E97126 /* CALayer+LookinServer.m */, - EEB6F4442CB80A88D94B35721714C121 /* Color+Lookin.h */, - F2A8643D9113999359ADC6C79DA48111 /* Color+Lookin.m */, - 17FBA36FB2D4DFAA4437CEE5C69F4BBE /* Image+Lookin.h */, - FB1E7E734FDF6F7CAC668B6BD6A2A014 /* Image+Lookin.m */, - BE10A2A4B13E0F15A962DBEA161DE595 /* LKS_AttrGroupsMaker.h */, - 1C4B5B00D7224F098F6B2FE0962E5086 /* LKS_AttrGroupsMaker.m */, - 9F0B0B2E800350D0E38B61EF43E6CE75 /* LKS_AttrModificationPatchHandler.h */, - 908A8A591A12931E59C177277E1D126D /* LKS_AttrModificationPatchHandler.m */, - 60913F6F25D56976457BFFCFF2C2FADC /* LKS_ConnectionManager.h */, - F1C50876E480E256FAA99FC38F2BC478 /* LKS_ConnectionManager.m */, - 3B2ACD52F18B25CE1FB40A0F1DF81B4A /* LKS_CustomAttrGroupsMaker.h */, - 7CF7F647B9D3AA2FB234C1CC5BB53582 /* LKS_CustomAttrGroupsMaker.m */, - 137E45FE90DEED579DF255BB11ADABF4 /* LKS_CustomAttrModificationHandler.h */, - 29CA4DC7FB25B91EAA2B3847B7BB46A9 /* LKS_CustomAttrModificationHandler.m */, - 38E107BE978505B98A952E3564F532AA /* LKS_CustomAttrSetterManager.h */, - 567674319F769F7E8B80920BBBD444B6 /* LKS_CustomAttrSetterManager.m */, - 230F8C4FD68EA2D95EA48F31DA295CE9 /* LKS_CustomDisplayItemsMaker.h */, - E74AC99A06CC9DE9D81D54044B013F98 /* LKS_CustomDisplayItemsMaker.m */, - E5AA796F8B4298B625A467D39523F40F /* LKS_EventHandlerMaker.h */, - 1C21A04AB85F6948BCB44480387E46C5 /* LKS_EventHandlerMaker.m */, - EB3C413B4ED21D886E50FCBC0761408E /* LKS_ExportManager.h */, - 44ABB514E2C8BB7AA8881283E1F0FE47 /* LKS_ExportManager.m */, - 029DB3501B51C5C14FA8EC0A89559639 /* LKS_GestureTargetActionsSearcher.h */, - BC88BA608872DDF711D78498FD36C1AA /* LKS_GestureTargetActionsSearcher.m */, - FA6406A6E74DC06D367BE38EA6C60243 /* LKS_Helper.h */, - 38A98EA0745C9E839DCFD56B22BF1256 /* LKS_Helper.m */, - 21696AB985A15DE2C63BD9A8CD978F59 /* LKS_HierarchyDetailsHandler.h */, - 6736D1FBB305C05AEAB982F817CD80C1 /* LKS_HierarchyDetailsHandler.m */, - A9B0E721EBB3914236D06250E333F1E9 /* LKS_HierarchyDisplayItemsMaker.h */, - 3D3112C49688EF3F713F0D64A22E6E66 /* LKS_HierarchyDisplayItemsMaker.m */, - 6C2FE2279B0EA1E9F949E0AF58D09E3B /* LKS_InbuiltAttrModificationHandler.h */, - DC0451732A9C9A896EEC15BEC88B3151 /* LKS_InbuiltAttrModificationHandler.m */, - 06BE908D1EBE4269ACB69B26DE9B834E /* LKS_MultiplatformAdapter.h */, - 1FBD8AFE7FA55EAB140791EC34C18CD4 /* LKS_MultiplatformAdapter.m */, - 4A2FC8CB1CFEB2812A4E5E466940232C /* LKS_ObjectRegistry.h */, - 8127266FF8D9AAE89CDF3511D05BB245 /* LKS_ObjectRegistry.m */, - B9D007BE64FBA88DB3F5D92E0EAEDEAD /* LKS_RequestHandler.h */, - 15E765BB9B77EA9AC2800F30D2802C1C /* LKS_RequestHandler.m */, - 1278AB0B776862F23D89B7E8596E3598 /* LKS_TraceManager.h */, - 36457C61634F1414F6DDF4C701ABF567 /* LKS_TraceManager.m */, - D16058E57E3F07CA628E8A17A3B944C1 /* LKSConfigManager.h */, - 17DDB1AC9EC1929E6B6DFC0CFA9D927D /* LKSConfigManager.m */, - 35269DC2485E9AA07A892FDEB96B16C7 /* Lookin_PTChannel.h */, - 69AE4F19374B51CFBF6330CC5F82B32A /* Lookin_PTChannel.m */, - 6DD8CB4B9EF9002F59BC7DE12F17ED7E /* Lookin_PTPrivate.h */, - FB5DC78AEFAB6098819933CF81AAB15B /* Lookin_PTProtocol.h */, - 9545413A1EE5D2E50A21E8D9794A771A /* Lookin_PTProtocol.m */, - 3416384E4A531494C7B12CDD1AEA74A1 /* Lookin_PTUSBHub.h */, - BC38AB7DAEDA3DEEFFAC64BDA7FA3C88 /* Lookin_PTUSBHub.m */, - 908BDA99457974AD8998A674A0C0FB12 /* LookinAppInfo.h */, - CB40236F7A3DB0EECDBA370753BEDDD4 /* LookinAppInfo.m */, - 659E6E588427268237F9F2C40D2F6CBD /* LookinAttribute.h */, - DDDA744A029AF23E45515CE37C056256 /* LookinAttribute.m */, - C9F0D4D92726FF95FE428AA975E93DE2 /* LookinAttributeModification.h */, - 0B35D70EDD8A3E56FE6F0E6934A400CC /* LookinAttributeModification.m */, - 57D32F597DFAC06B9198FA1F48D2995D /* LookinAttributesGroup.h */, - 7E02457FB07FECD161E03C2A1A8B72B3 /* LookinAttributesGroup.m */, - B74F835090D47DFE066B4DAD231882AC /* LookinAttributesSection.h */, - 97428E2E54CAC989DD7A12908613EE16 /* LookinAttributesSection.m */, - 6B857386E2ABDB8C3FD8B5797430DF26 /* LookinAttrIdentifiers.h */, - 41EF7420DD5FC6E4D1134632895868F3 /* LookinAttrIdentifiers.m */, - D7DFD14540146731FB9E466FA1EB81F0 /* LookinAttrType.h */, - 1FFD17C3FF6DE53EF72736C597DF5B82 /* LookinAutoLayoutConstraint.h */, - 5DA1EEEB5386D6FCA6523BE43601C382 /* LookinAutoLayoutConstraint.m */, - F2698AC3972900E338490644A2E03A2A /* LookinCodingValueType.h */, - F3AD144DF03231D478D237DCFC615D36 /* LookinConnectionAttachment.h */, - 595E9691CC1A487C44431E51893A1D01 /* LookinConnectionAttachment.m */, - 989150BD3DA7E7AE5D05E2F37E778A8D /* LookinConnectionResponseAttachment.h */, - 4ED1A3436209E7EBF3356CEC094C7391 /* LookinConnectionResponseAttachment.m */, - 06A633B376D525417B93138405029540 /* LookinCustomAttrModification.h */, - F6CC661C43717D8BBB4405FD037BDC03 /* LookinCustomAttrModification.m */, - CF0E98CA3E42AAC3B854E232BB1AF7FB /* LookinCustomDisplayItemInfo.h */, - 8F0F258366D8ED06A7D9EAD3DFCD004E /* LookinCustomDisplayItemInfo.m */, - 9D31ED01216EF87422BD04709990AFA0 /* LookinDashboardBlueprint.h */, - 2783C33881FB9ED3037D4D66B93FAD7E /* LookinDashboardBlueprint.m */, - AFC299E1B60C8759EA1F35B7A91019A4 /* LookinDefines.h */, - FED61E621A88CB9CE3C421FDEB1106FC /* LookinDisplayItem.h */, - BCE8E065BE01E56E0D55097E36AB8FC2 /* LookinDisplayItem.m */, - 1E7F18004D9337D64F0F606975492DF4 /* LookinDisplayItemDetail.h */, - F90D97C684BADB3FE9796E626B98C43A /* LookinDisplayItemDetail.m */, - E97B2ACE11733D7DD5ECA116979B91D5 /* LookinEventHandler.h */, - 7CAEC579F15CFFDB2E384C98A046EA76 /* LookinEventHandler.m */, - 63000DF25140BBB4F03EDFC289F2B197 /* LookinHierarchyFile.h */, - 16E6E00D729B1498CE18200F50778930 /* LookinHierarchyFile.m */, - A8105D73597438386DADF22233AAD4B3 /* LookinHierarchyInfo.h */, - 0D8B581D78D02F65425434F924BB64B3 /* LookinHierarchyInfo.m */, - 765DBAD68AB5F355FB80870758AFB22C /* LookinIvarTrace.h */, - 89DA873F803BF9043720F615E8BC4CD5 /* LookinIvarTrace.m */, - 0B1D41519ED222707112BD66393CC6B2 /* LookinObject.h */, - 05B3B08A0927761DC2CBA02E9412CD21 /* LookinObject.m */, - 2E80EA469F2079302F38A991886C4B5A /* LookinServer.h */, - D03FDB7D5A636ED3DC51EF05677C546A /* LookinServerDefines.h */, - A7A769F7014A1F30EE6690E054898162 /* LookinStaticAsyncUpdateTask.h */, - EC9D66F9AD565D0A6E6595CFC812165E /* LookinStaticAsyncUpdateTask.m */, - 95EB1D88070F8207A333D4573DA43A15 /* LookinTuple.h */, - 7A60F6547480237BC04A6287158556B4 /* LookinTuple.m */, - 886E6269011F3D0F924F30F32F08508F /* LookinWeakContainer.h */, - 16464E573FCB8AFF2E7DB58E7A507D73 /* LookinWeakContainer.m */, - B937D529B74DB9581A000F395FF3B6F7 /* NSArray+Lookin.h */, - D4BC45247918896A52CA0C54F038B447 /* NSArray+Lookin.m */, - 9FD83B41506E28893BC297C4BDAB1B46 /* NSObject+Lookin.h */, - D52171C8DB630868289299203B4ECD0C /* NSObject+Lookin.m */, - 3B26E1BE3EBF37131688F5656289ACA2 /* NSObject+LookinServer.h */, - C5719A8B6A945982F0856B5A616B379E /* NSObject+LookinServer.m */, - D40E6AE30D19137ABA0A5D046329BCCD /* NSSet+Lookin.h */, - C02B6DB0CED9923894E4B972F8B03882 /* NSSet+Lookin.m */, - 06AB57BB46CC82FE3257276649BAF8EA /* NSString+Lookin.h */, - D9EC522C5B6A10C53A05FE81CED85983 /* NSString+Lookin.m */, - 6FDFBF5B5FE03EAE7CBA31ED300F848E /* Peertalk.h */, - 4BC6F317480167EA6C97C3ED771D57CA /* UIBlurEffect+LookinServer.h */, - 98EB3787337AAE5AD71D422A832D852F /* UIBlurEffect+LookinServer.m */, - 6A34A08E72CC7EE2DEDDC6F48148CD79 /* UIColor+LookinServer.h */, - C626E0F07BD081EBE5955DEA5669BF14 /* UIColor+LookinServer.m */, - DB3CBBCBF7B8B49A86FAC8D0A1741C77 /* UIImage+LookinServer.h */, - E075739451FCFAA914670EB353642C16 /* UIImage+LookinServer.m */, - F45F2EB9AE5E2D5BDC0F9860DB695385 /* UIImageView+LookinServer.h */, - 5C560A21071D707C98AE6CD75AED8BFD /* UIImageView+LookinServer.m */, - 015571B1499F434BC7171DE7EA094577 /* UILabel+LookinServer.h */, - 9E285AA5C9AFC477B5336B5AC2C863D1 /* UILabel+LookinServer.m */, - 40380EFCFB5E34558C193A723D077BE3 /* UITableView+LookinServer.h */, - 95E2C10E638AC6421FE377F88DA72A45 /* UITableView+LookinServer.m */, - 94807C278EC259800EBCD3A346749877 /* UITextField+LookinServer.h */, - 877837A5816B3B110C5B763CCBD0ECFD /* UITextField+LookinServer.m */, - A56B5A6CAF35241FF9D41CAC7DC1D6D2 /* UITextView+LookinServer.h */, - 3791DA4B477B236E8816C08DD01E3B45 /* UITextView+LookinServer.m */, - DC82DAFD220FAA7899CE21078C2C649D /* UIView+LookinServer.h */, - E9CB22320707CAEB4EE4C1DF62EB9E1A /* UIView+LookinServer.m */, - 3753072CB1EE987F4CDC7E86385B9A99 /* UIViewController+LookinServer.h */, - 920CD059C1364A6BD18420074E635F40 /* UIViewController+LookinServer.m */, - D013F3B6606D04CFD12051F02350DB55 /* UIVisualEffectView+LookinServer.h */, - 8CE6BF39C6199FC5B55217046DDE2CDB /* UIVisualEffectView+LookinServer.m */, - ); - name = Core; - sourceTree = ""; - }; - 797CA9CCA9EBB2192EC635FA118D2257 /* Pods */ = { - isa = PBXGroup; - children = ( - F401BC1732EB9D32AE09D69A4179A68F /* AFNetworking */, - 0F19D22A7E286B575974CA8C2AD3F3DF /* Bugly */, - FE875CB7596498A67CF56F73315D2BDD /* DZNEmptyDataSet */, - D44B6A743503D502C7C50E1E40396614 /* FLAnimatedImage */, - 7C33CFE60683D6E5574D89F3B2808B60 /* HWPanModal */, - 2E6A5961188FF65067773B356D98FC06 /* JXCategoryView */, - A2B6865A0533CF3250BDF1CA362E6B54 /* JXPagingView */, - E186B0D6F7241CA024EE1DBD99B15A49 /* LookinServer */, - E603CC254B20E39E7561F9D06E23A39C /* LSTPopView */, - FB21115538DDA6029001E62F3AB59544 /* LSTTimer */, - 8FE7351622DF7632BCAC51C89CCF56EE /* Masonry */, - F3242F712BF128531D3F535A6FD297FA /* MBProgressHUD */, - 412E12540DFA0D72BBEB364F09064325 /* MJExtension */, - 36091ADDE4C749A4350E3A117CAA7398 /* MJRefresh */, - 4EE34BF885F3E77A23F8FE0A5F1EF29E /* SDWebImage */, - ); - name = Pods; - sourceTree = ""; - }; - 7C33CFE60683D6E5574D89F3B2808B60 /* HWPanModal */ = { - isa = PBXGroup; - children = ( - ACC63F439241C64C221C18A8991C569B /* HWBackgroundConfig.h */, - ED71DE4537C6ECADC81696A80C943E64 /* HWBackgroundConfig.m */, - 017032FDD415E1762246EBCDD2228351 /* HWDimmedView.h */, - 6194A35582043CD8893F293567547D72 /* HWDimmedView.m */, - DD3CC2F2CD0FD607BD99AA89E970269A /* HWPageSheetPresentingAnimation.h */, - C947209A5CDFABA11FEBE5D709864961 /* HWPageSheetPresentingAnimation.m */, - DAB0E506E749384DE93170FA1EE1FD3B /* HWPanContainerView.h */, - 2310AA8AAF9A85F5E639409B8AF0F292 /* HWPanContainerView.m */, - 4DE32E1B12FEE2A9EAE1F5A67697D6E8 /* HWPanIndicatorView.h */, - 6EF0D4A56B002AB1528A77EBDA7EC804 /* HWPanIndicatorView.m */, - 6260795D5ABBA18F8EFECC2CEB871872 /* HWPanModal.h */, - 42F934D080B2CC7F2CD859E2B472A585 /* HWPanModalAnimator.h */, - 88D7B291E3BCDB41106F548FA3B84901 /* HWPanModalAnimator.m */, - A87C5BAF6B8038E9EE8A33551A798606 /* HWPanModalContainerView.h */, - 2BB86632EEB3EB44D0413B3A6F7F6875 /* HWPanModalContainerView.m */, - 2CAA34C64434033ACBB7F68A74F4D15B /* HWPanModalContentView.h */, - 77BA4318333FADE07B128DB446EA0F64 /* HWPanModalContentView.m */, - 5731585BDD8DA229201CF537357BCA56 /* HWPanModalHeight.h */, - C8BABB078FC5FF697A3609C777FC51FC /* HWPanModalIndicatorProtocol.h */, - 3DAB18271BAF2DB3E49BCAF049FC4F01 /* HWPanModalInteractiveAnimator.h */, - 0BE68C7303DE07C8DA01573CDDE9003F /* HWPanModalInteractiveAnimator.m */, - 95BD516A8F354C5C9CD65BFD30C9BED7 /* HWPanModalPanGestureDelegate.h */, - 83D5AD11F2E32B53BA1869D6DE812341 /* HWPanModalPresentable.h */, - DAFBC54BDE2AC21397492351C31C587A /* HWPanModalPresentableHandler.h */, - B8E404753BE7BE627A458AE982427654 /* HWPanModalPresentableHandler.m */, - 552D2F14AF7B393E80A67680A66A34D4 /* HWPanModalPresentationAnimator.h */, - 15D78A0355CAA0B846DBC1DAC7B101F4 /* HWPanModalPresentationAnimator.m */, - 195F1795B17C3F026E46BBEF64C1EA67 /* HWPanModalPresentationController.h */, - 94D99E2E2730992302FB9BAA7CCE2A1C /* HWPanModalPresentationController.m */, - 82C5C527FD40FDC2434064E6DE931921 /* HWPanModalPresentationDelegate.h */, - 6749EA453DC312E08B14CE8AFDB79F3C /* HWPanModalPresentationDelegate.m */, - 4B98EB1E5D5490C1C17C90E124262C80 /* HWPanModalPresentationUpdateProtocol.h */, - E8DC9FFB899510CE978017ADFAFE6D87 /* HWPanModalPresenterProtocol.h */, - 039AC3B9A6AA2BDAB5EB71E7A54C1EF5 /* HWPanModalShadow.h */, - 5FD7A1D3C3D9D8E6D3476B7C2093A431 /* HWPanModalShadow.m */, - 5AEB6DDDE2B74ABEB1D68CE037D784DC /* HWPresentingVCAnimatedTransitioning.h */, - B9C3A1374DADDEAE813F69F05F5A2564 /* HWShoppingCartPresentingAnimation.h */, - 62C28B0ACA1E8D749FA6E65D70CFCB2D /* HWShoppingCartPresentingAnimation.m */, - BC5B799F7FC71DC9649AD62AE8B34DC7 /* HWVisualEffectView.h */, - DACDF6DBB7030D05CC43C7DB516265EE /* HWVisualEffectView.m */, - 2E70DDAD553B6A4AC2379D01C3F133EF /* KeyValueObserver.h */, - E1F236D1BF028AEAD75A9FB3C9DCAE0F /* KeyValueObserver.m */, - 22613DFB1026F3E41B141E34C637D600 /* UIScrollView+Helper.h */, - CCA4AAE27B9CAF06CC2B0A3C0A3F0594 /* UIScrollView+Helper.m */, - B63B552A0A52E65141ED8027A3FCCB0D /* UIView+HW_Frame.h */, - B444EEABD213A46C07AC5F1B8D73FBF1 /* UIView+HW_Frame.m */, - 23A344AF55814873B0105902E9FBBB2A /* UIViewController+LayoutHelper.h */, - 76724C714C93839E6993DF68B545F17B /* UIViewController+LayoutHelper.m */, - 9BAC219B4754C1E13B6929143780BE52 /* UIViewController+PanModalDefault.h */, - 3474F65ACB0FE00EF732580936B91D06 /* UIViewController+PanModalDefault.m */, - B46DF40E1300BE3FC009F0D7D5CF5ED0 /* UIViewController+PanModalPresenter.h */, - B05FD8A103E2A06EE08BE59B38FC36B4 /* UIViewController+PanModalPresenter.m */, - 201E2681B892F05C3D7CAFE9E9927D15 /* UIViewController+Presentation.h */, - C806BECAA1C722F04FE4A89D9B14A0E0 /* UIViewController+Presentation.m */, - 2DD7CD81F0AED96859289DDC12B0E9CF /* Support Files */, - ); - name = HWPanModal; - path = HWPanModal; - sourceTree = ""; - }; - 89DEB64DC275ABFAFABFE909ED131FA2 /* Reachability */ = { - isa = PBXGroup; - children = ( - 60461DAD42E3B1F75AD82553A6C40C64 /* AFNetworkReachabilityManager.h */, - 81D1103F43F39D4BF9AE80E76478FA69 /* AFNetworkReachabilityManager.m */, - ); - name = Reachability; - sourceTree = ""; - }; - 8F7F6DF25B41B68A636D15AEFC153E23 /* Serialization */ = { - isa = PBXGroup; - children = ( - DC285A6C8053D7E2AE423BE51B24E8AE /* AFURLRequestSerialization.h */, - 32F3C5B0B7D11631504E27D25E8CB5A2 /* AFURLRequestSerialization.m */, - BBB6E7BC9BF649910D7654B98B396BD4 /* AFURLResponseSerialization.h */, - 9F3CA71777F849F0196634A7AB215BDC /* AFURLResponseSerialization.m */, - ); - name = Serialization; - sourceTree = ""; - }; - 8FE7351622DF7632BCAC51C89CCF56EE /* Masonry */ = { - isa = PBXGroup; - children = ( - F451B2E12A8192978BB7FB1B45BF1E04 /* MASCompositeConstraint.h */, - FD6EC1E4FB3615CE938900B23CEAD0F8 /* MASCompositeConstraint.m */, - ED6F94603AF0AF72D292CADE8ABCEEB3 /* MASConstraint.h */, - 3A94C1FE25186BE811E6EC878BFA019B /* MASConstraint.m */, - 7C2B7AF68C3BEF4AD97A93A90F9EFF44 /* MASConstraint+Private.h */, - 979A3BAC302F65855776332D6027B80C /* MASConstraintMaker.h */, - CDE98EE96840F02E6074E842D456A2E3 /* MASConstraintMaker.m */, - 1D56371580E6496005BC9D35C2C49570 /* MASLayoutConstraint.h */, - EB21E143FD58D712C16E9026FBFFE194 /* MASLayoutConstraint.m */, - 56642F6C221107F2F8D033758EEB482A /* Masonry.h */, - 9E54C32C4CB68C01C57E81C03350F4B2 /* MASUtilities.h */, - 9E18E15D3A7901E5A84136DADC023216 /* MASViewAttribute.h */, - AAF02F3D4DFB903955A463298716DCE2 /* MASViewAttribute.m */, - DEDFC34DB720F4FD92E634E486425845 /* MASViewConstraint.h */, - CF9BCBE90C3B7C448764C897685CB0E3 /* MASViewConstraint.m */, - 6C07CC30774DAAE34D68C477CE151A36 /* NSArray+MASAdditions.h */, - D3CF8B366EB9A41FEDB94035F404215D /* NSArray+MASAdditions.m */, - 3A8DC30D2C209AB66D8E812915E6F319 /* NSArray+MASShorthandAdditions.h */, - A75069F0A291D74DCBF8F50AA213D806 /* NSLayoutConstraint+MASDebugAdditions.h */, - 25A7097BBC72B099A6C5D8BE403878A8 /* NSLayoutConstraint+MASDebugAdditions.m */, - E44ED3A05255119AA352B7DE0C64E994 /* View+MASAdditions.h */, - 903038F34EE93C82A3EF6A1F6BDF857B /* View+MASAdditions.m */, - 4D93DBFF5810549335063D430FB33721 /* View+MASShorthandAdditions.h */, - D48043130F64D218A676B16D2CDA0ED8 /* ViewController+MASAdditions.h */, - 1BABE1F324CED82D14350741682D422B /* ViewController+MASAdditions.m */, - 99E8B32C59458ECDE2883334F4E8B17F /* Support Files */, - ); - name = Masonry; - path = Masonry; - sourceTree = ""; - }; - 95AF65BE191D8A598CB99DF63AF5085C /* Resources */ = { - isa = PBXGroup; - children = ( - 360A9029323DBF687A82BCD2C22F386C /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - sourceTree = ""; - }; - 99E8B32C59458ECDE2883334F4E8B17F /* Support Files */ = { - isa = PBXGroup; - children = ( - D5140E810D9AB3FD3FA724CCDD59D3AD /* Masonry.modulemap */, - 99302CD0854353E1FA9C8EE70F3FCF59 /* Masonry-dummy.m */, - D9922CA9D57AA94D9EE06129264F7958 /* Masonry-Info.plist */, - 819B57A54180667AB9476455F95835CA /* Masonry-prefix.pch */, - A8CBDE62F720E1751DB8B8E4DF3B0E9F /* Masonry-umbrella.h */, - 93A6F66AA21D4921B2C52643DAEF998F /* Masonry.debug.xcconfig */, - 0B0EEEE5F23AC446F4729522F4FC7A73 /* Masonry.release.xcconfig */, + 0A7D8AD4481BE4F0D7389A1662CCA111 /* Masonry.modulemap */, + 07001E763AE097A75E1AFBEB80197373 /* Masonry-dummy.m */, + BD3BC591D3DAF10375616FB7F294F926 /* Masonry-Info.plist */, + BD243AB5EB0FB2763BBC742A8BCF80DD /* Masonry-prefix.pch */, + 128CF11122A7C2009F733361122E39A1 /* Masonry-umbrella.h */, + A603B071469D044FB92322560F131681 /* Masonry.debug.xcconfig */, + 4A4AE7A504C340AE8EE98F70C318D63C /* Masonry.release.xcconfig */, ); name = "Support Files"; path = "../Target Support Files/Masonry"; sourceTree = ""; }; - 9CF605192227F87CF3E8D7EE63BDF0B1 /* Support Files */ = { - isa = PBXGroup; - children = ( - 0210A2376F4634FAF99E871533D6AD1C /* LSTTimer.modulemap */, - C181D8B9B1142624BE8BFFA787AA2854 /* LSTTimer-dummy.m */, - 81C5F42CC1579DEC553C5D34C274FD68 /* LSTTimer-Info.plist */, - C5FD92D35D7D1F18C67D17C9DD534533 /* LSTTimer-prefix.pch */, - 3F5F8D57BABE5A9AD2D0BC75B55D1A52 /* LSTTimer-umbrella.h */, - A76F5B96F548930505FADC6CE9430C2D /* LSTTimer.debug.xcconfig */, - 294754F45B0BF3519369080425B4F2FD /* LSTTimer.release.xcconfig */, - ); - name = "Support Files"; - path = "../Target Support Files/LSTTimer"; - sourceTree = ""; - }; - A1A0EBDEE093FF055ADC1FB66AD4A1B8 /* UIKit */ = { - isa = PBXGroup; - children = ( - F7FE08919F8BE5AACFB3A1E812E57C03 /* AFAutoPurgingImageCache.h */, - 4A984C0F36AC5CCB478D87C1F7E4019D /* AFAutoPurgingImageCache.m */, - FA94CFBBBF3DC429BAF55FD9493336B4 /* AFImageDownloader.h */, - 25A773C46121E6091EEB9AC88DC4E2A2 /* AFImageDownloader.m */, - 7965DB1FD06E64A9C5B34CB6D9909B3A /* AFNetworkActivityIndicatorManager.h */, - A5FC57ACB22E21DCA20F2B582D18A03F /* AFNetworkActivityIndicatorManager.m */, - 81D4FD0C7D7C987D10815371E729DAC0 /* UIActivityIndicatorView+AFNetworking.h */, - FE8EB43019635F8DC34B96037E258505 /* UIActivityIndicatorView+AFNetworking.m */, - A2309A5B4A1B9C14AF7AEDEC1036F76E /* UIButton+AFNetworking.h */, - 5C519E29CD93815AEE0C119E2109F0A2 /* UIButton+AFNetworking.m */, - 8E1682EACA92F366216BAB7320C375AA /* UIImageView+AFNetworking.h */, - 156CBD2266287775279363430A374818 /* UIImageView+AFNetworking.m */, - 4AD6EDFD2A6C9CC51CFC6A4BAA9C72A9 /* UIKit+AFNetworking.h */, - 7446E6EDA4118B08C0D538CAA41C47AA /* UIProgressView+AFNetworking.h */, - E152B4E044E172623798E791ACCC157E /* UIProgressView+AFNetworking.m */, - 4D000260D6BB658E0BB519087E88F883 /* UIRefreshControl+AFNetworking.h */, - BEC06B30EADD5F0931B350F94CD4D15C /* UIRefreshControl+AFNetworking.m */, - 21E66554273E5793F0BC4D1CD5A058CD /* WKWebView+AFNetworking.h */, - D675E9EED90BA5941D43EB2C520A01B8 /* WKWebView+AFNetworking.m */, - ); - name = UIKit; - sourceTree = ""; - }; - A2B6865A0533CF3250BDF1CA362E6B54 /* JXPagingView */ = { - isa = PBXGroup; - children = ( - CA7AF39BD3D9214EBF1CEE7DE0683EE0 /* Pager */, - 52BEEDAD6FE6860B049D64EEC5ED3599 /* Support Files */, - ); - name = JXPagingView; - path = JXPagingView; - sourceTree = ""; - }; A55E2B2247987FBEC60B3A5F75016BFF /* iOS */ = { isa = PBXGroup; children = ( @@ -2728,19 +2694,49 @@ name = iOS; sourceTree = ""; }; - B5D3B16165F3FDCE26DFE706A413FE76 /* Support Files */ = { + A5CE40587B1D0DEFF98742773A62CA50 /* Security */ = { isa = PBXGroup; children = ( - F4D2D27159CC3A8AAABD93291FBA2B48 /* LookinServer.modulemap */, - 5F4DF3FAFAFDE0BEC7606CB8D4C2C98B /* LookinServer-dummy.m */, - 9FEF42DD4D5BC001DB0C88A7EB3DB63B /* LookinServer-Info.plist */, - 5DB99CA546DA98A4F2641B6CD4635589 /* LookinServer-prefix.pch */, - A98C5DE93CCDA0FE6E6A916B05B69DCC /* LookinServer-umbrella.h */, - E654A0C1F961A76933C784134A3D98E4 /* LookinServer.debug.xcconfig */, - B8E77F018E5BE1F8C021ACB0978497F6 /* LookinServer.release.xcconfig */, + 4C354F545C0CC91C4033DC0D648B3819 /* AFSecurityPolicy.h */, + 4883D2BC668CDDE38C319AC414885077 /* AFSecurityPolicy.m */, ); - name = "Support Files"; - path = "../Target Support Files/LookinServer"; + name = Security; + sourceTree = ""; + }; + A989CAE17245D9B811F7FFC909DD86CA /* LYEmptyView */ = { + isa = PBXGroup; + children = ( + B5885DEE0FCB371101A605FDA3D3F35C /* LYEmptyBaseView.h */, + 1D0C4CB17BF463D490AE3400293A0D47 /* LYEmptyBaseView.m */, + 374CEB5E4CAC5B1889E4B3A57B47546E /* LYEmptyView.h */, + 39267406AD82F75ABB872A20BE14F010 /* LYEmptyView.m */, + FA5C6E28985540EE03804DDC4277D459 /* LYEmptyViewHeader.h */, + 7A5F8A5650078BFF9587944F0042AE79 /* UIView+Empty.h */, + A34A186C33DB71F8C4ACB6E0705472D0 /* UIView+Empty.m */, + 0CA8B3EFCD9E73829676C70CE3E88BE0 /* UIView+LYExtension.h */, + 0B4EEA7B77703F45AB157AC651CEF4EA /* UIView+LYExtension.m */, + 1C6C79318C220E5B8848BEC84F0BF1D4 /* Support Files */, + ); + name = LYEmptyView; + path = LYEmptyView; + sourceTree = ""; + }; + B4640B79F6E1B39F4E2822274BC61D23 /* Pager */ = { + isa = PBXGroup; + children = ( + 57460121EED43E41D624C46A92FE9E08 /* JXPagerListContainerView.h */, + E0742EB318197474CB672E4520705ACC /* JXPagerListContainerView.m */, + 3B250EFB659FBBBBA5D680859085344D /* JXPagerListRefreshView.h */, + 659E098AEC86E789470E344EB23EC1DD /* JXPagerListRefreshView.m */, + D564B14F434E85E8016FF192E33548A8 /* JXPagerMainTableView.h */, + 9C2DAB09AC8F3AD6E82FDC5DB2562CB4 /* JXPagerMainTableView.m */, + 7B167FA26CB7B8DC98E1A68B1B44BA8A /* JXPagerSmoothView.h */, + CF46C0579CB3C54966C0F025487DB215 /* JXPagerSmoothView.m */, + 8310CCDF3085A9EE32455CB865148664 /* JXPagerView.h */, + 044A47D1E36901CA79D51CC72EA995C9 /* JXPagerView.m */, + F671FF7CE184FC6A84ADEF036DEA2F7D /* Resources */, + ); + name = Pager; sourceTree = ""; }; B94D7768568A9992200DB461E8CF687F /* Frameworks */ = { @@ -2751,38 +2747,37 @@ name = Frameworks; sourceTree = ""; }; - C79383FD5154699A5CFAA9706E39AF6C /* Support Files */ = { + BD3E878C18624C95338F2E281FA906B8 /* Frameworks */ = { isa = PBXGroup; children = ( - 231F7AC591603501EC449D697A5C6668 /* JXCategoryView.modulemap */, - CBA389E7DB380F4012EFBD733C81D43A /* JXCategoryView-dummy.m */, - 4AA7B1CA514C2D6FAA50ACF865AF4203 /* JXCategoryView-Info.plist */, - C371FCAC7DF4BD1C57C3D164BD5A8759 /* JXCategoryView-prefix.pch */, - 84C7B13561A207799480933E11856D99 /* JXCategoryView-umbrella.h */, - D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */, - 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */, - 3E8FEF4AED255508CB8E745D200EDE89 /* ResourceBundle-JXCategoryView-JXCategoryView-Info.plist */, + 634119E1E65F912498A262851F72517B /* Bugly.framework */, ); - name = "Support Files"; - path = "../Target Support Files/JXCategoryView"; + name = Frameworks; sourceTree = ""; }; - CA7AF39BD3D9214EBF1CEE7DE0683EE0 /* Pager */ = { + C910B48399196A5E00BB083DA443CDA1 /* Support Files */ = { isa = PBXGroup; children = ( - CF85D3EF505C17C565E691AC344CCE5C /* JXPagerListContainerView.h */, - 3BC6BE1672FC4A4AA70F4CBD7E23C808 /* JXPagerListContainerView.m */, - 359AD735B8CFD982730F6CEB0F56A487 /* JXPagerListRefreshView.h */, - 603287955CE071E6EBDC96A98AB97750 /* JXPagerListRefreshView.m */, - 8087FD233990CE787D9977700977D0B8 /* JXPagerMainTableView.h */, - 119B8F0EF70910D693FCCA816529E357 /* JXPagerMainTableView.m */, - 3A2E4F46AFE1B8413F8C1C81323B5831 /* JXPagerSmoothView.h */, - 7F178706A5ED2B8C0CCCEA56CC4A04B6 /* JXPagerSmoothView.m */, - D3F906D47799FB7ED8D4AA1C036BF3BC /* JXPagerView.h */, - D31BFB25B2F3620735E09AC6DE1CBFE3 /* JXPagerView.m */, - 95AF65BE191D8A598CB99DF63AF5085C /* Resources */, + 3DF983F1377AD739C3DF33AE51632FCF /* Bugly.debug.xcconfig */, + 0AD4477B34BC6EAF1A362183974F34DC /* Bugly.release.xcconfig */, ); - name = Pager; + name = "Support Files"; + path = "../Target Support Files/Bugly"; + sourceTree = ""; + }; + CABD2BCBA14C84A63E7608CED87846A3 /* Support Files */ = { + isa = PBXGroup; + children = ( + B6ED434773EE7ECEDAB93E7A62107F73 /* FLAnimatedImage.modulemap */, + 2CCD2F6CD21BCE8D4DC6CE0FB91B91CB /* FLAnimatedImage-dummy.m */, + 64D49E5BC4A3E2ECFAA63B66E38A6F8D /* FLAnimatedImage-Info.plist */, + 353BBBDE951248D62CFDF267ACFAD0A7 /* FLAnimatedImage-prefix.pch */, + 7FAB126742756E8C628ED27AEC1B9567 /* FLAnimatedImage-umbrella.h */, + 2CB55990BE7673BB5930FB77BB2A2C33 /* FLAnimatedImage.debug.xcconfig */, + D5BBA19EC013D7414BE28B29DCA7518D /* FLAnimatedImage.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/FLAnimatedImage"; sourceTree = ""; }; CF1408CF629C7361332E53B88F7BD30C = { @@ -2790,99 +2785,214 @@ children = ( 9D940727FF8FB9C785EB98E56350EF41 /* Podfile */, B94D7768568A9992200DB461E8CF687F /* Frameworks */, - 797CA9CCA9EBB2192EC635FA118D2257 /* Pods */, - 1CD312D2E666224315BB46AF04231D5D /* Products */, + E3282B046A353048174B1E513DFF9A4E /* Pods */, + D3828787C1DCC6E76B71C947B6C876AE /* Products */, F7ED90CD818DD0484BF7DB0E1E3B9AB2 /* Targets Support Files */, ); sourceTree = ""; }; - D44B6A743503D502C7C50E1E40396614 /* FLAnimatedImage */ = { + D3828787C1DCC6E76B71C947B6C876AE /* Products */ = { isa = PBXGroup; children = ( - 761A654F557EA15B24079623AF9184F9 /* FLAnimatedImage.h */, - CE3837EC7E52B2C2855416D01CB974C7 /* FLAnimatedImage.m */, - BD89A8E0323AB57CE283C150C3D4C556 /* FLAnimatedImageView.h */, - B4121F7B04BCCD0FB01ED16A27F6E571 /* FLAnimatedImageView.m */, - 119FAC4028DEE3EECB43C1CA751847B8 /* Support Files */, + A4FA15D44DF6BAC7550EDEED10862AA3 /* AFNetworking */, + 5DA4577FE3BC4A03751108FFED07B385 /* DZNEmptyDataSet */, + FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */, + 7819923046C4F6B199F8D45E9F7BA6B0 /* HWPanModal */, + C3A46B03C308EEEB11F2A62BA5D2E8BE /* JXCategoryView */, + BB4F011171FCB76B1AEBE390F843E930 /* JXCategoryView-JXCategoryView */, + 2F4A1CCB21DB7EA5A2ACEB11E374FBCA /* JXPagingView */, + E03F152E95B6924D2486511337D24503 /* JXPagingView-JXPagerView */, + 25664483ABF4DC8EC03E7472AA04333B /* LookinServer */, + 399102B94B534EB49EE0E5512D150CA8 /* LSTPopView */, + DE19C7D984CBC535E4768F5543458A1E /* LSTTimer */, + EEB5224BF1CABA409B3D3760EDDAEA0A /* LYEmptyView */, + 1FFED36A657123030ABB700256D73F15 /* Masonry */, + 8B8FAB0D627B17EDE1366984278705D9 /* MBProgressHUD */, + 2B276B0A79173A1D6E83C9B4FB9A4A57 /* MJExtension */, + 43EAAD2AB7E6B407E80E95F643F93D22 /* MJExtension-MJExtension */, + E49D6D248DD1CEE584E6776B9164A1B2 /* MJRefresh */, + 7E3097CFEFDA621E9FB0E62009FF87FC /* MJRefresh-MJRefresh.Privacy */, + 0B4AAC15A428CDC2A62AF9CC27BEA609 /* Pods-CustomKeyboard */, + DCA062FD08AC9694D8D781B3492421C5 /* Pods-keyBoard */, + B0B214D775196BA7CA8E17E53048A493 /* SDWebImage */, + CF1281E58AA1045D4B7F33FC56691C42 /* SDWebImage-SDWebImage */, ); - name = FLAnimatedImage; - path = FLAnimatedImage; + name = Products; sourceTree = ""; }; - E186B0D6F7241CA024EE1DBD99B15A49 /* LookinServer */ = { + D453386A36746D9803EFAF894ED288F7 /* SDWebImage */ = { isa = PBXGroup; children = ( - 6DF1AE20DC3ECAE9AA7B19DCCDE41F5C /* Core */, - B5D3B16165F3FDCE26DFE706A413FE76 /* Support Files */, + 2F8EF5B81FDAABB39353996747C04D04 /* Core */, + 8082051853063B4647901F5178837B33 /* Support Files */, ); - name = LookinServer; - path = LookinServer; + name = SDWebImage; + path = SDWebImage; sourceTree = ""; }; - E603CC254B20E39E7561F9D06E23A39C /* LSTPopView */ = { + DB5A3B2FEE3BD7A679B91E83BA32906B /* Support Files */ = { isa = PBXGroup; children = ( - 24E6D9CD604967D0A1CF25370DFD7865 /* Code */, - 5BDD879F155F843CED343AAC8812F0D6 /* Support Files */, - ); - name = LSTPopView; - path = LSTPopView; - sourceTree = ""; - }; - EBAE2342A272E945D29705DB9B28137D /* Support Files */ = { - isa = PBXGroup; - children = ( - E032CFFEFE6D0B2BC568E604265CD74C /* DZNEmptyDataSet.modulemap */, - FFFC6DDC16F58E87A8A30CA92223320F /* DZNEmptyDataSet-dummy.m */, - FDF2879588F648F9ACE28CEDF3C4F456 /* DZNEmptyDataSet-Info.plist */, - 71D68B7747CE473E42AF5D55F07BB002 /* DZNEmptyDataSet-prefix.pch */, - A05508640C7796358B45E0B5C0C73183 /* DZNEmptyDataSet-umbrella.h */, - 6315771A902975A20B41342DD5234115 /* DZNEmptyDataSet.debug.xcconfig */, - 7755C313C99E29481B2A9849C31152BE /* DZNEmptyDataSet.release.xcconfig */, + 56F54F2E70EF1B4C4CD6CC49471EBF8F /* JXPagingView.modulemap */, + 10AACE3BDEFABB8B9E709942B03E5595 /* JXPagingView-dummy.m */, + F762DC35806D05FE8346CE64A0357D9A /* JXPagingView-Info.plist */, + A9BB84448AE1154A6E3D359329D6E5D8 /* JXPagingView-prefix.pch */, + B4319C3394898C8897D6580DAC5A5124 /* JXPagingView-umbrella.h */, + 39D7BCC784A30383722D127896FE591E /* JXPagingView.debug.xcconfig */, + D3FD4542A2D174FC95524833AB672073 /* JXPagingView.release.xcconfig */, + 2F04E40EC66FE8A57ECA4BC540959E1D /* ResourceBundle-JXPagerView-JXPagingView-Info.plist */, ); name = "Support Files"; - path = "../Target Support Files/DZNEmptyDataSet"; + path = "../Target Support Files/JXPagingView"; sourceTree = ""; }; - F3242F712BF128531D3F535A6FD297FA /* MBProgressHUD */ = { + E3282B046A353048174B1E513DFF9A4E /* Pods */ = { isa = PBXGroup; children = ( - A98C848E174628ED3A950CA220B4CB9A /* MBProgressHUD.h */, - DB3619AB8798CD8CAE31E140F80F2DC0 /* MBProgressHUD.m */, - 4B2DDDE1A44400085093EA342624D230 /* Support Files */, + F50E68E76DBF5D25ABBDA080A797818B /* AFNetworking */, + 8B3672DA9A8B9E29E7BA1D933AD6F3B2 /* Bugly */, + 619A9868F13BC15F5FC65525C1D9E2CF /* DZNEmptyDataSet */, + 7DD842DFF9E829253FACA707DA5ADAAB /* FLAnimatedImage */, + 276C8F966392FC7A9273EA1CF3239640 /* HWPanModal */, + 4C9B1F2E52EB330FD3C540E9E187C896 /* JXCategoryView */, + 4D01249FF2A98F37C991C38E6B67067C /* JXPagingView */, + 5FEA21AFA94BB3973C15EEFD1CA50FFA /* LookinServer */, + 070A9E270BA37B1A5AAC97680E006F46 /* LSTPopView */, + 288FC03C5D2C78A45B56AFFEE5C2C9F7 /* LSTTimer */, + A989CAE17245D9B811F7FFC909DD86CA /* LYEmptyView */, + EE105AE032C43766E8A0D667D3647744 /* Masonry */, + 2397706FC09C7D8BAD347D387C455173 /* MBProgressHUD */, + 9F5BA1D45C5B890529791B582CDD92E6 /* MJExtension */, + 23E095E4ABDFCF286D5B6E1FB3668170 /* MJRefresh */, + D453386A36746D9803EFAF894ED288F7 /* SDWebImage */, ); - name = MBProgressHUD; - path = MBProgressHUD; + name = Pods; sourceTree = ""; }; - F401BC1732EB9D32AE09D69A4179A68F /* AFNetworking */ = { + E56FC4F1AC3134805F24F088D231587A /* UIKit */ = { isa = PBXGroup; children = ( - 3B56A01456E5166288620482B2A2180C /* AFNetworking.h */, - 0A1A9864A60D31E01F2EAB72403B1E95 /* NSURLSession */, - 89DEB64DC275ABFAFABFE909ED131FA2 /* Reachability */, - 0727E8966E92BA27516AA23EF6747FF6 /* Security */, - 8F7F6DF25B41B68A636D15AEFC153E23 /* Serialization */, - F7991E885F1A08F44C8372D9EB91EF60 /* Support Files */, - A1A0EBDEE093FF055ADC1FB66AD4A1B8 /* UIKit */, + C3DBF2503619D6F278D203DBF5D29B4E /* AFAutoPurgingImageCache.h */, + ED87146FC94850F3891F867B1931F652 /* AFAutoPurgingImageCache.m */, + 36CBA5AB35EE7DE7B4A5CDBAC4BE20A8 /* AFImageDownloader.h */, + 41B61F60FDADCD1988F2A5F1B93F6FB0 /* AFImageDownloader.m */, + A198AAC0BC41558B9FC61F89E90D900F /* AFNetworkActivityIndicatorManager.h */, + 6516BB90D0CA47F75712B356350A9FC1 /* AFNetworkActivityIndicatorManager.m */, + DCB771163568003A2EA8F4B1A606B9ED /* UIActivityIndicatorView+AFNetworking.h */, + BF141C03BAA67847DFB6B6DFF0D1CBFC /* UIActivityIndicatorView+AFNetworking.m */, + D7F6132E07FDE40130D6C51920456A21 /* UIButton+AFNetworking.h */, + BF0EE7E880EA65C279154531EF91F5E8 /* UIButton+AFNetworking.m */, + ED332DDCE634104C42A2AF8F698EDFB2 /* UIImageView+AFNetworking.h */, + B628043D13CE1145E17714D58AB2A687 /* UIImageView+AFNetworking.m */, + CBB2B3782C3C4626F075A8900436D09D /* UIKit+AFNetworking.h */, + EB461C49F04DBE8D8B709BDAA4911ADC /* UIProgressView+AFNetworking.h */, + 5B758502F7753329D591359BA2747831 /* UIProgressView+AFNetworking.m */, + 48A816CF0BA23EA39A514E31ED98C5D3 /* UIRefreshControl+AFNetworking.h */, + 80E9CB1F62E65A837FF5E47B2FC3ECA1 /* UIRefreshControl+AFNetworking.m */, + B052BF123A39C5CF4B531584A2A83BED /* WKWebView+AFNetworking.h */, + A1C4717F035C7128013EA7E000DAC18A /* WKWebView+AFNetworking.m */, + ); + name = UIKit; + sourceTree = ""; + }; + EC737F9C95A0D5999B811C9A1D937DBC /* Code */ = { + isa = PBXGroup; + children = ( + DB7D4CE7BA063A9CA415CD86C8825985 /* LSTPopView.h */, + 633C3F66E9BA0FD7538C55D5287ED77E /* LSTPopView.m */, + 7D7595F0F8BE4F40C64D68F0D491C6C6 /* LSTPopViewProtocol.h */, + 6757029D58C1BFD772BCC87D14A52E39 /* UIView+LSTPV.h */, + 1B1E80842E43848FFB0F162AFF96E774 /* UIView+LSTPV.m */, + ); + name = Code; + sourceTree = ""; + }; + EDCE25045C1BBF6ECB7211723055D0DB /* Support Files */ = { + isa = PBXGroup; + children = ( + 6331F4B8E0F66A8F7B8028B33CF71268 /* LSTTimer.modulemap */, + A3211D6272FC8FFC9717C01969D328F7 /* LSTTimer-dummy.m */, + B74E719F2E64B3E186B6F4B672482329 /* LSTTimer-Info.plist */, + 7D6E9AC32A60E19ACB08AED4E4CD31A3 /* LSTTimer-prefix.pch */, + 88F65BAED091224357C1ABFEA1C484FA /* LSTTimer-umbrella.h */, + 6CE98E2FC8B92A0E98F20755C88122A4 /* LSTTimer.debug.xcconfig */, + 73EBDE260791BF4440027F8601391D8B /* LSTTimer.release.xcconfig */, + ); + name = "Support Files"; + path = "../Target Support Files/LSTTimer"; + sourceTree = ""; + }; + EE105AE032C43766E8A0D667D3647744 /* Masonry */ = { + isa = PBXGroup; + children = ( + AE4CC2528765A45B472AD5B813D01119 /* MASCompositeConstraint.h */, + 70CD4567ACE296214EA982091E2B8F90 /* MASCompositeConstraint.m */, + FD61DA71A7253ED59D65D424C86E2C50 /* MASConstraint.h */, + 23B6D3BC0C4291E4CB154E7F35862BCB /* MASConstraint.m */, + AC368BF52013B3AE323DC35D782A044B /* MASConstraint+Private.h */, + 404BBFC3B5A2ADAEF4E188881B357111 /* MASConstraintMaker.h */, + 673C80521DE4F20FDE3E9A82E6EBEC53 /* MASConstraintMaker.m */, + 2A98EB9CE425ECC87D9747E4EAC3DB0C /* MASLayoutConstraint.h */, + 7DEDD90DB6CF7DD05B6B753765E65AAD /* MASLayoutConstraint.m */, + 1E2CD23DF8D29ECCE7278412B1BFFFA2 /* Masonry.h */, + 1BFABBA210FF6BEF09CABCCBE8AE590F /* MASUtilities.h */, + 7083FA062632CC52050FC4EB53D64E3A /* MASViewAttribute.h */, + B9CA9F01554205BFBACCA553143C8676 /* MASViewAttribute.m */, + 6EB329DC3D8A252CA69C19DAF330A784 /* MASViewConstraint.h */, + 0CE35A6903D3E473ACA2703E7286A28E /* MASViewConstraint.m */, + 05FF40C91ADEB302CBF4314535A1A6E7 /* NSArray+MASAdditions.h */, + 3E34DAE4904CE87FBB70688EA36DF9D3 /* NSArray+MASAdditions.m */, + 986324EA3CC9A3BDF0E5C7B1763862EE /* NSArray+MASShorthandAdditions.h */, + BE9E061AE26F933A7BBEFF3D94E9B32D /* NSLayoutConstraint+MASDebugAdditions.h */, + D8B8A062E76BF87D54F581F6428D4E28 /* NSLayoutConstraint+MASDebugAdditions.m */, + 8B8AB8065F8811289957B59E9EBA6B47 /* View+MASAdditions.h */, + 1069EA3A85D1A1A87FE087B0FE402436 /* View+MASAdditions.m */, + EBEEA0239556FEF194877FD307A4ADD6 /* View+MASShorthandAdditions.h */, + FED4C87CAD14B9336A225C943B75263C /* ViewController+MASAdditions.h */, + DB1B5D6DA097974C176F91F3853055EC /* ViewController+MASAdditions.m */, + A06A903601EA30E66A3EFB3445AE0486 /* Support Files */, + ); + name = Masonry; + path = Masonry; + sourceTree = ""; + }; + F4552932065591EFBCEA1E5854647226 /* Support Files */ = { + isa = PBXGroup; + children = ( + 526BF014AFB62CD2E2E5312B573388BC /* JXCategoryView.modulemap */, + D98B4BEA4820634A8F01172731FF97B7 /* JXCategoryView-dummy.m */, + A01B197EE310DCCE265AA065FA12EF38 /* JXCategoryView-Info.plist */, + F09D5DAEE3CD3FFE1B213DFEF893E818 /* JXCategoryView-prefix.pch */, + AC3EF9D4544217A0B4E13DA6B530C974 /* JXCategoryView-umbrella.h */, + F68616E55705601CBE5D9437AD83B340 /* JXCategoryView.debug.xcconfig */, + DF80C06856CA889ADB8807594055C7DF /* JXCategoryView.release.xcconfig */, + AAA2247A63D832BDB9097AE7D635F20C /* ResourceBundle-JXCategoryView-JXCategoryView-Info.plist */, + ); + name = "Support Files"; + path = "../Target Support Files/JXCategoryView"; + sourceTree = ""; + }; + F50E68E76DBF5D25ABBDA080A797818B /* AFNetworking */ = { + isa = PBXGroup; + children = ( + 860D7179002683A0368E532B751FC40E /* AFNetworking.h */, + 6D1FBB10825D24E335F04D97066D9C66 /* NSURLSession */, + 579E4939EC6AC009496870BECBDEC208 /* Reachability */, + A5CE40587B1D0DEFF98742773A62CA50 /* Security */, + 3FB59ED98513C1B8FA6DBF40283EB341 /* Serialization */, + 184D0B412C8826DE321973718A83EAD0 /* Support Files */, + E56FC4F1AC3134805F24F088D231587A /* UIKit */, ); name = AFNetworking; path = AFNetworking; sourceTree = ""; }; - F7991E885F1A08F44C8372D9EB91EF60 /* Support Files */ = { + F671FF7CE184FC6A84ADEF036DEA2F7D /* Resources */ = { isa = PBXGroup; children = ( - F549CCE65FFF5AC81AB62FDCCB6CB8DC /* AFNetworking.modulemap */, - 17CD950341D8F0132ADFEDC39B7267A7 /* AFNetworking-dummy.m */, - 709DA7415B508D723EE552B201284026 /* AFNetworking-Info.plist */, - 82F0AA3C9E3854CEA18B30E16DC474FC /* AFNetworking-prefix.pch */, - A1067B051CF7A4C36817E6F668A3E7A6 /* AFNetworking-umbrella.h */, - 8A6F594F279129456C02C7701DE5EDC3 /* AFNetworking.debug.xcconfig */, - A697ED78520252C2C8CA71D13BA57F79 /* AFNetworking.release.xcconfig */, + 7EC4505824D228FB201DC90A544C01B3 /* PrivacyInfo.xcprivacy */, ); - name = "Support Files"; - path = "../Target Support Files/AFNetworking"; + name = Resources; sourceTree = ""; }; F7ED90CD818DD0484BF7DB0E1E3B9AB2 /* Targets Support Files */ = { @@ -2894,50 +3004,19 @@ name = "Targets Support Files"; sourceTree = ""; }; - F897C86CB2866AB045A64520219B6522 /* Resources */ = { + F9D546C8B0F4E1C342B53CD786B328AB /* Support Files */ = { isa = PBXGroup; children = ( - C1227D6957584FA14F5EFE311854C54A /* PrivacyInfo.xcprivacy */, - ); - name = Resources; - sourceTree = ""; - }; - FB21115538DDA6029001E62F3AB59544 /* LSTTimer */ = { - isa = PBXGroup; - children = ( - C4A783F974F95D31DCCDA721D4F965EC /* LSTTimer.h */, - EF426A2B87D32263A2C56A13732C8201 /* LSTTimer.m */, - 9CF605192227F87CF3E8D7EE63BDF0B1 /* Support Files */, - ); - name = LSTTimer; - path = LSTTimer; - sourceTree = ""; - }; - FE875CB7596498A67CF56F73315D2BDD /* DZNEmptyDataSet */ = { - isa = PBXGroup; - children = ( - 797DE6794620B6AD238FF0B8B61A1B32 /* UIScrollView+EmptyDataSet.h */, - 3F77AB571A5252972C84B67134918B5F /* UIScrollView+EmptyDataSet.m */, - EBAE2342A272E945D29705DB9B28137D /* Support Files */, - ); - name = DZNEmptyDataSet; - path = DZNEmptyDataSet; - sourceTree = ""; - }; - FFFE14F5389A574527140C5AC02880B9 /* Support Files */ = { - isa = PBXGroup; - children = ( - 19AE4F199F0E794B9F2956EE4530887A /* MJExtension.modulemap */, - 4D4A62A4549AC17B0296FF7D29E15454 /* MJExtension-dummy.m */, - 6C338AB8936504A929CF0929B7D23C9F /* MJExtension-Info.plist */, - DA5203B4ACDB110F236306ADB5531C98 /* MJExtension-prefix.pch */, - AE09548D63659FAE72F5C6F1EBF230FC /* MJExtension-umbrella.h */, - FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */, - 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */, - 6A2C1D3548C9E3091DE847DA61A18E5B /* ResourceBundle-MJExtension-MJExtension-Info.plist */, + 59720B9654BC9C6EC9F2FF79FB3FEB5A /* HWPanModal.modulemap */, + 0AE235E52EF7BBF7348F9B4CAB71F7D8 /* HWPanModal-dummy.m */, + CDE56910104E914C73DC565FDFEABE34 /* HWPanModal-Info.plist */, + 4F973225F70967D6C01DF18ABCACA3C4 /* HWPanModal-prefix.pch */, + 1EFF4EEBD779C7DB39B6B044205385FA /* HWPanModal-umbrella.h */, + 4201C2CD51C00E5AC0EC45DC41B32695 /* HWPanModal.debug.xcconfig */, + CA665BB1B8AEA701C3C1A72312BFE105 /* HWPanModal.release.xcconfig */, ); name = "Support Files"; - path = "../Target Support Files/MJExtension"; + path = "../Target Support Files/HWPanModal"; sourceTree = ""; }; /* End PBXGroup section */ @@ -2994,6 +3073,27 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 195AA888551D84C490CBCAED7AE25EBE /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 7BC817F176759B34FDC3C9A3BDE900BF /* LYEmptyBaseView.h in Headers */, + EF51279C724969A99FF5EF85F832FC00 /* LYEmptyView.h in Headers */, + F2892F71762EC5410EE733B862712BB3 /* LYEmptyView-umbrella.h in Headers */, + 9C6A760E54D2281BBE39A443C0F78D55 /* LYEmptyViewHeader.h in Headers */, + 1ED0D560CC57BCED931C26E643B2A96A /* UIView+Empty.h in Headers */, + 9F8A77D8902C98115735987BA80BD5C9 /* UIView+LYExtension.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 1BBE9495F3D97388AE8F965FB5CA16AD /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 2C2405D23D1A7428F65C7D740476ABA2 /* Pods-keyBoard-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 22C4F6C2D1258108CF5B6E74F03D0EB2 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3232,23 +3332,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 8DFBCFE77A898FBE83C48772D7F569F9 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 2EEB29D2C570F11620D4CF90D7DFD569 /* Pods-keyBoard-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 920775366A5F97AE256FADDDCDBD9740 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - 060B00D5B019369654AEAB7C116DC119 /* LSTTimer.h in Headers */, - 48EB84614F04E6089393ADDFA4BA8603 /* LSTTimer-umbrella.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 93691E22DE50657D0D08BA5D05234F57 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -3374,6 +3457,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + FFA880310EDC0CF0A2515E0ED18689B0 /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + EC6671997676ABEBC34F2BE6C01266B1 /* LSTTimer.h in Headers */, + CA543D086B4C8E314FB43F0B78147FE9 /* LSTTimer-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; /* End PBXHeadersBuildPhase section */ /* Begin PBXNativeTarget section */ @@ -3397,11 +3489,11 @@ }; 16704C6B67439DA959DB043702C75A7A /* JXPagingView-JXPagerView */ = { isa = PBXNativeTarget; - buildConfigurationList = DDFDCCDD059A0AA2C5DEAA3588DE41A7 /* Build configuration list for PBXNativeTarget "JXPagingView-JXPagerView" */; + buildConfigurationList = 404863FC7F43060AAE7C6FA66F917915 /* Build configuration list for PBXNativeTarget "JXPagingView-JXPagerView" */; buildPhases = ( - 2BCD1AC59060560FEAF74FFFB66F0F9F /* Sources */, - AEC8B8EF401BFAE066232C67738FEB8F /* Frameworks */, - 3A5A6604A2DC218F056C1D04F3DB43CD /* Resources */, + 5E3F655370D8F2DAABC53D59D069B3A1 /* Sources */, + 2D2D1D550E12F4C0C9C30D5A3CD01C4E /* Frameworks */, + 860DF70163CE0C8308216A41597A40DF /* Resources */, ); buildRules = ( ); @@ -3414,31 +3506,32 @@ }; 18BD026D2210082A239FC15D072FD5BF /* Pods-keyBoard */ = { isa = PBXNativeTarget; - buildConfigurationList = 0C35983ABF9DEA95C8B29A7F8482E5AE /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */; + buildConfigurationList = 48C48CA74E925091D509EAE661A5D87D /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */; buildPhases = ( - 8DFBCFE77A898FBE83C48772D7F569F9 /* Headers */, - 6F3E38196FED4BD0677C98E1E0C6C80C /* Sources */, - 96D238A614CBDD553073EEECBB41281C /* Frameworks */, - 0D07E8D675635C881CCB2DF69C6E7629 /* Resources */, + 1BBE9495F3D97388AE8F965FB5CA16AD /* Headers */, + E3AA8B53287F6ACBF2F2800146C6ECD0 /* Sources */, + 2A4C89A05153A8C37E3B9ACF170A9EB8 /* Frameworks */, + 2B9BFC6488F4ABCC9916C35510BB7D7C /* Resources */, ); buildRules = ( ); dependencies = ( - C9B3D25C71255E9DFCE9A741B4BFF3BA /* PBXTargetDependency */, - 3A364CBA383FC741F9B9507BAD524A1F /* PBXTargetDependency */, - BFFE20AC77F2320185030DE7FAF95A94 /* PBXTargetDependency */, - D1DA99819466A8666489AD8ABE8C04A5 /* PBXTargetDependency */, - B48CA5483F83ECB025E2CF88895F910F /* PBXTargetDependency */, - E3CE26F82AC9FA20A1C696AD05CBE607 /* PBXTargetDependency */, - 3B95059A3ABF817D0636F90C4FE24A57 /* PBXTargetDependency */, - 5B8D2BAFD03C6848DC5CAC776971023C /* PBXTargetDependency */, - A036241AE2FD9088F99D8A60AFCD1514 /* PBXTargetDependency */, - 3A33DC80646EE1FEC3F5A81D6D88094E /* PBXTargetDependency */, - 7986360E8EC5F57AE4012FDDB8A6D701 /* PBXTargetDependency */, - 67D06D25CF9C7EFF394097D2AFFD9DF9 /* PBXTargetDependency */, - 75023E301D2D56786B69F7BD1B998E06 /* PBXTargetDependency */, - 004C87AF28627224BAF0F49A32B4B934 /* PBXTargetDependency */, - A8CFE4713F435C9FF4AA9FA8D460F3A7 /* PBXTargetDependency */, + D431884F2F2835EF4FDB44219ADAA88B /* PBXTargetDependency */, + 3067995C8EDFEF1A63CA85F6D091AD0B /* PBXTargetDependency */, + E7B53C78EB3FA9751B3C978B6CB97980 /* PBXTargetDependency */, + D6DB70831F359F7235B8C97A50300DDF /* PBXTargetDependency */, + C0EEAAE6B64FC5B6DFCE16644E06B2CA /* PBXTargetDependency */, + CE8F85B0B6965EE090F12CB8B384E2A3 /* PBXTargetDependency */, + BB84628766B4F66DF4DC34732901F40E /* PBXTargetDependency */, + 90059A9ED4F8080EA23A70C0EB5FE47E /* PBXTargetDependency */, + 7D1F8A3DE88EF01CF89EF4750D0835BC /* PBXTargetDependency */, + F750881392263D81A5BB4E131005A44E /* PBXTargetDependency */, + 28BE8BB7BD4C9C6AB673350A1570FA84 /* PBXTargetDependency */, + FE3D9C468529CF310D88B6383BEFBFDD /* PBXTargetDependency */, + 9403290AE1B7249ADE1ED8950739EE94 /* PBXTargetDependency */, + 22268E07F0FDFC08F0EE9D82FF083DD6 /* PBXTargetDependency */, + ABAA3F7B666DBB2B8C2E114433F7A89D /* PBXTargetDependency */, + D2B74321DDAF41730531D5172D454257 /* PBXTargetDependency */, ); name = "Pods-keyBoard"; productName = Pods_keyBoard; @@ -3475,7 +3568,7 @@ buildRules = ( ); dependencies = ( - E918590C6B33D5799C74C34CD2BB5722 /* PBXTargetDependency */, + D37914A752321FFCFF48251614F3D1B6 /* PBXTargetDependency */, ); name = SDWebImage; productName = SDWebImage; @@ -3500,6 +3593,24 @@ productReference = FAA5F2D71B90788C908800A94534AA92 /* FLAnimatedImage */; productType = "com.apple.product-type.framework"; }; + 4AA4C7BB776C55F3421BA137B643DD64 /* LYEmptyView */ = { + isa = PBXNativeTarget; + buildConfigurationList = 511C0840C50AF349D9A51E73BA56D28D /* Build configuration list for PBXNativeTarget "LYEmptyView" */; + buildPhases = ( + 195AA888551D84C490CBCAED7AE25EBE /* Headers */, + E8A558A3C629ABA805E9D912FCCBCD2F /* Sources */, + 98BB4909B1035551DF579C13A59BAA4D /* Frameworks */, + 311EF2CB460B544059B769919A899ECA /* Resources */, + ); + buildRules = ( + ); + dependencies = ( + ); + name = LYEmptyView; + productName = LYEmptyView; + productReference = EEB5224BF1CABA409B3D3760EDDAEA0A /* LYEmptyView */; + productType = "com.apple.product-type.framework"; + }; 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */ = { isa = PBXNativeTarget; buildConfigurationList = 547AC2DDC5CDD1783E0827EEA7D453E1 /* Build configuration list for PBXNativeTarget "MJExtension" */; @@ -3512,7 +3623,7 @@ buildRules = ( ); dependencies = ( - CA5A82B04166A988C7834D6E5F130D24 /* PBXTargetDependency */, + 1D289FBB39D9730B46C50BB58E35DEDD /* PBXTargetDependency */, ); name = MJExtension; productName = MJExtension; @@ -3539,12 +3650,12 @@ }; 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */ = { isa = PBXNativeTarget; - buildConfigurationList = 15624921AFB223858478F40D5FC30D8A /* Build configuration list for PBXNativeTarget "LSTTimer" */; + buildConfigurationList = C43E72A521778768A4BFF773BB3A3E73 /* Build configuration list for PBXNativeTarget "LSTTimer" */; buildPhases = ( - 920775366A5F97AE256FADDDCDBD9740 /* Headers */, - FEEB3280DD885E20A0F8EE0C8798CAB2 /* Sources */, - C44502CD70E5B1200927F3A081A60365 /* Frameworks */, - 848FF7A10EE5C029902ADD3C55750C9F /* Resources */, + FFA880310EDC0CF0A2515E0ED18689B0 /* Headers */, + 960664E0DAFB6A287268BB843AE03C4D /* Sources */, + 58A39759A11D8C551E18D1323674BF34 /* Frameworks */, + 3E9DF1CA7088EFD9A83405BFA3BA49AB /* Resources */, ); buildRules = ( ); @@ -3585,7 +3696,7 @@ buildRules = ( ); dependencies = ( - 7244D798B35A90122DF5F2EBC2C25073 /* PBXTargetDependency */, + 4B67FE65673F595E9C8A068417DA514D /* PBXTargetDependency */, ); name = MJRefresh; productName = MJRefresh; @@ -3622,7 +3733,7 @@ buildRules = ( ); dependencies = ( - C8CAA3DF1F34F4917BE346E82645B672 /* PBXTargetDependency */, + 88EAB6CB023EDFC5B53D2E9C22425E3A /* PBXTargetDependency */, ); name = LSTPopView; productName = LSTPopView; @@ -3641,7 +3752,7 @@ buildRules = ( ); dependencies = ( - C11D50FE786831BFAA5FB3ED4D276FC5 /* PBXTargetDependency */, + 840E5121538D55EE93FDAA52D266DA70 /* PBXTargetDependency */, ); name = JXCategoryView; productName = JXCategoryView; @@ -3650,11 +3761,11 @@ }; 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */ = { isa = PBXNativeTarget; - buildConfigurationList = D0D337F808B517A6F9A6D14C71CB5B25 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */; + buildConfigurationList = FB913463BEC55EE719AD5BC32990DB46 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */; buildPhases = ( - 23F7311CB240548CE74F13BA30E805B5 /* Sources */, - 49A3D4697275EC0A7C6F38E45E2F0217 /* Frameworks */, - 104904C13744D5C7625092B68974D183 /* Resources */, + A3408CB3584697A2B6167BD69AA21B2F /* Sources */, + 0DCF6770445D0657900721EC9917ECFB /* Frameworks */, + 0F4454263AF02A68EA280CFD2F6F0009 /* Resources */, ); buildRules = ( ); @@ -3667,11 +3778,11 @@ }; B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = 6245C5FFE40FC7DFDD2CA00871D0EA40 /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */; + buildConfigurationList = BA6D8ED14C9A066F526869BBA7BFA2F0 /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */; buildPhases = ( - D505A0E271350076957F6F32073544D2 /* Sources */, - A815DA3563AEC721C6EAF6B39395CDD4 /* Frameworks */, - 8AF3FF976A1DE9EA4258B9F5B490733A /* Resources */, + 25D101E1E3D7EB40B6BF4B0D063D4CFB /* Sources */, + 04785C72D7E967FCB78D8F7E7635973B /* Frameworks */, + BD0C56EEEF7BFD5736E628E5DAEDE627 /* Resources */, ); buildRules = ( ); @@ -3684,11 +3795,11 @@ }; B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */ = { isa = PBXNativeTarget; - buildConfigurationList = B662A4FAD3B72B94AAE82FA4EF54A8A1 /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */; + buildConfigurationList = 97AAB185F08FD001A3F3B9102E506695 /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */; buildPhases = ( - 1FAEC8C9D1FFBAF2D815698CBBF41366 /* Sources */, - B48A7E8CCFE81BBD4AEBA45C992E5F7F /* Frameworks */, - 79F5ED799353ADB8EFED141CD4F84A84 /* Resources */, + 4B87B289E4FC9DF2FE22A240DAB0E3AD /* Sources */, + 6B8E82384925B650051F0C1846383E41 /* Frameworks */, + 3D2CFD627094E91914BED90AC6A972BE /* Resources */, ); buildRules = ( ); @@ -3711,7 +3822,7 @@ buildRules = ( ); dependencies = ( - 82007E5716B41B7A56E454204B106954 /* PBXTargetDependency */, + CFAD2B6D6431A495BD1CA533779A67B0 /* PBXTargetDependency */, ); name = JXPagingView; productName = JXPagingView; @@ -3730,11 +3841,11 @@ buildRules = ( ); dependencies = ( - 33D09C01EF80EA558D42C96911714DFF /* PBXTargetDependency */, - 8DBC9C82D4F645E38F5388E4EC6F8837 /* PBXTargetDependency */, - C5827E035098A10C8DC173D8807B0496 /* PBXTargetDependency */, - 2DE7668F0442330FCC1AB4038419404C /* PBXTargetDependency */, - 37008CECA85E062E163E323B0DBF02EA /* PBXTargetDependency */, + 516A94BC5E451EEB51F643D23D85E82C /* PBXTargetDependency */, + B5024FC019BD8A112152FB369A67EAFA /* PBXTargetDependency */, + 285B72F62A1DE2E9A5E2E4D45F15828C /* PBXTargetDependency */, + 3B6CA3026290428D105D8C0E16BC28C0 /* PBXTargetDependency */, + 418F39BD767B7F3EBD3B862DC77F178A /* PBXTargetDependency */, ); name = "Pods-CustomKeyboard"; productName = Pods_CustomKeyboard; @@ -3743,11 +3854,11 @@ }; E79E29F55A2453370D27112480FCF6A2 /* JXCategoryView-JXCategoryView */ = { isa = PBXNativeTarget; - buildConfigurationList = F688458307583BA2FC79B1282B37D611 /* Build configuration list for PBXNativeTarget "JXCategoryView-JXCategoryView" */; + buildConfigurationList = 931B4A41B3614242C4D8813983B29AE7 /* Build configuration list for PBXNativeTarget "JXCategoryView-JXCategoryView" */; buildPhases = ( - 17BD1ACA0E8D92E2DF87A056B0D17AF7 /* Sources */, - D322DF9855308A001A820F202DCCBA75 /* Frameworks */, - 570AFF54CA367A3A6FC6B25F8F89E223 /* Resources */, + E7FC7BB552A8FE956E421E3474419D5D /* Sources */, + F4019BF639D68EFAB596EA1BD86C37CB /* Frameworks */, + 1461F55480D564BB754551A6E8B059D2 /* Resources */, ); buildRules = ( ); @@ -3796,7 +3907,7 @@ mainGroup = CF1408CF629C7361332E53B88F7BD30C; minimizedProjectReferenceProxies = 0; preferredProjectObjectVersion = 77; - productRefGroup = 1CD312D2E666224315BB46AF04231D5D /* Products */; + productRefGroup = D3828787C1DCC6E76B71C947B6C876AE /* Products */; projectDirPath = ""; projectRoot = ""; targets = ( @@ -3812,6 +3923,7 @@ 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */, 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */, 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */, + 4AA4C7BB776C55F3421BA137B643DD64 /* LYEmptyView */, 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */, 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */, 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */, @@ -3827,18 +3939,19 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 0D07E8D675635C881CCB2DF69C6E7629 /* Resources */ = { + 0F4454263AF02A68EA280CFD2F6F0009 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + 7DFACBAC8324FE3F177FA465E0006A9C /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 104904C13744D5C7625092B68974D183 /* Resources */ = { + 1461F55480D564BB754551A6E8B059D2 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6F3A575F2B9E1CEB696248B9CB96F357 /* PrivacyInfo.xcprivacy in Resources */, + 7D4B5D7A593F4436B57347FD2A5072B4 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3864,11 +3977,32 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 3A5A6604A2DC218F056C1D04F3DB43CD /* Resources */ = { + 2B9BFC6488F4ABCC9916C35510BB7D7C /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 311EF2CB460B544059B769919A899ECA /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3D2CFD627094E91914BED90AC6A972BE /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + B2E706AF15CBC9BBDA6B180AA008345E /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 3E9DF1CA7088EFD9A83405BFA3BA49AB /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 5DF02901155278BE109057E17C7C1D99 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3889,14 +4023,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 570AFF54CA367A3A6FC6B25F8F89E223 /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 95CCA80D6790CF64F974A53E815420F8 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 5C89912961D7B3B99680563233DBEA04 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -3905,26 +4031,11 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 79F5ED799353ADB8EFED141CD4F84A84 /* Resources */ = { + 860DF70163CE0C8308216A41597A40DF /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - EC078D5CD76868BDE0F67BBEAFFEA217 /* PrivacyInfo.xcprivacy in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 848FF7A10EE5C029902ADD3C55750C9F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 8AF3FF976A1DE9EA4258B9F5B490733A /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - B61728EFE4A95013413ED38D371A33B0 /* PrivacyInfo.xcprivacy in Resources */, + 27CE2AFFB3219A5D3717045970929C80 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -3949,6 +4060,14 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + BD0C56EEEF7BFD5736E628E5DAEDE627 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 1F2863645F3DEAC57B592AFFB45D5E77 /* PrivacyInfo.xcprivacy in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; D518E37278D48F046F4C76EA0E72D5AC /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; @@ -4095,28 +4214,7 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 17BD1ACA0E8D92E2DF87A056B0D17AF7 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 1FAEC8C9D1FFBAF2D815698CBBF41366 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 23F7311CB240548CE74F13BA30E805B5 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 2BCD1AC59060560FEAF74FFFB66F0F9F /* Sources */ = { + 25D101E1E3D7EB40B6BF4B0D063D4CFB /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( @@ -4154,11 +4252,17 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 6F3E38196FED4BD0677C98E1E0C6C80C /* Sources */ = { + 4B87B289E4FC9DF2FE22A240DAB0E3AD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 5E3F655370D8F2DAABC53D59D069B3A1 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 3BF23DD02B40D2A2E98FF9D042A5AF4E /* Pods-keyBoard-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -4282,6 +4386,15 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + 960664E0DAFB6A287268BB843AE03C4D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 21232E67D630EBF8EA4CB3322B359F0D /* LSTTimer.m in Sources */, + 9C623DECA454522DB641AA29C86F6387 /* LSTTimer-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; 9F03A6C166C310270FB3F4AFE9D7573D /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4304,6 +4417,13 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + A3408CB3584697A2B6167BD69AA21B2F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; D08DDDF416AB9EEE26C8FFEE674F7A12 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4327,13 +4447,6 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - D505A0E271350076957F6F32073544D2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ); - runOnlyForDeploymentPostprocessing = 0; - }; DA0B6A6F9B3EDF226BF081DAC7E777E7 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4384,6 +4497,33 @@ ); runOnlyForDeploymentPostprocessing = 0; }; + E3AA8B53287F6ACBF2F2800146C6ECD0 /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 58852265A6A355CDF8D25BCD71F54F3D /* Pods-keyBoard-dummy.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E7FC7BB552A8FE956E421E3474419D5D /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + E8A558A3C629ABA805E9D912FCCBCD2F /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 7D1C6E10B8E0F98E19048BB416A39A0D /* LYEmptyBaseView.m in Sources */, + 2210A1E405AB21104E7AF86D05C8AD39 /* LYEmptyView.m in Sources */, + A59F64C74CB407EBC0385F026FC7234A /* LYEmptyView-dummy.m in Sources */, + 0E97928FD3B4476EDC015E83A8E2CAA3 /* UIView+Empty.m in Sources */, + 743BBA00940EF6877AE1D5014755D0D6 /* UIView+LYExtension.m in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; E8CCE3C7763C30E81A067AE9AC1B8915 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -4412,187 +4552,294 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FEEB3280DD885E20A0F8EE0C8798CAB2 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - ADAB2E78F005C6413F9F3699D60CF727 /* LSTTimer.m in Sources */, - 4E0FBD829EB07B8D5D2A5F6115457BE7 /* LSTTimer-dummy.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 004C87AF28627224BAF0F49A32B4B934 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Masonry; - target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = F121CDAC85A6DCADB4F82D081323C7C5 /* PBXContainerItemProxy */; - }; - 2DE7668F0442330FCC1AB4038419404C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJExtension; - target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = 79523FDE8CA807F68BC7DF678B3199B5 /* PBXContainerItemProxy */; - }; - 33D09C01EF80EA558D42C96911714DFF /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = 398B300FAF20E4012B54089285C6D68D /* PBXContainerItemProxy */; - }; - 37008CECA85E062E163E323B0DBF02EA /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Masonry; - target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; - targetProxy = 39F2619DE86130266FA45394FE5C260D /* PBXContainerItemProxy */; - }; - 3A33DC80646EE1FEC3F5A81D6D88094E /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LookinServer; - target = 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */; - targetProxy = AE8D5D579627FAFF8F43B7CEFE066FF2 /* PBXContainerItemProxy */; - }; - 3A364CBA383FC741F9B9507BAD524A1F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = Bugly; - target = 4A68CFD979D413A619DF631BB121D98F /* Bugly */; - targetProxy = 4262F1710F9698DFC113026BA2E31021 /* PBXContainerItemProxy */; - }; - 3B95059A3ABF817D0636F90C4FE24A57 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = JXPagingView; - target = C4E1020AF425614337737213AA26DBD5 /* JXPagingView */; - targetProxy = 6DB0C5460735B353E7FB2A7058DEB8F3 /* PBXContainerItemProxy */; - }; - 5B8D2BAFD03C6848DC5CAC776971023C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LSTPopView; - target = 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */; - targetProxy = 0A1A465C500FD28324C60FF2111766F1 /* PBXContainerItemProxy */; - }; - 67D06D25CF9C7EFF394097D2AFFD9DF9 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJExtension; - target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; - targetProxy = 4E0DD9B103CA9ED24B513A6147DEDB93 /* PBXContainerItemProxy */; - }; - 7244D798B35A90122DF5F2EBC2C25073 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "MJRefresh-MJRefresh.Privacy"; - target = B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */; - targetProxy = C279C7A3A264FD3391C8C73B80D3A426 /* PBXContainerItemProxy */; - }; - 75023E301D2D56786B69F7BD1B998E06 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MJRefresh; - target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; - targetProxy = 9E88A4DD9EF59B6718F28ECC701DF551 /* PBXContainerItemProxy */; - }; - 7986360E8EC5F57AE4012FDDB8A6D701 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MBProgressHUD; - target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = F9F28B72CAD6F7E15F267C3F8D685EA8 /* PBXContainerItemProxy */; - }; - 82007E5716B41B7A56E454204B106954 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "JXPagingView-JXPagerView"; - target = 16704C6B67439DA959DB043702C75A7A /* JXPagingView-JXPagerView */; - targetProxy = C389A17163C51915594BC17BC8BF9DE0 /* PBXContainerItemProxy */; - }; - 8DBC9C82D4F645E38F5388E4EC6F8837 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DZNEmptyDataSet; - target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = 6FA747ECA11691BE7229C287223E399A /* PBXContainerItemProxy */; - }; - A036241AE2FD9088F99D8A60AFCD1514 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LSTTimer; - target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; - targetProxy = 0CEF032AE3DE8459AABC366D5EAD57AC /* PBXContainerItemProxy */; - }; - A8CFE4713F435C9FF4AA9FA8D460F3A7 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = SDWebImage; - target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; - targetProxy = 803F302DC5C2EA85B4CBBDCD27A43286 /* PBXContainerItemProxy */; - }; - B48CA5483F83ECB025E2CF88895F910F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = HWPanModal; - target = 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */; - targetProxy = DB3A9F97FFF5759DFB4E243D0C12B290 /* PBXContainerItemProxy */; - }; - BFFE20AC77F2320185030DE7FAF95A94 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DZNEmptyDataSet; - target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; - targetProxy = 36EAD987437C03F015C383238BF3C1B7 /* PBXContainerItemProxy */; - }; - C11D50FE786831BFAA5FB3ED4D276FC5 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "JXCategoryView-JXCategoryView"; - target = E79E29F55A2453370D27112480FCF6A2 /* JXCategoryView-JXCategoryView */; - targetProxy = 7B014B80CCB8DDBC4906B5D8D3002093 /* PBXContainerItemProxy */; - }; - C5827E035098A10C8DC173D8807B0496 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = MBProgressHUD; - target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; - targetProxy = 686994C0035F8FADAF6A6C4E910239B2 /* PBXContainerItemProxy */; - }; - C8CAA3DF1F34F4917BE346E82645B672 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = LSTTimer; - target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; - targetProxy = 2635D33260052793F7319FAC3997C416 /* PBXContainerItemProxy */; - }; - C9B3D25C71255E9DFCE9A741B4BFF3BA /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = AFNetworking; - target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; - targetProxy = EF1EC9615D03559D465834BE2D7F527F /* PBXContainerItemProxy */; - }; - CA5A82B04166A988C7834D6E5F130D24 /* PBXTargetDependency */ = { + 1D289FBB39D9730B46C50BB58E35DEDD /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "MJExtension-MJExtension"; target = B32AF3F43989CBA171BB1FB3957A4509 /* MJExtension-MJExtension */; - targetProxy = D89A563DA511A2A01EFDD5299EBCEE42 /* PBXContainerItemProxy */; + targetProxy = C30FB24BD734A3779E20934DB3D4D9C8 /* PBXContainerItemProxy */; }; - D1DA99819466A8666489AD8ABE8C04A5 /* PBXTargetDependency */ = { + 22268E07F0FDFC08F0EE9D82FF083DD6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; - name = FLAnimatedImage; - target = 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */; - targetProxy = CE0514BD8BDC97E49F2A38CD065EDCFC /* PBXContainerItemProxy */; + name = MJRefresh; + target = 6868056D761E163D10FDAF8CF1C4D9B8 /* MJRefresh */; + targetProxy = B0121AEB150BEE5708989CCC69A51E6E /* PBXContainerItemProxy */; }; - E3CE26F82AC9FA20A1C696AD05CBE607 /* PBXTargetDependency */ = { + 285B72F62A1DE2E9A5E2E4D45F15828C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MBProgressHUD; + target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; + targetProxy = 70663BD3E4659CFF0C7EF0B56DBC9C78 /* PBXContainerItemProxy */; + }; + 28BE8BB7BD4C9C6AB673350A1570FA84 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LookinServer; + target = 638FEAAFC575BB76BC6AC055CDDA3506 /* LookinServer */; + targetProxy = 71C3BF8323A3B89C42C815297FB1B486 /* PBXContainerItemProxy */; + }; + 3067995C8EDFEF1A63CA85F6D091AD0B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Bugly; + target = 4A68CFD979D413A619DF631BB121D98F /* Bugly */; + targetProxy = 02FAAF39D5DC83544D9E66B036B176EA /* PBXContainerItemProxy */; + }; + 3B6CA3026290428D105D8C0E16BC28C0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MJExtension; + target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; + targetProxy = 492374464B2EEB82B866DBC203FB6CF9 /* PBXContainerItemProxy */; + }; + 418F39BD767B7F3EBD3B862DC77F178A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = F24DDDDEE9FC26F48E2EA84062015B72 /* PBXContainerItemProxy */; + }; + 4B67FE65673F595E9C8A068417DA514D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "MJRefresh-MJRefresh.Privacy"; + target = B26054DF1DEA11585A231AF6D1D80D5E /* MJRefresh-MJRefresh.Privacy */; + targetProxy = A2D6E99D61C37E2D571D73F75FCFE0B4 /* PBXContainerItemProxy */; + }; + 516A94BC5E451EEB51F643D23D85E82C /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = C548A30C8E9A6CD52D6655421F9E80B2 /* PBXContainerItemProxy */; + }; + 7D1F8A3DE88EF01CF89EF4750D0835BC /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LSTTimer; + target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; + targetProxy = A3A1467D883FED3ABCAC49113A737098 /* PBXContainerItemProxy */; + }; + 840E5121538D55EE93FDAA52D266DA70 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "JXCategoryView-JXCategoryView"; + target = E79E29F55A2453370D27112480FCF6A2 /* JXCategoryView-JXCategoryView */; + targetProxy = BAEC79AAEBBDF2BA3087612B7E05FD8E /* PBXContainerItemProxy */; + }; + 88EAB6CB023EDFC5B53D2E9C22425E3A /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LSTTimer; + target = 5A2609DB0612F95A3450D2E02CA850A0 /* LSTTimer */; + targetProxy = 9D62F9D7E8B03E6D53909480991C8AEA /* PBXContainerItemProxy */; + }; + 90059A9ED4F8080EA23A70C0EB5FE47E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LSTPopView; + target = 8B7D23DD98E41BAE91418E9E85F191D6 /* LSTPopView */; + targetProxy = D9630B9E5DE60DCADFA9106CF013D735 /* PBXContainerItemProxy */; + }; + 9403290AE1B7249ADE1ED8950739EE94 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MJExtension; + target = 4D3BA58D0583DF37575CACAB3DDADC85 /* MJExtension */; + targetProxy = 4F853CA6F77CC1808AF5BAF0CCAB86C0 /* PBXContainerItemProxy */; + }; + ABAA3F7B666DBB2B8C2E114433F7A89D /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = Masonry; + target = 55AF53E6C77A10ED4985E04D74A8878E /* Masonry */; + targetProxy = F518DC696627DF925BE789501947DBC7 /* PBXContainerItemProxy */; + }; + B5024FC019BD8A112152FB369A67EAFA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DZNEmptyDataSet; + target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; + targetProxy = F02666E823668E7F6E705B610204BBE2 /* PBXContainerItemProxy */; + }; + BB84628766B4F66DF4DC34732901F40E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = JXPagingView; + target = C4E1020AF425614337737213AA26DBD5 /* JXPagingView */; + targetProxy = CEFF12BAC2DF7A2FB2A16265805F8779 /* PBXContainerItemProxy */; + }; + C0EEAAE6B64FC5B6DFCE16644E06B2CA /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = HWPanModal; + target = 31DCABABCA873FBA7A92FEB47D71ED8E /* HWPanModal */; + targetProxy = DB09B1B3C4EF493AB0763F0795077728 /* PBXContainerItemProxy */; + }; + CE8F85B0B6965EE090F12CB8B384E2A3 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = JXCategoryView; target = 8BEAFAA726C1965864B79B4B441AA513 /* JXCategoryView */; - targetProxy = 648F8AAC5DF3351FEF10F1C29B3E11DF /* PBXContainerItemProxy */; + targetProxy = 0AC2AD8EAFB742F27A3D34C64E40AFC6 /* PBXContainerItemProxy */; }; - E918590C6B33D5799C74C34CD2BB5722 /* PBXTargetDependency */ = { + CFAD2B6D6431A495BD1CA533779A67B0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "JXPagingView-JXPagerView"; + target = 16704C6B67439DA959DB043702C75A7A /* JXPagingView-JXPagerView */; + targetProxy = 4B52CF33FA25735578A3E44A4CD0C61E /* PBXContainerItemProxy */; + }; + D2B74321DDAF41730531D5172D454257 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = SDWebImage; + target = 3847153A6E5EEFB86565BA840768F429 /* SDWebImage */; + targetProxy = 6C532ADBCD9DB30208C8082362062867 /* PBXContainerItemProxy */; + }; + D37914A752321FFCFF48251614F3D1B6 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "SDWebImage-SDWebImage"; target = 94CFBA7D633ECA58DF85C327B035E6A3 /* SDWebImage-SDWebImage */; - targetProxy = B296FC77430103DDB971813228C8D4EF /* PBXContainerItemProxy */; + targetProxy = 6B502CE29B8265D64E66B68DA64E8BAF /* PBXContainerItemProxy */; + }; + D431884F2F2835EF4FDB44219ADAA88B /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = AFNetworking; + target = 0130B3724283586C0E9D2A112D4F2AA1 /* AFNetworking */; + targetProxy = 586A5F02457EAA9AECE8CFCC7EDC4A36 /* PBXContainerItemProxy */; + }; + D6DB70831F359F7235B8C97A50300DDF /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = FLAnimatedImage; + target = 4A8E8992707D01510894596DB9BCCA00 /* FLAnimatedImage */; + targetProxy = FD339A2CF804D4CD1FADE6633BE4DB45 /* PBXContainerItemProxy */; + }; + E7B53C78EB3FA9751B3C978B6CB97980 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DZNEmptyDataSet; + target = F1BCD9702276377FB5B3BDB6EAF709D7 /* DZNEmptyDataSet */; + targetProxy = D031B103E98AAB5CEC13491B24F6A82E /* PBXContainerItemProxy */; + }; + F750881392263D81A5BB4E131005A44E /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = LYEmptyView; + target = 4AA4C7BB776C55F3421BA137B643DD64 /* LYEmptyView */; + targetProxy = 080FDB8CF401316D3CCD779F38297489 /* PBXContainerItemProxy */; + }; + FE3D9C468529CF310D88B6383BEFBFDD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = MBProgressHUD; + target = 82B0A41D3031FF27D78E17B0A9A46FB0 /* MBProgressHUD */; + targetProxy = 6C0462143C24DADCF6D346CFCCF1F2DF /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 056C2C119D321A1782845A1C09FB3561 /* Release */ = { + 024C9A3B861ABA20A2346A6A466EB015 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */; + baseConfigurationReference = F68616E55705601CBE5D9437AD83B340 /* JXCategoryView.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXPagingView"; - IBSC_MODULE = JXPagingView; - INFOPLIST_FILE = "Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist"; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXCategoryView"; + IBSC_MODULE = JXCategoryView; + INFOPLIST_FILE = "Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = JXCategoryView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 083F4B327F32BA42082C93DA3678A905 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; + buildSettings = { + ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.modulemap"; + OTHER_LDFLAGS = ""; + OTHER_LIBTOOLFLAGS = ""; + PODS_ROOT = "$(SRCROOT)"; + PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; + PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 0BAEB6F6833BF585A150B8AD74FDBC03 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 6CE98E2FC8B92A0E98F20755C88122A4 /* LSTTimer.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PRODUCT_NAME = JXPagerView; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; + PRODUCT_MODULE_NAME = LSTTimer; + PRODUCT_NAME = LSTTimer; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 0FF9630F4FA55B5D0AE7A67F275961B4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A324C5885C8FB2DC65900A0EE79A0E45 /* MJRefresh.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; + IBSC_MODULE = MJRefresh; + INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJRefresh.Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 124345EDBC5F34B7AF5C60B83C477235 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 81F7F63875295940D9A950DB7D2EBDE7 /* SDWebImage.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; + IBSC_MODULE = SDWebImage; + INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = SDWebImage; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; @@ -4602,7 +4849,7 @@ }; 1A69165A21A7A1CC42A38CF8ADE98215 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B8E77F018E5BE1F8C021ACB0978497F6 /* LookinServer.release.xcconfig */; + baseConfigurationReference = 438B056E0DAE53D40DB4894FF36879AF /* LookinServer.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4677,9 +4924,43 @@ }; name = Release; }; + 26A0DE2A2C5EEB5AB1D9315AE03103A7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 954035BEFF37A926FB7C25E5508CD25D /* MJExtension.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; + IBSC_MODULE = MJExtension; + INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 2B066301F5B1D4BFFD95FEB2D9535180 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D3FD4542A2D174FC95524833AB672073 /* JXPagingView.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXPagingView"; + IBSC_MODULE = JXPagingView; + INFOPLIST_FILE = "Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = JXPagerView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; 2D1085CA7BD144CABF012FC10C6C9120 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 93A6F66AA21D4921B2C52643DAEF998F /* Masonry.debug.xcconfig */; + baseConfigurationReference = A603B071469D044FB92322560F131681 /* Masonry.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4716,7 +4997,7 @@ }; 35044A57510DB3F4E442A9C16E980E4A /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 6315771A902975A20B41342DD5234115 /* DZNEmptyDataSet.debug.xcconfig */; + baseConfigurationReference = 48E1ED2BAC3C5C1B077AAB67F3325D4E /* DZNEmptyDataSet.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4751,9 +5032,63 @@ }; name = Debug; }; - 4414117132ADFB2C5F5B1E433FC53228 /* Release */ = { + 3565929B4632DC589BC25FDD7CE29119 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */; + baseConfigurationReference = 5048CCD1406058B50480C383463B3C39 /* LYEmptyView.debug.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LYEmptyView/LYEmptyView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LYEmptyView/LYEmptyView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LYEmptyView/LYEmptyView.modulemap"; + PRODUCT_MODULE_NAME = LYEmptyView; + PRODUCT_NAME = LYEmptyView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; + 40403C5D9FB335BD8C765DF3FE61B9E5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7B582290DB93C466A4DA695035B6DA2E /* MJExtension.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; + IBSC_MODULE = MJExtension; + INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJExtension; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 44E4190BC3FB54D917C88AC4FC84B935 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = DF80C06856CA889ADB8807594055C7DF /* JXCategoryView.release.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXCategoryView"; @@ -4768,46 +5103,9 @@ }; name = Release; }; - 4949308A42E0BAB6B0B815F496FC5869 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A76F5B96F548930505FADC6CE9430C2D /* LSTTimer.debug.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; - PRODUCT_MODULE_NAME = LSTTimer; - PRODUCT_NAME = LSTTimer; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; 49CEA33268972C89BF290FCBF8F9DFC0 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7755C313C99E29481B2A9849C31152BE /* DZNEmptyDataSet.release.xcconfig */; + baseConfigurationReference = 5CB726B6B5C83EAABA9AC89E76D45643 /* DZNEmptyDataSet.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4843,26 +5141,9 @@ }; name = Release; }; - 49F55F836D397AB94087D90F9BE32CB2 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; - IBSC_MODULE = MJRefresh; - INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJRefresh.Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; 51753BD6FE635BB9421BCA4C05F63C6A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 580E2C96AABF74B3FD0C199D09864253 /* MJRefresh.release.xcconfig */; + baseConfigurationReference = A324C5885C8FB2DC65900A0EE79A0E45 /* MJRefresh.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4899,26 +5180,9 @@ }; name = Release; }; - 53552C84CADFAFE2D92EA24C81A4B387 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXCategoryView"; - IBSC_MODULE = JXCategoryView; - INFOPLIST_FILE = "Target Support Files/JXCategoryView/ResourceBundle-JXCategoryView-JXCategoryView-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = JXCategoryView; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; 571314BC8A84B1CED724D0AFB1CED826 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 7A9939FAA68717870D107439064CEFF4 /* JXCategoryView.release.xcconfig */; + baseConfigurationReference = DF80C06856CA889ADB8807594055C7DF /* JXCategoryView.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -4954,9 +5218,47 @@ }; name = Release; }; + 5FA85455B8129B5351F63A65BE01DE60 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = E00B4B67B95B1D4B1001EF45F23EF0C4 /* LYEmptyView.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LYEmptyView/LYEmptyView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LYEmptyView/LYEmptyView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LYEmptyView/LYEmptyView.modulemap"; + PRODUCT_MODULE_NAME = LYEmptyView; + PRODUCT_NAME = LYEmptyView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; 614F7847ADAD2F1EEC9E48FAEC955108 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */; + baseConfigurationReference = 7895C7C58218B5F79C76FA1B5A55E669 /* MJRefresh.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -4994,7 +5296,7 @@ }; 618AB008538F74AAF983C04297207BB6 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E654A0C1F961A76933C784134A3D98E4 /* LookinServer.debug.xcconfig */; + baseConfigurationReference = 7376537428F41B571A3D20FF9175747F /* LookinServer.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5028,26 +5330,9 @@ }; name = Debug; }; - 62792DAC98F4B79EB2EFE6B1EBB47A34 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 0B18274068E3388B3808CDDEB810ECFA /* MJRefresh.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; - IBSC_MODULE = MJRefresh; - INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJRefresh.Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; 63708B35D08B13BC40AB51386020974A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = CA18A067DCACA93C5FD4591EBC943217 /* HWPanModal.release.xcconfig */; + baseConfigurationReference = CA665BB1B8AEA701C3C1A72312BFE105 /* HWPanModal.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5083,26 +5368,26 @@ }; name = Release; }; - 674DB84A106C256BD3A902B6559D9288 /* Release */ = { + 64F655C37D34116A6844DB785A318D16 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */; + baseConfigurationReference = 39D7BCC784A30383722D127896FE591E /* JXPagingView.debug.xcconfig */; buildSettings = { CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; - IBSC_MODULE = SDWebImage; - INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = SDWebImage; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXPagingView"; + IBSC_MODULE = JXPagingView; + INFOPLIST_FILE = "Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + PRODUCT_NAME = JXPagerView; SDKROOT = iphoneos; SKIP_INSTALL = YES; TARGETED_DEVICE_FAMILY = "1,2"; WRAPPER_EXTENSION = bundle; }; - name = Release; + name = Debug; }; 67BAB382C3420CD62CB414CAA4D8A5B1 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C06B04E0ABEA41660753A9D5F58572EE /* FLAnimatedImage.release.xcconfig */; + baseConfigurationReference = D5BBA19EC013D7414BE28B29DCA7518D /* FLAnimatedImage.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5138,23 +5423,6 @@ }; name = Release; }; - 751527A9729DD8ADD668EBD1AFCD16A0 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; - IBSC_MODULE = MJExtension; - INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJExtension; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; 7BB5AE2225500DE9658B6277FED45BCD /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 0D6215D1BCCE125B8DF73E38013CBBDC /* Pods-CustomKeyboard.debug.xcconfig */; @@ -5196,7 +5464,7 @@ }; 869A260EDB31DBC8F1FD513756A77A93 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */; + baseConfigurationReference = 39D7BCC784A30383722D127896FE591E /* JXPagingView.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5300,7 +5568,7 @@ }; 8EAC2F834160F0D756B3363236E0940A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 23FBEE27BD56B7C8EB3849A2221CDA65 /* JXPagingView.release.xcconfig */; + baseConfigurationReference = D3FD4542A2D174FC95524833AB672073 /* JXPagingView.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5339,7 +5607,7 @@ }; 8F481C1C1CF7C89F42A9EFE335DEA2BC /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = B79CB4484CF793AF65C86B424D955922 /* LSTPopView.release.xcconfig */; + baseConfigurationReference = 6BD04BB450562622E215B33554778CC3 /* LSTPopView.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5375,6 +5643,46 @@ }; name = Release; }; + 9B8AB2F5A292514588D0A1ECFA2D15C4 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.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-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.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; + }; 9E406C6AAF85E580207CD97B0044DEAB /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -5439,7 +5747,7 @@ }; 9E9FB1E032B56896F9380263D45A0F9A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */; + baseConfigurationReference = 7B582290DB93C466A4DA695035B6DA2E /* MJExtension.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -5478,7 +5786,7 @@ }; 9F519E5162C0E51D10B7E999E2FD0125 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = E392F0E432282B33F9A7A49E5F6DFDE1 /* SDWebImage.release.xcconfig */; + baseConfigurationReference = 81F7F63875295940D9A950DB7D2EBDE7 /* SDWebImage.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5516,7 +5824,7 @@ }; A04019026E1B09655264B132BF5345A4 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D7708C3743D0A5955D7A50F4A72818A5 /* JXCategoryView.debug.xcconfig */; + baseConfigurationReference = F68616E55705601CBE5D9437AD83B340 /* JXCategoryView.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5553,7 +5861,7 @@ }; B04295D726C1883ADA40A304483D7E33 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */; + baseConfigurationReference = 93B896E371962B657B3B85C108092214 /* SDWebImage.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5588,65 +5896,9 @@ }; name = Debug; }; - B0474165CD8F05374CFDCCDA05985E9E /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 2252400966339192E785E1533182460B /* SDWebImage.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; - IBSC_MODULE = SDWebImage; - INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 9.0; - PRODUCT_NAME = SDWebImage; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - B1990C10B74E98AD1A318202655814D4 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 35BFA337F4E1FDE67C773A82CCDFD6DA /* Pods-keyBoard.debug.xcconfig */; - buildSettings = { - ALWAYS_EMBED_SWIFT_STANDARD_LIBRARIES = NO; - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - INFOPLIST_FILE = "Target Support Files/Pods-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.modulemap"; - OTHER_LDFLAGS = ""; - OTHER_LIBTOOLFLAGS = ""; - PODS_ROOT = "$(SRCROOT)"; - PRODUCT_BUNDLE_IDENTIFIER = "org.cocoapods.${PRODUCT_NAME:rfc1034identifier}"; - PRODUCT_NAME = "$(TARGET_NAME:c99extidentifier)"; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Debug; - }; B26FBB655ABB114E4C0D589843814D6C /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 956C8FF42F553F12124DED23E19FE31D /* Bugly.release.xcconfig */; + baseConfigurationReference = 0AD4477B34BC6EAF1A362183974F34DC /* Bugly.release.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -5662,26 +5914,9 @@ }; name = Release; }; - B413A840D435DD0DE4EA09E77C5232AA /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 29485CC6A452A36B28B71FA9AC5A4CE4 /* JXPagingView.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/JXPagingView"; - IBSC_MODULE = JXPagingView; - INFOPLIST_FILE = "Target Support Files/JXPagingView/ResourceBundle-JXPagerView-JXPagingView-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - PRODUCT_NAME = JXPagerView; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; B429B9740B8EB5894C5BF953D9590A46 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 36A28302FD0C37C0A56E64EA97977A8E /* FLAnimatedImage.debug.xcconfig */; + baseConfigurationReference = 2CB55990BE7673BB5930FB77BB2A2C33 /* FLAnimatedImage.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5718,7 +5953,7 @@ }; BCD70A0BB22D0C72BAF7207A7D4F44BD /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 648C72C63334BCDFD466058863FCDAC9 /* MBProgressHUD.debug.xcconfig */; + baseConfigurationReference = EC4CFDD75B85C12B1C1393BEA03A165C /* MBProgressHUD.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5753,9 +5988,47 @@ }; name = Debug; }; + BD1821022C3B758BEA9CB5616F987BC7 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 73EBDE260791BF4440027F8601391D8B /* LSTTimer.release.xcconfig */; + buildSettings = { + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 8.0; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; + PRODUCT_MODULE_NAME = LSTTimer; + PRODUCT_NAME = LSTTimer; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; BDD02D9903A09C2C9D362C7536416CFB /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = C6B15D5B29642260AB882050F51A8AE5 /* HWPanModal.debug.xcconfig */; + baseConfigurationReference = 4201C2CD51C00E5AC0EC45DC41B32695 /* HWPanModal.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5792,7 +6065,7 @@ }; BE0CDEB7BE0A402663AFCC2111742430 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 035807D7A9181D8E0DF6FAF1E2D6B33C /* MBProgressHUD.release.xcconfig */; + baseConfigurationReference = AC0C26DBF6F4D6A9D8C1BF55FE14DABA /* MBProgressHUD.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5828,47 +6101,9 @@ }; name = Release; }; - C9E0A2B5A2A51C141248D224C0567EBC /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 294754F45B0BF3519369080425B4F2FD /* LSTTimer.release.xcconfig */; - buildSettings = { - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/LSTTimer/LSTTimer-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/LSTTimer/LSTTimer-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 8.0; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/LSTTimer/LSTTimer.modulemap"; - PRODUCT_MODULE_NAME = LSTTimer; - PRODUCT_NAME = LSTTimer; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; - SWIFT_INSTALL_OBJC_HEADER = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - VALIDATE_PRODUCT = YES; - VERSIONING_SYSTEM = "apple-generic"; - VERSION_INFO_PREFIX = ""; - }; - name = Release; - }; CBAFED52B4B51F600FAF2141BA449F2E /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = DDA8FA3EA27827F124700F1B6176E4CE /* Bugly.debug.xcconfig */; + baseConfigurationReference = 3DF983F1377AD739C3DF33AE51632FCF /* Bugly.debug.xcconfig */; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor; @@ -5885,7 +6120,7 @@ }; CEE7FEC0A1B23DE7053203A448EEB294 /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 8A6F594F279129456C02C7701DE5EDC3 /* AFNetworking.debug.xcconfig */; + baseConfigurationReference = 88D479C435BAEE51B8F3BBF87F8D3CC9 /* AFNetworking.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -5920,66 +6155,9 @@ }; name = Debug; }; - CFF1A479BBAF93B993D005A4C4B2808E /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 04A5DA1EDA3B5149D813E6B1D2B5ADDD /* MJExtension.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJExtension"; - IBSC_MODULE = MJExtension; - INFOPLIST_FILE = "Target Support Files/MJExtension/ResourceBundle-MJExtension-MJExtension-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 12.0; - PRODUCT_NAME = MJExtension; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - D02A5C00C024FCD02DABC63A4DA783E8 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = A6E8FF241173D596A21D4D4B7D86A810 /* Pods-keyBoard.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-keyBoard/Pods-keyBoard-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-keyBoard/Pods-keyBoard.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; - }; D0AB0AEF4014B926FCD853D3AE0A370A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 0B0EEEE5F23AC446F4729522F4FC7A73 /* Masonry.release.xcconfig */; + baseConfigurationReference = 4A4AE7A504C340AE8EE98F70C318D63C /* Masonry.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -6015,9 +6193,43 @@ }; name = Release; }; + D82E0E1859E0296A83015DC35BE95E81 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7895C7C58218B5F79C76FA1B5A55E669 /* MJRefresh.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/MJRefresh"; + IBSC_MODULE = MJRefresh; + INFOPLIST_FILE = "Target Support Files/MJRefresh/ResourceBundle-MJRefresh.Privacy-MJRefresh-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 12.0; + PRODUCT_NAME = MJRefresh.Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + D9D1855EA0BF7C903F0263AEDAADE1E7 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 93B896E371962B657B3B85C108092214 /* SDWebImage.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/SDWebImage"; + IBSC_MODULE = SDWebImage; + INFOPLIST_FILE = "Target Support Files/SDWebImage/ResourceBundle-SDWebImage-SDWebImage-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 9.0; + PRODUCT_NAME = SDWebImage; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; DA533AA9B577872DAFB44EF2CF26C49A /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = A697ED78520252C2C8CA71D13BA57F79 /* AFNetworking.release.xcconfig */; + baseConfigurationReference = 57B2E23309380B0E15F50C277205AC0D /* AFNetworking.release.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -6055,7 +6267,7 @@ }; EC66105EE15F9DC9B6F20F58FB67957D /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = FFC39DF551599EB371EA8F85F9A9DDCF /* MJExtension.debug.xcconfig */; + baseConfigurationReference = 954035BEFF37A926FB7C25E5508CD25D /* MJExtension.debug.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -6093,7 +6305,7 @@ }; F48613BDFA945AC2A18363244F54E67C /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D0317376A8F5B09CBBAC757A9410CF00 /* LSTPopView.debug.xcconfig */; + baseConfigurationReference = 163DD1C8E32A767AC162D451FB47DECB /* LSTPopView.debug.xcconfig */; buildSettings = { "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; @@ -6131,24 +6343,6 @@ /* End XCBuildConfiguration section */ /* Begin XCConfigurationList section */ - 0C35983ABF9DEA95C8B29A7F8482E5AE /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B1990C10B74E98AD1A318202655814D4 /* Debug */, - D02A5C00C024FCD02DABC63A4DA783E8 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - 15624921AFB223858478F40D5FC30D8A /* Build configuration list for PBXNativeTarget "LSTTimer" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 4949308A42E0BAB6B0B815F496FC5869 /* Debug */, - C9E0A2B5A2A51C141248D224C0567EBC /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 1CF7CA11A791652D6975B2EDE2FC6719 /* Build configuration list for PBXNativeTarget "DZNEmptyDataSet" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6176,6 +6370,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 404863FC7F43060AAE7C6FA66F917915 /* Build configuration list for PBXNativeTarget "JXPagingView-JXPagerView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 64F655C37D34116A6844DB785A318D16 /* Debug */, + 2B066301F5B1D4BFFD95FEB2D9535180 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6185,6 +6388,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 48C48CA74E925091D509EAE661A5D87D /* Build configuration list for PBXNativeTarget "Pods-keyBoard" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 083F4B327F32BA42082C93DA3678A905 /* Debug */, + 9B8AB2F5A292514588D0A1ECFA2D15C4 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 511C0840C50AF349D9A51E73BA56D28D /* Build configuration list for PBXNativeTarget "LYEmptyView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 3565929B4632DC589BC25FDD7CE29119 /* Debug */, + 5FA85455B8129B5351F63A65BE01DE60 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 547AC2DDC5CDD1783E0827EEA7D453E1 /* Build configuration list for PBXNativeTarget "MJExtension" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6194,15 +6415,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 6245C5FFE40FC7DFDD2CA00871D0EA40 /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 62792DAC98F4B79EB2EFE6B1EBB47A34 /* Debug */, - 49F55F836D397AB94087D90F9BE32CB2 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; 773A22765B846DE10CADF4D2E77FE841 /* Build configuration list for PBXNativeTarget "JXPagingView" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6230,6 +6442,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 931B4A41B3614242C4D8813983B29AE7 /* Build configuration list for PBXNativeTarget "JXCategoryView-JXCategoryView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 024C9A3B861ABA20A2346A6A466EB015 /* Debug */, + 44E4190BC3FB54D917C88AC4FC84B935 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 945C0F2B41CBADE68A142120AE9A4AF3 /* Build configuration list for PBXNativeTarget "MBProgressHUD" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6239,6 +6460,15 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 97AAB185F08FD001A3F3B9102E506695 /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 26A0DE2A2C5EEB5AB1D9315AE03103A7 /* Debug */, + 40403C5D9FB335BD8C765DF3FE61B9E5 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 9CC7AA793D9397C15E010F8242EE1046 /* Build configuration list for PBXAggregateTarget "Bugly" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6266,20 +6496,20 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B662A4FAD3B72B94AAE82FA4EF54A8A1 /* Build configuration list for PBXNativeTarget "MJExtension-MJExtension" */ = { + BA6D8ED14C9A066F526869BBA7BFA2F0 /* Build configuration list for PBXNativeTarget "MJRefresh-MJRefresh.Privacy" */ = { isa = XCConfigurationList; buildConfigurations = ( - 751527A9729DD8ADD668EBD1AFCD16A0 /* Debug */, - CFF1A479BBAF93B993D005A4C4B2808E /* Release */, + D82E0E1859E0296A83015DC35BE95E81 /* Debug */, + 0FF9630F4FA55B5D0AE7A67F275961B4 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - D0D337F808B517A6F9A6D14C71CB5B25 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */ = { + C43E72A521778768A4BFF773BB3A3E73 /* Build configuration list for PBXNativeTarget "LSTTimer" */ = { isa = XCConfigurationList; buildConfigurations = ( - B0474165CD8F05374CFDCCDA05985E9E /* Debug */, - 674DB84A106C256BD3A902B6559D9288 /* Release */, + 0BAEB6F6833BF585A150B8AD74FDBC03 /* Debug */, + BD1821022C3B758BEA9CB5616F987BC7 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -6302,15 +6532,6 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - DDFDCCDD059A0AA2C5DEAA3588DE41A7 /* Build configuration list for PBXNativeTarget "JXPagingView-JXPagerView" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - B413A840D435DD0DE4EA09E77C5232AA /* Debug */, - 056C2C119D321A1782845A1C09FB3561 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; E7624967EDC883D80ED3DA81C495736B /* Build configuration list for PBXNativeTarget "LookinServer" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -6329,11 +6550,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - F688458307583BA2FC79B1282B37D611 /* Build configuration list for PBXNativeTarget "JXCategoryView-JXCategoryView" */ = { + FB913463BEC55EE719AD5BC32990DB46 /* Build configuration list for PBXNativeTarget "SDWebImage-SDWebImage" */ = { isa = XCConfigurationList; buildConfigurations = ( - 53552C84CADFAFE2D92EA24C81A4B387 /* Debug */, - 4414117132ADFB2C5F5B1E433FC53228 /* Release */, + D9D1855EA0BF7C903F0263AEDAADE1E7 /* Debug */, + 124345EDBC5F34B7AF5C60B83C477235 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LYEmptyView.xcscheme b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LYEmptyView.xcscheme new file mode 100644 index 0000000..0994b8d --- /dev/null +++ b/Pods/Pods.xcodeproj/xcuserdata/mac.xcuserdatad/xcschemes/LYEmptyView.xcscheme @@ -0,0 +1,58 @@ + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Pods/Target Support Files/LYEmptyView/LYEmptyView-Info.plist b/Pods/Target Support Files/LYEmptyView/LYEmptyView-Info.plist new file mode 100644 index 0000000..77bb479 --- /dev/null +++ b/Pods/Target Support Files/LYEmptyView/LYEmptyView-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.3.1 + CFBundleSignature + ???? + CFBundleVersion + ${CURRENT_PROJECT_VERSION} + NSPrincipalClass + + + diff --git a/Pods/Target Support Files/LYEmptyView/LYEmptyView-dummy.m b/Pods/Target Support Files/LYEmptyView/LYEmptyView-dummy.m new file mode 100644 index 0000000..5a0e24f --- /dev/null +++ b/Pods/Target Support Files/LYEmptyView/LYEmptyView-dummy.m @@ -0,0 +1,5 @@ +#import +@interface PodsDummy_LYEmptyView : NSObject +@end +@implementation PodsDummy_LYEmptyView +@end diff --git a/Pods/Target Support Files/LYEmptyView/LYEmptyView-prefix.pch b/Pods/Target Support Files/LYEmptyView/LYEmptyView-prefix.pch new file mode 100644 index 0000000..beb2a24 --- /dev/null +++ b/Pods/Target Support Files/LYEmptyView/LYEmptyView-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/Pods/Target Support Files/LYEmptyView/LYEmptyView-umbrella.h b/Pods/Target Support Files/LYEmptyView/LYEmptyView-umbrella.h new file mode 100644 index 0000000..13a8301 --- /dev/null +++ b/Pods/Target Support Files/LYEmptyView/LYEmptyView-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 "LYEmptyBaseView.h" +#import "LYEmptyView.h" +#import "LYEmptyViewHeader.h" +#import "UIView+Empty.h" +#import "UIView+LYExtension.h" + +FOUNDATION_EXPORT double LYEmptyViewVersionNumber; +FOUNDATION_EXPORT const unsigned char LYEmptyViewVersionString[]; + diff --git a/Pods/Target Support Files/LYEmptyView/LYEmptyView.debug.xcconfig b/Pods/Target Support Files/LYEmptyView/LYEmptyView.debug.xcconfig new file mode 100644 index 0000000..83c7092 --- /dev/null +++ b/Pods/Target Support Files/LYEmptyView/LYEmptyView.debug.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LYEmptyView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +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}/LYEmptyView +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/Pods/Target Support Files/LYEmptyView/LYEmptyView.modulemap b/Pods/Target Support Files/LYEmptyView/LYEmptyView.modulemap new file mode 100644 index 0000000..7bc3100 --- /dev/null +++ b/Pods/Target Support Files/LYEmptyView/LYEmptyView.modulemap @@ -0,0 +1,6 @@ +framework module LYEmptyView { + umbrella header "LYEmptyView-umbrella.h" + + export * + module * { export * } +} diff --git a/Pods/Target Support Files/LYEmptyView/LYEmptyView.release.xcconfig b/Pods/Target Support Files/LYEmptyView/LYEmptyView.release.xcconfig new file mode 100644 index 0000000..83c7092 --- /dev/null +++ b/Pods/Target Support Files/LYEmptyView/LYEmptyView.release.xcconfig @@ -0,0 +1,12 @@ +CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO +CONFIGURATION_BUILD_DIR = ${PODS_CONFIGURATION_BUILD_DIR}/LYEmptyView +GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 +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}/LYEmptyView +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/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown index 4a433e6..811fe3a 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.markdown @@ -183,6 +183,31 @@ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +## LYEmptyView + +MIT License + +Copyright (c) 2017 yang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + ## LookinServer MIT License diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist index 446a6f9..6b69ac6 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-acknowledgements.plist @@ -246,6 +246,37 @@ THE SOFTWARE. FooterText MIT License +Copyright (c) 2017 yang + +Permission is hereby granted, free of charge, to any person obtaining a copy +of this software and associated documentation files (the "Software"), to deal +in the Software without restriction, including without limitation the rights +to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +copies of the Software, and to permit persons to whom the Software is +furnished to do so, subject to the following conditions: + +The above copyright notice and this permission notice shall be included in all +copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +SOFTWARE. + + License + MIT + Title + LYEmptyView + Type + PSGroupSpecifier + + + FooterText + MIT License + Copyright (c) [2023] [LI KAI] Permission is hereby granted, free of charge, to any person obtaining a copy diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist index 466ee5a..34d8e4e 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-input-files.xcfilelist @@ -7,6 +7,7 @@ ${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework ${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework ${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework ${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework +${BUILT_PRODUCTS_DIR}/LYEmptyView/LYEmptyView.framework ${BUILT_PRODUCTS_DIR}/LookinServer/LookinServer.framework ${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework ${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist index 41036e9..9d68623 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Debug-output-files.xcfilelist @@ -6,6 +6,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTPopView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTTimer.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LYEmptyView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LookinServer.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist index a7b1474..b977d53 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-input-files.xcfilelist @@ -7,6 +7,7 @@ ${BUILT_PRODUCTS_DIR}/JXCategoryView/JXCategoryView.framework ${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework ${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework ${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework +${BUILT_PRODUCTS_DIR}/LYEmptyView/LYEmptyView.framework ${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework ${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework ${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist index 6400ccd..f4eb712 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-Release-output-files.xcfilelist @@ -6,6 +6,7 @@ ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXCategoryView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/JXPagingView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTPopView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LSTTimer.framework +${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/LYEmptyView.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MBProgressHUD.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJExtension.framework ${TARGET_BUILD_DIR}/${FRAMEWORKS_FOLDER_PATH}/MJRefresh.framework diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh index b51cb50..66535f4 100755 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh @@ -184,6 +184,7 @@ if [[ "$CONFIGURATION" == "Debug" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework" + install_framework "${BUILT_PRODUCTS_DIR}/LYEmptyView/LYEmptyView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LookinServer/LookinServer.framework" install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework" @@ -200,6 +201,7 @@ if [[ "$CONFIGURATION" == "Release" ]]; then install_framework "${BUILT_PRODUCTS_DIR}/JXPagingView/JXPagingView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTPopView/LSTPopView.framework" install_framework "${BUILT_PRODUCTS_DIR}/LSTTimer/LSTTimer.framework" + install_framework "${BUILT_PRODUCTS_DIR}/LYEmptyView/LYEmptyView.framework" install_framework "${BUILT_PRODUCTS_DIR}/MBProgressHUD/MBProgressHUD.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJExtension/MJExtension.framework" install_framework "${BUILT_PRODUCTS_DIR}/MJRefresh/MJRefresh.framework" diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig index 490ea4d..96285cf 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/LYEmptyView" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LYEmptyView/LYEmptyView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LookinServer/LookinServer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LSTPopView" -framework "LSTTimer" -framework "LookinServer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +OTHER_LDFLAGS = $(inherited) -framework "AFNetworking" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LSTPopView" -framework "LSTTimer" -framework "LYEmptyView" -framework "LookinServer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/LYEmptyView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LookinServer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig index 1e97dd5..c13eb51 100644 --- a/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig +++ b/Pods/Target Support Files/Pods-keyBoard/Pods-keyBoard.release.xcconfig @@ -1,10 +1,10 @@ CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = NO -FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_ROOT}/Bugly" +FRAMEWORK_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "${PODS_CONFIGURATION_BUILD_DIR}/LYEmptyView" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" "${PODS_ROOT}/Bugly" GCC_PREPROCESSOR_DEFINITIONS = $(inherited) COCOAPODS=1 -HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" +HEADER_SEARCH_PATHS = $(inherited) "${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking/AFNetworking.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet/DZNEmptyDataSet.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage/FLAnimatedImage.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal/HWPanModal.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView/JXCategoryView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView/JXPagingView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView/LSTPopView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer/LSTTimer.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/LYEmptyView/LYEmptyView.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD/MBProgressHUD.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJExtension/MJExtension.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh/MJRefresh.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/Masonry/Masonry.framework/Headers" "${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage/SDWebImage.framework/Headers" LD_RUNPATH_SEARCH_PATHS = $(inherited) '@executable_path/Frameworks' '@loader_path/Frameworks' -OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AFNetworking" -framework "Bugly" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LSTPopView" -framework "LSTTimer" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" -OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" +OTHER_LDFLAGS = $(inherited) -ObjC -l"c++" -l"z" -framework "AFNetworking" -framework "Bugly" -framework "CoreGraphics" -framework "DZNEmptyDataSet" -framework "FLAnimatedImage" -framework "Foundation" -framework "HWPanModal" -framework "ImageIO" -framework "JXCategoryView" -framework "JXPagingView" -framework "LSTPopView" -framework "LSTTimer" -framework "LYEmptyView" -framework "MBProgressHUD" -framework "MJExtension" -framework "MJRefresh" -framework "Masonry" -framework "QuartzCore" -framework "SDWebImage" -framework "Security" -framework "SystemConfiguration" -framework "UIKit" +OTHER_MODULE_VERIFIER_FLAGS = $(inherited) "-F${PODS_CONFIGURATION_BUILD_DIR}/AFNetworking" "-F${PODS_CONFIGURATION_BUILD_DIR}/Bugly" "-F${PODS_CONFIGURATION_BUILD_DIR}/DZNEmptyDataSet" "-F${PODS_CONFIGURATION_BUILD_DIR}/FLAnimatedImage" "-F${PODS_CONFIGURATION_BUILD_DIR}/HWPanModal" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXCategoryView" "-F${PODS_CONFIGURATION_BUILD_DIR}/JXPagingView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTPopView" "-F${PODS_CONFIGURATION_BUILD_DIR}/LSTTimer" "-F${PODS_CONFIGURATION_BUILD_DIR}/LYEmptyView" "-F${PODS_CONFIGURATION_BUILD_DIR}/MBProgressHUD" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJExtension" "-F${PODS_CONFIGURATION_BUILD_DIR}/MJRefresh" "-F${PODS_CONFIGURATION_BUILD_DIR}/Masonry" "-F${PODS_CONFIGURATION_BUILD_DIR}/SDWebImage" PODS_BUILD_DIR = ${BUILD_DIR} PODS_CONFIGURATION_BUILD_DIR = ${PODS_BUILD_DIR}/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME) PODS_PODFILE_DIR_PATH = ${SRCROOT}/. diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 7820df6..6b89a7e 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -70,6 +70,8 @@ 048908EF2EBF861800FABA60 /* KBSkinSectionTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908EE2EBF861800FABA60 /* KBSkinSectionTitleCell.m */; }; 048908F22EC047FD00FABA60 /* KBShopHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908F12EC047FD00FABA60 /* KBShopHeadView.m */; }; 048908F52EC0496400FABA60 /* KBShopItemVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908F42EC0496400FABA60 /* KBShopItemVC.m */; }; + 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */; }; + 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -124,8 +126,6 @@ A1B2E1012EBC7AAA00000001 /* KBTopThreeView.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2E0022EBC7AAA00000001 /* KBTopThreeView.m */; }; A1B2E1022EBC7AAA00000001 /* HomeHotCell.m in Sources */ = {isa = PBXBuildFile; fileRef = A1B2E0042EBC7AAA00000001 /* HomeHotCell.m */; }; ECC9EE02174D86E8D792472F /* Pods_keyBoard.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 967065BB5230E43F293B3AF9 /* Pods_keyBoard.framework */; }; - 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */; }; - 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ @@ -250,6 +250,10 @@ 048908F12EC047FD00FABA60 /* KBShopHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBShopHeadView.m; sourceTree = ""; }; 048908F32EC0496400FABA60 /* KBShopItemVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBShopItemVC.h; sourceTree = ""; }; 048908F42EC0496400FABA60 /* KBShopItemVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBShopItemVC.m; sourceTree = ""; }; + 048909F02EC0AAAA00FABA60 /* KBCategoryTitleCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleCell.h; sourceTree = ""; }; + 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleCell.m; sourceTree = ""; }; + 048909F22EC0AAAA00FABA60 /* KBCategoryTitleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleView.h; sourceTree = ""; }; + 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleView.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -355,10 +359,6 @@ B12EC429812407B9F0E67565 /* Pods-CustomKeyboard.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CustomKeyboard.release.xcconfig"; path = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.release.xcconfig"; sourceTree = ""; }; B8CA018AB878499327504AAD /* Pods-CustomKeyboard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-CustomKeyboard.debug.xcconfig"; path = "Target Support Files/Pods-CustomKeyboard/Pods-CustomKeyboard.debug.xcconfig"; sourceTree = ""; }; F67DDBD716E4E616D8CC2C9C /* Pods-keyBoard.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; name = "Pods-keyBoard.debug.xcconfig"; path = "Target Support Files/Pods-keyBoard/Pods-keyBoard.debug.xcconfig"; sourceTree = ""; }; - 048909F02EC0AAAA00FABA60 /* KBCategoryTitleCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleCell.h; sourceTree = ""; }; - 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleCell.m; sourceTree = ""; }; - 048909F22EC0AAAA00FABA60 /* KBCategoryTitleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleView.h; sourceTree = ""; }; - 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleView.m; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ @@ -496,10 +496,10 @@ children = ( 048908F02EC047FD00FABA60 /* KBShopHeadView.h */, 048908F12EC047FD00FABA60 /* KBShopHeadView.m */, - 048909F02EC0AAAA00FABA60 /* KBCategoryTitleCell.h */, - 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */, - 048909F22EC0AAAA00FABA60 /* KBCategoryTitleView.h */, - 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */, + 048909F02EC0AAAA00FABA60 /* KBCategoryTitleCell.h */, + 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */, + 048909F22EC0AAAA00FABA60 /* KBCategoryTitleView.h */, + 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */, ); path = V; sourceTree = ""; @@ -1239,14 +1239,10 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); - inputPaths = ( - ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); - outputPaths = ( - ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh\"\n"; @@ -1308,8 +1304,8 @@ isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */, - 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */, + 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */, + 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */, 04FC95E92EB23B67007BD342 /* KBNetworkManager.m in Sources */, 04FC95D22EB1E7AE007BD342 /* MyVC.m in Sources */, 047C65582EBCC06D0035E841 /* HomeRankCardCell.m in Sources */, From aa71cc3c4f3a17494c79a0dcb051a4a62402e13e Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 20:54:30 +0800 Subject: [PATCH 44/47] 1 --- Podfile | 2 +- Podfile.lock | 4 ++-- Pods/Manifest.lock | 4 ++-- 3 files changed, 5 insertions(+), 5 deletions(-) diff --git a/Podfile b/Podfile index 4a60ff4..f7adfc1 100644 --- a/Podfile +++ b/Podfile @@ -15,7 +15,7 @@ target 'keyBoard' do pod 'HWPanModal', '~> 0.9.9' pod 'LSTPopView', '~> 0.3.10' pod 'LookinServer', :configurations => ['Debug'] - pod 'LYEmptyView' + pod 'LYEmptyView', '~> 1.3.1' pod 'Masonry', '1.1.0' pod 'MBProgressHUD', '1.2.0' pod 'MJExtension', '3.4.2' diff --git a/Podfile.lock b/Podfile.lock index b42892d..3166a6d 100644 --- a/Podfile.lock +++ b/Podfile.lock @@ -48,7 +48,7 @@ DEPENDENCIES: - JXPagingView/Pager (~> 2.1.3) - LookinServer - LSTPopView (~> 0.3.10) - - LYEmptyView + - LYEmptyView (~> 1.3.1) - Masonry (= 1.1.0) - MBProgressHUD (= 1.2.0) - MJExtension (= 3.4.2) @@ -92,6 +92,6 @@ SPEC CHECKSUMS: MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: e5e2037c9180ed40ba4a0e264e837eaf839ca6b2 +PODFILE CHECKSUM: 74f734479eb0a17a905a260cec140c37703d4479 COCOAPODS: 1.16.2 diff --git a/Pods/Manifest.lock b/Pods/Manifest.lock index b42892d..3166a6d 100644 --- a/Pods/Manifest.lock +++ b/Pods/Manifest.lock @@ -48,7 +48,7 @@ DEPENDENCIES: - JXPagingView/Pager (~> 2.1.3) - LookinServer - LSTPopView (~> 0.3.10) - - LYEmptyView + - LYEmptyView (~> 1.3.1) - Masonry (= 1.1.0) - MBProgressHUD (= 1.2.0) - MJExtension (= 3.4.2) @@ -92,6 +92,6 @@ SPEC CHECKSUMS: MJRefresh: ff9e531227924c84ce459338414550a05d2aea78 SDWebImage: f29024626962457f3470184232766516dee8dfea -PODFILE CHECKSUM: e5e2037c9180ed40ba4a0e264e837eaf839ca6b2 +PODFILE CHECKSUM: 74f734479eb0a17a905a260cec140c37703d4479 COCOAPODS: 1.16.2 From 2415e97c97968ad6e37233cacca55514c61f364e Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 21:05:03 +0800 Subject: [PATCH 45/47] fix --- keyBoard.xcodeproj/project.pbxproj | 12 ++++++++ keyBoard/Class/Home/VC/HomeRankVC.m | 6 ++-- .../Class/Shop/V/KBCategoryTitleImageCell.h | 14 ++++++++++ .../Class/Shop/V/KBCategoryTitleImageCell.m | 28 +++++++++++++++++++ .../Class/Shop/V/KBCategoryTitleImageView.h | 14 ++++++++++ .../Class/Shop/V/KBCategoryTitleImageView.m | 18 ++++++++++++ 6 files changed, 90 insertions(+), 2 deletions(-) create mode 100644 keyBoard/Class/Shop/V/KBCategoryTitleImageCell.h create mode 100644 keyBoard/Class/Shop/V/KBCategoryTitleImageCell.m create mode 100644 keyBoard/Class/Shop/V/KBCategoryTitleImageView.h create mode 100644 keyBoard/Class/Shop/V/KBCategoryTitleImageView.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 6b89a7e..775ebaf 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -72,6 +72,8 @@ 048908F52EC0496400FABA60 /* KBShopItemVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908F42EC0496400FABA60 /* KBShopItemVC.m */; }; 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */; }; 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */; }; + 04890A042EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04890A012EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m */; }; + 04890A052EC0BBBB00FABA60 /* KBCategoryTitleImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04890A032EC0BBBB00FABA60 /* KBCategoryTitleImageView.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -254,6 +256,10 @@ 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleCell.m; sourceTree = ""; }; 048909F22EC0AAAA00FABA60 /* KBCategoryTitleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleView.h; sourceTree = ""; }; 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleView.m; sourceTree = ""; }; + 04890A002EC0BBBB00FABA60 /* KBCategoryTitleImageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleImageCell.h; sourceTree = ""; }; + 04890A012EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleImageCell.m; sourceTree = ""; }; + 04890A022EC0BBBB00FABA60 /* KBCategoryTitleImageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleImageView.h; sourceTree = ""; }; + 04890A032EC0BBBB00FABA60 /* KBCategoryTitleImageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleImageView.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -500,6 +506,10 @@ 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */, 048909F22EC0AAAA00FABA60 /* KBCategoryTitleView.h */, 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */, + 04890A002EC0BBBB00FABA60 /* KBCategoryTitleImageCell.h */, + 04890A012EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m */, + 04890A022EC0BBBB00FABA60 /* KBCategoryTitleImageView.h */, + 04890A032EC0BBBB00FABA60 /* KBCategoryTitleImageView.m */, ); path = V; sourceTree = ""; @@ -1306,6 +1316,8 @@ files = ( 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */, 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */, + 04890A042EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m in Sources */, + 04890A052EC0BBBB00FABA60 /* KBCategoryTitleImageView.m in Sources */, 04FC95E92EB23B67007BD342 /* KBNetworkManager.m in Sources */, 04FC95D22EB1E7AE007BD342 /* MyVC.m in Sources */, 047C65582EBCC06D0035E841 /* HomeRankCardCell.m in Sources */, diff --git a/keyBoard/Class/Home/VC/HomeRankVC.m b/keyBoard/Class/Home/VC/HomeRankVC.m index 8be82b6..19733bb 100644 --- a/keyBoard/Class/Home/VC/HomeRankVC.m +++ b/keyBoard/Class/Home/VC/HomeRankVC.m @@ -7,6 +7,7 @@ #import "HomeRankVC.h" #import "HomeRankContentVC.h" +#import "KBCategoryTitleImageView.h" @interface HomeRankVC () @property (nonatomic, strong) NSArray *titles; @@ -114,9 +115,10 @@ // 分页菜单视图 - (JXCategoryTitleImageView *)myCategoryView { if (!_myCategoryView) { - _myCategoryView = [[JXCategoryTitleImageView alloc] init]; + // Use our subclass so cells get a 4pt rounded background locally + _myCategoryView = (JXCategoryTitleImageView *)[[KBCategoryTitleImageView alloc] init]; _myCategoryView.delegate = self; - + // !!!: 将列表容器视图关联到 categoryView _myCategoryView.listContainer = self.listContainerView; } diff --git a/keyBoard/Class/Shop/V/KBCategoryTitleImageCell.h b/keyBoard/Class/Shop/V/KBCategoryTitleImageCell.h new file mode 100644 index 0000000..6e48cc7 --- /dev/null +++ b/keyBoard/Class/Shop/V/KBCategoryTitleImageCell.h @@ -0,0 +1,14 @@ +// +// KBCategoryTitleImageCell.h +// keyBoard +// +// A JXCategoryTitleImageCell subclass that rounds the cell's contentView +// without changing the third-party JXCategoryView source code. +// + +#import + +@interface KBCategoryTitleImageCell : JXCategoryTitleImageCell + +@end + diff --git a/keyBoard/Class/Shop/V/KBCategoryTitleImageCell.m b/keyBoard/Class/Shop/V/KBCategoryTitleImageCell.m new file mode 100644 index 0000000..a604c1d --- /dev/null +++ b/keyBoard/Class/Shop/V/KBCategoryTitleImageCell.m @@ -0,0 +1,28 @@ +// +// KBCategoryTitleImageCell.m +// keyBoard +// +// Sets `contentView.layer.cornerRadius = 4` for title+image cells, so the +// background color that JXCategoryView applies is shown as a rounded rect. +// + +#import "KBCategoryTitleImageCell.h" + +@implementation KBCategoryTitleImageCell + +- (void)initializeViews { + [super initializeViews]; + // Round the cell background once; keep clipping within the rounded rect. + self.contentView.layer.cornerRadius = 4.0; + self.contentView.layer.masksToBounds = YES; +} + +// Defensive: if layout changes reset layer (some frameworks tweak layers in layout) +- (void)layoutSubviews { + [super layoutSubviews]; + self.contentView.layer.cornerRadius = 4.0; + self.contentView.layer.masksToBounds = YES; +} + +@end + diff --git a/keyBoard/Class/Shop/V/KBCategoryTitleImageView.h b/keyBoard/Class/Shop/V/KBCategoryTitleImageView.h new file mode 100644 index 0000000..13e783c --- /dev/null +++ b/keyBoard/Class/Shop/V/KBCategoryTitleImageView.h @@ -0,0 +1,14 @@ +// +// KBCategoryTitleImageView.h +// keyBoard +// +// Registers KBCategoryTitleImageCell so we can round cells locally +// without touching the JXCategoryView pod. +// + +#import + +@interface KBCategoryTitleImageView : JXCategoryTitleImageView + +@end + diff --git a/keyBoard/Class/Shop/V/KBCategoryTitleImageView.m b/keyBoard/Class/Shop/V/KBCategoryTitleImageView.m new file mode 100644 index 0000000..720a977 --- /dev/null +++ b/keyBoard/Class/Shop/V/KBCategoryTitleImageView.m @@ -0,0 +1,18 @@ +// +// KBCategoryTitleImageView.m +// keyBoard +// +// Use our rounded KBCategoryTitleImageCell for this view instance. +// + +#import "KBCategoryTitleImageView.h" +#import "KBCategoryTitleImageCell.h" + +@implementation KBCategoryTitleImageView + +- (Class)preferredCellClass { + return [KBCategoryTitleImageCell class]; +} + +@end + From 5e1a1f540e69ba0acb9589a098a32c443f4ed81c Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Sun, 9 Nov 2025 21:41:35 +0800 Subject: [PATCH 46/47] 1 --- keyBoard.xcodeproj/project.pbxproj | 34 ++++--- keyBoard/Class/Base/V/BaseTableView.h | 16 ++++ keyBoard/Class/Base/V/BaseTableView.m | 71 +++++++++++++++ .../Class/Base/V/UIScrollView+KBEmptyView.h | 40 +++++++++ .../Class/Base/V/UIScrollView+KBEmptyView.m | 90 +++++++++++++++++++ keyBoard/Class/Me/VC/KBSkinDetailVC.m | 8 -- keyBoard/Class/Me/VC/MySkinVC.m | 61 ++++++++++--- keyBoard/Class/Me/VC/MyVC.m | 6 +- keyBoard/Class/Shop/VC/KBShopItemVC.m | 1 - 9 files changed, 289 insertions(+), 38 deletions(-) create mode 100644 keyBoard/Class/Base/V/UIScrollView+KBEmptyView.h create mode 100644 keyBoard/Class/Base/V/UIScrollView+KBEmptyView.m diff --git a/keyBoard.xcodeproj/project.pbxproj b/keyBoard.xcodeproj/project.pbxproj index 775ebaf..8b4afcc 100644 --- a/keyBoard.xcodeproj/project.pbxproj +++ b/keyBoard.xcodeproj/project.pbxproj @@ -70,10 +70,11 @@ 048908EF2EBF861800FABA60 /* KBSkinSectionTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908EE2EBF861800FABA60 /* KBSkinSectionTitleCell.m */; }; 048908F22EC047FD00FABA60 /* KBShopHeadView.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908F12EC047FD00FABA60 /* KBShopHeadView.m */; }; 048908F52EC0496400FABA60 /* KBShopItemVC.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908F42EC0496400FABA60 /* KBShopItemVC.m */; }; + 048908FE2EC0CC2400FABA60 /* UIScrollView+KBEmptyView.m in Sources */ = {isa = PBXBuildFile; fileRef = 048908FD2EC0CC2400FABA60 /* UIScrollView+KBEmptyView.m */; }; 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */; }; 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */; }; - 04890A042EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04890A012EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m */; }; - 04890A052EC0BBBB00FABA60 /* KBCategoryTitleImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04890A032EC0BBBB00FABA60 /* KBCategoryTitleImageView.m */; }; + 04890A042EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 04890A012EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m */; }; + 04890A052EC0BBBB00FABA60 /* KBCategoryTitleImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = 04890A032EC0BBBB00FABA60 /* KBCategoryTitleImageView.m */; }; 04A9FE0F2EB481100020DB6D /* KBHUD.m in Sources */ = {isa = PBXBuildFile; fileRef = 04FC97082EB31B14007BD342 /* KBHUD.m */; }; 04A9FE132EB4D0D20020DB6D /* KBFullAccessManager.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */; }; 04A9FE162EB873C80020DB6D /* UIViewController+Extension.m in Sources */ = {isa = PBXBuildFile; fileRef = 04A9FE152EB873C80020DB6D /* UIViewController+Extension.m */; }; @@ -252,14 +253,16 @@ 048908F12EC047FD00FABA60 /* KBShopHeadView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBShopHeadView.m; sourceTree = ""; }; 048908F32EC0496400FABA60 /* KBShopItemVC.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBShopItemVC.h; sourceTree = ""; }; 048908F42EC0496400FABA60 /* KBShopItemVC.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBShopItemVC.m; sourceTree = ""; }; + 048908FC2EC0CC2400FABA60 /* UIScrollView+KBEmptyView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "UIScrollView+KBEmptyView.h"; sourceTree = ""; }; + 048908FD2EC0CC2400FABA60 /* UIScrollView+KBEmptyView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = "UIScrollView+KBEmptyView.m"; sourceTree = ""; }; 048909F02EC0AAAA00FABA60 /* KBCategoryTitleCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleCell.h; sourceTree = ""; }; 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleCell.m; sourceTree = ""; }; 048909F22EC0AAAA00FABA60 /* KBCategoryTitleView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleView.h; sourceTree = ""; }; 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleView.m; sourceTree = ""; }; - 04890A002EC0BBBB00FABA60 /* KBCategoryTitleImageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleImageCell.h; sourceTree = ""; }; - 04890A012EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleImageCell.m; sourceTree = ""; }; - 04890A022EC0BBBB00FABA60 /* KBCategoryTitleImageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleImageView.h; sourceTree = ""; }; - 04890A032EC0BBBB00FABA60 /* KBCategoryTitleImageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleImageView.m; sourceTree = ""; }; + 04890A002EC0BBBB00FABA60 /* KBCategoryTitleImageCell.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleImageCell.h; sourceTree = ""; }; + 04890A012EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleImageCell.m; sourceTree = ""; }; + 04890A022EC0BBBB00FABA60 /* KBCategoryTitleImageView.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBCategoryTitleImageView.h; sourceTree = ""; }; + 04890A032EC0BBBB00FABA60 /* KBCategoryTitleImageView.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBCategoryTitleImageView.m; sourceTree = ""; }; 04A9A67D2EB9E1690023B8F4 /* KBResponderUtils.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBResponderUtils.h; sourceTree = ""; }; 04A9FE102EB4D0D20020DB6D /* KBFullAccessManager.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = KBFullAccessManager.h; sourceTree = ""; }; 04A9FE112EB4D0D20020DB6D /* KBFullAccessManager.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = KBFullAccessManager.m; sourceTree = ""; }; @@ -506,10 +509,10 @@ 048909F12EC0AAAA00FABA60 /* KBCategoryTitleCell.m */, 048909F22EC0AAAA00FABA60 /* KBCategoryTitleView.h */, 048909F32EC0AAAA00FABA60 /* KBCategoryTitleView.m */, - 04890A002EC0BBBB00FABA60 /* KBCategoryTitleImageCell.h */, - 04890A012EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m */, - 04890A022EC0BBBB00FABA60 /* KBCategoryTitleImageView.h */, - 04890A032EC0BBBB00FABA60 /* KBCategoryTitleImageView.m */, + 04890A002EC0BBBB00FABA60 /* KBCategoryTitleImageCell.h */, + 04890A012EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m */, + 04890A022EC0BBBB00FABA60 /* KBCategoryTitleImageView.h */, + 04890A032EC0BBBB00FABA60 /* KBCategoryTitleImageView.m */, ); path = V; sourceTree = ""; @@ -883,6 +886,8 @@ 04FC95D42EB1EA16007BD342 /* BaseCell.m */, 04FC95D52EB1EA16007BD342 /* BaseTableView.h */, 04FC95D62EB1EA16007BD342 /* BaseTableView.m */, + 048908FC2EC0CC2400FABA60 /* UIScrollView+KBEmptyView.h */, + 048908FD2EC0CC2400FABA60 /* UIScrollView+KBEmptyView.m */, ); path = V; sourceTree = ""; @@ -1249,10 +1254,14 @@ inputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-${CONFIGURATION}-input-files.xcfilelist", ); + inputPaths = ( + ); name = "[CP] Embed Pods Frameworks"; outputFileListPaths = ( "${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks-${CONFIGURATION}-output-files.xcfilelist", ); + outputPaths = ( + ); runOnlyForDeploymentPostprocessing = 0; shellPath = /bin/sh; shellScript = "\"${PODS_ROOT}/Target Support Files/Pods-keyBoard/Pods-keyBoard-frameworks.sh\"\n"; @@ -1316,8 +1325,8 @@ files = ( 048909F62EC0AAAA00FABA60 /* KBCategoryTitleCell.m in Sources */, 048909F72EC0AAAA00FABA60 /* KBCategoryTitleView.m in Sources */, - 04890A042EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m in Sources */, - 04890A052EC0BBBB00FABA60 /* KBCategoryTitleImageView.m in Sources */, + 04890A042EC0BBBB00FABA60 /* KBCategoryTitleImageCell.m in Sources */, + 04890A052EC0BBBB00FABA60 /* KBCategoryTitleImageView.m in Sources */, 04FC95E92EB23B67007BD342 /* KBNetworkManager.m in Sources */, 04FC95D22EB1E7AE007BD342 /* MyVC.m in Sources */, 047C65582EBCC06D0035E841 /* HomeRankCardCell.m in Sources */, @@ -1357,6 +1366,7 @@ 04FC97062EB30A00007BD342 /* KBGuideUserCell.m in Sources */, 04FC97092EB31B14007BD342 /* KBHUD.m in Sources */, 04FC970E2EB334F8007BD342 /* UIImageView+KBWebImage.m in Sources */, + 048908FE2EC0CC2400FABA60 /* UIScrollView+KBEmptyView.m in Sources */, 04FC970F2EB334F8007BD342 /* KBWebImageManager.m in Sources */, 04FC95CF2EB1E7A1007BD342 /* HomeVC.m in Sources */, A1B2D7022EB8C00100000001 /* KBLangTestVC.m in Sources */, diff --git a/keyBoard/Class/Base/V/BaseTableView.h b/keyBoard/Class/Base/V/BaseTableView.h index 9395838..b6777a7 100644 --- a/keyBoard/Class/Base/V/BaseTableView.h +++ b/keyBoard/Class/Base/V/BaseTableView.h @@ -40,6 +40,22 @@ typedef void(^KBEmptyAction)(void); /// 触发刷新空数据视图(若集成了 DZNEmptyDataSet 则调用其 reloadEmptyDataSet) - (void)kb_reloadEmptyDataSet; +/// 使用 LYEmptyView 在表格页快速挂载一套统一样式的空态视图(与 DZNEmptyDataSet 二选一) +/// 注意:调用该方法会自动关闭本类内置的 DZNEmptyDataSet(useEmptyDataSet = NO),避免冲突。 +/// - Parameters: +/// - image: 占位图(可空) +/// - title: 标题(默认“暂无数据”) +/// - detail: 描述(可空) +/// - buttonTitle: 按钮标题(可空,传空则不展示按钮) +/// - tapHandler: 点击空白区域回调(可空) +/// - buttonHandler: 按钮点击回调(可空) +- (void)kb_makeDefaultEmptyViewWithImage:(nullable UIImage *)image + title:(nullable NSString *)title + detail:(nullable NSString *)detail + buttonTitle:(nullable NSString *)buttonTitle + tapHandler:(nullable KBEmptyAction)tapHandler + buttonHandler:(nullable KBEmptyAction)buttonHandler; + @end NS_ASSUME_NONNULL_END diff --git a/keyBoard/Class/Base/V/BaseTableView.m b/keyBoard/Class/Base/V/BaseTableView.m index 0d743e3..ff1e49f 100644 --- a/keyBoard/Class/Base/V/BaseTableView.m +++ b/keyBoard/Class/Base/V/BaseTableView.m @@ -13,6 +13,15 @@ #define KB_HAS_DZN 0 #endif +// 可选引入:LYEmptyView(通过 Pod 集成),用于空态视图的“自动显隐+属性配置”方案 +#if __has_include() +#import +#import +#define KB_HAS_LY 1 +#else +#define KB_HAS_LY 0 +#endif + @interface BaseTableView () #if KB_HAS_DZN @@ -127,4 +136,66 @@ #endif +// MARK: - LYEmptyView 快速挂载(与 DZN 二选一) +- (void)kb_makeDefaultEmptyViewWithImage:(UIImage *)image + title:(NSString *)title + detail:(NSString *)detail + buttonTitle:(NSString *)buttonTitle + tapHandler:(KBEmptyAction)tapHandler + buttonHandler:(KBEmptyAction)buttonHandler { +#if KB_HAS_LY + // 关闭 DZN,避免两套空态叠加 + self.useEmptyDataSet = NO; + + // 默认文案 + NSString *t = title ?: @"暂无数据"; + + LYEmptyView *ev = nil; + if (buttonTitle.length > 0) { + // 带按钮(优先 block 方式) + __weak typeof(self) weakSelf = self; + ev = [LYEmptyView emptyActionViewWithImage:image + titleStr:t + detailStr:detail ?: @"" + btnTitleStr:buttonTitle + btnClickBlock:^{ if (buttonHandler) buttonHandler(); [weakSelf setNeedsLayout]; }]; + } else { + // 无按钮 + ev = [LYEmptyView emptyViewWithImage:image titleStr:t detailStr:detail ?: @""]; + } + + // 点击空白区域 + if (tapHandler) { + ev.tapEmptyViewBlock = ^{ tapHandler(); }; + } + + // 统一样式(可按需微调) + ev.emptyViewIsCompleteCoverSuperView = NO; // 不全屏覆盖,按内容大小布局 + ev.ignoreContentInset = YES; // 忽略 inset,避免导航/安全区影响 + ev.contentViewOffset = -10; // 轻微上移 + ev.subViewMargin = 14; // 子控件间距 + ev.titleLabFont = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + ev.titleLabTextColor = [UIColor colorWithWhite:0.45 alpha:1.0]; + ev.detailLabFont = [UIFont systemFontOfSize:14]; + ev.detailLabTextColor = [UIColor colorWithWhite:0.6 alpha:1.0]; + ev.detailLabLineSpacing = 3; + ev.detailLabMaxLines = 2; + ev.actionBtnFont = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; + ev.actionBtnCornerRadius = 6; + ev.actionBtnBorderWidth = 1; + ev.actionBtnBorderColor = [UIColor colorWithWhite:0.88 alpha:1.0]; + ev.actionBtnTitleColor = [UIColor colorWithRed:0.22 green:0.49 blue:0.96 alpha:1.0]; + ev.actionBtnBackGroundColor = [UIColor whiteColor]; + ev.actionBtnHorizontalMargin = 20; // 自动宽度:文字 + padding*2 + + // 自动显隐交由控制层(网络请求) + ev.autoShowEmptyView = NO; + + self.ly_emptyView = (LYEmptyView *)ev; +#else + // 未集成 LYEmptyView 时不做任何处理,保持兼容 + (void)image; (void)title; (void)detail; (void)buttonTitle; (void)tapHandler; (void)buttonHandler; +#endif +} + @end diff --git a/keyBoard/Class/Base/V/UIScrollView+KBEmptyView.h b/keyBoard/Class/Base/V/UIScrollView+KBEmptyView.h new file mode 100644 index 0000000..c1b15ae --- /dev/null +++ b/keyBoard/Class/Base/V/UIScrollView+KBEmptyView.h @@ -0,0 +1,40 @@ +// +// UIScrollView+KBEmptyView.h +// keyBoard +// +// 统一封装基于 LYEmptyView 的空态视图挂载方法,适用于 UITableView/UICollectionView。 +// 注意:仅在对应页面已通过 CocoaPods 集成 LYEmptyView 时生效。 +// + +#import + +NS_ASSUME_NONNULL_BEGIN + +typedef void(^KBEmptyAction)(void); + +@interface UIScrollView (KBEmptyView) + +/// 快速挂载一套统一样式的空态视图(LYEmptyView) +/// - Parameters: +/// - image: 占位图(可空) +/// - title: 标题(默认“暂无数据”) +/// - detail: 描述(可空) +/// - buttonTitle: 按钮标题(可空,传空则不显示按钮) +/// - tapHandler: 点击空白区域回调(可空) +/// - buttonHandler: 按钮点击回调(可空) +- (void)kb_makeDefaultEmptyViewWithImage:(nullable UIImage *)image + title:(nullable NSString *)title + detail:(nullable NSString *)detail + buttonTitle:(nullable NSString *)buttonTitle + tapHandler:(nullable KBEmptyAction)tapHandler + buttonHandler:(nullable KBEmptyAction)buttonHandler; + +/// 便捷加载态控制:关闭自动显隐后,配合网络请求手动控制显示/隐藏 +- (void)kb_setLYAutoShowEnabled:(BOOL)enabled; // YES=自动显隐;NO=手动 +- (void)kb_beginLoadingForEmpty; // 请求开始:临时隐藏 empty +- (void)kb_endLoadingForEmpty; // 请求结束:根据数据源显示/隐藏(需确保先 reloadData) + +@end + +NS_ASSUME_NONNULL_END + diff --git a/keyBoard/Class/Base/V/UIScrollView+KBEmptyView.m b/keyBoard/Class/Base/V/UIScrollView+KBEmptyView.m new file mode 100644 index 0000000..3c75ad2 --- /dev/null +++ b/keyBoard/Class/Base/V/UIScrollView+KBEmptyView.m @@ -0,0 +1,90 @@ +// +// UIScrollView+KBEmptyView.m +// keyBoard +// + +#import "UIScrollView+KBEmptyView.h" + +#if __has_include() +#import +#import +#define KB_HAS_LY 1 +#else +#define KB_HAS_LY 0 +#endif + +@implementation UIScrollView (KBEmptyView) + +- (void)kb_makeDefaultEmptyViewWithImage:(UIImage *)image + title:(NSString *)title + detail:(NSString *)detail + buttonTitle:(NSString *)buttonTitle + tapHandler:(KBEmptyAction)tapHandler + buttonHandler:(KBEmptyAction)buttonHandler { +#if KB_HAS_LY + NSString *t = title ?: @"暂无数据"; + LYEmptyView *ev = nil; + + if (buttonTitle.length > 0) { + __weak typeof(self) weakSelf = self; + ev = [LYEmptyView emptyActionViewWithImage:image + titleStr:t + detailStr:detail ?: @"" + btnTitleStr:buttonTitle + btnClickBlock:^{ if (buttonHandler) buttonHandler(); [weakSelf setNeedsLayout]; }]; + } else { + ev = [LYEmptyView emptyViewWithImage:image titleStr:t detailStr:detail ?: @""]; + } + + if (tapHandler) { ev.tapEmptyViewBlock = ^{ tapHandler(); }; } + + // 统一样式 + ev.emptyViewIsCompleteCoverSuperView = NO; + ev.ignoreContentInset = YES; + ev.contentViewOffset = -10; + ev.subViewMargin = 14; + ev.titleLabFont = [UIFont systemFontOfSize:16 weight:UIFontWeightSemibold]; + ev.titleLabTextColor = [UIColor colorWithWhite:0.45 alpha:1.0]; + ev.detailLabFont = [UIFont systemFontOfSize:14]; + ev.detailLabTextColor = [UIColor colorWithWhite:0.6 alpha:1.0]; + ev.detailLabLineSpacing = 3; + ev.detailLabMaxLines = 2; + ev.actionBtnFont = [UIFont systemFontOfSize:15 weight:UIFontWeightSemibold]; + ev.actionBtnCornerRadius = 6; + ev.actionBtnBorderWidth = 1; + ev.actionBtnBorderColor = [UIColor colorWithWhite:0.88 alpha:1.0]; + ev.actionBtnTitleColor = [UIColor colorWithRed:0.22 green:0.49 blue:0.96 alpha:1.0]; + ev.actionBtnBackGroundColor = [UIColor whiteColor]; + ev.actionBtnHorizontalMargin = 20; + + // 默认关闭自动显隐,交给调用方用 begin/end 控制 + ev.autoShowEmptyView = NO; + + self.ly_emptyView = ev; +#else + (void)image; (void)title; (void)detail; (void)buttonTitle; (void)tapHandler; (void)buttonHandler; +#endif +} + +- (void)kb_setLYAutoShowEnabled:(BOOL)enabled { +#if KB_HAS_LY + self.ly_emptyView.autoShowEmptyView = enabled; +#else + (void)enabled; +#endif +} + +- (void)kb_beginLoadingForEmpty { +#if KB_HAS_LY + [self ly_startLoading]; +#endif +} + +- (void)kb_endLoadingForEmpty { +#if KB_HAS_LY + [self ly_endLoading]; +#endif +} + +@end + diff --git a/keyBoard/Class/Me/VC/KBSkinDetailVC.m b/keyBoard/Class/Me/VC/KBSkinDetailVC.m index 4670012..10e002b 100644 --- a/keyBoard/Class/Me/VC/KBSkinDetailVC.m +++ b/keyBoard/Class/Me/VC/KBSkinDetailVC.m @@ -1,14 +1,6 @@ // // KBSkinDetailVC.m // keyBoard -// -// 皮肤详情页(UICollectionView 实现) -// 结构: -// - Section0:顶部大卡片(上图,下方左右两段文案) -// - Section1:标签容器 cell(内部再嵌套一个 collectionView 以展示 Cute/Fresh 等标签) -// - Section2:区块标题 cell(例如 “Recommended Skin”) -// - Section3:推荐皮肤 2 列网格(使用已有 KBSkinCardCell) -// #import "KBSkinDetailVC.h" #import diff --git a/keyBoard/Class/Me/VC/MySkinVC.m b/keyBoard/Class/Me/VC/MySkinVC.m index 41bc318..b700196 100644 --- a/keyBoard/Class/Me/VC/MySkinVC.m +++ b/keyBoard/Class/Me/VC/MySkinVC.m @@ -2,17 +2,12 @@ // MySkinVC.m // keyBoard // -// 我的皮肤列表页(支持编辑多选删除)。 -// 需求要点: -// - 顶部右侧 Editor/Cancel 切换 -// - CollectionView Masonry 约束 + 懒加载控件 -// - 自定义 cell,编辑态显示左上角选择圆点,支持多选 -// - 底部 bottomView 展示已选择数量与删除按钮,数量>0 时 Delete 变为 #02BEAC 可点 -// #import "MySkinVC.h" #import #import "UIColor+Extension.h" +#import +#import "UIScrollView+KBEmptyView.h" // 统一空态封装(LYEmptyView) #import "MySkinCell.h" @@ -25,6 +20,7 @@ static NSString * const kMySkinCellId = @"kMySkinCellId"; @property (nonatomic, strong) UIButton *deleteButton; // 删除 @property (nonatomic, strong) NSMutableArray *data; // 简单数据源 +@property (nonatomic, assign) NSInteger loadCount; // 刷新计数(用于演示空/有数据切换) @property (nonatomic, assign, getter=isEditingMode) BOOL editingMode; // 是否编辑态 @end @@ -39,13 +35,8 @@ static NSString * const kMySkinCellId = @"kMySkinCellId"; // 右上角 Editor/Cancel self.navigationItem.rightBarButtonItem = [[UIBarButtonItem alloc] initWithTitle:@"Editor" style:UIBarButtonItemStylePlain target:self action:@selector(onToggleEdit)]; - // 数据源(演示用) - self.data = [@[ - @{ @"title": @"Dopamine" }, - @{ @"title": @"Dopamine" }, - @{ @"title": @"Dopamine" }, - @{ @"title": @"Dopamine" }, - ] mutableCopy]; + // 数据源初始化为空(演示空态 + 下拉刷新) + self.data = [NSMutableArray array]; // 视图 [self.view addSubview:self.collectionView]; @@ -63,10 +54,50 @@ static NSString * const kMySkinCellId = @"kMySkinCellId"; make.height.mas_equalTo(64); }]; + // 空态视图(LYEmptyView)统一样式 + 重试按钮 + __weak typeof(self) weakSelf = self; + [self.collectionView kb_makeDefaultEmptyViewWithImage:nil + title:@"暂无皮肤" + detail:@"下拉刷新试试" + buttonTitle:@"重试" + tapHandler:nil + buttonHandler:^{ [weakSelf.collectionView.mj_header beginRefreshing]; }]; + [self.collectionView kb_setLYAutoShowEnabled:NO]; // 采用手动控制显隐 + + // 立即按当前数据源状态显示一次空态(首屏就应展示空视图) + [self.collectionView kb_endLoadingForEmpty]; + + // 下拉刷新(演示网络加载 + 空态切换) + self.collectionView.mj_header = [MJRefreshNormalHeader headerWithRefreshingTarget:self refreshingAction:@selector(fetchData)]; + + // 首次进入自动刷新 + [self.collectionView.mj_header beginRefreshing]; + // 初始:非编辑态,隐藏底部 self.bottomView.hidden = YES; } +#pragma mark - Data + +- (void)fetchData { + // 模拟网络延迟 1.0s + dispatch_after(dispatch_time(DISPATCH_TIME_NOW, (int64_t)(1.0 * NSEC_PER_SEC)), dispatch_get_main_queue(), ^{ + self.loadCount += 1; + + // 交替返回:奇数次空数据,偶数次有数据(演示空态/非空切换) + [self.data removeAllObjects]; + if (self.loadCount % 2 == 0) { + for (int i = 0; i < 8; i++) { + [self.data addObject:@{ @"title": @"Dopamine" }]; + } + } + + [self.collectionView reloadData]; + [self.collectionView kb_endLoadingForEmpty]; // 根据数据源显示/隐藏 emptyView + [self.collectionView.mj_header endRefreshing]; + }); +} + #pragma mark - Actions - (void)onToggleEdit { @@ -112,6 +143,8 @@ static NSString * const kMySkinCellId = @"kMySkinCellId"; [self.collectionView deleteItemsAtIndexPaths:selected]; } completion:^(BOOL finished) { [self updateBottomUI]; + // 根据当前数据源显隐空视图(删除到 0 条时应显示空态) + [self.collectionView kb_endLoadingForEmpty]; }]; } diff --git a/keyBoard/Class/Me/VC/MyVC.m b/keyBoard/Class/Me/VC/MyVC.m index a422724..d977520 100644 --- a/keyBoard/Class/Me/VC/MyVC.m +++ b/keyBoard/Class/Me/VC/MyVC.m @@ -29,10 +29,10 @@ } - (void)touchesBegan:(NSSet *)touches withEvent:(UIEvent *)event{ -// MySkinVC *vc = [[MySkinVC alloc] init]; - KBSkinDetailVC *vc = [[KBSkinDetailVC alloc] init]; + MySkinVC *vc = [[MySkinVC alloc] init]; +// KBSkinDetailVC *vc = [[KBSkinDetailVC alloc] init]; -// [self.navigationController pushViewController:vc animated:true]; + [self.navigationController pushViewController:vc animated:true]; } /* diff --git a/keyBoard/Class/Shop/VC/KBShopItemVC.m b/keyBoard/Class/Shop/VC/KBShopItemVC.m index 89da023..55e252f 100644 --- a/keyBoard/Class/Shop/VC/KBShopItemVC.m +++ b/keyBoard/Class/Shop/VC/KBShopItemVC.m @@ -10,7 +10,6 @@ #import #import "KBSkinCardCell.h" -/// 商城列表:使用 UICollectionView,两列网格,复用 KBSkinCardCell @interface KBShopItemVC () @property (nonatomic, copy) void(^scrollCallback)(UIScrollView *scrollView); @end From 50dcb78417d040101d599423646ccc923a68dfc6 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Mon, 10 Nov 2025 13:27:26 +0800 Subject: [PATCH 47/47] =?UTF-8?q?=E6=8F=90=E4=BA=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- keyBoard/Class/Home/VC/HomeHotVC.m | 6 +++--- keyBoard/Class/Shop/VC/KBShopVC.m | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/keyBoard/Class/Home/VC/HomeHotVC.m b/keyBoard/Class/Home/VC/HomeHotVC.m index bed2000..1a8e47d 100644 --- a/keyBoard/Class/Home/VC/HomeHotVC.m +++ b/keyBoard/Class/Home/VC/HomeHotVC.m @@ -81,10 +81,10 @@ - (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath { [tableView deselectRowAtIndexPath:indexPath animated:YES]; - KBSearchVC *vc = [[KBSearchVC alloc] init]; +// KBSearchVC *vc = [[KBSearchVC alloc] init]; // [self.navigationController pushViewController:vc animated:true]; - UINavigationController *nav = KB_CURRENT_NAV; - [nav pushViewController:vc animated:true]; +// UINavigationController *nav = KB_CURRENT_NAV; +// [nav pushViewController:vc animated:true]; NSLog(@"==="); } diff --git a/keyBoard/Class/Shop/VC/KBShopVC.m b/keyBoard/Class/Shop/VC/KBShopVC.m index bf50b79..526cd1e 100644 --- a/keyBoard/Class/Shop/VC/KBShopVC.m +++ b/keyBoard/Class/Shop/VC/KBShopVC.m @@ -34,7 +34,7 @@ static const CGFloat JXheightForHeaderInSection = 50; - (void)viewDidLoad { [super viewDidLoad]; - [self setupUI]; +// [self setupUI]; }

    Ay3(Ef?Iaj@DD7zmtr zkFa6YMpTa$5%iQfXAOF3>>8Syuzu|_uDvdntZuY6KeD4#Df}kh#LLVo%i1vf!*n`b z(HB=yOV^>UQE%2WazF!i4ihC-krB&d0?;#yj771`MWrx-+iqHn^4Kuao`;C8cSmPC zl7H^x&8p|yr5wx2x$wFyY&=Ey)-GJ>n<}a8jrh{)E>TfmxW*Od@z_V2ZwfR(mIf#c z0|eX-t6_>5*G-Vp%2!!q1nHCqHAeYt4jFn%YNS%Gi!_ZY_Q2AW15F?fqq}azPW2i@vqv2?8&SOby9xFPVv36-2HW2HUv@mSN=H(5z zbxjlQ=ds9ED_7*O{<`H@wr)8>H;tpGhp_MPAP#kxaITofsJjR~elre_80A?(64Y=qY_Ru{fILoga-NOcb;~s`94odJKl7*2pgo|FpUAv`mQbY`E5QIYT zs4~)Y>v7TKVvHIv$HiWpgFDUA^!X5RycL?Bv108ym{cA%1S|~}lSvp@D>}7k@C*$Y2pb!`Ahf9ZA&(wI#zD_4 zh`*Q7wxQ~lu>aT#*!Svlc=^>mIPm&juBjYQYSH;_BZ>72$IZ})wq;vz?C1!#^Rv#D z*N$Mo_tCYY3!PmJ=v>|g(_m0`CJsyBeDcmm?&P^5-n7fiF3ESC?fGnOn}HzWE;HiG z7sb8BUb7Zru>e@gL{k9YTq_Y2m~jbXW)e!1jBg8<15l*F+Wp!wRGkz;#~@^ff@jrE z=wo;^!o&A&t&%Mxu~NP`nURNh&c#$3gF;OBQ7LU6$?Eepl!?C@crjay;t9 zpg9vH{CG06z<5IIq*iba)cAI)Z|90L5woHCm8bGa85(L_p=k*;UXO&YVLe~_MG?~Q zsPPFoUlnSEd>-TZeAzS}MFF#hlVGD*u&~d#mLli5$fwiD(MV-TXEY?Tu7eB(Jj&|I z5kx*B&OKon;D$-qw^RtQYz+(F9=dHg9=>}u9=v@y)~#ql zGxIu*$3-c?m>*!YXn1NND6(!P8upP=6(@VgakRUD{WL@ePE>HsHWJu4Bue~AuKrbF+iHlgs#R$0yq-F0buyY zI);RShyyVK5L{m&0+KQbP$zg<@}o(fK*)g@*gAlVXFZQA3KaD+k<`|OfEs2)*9%3= z7lG0>c|pViLqbDELWh)#WvDMM%Tfre7ZH*dgJniUy}poQ3feB}wmKca#^7w>1V*Di z7=Ev}PKK|aMPGT4=AQi&L|E0e2B%&e#Ny>0NSh|u?nX?U1f=31q_t^iYD51(KaA^Q zUK1*;(E-q=6nP4 zO&JUp`wPBP{pYv-;H_uzCSPWDd0+U#7pkRl`QK-<*`lUJG+rVc9gVz+V4rgmczB&J zUw40rCD#mKz?UQ9@JCS^g$W-&@LdmJZHGl+Y=r0id58$w+uJcwC@?>VmT_i&Q||hO zwVqB2UuamLSLr05(h1nOg#DI`UC1ukYXqaYPc`15HDW<24z@xCS5e)P43Cjh^k`_$= ziTLtbaUq60F|3jcMj#?wY|?1S=h5Dr!J;M)T{I|d89}QXpwp{hc_VP$l4jhxsulOr zV|wWJrTF08Yw_WCtRYt7TND{p;ClVe(W#W6x-~wEgt*8B^(%IVu%O;fr!NMgg-kJp$q^4VqlI- zL?9wFQZ%NR!JH$aV_uIrL~1Nmb}`f>-sxs!gRv8Wh~t&^8ZkCn<{l};+Ktz9!{R__oFW!r zX_NrNHgRskMY$RwVi2?am*&^9feu zO~1AE=N09@~_;%6JVLXgto-UxC=OL@ciBO}I zrcrYEvev#S2^|AY66Uqc142kURHYN$;ez6FZn%ztOGe5S&_P1ZwP;Kkv}99g%{pky zx#(<2LBA_4ZZdp{4L0%k?Ou9C58u><58k;H@4KS|@1Ws%=M7zW*Ud}t{<~M>yB@wC zKlJh2@e`lC4?p~gyYTJrT#LJS)VFqNhB|$CrpO~hgVuaIni^Yam|78ec?_2gPWJo! zZdAn4a}iDsrg3aAhnG(q>^v}rEiZKA>DT)3;_)&L^*T7p^b^A=oZ?Yl?|2GB)f`G; zo{L`=6>(uB8YI3yM&}HTQe*^{oe()8=mLN%AYs`X4#*&qkR)#rfk+LEzG1hBT(WMF z%gZA&e?Ae3+go25ks41#rr08Kp4?O-2@wGWK)VrxGZ%oMz`j2)_%h%X(U@(3bu$c8T5CBO;K~#@OH(Oo?YuDcZ z(17XaK@C_82bSYqsWPwiU^xdu8n%G1Li|n40zM{@u{hax3Z0kt*m=gmij^x-2&-sWn@6;?h|?p-@$56N;@H6+xMl(+Q?_9)_`xlmUp5rK$M zE8@P=iA(}9N7z?{<>sM=2o_PC7N;{;98#a=i^0SCF!cFRx{7MG3O&k;jg@YOLgtMP zi{)z;!l7>36uyFpp|7LEaTcZ;)`=}3#WFbuEj=%U6-XEm&?yJc04ZY`hH$w^>)0FD za2^qXmA3de_+|r2$ zHniaWO&z%Z`c=5+#+A6^#xC5jX$dy0TY~F0tipyhU0AlH0WI{BQkejisDQCb34`Mm zoars%RQCjqpBcyL?kc+b4AkhndZvn<`-iagg<(AT;s~DEH-;Au7jWQ=kK_HovA%!? zjQNMk7@P>X(4@J0&LK28_P7hMC)gzn*>_xMjDUTnG@yJD_7<6T5<+=n4FrUST;PN` z4Ef9s28iETu}}q^E{t;y$b6uFEn^lU#zP1~4d=pSTEq~OSH$@el8(Xh!Ucc_!Kjzl z`clOu-E8Sp8^OBTI%r&BS(n+kSRu9dkW$navU4pr54wS}R5aud;>gG$cHa57s5>n zbR8rN$I}v(z=!@uz;aN7$k5{w!a!d+pPlPFz`4Q^@=83#2zew}L2FYRa$Xh@-`5}z zcy0!Un>YbrOCg$Cv&eQf;tc2Ycobs!l1AKnPa9e~4aTCvfzaSzJoMQ&?qAwqH7vB&!Ss{eD@Os1p@kNz_y*6PsL=g?+OVlt>ty%Jj00s0iaz!6^9-;2{dJ}e?2 z=7SesCep&e13UQN|J=7Bi!zE6!~Ay92#34vMT@$)cn0y0JI=2^Rb1`6R%NhSHQeDnH*$9@#Mgfk05-J_hi0Ci#EH^lO1E6c5hTt0`ly&(6r#%mu zl!vtE!r`K-6Hbrr92TUs@I{kIVq>JUON;~I%P(q(h?MFuF4FuCn)N(nxd3F-4an!R zXlQiNNKdJ;A&q9DiD+-mVR>r~8@e*MiAQp`tmJp3RZX~UMHY9hZoq@rFUEJ=w+`R= z@OAj!Z@UGb`i|T1;dft$d+9~3TarPGQwD7unp;}2bVVnYuUdl6C2eSIYDBeS(9<)4 zgNJ*u>!kzOv+opMeSH|OpK)-cJA(r!UF?3Xh%I{uuzlYMoUtDq9q|TdoA4lPR#`0&JrdhoJ*us4(mY!^Ln4#y~`37^M}HaRyLcEe~J>gg^`k zhN3Xcs{rD`5(WwiiztBwUX;ZgP#tsel{X`8Rxzq-7VCo1OO?NnvRIcsCZY9I@M(|i$0WvrOm-?DJvhbZeQt3`~Hn!k_TQ_0t z(iE1jX~(cs#v`}_U0oh%`D=2uuo3 zy>JX8r8L)08yBN>vN}uPA?4Cwl}q@UPu`4ni7-6U1BV7oq2I((sT9V?$KxX^&8&Gf zd@~>-aWPt^B92_*L-WlM0X3m%lGuTu>M4&@!nb2ABtM$o0Av?DY`gy+zp8Dvs!{L8ys#zS6@ z@A7H1H)PP&(tr+rRBms|p}o;VM^4a{kFc!OVEs}Lx2?(GUAHX42ku^n58t&CpSW)| zK62M`eCV#F__n*2;Njbs;JtUR#Jlg?fcHIkGw!`*18&~1604SW(D1p4xKpk2)BdldA9s(8Jpf&-_kc=7cyJb!Q)yNKOK#___b3Jwog^o%yp7-eyG z$ia#JQJfkaMbAVD1@2-48l%uP@#5vcvfm>126&|jmk=mJL?CiuVAds4ldorsO!Gu) zv`8&XU~L;hAa;*eXx;X!7M*6m@|)s20TaPG>6aAi@xELs8oxvmI*{-HjlQJc7XFW zmCGT^_tPD#0+mL%nJ$!VD~!{O##}RQ+PDUOc@WFju0YAFRLj=?h1-AZf$c1CLH8Ra zWG<$7V0`?yGpW@7NjXlWAJ5ejQzI5nUM@_S0(;F)0(Qoq`Z6fNG?@g)Kocc-D3L&U zH3;}eLhf86Y}s=Zfn*U6LYypoDhyJY4yn4Lgkf@P-z^kuC~x*BbwqU_$v#AEkhRG9bc-fXI4&=W zxQUAZdQ>{_h8l$9r=cR{I#3TMm(C)a$|9Xga}z*GL$H6u3MBI51=&!CK=*Y%WdLSH zn(tILu}#KE3ld#*3#w(ZOw*; zFhZU?)Ap_ov@TwROlu2@l0x5TfMeZbIC6HF-;Ty`dd#BecEZmu$57OQ*Ly8?@Y~Xs z=TG73edqAvu~8fu2ykMcij%zsoaiaw>|hnWqantM5h`2>*ldV#5V;1SV-e6xgh@kK zo>-UtpbyE@%r)-HPgIl3b3%kev3h!R!~6++Ydg0gXa#Qfrg<_s-Uy09ZuHa2B?6OM~BeU zeGG_-M1WYE&0>&8(n3!v#f@J3(oS^nWGS9=oL|<`z?BUm9xGawA%+!YnbsPfK5>pR zpU?~F89vK5Hl)rFOvdWvtC8{2@H__|jTdGT)VUdo2tmHWQW&f+w*?A|F*6Qk@M zF1XNO3QU>4wdZC4h!^HqS}2!*2I#*2+uI-SA9L;>Y;CC&#VWon4JYqCLc-R7r- z*%VMYP9P+R_13Ao2&pfsVzwC7$C{=>7N&9$cU4-eFbLQeoR~>Ra7+wk61en4Q?5&+ zltPY2a2a|&o)I{cU=Zuqj*Qr+7FEDhVN3+i6=aFLXV8>(`O-C^A>V+emPQ`4wV<`N z70t~JXl~4+kuO&+WBF24(P~00ZFI1HQ3GyU+m8D-FTs7A7U7-OFT(q8Ta1t1yBgp9 z&JFm~`)*t80(JDSjzF>s7-MI}t}C?=1QN(RH_ zG|rAVI6Y|jaoOPXcnXKk2@amJcP6)_Ma98w{l21*!*z{G!CK0SyC0T>!6S}@9j z5n_sOp?xXB(IO9G5N8mXGZY~oGcS?zd5HwI!lG8kh+#b}^C_lzpaBCc)!E6k^Fr#F zOZT)KQz!eR#;fTg_u_Y4E~e^m@eDNy5rK%*BD0^$UN9&a>tTolvlRj&5(CL4B*-HZ zh-sh}G7|HFI1armA2r1N!vsr2+G-1o*)cqR@T=%8_VQiHV7NHU4WEm}tu4ssQt06E zVnag-j+6n*`ANexHWXokN6=2$hj%T+%Q?|!RI+4KQlul13v`fV@qTCt_VUa z+<5ui*f|)U=!WoJ_PEK+rE*xiY6HY`kl}lt9rw}Hune}L6Ozp$iwGS&^+?GW5DjAW zy5*>d#RSTSB#Qp!ou7VV|B+sH;DT&kmseom`bH=#D!8n%u7qI=MZd4_QC{wC26oBkG_b>TGVp($;n?Z*Ikk)>d@2 zHKU^?gT|aevsXroSH#k$2sbVE@W9$8eDK!A_}IPc@X3cZ;|D)@Gk)Ylx8f0cO&@+} zBObbQ32s`I$I3QAS2K8?Z;;A)+=oUOEEI9Bryo5-;~3``W|M1y*VqP|YT%d5CX}QN zL25CEf)>2mWAXI!AZV=kH5 zydOuAm~JX$c-e#~=;NGzktBGa_S=YvR1PNWvjCztR=YH}iyuofJO zOy?1ixUM2{UVagoktR}$*9(eV8c$?eUdJXuvQcocN!b7Z5CBO;K~&eUw|WL&fBB1u zasjGg6~%BAxdw|(8)-ynw^B|4ElpJjN}R7gqQF7-i2^1D3fw4#ShTDQZLJ*$gA_tv zXt)fFmqWmBR}mao0mO9x$DpMvjZE_>nmbZxZpx#T-*a!;d=vDPrBNKD3KmY-0_(M- z%1v9wv1rd)K!2rZD`@THyI84U0u_GI#Us~!@9o`qn_On0^>}RGzCzFF@DF>Q_ZRfW zc+$`Iap$iKtS;W?=}~Jj7r>5DXqslyP@%jT(8M_)0jv?|KUK4xi&=$U7o9Lzeb9RV zkGQO*44vgvZW*pycLRR;C*O&OZs>}Q*eE?O!==o?MT+0WT3VZt&1HEGUBno_kySWQ ziNVlnB>*p_8BE=^iOB_#3A|B5ZIP;_)o9IN)hMyQ)LYV{*eDDU(Y2qJi!fn=b(U8fYDW5}gV;(I$s?)HQ zbZcV{Ee%;T@~AD(Z%z&Lrdk|}CiZ7XM$nZ5RR zW%! z^M}siz_C8`@+0;{A>fPZaYva!HA*4i%Ll#0@)(elbD7zjy|5&x?jxoi$yZEaY+Vl9>}T8SJSG>!?fK?f$>7L@!5SqZT?W2mEwz=TM1?FdZ@ zV_|i|4}zcA{K(C(;B9o7OR38adSVBU9s4na;lIme(nXg?Q);}_hy^qrq2d7(gpSeS7Q;{}1bG-Rf!TiEGwrMb`_;urTPUpmE)jcM*YLilvY zsx%5dCqhKGItqQ5bRPNkb$H|>_u)VM;O)4vDZ=Q$2nT%>R8MUVkH{Rfb7!L8Xi_w4 z)oK-EV`CT}pNPMg1*$6oFU?_KSt*5xLmC`xz^6=^N0sGr84A^*`Sb-B5xA~{jOWq= z@}S3fY0pE7yc8#z7kfws8m3u9nv*Ea$zXn~Kqx7qm2nXm7S? zYjM%ioJUJT28}6$2B(5NeVCL#fpm2Q`EUfSGLB`rDsEVu!Miqh;oI(9iSKy#27Khb z8}Q+W*WqLDyMytY@$lViap(12Si7PHt<4!Y^yaEnAH!o696vLLR}b~##aB+_5RJ-6 z(SuEQL2{kkCpM!LHKPzUU_8p9dpyGH(Ao;}-{}E)jvq`5+UP<6}8a5vyAdPLrwp=MmPjl0;pCNKJno>w;v&en~JT zNF8h>#89`)fhoaR1Z6dkg58Mvc3_4su*rgjULq39i^xK=%$7etpQ@_Il!P!Z$C&*B zHbP{Y*7!7JDn~sbaz0;VVZ13l6t{JV`);!TgmVOO8s|FKzEA?Zc8AVi0FECzgY8c~hZ83cas8?C-Qjy+vJl7R z`{2T-w-#~prp4vxNd6L#OTLoP_7P$a9C&oX?@PF^?vCb-9#FuSt+H0#^XTMZ)D| zb_|gA1lhEMEO%cG=`q1+T$M?!dc_P9%&(??7hiA`?;*_GljB`UFh6{WVObgUNjoBs)`#F@{HrUK^ z_}(H;>J*+m(1*u%9>$hukKx(<=dkx+A6`7%j~5R1;?T(fbPtp;IBqdfGXhYtMOlKtyzXj4_YM+nO!H`V((fB}L@TD(bv)bT)^4 z3CeB}+mAeola&L=E=$2}jgV{1A|oBBR6}HPf+d|m)*ItdV*#hnp23-uy(mqLpimg# z`cUN&BDI+`ATDY~EX}nr1vt#RB8T3dGid8*K~qZ$$}~tVHjjKc3mbOAHw`c;f&Sgf z^((u;9WyGlzyVLO+{mI(DOJbA(l6ci{kQ!e(Oo0nUYEJd>exrOJ@bve;o%3^b)V&; zKkRY=X9M{yDx!lH#-T1onCErUGzBi>(sF9qSh@&$CIsKubsWcgeHx=IgadD@75IKY z_^8r@DEU=PNXVT?`T zd4?KSFgxw44V^aqnyuKA5xP1{meBTOu=YyN@J^aq}&)#=4 zKJ|g?@I4>ggpa;+6CS=}9Sze8Ea_}#of=thmxi{2zPKW`~-q%hI;uU&bFCRHg z52_ERM~avTEO&1yg!Cpu$3e&!#^;75Gy?qtKEZhGIgw}SQCdWJt1l7Oj(9WcAyO+- zMB-va1R`=C9WyTRAtF<{E-~wZ#6@cQMHtSJLxlWE%#pkxmWV7!ZZ07aiQCU$uH-46 zNFp~GGDSrAJpUGvSm*gE3+IT)yuu;h1;D_B0-tZ?*Ps78OtcK69>7!Tq)fH82rH28|bbu(y9 zw<23gp)+blOJxx%#Uf+k4QOA!4j=vSz4+~a^KpFUBe&p=l?_Po$jz3<5LL@?Ik_C_F`N&Mk=Q`#F`wrc zq&){|HaJ5Am!+4M&w6OcdB|rQXtZ+3k)MmbD+dj(pg9G!X9fDpybYac+`(^0@7mOk z58b*P-}j#D@iX6fFaG%>58y}jFV^0-0e5Wb!t%~MI-AnSr05~C9%bKRyx^mMcpN>$ zWt<)IahhJvnZXjq$_@gz5jNe7&}l`Xn&nQaiNk@g3;+QL zI|+!6iNrE07m83efnk0FHE@>>FyG}Pp!cf?S-qK z^yU>1j?4_qQ=!@H$vmnFb$l(1)wsx#o(f|{b;Rc2q)hsO6 zq$B5!WA#!X%_cdK$DVK@P73KX^S3nN;Qj$D8DEbZGI!(Nbr0i#WgkFwtQlEpKqoh_ zU8@^08Vw+qYG9reXwM*=S5f5Ka;p4Shqj&lm4`n2*8NKxGdgXKh?#?T$*iqAcOL!9 zV^93#*vR;uHnP9yh_lNxPLZ%K7e1Zf7gDO}ih3E1&qjUvG+mnt8W%V?-CM%fcAwzc z@&qQViy*YHJW^C|tV%;x(f=Q(Sd4#pI8iKdp-y3};_-N~3qSm^JMbGn|6%;6AA2|c z`A4tE$M0W+yVvBfJR71hDx-tryQV#h>y|d-rd3_IdCg+nzHSljp&@$k=H+m9aitl~jjrh=gYjMwY?O3_IjmLy(PQm~q z#R5+C^yAp+9vYEhoar4$--wS=sOe3B+ljQDlB>R+O1~wQ_!cTu zM=~DHn6NafAvcbL_^sdhUlSt+fTGPn|>Fcd-aLw6Ezvs=>giTC`*g+7}UP9aP*2 zWa;4*gHenPk0QtXo@){0Dlht}=FdFxg-1fXjW2T*>t?s@-hJY$Pi*~f-GhVg8XFtC zBlP{B5sSZZ9Oty-IAwwxarWfR>0%C&fri_ z5hW*sFcKbZ0=^%iX2>d&Mr;s6<6{_|Fc=xN7?`NSNoTNP`4ZfF%VK=@`!?YhzW*Kg z)t`AU{_PLnkDvbd&G^(qtMK7FTVuTMrUu-*z7aPqao&Y;u@5fUIdg5^J>jQY{=rHyjALTLL01lt&oq8uC$N zPCjGaB)!l;^CYay)QGh<8dNGHDDWhyy&;9H%lMfI^zZM*Ie#37 z&z?faBg#>~gky&WF>2Ar#~=NkeFqP2(L@?cB%)-3N3)v@%h&nYrWH&3VJdjpchV@{U_*NdM zrydlAUK-AZ^1l_K^K`CuN!&McrCb3o?o5NsV1fz4_+D8fI6u7EP5iRQyR8l;G<@d0N2Idg{ z{IC89OCDU0O*gEB{<1nM3YIl2hVVqIU<>H(J&jwItVLc7ipPVcLVrCkj; zedZKW9^VC{FTz=`4s^p6doqpJ~J?F~3__!N%3-h&fEr;b1xeAy>XoG7bzw&kg(9)EP}*5Cif#~%CDFFpF`kBwHV-_bul ze&0~BbVspJyoFxdo#PV|@1=+I(I^OhT0;9@#M;k0B3o$i_OY@(q$iBP_l)6q2t64A z`8Du`vWxhyz^anemG>WRE?22HRd4#<}4LSx$!bmc{W8G_sjAvKbey>%ur5 zz|W=DGUTx#Ee9-DX#EstB#nk_7g{@3A=kEo6QUEN)fRe7EjT@q#j8BV+i_?dkH6f9 zt*;K^>3u`kLHgO(dhycXbMcQU4xZ@2+5RyUidE_rxID@e))=fSpf4eK2{Z0+DGjk|e!hp-8Q~H>`jwP%JW8H>oKR5q62h5fPc9l_4S;Tp~12 zg4tOU{_L<`ZvHe8nNh#`TnQ~QQ$}QFJdv9nicHH16BCdGl8A<=yEHx@ro{NZOwoXd z#6WxrpY>pL@)nUgxk+YSAaddKL{y|ECn7ORA0l!=-6{hJKqT*AmGA4G*IvS({rz7e zyC{oI>(*nezlf#TMOfRuj9XHJGZVeAo`d(Uycvs3gf!`!mJ1%ft_f!ky$+A%Ho{^> zYZGk7!>AL$tVkos6%ggh7%7gxr#IHt>Y%;30iH3ixrsh_c;plR;e#*Zo8&TYVLk1( zZQFufyLOeHdFGknCwA;OwSD*Q1KW4*-2T|MZU6W+HFR5___zP~#1o(V%Hxl}w|jW_ z&T3!Z`k{frO{KAkI}3%+lN2;+DrJm9mnzHs{?rMU>{yOK7b>A6FkQ*pi&M{^&^z^AB{zT zz^NcKJ`I*d6h(1pX((nR8H;*;BF{{`qd33v64c8kw5BC=5+=GeOn4eZI)&Cj9xrq?{yFxq4dTmy3n!S*Ton zJuZ|-)9PjG=?kSLazbK0Iprsy*m?Jb(h^~nNoWlkB=Znqqe9ik6cS0 zzSoYk#WA#QZbW`r3P<)GM`^SS@iI8V&l5X$@53vn4vh8>pZuZk`v2blyw>5H1?HQj zqIxW;{~E}S7hmk&vS-h}EjxBR`L(B>`Qxu`+xDwpeRA7Re&vZRpFB4@{_wz|!}kuH z>$z=wqHya(rFwTIsC=MOt^8nEwg1ut_zlO$7o9NJ>A2>2p%P5Ic4Ejrz3(iK8DGce zAERM(INUv!&qB?#=IbEzS6?l`b`g*aUwNhEgR5~TV_UB)sfmX5 z{L80R(_FZGjc-Oy3xQ=pd@HzKSe~(11QKA+iI?%h>HWyBZpNB>Ho!3+ZeG3#9#3O> zhWjyQ95`+(UhD41s5GGJIIvPhifhvH6-zK4h8P=<(7L)6rZK|VV*?oJp%)eg7@io! zXkh}GHm8Ji^{0RI4}SFPtim_dZN8~$dy&ejk=u3VOljBt{X<)K?K=C!_U#A0zIFT7 zZ)|(|FTU~QQ@`=$EnEKOm!91EonL)&`vYIyvVGlf*9S5sAwbVK_^@W!rQSi)g54C0&bNVh;%A zMP#b40Rd(Jb6;YC1eoulF3w{pVx9BJEu1exopXsRyB>8iBAQUgn1d7%h)7)u+lRS; zS#r4KOGIKFB67)jFP>piC&xy(fJ8({mT!G*J^n0S+_x8waglFtL_;QzJC@&q;gL~{ z@Y{Vg1P+Z?@fXi*$BVrKXzpmh^5v~)&Sa5ynlWA;!;1UbG0;7ZGcOGwq~cP!3{(Y@ z3L_uo|M=<8{qX<2cpcw<66Wn!r8licR*x>Xzwp9=ZO=dd#MWn@{la5AcmCEBPd)XE zk3aR)k3aGB(;t3(`?d$htCd@Va^d<)Vf-GySb0xaseHQ){U3^|{?CPe@ShL_f56So z-_d>AgUBAE-5Q~hE3p+JVMRDeCc$|80%-VVK@EmN%hPZ!)Tb%^hJovfmLIP#^AsW? zaf(PSj3WztsP4I-*%SV3TH|jP>g(`km3bxQh)j>cG<78!-<-U4)t)MFE*@XTsr0ui zVIU}^$MM+9kKt_ZIox{hO=!PmIl5Zfk)wecuNG1AErP1>sIURYCyE&6QPWsy6djGt z80`1zDuRagf!)Ngb= zvh1aidv)t`yLN8bz59vBpWgWwPwd?NTU&PQ`jy9?+4<>5w?F+z)p6f3e(c1JL*>EE zr9$zxQl?1 z#6p@bA`20F%Vb1^&6f+7FLL4Z3ugY-NPNp%Au?+W7#ERv>_lY2^%Idek7f{=rZqkv zMCO+hsild?jO-#3mm?zND;P}PA~WO47CE1n@I_{(iAbzl)8~VT%$IbTd|iGlPh%oD zk;|jN0>1dtKjKW!acsJE1y(+|2J2U@#OTNnGA4%`m#*fqqQLPSWHTOCEM5ZF$zz~Y z#?rg;*!hLmFhUP3o6DeBDj*2UcCd8v@iBM!GoSw4r+s{rUe^rRl@FYyifEhuAmz-N z(sR%4?|Jh1=MO!#XYZ3wKmYvSJ@xFfzwy}9PyfsR2%9qG#T0(26aS@68hYyX$NYXS? zPbYEZDQ3r&r%?W7!3qb$!16p;0n68oQ2Ihh??jucmhjTEyMkfJc!mMEpWyKUBy;x zYE7dlIs%OEKuflO?(ROgi$*cf+mD`o194p&vM%zC8C%H|zwTwdfA)Q!{k}1L6JO?= zxbEMKRk!+$?wMC!8Q$^SbFXcG@x|@io_p@|TXyaG-;eLu^`Gd?{lw$jcYJKLSbnf? zcxzQ-MWxZy@Is0%mR_G%WoM&4eKxJKvw7caaczS_ z>#d1()>9*`@^d_{Rh1adhVG?N;#*qDY$dq7{M*B&gM@T=qFR^RXUeClCT-3qE> z1|4Q8hI^mGQ1A0-N_ArY;eBXb1-$h2gS5vkx|T0PQ)A8s?!=d^-lI=F`{J%`yPtpJ$z6N?=!s``{{NoXvFoRv zcxK0U(%9W=x_j1Cilz0%a`lGtSmCZ}rTTGxpZjSWMZadO{63A`S7=jqS=d8j%vpBg z5RI4~Uj`y#Cjq8SL-^*L2S9{;T>2G75frQgtHYh;rK`AT4w31)#bvR~i)NyLh{Wv@ z5ymh@i^vp>Z=y>?rfMr9m)r)C={zDbrR!1%kqhOMsXB?APtPt#q$ZQ_MQU-8=}^-| zM1v`aOvgopWrEPK23+J4smY1Rd6FVBrR%&zGDMId0S5p85CBO;K~!q#B&Ti>nW8U5 zh)m0gkQTl#5&=Xil?Gh<=vZ~|!LwuM{vwLP&}*~EEzbcd3s06H<+jnoS^>4}}YfA8_9clj$5aF#1h|;pc5N*oh!IWFyuW1|#kc1#zms3O_A~8oqrs$Y4$3sNs;9eR_$2qBv(n)UZ2Lb=gC_|X6U=wV} zjZDP2g29}(K!ojvFjXK@10(0%A`q3>b{4J{%X0fj|&#Pn<9CCw2#Fx@Um&YSSu`gNI+RnS%VbeZ5 zU$Cl;-^SM5grVVaw6wJ1^}PdVX>P%yjvS5+9N0V7H}u_~`2A1x;alX=8S*XClxxkX z^}u=0Q2!6NJ$v?y(X$)a`QnQwpWeOug>Ac@`^J;c?D`{mbHDl6(>s3tiKlmda?8$L z574u_?&P`N)#HOBYla6$Zz~lhK2$B0e%LQpe#M62?+{{?c$Z-kKWCS*lj8K4C^&BMA~AU7{0u zzA(w7;e0X|;wSl%@ItazCrwML$E9hVzfT<3MJnwcZYYmDt2*!h%p;}eo_+eK4<6Y6 z+|b~Vt>k>9GJ=L+E!Hf)8?9X}C{MUp+O?G5%NlW@_qo^3^q>0f@BiHQpVR!`Dlp$F z4Y}5itJecZ=+*6c_0`_Jue|cgj^|(c+V*Gn{^?VDp8Jnmp4s*PY~8W@BTw$!{b2aa zuG`0}!KR7Pz8edp<97$u@-hLS&jRQlrV9Q&#y3k!d-NUn+zd zMD&Tc99+RAQqyw*B>~H;6B}w~%|Msu?Uf#FwqhtQ)SI#=4 zk;!L~@o$FbtU;zLjmS--X{n1-mHp3oIrG8Ke&e$z@GW+6ZTS{!(Y5BhDLt?a2-K_F z_447fJNNB-^~v4O@7TKQ+5b!9_P@65-2HF(t?s9ZPdxGTj{Am+l^gtt!rEf7d|fs4 z-x2u!_tLn1CXB-Wh$#AVVhh6PRUR&#Fpwcf;$L0{MkF#0VZ@3ElW9@dI$eC{0+VVt z#nfgo;8B%DaulQC?0mHhwdd@#BwkCcJriCM*0|?Cll1vQHinrjO>Gp{afTeon*@Zd zP*5_-GaXXJ95-`JN~?a2%^`FFR()MAAXZCK^>JsD5CA$%wUqdo=!zo?dQgEXIZrm> zUrJc7g!$|wVm9kL*-LSB@)2`YjB)L~>AsFrVs4E`@)Gaa8tUV!D(Nc?r{b(*#JP~p zdPBZn{X6B?=bpc&Vf&3IpWgK=Ji7b= z;=SENBX<=2Q`h??8oOfo&T6^*?UhR9d;Mzg=`aZXqYb0qwNdn?FbuazWM8Gh>*LBl z!L`OWkkD{dFLC|13$E?T>3u=-F;88XeI zi1XEDt0&nhAXG~|`)boHLW`+YUklTU#<<*)5{^nsvmi`Qcp?H3 zLG98o0muiS(b@f|@`Tzt#FsX#2C|{3H8@VZ=tD%9M`F2}mRfG5nGlz*v`9@R7UUx_ zVkD8yq+mSft4I1yAJzD5eBfVw0iX?E@}S^WNr6?1kn-en&%O54p64ImzWceq*|uZ% zA8vhS_h+{}v-4-RKC|n)tebvcAv|^WL=bHVs}q~6h4LMh(!@LcO6602#sB%p_kTU| zgFoT7x+gig&pH-GLj$LOt)K=0<6Ju=2J{kr)F2`;Ut~J0rOf@*g=Q|O^b9_iDmw{H zTPPA83zb(n)_kfBfMBjmWNyC7iU>q%(D+;ssilidhxKwI(|i%BPr4{AB60Z_6|55w zna(3JO{<8AXmC-8P>%O(K@pj^J|gp{&DN8|MW*wJ%%l?;4MhaT2paPFlC9d`{K6N$ z5MrL|q0c^4&c0swx0S}y&zGX`3)yz}W9b{yzqsy^b>9-dHk_x~e3$D}uF=c8W0;%^G@_go;JF)#-lF{g}}5fQ17AI7$(t}hZp zqG27IPN43e>p3;LUQTJNzrakuBRA#MB;TN?R!i{)slS-oH@tlpt3aHdbU+fu%nLtM zG{K}Khij60a{}Gy2q&S4Ae~NG$8rDiH~-*wU%puB4{duWxb2rW{m#;lc0J;)YS|(p z(Z%w7v!|PH_6A(5|Fs^tKo8hGM~;j=_uO+mdtQ8T|C7%?`_*l`cmL^=JD&Zut=o6} z{NqnO^IbmNhy4D*yNg33w^mA(+x=?!-q82I9o68Iz90N-6xsh4M$un#QF)Tq>P41y zmTSudX}Zb+&|SfQD?Qw^}X#I`v!P+C8fW*hRBA*P_>Y z;H~L_x1!WYJ-TiC_fP1*jz{1fuQmKy4_tB&=s)gE4DERS`9s^Edv52pXP^Dj)?GZh+_C4Ew(QvX{ZBlz z>q9Ni?0BGeZ2acp*u+i6Lix5rapJ+i55LRztN%|>u6#DERDV4T!@mo|@af1#M_7p= zqQaNaI>v!9CWeSWWF{zA<6)Ywyn5&YTn|l4;!zaQDYG$@|E&U%T7O)uJtA@uk(#Lz z5r{}ED^d&N2p=Ld<7CZwi%iRjkS0VJPD+bR)03Ra_64k-MahP|5v}$ZFzdf zcWv3e<6V*L*nHybxuv#JSyir9@2C`uAFq^3KM|GvU$jB^`+@I&kw=)%(&QYr5&CT; z1)eTdMNA<4#zDh0<8VutUu7t0s(A7x1YdI+Mp{MEV0LQLRdTY0)DauBO9>~l#zB%# zk4+QA2~!W2XZ8075jk2z2D~*Nz`9LA$i-A$;>fIr=1EYWlSJ_k%hzM(}7^>uNh$a(nWMS28ameyHr*&SGw{OB9yV}(`uG3r&-C9e zRrWQ^(*tH6{x$Zs9=O&6Z=W6r^{*Lh+q-vQ_wL;%p4qc!@6*pd`{=gaJ3ha4*N*@8 z#Eu>R_VH()`N7AwZ~xfofq@4HCki(d{owjiv3yh2FW%vo%imTlmA>Cb{(p#q@P9=? z^c8-udzlNTE|3!U>UTf_KNjfNgXaNue~(!i%2iD4^__d zJhZm9PB@{F&`PM||Y5r=Pm@Y=8gS!SV6s6C)#QCJKdjjE|3h zoSxl3uU4y{MG*aQ6a-(hL9mw==ny@)vs^3+^vMEtGf&!tCz9l#cEyH@Bo7OD@TOH^ z1eBgc&9ebj%|wLhKbBsif)dQEI;d@uXQ@EJg!Arcel1UZex>b{j)>()%&&TWn}8*fWOXSaERT5@u>=`YH$@PUry(Wax`L+0{Gf5n z5B%=`{=+X)P?H#3yD!uO(=+fwQrFV1^}w|r_?GK|NnkI&Qa!qI`3Hh(^*?Z7{yiGG zFEe~9vf(i<-y>Y|D`JJmmVn{HKOclkvpYVlram8F6h3Hj#`?f;h3q4 zm56I0eA+swl<-l5WrbtJbtHSnZ5dNApax6<^IR%RP__PGqcNX9k9pOb!q z-{oGRM|aW{JK$I;IFNvd91%Ujga}vl$xaoKsklgu7CApcVxx}$00Z1fL_t)X6kl*q zZ^V>V)MwUsf_i>JUns3!CZRRdUw|sqei}09bfGDq^&4~fzhOVU=lA~bPo5^5R*lbV z_kwyr`*A^n*MzS1z_lK@)&m#n0X25|>q~xFDbe)a1# zbYFXN>kp9rV07x#UDeUiTMC8Zt(8jUt|$yY5LT<73@%&L);iSttzx#ZdSs4yZwVmWLZG-EpD+QwY&Ov*7oK3pjLz#skf zUw7l$b;&(&&468UmtD(ntp~34z!mgB{GYHsv3Kw2)?K^KKCylKfv<1fy7e1RJ@ti0 zw{H9G$F^?$)vrJP#E*P^%a#v+W6PF1zW&6PRY7mx(sHq|sW3MBo{2)?Q{$r}KkHY@ z|C2|Ue^sqip7N{JS0lgLPY-W`#-l>pq2K8uS`W1$G+7{Mylf48#(d~yNzxic{H~>7 zRJjllLP_P+KryvFH84pOn#2%@W2jw|MwJyIHD$n5BIP+Ym&ptmasEf>2X}q$&;IgH zzwm`GRBQPz=lM@N&ou+~Pka2Ywfc+yP>0Z?iVfsE!Xh!1J4-~7U#eBlc{^JKrqUSJP!EEgzwP3&3^T|2I_}9L=Wy|jpzw+frAN|pP{Klj2 zIePNc4c6^nQx3*AhC%u6aXD6iK0hc zYyZj<`Ax^-XAnl;4%gdMvU1O#{`KGd@}KH4<0>QFg z_|dZ(^B#^(ADN>h?Hn4p3WFcIq%Zf4F6V#+vcL?x~YS{4JO_)f`A&)#O$wKhoItkv37CbRFRy>zK zLwU;2p}gOp`sxiMb7bSlCQ{cZ!S4Sqm|0m6>r%?gD|&k_Zj4QET`8MLp8TvgIU&8$ z2Eo71f&R}Q4m<%2gyl!YS*Np{|9FqZ1Y7AjI5=2Bp-^`tqp_ouloac2Cr62t$yc;~ zQhf@oxS*J9;B4Ctd8o4=^-nowpcmb!h$=luiR{UT>t(2{g-LJp5eHf{bx@_tKN8>y zE78)RfNn;RUvno2i#1TgcIy|BM{_|9yA|-$mXB!Yv5qw8Fj-OtvR(m)AJm~C$gM*w z@^Z8!Y^(QBjTS1&>rY%ug1a5p*}-0S4`;*e-=`g%5JTx{seIi?5q{=b%NNEt*M#hB zF?(xbG`I94gzO`m0rvnwcEOmDH<;gkIYrToQv6+hf-Aw%jF&$!dhOelhRwe&sjXE& z)hm^JpF!YlZEba{I5;YjEsZTKq2@;Z#4TAPBLV-c;(eZm9Utg|cUpmGMFs7p;j5!p z-nL^=*|)OwrL+;hip!QZ@XYK;HD^*^FV|gDkDmLTMV21h4tCEP7MEG%pah(lquMc6 zKM9H(vARPTwL|_0?9NWo)KkLuH4WcLN_`Ta`po4aGGgk6Z%29-|8v{chj1+H~jxU15jL3 zu<;Eh&b#NgPfoA#@GzyOq&Vj4!`13CGv8P`JFg8@RTO-BzT(ES(=l(;Q0$oZQX`bhV;X#p#E_g?i>i5Zg8LB+yMj8tLKD4tFmUEr| zm}CjPzycx*x-?LXXFYo1?laCctTjuLzVi`*m`1LX1sEv9Z}|e^poPhAuL@iSr3Ad6 zB~*vWF9fldpr}fg{%ag6C$pY@t8rRxCv(0l<7TeyU*zXMDd$;JNb+$>Nny5H{3080 z7?jWwC6VIOBa$0rk6pe+GkR%`JuHrC^1c1+56F5TEoZs{t)|R=Cr0X`^x5S*mwT?* z{oiTgb}!)dS=KZqZ^!wY7)BnvbdIcSkweOJ*ic(XhotLN6}2vuUNH<%*Qf60OQwBNpk^C?!C+jx);YCOfi4?F?D2={L zn(Qn#_rrHi!} z$l(X5q~6AB3Vm_SbnXnIs*2d|?d?4~B@Tb}@|$v_6bSah+a2pZb}Ka3J@qK7W4cFj z!st8A31UQ)^fd<0rESKjt=?uwe|koUd#>PRV64}Sj?&RVDLdd+V|kHo*e5!Pyk$Z7 z?G+Z~li5RID`J`cIE*L;GxHx?ps5dmQO92p`a!r6lU%sF@#YU}F#Y;~*=wVT(I0+7 z*Gmwj{8!H&a<-0m@{agNxZ&{`$bXsh07Lz|Pgu_T9@PmdO z>IYq(nl7?`7$b@hTJk;3d)-9qv5*PvqOyB$W%n0>)on+kcbYF6Cj^ufPCcdS{-4Pv z#Xl*)|260KCwznJ*qDDder=5%IQCrM6FB&djE$=k%^JDBCvrl5*Ond_M7-LVXgzyK zo3$B-wdzrYgvGpcpS&Pq@_BY(6AHG&t~uxoN*Hv+s zsrmI8^F5n0GZCF|zcdJvPtr3raQbMgcDYCFqi~wv^3oc|7;SiJ9!JTAL&-NSzR-WT z^pgLc$hW$8|Mv)g#Wq<6G+p8Fhjo@9D}TO*+S+0j6SCW_{^Z}G*6i=&oU(?R@Wni& zc)qWoYZu6JSE9}NF4I#bc_Ya`>+?zQ4PLoZ0pr3~MB<1Zh%&4rL0L2rI9=@oL${^j z7UViK47#2GC)-fMKmjJ*p=^or(p&jf`tahYGZsay0<{as$}kE5WkIfDh4gdh&lOFtvDAHIHN zl<8lkX&;}HV0Vszb7*KPILQjaeL}%os+`Vx{(wxr!8Nm3m~59i4bU7FP1uXa|FL#pd-kL^k0vHsVKo9q`{3*?iZwNyKACQAC% zUPC>+`aE0ksO9x}jgHHg+`}(fz|Idr-j(H9@}+Qc*E{!`5oN-MK|A9mo!%1`Vaz=9 zElXhnE|8@|ctMftpHmHA@CGw4qu6?1a{Nfa5hP_WYy~one^&F~BQlzCzLkHF*v~{h znm}l{tE)SVeag@O98pzOk*k;DrD0$_=N^A;X8`Is=al3;hagJx@i|*nM-%mg;wYHJ zRhj}weq&;7EnD9B``E0d*~mdsPL9X~IvFx4$tht;Kx^@qk$;&FDQ}IA=!3R*JqJ?V z_vyL5r~8lB)!C(cS|0ROpk+6#{NmC)2Z#!5t0PTg5BoB_uReX+i&$L6Pgr$Y(MVwO z5)14D0}OOJg+4fh(|EyFkSeY-^MFRrOM1&YPya)Sfiw8lH}YI!U_1X0!br`!GO%Sv zxUo46x`1{IOn8R5!p871hf63$|KabFjO~};_1_?UjV|4Ep zx+3-bzP*EUYohqfK}S8_Z=c9@uxTBu9)duT*Dl}LZ^TG2d^%Z<3lnHD&{qvjvhwG4 zZNzi>>`ku~k+wty{On6@O*rq0af}j2ueSQU3}$IZRO)NK42rvA1XYr;e}<0z&iQ1E zmHU}iev;+wVX%BUD9AJ*N`o}q*mwVS$FzQ&A&<~9{mk}^xLNgLFe86cy|?Szsq!0Z zl_O~TyCNc||ArjWYTmYgdz|t$zpd?bO9qoW@Q#%7Kc?!SIN)_{hxfU0VwY*@nTIae zP&^~uC30jP%1p5;^UWh~@9xShp}BQ&Q{xved|VtHuy#*SW)>D$rj=>f1&%eHzKo1vNVq#Dbt}{u}8vM?GR7wbKHt)9p44 z^dwMrfzpXd2qKDEbvKfGdMgGLR*nvq+oR|>5;%+l0~`KYinSpvfo47!F{-BgBn(8J zKfT_$SF;ctCII~h_=nuJ^v4^$pDYbFYfMF8@O$%(JVixCgP4Z)WsA}|g_;0sw>Rt( z8vl@7?`VaWYGnSKwSSLwYbpB$s<`XG7TM=!_`9T7^2Tr{J9irYosEr=Jnei-r4pFw z52LS$sNC=eA?i_Q>xz4Pd^-=8btIR&h2aluZ9~)i*ON8r>4_Vz^R;`h9ANooKS26F z!BG|aPjd^BGyYek5IX#&z>aEL(E?ykS0VjS@P(%Tt< zjV6^0FP|Try6Fvww`;D|OiWD7-+$Bcd*-SN)p4mMl;$z| zLJML$mcKG!)#$SaET4+bE!=i+gP^7Mq*Zfrvrel3c`!^pDQL4b_)rqjRj9gUV-nOR z<&dUup;?>LM^1hvc>~@mUbFDoib9$oOi4mx1SlBVvM^`}L$vsk>Qc`ZtAb;-gi$!& zFCdxI)A!tXQ=6}yXU3VIxlDISzTk7q|FD1>#%O-T)F@hv<2;ypCj0Ea@jXmu*!*mT zEKLtDa=m8lj(T3r_~E+x_1}-m)V>Y{M*b#TX?hU;yGP@3&eb*6Cu0InpWQTCuP;6c zNy@Z2lW?E)n7NVi2y@?K&hoxKs^{4K3|sR&uh8-s^FMcACA!)A(qSmAmLzq7dc${m zaPMbA)5N`GgPgv39!i)8pXVJOcp1gw;6YCJe>Shz_ALJ#VF(FH8-`anIX$9^ZQNhH zpiX~lY0>F<8i|}88prX?=#jPV*hAMpeVq8mvmC}H(nT@Qd(+IEz>$C|E-9c5jpi9p zu?L|{DCGMoHn>F;HQ0`8O-+{;-Ap*a zNBzbLLA?G*!ISjDo;syQX7*?>)Z8zheV!fSKb;ZVoV|%>;}UBe)A-E?ZS+bpR(bof zCXIu%^b-J5r;@Fx&Q$AyQd9#|if^W{aWraOT;NI%ik&TZCjZ}$ zyb=4M^c!-gh+CR<_-9F0mQXJ8=TG~W-rg3@&U>r*!^6acglsWU9Uc9`yJBh$h|0xZ zB`EV_j)@qEvb;PQ-u%-%9nM3vz9;Nqc26uQ@Xf;^c!6jEY(d6<7{)JWw?7eUiX=x` z$69!AyLa-z2v3C5rPg*m(Ivp!$)qERTn+ITKpd&ZMM+S9dXu*7dLpf3;&O7jyLx(X z)VsY*lE_8+fNMvT6thN>m}T|^W#6}UZQKmIsLrxPTpCG`}CnPjIC3q>QoeBRvyBz*k0Ac5MeXmP2#Wa`q>tr9?(r zi$z7D{}kOhecibqiSATVLVmGXW-QY_NV@M1b$v~{pT3-w!gS=GoCx^`i(OV8VnCVD!xW6(D*gy8%I@o91l|Hp}5{89W9oM z&RxXA0;rAO$65H47@Rvl$BY!2)hw;X>t7!Dao<{3iko)36EYTGiVi&x;mT*b( zFDR4Z_w!X1d~eD2x`}I?19h&Lknr7R>^s+$XLrT>Q%y}?mj9`&+-$?)a8Wxu1xSST z={W3*w=bnnx2^cgKSewh9-g!`tFJHvK((ukWXEV=u-QrL1>JZmbe`-FS6rX8mQ=-$ zj_4_!AP%`8gkMSh2%NP5oG{cYSwcF{l9Z$@hN&644b*Me3c!}1WYRNnnXGXb+XCcdxvZ1Fok>z97Fe^}j`wB; zr>CQfi}fV!pWS936bRVNj}G^H2-l93YTeJ#V-C{*RwJs+ts!5IEh`BrFJ#GMtEV>h zCTv^mZ=Y(|XWWye8fYNug+!E67?^9X)TgVk3R#cbf60??c3tR3g#X#v9+AiYj(W6f zOPS_KiP*a=#0{?v*9bn|XYwQ9p2he@hUe;Qs3@{wp@mu2gsoioV=XP=7}ev+^Pr|Q zq#b&{AW_1?G}?FDk88U7pK#2_5oz7OV&8N+PN#IZ890Fhlk*D-Ds*&o3ZkN-?CwpP z85E0$aX{UigQnwZGkgA+a`!dsfL<92vT-LlM&Jtn-~)HW=U0hq zUmPIDM~W91)Xkr$$aWcFDtvb*131A~)K|v*|8%9Qw+}|A|2MF|zIgT*dj~Hi#tH%% z`aTWlLOt$@w>L+HqmvkTblf<7K=1%qj&6aSr;f(aW~sh&-@`lind#|HR@ZD6Qs7Ca zVddpG0kE+VHBi%g?PPmroA&N_R}rod&|a355roUjweVXC)iQ^+cfNy=D&VPZYY75k zw88A8^>koKi%aM%zI1=_5|9B5eX0-|9v_m}0XSo<8uiDC(>!P)fXRh)*k6mUo^hK{ z^<6=pV#25?U||)Cd*^3no>J!-Ik(}JNUNk1tBP#>oRsl1`WlEueN0IB9qi9FHI>Kc z_6=fXnCe}&I7@^ipOM&f@YBtgaXSx1O`T$WgV&r@oSH#&x9&(w{+EAP+uaa>$6b6453 z!UH4GBT4WyahP(wt($US1z;kQXpO6+!n?Kn6+I>5_fWeu|MBk?XjOgKri&2q7Q)6Gecen|vBn7I+#$0V^Fr0cJX{Q7=f9hRQ zd`9i)pcSx98`zF|@5%g!R-V$+(=$UHUxYYgZ#c}%b7lb(b3fwzXJv)6m%(05M4{Fh zZ$Ta|f8S}LKq*^)uFuWr_85j3xl5{!ntlb=21(;T#8pROE09!hINCQVOF_DX_L_$)e z?q^oksx=3Pt=0DaKEXJ!iTtymfRbArPe^E@7VY$4F5*04U?U4+L5@f~&8~SVin{iP zLkmVBR0%_m+T!&TccLo>O#P4jHwNksmZNwiiHnTAGMmbWg%ytg&|b|cX?ZtZSf2sR z&UP_$aA+t7phKQKC%05cn>XfRXrGlYFdTF;6IMx#QFg(c@S)@v%wzeKtAAx@b5M;X z?e1Oe{fHXgFlclT%K9y!@yY17fa{;=@JnLC-$dEBeyML=jS!X!vS8NZFtxJrQxpdg z1Z5lqyRLa%{ysz&%=ArPS_p&4YlPHeLu%kFto&zCNYYcVMzi|J%@q}`og^y>q4#F2 z8)1bLR)HLIb1&|ilq;kq#6zIqz*AE>v9`c%8BE^1jZ*wyLy7Ta+0-#zaN-1?3Yl;9 zN=QfyOaNPVLV~V@q-2V884_x1Z9T_PH8uvTp?;Zw)p|2QooBE+o}NNA3_?ph6*rbZ zSCSIU4Gdo%S+%!k(_VqWCtnmj*P)~z*0GJ70MAgR+z@CC>bFxnt;@C|4TIl7k3He3 z2SZ}Te-vmRS*{eC1U@<@w{m?haC9tuaOb@b#vu`G1q+!$=r0a5V4C+}M5d$DAYh%L zAmIR}JD#-m+s+dP{xy<|02yhWaYe1sL!F(A!XGy%aJSdar5^nR9h?z<{Dy@i<=CbA z-4)Ast5N60V($)@7}^BkD599$XuZKm%5N8KS;m+=s!peyc(#pshic@~?|EnBJYzd@ zs#(v2H@BmNX~H{T>99l30801rVb%`G5bvmbb!4eNWQ`FgBPmpRx0QqVPOYRQs}gaA z>9W=H+2Q%)>Q@$6^5e^&T_(IFQHQ>rkm@|C!)z|LD8)~Cw=&h6cgoe8O z@@>>@SzUx9DS9iZKUJP~)E>oIVvZ#LAquAl4gUt7c<%N$9SM=TFMbJde^@B?)cAeJy{9dC11*NNx`?G~wI0B*` zX0>zB#3yUrZ-Cj7ej66$kuEeSv=@lZz3qs$aJVfz5PcwR63DbKmk? zT0T!tM@}VVhiWAyUCA(hVM>mREYFfm{LVp6-|Il8Ch!q5cRs^7&o5rHcC!FhXXl3x zsj?hvMl^Yco>c*fSAGN#UsVth4CZgZ4YTVhEv;4zDDC_K;-o-Q-A0BPWZr*+14ywV z;u6HbJ%C8xa~i+v7Rq|7y?q{5mK~f%%?E>zsVy8Rz(rq>pZB}LKt=PRRZn>5gAR3f zr>mH*9XT}Ro-{3Umb47s>pvZgFv;|XI|f)~)?ZQIVq*(G(yC7zH~4+XkW)3=*(B8; zYnZcU9bBTm^&BU(Tvjz3)_HYZiZl65KL5Sr;PUQ?f>C+Pk&7VESI6YHf-u;cQH_wr zLQ_yca`;iqh!+w*UJv|`KOaAQ-_*iN&O#zR*Fl_}4WphxEm0-uP^*N~STC5a&sqdG z@ruJrfKV0*-nYpS;AY_s;%80yJ$MpLom6K_yZ7dirnmPLqJBHl;M#UR>baE#mXd;F z2|@(@4-5DPdhfTAz<5`l_(1SqgcTsd+?F{Z{p04ZW3Qr2=PWKyFPG%wUUU&=@5bxq6Rb1B%zg=u6woe-ER&b(;K_fSNK2Q~t5)(N$ z;a(Ase+@>wUR*e^rjgQxrstrACz>5_1;Cp1dwGx7QmzkYg(5b0%2=Q|8eq2)P|0N`6k3S&C@D^{j;BG^hVO5pRn(z4$ELeceOXy zaKpGTv4Z@P4Nfdb_q`)&wK7>6{lk0mO;oG`uFF9AW~e-Sm4SR z`4uW^K6WD`kiUMo2GV(1Mqd6`<1aeC+4Zpx`l$CVGjcMUBNra#vGkv^vbl&koWv0+Jmwr8vF$9AK(oAc1X8z7bGANK=|!)sPX zpWpGi+L-g`X4rAE{|?{uiKI28gYLAKE|CFtX}_F!p|UcR~V_u$)X`x>O!E z?E-U^Ky-CYP>)_4lJhbn%BhVKymAxf*hbX6bG7!iq~ykQeh+RzH)Yaq?BE zBdsQgh%4dq>?=#+uL;0M2&a1uvjOIV^c~RPZ2SIc_Lj~iUA87p) zp?gO{JfxN1d8(QZeXq9RbpG@pH`S#>7DW_?Vh^pBC%{%AJG29>S?DR>{Pu#5WaAkM z-qpz|>SRvMIMkNDF{vh;UOoIOrU6RbfDY|hA-j#__=L{IsrlLVi9vFOh2zfp{9#-9 zG_AsGn4q1{tczhGIPbAooMx%ptU`%CB(K`)$6^x!qQ49^zWY7TV2QoIt*Mn0LsBE) z6Jm@l0N1RXGTUGxA!K>DMH#AW5!62xi zT%w`{O+|6j#lTwn<>G4k3|or3M10?yGf zqmtsHBIHkG&bH3n&;X2y;T%f)_S*@?ZUR2$)lF%;ofw3(*RbKLyi3#^&)cCIoY|bQGt=#kTr}iS}xO~{wk*CVT|3nLnkhdbN(F)6cyZp*73q+Vf}QHpAf zKkVNxKC>CmI{2eL(V-tlGG(B<2O4W?Yd6<>B5?%;P6a3fBMVAdcYNwVin8x~3(^!D}^`Ki3Kgy4rqS`+ z`guF0>FTCdTyu5!Z$E2iy}$m%x=2cUphhe`hl#oU#DB{pF!k75gzrgM;_1N}8SxS> ze`U<0{kg3=*3d`r^EaIh=I;}T#HjN}o%TW>=Nf#~Q6(z2+gGk|aZOZL%M17)PnEib z3nZVxvZ8{y4;KRY2NTqQ2&wpJEb;rOjG>WkNl~G>OeQj5tgWNovj#y~w~eqrO?s4g zS_FiKG?P-;)#`&NHb^VQVb;8RvSV^w{O4*vWCca`6WZ2=I^J?r(mhDH;DVq%PZ=`RXlo~rz? zH~T^{D;d?(ie{{4jT%t1IpPzMORYQ zjy^DaxJEVtgC{1&#`+!Kzc+6^%3jOPhL_~$6ZVVwW}r6FWR>J_T1QWW`NpetC3YDU zhZvzZZ5APr2sWaOw22s?lxPQ2TZCDY4r|jUqE))m5 zv=^0c*UF|mx$d5q)B7Q)sHiyad*p@Jt5NqlJr3ovJgD~cHcJxwP)nnpVh7b({xX+0 zgC{pL0{6K$Y0CKkex_MIg{@{5KpSZmJeYKbk8cUrmU8Wr{8fTSpW52^cCi1@eJ-y|Ss_XA_{QMh4?Q~1u401#~oozb%d~qhn>n7e*jrB&iK%uSB zaKrQ+prgo0%!E_gmeG+nv=E>V9I`d_8C>mBLz0 zg}4TEoW=ZPJQ812hx6#v1n}_iG}4N!w@35*M;slW=6J$;kf}lNZ7eL7hnb_m;b=6o~&5x3ts~f6TU*V^I525q@MhR;mhqS>1H2XCk zluBOS)^N5CC)~T`g40Br_xO|+!2Jc1@j#RfZQ(*4WdkYKaak5nwve~OZ_CDoMsd>b zT)TF6#=GB)N8UXf^JEs<$wyEHpFsWbC2sw$(2!JGko0~7Mop462$-V?t0R}WdXAYI zOjCwx{~(tsP_3$OXo%Bpi+gq(0b1NusOD;8J}L>X{~0?&GfG~TCO^H^0pWW(Q=4ET zYNK+mkWqsayYPnoB>(kqY=LcL<4ZEK;HHNlW&~O9c>uY>wrTZv(0RSE@U9zIPFBN= zT821ZA77^b4Y<3{|5$X#{4NdiVd17V0L1}=^+G_8_yn|1F@1|*~# zx7KSrkMRG=d@pEg)7Q+417peHFF)%Rasu);_w1KFa0jyg6@C}mb}UHl{bbWm*I2II zt)2`Q-{uVc^a0ZSFf*~rCi2ms0I?QD_@Yf z`p?_4$@@T6;*Qd9rTa~j&ps$LT~FQ(oTke<`?Hv|6|0;xIzBEVJBGG*EHsgFe@lr# ztKdh&toit?MEm+FmW36EsJL)i^o!B4`-_foi(@7xbzrV5t28SUlXlp|m@N5pwc7yM z`g%V~CrP4_{DVVG!qj^PdsDNSzvYMxV+{M>V9u>q zyk>EH#-){S_PB9lKJf44^fzk+7?+Tt9*XIY)%$V%bkfVM?d^|L>^o*)ooOVs3~?pI za}pe&HwPud+C;KyFkkQCRb78;uUjGxV!sF7-;i1Pn;>j1ONL3m z>nG!8Th}cs?Ypz8dSg@^v5^U4!UBP_?i`&(ipT>3yMCV{@n}TINnho<-_iZfAKVr1 zo|yP6f@{xEZuISpHwFu5`0=u+xPkT&hmy5>)n?cY(8BH#z^8<1XH_Ui2CvWwNavaA zOdyH(%|^2j%(ZH~0(qO0A{jo&`IFubRTeV_41W0f7Mk+J-gHZwH7+ia#XkA?jS4dX zr^cs0=lfD_4kOfp6~x#a{;HP!PSddY3cQg1NL;2D!8Yuo>JjOyTKQ!)NdYCQA?R{w zuo{OH!^gr#HAe6iHq4Gnz4C9&VMP3GlL!s+`2qU6kZcxaz1t5|WcEh_hn^a|c(FwB zbvDNrB;U(iFWoLLzfsT=8CwDXBvelRwgL7Pkc`&F!Fprd1GJrF|u?-G27KM3Y`O`K&S!5vn{wHMl4kh z7DN12hqM48K$3Afemh0Xlhw{*rlu)FV`CT8$OuV^=pinacojzEE4=2zYTx6)FLkqy zxY}7gp)sj%qvQXw=XZwWL=5T0sqsAihW9Gpi?cbdevha(g1$EEF}SoU(1lpYm=6h7 z_`0_*Ip+vdI)3aL0MW&KiNTH!`CPFs$}Ly>oG<+{SrXHG2k&p44Gf0Q`Kc1phIP2h zgE#)^=sTrLHrMU-agTJ}!B&z8cp^obV=EJJ9@}KB^ihEcwq5sGI z)>F7rN{VRj_V#wZlcQsfjI2zbt39CI%Wa>Tg!KwfciTFqF><>3G=Hee>gUHYf4Ob5+0OM*-zeKol z;*km_l2CrYi$4PNnI}r!S8ih(APv5l&n_&RawXI(`3!AJ3K->A_%H)`Cn(=RlVmYS z*49qy|GfZVvAGNIyg7W+U~pe>^^=7cD-PBO+{zHeGGUCUUXu)DNY4!oUv4WzB<~im zhRr5lU}dQ@^J!up4}MR!I+9vsl9iKtT>HiB-kX+Bk=y_))K9505a}Z@Q9u zLHYeYLh^4HH&iEyuMQ|GfO(M~Yx!FR6NPyu73+kTLat-(PA!0fF+YQ=%^4aSKm8Di z4-6}ifXLop@B?`2*WFJ(b8!1t}&ztpn0ZaJqev066UoE z0Aw}E{M>ON_~XY%t%N6k3Ay}uQ76z=i9pTM&g>I<(`)gGW|^SfK@Jcz>2F!z)#y2F zGP4;D?bHuJ*@Kf#gy~-fr>{V0>H>QGEc6gS(_`CoP=TVkN({K~n8Ql*!>5q>X1y`X z_GTBm4&;AYIE$|jo0@zZ2Oic({#j5gDK5UKQQjim)vGwU%O9nhe8&B*rIL(|4L$3k zu@fN728TfSWT^h2_hz?Q7R)Z%BQ~RHDI7n%f$^| z1t*s!4@R69PBAC}(uM_K=sAERKU3qX?s>@Xa#($1dTxy(@b%|A_@4Efr z>6FdL=;-%_!NKQ7rlv~Sh+0B;{Wfmo+P0|L=yNcBN*C`9gL7P_6ztrDUAdG}uxE3? z5~1L7nV}DkI|S0U7bb^002QF13zI8=mIA^bZi4W`W^3`fx8-T^`>)~vCeK&xIF^3_ z2+b{8oEK(WS*)(Qq^R6_Zfbnn_+EIiy*$vs{PHDLeq{}8*=!vPifPzK&YZpob2-`O zETJ~Pv%rotVX~7fTRzKASnnkEPgZ#{PR~rU#@+RDYWeZjk!p#xl2OvzXD!^Bbn9nn z{Dh+qvX!xsnwNc;PRc@(w;2cNlzf5+{r2I!C$uHu})Q-TlJr zXU=9q%^FYlpVz-T*XE0H!Mhx8=UV|c-mZtB%JaOv$3}AXQ)Ioje_IRdX9Q7?whT}* zo}^I$pg}^Jo|3kkjpMjHpPHHq0kUACvr&~S>`#6^#l(5;lfbiNrMxFB(K5D~m zrn+W%!_5{QCXnXvvs13o!2d=w`_qQsy*Xu_-;Z`;o+#Y-j%`u~u0q9Q9!MwO1}=t4 zo$Q}cz_S{Q2vG_ru$g9k*90F6vDw(!a;&Yd%i-CTG^Bu8LYuu)ck$qy8bbh^%f`CI ztJ0sZfn|&X2!)-~K(O&6&5Cz?P(tBWr}z(5N@eT2K0;I4mH}w0-1^k0;|bXl3LS_I zU)WfGH$K^FUvak-YDV zYAvdnU8ej|r)%}z8GlGiy39;C>a8MebqXxj_ZI|bU~aQvzip{N1c$E+&A)6A{^2u( zu_1Uk>|T#Yrs}LX z*tF$CPq)1OTojU8_2YZ$BPeN6lf#%8`yK2L^kTMbMGLey_Ar&(U_yZGp7qTPE1%Ng zV8|p`xijCj&;zNul5nznkrIYGl!r ziAta*@j4po(v`#@-UiiwF$HIQ0VUs|EDQ53;1oe+KKvGP46UBSY8ho6m@{P1~ zt;*g{E$MJcs00jsq|cpK@I7u95A=Z`e&3^EJRSwZIE1mFvl`HMvu!2n|03jm@DQC{ z-YiKz?Gb|x5578S6*0(#+Ks1~Seci)Ep^5yyqyYdD-$#3mEQPa9aCggwmjJaj0(17 z)s50KA?gMuM&d*webB2*N=iy)&NDuUBb?aZ&D$La>z0mZFilqbh~5w?*ts5ea;Nvd z3WqGpUR5P^b=;)J^UQ=Mb?~8=o0!Zb5A&8s;ePs-3W}<&B7P|PPU8Qmt0Ndy7tx;e zU0HKt5)$v4u8wfDeOPC?g@Ds(FcUe(BRRy*0kXy>)SoV2lDAvhdbuDO(4dhl;$f@> zf=~*u?jMK5nB#R=Rs4`ur**pg-gMnc%=mhYnUeJ!EbZe%rEIL%|Y5J>uDBI-noj}z{i_}Hj{=_-1~3LY(K-y9s8 zcahtclcZCc8>Z|4%`9XfrkU=9#_{(uA3tREjS7Bs#czKq7rPvVUa6X}Y@Ts-Ud&(M z1fsF1ht@npG5h;~hv9oN^Z5kiwW&R-FZYRyRSILUM|iN=#DCrxI}jWM!f@c0cXV^3 z?K8DEhOuTl009IkNtl4vlp~Ly2N>p9L9{TdP=3_$_{w@@bNF9NAb2YWsMTx{)Ky)@JWebrAgn zb*}d3!;f+jlV$wF5W#{`xz#&#n*~v9Gl1jiSFHW@D`c;MWVPR{H$75Uah1Dl_~ENR zmMZ7_r^Vuds}=K~2B)iZ-?(7kc?QmR-`=2$aP6 zE)lX+LA%zVRY!Q-b$S?5pAiB>zK1sVf^8{I(ra%zcizTCt{lOb>qWk zPxWI*RJpPLRc8dNl+rS$2L|+9T_i+BA1UzWtt5J`o!uXXf?;039A){}N+K#Hy{8 z*>l5#R9rcZR!~?(ePN`#2OAxmfcqaBra#nlt4X;C5x3YId-InqayB@Nv5;AQO>)5{j&dS+ zsx-1Se{Ai#<1iz1j%{c)oRv*q&*q+P$(?Va0+D|kJ=`GOiJF=%2sVBpC!EmDwnepf zYGXJqbA#{l9GLI^5&`yzE;^xQ)e1&!%ELS#cn6+UHH%4AAhL@!`!s3{mcd~DTT(DvV->YZX(h2tFH8PnI#@*nvSe2ULaM)dpeYfOH!56_3I6H zrojKOfTR*NkM z08{54f6&2M72p=^>^kHsDP4`30Y8Bt&8bmjOBljQC)8@!h06eU<7y=3UFX!HC~|=| zJ<~=-;g^ z>p`7#8cGJ{CrVB$9bx6w&Vi*tJ5e?Lv&TJf{kgjRVzFvuz=r%n0Cl`TfZXfqLK>;DAy9 z5czfhpcr*o*{X*Okpa?|LgYJ^nWzDMuzKI&j*d?3A=EeMhDfVoyi^-71*MRNTXu15zQn`rF+pXbzI zQcO9*x=hD8D6a$u^Sg~)-P)2lK9$HrZ_oRZ8n@aZhu!mm(guf3fla8IYdo7DU%Ys8 zyl?;Vf-4_KYqNs;}rb+bm9D>sYE^{ zXr_9OMjaiIgyE}|1?m?+r()Ew$Wyq&QiA-vWpzdNuVS%xcB%h|r?Y&BvW>buG4udK zNJw`|Dh%BM(%mqCNW*}1!_XZPN_VGpcPiao(ny2!ndhAMJ@;R5f4E{_Yp>th5N1_X zP4?uuh7#MffYGwIyL)?{{{D{e(q!_Dh|x`3HsYr5-FlRFg!kW0vevb7u_uqeE&DZa zc>Ta8d;NV_xmSRAe>VwMK#^y%=mB4in&^gF)v37Lz{=bCWDzv|zfyq7kRNdQGG7hP z)F`*JQv*&Lpc$CRzkd6~@daK z?;rt!LzgQXZDc|9T}>~sLsZ72_-5zxk5Jz!7FtlkdwXAbJW@?Y_S-3M$FTT(-7^;2 zS(x!8>3L6{@k?h>3_|Fq;ALMfPq~bI5f$$h4F1ZzqBqtRYDq^!*ZZH@Z)PlTG`pmO zcNjy|gt&vcn@uc}Y( z`AQAu6{io*qI0djlX%rvRgyE2ozuQb5$GQHp9*y{!#&!K2bnSOF6dpjsW8ls=uTC`ptb~ zBSo>pYQ5`VLswVBdFsLw%TrSJ>-xh@L(>TFL>EVoTuP4WUtXk+TeCIu-R>>U|-Q4J0u@tPo`!SEmk6=6> zlH%2BsN73C1nSo8|wJ z`D{)k@fXOVe(>rNB=fB2r9yaU_?vCob4SV6xA!btWhn2XG<9OH?rvBjUPA67%!BsO zxpM)BP^p0-F%K5Kgcd5sIFu)8F+|I+`tg_r_44jR_4+y)#dG^`?VbpmX2HWpB$xH$ab}$5xO(=&57J_jUMhZZXzfq&Hjio6oyX=l%B2*MJq$1b+LyIMlcJlM zsV*1jcq)Z%-cw*Za^?ab+O~L8>BBSM2N8Ttjt;{sbUIsG1xefJRn?5FTU+zBGBYovj#7U;iio>Zw~iXRui<_@dzn!wUjI6y!a2c) zyP>M4PE2unK=`|G9xAE%@ng`-_;u-wYkN9fbL{ZGZt~fqz!(_3>NjT=|jB zPpp$&O3%kror~+MiOrX=tX^Ede`LbvlY(}u(})D)ef=ym2_~AsP5fO0TD?pc-OqPY zUBu0{3mlGl*wF9V(x~^^((TR(goPAO2wANov@Gj6pZa*zFKJ<=CLuD<%LJtCY&?{d zsE2(LUjI684m;BhkL8LV^Hd5Z_N5L5CWR9^Z)N&z$IsGJNuhWN>yLklBjAXwx^)+O zW+WV)Tlckz4wUQ{FX$3Et2IZ3x@j-Jtb6aa0IufVLsfE--rw3U_qh)>p_ zxS|%#`VR*a?z>Shc+p%Tq}{&Jndvj7Cy)WGy`>)9DXA!to~(=98TsoxkGCBU{{2#O z*?K(Q=+O1zzps~&;m=ad{CYN8Ha&K1b7VQIsTBgt#j)FXq18`!-;On)8o255C*)sy z0`uA1N-3)$+K?S5WG2PDGvMF3-_Po|t?mr4SG3)IN4t)VpYUwDSMuM#IcoOM0Hkj_ z|ALNqD&V-a7Tgy!_;VQYQ1v#&TKNBAF$ZUXFh1g_frN0Tcz8XSv6>-lj#5_Ddc-PV zg-r=r6h#R?DQUS<5vwZsC9;)ND8t}yS5bN|?rLFd1UD;kb#a9m^pIWbkxiHn{Z)S2 z;B*`^d3j(p_WMeVB!FU-2F7UdM6t599~k580z6Zi8W^A%PP%`jrk#{32;<2wb&3Db zf0$ToV&>YMXyr|vzfmg4-uNCAN=4Q0l&f4zts0IlJsm)3GB$0xSkb#*iu0SzCrkY| zTRjEUplc3jC{%I=nFbml0UaUhJDm1g5TE7>)$fZWd61&{cHXnQsQi$|A7b23&D=#y zvXStDp#nc%P|Fe#A&qy6)yKupl6Z&J3RmpkC`+gae|Z&$15>Di_M7r&%hTNONcClZ zgr~X;gs_qCKj#R?tKiXfBS4u8Msv(%5toHXW)VU-vz7I@`UO0EBGFyPKy}Z0HUr}S z@Q@6?5I&kPtJV2ypdh+*p5k$JIwX3klDD-?$%ySRK6vyc^4hex;XY2)7N*J zRcL9=59uDmWkvdqDmvAGvkGHi?&2K<+FP$cUooGRZ?QV*^B3Iftx_X#1yOM%<>%k2 zzSz}57d500>R!%6!fa;tV?O#)pe5qen^xH0R1a|%aq^L9-}QW+I2^nEJS2|Vg={1g zsB6h2IcV0NM0FTD!1lM}&e+}#_^|Gq(7|_|_4?Q~yv%?-7J2#grK7CkU%IQSz>Q3y z1e;h>2w-Q|HE|QdWrkf z<@$3OzjW@0#k`q0t)fAuA<274h&6=|>@sj@V6 zXnJ%gM_&M}tOQx)pc+e9T7m{IH=2w8L0(NoTiWXo+92J}hL5K*KXz>>tuCA(x~#D~ z5_x?g6RP}p`AOzsjM>p&oW79XD0LWO>~;U5c#K>~5~rN-avK5XDZN#OmOJIjVlGCb z3XUSKrz8a1d7wVcl-YmOlRQy>Qo6_3I4Ka53B(VfH6@c~ zk3@geTNgtc6+HMkYtga#n&|ZX*-ib1W%l2Rmsr_i&UEFw z)OTgPL{Xkc@UG1}b5#nQFc{?ys5$Lo`QN0}f<ZD`(FkpWC=^wJahjCjnN4T3&>@W4{#f&fa}sdFrTq5TWLxomHz9^U7e zOltHh$v%@UoiXDo>0z7`muNr$upF6f(&Sl8$5jg8b=;bF#qq+PZ$;fg7hKQQjtg&J z>cm`5e2>5Xc-#(z9j>2p8feD7tXUYzvvY8yh=~b-Ly}cGoB4 zu!&q465_A%jjAj%7#Sa37Sh`iz9dxR*=I6Ym;WYCbS*}R%7;M6y{Qkgd3Y4F4~$pO z=kD#_`jM=@0)Z*b=|lA#4l~eleGA?aK9ValoRNIgct5~vEU+Hf=Xge8#X8g9c7li_ z6w5|~V9wGUBs)5UMqVXS?jICjfrnTSBovR2*e9-fUx14Kmf8wKQaS(~6%dJlERKz& zfq?u=l;kZ0pn4E#fr%6SM|{R6NtPvNN4=l=YxLhh8ZlU`@u^Y#@ca9h+knTHzb~S< z#?m=rnrfddEfu&xC7&3R^d3uYDau9nn(hfyR=*kPsD9N`R-V7B``Y^~@NZF-mRgOZIQfnGtkVPNu1X0Tla-w=)f~CvB(w@UPjKDo?^$x-<2V@SK zte5GuASF>i7uRHhwaqryL;7ndf_iAF6jC$>^VSA=$#LucR|_y(HX~iJ5Yoh=akUD| z#X0?1Q&m107VU?WolO|rA5~e&Fx5NAjsxGku5TxEl+}%ChBWW3i0< zHLKOdE|4XtXR;PhM>M{=P82oe-c$6`s_Ivff9=TfvOg`G8=t*CX?^^>>D?DE0{VP< zQ>xItb~ZRp8q6GDA%`z;{g>65A_Gc`ZI-BX9gBrC#KW`S$uZln#S6yg-)KW1CP zW5Egi_kzodj-!`RzdTiY$Z)b;PchLs9rT#B*qz*m1Ax$w0KX=p=ajQWiv0FojKzxL zjS1%xc@p@<&DQGje$!Ts^}jpi0e-|4gt5YD5cE?8HM}B$?}dz_9zL0yNE!0Ts5R)> z&VPf^E`dx+$pm;R*>bo8n=l60cWZLIPe5_~3u6Y{&kPAYw~@of{46}3t+Y~OQQ_{K zK2m8nm$WRM!w0kQH_)5IYBq*5q~4#!zo0<)q4N-sfP-kUh2r>;9Y7zRgTcLtMN5cI zBNrUBi-L?E3`8;o@l`;P0^?&4bWUeXQFO<9$RHpRi2hZ}H#YPkwZ!9`x?xEzQv}yH z5{e}e5HowCx8;4toq3ZorrJQg=@@oYuO%+@?+8IzMnv|!HEEQyvdFg*>IiZg;uAEq zBBj9pi6+ANfZJ@&ql;{}W;{>LO^8WDj=3*Hdt+Ya146&}AX@jP$~$?a+C>E($k++O zVPJd5hSMiLngB8+kUGBAxwy6E+-%wB--_6G->RfgtMWw$0#Ym_{Cj?S-#Hxk3z@TH z<^RT_l~N(6?QQiv7h?$slcO^E{O`TY;~@yoqVS@-9?Kkl*Z@-Slz*Wj@*oqjnCc-Z zSX0Zy$mq?>qoh_9BO`^&iHW0L!Plr1vas|+YQl$ImhCZ9U0>SHXh^eEfj?X}(t{J< z8f>)YWo(Iw$2u)cbUZF_B1f(uJRE4lrj@tQV?j%IRiA>3cacQ-2Cw>EANLd%A~HkJ zPPbVLLr(MzG8|;HE4`rE#l}7dnUb;qgi#Q6(d7|LQQ^5UAPfXO#EbYoInIgTgdt1r zxIg#x#nkcAY9&|$xys)xhEz2UARo0z#)^o{PV-PRejai899&!c+mspF>C?#yQSo~* z^Eo_D-8t*LB7N!;^GDuz*>~I#dcCIbInM41>3W>s*oyLh)bcq=%I>+R0#ik$jLVqH zhf9=EE0Re{gawvIA=vZzCIWu^G!Ywr)CGoNFkm5Rl1V3FzyBLSi&q^FXhhg9kz zuYh&0zR>qwpOK4Rqz)GLv68axT;5hONfo}GQ4a@7yric_QH9JRf!3u|>5 z``0sRy-josuI;tURM!IohCNPQyqo0e_pIca^rQ zPC$>%fp}S``7ksJG8V`rjU>ZvtLmp`DC9dm661I`S8N7^(9`gSZB#igZ!)K7RmR93 zNr~XyuWSQ&h{N}w85O-yT>o=BpF;(zA+3!kq|WEH>aF9AXH?OzbNtXh8$P5|Prr(x z;}%ps*2I43wkiTtV=2`G6?zI>PQC1B)z8GKdtB(hB=tN+-!f^LzVx=}cHDvuuXC}^ z3#)yJHXhbDwtn#{OS)Qc!}G=~)sBup$-;Kaj94R&*?@~` ztf-`nID|(tr(0aqcYv0{)Vv>!2WV1y$mRe+?uV7%p^iCt~?joQX$w}W)FE?UOiEvW4UO7p-<9TOESKM3o>t{>l-N?`{n@H9@%k&!< zQ=eh zh7^-D{OS#bFb`w&L6z*AQ?5~k*cHPrhu;pB@=N5-B;wKq5sG6fw^X6g1x(G6;_`W7 z=++2Kk*as&hb2+uZgAEoX6&{k54zBA(z2lkzyICM{h8FGJj$%6E;uQ_Tc}?=e0KMs z*FcG|Fkq5E6ga~Ya9be3ygy<~(aW`g%-qFfU-BEFf(@dWj^wHzT)g1QtXz{#f`At& z=by6=I^4OddBE!uE1R((`}F9+VL^dQ>+1yv= zzn@k}@igLS%?UK`N>L3miQZc)X0HaYKfI^r3!aFb^xFX|t{_|)Pcol?5x7sdAJ4p? zIfQiNM@fNl#Kd@wbcYoZ*6(g|?{bJ?^p7Nd>Ao4c8d4+J17xkY>rTGUhc0LDPmSJf zq#kO1xWBdXqW|ao(2yVK?6)NTQsXJg+i^Fef=iR(P@a7|Ft}D^azRnF(=d~&BdD#R zrOo}LeU$k&HKSVAl@(4n{bqYFLc*aJi?)y+^?t%`;?P-<*{hD6)q&Gz9jbZEBJI)- ze8&K{sme+-cc+qVtn{X4NJ)2MxOg4euYB%5$g=j~syP%itC znTeek?=~#PNm%@OoO^;?LqZf0PaKI02&C%)L`rgNTFP*9^M{tv!UjhT$@wbZ%5r`W z@+`C-#&cMNM8hedC4Uom$=7ev84Y~5q} zGwR;- zsnic~GBo(uoz#f+Xh&@ZQH->CJDFmQ@^}`6#-ex9bcyII8r&#l2D0QoSzJNa6{@wn zH}m<+rek`sT{w(c=wlyYN=9^y9{3VwrEQ@4&$^J5e3bIs;W&3SF#7Zi5%)l7fZ}P~ zbI7|$1(sKBiVeC+{l&mg_%`Pwt#(0C_4TIG_gqEqhb%E7=fnr+;YHV~q)njd*GDkM zf;=s0oaw?X|5UP758E;PNf-swC1-E)G!O1kN2j1TRkZ{(?=wzssKHhglA{U^HZPyY zrnIF!w8W_sgYd+GFhj;@Xx!*Twgi`=N%ZHi!hMcE3pLFj{E)(co9A)D%=*LpNSrY4pGnZLaMvK8GBwo@0E z6<7VVrgM(_`Y`ct>(!6y^*QNm$Hf2N>v@c$KQ=sRwU3<17TO!3aFH9A5pm{w=E&{) ziDIP|4g$5*Ds)r#Mu>D4|!8ClY`nwa^m(w8UEm#+e=_U5VJ%6$v zKq-_?;JQ8^H=uZ}F5vC;ThnHiI<5(ThwLIU_^s4<##VGW3>$d0H zRo{b>YI7>h6OB3dw&xD+m(2R_)e9ZmPSr=z4JHo?U!HS6Nl1vYk6{jGEar9CoKsZw z>v+Br-RO)pc02~fTTn5$%{IH?yYU1P#?Z~rg~ra?FSdKK!KAR>W%A)G12@OS2r(}L z-E+G1=SSp%6{CGh!iUeD;f{dAVrl6Icn82Up;k?cv0Zg_hA!iGKe`WKDyE1PmX9;m zCo9@c$QEZWZV?i*y-m%ik{zTmA%;u!+@B1-EGcCEg-c5=*K6jh&^@AoE>6KF_aCg> zBbVID{*@Z29D*3`Af#VGP8~!<(hm9zC=mvMn1g;9*s1J$k0E`FMCE&H6<#oV$x1u> z?g#DdU%~`R3g4TXT#)>Q4623{Ofk-PFyN*k4pXUkH^B`Kn$p6of9N`@(=#lLK_u;I zb2mZ|T-tc;@Q2Oc(3SnK7Jx$^-ip^(Q_k z-i_@6drB(ixKpiHTC=lncD8Yi!!v3I+)6al0|M}9RK7H;mr`~2HzW|FGD2nQx?`@8 zzlT`!T1wGJeC~x7W|pzp}=sG zaP)G_YbpY?-=)6l(O=?6nLj3xl^GthgtC%F7S|zje_K@*?pjy15Orkd={#wZzZ)2z zIdm5kFF8LyxmsZBsH6Xe%QLGh#-j=wDCSo1|i830EyrX_&-ZWzx4DXq7W{EcSvneM0tW4s8>%X)%FN zqrH@=9;Mr<7Z#!rLcgJIBQh4B)O$3VBULLalF!-5+uf5J%V>C}%O0Xb0evA4A}C61 z?~6tLzH#-|Fz!99{b23dn*i>|o?M{OUDc~eI%Q^w*bIsqA6#vj0oB+wVow5a|96N+ zx5O?Y_OcJT)z5kgBZ*m=`sqaV+UO6aAN5G@B5+*B9*Z^#bh`Gl%8?>GwhQ9dL@?g| zW1s-PrFWM6#F!Xzl z*aTTV47h_$J`c&O01;zil$mk9daBAVIm!Eu{Y(L_i z^p~vM{EVjD%~2;XLdo4mqGjRq%TO43N>>P0&jtU95gaIKm{*J0C`M~@Ga^&A8<7q% zGP;30*oIdJ>D^mqGplkK!XNf3%$uIT0R#yW5J?;^iH=3cWl%sf2&@W=wt$cTP+hRn z%fBVWM?rNVAqW_l?8?2Y*_bwf98?e2q{%rsp7xpZPf3e7UJ~c@yV{cZ<~Rd|zsYvh z_}e4}CA_icqGX?w_1C@D(i5$*(R=rDxT3So)b)?k=haedXyNq+t@%L1q+=Td=D>?iA;7)$LN@7mfnQH}a{)Zld<-z-^`Q!Xg>&E${^ zDln0yIra;U4<+y!wIda0=1CDFUw)#4v zxvDz#$fMPj=aiRr9kxR|3d5feUGHA~Z~OZ^awmsWwcUxR>r=4%K%p32` zC87A(!Yb9_u!kOG&mEB=^XjA970siD5$~L*XOs=fLb^jjyzqj}G3@L7Y+_7iA8)Ou zppy>Kh8NJm+fyd6rDH$3XDos>RZZmHD%klG9*}$1DG9o5C?J0l*i2E=vXD}PlI%)Q z^K@Vi!gT4A3lemRZ??lL{URp~=p8YTPE*MIf&YnZY!bBtFEptmm7j>68~q0W1|#_t z)n`?~BBAApb6J-(jI%t>nh1JlODRY*W( zzlq3-!axPTO>b#_Z8G%-%wsaf2PxUWqH=(3L6cOkB%?vkMN4)xu94`#AsjjGqQ1g! zQZvDE&EnN9xy;H&Lb%15F5u1fm_3TPJp275tCb5v{U))%y~;TAg~6~|?>?B7aj^$N z+rnDhc;y7-UQGeoKRv(&JjzAH8>(AG#bX<^KcK&M1T9Yiw%0JK0NN6-f`05ocZ2Qw z#HYBAoY!G)63DERtjOK5L*PbsP3`2X^;S?Pmm#XT8&A(Z`$r=+mwNY{Hnzy|Dlq;s zpV*)J6YD={f#fbSJHzASp$;00Z<}odT%&3>0O^}7BGgkFr)m>iY4zlxN3kdhV&dFs z4gY#37T3<>qZ2=FG1@gd5hsTC#iLb0Fq>MiR|t^oG)&@`Bg=G}y|yS2R_c;~KIRl@ zO%S3KDqnykIThliYjjD3zRH%?h~fX_z}`imNdsziqp8k!tZZzyh1OW31eEW4)_s#4 zAhPO30`lI0nbGM0liQJk7<#5?dZt*g4u{*{)##@nAK{BxGOJU?ASb%+*f2>`c$SVV z7l@ke1NOn^ylzlf`1L5Z+UgiSDSNR*@PCP{JZWV}cz7L`$|-{|tP4hG;>nR1 z;ml2nX(+fys})>_sgPj6P4IzWpE~1Bu>2sz{R7=p2ZpjUF|m>z*ddzDIa9awGbOB< z9nkDGd>^l`nT~}AY7YogI48u5V@mvJ4KtPL!&t=U3V@cdMfO%GXLvms`s|SDY})$2 z3iv#yoAkm5Do`HTMkWkx()5bccMFkF&w0_$VoQb-%1qGY2_KHsF4);Nd(W`-1Ad!P zAx2r_=1~H><aXhACZ5>re$OTYi&w*7X z7(jTqc0t_XSh?+TaO-TI{+<;5fQCS-q7M1`2DsOOm=z1ixbUX$uY(jHY>_|96JcdR zBxe3yb&l-yE1O1#k2i_K-5!!5rf`~N+P{v`0*?F7V9gD zR^hh&^Kz|2^AqG-dMX;;1(MK@?imZ?K*}SelP_veS$)hA&;)!Id4CUVr2Nzto4pf4^;X&+*V zl#U&N;o(=%e%fhJU-v|jh@1PjHYAF0xBA?CSKL;8{`|H-O7uVYVNm!MRk%{)9?(W^k zkFIPV%gg_B7p+G)H%QfXt*B=nlE`Gsqi$=8=FX z%ilaK*Fe+ToW~(5?8U)I2ADcAuttzqecqGBXCD7a zN=;T(W?^b3h4DqPa>(>6Bb1?$Xs9wP7M>Xy$vX~4y4st|Va|5F5h@27UTa6f8+76~ z!XYFtE~Hw_WsWwvt#zZwi2bILu5PppW^s{(>pwnIQqgBO{HrEY{($+mjC*<)->s)P95~pBGJ`2T&wu66$4T zAfFDXb$O-M(vs~jJoVzlL8&`bT<3xWZ z3X1v5N`LJ8_2-9ajw_s>%A6LV)~WqBN4$tii-z25EuO^7d|i>BSB_88f4?aNG%;>S zjx{#5D7E073atmPHIO&mvJ1t|Cx~ZxU5it0;z9F z=QwXa=aW^s$dd8)#rG=~%dc?I`u36pKvKp}>1s+6PqJXTITsP(N~8>Sz~t!o`~i9X z>SBr0IFR%8)bf1J(FafGxliZfZsXqD=hWaec;flD*1rQL(J(f#X9l0Ew%1@>LuXXj z2p4;;sZ~yRAU6^o)u6(Rbe0{tD8eTXxmuDGFryWalte9XlsAeM`{IH+Qc~dwi4zaWe z=!jJ^-vQf(GIsXX=HiBZmkxtUIAiD^qC1hE0YyviZt*~PUy`7tcJs6I)Iw}Pusp83 zI_Kif)gBK5!F&`?iGAGLMc|jy0+22lJo$2QU{NzN=_88@@n0sTvy30PPrNDfca7`1E@v^(z>;f+#XIGCf&YS9 zP@D5j;8rC4rRp7xKQX~mf39O=Q0;qC1yofk8*>k4#9B{Tal_F!mTA`*PApBZ9Bq(DD{QW9sSmP(1q%@?&3ABhFrHe%A1v4b6`r-kZ z-|n}n{btrK_>Bgf8w5FqhUiG@2&M(Osq1F5qaR12x+x>bGm$wuT1&0WFVvjYn&i9A zh=hZMAgxWN3xlZ_w^%ApW0xHL`e#yR6B-3V&{r7QWCE~nNvo}v>FRNH+g!+1+7A}Uutefo-{<_r))zlJ-)B)dA1q}-iw{Ka zGGe&wfszn88MzNX%qTHCsO;2E?!RG!(s9!OKy+ESd1Cm_Q zJAl+!!so+`1#o=QA{0*tkuYmKGuYtYExaX_TGI`7xQ+F`!WmE$<@cImmk5 zZd$^fE5d?IQ4cJ_WeD2s`8L;V%LvtOxC$ZzYQn82hYWkAoUAb-KVeei7k9|_5(KzU z(oYWY!Fu8IU~*c+R@vhB_js%G`q%pDXxY-~^tWTq zn}%T)M@dhucZn3I9uK)_wKtVF;jRsR%7dGejHwei>ANGfQ#0=3l?aAa%|Z|P8Bdbr zZvWVWkvP~pOnmr)`PFozI*RJ$14&Z_2@eF`S00SSMp=mrG_&5I+lt7j%+qmHALg{w zlRXD?fa@s+RJCSSV6jw^7H_0Rimx<3CXAEW>ceHWB&yozYjZ;UZ@c?Q5xxw0mWg1VXU0|V(Y^cstl?ck z%ux-ifV54t(;r7=)PHQ79M;Odjlizncj^J{hy|gMIl2%z2Cx17vhkJliR9b9;Bbt+6fttv z;-KZlDlg~O6tNqW)?I|ETj=8f0y09wPh5^@{vM$Kb=2=+D)!RalLNo#7V=DQ)h5pZ z-A=!d8BvG_b>v!wue5#LS1~nA`Wz)6el*9yU2HiTL`avc{dX~*<4lz^J=hCRaOA6< zV(Ggcr*iG>CHOc9sV3tn%d;-jW6Ca!^z1e=A!AR3-^Wz4`ze;WucrnTJ4*d48#n0aXArNi{?5xC0uAJ4)T#$9saaPgKj5i1`A2z%elCzxM4ffPIilK_!thp%eBnC zL~BEj)_REIKxeF|$)%-;9EW``i9D2i>~1l`PcsR>BGHioxt_^o6|N}#dcQ)xzM0DP zOMO0#6)==Jk)&mzCTqJpDKf^w;76@ZG*pXLSJ+^oE%g&0cFC1qobYHLD~AtDz~h=uiDf{Bh0p_j|I zo%gu>TPZ8^JC#cIXL6bCgaTE2ASf#f2sa0w@d{o>flwL6g4 zQc2cWnW)?Q-M5buG$QY19`@DSe|`ARX1v}-NpdD++J1RfVJQRP+gO8tKAdmAC8ru( zNauy$cMI8!fXR4S&y3wO{m^_dnEC>gdvTZs2oVO^L0I9tq1^W4F5k4Z&OfN2eh)>5 z{wZYpaa2Ftxkir{7+xX|qoy_fE+>fMx!Du(sk?p*OQk56AQ^3MOS~O4q^x#I=y?!E z&veR1UkUhOj^eRPO3c4ji`~}v6*C%bYVB`MQC7LP!;X;igDuo(NeFlZ&gy&82aahdHaJsqAwNs*lU@;7jJKm7dsARPL`hNqklun zZ#>_3d2+h7Ka(TVqcWWo^Hm<$CyT;u8R$91>d~i@+?(=cl0S<2X{6$%iF7`UT?$RM zp1SH9j;waL;u=Xo?!^1a>T;bD=M2=Q0FrZA*lg*Qs}~ z6kQ#%;}%1wliS^HDQS-zl`xFPJ}1U{6MLcu=yrh@y5T`zaZbGZ+sd&c4h8py{z=M) z(v_Tik=S>R_EHWGlse7UXs7ju1`F^FH&?HKZ-<#@;=XBGTBX_Yv}@8Bbdh=yRJ}HU(dCLAFl;>iIZvg#i$%RUj)qzP3J1VIEH*b z_5SvZJX3{3STw-fo!iSXyD*pES_e#tC_XWx3OTLiI{h4%tWv<;@%dA6D)}8eT0gd} zR;oGZj43;IKDl-@rpU73(mgLG@U)A}z6^WE-o5>Dc`z^tJ$sMxB#!T?^WLRG@Nw5j zTP>a(P`u1Qo5k>BzDqJejy}g9i<=yCL06l7g-uwFbN$Ih$60~JNU+cJTT)P8Kp1(} zrh*u#hFaQB4P||~nIHq}UmZUPqdWXCGh9YJb}_v(68%QrQ42n-&YMk41U{bOvoyf& z?E}+$!rn~@FgMF&5-Jm02$bjqC5E_ax`kb%rdZW89#?rC)d$&et|(c*fdp*7AO<1@53KqUKts?$rz zQ933*#7ODsg^UjrT`_4Pi{L-|D3KFm;JZ?DGxu1te<}ny^FTC6_yTO*iuQoTMo0I5q1DWk^;lURp{VI(QLnw2vC83wT2$tckqSU z=BIsXV_QAHR<=&86!SNgxaM^oKKwLc3;biU<#!+*akO(nbdO0t z#2rgwdDN%LzQYH?N!vKc!iwnt2oqsnQ(b{^IjzJ zWc^#|xXVdQ?9|b}2gGQ`)`dUIgC4Bq?PkKRgKXY8H@FsYjin@xdadpAcM0QEEFDdk zej;$4o2pFl_#a8x)7o~a(xJVrF}!qPt>k&&kPkegR{}DCm5o1D3ytf;2DDW8#a4#| zEM@9w@zGJ)0#8~shRPewJ#@)Tdoo)b^Ds^t8kF6P2QXmZTox!z9jF}Ii z?X$b(Ny%~>SX9Ed^O-dA7^GQ0lQ8|ySsfwxe~cDMchO)p%&W`OvRe8xR&lqLXzC4LP~LQ4@Yr6nMIT7@-+)w+@wJQ%CRs1UIAj`4}j$;MEJONj-GRsvGpmI%~s@5 zm7P!vFi`byke21`<9M{W5VjET2+onD`|7vAc)1{zvK{%gc0^&3h45G!wqR*@!grOG zHrSgZnDsv}8|v#SL=d0JLfYKjb1L6Oo-{yd_6g*oOTKHufgU#ygkSvy6uy9 z$*-u3>~RwH*y-S*lVsf#4^8Fk?L;(EBbG07B}MOi8ATmM@C<2L{Aq~`8>9zAX#&vB zp%?)ZNIJG5J3Vf#-<9&}TM_Ny!)`57ql|tBiBtxql!WXt&k!#4%w7EUPTVDHBn~uH zweAl=-NY5WWbFku!e{X0RyiTL*{uZuny!1qjTWgoEZ+wk$v0G4pI04gFtxw-o|d$AAN0tUO5CkS~+R6xLbD$ z5zWBl5`Mv0T{lc+hY^hU7i>(qPkGdvnQgC5il4U^BJcFyEZ5>nJB z$lx9(c*%r}onEfS;pv2GHRV7yA@UQaMF8dC!0KZ-n?ZWhU+HKzuh>ezug%-&BsbiT zpIe;Jb?66hdiPlMy&uQ8z8Uzg>L0}EOS0o4*v$lm=lYW$Y)!8dF7iBD5X1%{=8Zk% zaBOMY#&<+tX(%M3Ul@}_okBlM%DeS#lW1kmiYL#qVG@J7X%QV8l{{-{4^FIPnRFaX zC0zosa^G!=VAuU-)>*%G(L30zJW>XGc=xR^v$9JEJml9pfLDKhxQ?0pa&9d3{Hv7~ zNgM*!ZTJ=APFr1r9%4}ll9vR>=F$epzPI+^gtc268JW_vhb`NkEKY}vkK<_a&vJoJ zrSsB5p@)lw_M2PxA@lC5;yP=0OLw$HBVe8X#q%(jZ?Y%XUa}eI`TL1!`&{>EAdbUBTPwEcVFYoT*u$39d!pMYzCBn)e zG%FFR1AidPf=T~aZTSh}spYr|?|p3MvI!O4hodoO3VDYDp2}l$W`QonL)AaROW!u3VP~7PiI?0O zKT$!ZFAr<69NURfnNg%MDgkYVy%9x7K=`?oJ2?gizI1alDB|-zqs%8K5Y=GE5$jH* z!KvUX8o3p7<{p%GvB8$jg~5C*g<{*&HMS5xmWnlf3*~RB?jN$<0D;Fdu79I2}hHw;aK&7~3@n7}`f2LKtyj z8NhHV(ZE31w)V%+7EP-S+P*?3ccnVGJg{DOG7I-V){5(IX~wpWi71$NKJ5D03`k@6 z!yjM41245BDj}o}H%0dGD(V*osA>xsz^aW-GR|%67`Ikq=w|SwKh%hGFueToI&9n8 zjBr*C3JUV@_Qow}X=&x)Pr~+mtTws42Wph77kWa8%iyLH9eXxn>Wqn)H}5b6dGCb5 zf%v{ru>qj_kb=V!>SIQI1!@gafwpNg2n}<~H^70=)zwLP7Z%gP8bh8`!|D(QZ-xV? zgfmdH$hl2b?uahsEcY$7Wwj7TKJU@?GT(7<9JjTpq@E?T&vXoG{0r_DaS zxo!&z3QO4c1mz>>j&@VO+tZ*=d$K+eCfL5iu~1Q2K|fh!WX_BS-n$;i^ep3n(L9hy z#1V_d`9VF5yu7?{Bp94NTAg>Z+&o!TWr;XtVr)*+DN{rwm0*C#83@@ zxM0P}0Wg#ahCrUI=&yqf<%PkTF!<5DFb@VlF1N^Bu5M`> zupw;A>ljjpNXiy5Nw}dXRvtSKmPAopm4m#JAaC*>WJheAcJ?v2;L;P269xlU8(dK8 zX`l7kmIjJy15JWbp&ejb+Mdu3Xr2?Pwwm$@KXHnIO`Gk2gUO2)pnAbtgldjK{Sj+W zIcF|je!CsJkO~BE4eTt^%|dv`5q~23uTN=2j+Gl;SaT#}a67 zPa>YQxWeRe1DnOLmp&Q@cjBakzI`pkW-?}tT;V{T>sn=D#T;j5l zNpv*7g^(4+vgOOT5*eg#8Itf`dp=S-daa{X)Wa*eE*z#E>TpR_#O5+qFl0gVicl~F zD-c9iM<u33nFX_VA^u#*A@ zf@pUP&3ihKlUGP7;c8+hyl0PoaMZsFronMT0d~y5kY~p_IZnfm(QGs^GfR5TkY~Hk+b_b|B0gL|C7o6S)ny4q+@&=&SZ2CoI zT;BJb++43;sWLXeg!T_=uck?beH0Pq#(ui2H+Jd4l3HIexMc4+s&6Qaq|uijNoKgR zvDO`{oZrrP<+a|xIs@}6GhX;Ql#aLVJ0Y)j4a89G`Z7b6y%RhUfr#u?Q)9J#D7le% zLzRuyz_Hf#<$OAvei7m8NZ(_M;iSgT*LFpu*Y^(Rmv-({1%g2?Fcg?bC@_Osg*Yfr z^L%Kl#W#O0T-_`lXrp1rz)8VHFp`V5&IAJ&PFDg5C*L4fPaMaA9-=%#(_@8KX9!_c zqd^@wIm64i&}}HgV9i)b1{O&~0tw_t5-7~EQIZD~WVy%ricffP7ZzImM&GdKR|pfKM+ z?Gu)Z2-|lV_z*Nk+c%uN4cie;noQE|4zyhzL^_!=8!mY z?)5*xL2f4vwr+04owweN+^j6jIcyGIeQiDV?AeV3>oBxQsqMMam2lZ_E-yj@7sU6V zt9c6+ESQTqbEd;E=vUv+RkTAZxq9h^n^FKO;pq?zF+33$Iu5m5$6_E9L@*qNuDAt) zLHbD`l0vVt-h`)s<=QHszhD+oS&%1sf%h3noy}~NE2uU?8c(*tE6q*$k?jQng7S(=ghCdKC9n)B5eOJ4g24dG0tg4e zGQfsGS4_CAY|+m^v^~yMWDQuOu#*mK+LhKIhCf`dejpS=h=HYu_+1>nN~R>^fs6;< zH4o@}RPnAE@E&ehgzrE0uf44uI#=c8G3)~7EMB~r5ey3s!qZGH&I$_m!Cm7>fBRBd z&QpA;Cm{%+t-XsPQ3_ zx)82pc``6CZUDu3IS9B3EMK{btA~@hjT+=EYE#5UZeA%$imP$biAOWgsYQ@>S`e@* zU{ORPK|{UT2wWQCveYHDAzDT|ya$qPlgU%ak09t~;qV2uD6ck{ICBYAg^?95!j#zy za14XdNRYlzY4(vdpkTJ&DgAN-Girm&dg*)(aBK!JHeJCqgGIGXG^nMR{;8Dawm4%v z!vUVcbI-npwzf``l;mRK#EICjfvbpJah4~k+oc1Do_?o@%fN;H;A&!5`wj;C30!>X z#mM36mf?mz*cQA#xtNwI>u;ek68b{rR(w2`p#1HR2UOc zdBw=WUfUFl#dNMnBEO(e-{CdMWU_GNn(tnz>27HWIpP+(u!IK`YK~IjWTG=?eqJG0 z8p7VBVT6+f3k+ddfz+hP$v``=(7GPz2u1=>xSZ@1AjQB#C$j+%)-@0YX9_R{251g~ z3?LdRa&ht5N8*HICu2fg1QlfgG)->6d6!&*4}I)nOl&M*kQj%>piEb#IKKg$iiA)_ zoNK}U!et{a`=HdOgs$KT*G_~%sK9|?kZ2gx2`B4GHN~7DTTylRQb<-2TqnT=y)L*e z10mtfMh6PYN^s_Rr(wbTnaIx$v%U=&Dz*sfacPfBo$M6(E`&U2o?sK|eHbPJ#=v6m zSCSpTylIu((yl>X`7|UX3<;N^y>$mFih`WTLx5ORClLDIuyckDrl>GQzQ6ZfkExAJ)L;zwasYlXvUNo zlW1QOdv*WG))w6`oM;=mTHi!tQ$1E3btHoNxAGWZI{^J* z!@CFUo5gybyU0%s6_@>HhS8cuy}(u;6@MT2=B7B?B$G*H@=I7I?UzScsD^Hiz^w{MG-|h6e zep+>ogg&{!`Tzku7!Eh}gXS^la5)(&0K+or0m(3@wy8xfC#kMz7eDyNkY8B9*R|vU z$!S`4Fv3KGVWFF>lyOY)RnE61bajB^1Y*J{E}w)*P63QDun=Gw$QMo|oQZKD4zG1?2-ZL-oR7(kdB_U1!wMug z@g-RX+AJ_a7=l#$2u^!Y-Mv)XwUOd!+J(h{rL>{|?a>&*S-G&e0_2kCaz)Wag0&N{ zB>~Vs^^*_Bm0$P}j$Sp5!HJEa7{Y>j%}`PUPBzcHn}UG)6)pk{WI~*!LqS8^b5Yk2 z#H^+Ky^?pwd={0 ze?L_dx3N20cfn0`;-r(;qN=itZ6yhZ!j$cIU&tEbG#0%Z0Nb%y>L5EWkE?tx1H^6w zLqYn6MzbXS6lO%*Cv|uy!~_uQj$+rIR<`KfDb^FP+Yn)WCJgTnV^HXCSTqhyCLCr+tMMWucb0V+|U|BBoURulqxNK+zELa?S zVp))Y0L()yfS;~%BL>Tlm<~6divqsTa`MB-%`Jklf^1GeBT0uoT}L1==fs6+-9(Yf9AjwH27K`yco(B;VGRA0tXb#5CnOs^W!ne2pq=ZZ8d*30$ zL2iB#N@^w}E3bg73kJd!1)aDwh!7(T0&LDrE&wV3ytI}nm>vCOqaxzf^Mzeb)2_?* zz1hU|%7o#_)cSlhR0ty3Hl|H&LWmV&?Ykk#4tBsoC{T)d^OxY`AHEQIAs5DEF`Ny< zG6t4TezX^Ar|`;|S_rTWr6LZ%cEP+ii+eH-0$gG0=-h){yIK(lW_znKE>{q3Ck}`W zF@Ujbu4r}AKMo4=5}48$L2*tTSyl`owhP);=I zLHRzE;ia|j9sre88{r>h81_NiYwfbp-p#;+J+P^N`;Hdea`SyyFz+zv4J!?Wv^x+A zg-}*nK@TQ98$|>>2?2Pz00Uic3jz$rnPXvVO9w1|VC(FNA{@@*wssT_gL{fnEA66~ zrqdxJu=zsD&Cfw)c`55V2&B5~`NdcU>OYIr(qJ)U5DW?ebU}dQa?#Q$m^8Tx4U=Y} ztFs*yl~u^jE})4NaEV3qJhd{*Q*8L77;x=s++DUKHM?;E}>9S10+TPEzip-aL*M?^p>_?#SlbZMu^>Z=r|TS2V4O@}-#Dx7mAHsNME0ugNR|9P z3`Iw(r)45?Kx|Uo2O55V_oW?QhtiSsXt`oI8IhD9N0J$??r?m4MXSEf&MpRsxd?~D zXlrYovv%#;;Ba-`O+Kdz=wNb1gbA9@V8aWL_$qfeU4pZTg!8xp(8bl04tNzP20chc zSWnZG*N%J1ftL~TT4xZrBI0s7b{It1Zjz}aAf0He%t29hE{-|=4Af0!Fp^!$NxBW& zH@%8P*H%t=-4K&NU3m!Q#X+VW28aUhpYSRMB7*cogAgc7!9MtX7jYo;MOK!Hu|8 z9fUeGO+he&-a`b^n;AXf$+8Z_P*`&U!?ZC5#N}!#1uWcEaJkgm<{~nadPGn_c=0gm4SAlL2B7aU8L1F^USZAzYmm%7Fdy z(3@uUey0nI{xX(IIj{m2SGVY=B*zQ`!~mll%UJBY_CYK96y&+kgBoB0L3FgWA)ZvL zEI8uJQAP}0?`F9W5yZM3_K9-*pwz-0?&?cKfplWPu>=}HV1#}Yve6E8*i@~5Gz<@OX{n1Po1H`P5jmpw6PFS-57hZY_swd4s zAS*%bF_f3rb4+J}T9_Aj$B_3&4Y8o6z4pp$+)_zUl=8}EDs#SnJRrjR{vPkH$a}w! z@9|qWZ1+ZdpATDW=mH%jHg|s*6!M)LMkEsE+!3$bvu96u=o;@X*Vu`e%Qt;e4Of5@ z7~sI0pc$OSW1QsmkK=Ni%0<%S>$8vw9b6clJXuGb=)>!hP6RGB_5(}E7X_1S25g&f z85B4W$0pc@&MG=7GVjuv4k!Gu6-S&ad9D*dFqe~5UNK54%8{KFk104~z=}l}l+tpRHHHmI#E zL@~Dm9j-9h$u4kFgt7?;gBn-j?1l}S`Vwv&v1Ax!b#rjer60mEs}>?B*I|3zTww$( z*LZ;e&7f|Ve1i2X5kS9xN38`}VVru>;n>r>8Igji3`mlk#3O)ko0+n~a1Pq{yp5e( z)^T7($!EwZ1`f-Fz82`=(l$af1SOaUg!c*btx^x{r%3}vp@)b-gaARO3H6HzZ5CKY zKo;6N6I^jKu(|cmmKZn-ZomCu#A7z5PHV!h?H$;*bvI&B-UFMy<^2=_Jj8>`s{_3S zPNEC#&2M4$>}i-WZ7Kp112wapw*zXuCLLy6h}sXPX}9abvnL=f`G5%uLfIjt0%{<@ zU{=Hcv>o2zLhI-_r82nmIV1qX?b6oPW(J6W7aR)p(E>o22M^UjB0zTnupNQJ4=-)} z6xh`n=Le@43X4k7)fJ^5D8PPdJFGG26un1D8?N1r>Y5s4g)JE4!q7$$i@g$v7#O3J zPn-sb3`TA0?COd^1JY!?6FGSd5WBSPlyBYM2G#ZfaAR<}oqyQeg$RTa2nV{6%{IAv zjI4l*te}hRkb{C;pr$epM;(0_KJ}#!;_}ab1PwE$Ba)komX^&ZtEl4YeGw$Us9X&D zMkv)j(Q-Bdm-mMk-VX;Z`xECg^ZM&=a21r|JUz?USC?r(01w!&N4i!`k5#$K`p`O> zRyr1>`ZI(i`-*f7A)+j8D;>)7;q(3czEHP!oa~DhAl)YHZ=;opFILvuIS0` z6WJG^_;r0cRzt=spRRXb>Za@IpWa{I?5}libE!V6O#`vF8uz}QNcza^uSe}vq_`?K z5-7#@rQxE5{+(W%^I~;%4LZ7_<(3sMV(CG58p{cD`au`x3(lUjPhTLM{B%NbxeC+S z-iq#)t*{uZ!7*U}_;TP)<3!*ESztBR>2ne|Kd_vtSi}qyn(cv5)^nkkcR7(LzyOMr zt4%_uafXKmhAt;Zomrf?%|I!E9o**Kwtbhk-Hjj+ZQX-pM<+UVZN=8Np26--kD+_l z{aF9{!`QTmThDfc`g0*71PFmK>;p(?oWKTjwTb{IP*K|yUKu!PCpl?auo4{zbs*toHU*v^%-4$Pjn0PEh^%H{J;*og#$cPrDj(kF4Z&WaXF?OJC4rgHxc3o zkPn=HK6HyYz%ginhtO&U)-LS_%Y}S_3x!K+S%Lr@Xt8Tqu=qKQcL4$NE!Guni)#8# z*Gqa=et-}O!m>ixy@$ap$D8U*`N#rTpAKbP76G_i368PfNj@E z<+b&FeO2Xb7XuG*JUu1>-q&{2HPj(HCjwnj77>7chFGj6mavK>GbSL5f-ugA%!EW^h? zeLlYR|GtF(`ssh-r&s?H|M>lX!#S6H02K|>(alxMwq5JFvRjDUyi!OY1jh(macQsm zL;$t|y#c%r9`(|I70lskXEQduy^$ZKgrzP4LcrPpeIzhAP>1v=_GwRcOeDRI+M15x z6r{^&8j`MMxLUxFQoNV&f&F{9s&^k$_On-Y`Pc`Yy;ak6sSk$*<;K&Gq4e~&$;5bc zQM}(dQe7=m^sCU5QT{;m6pc#!dP52NW$AP%xpW@gnVvle(k_R;&8CW_j~CF}Ot?drBta}p8Z$1ROc?&ka@C0_Odlk`^o#<|R8*SU4 zMa%B3IP8RT5U894M*<8w5-{Qrt_Lq5Nh9ZjjopMm^o)Qj$OG5 z0R~{6Z#me+1JVxqUwIra;h^zsbf{A-3%ac=ysyR>Sj>wU))PXl@kq}l#RDt|v2*8c zB$GD!4)KyA;`za-9Khu+742eK5)PjgwGcxbj`BEO zlJPFCAXXv2umBk^r*Kt18zE^%Z08GT zed9qO)`FtKA_k>7Fbob|5zzHRG^Bp^+4QL!f{_4Tc>ZN<*|H0^ZJ^&*bzB#&2VeH! zrX#p@RKwZLQDxpO0lf$BR@?7XyYGiSzEi$@FSpZwob1aJKQ=GvdqKaSAB{#)TU!TX znY>s$UdP($FHvUS{nNBYauXu%PFHkZb9w0lI04%X5EY!Ske8PW3IOb(IyK4FK6cLQ zh337)sF##}U(EGp8@(wCa;e*EgSs7VEj!6L6pTQyaZ@)EZ8q-z)z$dx@2-Qf_aKW~ zW;vFiEa1Rd_ae4Fz7bb{|8~6f<{sz@n-kOk(S;=nL4Zx9(%=NM<#AYxf8cL=sCLYoYXScF5n3`$D^m~(g?LS+pIW=&>OQ3QfnVC)3};BZUS zgj@zP%}8)NUEEd#Xs6J2Xdh@3#YR0vRGW$kLH=f^(c7gpS_93 zg||oVq>FXywsCvBi>rvOsH>~NTW@WH_uV zEI2N(XLmCkCRh!9NNbfz0qanPaUrb|By9)HZEbJ`$j{GbAROZsdyMwc7c`P*s$rIE z!qxg-BI*69o1C0%RC1eH+cUg~s36-=873W??yycQ?y^10ySp1V??6^oJ}mY#VJ8rc zcEhF}T4f+Sbz};I@I?1UbhW(*%W9)PcOud8GP;|eLD%kQ5#9L=qC1{L_l~C#+w~mc zZ5!aYT?iHCBFyb&u>x=rWWOv@Hw72Wdlz^IeaQhzrf_vQNZ;r4zIWikdmrQ$N&-oi z^ER=LL$DsTP?*=Wbg#oajr)AjF``Pe1*PMG*4>+W{oA0gsAONe<=H|dKJDMe;M{oS z#wtI!B|wDtn_vR(#xa`hqm_@%X5K`O)UnBqMQY#miS+n=l;&iNa;ipsrF1;dIvkpO zruj6pTbdrKeoBr4LlwRQyuS8_w!tq~`}@-R{PtlaGquie`1&j%9p;4(&8ex`j)4) zE;S z+k_K`5QZy*7AMsZyEb$B1cbB0Fjg)DfELzEz=#gAB%g>LaOyUMP><@i#2~QUxaBwjCk@)(qCU8cN3Y zpsi&i>KkjYXvqSELWXVGP@ifaG2js9BOwi3bbJ8$#ielRBW=sG)3Ru@N>OmoDJ(NE zhQSXbypHyc{&qpU8mX(7^ezrNkl=Q$%{toW9lLg+u&4lC9UZXPUMv>#`pLmT`TqC9 zrA~(mg&#azI|kvNd()IDl;bG^BL*TWz}iX-DTFJNallv{T`rni+R@zH1`UK6t9m~K zviXdvPZbz&hzK=MkJEu<=SF_O+6cE}6A;}6ba%ldVhAK{1gR`6K|})C2nYDgSVa)4 zg#HYGcbi&M)ZvYA$)QI23s8U1CB13Q>ln2{dAR3Kf5wZ?y@Z6#;MTQhKRh`q^G>a& zs+1}`=75X#$;W`AF=e%`HmX!Hrb@oha7Ov%W1=pl6eI`vId1=?^+(du@3o{31I7O6 zm-=`lU8(Ys$BW3=ye-lvHx|8n-#@iC9m8u!IE;dVf>38?cg2e@ zzG&efJIso!uCm2(-gba)_(#tOR-%DgtUHDzx3VhAOAxRGBH~FV;|W-txby|w2d`)h z7k@ypWpC;rWsm{FW$*~X_0p6h)rqwoVZ5@_!F{i^T3Ph0TYK2bj7V8+=)f+=YR_;)H0pk{GpHk#zDfVai-ATsj;1 zxdCXvYH=tS&zAv+28dP+D~@PFA_)Y-4M@hgGR2ikK`sm@ZWokuvjNFvJ0Uo>!BPgE zIk{O7&ws9WWd?c(r6iT$)g^k)v}6ybmuMY7;|g;G2r&i_g~hC4Qefy$VX(kY6=>~9 zB9;^g7y$4_ZQas>#~*(QMFqK-Hf>>1TkJ4JX+RcAdIgu@!RB;km|_6p(9fyr1mL_ixUEIlAewW$e7 zwMijkG2mvMjt&jR_0FcsA#6*b3Ce*~U8ilwZTf}=39)PYZjP}CcJJPfKq!PRJ}Wj? zm027853Owj;sDg;FhERj+qY@zG#K(ki`kwwMWQ0)TM!HAiaY%H!300>IQ-!A#%r%5 z!r6UV?B#wD8MlrVjvhI6=TB*#Ncw=Ie|D_uC&|1 zBoaZ|80@C+S`l=2!|;O=&4u0~)dtOY0H6#OxP+G`3lbpT;OPe+#x=kFBf4TP$3Iz~ zjG=_rJ5oJ81x%##m>uPGU9C5Y(EciZC)?UzHXmR;LwSEFo^QrGdcXWe4|2LM!z$y? zy}!Am`+cO5y!Y)6tf}`f*0Y#UQd$yp#jeQ8YT?Uspya!oH+(g_34?7kqtl2B;p73% zDV&kuasp(W=B@tN+{UV`C_}&`DFX;6nj|OIP=I}M!5M(ilXrk>dZrLn)CZlus1l%n zun~)m7(&x*jCGRK!wHH;X)Sf4s@AklKtTp>CXm3cn2kH1*@dhB(u}(vYsO>u+=u!? zK~;GroLDDLJ#{&*`22^lZ1vG7$`%HC2?X?S6>=gr2Jiwi_FNPI7^ksqHqE@Z<>}fG zZgB_MRwT!P705v#Xd%(Q81IDePB-jCC-Ukh z;`~p29xIMJ3VAs$S8CWU13<&cS=(={FTm7Eb;v553jK38(e@p%A|((Bz_D{+)9;3k zZ~}rX1_#l$cGOa5)09RCl58J5XdAD(h0dk2Za7ut~o7qsx`W3QokcMA%*O=&T3+PrBCx;vt9 z7|aLdpd3eyoZ8=}ILa$SMTdYW~#Adtmv;RHI`+uVOVIbdB< zG9bzmfe7mYh}(dzK4g&IzNZ60lZ|LsGqQ5>xSbkBJQ;&S8z|ayvI6ZFjt?PqB>=;* z>?S+WIB_C!IYtfb1TA1wY{$TYfj9&;BwU9+R*T4IyKlU*9@&uy@^TB&(%ixAYWCk@ zkZ4@63Tx=8opb=U2L^+HqZ%O`M2VP%V}ePZh~9fqU-+YN1{7C4R# zm-h{}kh&f~M+)ByhJ4|NB_~Nq)?fGPdR+apU!W}>LAR^pf_%z?wu4px0w}~KAzbFQ zEDhwSL_c`%1Jwf{J7)oxuJYVN%^@frgiZ_}bzuen>qwnE8LwvrZ554zJ%X=Uq5D~xnuyiP!hT;vY zfCZz;`{h1ml@U*0E}f28VU$8&&(LDtsAduU$#*6^Fgxf>FCRWVTw8koy1TofKUS%) zZ!ihRt=PWZLk)6u{qK9NC=>t!AV_c#pccVR zl&H0(Cdk&(nr>;tw(c<-jb=<^GbU>@$Yy%R)ap^oX1Yf*irPpu36dbVVBbL$cA!uj zYWY?5tN#9f?(174!oAP+c%B*g^1aNL%U`OH@#DmGzkcua>o@#`-{+B;UzWA3*cg=K zqyiG|6efHXHO0kVI3b1eOl5ROC}x6~FK()N=O7|5T-c0KzTUJDTwjaOmQjo|5r~py z92v8?{^TFw_2)i;xBbM!_)EX?m+Sz)Ifw|M)S|=P zqG;>pd1^N3}5lND%WHO zm<&K05TINh#q#`ZOib1A@FN#s*dv#1ZSugTgSwmQyRC?~DIx$NA|!?Yj4=dz=0j+f zum9V&jMPQ+23VM1!%Ht;=g!&+-ti9ZA~Hc-T3X=_LqBqp000mGNkl=Y&n9T z7LC{5L*`Y9&T2855=qLdyX_K_l5q?I&1)J=NatpkShuKFD`+)aNSOpXCUpoyQr#{%t=KEA zF*(lsXKEZLPwE!|2VsIIY!a1VLFhh-H^VQRfL3VW#`QV>2f9z3I*!HVCA8S6zsw@M z4}#$jfp}p@y&}Sb?|Dpu!K4qCvXDxPIw*T)+H0))sD1FGbAV9cK(< zVQHI)GC&f(tXswece(z?|NbA~r+@J$Fv{J@s+92Vx1Yn0yzeJ*;a$G~-8Jkm>8x^h z2#)<~(qJt6bI>~_226M-m>}N5;=)xt^VGK(Ba4W>M{x8_x}bPCCGZAO)79zU?r2BB zR+f0BJs_uguhgeDcam<;StJ|}X8@BZ;5$#h3O&k9;Ex?Wf-BdqqrO&0%H1`;8^uPQ z7bHBzLuf4RG|*g~#yj8rI6m-G??;*AkC|c^CMWQ_RSv?j8gYpA-dTV}jE*xo&k}I^ zj&mXAJvM9r?*l#RnUj_l^!0e8uW9w~8MYGm#D{X!KseMZ$BKx+XkVo5g!T|K@p0f# z@cr*!#MIOj4BPY@VUi^56R_$p@g;abW9ZU`bGfZ zz<8ojr_IdKrsZyD2Wx9>OiYbnd98&;s{xm0;1qz$;s6f4FAC@w2%*1@ug;y-__hHi zw^^%+#?lflzx*nur^Gs^EpKe=IeI#dzy<5u~i zT@m5u->pO2dm$pdtZnPT{G4^wZg{ ztyf-UJDm>Kj|@kTOi4K|A8Rz+Sg+i@u5+~lPCx$e8W(`q^%-7t$k(||lJWIYyVF8k zGB|(!?7E09g!;pl<#GvD7w%n7+I2%L_~}l45#d5?;1faGRoj(vnG0zZl}d#>N>!B0 z6_iUQ)J%-&nN>V>aS=D?Qzir%Uullu}wV1(dirMj|M2H_veAq}f=( z%JKqEaDgA6nm{RDL1X1*G*@ncH=G~v48p_)y4w<^Fs_ZHvxL%k4S()~e*-`F^FNEp zDljo_vAXCG)gDLEoJEN{idj4XOD9Dd+?ixTnmR82ZKz-6>Np(xk4y(|ef$x`5qv*_ zJ97xFdoW`WLVFPrB@huvBw!%1u$p4Em2tFuxN+BMrQX4_-+vjFuj|i0@E~Sp<}oun z3;o%PjPu3MFK?yi;!?(N8cAyvfAjDBZJa)N1cp|HNns8PrKMQAwEz{-tZm*hAqOjj9^5*r3c;O1m$l)tCM;iz+xiOTuHV2* z&%T6<7q4My+2Z-9FX2P~_cJh7;36~?_$A0X;PONno`5e!<8qr537Q%j znFuC|5HS;oOQc*3Bc-Jh3>WvvRnTcx`I^mPWPFs#)f&diK$(eTo4Y*o*I&YoXFi7Z z>`QpZkGvhf^7sEP{*#~k0M4BlM}<2g5*fgh5cz)&IxawX8twv?F*;ep+R_{}Hqp#x_wg70=6{aA_;>yfIQRHZ!)7J!t}UZHG684GaMU$iRE@KYZyUl`7{;_z z8%N2|9vADM`Puhjl3At!=(+8}0dUaWC#bWm>Ah3{D&xrMcdBs223nH{LKqPkBM`!I z)GW|911GemJc??&{z)NC3g%WabZm*eSighx%=52fjY-qQkqM0O75lX-x3Idh2FqPG z&3J?fgyX%){mLLrR*ZE>TWhE-#TkBi zh*9QFa>``Xaa*s%`2iDwfrIJ@)u_U%BYX)E-utM=9l1p&bwZybI7F}=6WmUav>3*5Xpk0$Sbxl%&L*Uw2igC@nIg6b~~II4OV^uirc;r+8|i@qf| z_u#`Asl@yOVOWnKLZgPRQxDpI1h6;0u63|h&~A4yJHLR0pUHFQ&S80R6{-F?D2|&0 z05qQ3FZ&X9>_J-&hRrm_cxB`#98*d@y+y{@S|qUi660(WU^0lb!5#Efxb`Zmbu<>1 z@xu3>#~*+6(|Go|i!jv*yn1OKzx^LShu`_|XK{U|g%(E8b`kh}hBj%2J~;LT`VCUo zt#42UhCcM36hjf(u9928F^DKvC3Xi#Cp@TD?5nrT=7Fczr=5WULp1cW(d&cO`ZDIaL^k=-Pp{Yyg`p_&LK)p7*ihPK?MPHsv6G<6 zDEi4MKcHXx79Qi(8{?u(udQ6%Q6)!Fwzu4?yQ$p=O!%1>K09)F7KMtGReuIsMd}-N zc?tTvRO>6g7h6F`gkvW98s32!Z0sP`w|P6=(593(hWg=7Se7@=glnL_W{%@BH@1$B z1M%^V*88JmHr%k^bI!CmT>&moqK{|mApFN1kjo~xJGO|oJ^mPXtT<4iq-31n8A?pp ztkosVq5mOdD@Y2b$OcbKhJA?$bkR4YJOT2chYEQ33&a>WlM)W6PoIM2?#aq37u=|f zQXDfG%Mf$NueCUft51C%ou$isjr$|`yZ`XN#oy*`;+dmW?j*KQG6{qxGbW2MhZS=n z(?ssVg`=p(9ndfn#4)s1W??IW$QX{l1VbI+nAPXT>>{pQSYq2~WgDHm;1&hX}1@O-xp}qowu*j0o?OCBQPkZXn`3KsyS79!@WPV8~Mm1MwD= zB0n@p#sCWGQVjx&T8)I(nfNR>EgBsI-WgaXDy!U8{Nk6N;p^}v{Mh^6hlRy8%yB2N z!z9Nsi}3S?atsuwon?|_NgXVA*A{25LXtY(&)3XHj*hX7@!*q{VW({{28KMwmAu+m z6>)6nt7DRu^8UvF9n*QtT+EL~L*PI^2|dM>V5Eln$|5?6@+00Q)euv0w#L#;NiaPay@%G6iJ?Su;b8JZY-gaqel{<$`oH_RZ=H{2t<||*zomb1x zEPTH-MOlA!G-d%y8 z-^FkL#vkD$zx`Rv&$RjK|9$)tFoJ*iFMkIg{+&zDK8HzY3DWvnK)?7ex>Iu)3QFxM3r>8>2n4+C>0A+wj1y4tF>F9Kxgf z#g8Fe-GxZFIZ9P6P(Twzzk|qpWnyBY7RT}1RpNevE?3?kE>5@LWCfaD=)+sN0&YnFDZsO$+d#eJ#_~HozpX z6i+hd<*rNu{e#68YcP@OJ3tJ;cgm$o4edq)!d;_MIYNFI2-`&j`Y-3@SF-ZLKCU9P z>Y@FFGN}PH&Jo)zlfH%J1c~Dq_~3D=;QDI|SemP2d42|OdF(B?e&Z%qmN{;IgK|vl z^}*oL^^G%*CEgS6U@gwRjvspG+wtQ+{u4TE7=9^%O93X8apXA8jIbCVABW++i;Y2+ zCWsvPWJeF%Lu5PpHlT6LT_c@pCjBaER1LkQs*v>-w`LPY3+<7;hj zKUp{@9F~|AcA6bbO-^8SwSjyGn<*gUf}Vpe!27_&jh!N6f@<4!OuzmLUVr{Yy!`YF zc;U$x@Y0j7afk2{zWt4t@r|#&g0Fq`5}tWx9ye}h+@Ze!@Qce=zW#mu_y7H`;a~p$ zKY~k43};szX7tY-xtKmi&@Oy`to68YSUrruVFZSVfd8xxA$KV9#*TpH!?MY@YdQ+9 z9VSiFhqQb@!31Y)E4mG5ZUUNY1h(Ts%#+0Oso&|eas1d3jPpINuD`|!xFSOTM+mSO zY#k(Jw|;Tc4^4pDSAW0-*m5Cy@zO0UtX43)*hG2!C^8e_$gxo-i3tq%vLe$))Sg4@ z)(e=u_;tQEo5j!l(qG5l|A+q=@BQ%~$Cx-waA9|m(|iTp000mGNkl;Z@-A!S8wC&xf6Kn+aF^>IfWJzn^v~M zzS|x^i{WY0?G7M`hmaco%PT1?lSL^p(c#vm1v5}egRi9>6Cul;Mh2N23#Fj15=E$R zw`y%=9*@86A^g}+{s=@9Vq`v6yknpOL?j0UdWdYM%F~#tyof-g7b=lMq|lbLAfzJx z3XsM|U`Us_Yq-*&xBLQO>2ITv;i>Pv3ImI&sR=Zj38trcKiX|rZcnQZdY`d=aKiDv zMr>=YU1!|e_~0-95+)|9FidVD+SD1U_G00fX?K)~QmfTMRO0JxCT9_oKQThLWZkNc zbE6-DiA#V)SX*O)m}anS;O#O)`><9yoy}kXJABc|vU zR+iA=mZXkL9|CGq%hZN9$%`;H5nt=3traGR<4h8dBI0~7#zFL-fLB6gS>}*@f|xo$ zZO+Xua4Hy7YZb;M_A#~mvf%t2!1|%G+P4SeDH5SPdK|0G5^gV8+*}a6elx|>FE8Uu z-@1lRed!f^`isxwlb?SMAN%Z6_~;+~2|n`sU&R0VJDQ50p&HJwI$9B-|=frkxDj(VdRo<}Jt&Rvk?86%GkqdnV+S5E#bw9d8b+Chw_P>M3 zre>8_C{sirB3j%PRKFjFF;dhUMqXt^#QUkbZLWd3lUS`*xmw|ewEcbpm%7}Ys$o{+ za1H(s0SdVK0N`rGt5RKjbOEj~c{+NGyEPmnpE1bzDs7}z^WwS~dGQ0i1RpkxYCl#J zIwpwvGmxu|6rca%lUS`=F4|Spm?XlrF*RA@0_tG6W{DUWWQgjwuypZrNantcBPVKj z=b!#@JoG~sFg{vAnO#*f!Kg8)N(pUdIg=+Ypw*}&LKEev1fel2Wu#0%MvhG2hkx`@ zJon`H@h2bq2Clw%1y^5q3H6zq7%d6(A2T+FFC|)l=xbs^G*PtBL&NRicVJ@ZYjbEj zsKdkuh+)_t{DPaoDNpF*#3WYu`aCur{K7AO0Hfn27`}4XSqAou;vpLqkwRsIJ)lHc zp1qC2PDI#1hzNx7GEAH!!my30F6I_fv@^zuK6N;jmzl)ho?b!9-M#Y{9>mQX(^y;0 z>pHje!?Mv2Z89E4CzxHN+%5djyWfVt`d5Du5np4A#(-_*7!W3iV4^iLHimk$fv8-j zKLR5L0zLApmWps9h?pQ|yyvT{t4zAE<=Ct#5RqJlgl~D71UgtIg&DakD=ofSZs5ZC z^Uxi{R!fuL{2ue>QzAc|utOL`^e^H#(sl!-av3MjoPgnuDA+C{d0$;BA^^`eo#hG3 z`qJVm#Kc%yT*N5H-e@%WU5%b_2hn*rPCe}_^zLZduu?;L#rSSxJ2sG~Q?(V_e-K`11gF^`J5ZpDmySozzuG8;Xb7p=) ze|h>|dskgmyZc{~@-C;bFO2caC8zgE>XP%`AvzNa({sk+8tFVgM#9hV1Fd-d3S>tn zuW3(BiDDNSjTvS9mqdSoo@-=`#C{~8)HWN8UtI9WWiG`e@4klRV#YXP6C=x-4!EQ}T_`b1wt%QmsZdg>{S zk*Y3hXErdJH95+5l-~vtpCq5p`<(_SPKcP8C*6j>#-bk6{T#6GBa}&Flg;j39n0%I zZK~N05PrjXl>Ru++pT%M3WTSnrFGf8rQ3YLN!-123cy)$Cu!O{O5!@Cm_ITrSbAKMUg-9`@P^U%ap>S`!5;RpxWo!fcmI{ubDpC5- z61QoKVRm$jgc5TeF}bY*jp0iZ-AdQtaTl+;IfEe_<9C=JcYGA~({Qm5@)91To^Bu{ zE*HJ1#RBsMUU?KXN`Wa6v@tO`Lh4G`(L!RJShO)k@H+9TyNw6O>mTi01Sg`&9R8E! ziYy+h84EL5jJQkJbByQ2%y_RgWaKqH#%9xG$=4F{S3B>=J|BsFB5uibm*Qb2>&pG2ZW;SQXP5XX z*$eQ=`gd0HS9CN0nNY2OoFavf#Vieqfa5G!-hYB5ljBE){~f-z%k4h3fduC&mO^|& zA-5X*MlqhAvx3!H&uWvC=}FU6fq~-=LC`_X9{Fqc2jG1t=;7hIOZbftoF^C=wfUev z@*V&CfgKhOj@S}fxRwNga2gX1HK$fz+3?hM!Gi$!5304Pl=O}qz=Xp$ON9>_7?P3_ z2Wt5AODXrtA4nQ5OP$XF<`5u49R5Tl&0dYa>QTlWitR<8+}Lk1z%CmjKn@eVio1Gk zsfOmIgY@<#T&+Oxi%F>h(lGT;w*BOEJID2oFJT9lTZEjVeiO8EwJYx0**_S@*fhn$bEq;=gLDNw55m#C|K#kNv?505ivQzAKt8@<<4mJ zvEm6Q1FCXJWASjerOiy;P_+_U+FDsUI(h?1d&4ufB^|VirL0}7U{vs8n=>#k@Z`o& zcQUau!n|ZkbQtH_tz-}1+`qv{B0MMf9+>?l`v#x+^7JGRy*xpKjgKAXO?<1Y>tPWt z$?$-<%j@*Js5r*_0Z@KrDsd+1b=a-zF8+XL! zR+5f+C@-`zwgYyJuQ+ttcG2^u&sIc?$ID#R;pQvY0)p)_C*!}=-!z_#?6Fssiz_Ms zbcJL0pKdQ0`wf1Rd^?TuWOfQOd{}GxT&M~w;YxfC7b_&~a;|qtUGG?9tiNqbUeIA& z{@b%JUnq1l|Gr1NRYgdq+%ryPjd+PFWeKyKKq&KVHMN8TS`Smjhz?QjTzxF$>O|Eo@$ryctg9k6W!wvB>K;0G31ZH3C};ug>3 zn1MbfY?c)1scxLAG|^e3>(eGZcxq~c?On9zA5$*Fb=j3Y8}AtSxo?EC#RS*O?aI4# z%{h|hRtTgtd9sqVt_QLiLjrOgfBN8{(Qvu5Z+?sBKEln`+Kj|eydt*I*8crdaQ2NM z1CB!%mqw%yPDQ3S9D@n*bmU(?<}}BFkDCpTup}J2mm?LpctT>Q=5=p zqf^2x!h`CqQf2I=#Z%|SuPyoi!U)2t=a(M&48Lo>jMCA7J-sv?V>7${Dn&Lg*hb3c^S- z4WE_<+{+z1H|B+JvC|FYOyO!*Z}!aN8Y^Z+8%I7$(%4eZfw1*oaOy$afxLCLB-Ui! zXm%$^EL%!{pR0bAXlGy<N4ay7jNW>j1zPrOLoPy*IIH-hBCFW@+ z$Z{V(!GQl==DPbYpQIrHH{+NoR|w37uh$bVyRtWn>!Y3DWb?aAIXF1_tnD_Zw5QmlS z!K95{(xJI8Q79teohSK$Fd|W#j1@A2k#WkjhIe@aU&g%Onn;eh^rsEMNq_eIzhw5- z8NO9(na_V^C+LKuG5SR+nyo=$H>cBjOT;8_C(C5;fU(Jnuh8(gPBv()%hjF_1Jfv3mJse+>rW9HT+kYjv93z} zjyIwx_ohet8+dQre2B&SYp70@#4*>R^Yb{|`*>a;;@2OIoE%iaNUT_NJ9uQF%#gT| z#EAB{bLUv315qSMl)@Ol3UaftpUo)k&)Tb8s4q7AN_1uilH)|x_H&iyIP1jDOtWBQ zYpdn>)YLybhb*72J1wAewYg?=^wG)IzJ6wBEX4VM68hV4)lZk~b@3-@Jj$-`WA#N8TSfJV^JV)~@nrmOGt_{EQ&CL(tb$;>YXIoepRR z1Y3N{p~rW=7|Ef?cy6bSY$>27FBp4u9C){8^Nau4zTuq{;YYz7)uyp{;J{RTMPAI`$3YJF-7u$4U$q(CwTUA1~9nG7mQs ze($Hq!~5N;Sd!Li^%P}91ce}FJHKJlDMCpJY<@Zd^0Jdd%Z*$sn3Gj0(|9c`=tbsh zFR7Q5e9`2|X7T2RZ9qDPIZYRcwIebJSJdcjTC1>UWv6y>u8RZAl&mcs7MwAI$Z()F zX`-8w2p2L?t1f#0L=VloS~xmcqJG!-^$WZ*ZLyUN5>4EXmxiCWy*Yco!)n`jjH

    Ts7j3DhyNVOZOOOwLP7OA4Z1Py`=NwzX%fsuw)tM&0DUDO*EFB`+d21%S zf;n}A*eWsay6<>9)=`hWaGV)}i=x8(9@ zp^>IH?B26mHUK-R>UD@Pt+v{mo7!GqEu&4=?+8g1RT?^Y&69NCvTJ1j^_DIG+dOlW zW!)(i07ncCMhZB64u}K*5@zVsoNH=MK4SlchH}bBD1AuO8+AJxeH{7}yQ~8fl_APO575mmHNkJiR;)IS!wZcTuF6{vGeAifac&JQz>M`#`@`MWtbfG)VzefgF@lAk-d^q>!i| z!K(>_i|3nq(X*eR8?L`xK8oa!M;_)-aHJQA21q!0hqQ5|$Uwt4q=tcLiX|TT8BXt- zX@#BxGP-i_Mu*%;XgBh90MS-=U<_3uvdsd-z3jDQ(&5}=RtY0)-)6#VVJ8Ef?O`1< z8K}k_(`QUnlW_wudNXFG3uk%87Z|s5o?=&yTa>4fXXxmF_l4O7Kt*}BXK^u~qT-{z zjr*f&R81P++DvN)gB*LJ0Uuj?>KKSD5&@##<|?oQw#E(=sD-;DKK_wGT;K`8n2A{W56>4 zutUI7@WFPllOF-3F#sC_s+^fDCn9C^Z(uCwt8^#>u#Ftn@?H+|M$Y4?kxBrisVYzc zh~gwE%cCe#erAk)uwG1I*UzS_DK%ts$S(VX;%0tMbrNbo3B<{59Ghk|znjwNav z#f+mFNtf=L)~jFsOkI1;A;py#=1$Jji!(xU7esT&L6b7sMI9H#^5`dFTs002W}0=) z)~lMSRW!vCFO3tcsmM9e6+MSiE*{JO!q5h*nc=uV=c$^FhV~Mb68bBU+3c19r2c5E zEtc6G>}f~yj`t&MIxyR^f+-l2={t}HY!Iv$#u@-fQR-e?PK8aD)Ty9zk(#Z_`uIgM z&YOPh=c)LpZ~tgo{Ob?g`P61y`N1M9;yy>*T_RDZ-BFuk?(K~=_C;&V{%!12s6Ml( zCp_y#M53!$&JERCU(@FDNv)kdR@O0x4n;xTT(;~Q6HUB}6xU~!vgwX1EOmtO08c0> z!y&AGP;f|%6+)?~0yhqv0!hweFnBn5Z0<@Dd6AQO8{}||lDwzb(Yw^poseQG|}GKIqjL5 zQ@!3)9#s^X6Y|cuI_KmiS-xOw1&&k#iF`z4j!b?9k;v*rQdw7Ah#+etN=z?ERqBhT zW%>E{gfa?uiYT=Arb8deM-Y07 z(p1%ELrwNcGgCE91EyJ)cnu~Z$;sr7tSLeT#%70#7EN0CQoA>x>xdKJn&zgOnyplk zUn*GISp*tpnOXp;&62y%_otj^8;gNz44@2b1_}xPfIo>W&)^lz&&*4lRFJoJiOG%( zwv7mYD`2lE&l66$nlyaWw|}H9zT@T)#d-4m`CvTL1YX zw4%M2U90P#`9jU@+6&0Gw7IsTjpb9?ID1lq&L#n9$T-ckK?M;eBRT~X6E~)mu+&NF zQ*szcD5MBEewfJyiWV@3Ig*p(ojHTapRjz4t5b?C1q42d%l5{@;TR>kNZts(eupCJ zMRBYcvV4LwB$U~#ALF>*$BIg_ww}Is$l+`|BPcLXfe{KoRHhiJ$dQ>elrl<{$ZLV) z;r;XTTAG?tomqDfOhyQ<&dGk|$&gh+I|C4-RzX>eT#@&R$a@v?^i7sVR$HRF_$}`O zIV=;X6DYO3QJ~!PWi2Agt7MiqRIrn|SH1Y@TG|DO7?({+x*Yce1;E2-irl50vzl3Q;w}GfN=)> z%mcvKiIsj1Wl*jj%Wnf+m-=J&ucjkAfH08Rae2YSRbY#fFM2W`5or)Hoqn8i_+G98 z0L9LiaunF9pkGs>4~6$dR?%a){3C5MtxwKydUa#B(^t365jP-e5s5m`5G7zY?KyBr zHxY%dxZ%l43F&Q?a+@n>wQ=qg(df8(treor0GW$Pw+y;q?Q46Sh#4rZPpi_LlaEu0 zuoDsM0XYgNU?c-iQ4}gn=8_6o%c(TcMe_@? z)2KZ&)0*aRp_@C6f|qw5V?uJ|A(#eu+02?@?BF8B$QRLf#5+e{&N->1i5{$ez*$VA zL6fUY?FU`~J~W+7JS>OIIqRhM|2cXICv(qz`VD+cWfDFw3w=80=)zgEk|td3cT(=0 z;{hUd=*LK;<)H(1uW;xvGu_kzV4A5{SmISxL9eus{i_@0L?EFnghWQ$_iV7b83B|y z@@f#tb`h}?_y@+E6LIo9lL5y5%Ao_0?4ZGTjW{&2zfQNPl$)Wjn905D_ zNLZ1<7BUb84j}?c6!lFR=V{`!PRZ1w652)vAZBiF1_Ou=2lQW&VnqNZHlnVj_H5)S z^FES;JY#gu$^JQ?H@VFO0b`vfVT8gANLo5AsiR^g@>*)vb?MR~YyK%M%}lFNt*Mnu zn?ru!t&+R_LNE>?$Y$A`avMh+dwG~S%1OxcOWt&VJDA#JsqCV?CFMKn7%zLK1>Axn zG6{N~Vm)~@>P0e%YFkh={nn-2MJ#}MvF#Atz%m^|ZeVvcnZI*1_yYdfwm!{EI zlGt#FBAG1W*dGVmQFxdAlI@vnjP^&veNOWFfNjh-ru_VViOEdZNuk{qAnI&zxGv;iXv%5Ck-p+LrgLCWb|LL`c7)9^tg-Wzb}ld)w| z8I90BcY(m=EP^tkWJ-<219C|!7sc`@%3)A%`4Uu#%pvVLrffoyq9|gfj};NEEFXC< z54rQ?oDf75mWj?^$Q3X^AT=Ndj8NbN1%|LOA*>?m&M+%qf_^UBwIqu|^HVqlCy_nA z)2#MJ@U&V%m~leZpJ$kOZ$ZA4*<^v2qd(hNizrfp#tGLWhYTi%JyAf-0Db9AE%-|@ z#R)V==81>)=`}BTmM*>Qpqxhz7n6E92V;nvnv>hwOOzX(f3fpu{W>exSQS^4JrHzdZZ5V)zR+hD~0*F@6 zsI|GQL3dl@@jwO2Kv231lNpA?g>k>7xKfpYCz#>lLG;`qD53A{epOz5pWNjln9k-^@Nx` z3}-fRdht`Q)+=B5H0`$ikd4{K@12~Zrs+Y}W66jg2Tg9{W&K%+Cx1R&I>>YAHrXr@uo411m_^kDMizVbFUQyaE*@ET#$6%MXOM3fjFRigJkqIl|^ zY!y>5@#gr@fXLHfY1ien&Ol^3>614ak=mg{1~>}%2J9tLm1%)4=&8VVOu|Bkl?W+# zZ~o7^IiKQF>+Oof$ zYprX{N6tJOl^{ZA3K%XRa5nBM>ut*hS(#o`%91Xw)Z{S)T9eL$h%^8sp$G>BBNQ&m z653Qa8I+GO1EWAeBIoGC$m1N5^K!iRq@L9AF0zzo%kz@k)6B`ahbTCG$rX?p7|G-) z=qF%^P^N_(4xf0ZMV#f@{d;xQu3fU@+eHo)rfM}+aH>B0q5Iah)EecYfmHrH)JZ{y z!Q=%*h{4-Jo?kC6ss$26uwP{0rXb*mCYN|Y6>19#kZ6n3@V)}GsmSZ{U9)=QYo4oT zKkWw9YZkpDdDDaUa-`PCIcE%Hm$L%PKn_0iNG?2#$d zr1jtShNmufhJznz587*6+kj~OoYvRQXl?bh)=1X@&(_8{mUpW}D~m#XFp)vI3ez{_ z5I&%gj1QrKLx!X=t7LkYDx{A6jBw5Z@D$WB3MkFWgtLSK%>$yq!Gnk{Q;P?cBvpCZ zIA$Q3A{dOr2p)}i@8uxxDKT=S&P$}OOuZcC&N-DSc{wC>^usN?=t-woS^xkL07*na zRM+?lMT>rlvY(uyf{_%8oHSESbotV}uHV1Ej6wz=`@_u!PE$!M>Jn=1UD?oPe=H|2 z(K4`4;enj>7fArfM-fG#Br0*^0Q^35+dJ*N=N;g4&RGF04bTDZPR1p1UUm2_vBZ4t zwU_E|z4&Rm_`q(Jmq&(@tSv;LgDXjSJBLh22GjC6@M~%yDev&`2dn3-m>=4SejU6W zeMf1cge^d0W=ivOQ(9=$HAh6Ue^tU{WC^821;I9`z;@Q3oyMKv5X-tqnSkol-^+v) z(@z0Fa(pAh20i?u4RGu)$4#CwQLM*7g@MT;R>rg8!9WsrZ0G1BaZc8EARn-&=h^xV zbjYp1v0)zht{%hXA9))Wu08XL_ao>JcE`P5izVAuYeU;ao;GQ>yQSfvtuopaL?H%{ zqo~4!g`CGglx6IT0_2m5Dzkf_U5Ytiuq8}EyMVF`Ou+zy(k{qH+k$7KlqgnP*eh!j ztPI7X1v&boD^kfhCnw1U=$sdiJc-oVPnkMrdF@>0GLtN&G6Ps&1qu&PK|g{5d56}k zjOUWM8QrjVw=UyAVfV~5`++G<;XJiUMRp2kAi8UHL#w^9Nj70FSNY1z?w!Q5aFU=@QWLs-VM^cm@~7xU&%9m>^V1RzJ|SGm^0aUh z?dX5Hj5Y673gLK70l)v#ZTjPtb57io*JR2`EKX!c;nnG;W&qOSY(sO6nr3S?zR|@3 zLC9Ljn_bPZp)p`NyWQd=?TEQ0A}Uoh3jk|TtO9VbyHHLYi#i>mQJasm1rybfK%Tw^;!2_u$SmI7vFD5G$N3ZyC!QV8xMx?qM13d+mBG(b)tDdD4QZE+tT z@MdIn0$?bJM0qw+08D}J1g3-lPjlV^1r{hL_*8QjUn3vK)GHKr>Wg}4MD%6}gz^}i zb1L&f7BWa7X;L`JOXVZK5+zjEq|YFxN+?%gi~>Ytlu}`_UeOZ|?$g!#c4;5qhUTZI z0Z^S~Q&p8pB8P07e5t?fY4{k z(={Y@UY@q8b%Abks9+3R{hpRN3Ks&UOh~gFILuTl<;o^wZ z)X7r^PO8#Fjl#J!(M<>U==INkl3wwGr>HsAkn<7F8k72m$T>L=IY?Zj{C??eG8yfZ zT6RYS(VZsG$XaHC9QA_bNy`WCCFkYPN6a3l)@*8ac1n8y)6!H`i;b%4NveQDCoFSg z+6HrYXuyPdh6AiI`2>Gz0K}PERrtR~*n2!0vV|U#9}~I88W5Q>>RJ@C6FrMe1M1mx zmgmY#`-QT7;-w_=jDfwX^$9WW+mPfDJoCO)^!sai43~clZS?1dzrPi4PyN@TR{2gh z-MrOLH8ZiEJx`8}rmr&V;9M?>RiGTl?BEHjQMIA!>~78MJ)~-5nn9@qSpgsnKm{{N z02l?%8<=`-x;9y2 zgbQ8M2l?DO#DRn{9dedrV>Chrs!VRnpKnaw8QB}>#I1;Y;+?8IG^0odan8T>?CbR{ zFL;73zjU7>bnaXv2at?ZI<{l1G<42>BugY+0KobFD6@*rD$p+#DB&eH8GB`KCS+w+ zhZk1Ad?atTqfbZwo~UGhgVzK|w#3{s+td=kSg6(%Bcn}zHW}C$3v{1z5U@%_YWD|3 zkQkS$Xs%vY0zdN!`!}t}_)5lv%QizpCg6;ABmBfb*rVJI9fm}vF@Bd*E_7`ZVH!In zAky(Hbe>~h*@*BbA!`=7dylToaSEnKeLW^1Sudac#qS&6_n-ddN7Hfkx~SRw?s#VQ z&wO+0D0D8Gn%an)&2b8l0&80@uZUx6u@{Q@R@7WNsA={%G0Mp~8qbG486fg}h$D{` z7^n?4po9WY1%PCI)^{CLRG(2`|73r(nvZ%41|(C65$ytoow%);)mlBwfl4Q`vYmI- z6|;R~$nmLHgxN(9FA~_$)^G^o9 z9&2|8Pg_J0qg9Q)7C0?y;y`hn%F~xe*3yU=R3?WR)I_t?l^I?KI66orMbt|rRRB=~ zhd4M@(etj}r#HU(nY#Y+ePv{f3`EG{sN>MD`G}m8QLt39Y{|RS0X;z#iGz)oU4pV z?3t`QhhKnij65+DSZsQMvvZD*ygB^`dGaP_;quQMKKw$KA;|wIZ~rLk|4-HLe%s;B z13&!(?;fYy-xBJ{%ZqyL^{!HXQ?)Vu$8nSvmAIl>lhZi>5T!NQvTSbmB}%JR6@VnS zzjk1T$x%!wqY*|j!{BHEC5WSKBx1z^U%Ww{R79kViF3Krkwun>an-BTCHhAWeWQmld!=kN z0tjRE@tYAgvo;2tG5H~28$e^ofG6aPkptBzc2X%9d`8qQB}G?xnifSK|G6IHW!ip> zO~16+sh|0o{;8k)5BHyW+mC(X8Cy5Kce*llTfH$;)TicDpPE&r)>Oi>ZhCQ_rWbe1 z1~VS^l?}UK1z<4fz|5f?Kolj2m>f{7!}+T7`&FA=Bw&n`*`Wn(18u}i6sQ|$8&Hle zkZFu=NFFLLWbXrg6aYvV%-R;D1xo=3Xy>bm4%+gAnR83^&QW;UN3&ql{&b0k;9FOBINY+>%5nYoTW~5AlVPu zGTo6=cG0zXXRk`#6*AQb)ySTOK80=zWX=X7jrag>e^WUmQdmC6nT5`j<+OpYkxVzR zQOVcIxg7%haavK8{p9pKKw6yDzL|#hvR9g|Rut$brsJxxH+C_5Z1wwE@Ac&wON~Q^ zUDLBN5Jd1an~etpjroLPe;kmrLa`-Wj<47f&mz+h-xvZEE3?TciADPW$b%v$_&V94 zgwTmYXL+0)uLgZqkMZ)4vE5(U?7Hjj4%KRHP^~tLN^@3~#w^CJDoz`k*|lFWvr|Si z8TH%BS)LU{q+kwa#xsMEI-FYu5POcQn!orenWL3|Tf|@Ms0-GB5xAvh~$<-GA>9eeeSx(arCEkACHyzoWOl^;h+l zxBQBJ_P@MSKlk&$rk{W7uj%b?|1JH-Z~UJA@b_=ghu{BEeew3Yw034$J&vz49NhHl z>DbYiV+OU7%h8NDF4b5;&XyStJU~WDbP}hnr(`#T7Z9N=8wl92y3%O-|vCZEoxKQ)l!i zcYHyA{JAgaw)>B&-5X*c$DB%ccEbk-GIHb-cwRC;qdB5o#d{@A%#Mhm^Ldr; zs#v@c1(ugJJ@2wT`i`evrPn><1|8bFs5ng&GZCR*xj2=9$og>bb1SJE;ekw{@;F(gug4 z?XgpP9JDpew9@M8$eC5$aqn?`?9+GZ4{!Ofew()c{lC9YANs(@boU*1YlB0VQn&JQ zQ6!%vN^Eb0E_Usj(*eMAV78&%&AL*6ChSx5K`}Zhu+b(_aJk!)k0LeFism`sapkxK z@Ny!`05=%Q>RME@)PR%m>0}I$h5#(X-Z5K>5JmtW&i*X07*na zR3p%DUP;g9F5IH8;__cb+rPXiqfMf;3y|^($Co~i$*Ip%QRfAqf-R(7vi7Ywb zFeR9i3s)?dSptN1gpK9mMDrJ2&a0q|<=mJkW)Y+yoSWhUl}blJ`9KMof*g6_I3=OT z0)BZ(1qR3f;y{6AiKCA9UM`B|A!i1MwbRvK96hE_-2FxM zErI~6Kvci-PCHa4@HYOD_qv!(_DwALZs6O~rSr4eGu6<1HRV7fQ6q}fjJ&4fNQ-H# ztLGYe?X{QayPt8bUVOu)I&@%(2vk$V5+}l;JUa1FBnMx~iwq-1PUqw)bB?@>#8L*@ z$)8Uw4UF9=$FYtbJ)z(JA0N=iZogkA)>`V~hy(OCW`fCZNJ~wBd}Lu?lFQ00QjDoL zqP=bK2ctsUouQ7MJg2|-{Jr|Xt)J3=|AY7IBY*ZWZ7i<{0p*Z6P7+mF>dq|AYcKo9 zgNxJJJ6+R4y&=0ia!q-shz8cr+3jr&k;9gE`(|d9GQLP&Hin$?Axq3WV`Ty;%+3a; z3|owO9wA={N(O1#>FK-%%LfyDh z%@byK@4P%1{7!A1fQPyOlO(l(PgI z*}qcGo+{8z)G;Lm6mC{>LFkqr3=!ZV6j+pXauqxmM6ZJ7U_mrVqF4#zpQ@zVH`UZtyB76C z_D)Z~_<){&=wiL(@{9G#D-Y^#0h+(_jO+DX&%9Ajx%?t6&dsRCz5-n`0aX+wsT{mq z6iGXBJLkwd>lSjFT<24s$WC-5*$_$@DYiSH?;%IcAG_^#omk)2h{0s&Du+z}mgY1H z_FM>+2TW9GQYVl?c__>5yU!R<4FO(%l&RJ2>+I^LKJyn})Xl&99)0{npHORk3mLue z3)MIQo!zsb{VY>2nVr)9MoqJoS_#xdQWLv6r@-bBX8$69JOHN|HY8?u*^cajZi z#L8lvk5o>`$ZF%t0g{n;PP`N`j+}2!V|*fGoUK8oC`#mO&DGphe&?Tj70WuL5M5aE z_*0Z7Z495q%%09UHKt}&YfPzYe@?Wytem}3VDOAyfq|hB1spu!@K)v!$)mi+;(j^j zl>vZa&{2^MWOd5ADBIczC0Xitb_Pl)pfFQnVG3mrR4{Xiyg9afB+-F$3?JD%;BiLw zEGK6vlIwR-h=_5k^7^hF-NEP%@OH(z7Lem_D z&$7{8VkX`=GrD5mk}lh`s9iHnzMZ71u%D=~H!35L0f_c4isj(xoR_>2ayTb( zPkwj~l092elKqIQth4iA3BU;EsM~FwIJc@XRdN9ebQz3rKr>4TDC*~C8!Lx+WvWG; z)Tfd;rqS5)@U#dv%mR@l=YS>GMth`B-FCPB$9q4ZFRNXj^Dh7X9<6PtIIEhEzTNh3< zi@R77jI_OWPQzYHIp2&z37R117$`;zoY({mW>227xKdYbhLbv!Gw!yPu@p2#6;{u{ zf>B*rKOjb-Pz1R%z{|4d$%-IHYlq?FBt%nr zkrxy(#7dedCKF*;qa=!y@SMgm2M@8D?2l$@71sGRE#WYGrkmP3JEc8y)7nKk%Tlk& z{-MsyoYt#KN)RQA;zZs61V87zy!Uc81{1=_J2~eiIiW%lQk}m5mK9ROs3wJF9zF3C zaIOMp6V7Gt3v?OKDQZ-(vJh}QBlKD33l+R9XqWSxQ@=R>3?GYN8SjkBJWH!F4n4$v z9rj@-&Ti-re|giW;#Pd(`(~hsP4UdkJRn+OS+}h5&VQr9j28Jw z9;IL*8F>YHZ;J7%%q%FWHP}n_ptj1TAO;ggEQz|<+kRC(8^ADR0dR8rtB2u$J%W>S zk(~2#kYvv|*iK%u9yPg;!&$ir4Oi?aXa7)M_Cvq+EXusIUzJz0l4xmePB9K(OSnoL zsggvhRZ=yfDL^p|&C~%BAeqNm=9@KHRGJ}Qr_88A6iO>q#YrlU&b$XiK9=(n*&VV4 zImwzw*yXBlDSN;?DWmprPkO>STsZ_LYX`Zrx4!IelF$n0fOmRlD z(*$G%MWLjE$YWJx*gsynXHExaYTCtw6G_-R*EB}(Ot^ON(Bpt$(Y{3iKnJKI?`1$ruy5qO z62>#jcowQvHF;n21@8+D*}rYFe|vDfr3cnGHAW}V)bv&n#Xs=R{?$J_qsQU$j{}dd z$Rc;imh-+Vj5p1R+i1|&`k51akJv8%BuK$2iYs!=wx!XqN)*JvBPGr&rhI1U0L!Ml zY?HCH3m6A0nzbSE0naGNpb*K@LV|TpX204 z8Tl;BN_!Q6rZDhOmXj9cJ}NKYjR8ZK)6e@JJjsE?C$!D!U)7Gp_b%$91G{w@%e+gb z>)MTOB1A6WG3_!ym1&c2aZ#M;^4+`fkw|gmmEb2y6e*2k*(BEBqxq%#59;cRFH?kU zF(4ZuYa1}FatfG>G1qIoBCWo4Tb&Q+ak~8D#OHrv(~Q)YS1)3K6=sR`<uodbEvhOeU#eXh| zwTMFoKGFsF83;TIbk0%7i(i@ZN91ChvKmLSD6w~8PFG)Yv7UPEHG0kyZq)Oic$1#@ z#3$<6u^_o`sLMV#=(H{GbGU4O0WY045VQ7w&C zN1jF!kw$8y5P+&vUaKamR^pN>JXexLDHKBy{7fGXoj7FF1#*&mh=S!M^q|SbE6aqP zw9MO&&KGzx$>+Kh+-R zKYRG_;m7>lNMCmOFMEF69*@L_hLMju6&!5X>u7WN1k1Co98sd)oRyC;7qg9H{py6XIHR>w|bPU>>L9R;h4kGMksTBsIj zdHRR1eV+dJ?|8ZXufPAT`se@X4f;R+!Qa+Dc;oB!`q#f&-}0K5=;g0^kzVqO7wW~N zFMG|)^y+VUgXO++byo-^Dd%%XhAqcT zcov!Nec+^S|J)Z9SDR`qE@*+Mbjihgbj99TT|8UYZop*Vo{I|YNu@ELExeC))&6~| zMKL;$RKv$=fT&)ptJ$1VrQT3#dD4hU)5kRQxn`!luDuH0H(dMi!#{O+O^@S+#U4j) z4`X#`?nn{G>9Ce2I(Pb*`t1$LdDW)oBpfJ5p(4t-GW-gMH&KH6y&h}Yq0;88#@&vx z?luM(m&-VZ1DT^*lz76$2lbRgmuhKxN-JAivYASb8cvExr`dO0L$rAwAoRB+@pj>d;k}YYB&KEG#IQo>s)f6;&&8m5RI(dy$B!95w5T(M@%JLCxKJG}d**fdd{g_HRn4W5u3xBYS3TBfY?$K5I7K+(8y;G0#BW7D(<;lmq3l1!<(Qcw=gXy1M!rYn8WW9Ngd#i&>u#xF&*N0cLioYOB|ZDP>-3b% z4(VcMuPMOdaPk&wUnc<|;oKEH86&>#g)h)cpZ+vGWV zC(AqM}!DW5E*d71n*q+$R7 z5CBO;K~#UJhUH3D&dFqn;#fwG)Fp{rc+wN}{FlE#-~Mec*SEdwS-S4xU5fbpF($%nxBI&N&M(SWs{nRZ zb@o6@7wyv}7w^+m`X-rwHQ?M?($zeHDOBTn3zo6Spdx%({^bC(<218Q z18O#!ns3g?{yPZ^g!Cs~e!1T8@|WpFPku5$Tha{5twafSjTJkm*m?P~Pp61yFO_An z7v(C;tlY>`H!`9Qw&0zICUuNYWbM6EifWt}g4ysZ$!`H&uXR zC!@B!OOsR)lYmEVFVE^A1w^sxX;39);)x=SU2^1fdcdgbAtn_68v z`+uK1apcgLh%&uvpBl6CD*yEdi#RS)Z0lAAJmlk?o$;5dcan^#v#T0poBmfk`vrRO z)1Ix1ckN}yX{cGBQj-t6jpnp0zl&(|vS&U^-}a&x>gDWd_Rh_#k|Zjl0L~i04;AWs zYJV-^t*j(|#6{;;rXBY~EE#!zjGXKrVHziUeuyxalME!2GM+s|JLe~LopYiQw}Xqg zNUdy=lXEXX$y8iN_B&Mdr*7c_)QV_7B4-OQ=CHZ`o8?+2pzWz3^l0 zFFcTOUq&#bZwoD zcYNpT^lh(ym7e#~7bxHtAVCJEcxpzKrQMognYib&%e4RUOI6`xbws3d&WT%b6k+Q~ z3E+v1cy`7^l1Kj)${N*JwTe^3yTT`-@WuPz@P;>lT0O3pe_XlkFk5eR_H^2%#`X-{;rEI*V4f&RB6mAM5%(DoP%_pgtCJ!-nU;@U3!J~E$!75k*CRQ z)+G8EHR{uQGI)0MB05=P64HQ*H?&?@QOHWu3E}%08U)l96|E4wAc2?i|k$J}r?t=OjVgWtrtKkjm?!a(i^V zbz~rJGD7T!%E(#$Q1TT|lS=mJoaK#Fwwbge&+Vv5LU}l!E7S9ODc|kNaJW!{Xp&kR9#wW?a^d8j6+?6H9$k99>&S? zJW5#6(SNX@FKf&!=cPsTJ~91;EB{ZC&$~8 z$m_zBzT^s4;Y&((9w;xJ^I4#s6cb>_WcUi~}47eG)jmn-? zN~Q7wLKL}&l~}FPZoKC$+Ta%k0RZt}uVkQc1&U-@Zr}L~KqXl{D=+Kvo)oEQLnqc4 zod^IEoVn9?2X& zPAc-TQGx=I6%;;w5f+P3bh~xJ$l(A>aIFijVeu2?TA|K#^`@qKB0G{NG-6Utf zko5(X{qT6Cd4zadH-*0?MO4vBWsT}tAOsI`UT?Pza+S^gr(MqI} zmzX3Rc_;gvGFJ<#RwCGVUPMLiqR*&XZ0c)p(Zkn(>%&+^aeR)o?}L#!KA{&4%6qRU zPUM*-dm%z*iD&O^v13VJ8#Aj9Fkv z1BU(OFUw7B^Ihu9#+vRuaa^Cf|9*Y$zWa6O(PKKfvZ^+R9z#x>IoCsDM|Q!jLS# zHi|N#tBEt0uhS~JsnKm*)Ocl`(EJ1 zLnJv@wk&;Ameu4kUX$FU(3L!BNjfRt`Q^D}QC8z&r?^bY!RIQ9TsafYcsNq8)6@FO zx{f?}Om}|%i@M|XyLHbOAJCaoXEkVd6-Fbuajrn5qM@{-#8O)q20=gEWgj~~;k@uB z%nmsN6!v#ez1dJ2M~a-6=RLQKWO75U%t!|EYCHl&P9893E@}6I-v5L*zOkpT!Q~$> zo*2x%{kGeZ_q^w}`mg-q$EJ+ldh@N#C(SN))5!f+RIRi<3UDaVIj0f;D98gU7kN2{ z3YpCR@P~ER zk)vX-$M>mB8P1TiCxDeovc4b|EDF|f**jfQM$i1Zof5L=b0(dJTN}o1{BojAXRECv zM^EXN4}V-g`76J!ANaXn)Q`X8cl9&B`yTzwyKm7?{>C5ZNB`?@>W6>k7xk+*|B*iT zg?qHQzQrNaSRimhfHLgJ6W|}tkCVKK;>u@}Zt^7TZh|^TSrnH`{7U2%nQu_$A>LRO ziC@c$s~Go{@DMT4I-e*{YWFP8&fk9SqaR&7^??s8tlo3a)cv>IUkQf~d#Zoc_gBT_ z)>}h-^M~)b^xYr1|8?(v|DE4IcS`@hH_G2q>lVL|ZVrAS-RQmbV88XVPfg;NAFNi~ zbQ;T}NG}g4B3XELC`2VW**~7&s(tez5_wOF6ZM>&n~=4!Iuyt;eCO;}lf3LQ56Zz) z!RjJcYtYxH@4ZLA|Dg}*_ip{5K6n3v+U)lDsK@Mz@k%hr0~4-vRX!#pVUEwFM9|j zPg+bW(BGtjE6XoDP6{cbK6&Fx4f+W?A_Uq)U(&#yC&kV=T21bW475fWmN&8)BVen7 zWt#o3P5=BepVP1Z{w?~s-}pV<{Ju}<-cy_EjHF@iMBvdl%hh95DuMvuOj@~OE{cAo)^GoAUD5kVC@{C5RVdUz|J`dM|RH1IU}jcVM5H{t&W$IcaoRL zLC(lc^5rkjlCZ(~9|eqKe}b~IwWardiF84-gnz)_3m45)$x@TX4VXF2H{@- zkM6ABFCm=KJb^MH+e9WOy8>gg)MzpjTh39-Qlm-R5GbRr)v?m^^w6`L6j9HdMi)5H zaWE2s1psBKQJ|U;`JKAXSzo~lct^6sa`KvTB8Fp-wmdq?QtemYP4vFy1G??L2RTUc zy5`EO_3D?rMBn+XuhsYbt=H+hNMHY|SLj90dWJ6N+fN;5&*9t}W%|O2vwGM2KdfJW z_j|N*c1?~5CjceWAab{`)Kc?L!Yfwd3x;d3rSZKxJ$5jc#T6%Hr(l+5F_mN_OT{l$|@{iuDy0 z8>=d|R-LxjU9`RCs@vT~qmmw%gH`#s;Q=fCpXG!Nj;ZnyO=mVuu?a#X|72q5Ju zaM}wbiAR3OI1=+kvIuIw6DliMmI@@ctTV!Bv<*m4VR>6)=zN~k>X2|-xe?i&77iz| z_QN$4y5JZ8n$eutpvUhj7`(2;y-m33+>UrNzz_7?RA4zWCbI++$ zr%s(Zbxu{?`@96_I186RdLLH0w^H&a?T*?2liT%r4dm@NG8vsic9u_FagE;eKi{rT zUw=S*k2zM)dg{~k%2)ibUi6|D=m}4{NEbZ%QF`!&7w936exxpV+=Y75Q=h2kJ@+|! z;d8!M7e4r5+PQfPHUupV#=87-*XcL@=udRr^|vUOWFpGx%Wa+l_N`lCv{C_at@BMX zR#gAXm_F~$6xSu364w-)S&4~W$TABu7G&dNg(_$qZki~tTLs?rtQm*U47l3mL{wW zjd~mtI+FEn1a3D1*zRTLXPG%&YNT~COY0;IFKFYU>^05*B}4o-S2$$Pj|+N~YO9k1g~J6-pFzyoyA6ED`Yo^grJKkq?WSeVzCuXdl?e^9^kr~gaW zUUvgFxVPM#j9J-jB5GC?rdl=MV?}pO6u_%Vf<8L zGjsAUehM7l4PS_haf-zvW0QkOD&-LsjY2cp(rnr{Fy|-+C_BHRkrboqByu(+N zK;X~*>6#O}!@(P>!SGf2(4jq}8*j4F%{P)jHpR9mhW7y`nJS4LqW7X;KnL9A>b+-I+y5Qn8rzGPa-j!cd-?Um>UDZ4O z>Akw@#_QRivivuw3og7!4}a7}I{xIdG{_fK?em;?5Scgxnn z)-lKf1;h&w>pMWf4`;Lw&t))!sw+x2jvhN$FeF7FR$@5c-VG)lBV zVlWF;Qp>x}hxrQkws*Wo$B-CjoN=g zsb@QTKk}{dCb2F4D!1`VQ^czRTUi5&MAN_ILkKzWSAgk@0xn zr4n=9GBchVfSs^;a>EWWs^6*PaT3f_eB#(73jjDW^Zs=&^25FHQ;V=uMupE6?{RrD zRvr(?9fzR=E#86Mp5S;gu}&VH+s~u_xUhZgSz5Tuapj#J@DDl3R7)xG<oG0df^WIDC#n+tYd)o&i^7&nr68s9@86vybkUkuXXH|&UY*{>*$39^8QZr zH~;W{HBHvl{4DUUzkY}Q`S0JY5B1)%rt=fC~sd~u6FVGVn`DpFlx>FPS`0y21>3#42FgCZCOuwbQ z8{+hoRcvIjDpke5)X~<^-|f^gGiiE@77}HXfwN+0)$Mg8PasL2^gh3NGLcy1{r{UQ z^ASpefyij(l_hEEh{WqiUR@-?_HB#v`q-6M zXu=WF{|e%P4|$|cIPDzGZrZFa+kC}JR$)VhEipzMZgM-;R*vZX@BSP8?VrCzH+}9i z41+PT5TpX7BMG|=y@7siTVB-L|M5LqUK=P;ota>6Wb)J;D8Jb}9Tnbm3>00EHW&;a z`So)41qKcha(z>hdWceX3=}mg{J!4$2mf8ST=)6u zaeYH6I56j-s^tl_b?SxHDMq?O#`&|LCiajVb+17>@4M9yrJ@ zL;~?1)GV_SlSG*#oF;VS+a%kiNF*che8N094V8fbxkD?Q8cP62j(170u6!bfdx zsuW|Dn z?K<6_A}eELLXH021}k=%MuU;w{||qs8?OAMGF!d~ki?8OIDgImlTB+w9bR71;nfu_ z7s8TIs|`UD zmp{A#ZM@Et+gzZ0@q&rS^oCxS^RknU3*ac55CI^Sv3vBu2R}%spLiltL04RRgZwWc{50VXVkY5hdKrkpIIrl0b{WBs zv8K{wW(AkN3MDzG8;Ld7gpHYa%PjK3R{xxzSolTkW^gXa#LmRrPwAnu??lXZURjhl zdF0h)aekGh(QF9gpT7Q+pLyKAegFDL+@LSI_T?P%7W?l0Wc0%Eq1$Z2i}&Qnezhc# z|Hl=xALZN-jybsipMo7@tUDw#6A4F}YxaO;P{vUzfFsL9m%5tYlL7)%%gl!!3U<=@ zo!T9>;U0-5aw!L8=V!`U#jzlNSNYUuuhiObsF_|*4|>S?n%lBfT~)1(lijQ)&7 zavct?=Chytn6CQxhgBSlqZ=H*f)4*L-7F7B8WALI%FID7^b$v!75Gh)Wc<73&>>xQ z)6G6*n39WWm;+tzV&Bv!&UKI?=X<9L@SqiPLL1;lVM9q8r-4!rFJqr~N?K#VxM6juYbhTXOv-)iXCs~Nt`9$s11=dQj^iT+*E=h^WT@*Q+!l>*ioM2O5M*y*EVf(SrFrc-$hp7ZfD z77?F`Q&T2x*+!K)viX1CL(Fw1nX>Ol>`s{lBD2ut0e)B}fjHjU%Cd~a5=X#pGhjIw z|NM)d{p{29MOXNuvhMSNt55AW`BiCUu^#h#(1ec)EnnnXI!qX{kvvn}$gzsCEi`9P z43eAfW;ZF;UAaCw65WAlXD0u*#%lBacm9ngd_3?BNZ7neqO9Un zPbj)#N{CZ)O0=26n6a+1nzbZTR@CL6`ji^%aA7Q>LAfPwkxgcdvs9>D344nKJP-Z? zv@bzactxx{%nZ>4NX9?E*C`g4Ofk!SZSpJ2Y=felrD^GQOlZlk!e6gq*j(WVw+5I>a%E+2mM97e2V7kkrt2kwxYJyYZu*_yj%tu@~wQ7hj~E$L!Qi*IeUW z00@;frXVi-5SZ8g=FNQkxsP`734P4saNP|z65C_>9PpUh>GsfVYF3Y^#ehVns+}f| zCr>7zGAl_YaWaXKe5WG7GP_OU=$GAa{|G_gnEAkhjFlwDpdQl`p@TW!B%CY*OEUg> z-IU7f0pleg0}>J$0Gn{Iw8*M)czH<`TmA_rovQgQJLEsy1UmDBAJ;oaLO6y=y@-=OfAWJ3%<&V}*5tD)j%UrhX52fwI8ZvbfKMP-h)P9*vtr>qrr z6}cjOy=(7Yeg3nbQ^T(9wu`Hn!-E?sQ^ou5_T9U6HorHyUAG)KpfS6Fs8#86y))f@ zF@#bzeMph{3@9{2if@#?wG1EmC;4t2gky;feCshwlC;=4IlQPLN7&(k!y4UoSVLfR z=!hm9U0ZfpPpX9N@>uuy1^ivgcc?_tiH~cc9oKa;yhO{(r|1qBJ>Fj0IoWjdzw!V8 z5CBO;K~%Q4YMZBzmzO#dPa^+)$hW_um?UBXJs=7Yc$o}MBv0#x5`@h} zzYN=4jY81&oyW-gI`xdR_3^8(VwKKQDcX7`(?FW?GJTl&luygz+&+uCb_P`gN(y!vQ3w zP;O^$epY9mb(Us3eH}Wyq*ZnZuXosxEwndqpissM_B#YO2=E&SJ{BP2%bM4SUN^`{ zauK8L%0SJLWi{-&Ejwr$w`>d(P9h_XSJpIIT-J~T8vzp*WdDkn@I$7p*md*7KS~UF zcUn~$!V9otwHVa$^`lu^E}zQXw-!wcQ4F-jsZkb!3-|ee}bZ>#zUnFZ8jGeMC3h!p9hQyw|S-&FQO17ky^t zrc0ER(TEP$gZUD?Kz#svIV545(H<@6gQ5l+pZYvd5T!fRBLTxm`aq2_PoUBtHK^yw zO#}I5X08I#G-d_9f=}6gTsy@3Pu{38$!*~&t@B)`{K6)mn-=^j+Wx=4{2Tg>U;0(O z>uqn>A$)Puwb#-D1w1iny<4MX%E1)*n6&G-H|{Ju zQa39c=Z4El9M=+)rwwmFXI8}AOyr%l>_ExOCL9!$7&SvL6PTgRydq1qYxu0_|BX5< z*BocqfR1Uf8*ab=mz`3@A^u~o!A5g=8fu(yhx&w?Kb%LxPDEgTE<--S+N%A1H5OgCJ3$HWEe#;-Ge|4F`oZhUY2lP&Ud%ES8&+72T<_Lt5n6GUlDnk7`qCo*CdaG-J*N1?FB?p0IH+ zX?4vFH|taEYHO_iV}kI;tFA`K6#xdgE)P{y8H?x4w$0jm>|PN*8gT3?VhFeoXocML z>3uk5W^Rc~$jl_a!Q65P;vc+jCDpt-v@GC}1TsE8S--2$>nb|%Q%D6w5~|`ysa^epKx}!O%H7O z+}HAQB@|_ja%CVPN*LvnTi%E0pe0k8TaqUz8}-2?ZU-|bnCF71_d((ff1&f2w;o5E zId-NHql`hA%ke;j=3Wq&mjD9Km@u@J+twvKV2nBe4FMG3@7TFZp~jPe(z-onCaOwX zp)Rqr4we?>D|?{M$JBa70U?JF2trgt(O$+s$S=4}i3xLk{&mma)AG6wbGhGnDs>lE;rnNyPSFH@gqya_lP$i;v5wa~YhUQ!_0T|D>W5hEN5{lo95p zP;N7$r$X{DAEFNOL%YFsA11iI&>L9r%%&71x6=;d%CyBYI!bt<0Wb5#3p15?9Ju*b zZ8Sx&$Rk~F;OWqv>1j8KR57Lr$q2i6ugIYfwWX=az*fdYuV9`m2tKjRQn4#VlF4@~Ua)d} zK^n@P$+Y7z0S3p=HMfZ`byWu~5su$pb4Q#xf;Ji~^GOpGQ(dmrW!Awv{Gw*gTCYX- z1_efk2%N-%v%)F{=Zo%K#_Z}miHNfG&JudEO8?oPK>;6_`w~d54U7m&p9KGRDu9&BVty|S&;j1bZTly^`RAY=AREir9 zniO94PLmZYL>oiE%oKszg0{?eB^GEA4^xb%NHmK<2EQZ{bR?l-rz20Milp}B3h;}1 zlBpq)5*vokMP^KyiUbfqGWZeS&7|g>g}UA)t^nvQImfC^7eo{!Ub-_!I#(bP$Cy-k zCX!5ICV|0}KTKxkg`?ml#FcRB2%T=2^NIi!=Hqa`F%dMD1(PvuvBG71%P3{o#b5;? zzr1W_PSSraY~yRB6D=zwR;kn)$;Y@w$)Kx3BOl<<56-Ol8(G8L5YLy@Ll)H?+F^p8W` zPOaIwIb3Iq*Q8P}%HB9Za9&^s$nHb>p+or`nwh*We?}ia(5p;ybA4H)riwE9D0D!t znY^q}N$d3i8ULLz^3GOs1PmmW(SP>Ekt1s2ROT`7^O)+M!scx<#wnju#@A_^P2ILW zSzH0o><6#i5!=b>4Gmj9U5m+f!*P+^aNJdJMu~UgLsSSd3zC_nDVUeV<#>a?frZQ+ z=((6R$3Q}iDg!gx`R#b!VP2F^0%dLm*9+4{e8uyXl(kHAy^cEA)2Ta>%NQ2ZAOqqm z_Bw_z1-gq0$i#IpY%@t_CPR;z(+)P}*_75DE?A{xvf>;6f(1p%08If!kuiegAivxO zPac!FX`5sjkfvo8Dp96F1rQ2MJdvfEWHH9X=;Q%yGGrvzol6^Njy=U^GMSltoUSK( zJIXRiU`MWV%==};XH~FuSt&>|=?-AfrgFLcl$>7YKxTRS2o)Gxj97>qHypo_^a3`x z9p0~@qrx{c-CA49|8B{n4IyGo$e~6h-Y8?PE0MQ#D20uONoJ;qk2cNLs(BxxAY&d? z00GC;i!lmp0ZZ3;fpVxSl^qFN1nn-&EOyCvS>_|VZ#hNfBe%&vfy)=ca!SZ^9Su*- zIh*@TO-{##wwZ7F)K@+v6u~UqA-@o0E>anY48t5S#4yavV3~^*FbgUr_=PboNtCnX zNIsa^nXWdG02WvwXd{{Y@@D~rH?a5bwz#XYVk((4m;l7l+vevrhZCkf2h?~=(E5!i z6g=(_tLe^#JrVmmF)BivnalvGU~w7s5WP$G4`7)sxvR2p(tD1U5FR=DOYz(g~l1v+b%RlP!=^SZsR zLX6Z2Q*){3!R<6?{WcctE%P&);a!Cx7I|+^E7~PTGK-So9magLwflg+ioZ>AKg4MK zB(X*Q&SNa7#ykhcL?r^IDRy0^LQ`jvGB}XXkv0`OQmiYwi}Ww~$w4gSUNCY({^P9U zhIdnTq?A+7lup#U-h~$A)#mML#$DgaQZts3jpifsItL$tD}+vfl|aAqjnN8(HUzxt#Prl;_zV|n6Pk$LX89vOM z?M(rv?pj#TsmJV+5wuq7J>@b|DiGn31hRP+P|8Hr@H5BMU~wF0}6%gAje7U^hudpQexS{|*iF2XwIhEq?i(I)ZY zG{g7u%6B7?X<|@jCNrBVSbw4e{WO7ZMx6sjNhUJ`nf#xQ(i^ft7Nf$&1*Cr{IBsdBVe(nH58j2f+Dfo}$wJf&&aP{Y0qbqI`R@u;8e`#>IW3c01PL{zkCqW|x~6?u$zxEDU+jZ~thngd zI|PCScxYil3_A?t6KCvzR0(Lx8K0Zi!}Hsa3#FVD>C5F%r3#yUECKasoQ@6c*=6Vl zw!{DmMv=h_*ywF3%6K5ELLd|GPToAH8RRSE-KUPDRK^;>0Y0Lo>~%EZ-PE*;-(+Sx zQIX0XFYU*jda4rrXWIDv1=xHR;PL^Xm&V$$W1Dg?d;kyqZZD0M8A~Q%#BQ7c$1o+v z?O=!p2I2Eig{W=Y7gY6XtVe`7vDsM#-n~?JCF;$2_)7F43&L0lo{SNedN2uO6(dK^ zoac2$Os|8m^Y*bokz)|=9aR9JKwrOBw&X^d=qsx3=ro@%#$ytJm=$7_ zS&*42046kXJPhK(k1fGF&9Y35kO|tecaM75)~lnAneFJTEt@oJ6$ui`LQ|u!LYFT( zQBtJ=*FT+YNn0(Aek|chD=#nTEF=5#c zuhhdg^b0cM7je;o=f+Km+e?@wx))QfZYOHnwgrV4Y0A7~TV`Ix;%&^U@HdrG2r_Q~ z7_^WxZ~^C;DL4i~73H#7CK-TiF0#;KJouiTgg?pSXhB>lXKrd}U}n-f7}efM;tPd; z-W28F2AatvnVHJJV3LEEf#7rqGBdd`kuz)T^<~ays77=dL2f3U;b-J3NJVd$w#n%B z1d+)vLsy2zLN7wWCosI=Is_+J)Mj?KymUn6h)Up@H@G9n=P}V$)M@vBpaO|d$EZ$K zX$vpQCvY5?Lq|kc1w;!3OjHcvC{)n1omx9*=hX+t5VUn}UYl6~%}gPfJWxESLZ~Ec z6JvF!`%WT~9A|6e@?9pe`#27~<7Ivt@H&fzXp%Q~T~34$B*v3S!r(fQ4fM&h$}cn8 zOm7+E^0plU-LX|sk+DfZWnYJIZQ`@#K;DcIy{BY9NIi0q(ui47vyLC4Pb?Mi? ziaK3GSHaW+j+>v=89O#>j>N8Ft!}rc6V5tI9o~bB@0sh2y>2rkC>Q$;`&yxRUGSztT3eAr=F!9 zC!HY=(hmJ~ft>`v>D#ty&)kf9=!c~Ut{^;kx*=)@N4R4*Eojqv5;^be6HidDuH=&& zFeV}|i(>AJZ6O54frsh4*pFSAq)GfP6oc1^9Y-=r!6z$8W+t{RaqLz?)&n!3Fv=7| zlmP!h(Igf{9-k;F00)mHNR{1Mb_dMfGXEtrK<5&Mi8N;N8r)yNtK4qc-o}r4!G&w=7mF4$mOJk77>< zsaac=tsGI8cT*V(MuDJKu9h%=VM_cri z1vDuW)wGn=waohoL1i9jV-`^BfCPM;E(@j*0~m-==D@;2fItVykdseR;A#QIc$}!eD=ln;iyRcPNs8r*$4y(`RUPq^HS&)%jw1-uAhGnn{QWb-CZ{4D^Pd-t#iGWUc0&GSwWIlxQ1r!^l zEcsETNm7AU{;4`xP)h}|7p@ZRlu=-ypA5x>mTnKnUgpZ|^HxsQCLHtpOczZhvz?{s#G%r%F0 ztY-gB>Q+*yJH=lZRmL1G$mhnGpUke687ITR(hSHWK#D;p>^Vlq&iA!_(~OQkZkO(T z-+Rf-Wa!sAWbYWr89t|>OhUOb1 zVo#g$QeT<``cf0ZVhUj_SB{`X6d6@Ou&BW5=RAvnjszI}TQOcTZigT_4VanCObE$* zTg4dj$b**|p-JvqA%t$z7FLYMpZ5Sg>7ftPcRc8PZQ>~C5}CxoUL2GF#B)%ry7(%~ zb(jLdT+6TI4$IOE{mkC_c~z^6?6IwUl4zg}aA#ZTJ!x+HE}i_qhpV2MD|%|iUdO0T z6*XViyfe(`ge{wOJV(AAB-3miRZ}1ELkLj|Gc$VVx%cHAsiWvRec}lM&z*pUbrt0o zW`RrrojFEXsLLeel%a!!k4td-E;?%Df9F-v-t`n)eKDb~_G23T1e!P`{Nv-AjK^?| zF`~-61$rq8=SBJpAZ==80d z$_{k;wgnwC)74BZRlb;@yQ*sSIHKL_f=B3td!LIPu9^M|l`#+6C*1-6pU zGVTQL%Bqeswv}>>GWUHzuNi6`LcwNJ+6?S{A`_XnP*oDUt!P`o`v!zx6isHqO-(68 zmWB01l5}$p)mlrV96J(@3?a(FP;Af+aUEL-k_GW}1YK^KfnDASYRycBPI;H+b+rr~ zS(251VAlgIFc~NA-lJVxw#iIfR+6VU$OFz3g$gtHGU06nuPk&CFOT55@49gR zqf@Y%FEwt3B5l&7RiKXmC*ntegWDd05@6_|C{dTq)bheDlS;6x2bH(WB#!^lWB>>B z$?X?%=#MlAEEs`62~2ifcku;11{3Pl^6mtM6b)!^AekvdfCbtdY;{$sGdHKRAO1+4`LOe4Aqpp>S6q482X=ch z$bHU{d-(aQ)$vTG&kehdE-0lH?HnWTZ6s`*3OZT(i1Tw=IQ}?oKjAoaXZocdak*Oa zb{=n&ku(~~NL~aa=Elq<3xLT?@`ri3_$|nJ7QxZvevKrbF=jEYDL=^dc-iMpve7uT z*FWF^4``^7+6&Iw-3Oj+)nTzFP^{y0iyr`CbCuGq}9ZS4rj zbe-a8AftctfN>yjtt2LTQB>iqlkWQfo&ETysLKu&Id0U9y<&`2Fdx1Gqm1MjLQ2{CQx#uC!e1PfxZqqr5kQ;2sR-u*X??p z&IGsDxl1GSnIUT0ocqX!>&*L~tJzKSEXK7wVIt$LLQoxps&#O>!)NaK-N)+w7hkNi zE_k@=PA%VAO7NpkTt04&(cr32spjY%@VUYAe#O{)48<4T2EOZX|74#l+8bkX zo^qh%LSSqXV>3gN`)EI2P5HSB30G_D(gAJVf2}%vC@~x>g3bV+aK{csk4!sHI92C7_Q~3N-UXW5bCSaBCb>TX zJ9MZBD$dypd@?`f>~r++hdx;MJMknw6Ps$2VleCyeVSr4d7-60_ldaNHml;4qTcFC z$&=cmax&hfm=fNh+9pG{Du2p9niQFgTnR|`8~#i9(F3r;9->`-RCEtoWW>yg9L#N) zLhybq$c!=;_#Hy!NW!O?Kz5v5KLLK`gCD2|Jmx!e{5j`nVdqYDSn;cFtw^HOynFTd zoV@E4eD%oh&;^$~ODCUuKZVFR7^K@({E1Ejl(7t(jiX$1?G@?_R~6aGQ;hO4`CJwm z?1&*0dw3}47W=ZhQ7U?}ir(^=9^ixqm216>NU3&t2Xy+zgffXacQD$R(GR}x_!je4 zu(={0@Xc+*53xfMffXwWe>q>&6$nAbzlrK){C|zN4*qbMRN-y8*BKjGn2VCG#AF2q z?h~)02^7#3Wf)``b#xvC1_HF}T1QSQH6sAWFc>2!GR~EQkD9?6kO5IH?VvOD#V_j* z1H0peXW9wx1JtVsn~Kj&6rCmzy$_k1Nm57Bmc`q&rs!>d5^zX59U4KyfaSM$$Zu8vb%Po z@CE%6gogbr$;{2VHyDT8E$5pQ@L$GQhZY;hBudLMU^pDBC4nZ`I~g`YEs$ltn6MjV z{}6%QhP}BNt76>IeeZzHF;uEM9r;9CFtxNZ_{P}%>z%Kp{!vEe94Uhnx{7TXAz?YT z`kZ(GXXx$6AIF#s^*i;*=R8m6J?*=6>O&r)*=_vV zSb={401yC4L_t)TDwJ@Gb`AzEfKLLafppV#YOeXT;$ThI?FxsHAX%-Ct)>5z21ATCQgb@j}zpb&Wzc|j+o@S0LKny zXy#_}WGp;}KRpL>%>u!qr(Rdq>B?=-7HH3+CDSm}R}bp?I&s0}$-TQh_^A}_lSUQ> zlF2-Qn4}b<3>-q3c0z_)fv6AxGid`PNXh~VPa>j~*v=CxQz`>Xj5;&kwt(}j3_MRA zM%&CJ`1~01o_wO-aEMV?*9^#lruDReaQTd^4^-IJAm_VDE9AK6IGgXd^*Zgm^=i#8 zA693?%IIfk0#mH;-iKkI>p)yx#@^qwS=)~}R>z%iqE6bqQz!N+?MXvzL#~f=Yn)u+ zbeHeouc}ikhCt75rBv4)B@(9{w-O1XWOS7nGnh$r*2II!qQ*I>fx#Cb+D!eEJb8H6 z$-|M1#l!H)WOYp*aEUK{!oRpgExKq?^ja_lY*I9NeI#%*K5$4fSqMC(SXX#Wv;m+p zyCH}I{xk_gRi%;U_|UMGA6Ivueunm*b02L#?F{vIY*%M?R>s_yIl&0S_ikVCpm$pb z%hJJ{HNNIb>A)?jyx(FA%CVQHf`!tb@R0**gc|yGf8i(iJ~oTk>J0#wF${&IEp}$W z3;4zxyB$75?DL2T6Z=uY28Vj21B(N798CUf47i|0H!f$*NjHnP;%uDjXqr0q{DDl|q3iQ5P`G z%%lQR!II#}a7ZQqTK~@(u^VIt?Jw8~hvs!iF2kTnFPYIJGFePL3S6a%Tq{GyJ!p8` z(B;k&SMqwAx#Kd9PRRLxPr(1nKrQtRdI(j`t{v9)Td&fdo37NZ16OO?!Rxg7&`sL3 zc&p}*9MA%=Y4M=89NDj(M{d!srCYS)(2d%;e4DmR2Aap1PK@|6V5a~S(^n7|n68zu ztJoux;TywG6JKp9XRG*r;1)7Ts) zvf~8w1~XhARL{;R_L=Ys$rwwLh(5D1;hJ77;}E%!0{z2|EK!-=#e% z{P)9Za75kJBkHUkRt>Hk))osLq2ux)MRxme=oZ<5>t#1xEnWXP<^4CP<}?y2`i+$` zT}(S+q8Mnv4r7es7?+@ZE*X+UEO-bAe;MHR$uF9jW7@i`D9hWCAaXrmKL&f^h&k|` zTuq}q9u-hgjt0kf05f>5*L_e`Qm2+!7{y|0>_P@Fxo+F@2{)WQAc zxIi21FWOG`M!ABzR;W7igz+(`gk= zF_fC(80N^1iwzCOiWZzPt@N&W-VN+n?v#X(SdV$|P&c z?%m>}hTW(oApEGtU}OYXLr}E*j@GinX6oX?Jnk~(!9*A$8OcL{c@ha5yl+3&Wfmm_ z8GVKwkTXdDcOsDGml0(laJ z#r@LCVP%eU-e2&z2!YM5@t$P(KTtMw3R?6#8LX-Vyjup(=NOZUyvs~!o@Aj-xfqtI zVvw{EzH~oie3ID-H5o~qGMp~F(NGzm8NL%&b{&ipQf4L|l1vtZN<4c45$B#jrCe3? zCnbD9uM+c^Ewb=c8d~_nGavGh>$HC1xpfM(Ivia$;-f>`>t$Ew3FY77jh#rYv}R>N znbDb-J-H0NIWJaHmDA5gw9X z9&Cx^!nexB2^qG72njH^J3V{it;->RY?23{x0MVBOkp%`#J&DoXf8G-G#L}o@{ST% zaUy{!0$A(%atgw846_DH9?*u)Vh`;^G6ZZ3jJ5GebgdX{h7=Q@d^JSg6H4$rnI|cU zkkZDu~p>JQHDW8^Rs zZ9&s!JZb1Ww+wzSJ`9QH;0l; z*i2k2(65;c+6o=yA4&#QeK3XiW-}C`&+p)m4S2y*&R{j|oWwl4ym%Sz6T?Jod!G$(c#RPjcK6 zKpuoGL6-s1E&~BiWOuv?7BlA!B*B&sHhR*FAmZF#+9Fap4;xx|z8f@6q7TXS8#_v7 z;)I5X{is5ZDG;EU$#wgMK6jb-5h7ziR|sIk2>SQ;BY_k48L}RjZcBz&5{TWW%|^T# ziDdo*xY+&GveJ#0kEr3to{vt4c88FYiz5*9Oh-8JP-{@nLg_v6S6TVXw*S>C6f0Ed(D9H7XFQ2!T(rAz_c5RQP!~*S$bMl48^&?Aso$3;l3Y0*sdOA=v69hI z0g}p-$Q&15UFrgkcZWC*v@^qS3o;Ceu~HRlRg@#nP;tgc4Nef#X2|0QHLPIS%gE6h zCnk;uNf5F)oy1uBiISNbCc*>R+qhblMp7aYx#b|_gku^C<*QjTwb0CCsdw3ypv^Em zaa`O%OhX{yeCNpoQcGWoLBdwI$P`f>6(deJm(J+Rw6ZD2pp>m7k|zgU&@a0aJ4(w= zlt`jXGEY+0#49bx^%mPCf;tyH2|aEbiiH9earQSq=B=*CchkfQoUjiuS_zxnm|Vo= zS4NlXhxT!qMQKVX(5KNb&_w0(c1bBslvq%NMVaIlzQI&s6p+-g0B-myGiQM@)B(Nd za@hj(=`tIJco!Kxh9ZL*@nywadbeKZvW7iW$;V7bUM2TEK_IQ$j7f5^5EXc*QEx`M z1Mo_c1E(jKTOUw%%zVj#d6EM$D~Fnx_5=bHD=7vU;8-Cl0NEm41r2kxf28X7&N%;k zoUWr+I7+P(-}m@)S0^*|>)YA+n{%JHgHBiKbR_SDPBU<{b5AhJMx8^zAP2*k5TnWf zV~{}y92JqBLam72n!$I0UT;?2{+y}~$!kGk5?ao>9!%N22^c(Ml7#aqf_&}9XeLC| zK`GPLxeaAvhO*Q$`7Y8B!3`7YJ4D8rZm-M8*v4s>3G^&eav4@s*Cz!P9tH0@#tPfu zW*F;j3@7_!CnOW?U6130i1UP8GW6006XcLgY6=X?ZwF4; zSK5|xR!g*bzd7Tf1i&Zi=oJ&uFZ6ibl;M?5nJk#Zjk&lDKDX2I3%-wk8nBwiEW#$A z6P_$WGKA>U6Gk#c_X)P3tf)zZ8*Gfo@_Cm9IW~_2ak=lIV?)SKtkZh1Q0Fv@zORX;(?HqP|vO(AMcG@@cW!G_M+mD4>rB^rUGx z`zC_SgU+3K6tK}83|YMID_cgc!XDx6Y(|hWozzjp&L9s!!7p{5Skz??J}L-7c^?gv z==JW{z_}hX%ETt*%CUp?uA=~B&gf|AH-VXZAy!QE#3(Y1C1q@(z9Bgq!lGRVmr2kL zZLspOp+UZ742~xZu%*Aou_U*}!TZVZ6VQ4cIN^sBqCDwJy+8a|jy}&Pi95EDW$x-M{{T^5ZjD8wiyeH>zE%=GPyY|KC73^Q{oG1{r+F(>9m zF~}H)2fxRt%PLfbXRgot1I%MGR#L(A6GD;k_JS_poh$HxA?7tz|Ew_ndE*PWzUT^H zR6bg4yK`?Hbb7zn^k*iS-9x@zk`Vr~l`+O*B`XG0QpAXLuvn=CW7UCMVN2VyA)? zmuE9MjR?2VO)WD+k4Th8PGq0>qn==@D7&5zu?bOxxX};o`uxZxQ2>a8qy0>SBbBoA z8-gz(BPO=gNz`Ror;<7yWo&FMXo4>$^wl8O7M^&Q%9(dYEDkWaOAEuU3|sir;23tfF7tB6S@bEH zj735$LjIAV9gVRNF5{qTN;4mc(?yF-j0jB$HS4{2pGMJwvOCNhNh-lE_%4lZ!8Z~& z1H!0W%3e=n5+@L!hCinX!TjPI8Fg*}zIDFGtYahg9E*0s=bmgu*5$t#XrF}ZLvKnIr&={6v<%HT!ri84Qqy0fx7pCI&IN%$i%z>G~yJ92~) zlkYNeCIZKk2^DsN=X~e*F=|YoEqW2*_~u*`Vq2!YnJHjQpX^0HT&KQs+urx|OD&Q$22M71Xb^DjTMI9q-Zm9lE?RE}_#%YH|4-NhSgQEG8oB{h1e_r+j7rIv`i>00sEh z*SvH@6F$PUhi~Plffb2Z5Oq03Ww6t-NEfDHXbV#?>M~`M*C7i#p?qYvII!v$PWBy1 zcYcLCXHU5={?7CFkL%8h$FuWqZhNz%w2{RGOPRb44ByKchh`j>FfwBV<5a>)oS-!9 zE@*Lfr zph}Hn+PFPQNf{<;*d=la_J)3n9|-g!gAWjwnaP+ehlr0NKB*XI4P9YZ#Zl6F9r0th z8WLktcS)#P6BexoJ0|QpO{Z4Nr`eW|Kxt-1X?9kr*H@-5p*x!~VtnI+q|=OHgsW4) zl%KH~qf5aG7qYaP7JTg9&PzoNI^EBu%$H8XA>J;~#sfd#>(V!6Zx`Jb1Ttls%Bau6 zE;A+k*!tHxSLQM#n=%At!;i`k$OgG~ryWcd0|b>5k`lia`{5u8nN(~hc{4kne+C~P zKCGo1Zq)d|el^gO!^9YND^%Wumgp=`$&B#>TEEC@BP`5P?93gDn(#T1T0|XX@S3u>+{Qyi6Nuu#lT><;O98lMeC+sRz(}rT9(X5Q4Jz+9BGGjFCOC*5T!IGI3$R@=a zpJ9n8SnS9`EOqAX%utSI>~ayZP<$R#X7Q0HAo0QKtBem5vc`OCG*ruH@Cn$DdSQMu z^<7O?hZ?Mn)NI7$`K6Z~Q)%Eh0V%2dGhNEscm?#PoYqdPEJq92z*OwLP8rmM{a zS8|B>fgqwaid&KW)8ImvQ4dnEpcnvTtGZH6veYC{*P&af-|eVJ67~9Bb*byl_2tl+ z$4|3;RsN?yJwDEqKcK8-Bq0i=K(Bx>E@xwGCdb(gT?a;r5DN+Q!j2;ABk_9LiOc0Z zfSlz3iyAB7b#iJ-&}~E?{on_lu1U#P9Ww>SSib17gTYk9f3UrEsS}hp@IEpX+!DMD z$P2-Q;1noZriaN`na}K*{<0?%i!GBW{~J30k-vQUAC2S-aOC~Cvw1=F=FRGC->Hb- z+9L-wSzcA%x<}>1nPEO-$t*71Ds!C@=H>!pXp-p0)ZwUC0~O^+ zk_8ejbV#6Bp)b-G!E8ZU21uoEfe8?h6IiSQ*?CzqZ8mW5WY28i#?OvB$GN$=gyu(+NxP!oDmz_7c z_39_SWn6cjGv2iA*G9dWK@;n#fdq*sk_T2oYr|mXPCQw?ZCiEQjn`}K@GUZurOOw( zs_rNdJYpge{%RRi1GGmIs?~%^844a7K3bAd|oi{ZJ+6 z8}@m!`idE2oF)lQqdSfGy=a2-y*?L3(@CVEQl>9$035FeJQ*`KBt<2K5;Td4%_z*G zeE=9!4wRtHOaZ$?2nELwR8g+5v5L?nQdLJq5~~K+;HrT0qC$-FfGB}U+e{npU+B$p z`{<7`=k)`tEnORT- z#z_j;U}geodRehqT&eguD+H4P0o%=}Ky}L^1;y=SF!>l2z$v3DO9(Or626@rzD*53 zI=91t{I3`MPmPivzxfeA@ukrJ%*^#A=F-QG;S4P+q09Aj=jJqG5ufk@!nPly6uZhk z2A~BzzDD4c9M+bs^J}9JpL^01p7wvf+&huJ=n7v{{))wY`z-y?_dnyh%U<~OSB_^k zT|DV;dRG(s%Wc)kO^BLU&?E#kB+S+mPU3^YiWc|ZqIR^Zy5Cc%YIzdnSSf`dPrim> zH>^ApCTGG#j=>`^hdM1y23q8J*H*|Pp8-EsrVU5aUto80eN34|Io37WR3MwwqRSJ^ zgD2zMgnnaEMV-v3Px9nzkjtek+L|)D1hl1%B=1}B8K=`3+UuD=A)-tm$fyU9meb}Q zHW4GHK>HX1cv_Cgd2q!T6(f9bAhBYA2HeH~-=JlIM!{8Tdf60}r_&jmlf)Q`F{}w5pK zqrrQ}u`_JZ;a?6NXK0a>9=w@03COf}>&oOZ2~G>$gckuoFt`l5jmc_#qQM>>9yG)q zGE6Ap;)&;w(c#z=$#J5b6y!&`M1*Bpv?L{Lx-yR;T0{CxUjkcAfaZ z)n}JO4=ROfnFSekdO0I2F+Nd6awTLFLJ4`VE7d%>k>JLDa~qE`Xa`%gGc%c)mySZ9 z9NZ=g@*P)>fr(Yk{-xo2kF2(zUs@itYe$weI6^`#E^EBBqVWoNbybtWK+TY(;`rwY z)$%^oI8ZKp-n%2?9P?RxeB`if^A4@4(=O)D4NIZ>ro*B8lI6JY)cZZ@lDGN)oam@w z{{|xb8)WZHH2=tpzUS7LU3$rzn%SA}pUiZhI-FnlPlLIITk0Lhq=pv$e>&B0o~`Px zLS(04w`e&(HzYzEgPL$VOf0gSMU6wH0rJcJ*}oijyH9KS^>>Zx>Niu>$-W~^lSfKM zXwyFN6~~k$pC8IHFA-3Vokvn;9O-k_kU&Ys(J}cVs+>(3xlEslz|GWoeae~oOuZ!P zTNyi-;7P;-i*Ob(r7Y2NDp<&PS;))#T?aFWU@|iWK!TV6EFPr;(9d zDig# zawjC#Oxh;-WdVC==7JeVWbBda#_sGGC~|Ip(P2e@h?NW(tng}@yOKikFquuqZ<^v3 zycm1$T8=Z9tg3VIV%2}m!AZX6(DI;NIV9* zV`nv0^=cdImA2|EHJ$F^LASTMO298+)&8m)ug2a>e*RTI^iQuNSqbD{Z>s8J4at{% zLL6kuW|9N#L^60?CUH`ju5Ld4KA&00F*yb#Ce4udU2M$RnBAQ~$!gu%K&C-PCZU&p zbrff5s*hlnM3JXt$U4V?Qn|HpdA9&J9B+XXpJ>OcD{6h`$b<|5X#fHe$)fcuyIyZ1 zT072+$w}-hBDBdQk4PS4Rc;R))Y7LvtpP`&9jBh6dJ~_^OFN_;gQixm7toVfgoF-A zYS;NtetV8ME(4`s;SUJ{yOd4l*u=#=AY4fCTvrofR3VWSZJjpeMTp2Bjw$<`$#p@? zOf3uQ$g10NWj}r1bDw+jgMRX7KKY>6{LKG5>g+goac1^0x5fHD?$7b^1H)$jk)_qV z#22~M;Uuk1+RL@L)H0}PS)~-2X_0^*`j0cAfE3|1cf5IsrJnQMt z`sBSXykuqHzI{He`g$%x_UmbWr)~2|yHCBXSNCo_yttTKCW#~3$5&$KlJVT!cTMK! zU(n3Vy%=~&+nM{JQE%=gYyG*)*5)=n?@({yCl1J(McVA>RcWCc*EV`MZb!Plt-HTn z5|Gs`0iH0K#1cs%pM+Q`LnkI9Gl?yYvw}()o*%WY_lrL|p3Gc$Qxkst^J81Ow&{%b&+Yj0!@arJ9`5#EzSN(6*;04@ z2M_e;zyILe+_P?7*!=jzs-8Xw_VEetRinj4i;-+Ss`=|Dz8Q(69lM*nHXgN$i;MCX z_(_QS56Ae~pZ<{-zIWftU-Z^}ulj*M{Ha&};P3zBYhUtvKl7TGyy@S+>c#)#=YQnV z|2|vjEyKdu}8<&(Pg%B!_ZVl|xqr(dTgN+eAA z^h*FVB;4?pgCx%9wfJcg@gtwokd=d-iD4>8Go^cem8-D*2eP&24qaJQzyJ z8FNz#_(Sj#0F8jlxs{HyxAy{&0ly0_x+&qm>@;8`i-Yi)@U!rttz!v6%6T0GE`Uu^ zqMCXZ#7x^ve2-#v)6ndtGe?mU$}4I%8{Y28n!kb*8Qwg&wTGgjy>bo9`qxx z|E>GK^v8eu{y+4}KX}Lwy!=le`uvx_>ygj-fzP(FxoM(&xM8tcJ$%?W+uNP1{@S?V zYisu9TOC+kO^0|pT;Xim`s!-gCd1)ZG`xFTXE`XZ#cTvw&`fW>d&iz$aPcD!jJlmy zjl2DWZ8SNg7?qgB%%l+xO5O|QWN3nynVbblRl z=BeuT`}{<3So=SFjjsK`M|JH#e+al-*ZuPcb=^N*uFwC|`*p+nFW3GnKdZwx-$EQT znmci?cHaNq+H}^b5+8SRr-L1gTT*u5!41ub%;a{I1Ys=GO^FgTx4cD>Ed{4w(b6dg zFFBNIgM&|npRF?^v3Qx`Uxz!ku|Sh)zk)P#8lauLy&F`(E2lft*g~@$dv7@D@85Gd zjp>Nzm$*Yn#&oJbJKLFE*mCl_cI>Fpey45XsADp#l3G4etfa|sb@CEGhKAluZ*-RjFWqH=lLyy0J*6U%>DXQj^nYOv3H@`K+$uDh>m z>dqqXSmL;+mJb)gquy8+l%P{duxXOW6NSl3V22iZ3MRKNnZ#j99$Y1vn2Jn5B%;Q7 zo;ZYJsdw2#`(&m>JFm->vy4@pLC}Whly)A43A3sf zSI6G>-r9TLbF}NM)3xKYlePVnleF{nQ?%<|=V&+eyB~0_j(x}jwEf(()!DsMExS)E zbmeLP-o4vilAke5%ffanWl?iJ6lN5wuoF!4>G+asf+qkz?GY^ZR1bn~x5JbxB2sFa zBI&vd+qGDj@@SG7XZAAf%wQCn`gK}9FBUXWNNb_@7b8`_Zu|D7sje^m3^8(eupHG| zr`J1mW@cvgOGyvSYV2Fc2#iL9W@UMG+048M=j*@2*RSGVYuIO&mWHFxjm_4Q2U*Yw zv2Hj0YsoL ztS~z#Kf<=zNDd5@(YFKX9uAaQA>3wX6zq)(8+k#v7~psIKD;Xm z8GFmPp#3&)N1e-fxd1X=&K4vG62-BVaYw0)*W}p2sAQC9GZH{bj)5tU#BsShz)?AZ$^*%h#se@BkS*uE zl$|5=8sOLiQgW`#(G`JhjsWjvO4B9s&=6)*3`2CY4zABZLgE&{uhA0RGWVb|C^Rb|Nbct-ruPC-LVB`${*>HOD}z6{iTfK z6J$uk!IMafxT)V$iuF6qY&r*b(&)0MpMTY)(|bwVo%ukjJGo_7a%ifkmI+EYEEOEk z6?K#@e4}jgU`S@`I}LJ7ZlXSev(bjSBwaO(qQZ{*PCZf)b^g5>yVHXN-3$phc-4LMYMalO89r!)<7amkeDLfLuQDc48ZCh8~`JG>4fvnRRJ zK#>Ax2eg8CN*nS=v2)RbHk6x}rm)e#$AN!Tz(p7bzRCi_%OppkX=MhFvL{)hK6|buV3Y(*djd?`Y&X^n~%=)r-EAp*J=0q+T<8@_c35 zvU&4L%;D&NeD6!O`GN1e;9o|wz02C(>_hn5HNE9ZG2I-Rqz0XPUOm3Obw#zWHz zFVn6Ng+G-m<-&(a5W0*9z4ME1lsnJq!bi;U6kNwfW0I;QP)k$qb6V$ZQR}yI(X}Cu z43$Sq>on@+A4%jF^C*C!mG+{L@lD20*%JjCmIQ6a7{S87*~CQ|o|h$Gw2Vb5YGC!s zTI~M#+QCD=civ@}O%VL5@5_Gcw_p+B4O2ke%ZxKqujo36sn~dLa%4xKU})+Ki>bD z&wM5aWdzpmOZV;DUZv)heKn_Vo}EoqXXYKtqsb@MtG_JzfhS+^vGJyvA8BXiKizhF zIn}jV5~3sxtB)s63QQc}6Mj1#Nw%;KOfvO}iOv?L2?3o<&<22^J;+M3U=iU7KLaX3 zMc9^A-2=SH5Qv4Q5%DUDN9!{!V55b$5J% zbnF04hq);7@;Z1Mm?h!pA7jwWpw{)cE~-n;6d5l7PP=`M3(yKSPxSI!?}q$A7d{iP z!IO-h;5#O%ve#u(0=Fa+Nwmz5?!S~(|MtDU%D=MK7hTVN&1?RJlgWQ>n%o@t#7B1z zuK(uz{KWEyU!>;iE`C!J z$*mhD{oQI+zj;t~#&xjME49D5`ONb!d&$24aQ|2A`}e2+@K5~AQ|2e>S7+6HU%!fR zZf?uFhfV&47e15U&|JY+hJ4w@4|@-ZbZOh2{l})$OKsiJ7aa3QtV~jQawQTabDZ#m z^2tn0s`I8;OtQmtvWc-$E;~^+R#5oZ<4NPe(n7aHRZF-KyCpU=K~n;qIuF3xfmX;S z1fAzWSukyn(q5lc^i1WPCNZ3kTq3g|1(LUcRq&KI)n8~TGKrHY6gg;E$O_1s>UKPB z1Jf%&Qyzrh!c=gc0t%qY6XAlr%rMK1Cgi-v;r1GagKVJAz=l7KuX9nW>K$CI`#;sp zZ2HxczKZ|7PwC`KJVu@B4THM(kBe(7dFk3K&tJLq=C`!hed<5%-+%QRhO0}z-!$V> zc%Rm=H-GiSs@FdG$xlA|L;sgh`Bk!S7yG6s(jUF-dzU7PKeN>9{O=XMN=e~CbxyyO z#-sl|8V>#@OxAucPln$;N;#xX|G!Q~_U~T!Jx}_eaWuT$%r8&5>}5}R$Ulxlcwy?z zzCBgl)YPQx`g@bCk|&NQOJ?VBNS;{1CpMJ27CM`kH$Y|5OB<3SQ(qDbQ#`=Ran5P4 z%SMu^9N#>#rgB-+-~tm(37KgCC$%XPq<~`w^kl*;ks&E(B?8}d(5&cio+pIkDTu(N zKjbp)GVN#vj}ino8o433Z|Bojc1Ec}b{)G;XM0@%=R3f38#Z{b=(ybUI>lv-l(PH5 zro2KUoB=WJg4lr)G7WguIyVer??oqX+V<(%vUjOyL4NY_XsMmY-T4(kXgS9nV zJ#^sAwIjD(I$T-)o^jh8GwJnhIJf2cwW|KH*{z%2^Y!%grP_Ye6UjUNA20pxn-U>m&ETm{ z7l)6G_wO)OJLQ$W(C^i5^M-F41ShJ}igiCRj59Ad<#CVu-*(=46WCw(&4;S=f}i}! z_YW6#Jmye$^KTx}%vDQP-!|-QIy~I8<@zHFTmNuW^)GztbDr~7{|lL~yTdzC@GVIs z@AvI5yLhBsv%fy*bf367Gyj6Y+?Jml%XzbU5nOyf?8!am4elHYrS#$#= z#BmERIh3-d$wZQ+Y}%+RiL&0t>DwVs<%zCoLS+&R9s%dU=0Fwk3=bkJD^ce`nNpSq zyhD*I{G>$SCuqlB=dzjd6yKpuX|JNgWfSFuTmolwc$>6Q250*BaxQgQ3AvP7CFjFc z6XS3I01yC4L_t(*Gqm%(jQq5IL(Z{~HO42k$%Kd|_-KtUb4Nn=kJdV!?|Jh-{nOu> znY$B@e&g;Jzv@-{n`4f9`AToo<5%Z*J$rS_&hHz}Ej(qpnt9RFpZC10zHvSMYfay> zMDnixA}7J1j>bs4!#PemWHIkmJ&%E;$Z&gjmR9pEDmLy19p(z{$~+j=`> zXoFOdheVW8u_>v@LDN*OrpZC0Tx%)x4lalOYgfkkWoJG1i68$)&Nb8U1@~oq`Md1( zufOVfuYUF4efP^=_O?qdeaT0k|NQ5F#sB8Q7by7}3g6O1x}$vn$v`&0?o5X}^1hMu zzI_)qFMIYy{}QX2r;KOjf1&Bl+}hUNR6aOxoJ)LgC<)~WLdQ89iQphXD#6bdpy4^~ zGT@S2&>Pqj%L9lolLz@7p~z$c%;m|TQb+U^d9Vkn(;m=?a&p<6)k3#LUeHNNnZN|R zoQ7*A-%^h#wn`1oYe}FcM~y;fWhu_Qcded%!r4!H%5UE9=}$j`E55n+|0V7J z*AnSlHQtw8a^Xrm(EhZ|&wXE-o&DpsH?z|ESG~w_kA(7M%AQmtO(IdshX@(LD`1NA zdO2e>aYC3%C9o(Y2v4S#N)M(2$T{`^D|`a2C1_pNVJc5RB9wrJI+u02rJN`in#Az3 zL!uwwC7fSqmn%TR6pTLFwe(eF3eW43GI|`meTzX3B`M%1Ad?W&Hi-ml0mr$tOUNf= z_+-pZ*8&fHEm7p__Tv^sM zk)XYtC^;tVNIYqpBwzxccvA~*0LN_!w4|0`_p%3Gq2afl1TN>a!_l(K=hCJGJ4#EN zHkCkjUJLC!r<3a@F^ax**@V6Xe*?19$ZV87Q9RKKpSq$Cor(6TVEO{LlnbD*rQ9&s zrZwJyG7vb%Ra%O@o0sD3Pmk*UQ-`dOu1GGhMnl!DKfu_l7+)f-(X!;%Is6p(cl}_*4<<8u1ELFW{ zKJdHJ3(x<~@BDUN=(PuyL%Egnm{OVeN%hM;lxqsL6XFu3>dQGbM z{V8_je`?fn+{-}A%Ii>eCz7E>NufP~oF+LE$wIubJBgJ%m)#`6ZwWl-dr~#D^#pKw zk`gii?ItKI!HR6-!CdOlK|>Gj20S6?n^KoG0XOSqPXGtsIa&h0B{5pBgLav=;6^Uf zP&b8^ast3bS0n#_S#Mm{!P^7Vevm_E!dOOp)m#m|bfhzP%~E&%r5B{N&5N z;eT>docC??xZ5Yv9p~y5ms~RV@$dW2x2{#Yo{_rUXEvSQ&$ONXyMQIW^yQX!sm70e ze3Kp)SX*FHfO6An41Y`l zG2Cy#^6G_Dufg3&#q&jDj1 zdGd1IJF?WBeb15p?9Z+AXTN)OX6A{HdiEu6c-SSE9J-_L?(XzGiF79suEUM>kl+lB;bJb?-(S*UlJDI^jGplwMg zmxG?L>l7&EX`99q2bdHd2}Yme)>MveRlhkjv-z_}<`#Z-Ff;$e;mpD_uNiVS6^iDON1QUlME zr$NTSlc@28A(5Ou3U}a*p~oae0Z)+iMW-vE+k z(li>AD4r~i$JCAZ3@}d015;kBtJSr-|MAt{?4K<47k+VZX6{9U+5QuF2Yk$vzW)WU zdE)b)_YdEU|Ea;3bMCi$-93r)HO%0?ef!dDfA9wnzxGF-|H0S($ff^fZKeOpmDu~9 zVN*Y1WSz&Z#r~@Xb^k4cs(aNab|!vYnvht0MON!cRFb5HPV7>Sfx`2T1rxO-K_VG^ z7ivhLmgH%@?AXgr11$;S&_FkZragF?I7vgswi4>JRCRAT(&@hAw*K5Nug=arZ>8!z za@g-&9Cprr|E=BmeNX?PSG?uPm%a2ePrmG)j|RBxYr5}Aq_4?sw>L6=GugNA`NMs$ zyzJoXU;nbJUiZ2me&_36`?6nt&5yt0*=x<(y~eZMGx@duvCH+$OIND?e_g5jA8zY@ zJ5j9(N4N>u>j?#~g_oc+bOJIo=Q9~}XvV52cT%Hnl7wVn>NT%==8wGQO_#j#wI6!M%U*rM#ozm~ zrF)KSx6kF*Lxr!W@jY$7tOqhX*YLHkc*WKGUjM4U{fVD=)vv$ir(ScJcIX~gyxvSAwT3u_jvOLoA;y^2ltH83>78f;KT+(Q9S>vT8HOouNKwMc=cWp`Y!)0xm ztZGLZYERwhr1?sx?OM=Dr<^j{aq{Uec)?HZd;Ryn?sac|;cH&=FVBDZ%a34-e}(_D z2H#WpwR_;6MEcr&_qDXlvpY^)iFG$uvCF54$kEP}czJ1tV@-xb`F|IDyt1sx^0HbI zNI+OxR<*LE&TvKj(VFI(q2~Fdu_?4#s7(uCuMosMe%k7)w2t`uURT{cNw;GX+i=z;Jp?CYMc);+-9V`h;O?l+Hn zlTj*=MKYMYmi$qtvI1Rpp)N_(siQjJio}V~Ri~0;Poj#%Gp;6*QM%{)R(c?OD?7WV zFWId}_LBy@$Z%{^Ngr`|)ARw)C&Z!RQJbkIIUKqqR1I`Us5(Yf4pmeH2R67EgA7@v zCR}^Nb$j_8Xy#FmdQ^pG1Ma!M$sP#bWc~N3SGI+RKXJ>}`#v;X{myyX=( zZf5z}NSXH_exH^9?=dn-B%r(}fg?#)naQChQ7XW(Crl)HB4@uq@&uB{0a0ZX#qn}@ z&)@u?eeDf5{My{|;HRE`!K0t`+^0W%=RFhg&Go=NiS*_C`*qfx{mgxxlb-d`@9If^ z85R$})mD%Em*rb;d{r|V)(yWT`Cl+>{3SyoqmCvMDG>@tkqjYU)^Sip;zW}oIPej| zC(y)2@~IuG<;&iI>#lu37>-^rtI2COckI8+bvNyM@rz%x1*swmzUTf1d%)-68?5r~ ztS;NBPk3qfl&8OP=h@Hx;RnwjKlk6Z?b!Rfy}I|X?&h7lbL?$e8#nchH{YzqrA4g` z*EAT7%3o(Ud;(8xQc6kLfy6Sk>`M*_ocNjtP!|A0HUpE9t9+b#Qb(=|8f{U7?c znn|l&TNZ4`<}GpO!u&#irt|%`j7IOi=zCxOrbl1$;@3XnNzc9b(NB2h+2=py*?S)K zyyubUcjr0##*F=*MEVB!@x*=mdS}1<=TAN5g|B&5iYq@gGu;2?&eGw(j7JWCFHt>P zcW1Tr#Iw}feyrlwy?V<#{z8BKkq_#9SA1F@zUH&~^i4PE>Vx}r-E9YT^WqU5;J2g0 z%PTsvwx&ZXYr5solCD2^L|5E=Kp(yCW_{qQ8}-glT&2JL=#~1j_kB!%@b@3mAHD0t z`t85FTpzsVpf+#apH%-Oyne=?zVCh){qEaev1z>J50{K63r_`rzlU)dz0)yxx7?b$Z7&*XpmYyL`JJC8j!)Wb6T0Znc@zBBFt|$4=o_N_$zQB*8_ss6U-2?X| z(!arH`}XB<={v93{=I+uv8SE7C;!!v{RiH2&HMl9mk+$}AHHkmy3gHvOBya%Gpr6D zx<&hMx=shK`>a+D-lDbT!x}lPEo-=RSe)I|3`c4vK-*~4wi=Oa!%3^vNu$N4(QV^K z2S<(elMJ`D(vc(`o+J(Um1zPDC^z7ws5RORCRwYrxovfzL#sm_A%PC9tbkW^gvybPRr<@%xqU{Jx$hD!uZI+ExPU2^Ji9${MUQ!41ama5C6g=F5UOW znSX<8?)IYJc8Tu>qj7J($cX&9^;%KN9lJd~%YQaZHq_x3N!|}Ml+GwQ3 zl_jk%9?;^gSL>$FUasq|_>fjtm(}(*Yn+0b!9Z@8E#7J~%eOsdE>HgZWHS22@BM#% z?c9C)_T3XBUq#T}#aBHFh{uIXjPNRSj}jl#IBP_l*IS$%$GU`e(T{LE9X`jew!M#&#zQZ8omgQV;>tQ%7ZoKwI$i=A?vOk+0!4aym+p$Ke@iU`v;%83!VfPS0PsWI^)yjO0^Dor`3xeB`_}UH5KtdeAu0*8+ zOcKrOikQd`SeajqBv*~763lg#@+50XzC;qXfFB#n7r{2Gq1;RcS~~D~9XWV|vautP zqzRidwuZrq>eVIx3-dU$x^&w7VDum7##{dI(qH)9dp~pETROVux>FC_lSp^smS=wA z6P<&Py6W-sa|^$ln)a91j;!oCa^R2-?g{1BGYOkF{y{Ibsiii zNigSUCHl+s?a2h9uLQtn*PCGT%HdnEc`W~5>n3)?%vdrzsj&dm96dYisNKOz)gP`s ztx(2_rMo=;GRVKLVxH7-}#BT?MM2rG3mD_Yr~7z4lmcMhnKZ_ zcu8xA4r_SZZE6+|@xHSn&T|Uv1pYs|o3NT^0yL3G4w)UH0KrN0k}2L1DL_P{8y2*j zg1=5WqNFdxCNmR{q5}#V33z6uq_~dPkpe`NWc*9mm+3R36{O4-=GbjqTROxLmX%33 zxg7Rqc2ag=)!5zR9j?c_R-avWX0UQ{Z#?|DusZ&&OMl__kJmld7kJlix7(=M*Q~7V9xbieXl1C;>QF;|*BKl+qGsuc5+4nG)efxU6#?3^ z>m=TTGRY$kN_ZZuAVQg-F9oA$xW{3N%+_g&^6duEk}Z_I#*8O7MHP~>p_!FLv0(B) z8!`)Esfyresw*prRmE83guI!td%5P4PRiKh;2%5^JCBh(X?-7~Qh_l<#^caoY<)g( z%<$2oJ6xTg8LmBRb36Wr*ZlnNKJ%5o^rm~>oix3|6y3d_&wR_}3)^Mh4de{=a5<7qg zrxEaGaQJ~V%W$}Z)+qyXIxS5~x?zngKd>C8wj; z18zpbt||n@5Ol|@)G>zS?{vk+_1X-kjj<>McGn25SuncD_Bg86%}|}m;DoB3{AOp; z{`^n;(wk1Ag#mZ#`wP8$_j83k@10kixpmvz@1?=yXWQlBDPvEfwUNf7i6$ItCj5>w zUR%?6h0n$8L}CT!3qo171HoS7vz8#s1fM5N@(6{OJq-wS1FP&dPPx0Iyi8N1xFKwc zNFWnM@s#7p!}|y%ktah?P!%e5VpS5O*QwR1DA%=SIvw~?eUiy#Gi@6ZWYn~BTWS){ z%;Z=02au>2i2{jD(zI4wNU$sUjvGm$3h3lUJ;pi1SHdpG*f<$(k7@j3HO-q}{jg(HEfoe@4;uWU-)LU8_eT)g)Gjq$>JN$On!13O6S3 z{qwkg#jC5j=r%K%*00R&$+3>7U>Byzuo;p%zMOC*Y-KDGfl>Jm+#&J0B&WYS)#E`` zO@XT0zp*5MZAyOJ2?UutE)sN+2%IJm34V-m?;vIV;PBH zyo*d_Xq_ck1U?udm_di5u<@7Po>2bIsFCoGJQnei3o4(@p{y0!Y6K%w8m~a zCg?q(V99mOka)ExHT?(;;xZD%<;@IROdw4kAoP|bVu1)GQv^qF$DwWI?@p1UVH}T+ z?WX28HP`>CpZnD}@6ui8`l?6b@$gj(-xUO(`+xprHZ<|odDQ+~vot($LK01e4I53X zM8viH;OPm~aI_oqf<5+M{Yj!kU>d<=1XGaljv~MaP%mk^ii6DHu}ee}$tbHGD>oyl z9m&j;)18G z2G~EEv~s?gK^CJB}3R=J#GW(w2=u<4FhmT|NTjN5>~LQs;5Bn=$*y6oQd zc%(2I&hla6rIzz6f9Y=c5hC2tWp{Pj|J&OjWGa>GV|j&Os1ryjp&5 z630T$i?pkF#}WZ5=pYZ?NKyn7G-dC@0~!#QnIUIzNghdNB&13HmkfbMgULjL(O3<; z>7kW1b|c>JnyfM4iPP^?908;JG7GACcdOW$LI?^np-zE^QFl9-RBlfshgKzl@IeGB zpyo*1WykfSUI%}L(V!oj$z{3MzgTy(E8LC7Yd4+$T@SNy`q}Z~fUmeC5{4C<9jGNB z8j`6Yk;Wy7#+>3tzT1d~qZS!3fx@d|9hWQh#9& z9D~ePa!HQGds8%1lmwE~0fL*d$!Q0ZkwHei)M9HwU&zuD?{gz;W8=}G)isUSnMNej z1es19)UTpgIEtPzyoN2y`|#sk2U{z^%oIWZBFP%T(D1}Xuii6MqW=t?up3Y-V}Urj zOYxpnP+W(2>L zMC(F#SjBr$stLlVMwLlHl8MWc4;gNm**ZTfK-0MzPac`Z*g4>s8Dk)khFay*d_=)2 zyo`<+K05U3ND`ZfcD3|5WP$Jmb5#{dQ$e`iDp=7ULtq?XnncjSfg}sai9Q_}dV~#D zk|?3tlL_n#19gTUBfC=|nK|m6*;W1hx*J_Sk9YmyX3kA3?c>sL{J__Zo*D9@gy1!G$D~%&iwv?fh;3<^14BRVDjJsn}aEU zOCpg(o=lNoud0qZ>{2w;ghZV1e$^6ei6jw$9z2L02x{LQy0q~xYCVFw=QO(Js+!%5 zMB{yHp5KUy9LY0_-WY=XovMpm!||{M8phPHFcg|ThLl%Hs0nq3yakj0fhra&PG-Ea0u)5jFUFPPHvgjFLe7DJb?<3;PPaGZ|t;2Lgi+x&ZOBhSNHC>-s&!o z!d-rZ3~+AK+P2i@hpr7rp=H%P*0luqg!iL{q-yCm5!{);^B9zje>~0c6e3DZ zD*OQ7A=Ad&31eE{ZP3$l)Jl>cwv>@;(CJ_8mRSUbjIsPU3}1km$&<&-1SMYpB6d1d zBxuC$7=zsQ7=mI5$f$tm(_-V~#u1b?r8K*bZUHu{q z?&?F7Y+}c>O?&c~T?fo2!?BK__M_JX-h{xLaExof4lO~Ss80l=xQs|LGXe=9z|4Z6 zWL9eAJCYx}LWm^*V+;hOLsU(G&h)w@R7H%n8naqYVWNiByCv}2k|c?|%Jk&>n9$83 zkHjDlm9tT2)EQW!vd|6BhTt7x=Q4@E$kB8}f_eQE#APT1pvvtec9%rLwh*EmrU?Wc zNgyDGP{v|r(`2GA%Ont3*eiA)$Hs1C*dR~mLbu}U3|}eRx=yzDw|?ulD%}mPa5osE zf9X0QtPYiJ000mGNkl?};r>rkvrhAG(i}RFcVQ=d)v4+n_aXm-f`9 z!@Kw++{MRNh8KfQZ6PExS#_*QH6>fyVI0DmxL0mEmWCH50_X;(8)kmdpqx z!(EOE5i^4s2%$g{afIWYCIkWyFtZYfCjM>EU^6Q_RR`HV?@_aSr10I$p~9f z_mnhl)v)SM#vH4_4N22XhH5$1rE;7bDsA#>1wePIs_<)*{ZBVkiSw;xRlcpre7$qbN0DoQ+Eql4>oaQ`HB zOUEvgJ$dk*;2GFb+8$Qhj_w9mxT}xx-@W}4C#P%=OYAaCX%GSBZU}M z66g*%FrH$YNiEs5mGl{xZd-iZ28Hpl- zEUzb#ET|0xD!9)v&379!6F12LmV*i%U_#w85mJNK)rm3hZ*VqD7LZDm#xH4*8Smr zDG7w1{HtU`BKbRC!iS!=fy4{#WKT%>KmF?6;IAA49=c23ul?-JJG!&+--jwZp>2{8 z5%OR88}E1r zf?mq7GrVa%1=?f)N_D5B$bzr|RTbqQOsdETkeT+34o#D1nm9?mAT@N-vI{wG9OJVI zyatRoelTi+dqBd8~^l7ba>agD_-HQIH(_c?`P(_ss1TK;F3{Jan;{} z7-)e4wXn2ryWE&vop!-o$paWfY9{zo8UG;fMb(s0`xkp@aXm?W+r#6 zNs5Iw1+cgbaN4m$pe?NOG;_{+3EG?scFyf!Q*s?;N*UTQq_WFr$!Q7&-Tp8%8n#5$ zRaYU#vK!UlPF2Z|dR0j-tTF&;p_l}~C0QkT@Qv?2{s*%Yd^KkAnZV0HWm30}n&Wf7 z{|^lNn`X7^)Z-+O{@)v*OH{N`g{rkJ1yV&*e_g&wwwlBOsgz%zqlX?v+=D;Re zUK_{=mb&gMa10XxLsdzrOadi7Lni_wL3=V~-UEmpmSiHyqX|Em5h)I|_4W!uWF9+m z8^z4=s_>CBVTI#ts_II09Y~y@8bdo(#SY>SvD;(@h>Jxey)EN;3KGB^m^Sb504O%^NkWb02j6{kYZ9-Mc2qY0G*>@lkNsdV-vC?`X zm4u?cSdGo3z{6zI-N+;}n}Vj7feHkk=r*%bFKu9zi;{C> zW*fOz_>xbXL7V&^#PmjvJb^ak*I`f!pt|;IPrJ7)=!D(dv}5Z$zsarY@bYcS-45dy4F zeeW?fx%=cz*?#@kfBpCU|Nm2WrORjJE;F9x&8OUtbN-Jo$D4)(s2@2RGN3;EP!-rPV_>so@J=U==lvI2LOHEfzm`LU|H7b}$0T6Rm`n6%mObR6ySN{2iu= zl!@TEZVx>{0e&!32u9gK;3@Egb{-%h6J%gB6SsI42o%iu8$ekKqH+qFUWE<0fweA> zodK96-vxUyYwv7VXKmZ0%`;tD734cpx2{Q~iX9{>h9EPJzBy~cqT)NxfOpCQl>Hdz z3rj?%PrJ<|$eyhWI&RlC&CS+2c-sM8b>(N&441X{*ga}2Xfhrv{64-K=J_M2U7EQD2pG8JRaT9x-8-*wjbAhX6#1)fB{ zAbDLUM)`kaWy?%od$w)X$;a-{!dyq!fBss1=tCdW!5gm8xu@*WqaJ!cov~}X`us*W z9t||%gN|_)*tBb_wjH-~MydVb+1dCVx(i*n`rCXoIok{W@lz+%-R2EdT|a~b3Jpor zv`I}l+DSR*vf>_l>M1(&$xl-}?JOnU6Pm@Fw0z6ww0!9E8V?uM@-GuqDR$&Zl|_=| zmU*8@e%#|o;{jnN0@WXp#Ho}zwKDGlv)i^S#)`ZQrQXc$fTiGNO?haL1?Up?;_{@B z*UB$5o`7S6E5Ia~m8T@*Uy%O~{LGw|*mSTbXb$G_Gqo<=SN8`K4jfdKSpihn6{nwpJTUe(Mh|v zYs+k> zRt-KF?>bgH9{V(%^NeTdtY?0g_FVip&7XTOP3Gn_U|b^>j>eKYbTCVTEwKCSSeVz| z9b2_~+q^11++1<>mHOw)Kdg3XN#~!wSI>Ox!}X9yK3p?+TAp$*=F;ecy9*7r2;)Z{Jbu%QIeJXnM;ylcgOOy#E*BrD~TP4Sk&C6S?xaSEbTb|0`(top4#o(`GlP`9xZCLa!_lF z`?a=mfbuG#mx)x|6bMMO;w)lTd1glQ=RHu{pZa9YKkxyXIq`U%bk5m&)RUhii%}(U z%m^wI`vzF$3h>+(P~kcDia^Qhrb%X!R{-V)i!xB^C7GE_l9$;FwTYePLC4JMWe-1D zKm3s6^!QUZ>)1^-LC^AmKiZTv$ys9-h2in1DQrImPe|79X#Ru~wDqA6(eB4TTH)m5 zWW49i)m?4s_q5IZL;@YNa|=nZs!v^cg)aZt$J8ty*5l7QSxGi00 z=IZ9lujUI~cqPZF`6J_zJaPPdKY$)gMjG>u<43%fgep4&}eW(!{z;2Sw5)YU;e&_q2 z-*g$sF*8vQ-#f3@JmxI@=wnXP1CHrwQ_mDgf4@1I$rlj^|3p8Ewbterl!EVsSt7w& zhhVC<@6;KOzep!N?mM*Ql;gF1&vtF&3*2yRS)cgmNA>YfeM)sZ(o^nxy1wr_&evJz z-bZsMo}y~oPN~ zT6U&H(6C0A$qFo&Rb8oOYU9l~h*eZ~unFPwL{0_0`jWRsD0V3#)$SOeZREZ*#6krBQMhQ}o+@`=k zGq8h1DYL_5_0e_e=B}Q8&Q87bf|GRFBTmxUJ30y+-{f{MMj{y743L_nvimqYp-Ul@ zgpcU)zESP#0CKGc_^5mQ@!I@|hfDW9M>pfQ8*li$P_M_FeWIT6u>0$*Gfr1;&#@%l zF2$Kyk}}dh7clRHj}&?6iDa0QfyD4zZS6>B#zvbs=4Ix_=&Ls~qs_Z^^g?Q0pSs6f zvM=Z0_Ix|Sx255?JneTI3e0niK~+_&?sim@IG#}bJ-mRQdX~Cp+)Me`-5QfjiAaMMZlj+qOwcwvb!0?23-<4Rf}nNF+5nqNJljGXtqdFM9G zZetrC4Sst2@BG<=^=*3jSiY@H-}i}6bkbz_%5K%Uuu_O)l4Er;)|ee>1gw%k1CC-N zz80+wR^gA?sTzWcWFpa8COd(%2OohDqABu;*nd!sot|orDcyxl>h0dEg?l|f$3FH+ zy6q9m>&V`7If z)$le&@yWW@a~^c8e&)OGr;AS8!h1(#cWS9kv@m5T9`anta1w;u;W$yjM@%0rwo9H! zWM&N^Fr&OVz@<%!=yR&iB{9%ULi1%sPFrYwMvM70Mu zwd-XBylNV>6wHt^i5p0wD8B-aDHunutWCUAoX7jm_dRH@e)!R+>7p}tXx18K?50O$ z`O{lyngC)nS>lw7j7S>7mf*!j$O;~n$cT0h0c;XaaoIYCL^_jp3Gk!s8aw*_s@7+A z?9%79@6zG!Ji74}>ar_e2g9!cKWC29W`-8P`=@^D_pFReqGq8oouHw5Ds#)9F6Jn(zb9WS-rUZzl-fPR4FI`9bGew%5({`ZJlSA2D$Q&g276B$8(^9BM)W zCHM{v$A=N;^@gKHO8~a)UY0Pt0;2qwH#0w{JtrKe9mniYsHD+oMVa<; zc@w>gD{Gz5#s#OaJXjDdv_EJfGk;Dcoia`Tl^p@L|K)+dv-lUdS<8ChuD)LS$P;zx z!%xr!r)<-bn-gV#k-P0zH%9&VCbrEEMMKq`Nq z=fd(UlTKOwQ^FDp*7a8D({l^Ddh<@LcKY;7EAL1&z`sUP7(N$1b=I`MB#}VwZ}*{* zSkB+dLUD3hRd=u?W4^i^p?B=r-mR2g@z_D{3Eum+6EH*H9_C(p`Be)^&C7b--f1yJ zj%!JtNd9g#WEC8fOkT84 z^mspTGw>b+4JbN^q%5_hxKBrK_4KIK?vZxSJ4d2+&+0sxr`6Muw8CmBEOjJm2~s2| zl5(U7l5hiz!OUR%Oi%mn^7ixJml^xJ@m2LSKnx5)5Kva$jEEaIZrr#gA~LeN+Jk9Q zplnK650IN?Gi=naP&`it*6#R_zrUU#&m7BhF?-3U*VJ0VTwmph`T zFazb>_Ny76<4YC0VCEcizq=*_p$JL93w)6W;C7j$8I zQSH2eXhG(|!X##{d+I?d>4ChN$rz)^Uk@mxn8{2hhP%r8dnuS&GgF#dnwz!p={As=*MNXO`Ml0R0 z1d|7r|Grm&feUb@*XxIYd@k@a4ZjGkw{Aa4W`?=#T43?+R=CJx=mPd8jJf&>H^o_>4I!B;h3 z$qV#1LYLc2UT3q4o^H+SmDYl`Yf~CTQwbPA=X6QSGHMb~aC5!xE1py&c)0 zm+0r&2~5pS-xf;!wSV-pzqCNB{~~UN@$E0?Pdxt8p)9Zb^;)$u7jc3SjyhoGAC8Lj z4&(teW^0%J(H?akEOFmpC3GXU8=jW9S^;=!c=D9L3(c_SCm`FrPjxw@)Vy9gc9XU_)hk%H0 zBty!QLlfylCM~hW6Lt#7Fn|0=-e}hTXuZt;cq08T;DI^6y`}t-7_;hF|Ib=pxhoG9 zK8%)pFm)(6Tp02W)7K=3Mr_5#5`m-=Yva_OMgpTCQ2hPK%Rb;nrJ}{DY22mMR(nU? zVNV68ac<;@dHoiTlus!-a+Ww0IWVHF(uLjkQ*-tjvO>BO1!&WD1_HyeGSUhyr`bln zeyO3q^sbxqQ|~^lJLfVrGlO3#x$7GVblL~Hbp)`V!x8s$`xH(|BLaY`MCbJ-wJv|8 z-x$4~DsUFPHqxJ$z3n8OJi$Znc{79BbNi6W&T-PFM88R5^gCpQ+T&gI8uoea_!+J8 zaW@*8jgX`#WZ;otmcKl>{Wz~$Ti zX0+eFGWv(tn;w4Y!CJ`wt9o8lNq~%iAuql|z8m?rZpcYp$;?<1EYX4OTm*!%4h&Xe z=#l`-@a|c@7uDF_?CkESjp0gf<3^7Ade~2m)ZFU(=#)4e8FweDbx>^*p~8c^$I6ym z5a$gzlPfr9o93r*Z{-y3&p&uffBD^K^v0tN<;WPIbNWetFi3sS!+t7)i;}!Q^J?JL z+p(0ObsBO|n^2KJy$V#&4Nt!#G=iUr*w_c><1ndDPm1OlAn~GwKt$3Bh<-}I)2Nb8 z{ZOaFJL>s`C2dd7P(fqxIsh1PgPhz3LrdAH3W_@BCwbU}y}PF7TWT)Ma{7?}FF*Hl zzq*vjzKtJ<|LrT?ZQuVB@4LI&`0!L#y~%LZAqE){L=Jtn0exO>{g~SWNFFR66a-8J z+_3IRK6A#hWD60r)M6Wlp?CPYJ{S$;blSHpeuIlBUG89>!97S0YF z2nq;%%uG|fG@cmkDC>0P2QbHu%<7gSGw(lh zbn&me^zchF`Zm78x2tR)`OLX9(=q(>nX-IcUdGH{aK{*B$k)Z;n5`WjUxx%z;j0lV zQ0c(?P#N8{jLK60Z&JjoW@@-Jfws+z=WXP5kV$v|_I9Vx{xzwJGNW!Emy+mDckz^w z@#D9Hnd7BSr$fj~H99`i%=M#pAJSia|DAf%;fAKO64KI{r0%_aq_cgAMWvF5?F-{| zAh->*_X$An)!rs$d4Q$f`%l=!+i|Hq8E$w$LI?ObnMlq6O(4lm`xIPJ*DsR-bxHwf z1V1&`tBnF}s4G27Y0^9FRcI74Vu#+anb1203Hx|$5)gVb8UnCLyp3(*%($>XDiv?%FE*PPH(`0!boFg zwXv^81kQjX*dbdwUyTZk6sdD438r|EcLyVY+?m`za<+53y^abuEJpmj_jM1UYLfT1 z6q2(g2k^o^-~#)`H|m3eq9Xm5ot{p$s`{=o3;Od9oze&S4%8y341i+7Cb6ef?lU7n z+({jIzf<4Pc?zYYs0ZQw0Dj9Gf#RkJ6&Y^OJgM{dp@H3{$<~y*A+r zUtMoMmsl-~6Gc2`P14Mg?7guqN ztq7m!I(I-n7=TJ-O-~-QFl3C_bL-kQJ^#{WUAefX_48NMxo}a&3ZGe#H7oJE>y`Mg zx6faGH#+eyz45mVeA@|x8Eiqd@2r>Q_xL+dduLDXpnh~c#t>r+GvtJBfa3iRJBr|P zXK^S!s4$r4Bi<7+JdIH{dwI$u>dajZql4r&;I(hV$f@>#9;flL`Qrv~p22CEns2X{ z`mgUlq#wL(RwtW*_nL9Fkm)G$%t1B>Q;bX!{7LCisaf?&qQN zmQFL_2c9;L8}PWa*ViYnZ0fUXJK7tLsr1$kw4k0l@r4cQ9BX}hS5udt*PAz=)`OjM zdQ05U+vfH2)y8kkvhwe(zw*j$ z`Zl}5x0yWp=;O;vRoPFDOPk$p_f#7Xl%vFgZNU&2U=)8h8WBt-t5bU?OO@?!}1 z*aDyJ7W%b|oBH*OTY9lGR%dJ)Gr8c$NF&9>c%KDrT$gL@j-EYxLHYU><-@ir55)|sIIqQskhALx}z%j3rq&Th&X``8hg7k-b2O2C!g#HA`d2E zL!)d=YLU+k8&|LDk;k9ZmCjhBjP(xNl$@Xz*l}Z2(K7P)S65lx(gYB4jo(xW*@u^3 zUOtTE-!?bq{#MEI<@?P>;}2#Ymtt@4+y;LJ>rbixQ`|j#gtxu{2qkYn9R&G(te_Yi?U@Vqo2HF z>m(S^uUC8Um}e4z_d3s0?=l+9JasfEN>nRTd#R6!3_J}ab&4x5$x zK@!RWh^ zmG8+by}xtm(xnBL``ZD+w}TJ|GJN#u)u}9mzcw0;TiYAknpLT0wW20R-6NFifi%Jp zV*)7|hi!s8VI+uR#49{y#*3cfG|>TkgwEUDI9RCR?$3QNPql9>QtnsXR=5oaZgYtK zB;z;DylIYu`LS*8voN^iQC<&t(84(7QcL7ZW$1oS9aO2#38|Me@-&qrrAT#TMKVB| zJR+N{sEa#8{i`Rh=p)Z==;76_w#Lrg^dv>)(3Pa0-x=%t zPO0%=EZ3jaYw}@7MaTe8Y3Mq|x7Cazh0>ZNE7c9Oah> ziu3ZkgE;~U0Z#68c`#)-OwRUBUvfFkm!S5Gagvg7d+(F7Kci#Fcyc2HF9R{jAdL!X zxn1hlp5M^l|I9`G*2<6oDm7+2B@mHO38WIIj+}Islp}SDQ8!*b@_MzZdS1~b{PWk> zqjpDNM|~O2p1MqJChg35z`$3Tt=>=td;_|k+FnRq+r5EzA_c8OeKL=qR#>tF##;crq(X4Yk1`{v&WF0 zq)hQtC6xd8!b=zKNr-RZBYX?{zTWkRAB~lIng21~jn24YL!TGh1`9U^XXC8OV5lZa zAF?v}a$gpOJV-=+3Ye5)SiC0HQSSj%Vt`3nVpreqj}`cd*L(g78Jr5wg1`XDV?z5^ z!lVZXQj@7_QXt3!PGg{z+>Bh3Eg^Ui1gUfIlqNJFyy%c{{-6Nba|blO0!3u!yg==d z^qC7C{ryjz)&Ipx^ukV|q2=<|aUqM++Lx*7WRmp#gzwls(rYJ|4e+-oA7he{|| zS&{dp$YiNlT2;mUQ`PXd&z(Crr*GjEzNqhSQDG`xJQZW{$9ltIb!VG*qg={EKu@K_ z3X`)fo9nhYNgXN@Ol3J%iIJj1EOkAYuy91dV+`S`1B6nV8A}Z@c%B6%UvnSR4Oc3s z$E13HMVMfc*SII9Iyy|L*O?hBr&I}1#@57QffSltI9((M3C{@LOJomjk50h(9H1Z~ zYl_||kq7#v46p96)U(%y`p2KTs1HASSub~lQ$_+P5-1RJ3*aV+`#^I?z}1ry$1l-Q z2|q7`mYD%jYyd=08lu-GTdTXKjOvk$e5Jo9ZLcb_;tKs6G#So5-dfSne{-AQq(fCZ zZDp)1VkHri%9wz8=E|~u>B;AHjmfYNuE!SL|2#ksJ9P&`b)fGI`s%W34M<0=Ex57Lx1iS>x{NVeHnu-$ z4k(BLNi=rq2qpn2pt9LKCa32Lwx*w7V?B4%kY@ zdsDf!EbXkoyrg|phQ6CSTQUMctVI4!^yGyr`h~}z(K4&g5Zn;^4GA(&`vg><_oN=s z?T^%B!t4Sg>|J8_0Np$*J~J?V?olHIT_q0W(&S#_pB^K`=(&&sfvvMqFCBxHS#}m+d^UD@)@>d z_A19iPHF~fV#LMHjsnK=07*`RqICc%sLJH4sh)O`6)gp$2Ni}DeGE3YncV`8>*}A7 z(;b<_ku;TrZ^(m5*DuWEdAyCA+`-eFl$9tVXNUF?u##tZtjSGrp5J6>$##DRiT;yjF&CoH2&w<-9=q?WF?{ z{S?gp1Sf)jZdsg?SC87W6-_&Fb$gPwD43YWnPk>BX&)R@PUwd+r$x zuDq;qZ<~duP}e-Tr7Byz`tFWO0_l~FE&b|qFKL-=+nDVxal-@<8C#iPgiVG7*1_sD zz&^f0^#(%?ka3Kiml{(#ytJUamg|lqOKK8CD2w;OpsVASHZEROxwRo<r154iIBJG+{#*Ohbhs#q$r|BmeEjio*e zd&-6#o!VVjjdH{h5}$F=ibN3v4sqLJ67KGGv$1-V?l#7jo21H7dG z@q>iNF74@GJa$$8`U~s2I>1S3?_5jho!TXWJ#9^%MrY_5DkHQLq*7lgzu(Rg5eF^V z+7$>A0mnfpXJInsY^82KdRXtc?{3|B>lt+q9oJ*kL;AVijQ+`bOaI%IhW^zR=|68| zdU~g#SK_R;LPH`jTbpd138ZV=d-|1UUerY4ZykCN+AgT%iX-oi&$Pa)a zlcopLa6h1O%XDV(s4QfXnW}lF+ZG5a22^6xo^maBOuMg~Rk^c;+Q&i&YsB#n&s7^g z{(Ih+sQqT%;hV|)EAjq?$6lGq#>G#>a=f&O@~bFzs@X(MQp6|`<%%U@+#0Y@k&xm z(2knqzW8Z3ROA+XYoUD5!JoXsU7qxSeUeLDj<87=l%jh*?>Z%U|C7QO_aXswML+Yz zx<0cq(9S3*76wmCZQuyyt2ZNlwJ>3w=p1}kGHRTdBjMMr|F#PNmEBLP&7`z+rhHAh|DwYQ4VMnp<^1K=Uta>wu#r*PjW z**_;H#1J`Of_&7R!%qg zffxs=+#7%hC|v{wDa}f_h?TIVC^Fq+1AzaMu;)*dC0BJCVV z;5OmoNbk#2$ESK{?gao575xFOKqn>opj*_HDB%N<-_)C#0(JBI@0JatO-#d$^QolDm1Dy&`AXV`8%wY`(JZ@wCp2ye}mN>fy zki(e4k13C__XykgHqZZ{O@(jsCubH^;TT@DF=zyzEDJi+YO$j*6|vAbnwHCHtzFqv z|LiNgyLDvHg;?H{#rO~Ru3bB%Kcp-CA@%b`-F)QXv$y4De{(qKH!rVmX~c=mRIR4S zPst2cjtLa@$v%6QoDRitU*ZTh6hob9uj@#6o4_g*QE-W(qZ^5QjBubVQlrO$ZH%uz z5krZsor>H6&`3I>RW8_Bbvk<@b&s068kBN*FBuZaFg zRW$O37(5kkctmh}L+KM2clE!2?wWq_nQg6%bDSegS|5zVQ{J1RCiv^TU5E)KTvLJc z;HJ!-N-hE!Pv}ww+vNfs7wD{v6K*6>+;F>6Tt5Vo5m3Q`LdckWf~o{gHLnt28Mq)b zli<}@UDoR53wq?zvV3JJar6jd@56(qgvR?U60XD)05&TQz-8Kp!_}sa5=f9@cS0V# zpcA^7Z`9Sy&;_>!zW@Lb07*naR7FV@JO`HP3WpEt96k&$os;;EMUAQ&Jv37Mn;RP& zENeH6?VFSh-z2`T$@Zfke|oABD*uy>$9Jr=5?x&1R%|lMLUh^Z0%xN zl?LDk1kYH_aZmSdFDqxoG8BnL6j5+=t&>vVj`9zff=>aDl5JunFx?o=ziju?tmZ!8 zg5nBt@cco>%MERd$S6+ZgBbYK?v>6j)peAbnBEv0bN@}D5Z!QRo=hplB zrw?D$|M`UtePL_N2geF)jw$lv&KJ$OQ>LBc1b#9`xPjv-!B1RXJOGN^25{3C&sT4B zRH6^pZ-FDGe!#`V$7E*EI!MNtKyX`vV5UG|9e^2SwxuR6PWNh8uc*tr%1*Z{H$!^R zM&8~Y0BsZT~sc6ae^)MN_>5q5_Ob%Kwfp;{%^p?VYc_zJRn zV0PG8U*cVI^ZXT!31%^&Wo2QtIQrAsVEiXP{_&6JNcl~@-CEz&4sK-b|Ho_Dn)#7x zQGRH*)3J+do7%~Oy6ne&nT{S9IKK!YUx6aQk^+e%*2rokj=lp*Kh;^&u@0+JS>WI$ zKra{y?JANw7)tiR6>K@2p9iH;=L=8S?JM+#%9vdx<0tBiE_0lLauD_6ilqAh6R$Cx zo4HZ-U@}e>*{=#)3p8>FdWWb9LK-u^mEKst{KB^W;b*Vuvl}Dr`O7yX1&vB%CJQ|+ z4)Vz2h)BJs4ilQm)63?M1P8eN6gd<6hDT(T4ooa#_!sCSlF}O#^guK3&g@l=Viaa3 zvo8memZ3jX>1wD0RG+GfBZH-SE_e#%&7dg={%gU9T&CcegRznJIZrsv$%WZgqI?`OKw`{_!I# z`oErC)$*{EJF`z9B`b&1_$o>ZY0_8|C-ErLo=JC4S5%7!E%wv>vX3WX zugGA_GGewU7NAMWij$Y72Nq7KkyayyLcmA(3rHz#z^c`(X`W;Hl8Lm0-1KmNi}9>@QHJ^J12e9O7Gv8_Gc zi}J-;4VcCDFiK2;M9{D*m8?dk2N5e#WXX>xEut{AE?<>Sb~iPT^QPcKnGtX$<9#Gp z4rAdXC@rW+Cw1_ZB~-*9qrDD}A7!?Wi;z-lo;Y~M!SfEDcOXv_C_N+IT%qu^v{}@hGgZw7+A(&7-`_1n_%cfRb~B|uL6wvb!142yrf!}+tbjhJz z5=0`PJeb_}!ge799cwgY;L9|Qf@%k8t8D7hwzT{5%Nnj;l?DT=l*12Z!{Og0n5Gfr zn{xl51k%rZ^7-lMTJ`@Iit;VndwX_qeNC$k=~V{1#jRSA4we!9K%q$hNGl(+gG8}W`k1Y-avsLbI;hX zOYPv{DYo`R?h{_^WkG8o0yN&Pii0(QjIaG-)pXuetDt^oDE-cbUHyMQd0xMLZJ_OO z5F>Okg~)YdOYgy&{dxGqg-edO$&2?(103r-syfTPQpy*Wakq zPIBOr5*;}0q+aO)C4-aM0oKzfFM93(oL69yvSFc~RoHG7TC4}%IbBue?b9G&i2y!c zkvhalfo$9dr!n0;y`8~%7pi5 zJvMb^tI+n#=QLcoCJhInrQ!$jVe#WJ#+=^%z;9gm51i*0G4$W;ZdmijDp5b!<$Yy& zZ9`W&1NEjF%4b^&S&$#|?vR!!Dth1)14ULMk$Nx*Wht#lky$XxP+H(r==RQdE-}k3AwyZlZy)HjiBJY z4m2`>CgZo~pzy?tKpFz+8NU2&i*G#37@)7?i@edyls>h#9Yc{Q`n`3Ri;=y!9aoBCu?Ng8UA3|{a$V}!wdISRQz|NVSi?2eN&gVcC=ezE}3eo#=DW3p;XgO9yD|( zV_SFdo)p>MMgI*4lr%B8D}Q1TH$bBt>Ve%WYWnvZX1PRzQRI0~F{Z)ONGDcPGOW`j zE*!fD-c`(kFuBr|D*RzOXp>S$L10FPDjHCdD#7GO-=W`@_p>*O`giBH^iQ8$(Wh31 z+GgMHQkO0hEmGgebdWl4IKs}zy30;LU=ny`%1bHnz8&X~5RzObTI)-$L;~(06*Nvd z=3u1cRK(xW5CtwUo!pZ=Z6K8yNb)B0rsVu4&mG7v^`+T?$rxh@1c0Y>cCul*n=M`j z4Yl5y94x#uXAF&JBR2BX3Fh;LPEXIvkJ?KDr}S+bX#_loQaVOA1eb^w*ZXX>Dx(|; zu+jm31yI7&zr(Goq01WsZNBu12Fq8OaC^4|760Vo#f$ePf&Ks=u8%)Jc3;fuUwmr$ zFpB(eS&nbn*xAul0%;Xx3~CkC7v~hJ70fB2f3=yB+DH>opa>v`NT5WvOOZf`%yh~5 zQoh7^SVN_b40d&TZ$p`H2VJQibO$N4aznr~Bm-I!(49#r+o%f!Q$`@k>k~l2jLa=J zu=X#bV4kO2PaQHI^#EsHYWuyOUh0nZ&z@b=FTS#;Yonkc@|Ex`X-6}<^rygp;5M5C z4_Rag%opK()L?$_=lBKD?w!;d(Y|xVyvT6*a~oQA4WV zXAkj>cZ90};0)kS6H^qEN7OByT(?x_lyeL|=G&5YjH9Y%gwPCho* zZAxhnsdP9!wV;`LGhs?!VX#@rr0Ov7i9#MQZch)M0I%6vRTWwYJ9}N3f@us%LC;Ym zI@*XWwt1#4PV)#Rs|`E1&r~b_?CRC4H_`PU*d6}BIDHADpZ)CR#Vic}b{5MAcX+YC zw!WdOI9tD7Q$F2NeR@g(Wtam49$Kc2YE3b1?M5h#w~4eGk$P}o@dM>Ug!+mUOces{ z_V$XVeU|lLgOC@U_Fyt6;YB&%l?g3(Z1Dsf0eF)MmV$Ic zT}=6UFtrJ!-#WjkfBJ=0J+fJ7L|>6U7#2+O?l z1|J8KL>bewq>q$=CZ#-}qBR-6CuE*W5EEVG@MTxt_lOCnbQxS3iQ?6V**+&vf|QE# z%M@rcJ2K4-g623WI|L}Jip2l{>6H6q(+>nPY%H1fFWQNc_bnJg20a)uCtCz$$mL8t zC?Y}RP%_y$L}V4V^|}(fMmlQ|NX^`o6E>FWMvxSkzm(HpUX}E-ZFODQkv3krnBJMH zgS|JkO#j2?=H{&afUfWd#OI6HeEj1v&tmaom7@HSPPc0-s~ft!xvO0dlzMft8ijDZ zO;nlowO6ZkR&9n)0EqyZK$(p0%6AaXgWmUXrHn1p;lZA6+qxoSC38hbW?F$4$~9)U zjPFuz%mYY#FofK&z9L1h3GnjNVImqfAhTcIPe5?TvRf%E>QBIqc_MzDW@}&p7P!Pgy6RUnhscg-E;x z$m=>9A*^rjltyDt_Qe2-`(PNUElg4%Ep|=SGEP!Q1TYi#G1w|BJ0)~%@3l+CtO<=x1ey2GG(vPLLHZC0vk^O4jz zXqdbop-6&3%s|PS1V8#-rO;^$(u-&-&}X{mc4ae*0JSPd@n{^s&!>T92H4P8Ze) zu&qt)?d)pEx5qf(6qa2^V6tuG(p){)3~^k~3T#p+f-e|bf$a-cvN8TpqRTyhXJTbq zd+rsDS5{ipaqp)$uU`JiM<0E(qHpkGnBO3WFKO;uI>qp}m=$i>*x1rCaE135-_pfe zuEy+?@{DdRPK<|zxXGLPS*FX47BMhUMp|7wcoM;cK4pa+fOJ#uX`P_Cdv95-!Jfp5 z79Hu|VVsO8&=U^s_!^I8*Re#@^(@0!$mwIqK>sv`65 z?w))Gb=gFVNwq)Ci;T_lN>`%s2Pkequ5>vmaL`Y}rIt}iZ1Ro^f{0AQMKb%hV{N}K zp^T>kiNG5m#w#wL(c9bG8lkfi9VK0XzkVnA_9ZF7(hufJN)Oa6_DoZL$N=7X2395i zZS6?vLf8A11PMi~mDDjvw6JZQIJmrml3m+U1zC1S<2>sq&*6IjyeVsbWvJ^gY+E(garh$}fU$UKB}YPY?)smKgyNRyh&FQ_97 zxCQM*Qr&Q+3OPwaQshoqf6$u5pAjh|oPF#L`&223aE2`Edg=!CR^sw>A}fUng=cW+ zsLqZDk~Bs~`>`UI-OOY*0l_yl@Cx!qA;%;~yHzpy3zZ`fvQa-fJEttGK@k&wE2A1& z)C2Pk1@hV-sHHU0&Jv1T8lT(0gkb@=Ok>g^0`!3$b|{xRyLxKVbK}&V19!iCXAF<^x*$x)$Zc3SYBAB*DT6^}K zw6T7?Q51h|^U9Uu2><)OUGKl|#y2*^(XADad`D$m{8znBJ6l~}*Om63Hkf5%rKZ4k zt}#EW;HwdXF+eCa!o(F=viuH#4YpXjeip-_L+M5aB1(0d2)(zV2?+*FnaQK{FEzBO zjJonba>tG+FC&o5g3OH2A?2B2_$j8$H%#YxXlX`^)SY5ws%4p?|9C(0%cb+w{2`+b zQt~EGYq^JGsjbyjltdu<50u)u6(9W{doWM2jQ38K4M2jVMYbAb9@tkm0`1te(ss8X%4%(%n4{=08MzBTyd@^w{?N755QN;5%wE0K@E84=`lHW35Z?Z zcQ*z-UD?~!EBM&iYs-4&>awn`tY~|i$$?KH838oI3U#J|NpYqb>n0DhT$WhczG!skN?7GI9OWYgl>6vSL-Nd zTyMxYU1@RLT_rVnml$B*a8Y96h#I4G|NCWosP`)06kM^9_U=p$kTG+WxH3RnZc)Gv z5qx9;GHsN(E?4I@CQ$Ga8HNaec_7iR_v~;eM7?vNsy8gQR7I%)MoV$5*({R z89(B(1d}J(beoy#M&PmXtzTV9I3G(Aic*r#o4|X*CVGyV{hRjtxk-{5rw8TKkkoHW zV@x@(c1WB&b0eLXulEl5q)g_EZv-=-Xt(8#I_6+zA{o5AiNp042L)pYCVW!I+d=Hs zpfHIsz=}@cU_p7UC9(P>yOkneY7VD_xD1R;BH-k9CXM(&$rh|6cnV+) zxQs(==)vTFfyn>*P)A_4cbaizSP=i4i@kW}iMJ+U? z*}BA67b(v*A~R|~>muk9WhE>vV z03-=AO~G`LAY!)$Mqu^a>8Fa|D}`^ib+t2Nw-*K$}ep29X_*9HfpofCJnOY3kSYh~|a_(iq*3m zNx21oaZT7wo>ODfLWevuq#;7b4V6?9NUAgxqp5^pi5(-55e%=NXI09SI0pJRf+nT( z?|DHd=hi_WRo6kjE$OOB`ywgdLv0bXop~ zD9^J}EpKgUleWESw!B`KHPPuHgCR5=ljy`l`DY{>pxjrTKYbG zEa>aJzU~HJj{k>$_t|5yDE>xox83mfq74SPSE*{q2eyp&k2-;ru?;d*Y0e-YzZQ?25@5}VFrK#wt|QAkp`u7E}PQXnPcD>66J`4 z82k*wnwc^>o?$9|-=Vs0@gNcx#y7JhRRy}koZvO`3Tu~Apco{g);pcZ0R}qJKQX5o zD_fUYvD<0OFKT7`p5=MRd2@3HUZ9;Pa-^g{-_Zv`Bcsg7cv`A8^VC2A2}3s3#?>se`}s9Ih0)e=1i+CB#Z?h5d~-`Vxq#JffNdCxRfdT`#a> zL4M3O-F?I%txyD1dpOh{LAA+A%8!~ud~IMkbm@}AI&PN{RQ;~ zXEu20-eiW@%5rt4S_%l;m}#lPpybYg9wP=Rv2KCF3YPJ)2M`Jw`*#BrRqzer; z?-jJbLc&PUM-)$1Zg4lD90y_q$+b||b2BGYq|wj`eF*x%@n?WbuAuoW=>12hbjMsX z8Pc8D2qX!wG2^3N)L{a+&N2Og!@*kKArwwE$x|>&8Kp{)*4I`ju?Kg-!1--v-i$0M z&l{?|1bs>p+DYZXxlf94n)K@|$V~`R19QQkOXCMaEl&_Ug+4rS=KGjbbT0du>xtKo zdB+&xgahN+p5k3>X6LP0zm}(TJB~~L3C>O(P19Cg9+q2Jsz;2_e0^OHPjwKVB z2T?JO%E`Z;FQ7|Vfq2*l+ZeWw_&}t8dEQfk#aAZLUi*2kkJOjcm*B?0a34mb0|L#r zYT2=)tTgv){%!Bj(tF;g=?C8|J91oG_|>(|4K3rF>)Tt}*xP0m+f#SY(U5>Eop&Wu z@9+t&^oAO5tv^uB%fEi^+_}1s@oNRw(br1*W$89gzv&j0#h>(9d7asL9mDTTv(2nm z<=eShv#F3}$<74^bMW99Gs_GKpdl}jBT}Db3Ra^LCw;qDuj=uQu14~92W~SlHFhRr z$=Te1yD{k5){@$lIzEV5=|dPQk{SjvGmf@{-pZlEJ*-4&QnVmBU{-e&{6R3)9Bq~` zys}E-50X1k2vR9wqdW-x-Kqj|efb*wj>%EIe#zT|1}GgjxQX=bdM zp-HF?r2I;9_yePC7Cr4YYrJ8+ zRRE4Jz25T<*f8OsDcGTuyvurkmU*V?u_HSA=7)6bUGLP~gKtvfw%awDo7EZ<#3h2~ z0*4XjH`aBY{6&YYOoK059{l= zTrFP*`4^M^bi|9h;|~`7{)yF{9j!6w&8aEHMol@(XBEX7t5ca2TWCzZ|9k!cv&3*8 zM!ZY;%vew!w>#Q;=2?}@8s|C#z1%KUVkmA!9x)ZjC?P11z>(nqR-hvS`r(u1B1&^d#8fl*f3V8kxCB|4;XwR1rX&3O#=Fzq@|+cv1QDILbI;= z(W6>=-TgZCf%j<={J ztM$fHPik=Wq5`Yb7Ge>jlBWld5a|Jinf-OcIICS07(bc}@sAM=!lX4~>>(t0}s6!6jxta~`4&w55JF&0z%0L}X!-gT3 z2am5pL*I3-E*`cGPL_s!d?*5J0=EK)cJ!+Bkn+>o32oHDKe)6;>J! z9(H%w+U;s%cUSAc8rxfkRnm3db347BI_zv#_c{ul-Mgwb{v$EE6#A+c+WD$9uSrnU zbaFfxzIBU_uRFY?w`ZE-JXsz<#;oo$O`i{Cy+L0cf~LbV+Gab^_8FkFrylQ91E9OM zrsan}rOvZokU<|&dWjLPbVj<^DcFr+uH->RUTpcKHLL20xl`)VuT)9|S_0^>0ohVB z;68ZUG0o*AW57EMvw1+nZ1&Vd}uoA0> z5#)HP1s}SUUyvMRCoEFE*W3Vfp3poJz4M`(B2Su8#*isbiEgN&jl3Uy$>j_{d17Ct zK7yN!2O{_i{f@E0z_-<`NTuVbn%prZ#xtYc(N3n?&=`+V5|_C+lqbQko-r|U%stGj z8lblk`WphC4n~Cry!#IKp~knMx6K4SP%~9nkpf(dzMVUaCB~Q4s%jj^Zuj4-`PaQp z&0B9(<;W2g^_u!@+xqxVm#x{}=DK!Qm$iNAg4Uk-f>s}SMAts`DJ_5ElUo1mXSMOU z&uQbc4{Po5$JD>U|MoiVw58i3-R$gXg9#-8{<+HpzSWpgcVnZK5Boo`d-?L5zJ@D& z4K%MwG8z`|?~JLP;Q#;-07*naRCNYNc2U~K+>FKqk1|xlGCaZ|dz_|pJ<1854ufy+ z?Ww~|&|@3u!P7l|PV1ligjRm-S2cL~C1nJWQ0@VA;PLd%NWC$3!?q&F~7+MZwQxo#8v?kHiWgLF|9l;?UWbuF{y!?)mXei0sipv87zacldz1FF`WacGl z@+3XT>=T%Qps^8d*3~(ojxVwHK9PJ0>2os>hw3))a9MD zeet~Z@R#i;pVZc)k7@hy$JIM~RzvE>1Xw{p6nsZ2`8X@anJ+FfZETfAEAbo<)1oI{GzLcja=*lypp7L^SPUohUkSl_Vq<%+yi=cv!ZyBnrI(N>uRAaw3 znem{(nJi=ybuz<5N|!kc%97z6rRI=*8b=DLY)XVqBY}|u4H|6icG*shSZ(Q9PUIvG zPVbJX#4}-#ZIYVV1f7VGm((Rm^pF^wB%b8O1v$@BlQhydMQ;;Gp)r|v?N9lG5{Ut+ zsOuNwxt^!i^;~q?8o6WP+y(XA`y>$xQ{XwJ81^db_4i zotF9J3C?f#5BIS#tMU*T2fP=1Q0+2-?)bYBI@!tV8u$Bip<;jB+k7<$Uyb0k>i_;n zKV2UUM{n9@720lAnUPFm1~DQChB#M`=cWfW_x zGU$BZ#@;xx68YdFt4SItK~(}>6#tp^URs3;47(a?dTREB`pkaib>Yal7dT)9H*=Gb z9j;{xC>6h_r3r0Hu22GAW-?8#l+wrpF2JMCN;*ZqatiQD7gW@FHUr;a<=tWoBW5;+ zt%65MJ&8(x(5^%lcM30;jHRUBQx6)lNG52N(g%02m8}V`UahFgXSB(7ejT~q7DY*z@+)Z zae27~=~ukNSFHUCm7Uzq^v3bnW-ZqMg^t<#4%x;Hn58?s-0eL}@Oo2|M2OB(WVoF=s%BCxSo$5i zF|>xG8GMY6%uK=au=6rxl%kAGfCC9-ae*Tj$T@R!V(Nu1C)rZ|vtOMOfgyazN5)?| zHJB*6PdE=mGIAc1G?FI=&;1MuI8aVA+S}1^Fj5c49J&4(|2{J$Gu4=%X8G!G-sCzU z0r?Wz9;bDesy$?IhSHcpba_wOV+GnJc(w;)Z4C;o5IpBN9eQkB)5pWC9%&uX<>>|O z;oMz#`6;d+Jat)tI-6VCWd&+80S}m{3SJ4ss^NYBd%6AsnLNu>VKS}5qt$F^Zgy6O z4jow4MU(64^|n-Gl6+bm-(Mow)NZ-SVb~ zbkBR=r+W#Qd%yF0bK==LN59{{t{E!aceXpi?FPf#Vxv6Q*wWc)JY-x^QnrXE( z3wS_Hv3mOIRbz$9vkW_!n?xnE^jIQ(N3u~rs2F|KUmFV0|GsV%wQ;H69<01{R%@UC zf;Jv~QhU$7pds%;yrAJ|Is5rsxlGTc}x&5Q(5vMOby^XE>b zsf(>c8ZcniEBx0vP{S<-9-SUYDQ#w4`GGFL(VhJLEfPctj0%Iu?}OCy4mgA%Pm4gR zQ)e-Atb#?+3dfEFXvT|cUv0LosXzKCX;%Pac#GGe72Gg&wkUdI>t5%|J! zl!rL6@7KM~QwRTg@AQcd8mBEuC;DPFqEAMLY$ZuKk&S_74n&ZdDFu~}AwfuGquwM1 zMU8nM7_*J-vgI1Gij?q-)QQxCcWPj&7Qr!4d(8w~^CJ~HUu}b@d*~zME*R5JUe!6s zo*7GzkAps6R&|j>p<$z?jIC8<`5f_y!QV}W^gX8U(#M7Fyw5DlRb|zfnqSiK+wat! zZ-0m0@kf6|-~Si?lD_{h{gl4r&;5D5=TH4vz2lGlh#vf|@73$x`+nX1*0<@_`ybHK zi4$s0iXSO}o`nOQB&%xHdkT64gx2NXf%0X0iH+iYs8(a==Aj!kQ-KyF5O zMA{2}*MX|pJXdfo^c6`h$&<6$Ljtop$$_cbuCi(B*`QH&}RWdaR=2j)Bm3iLOte6_PX^Ofj>ZVd1W%5p2 z&!l>Y^0bjz;#IXmIsJPd4iX;9Y#muOi}8TDXsCj1b&<+Lxl{5GVj-=iab}D?Ah*0^ zJjt7xN?x){#@OfhyYIowghZ_jdaAY1HW|7!lwvSsh%!k5c{XjJ-7r?9O^FTM=?W%> z9dz>|ZC)x&*PtBLtE%Iu8F~~a5(a$*MlE!)*sSRAOjCyz7IgIV8Qt`{*Xx1r_@F-c zXa20d_a}Z*@A&>7(!FnehmM}PMOj``!3t)hk&IoC+~1gxY8KS0)!DYSv_#Mxo}bs@ zxw*9J)N2hj8cod-TyrziDX12vXSFyrqs7)VDS%JSH>Whq_Hc?7s#&k9#eqqMfD+>_ z+1};S(aquTl)l0hzCztstm4~I9Q1i9!T_%5iRFwoK_O%c2ogL1s&(R^p^W#Myi${8 zh~?&pkYWH41Tm!`P_hsnJ;N?yIsp2>sZMtIu&~br2MsmQl&MTck+ze7h;WaZ#YyRb zdmwl#i!|!RGh26_@}bv#2>hRRtOZY0+tGp1t&4i*vf4 zuj_B(i~Czn9@jh1oYs48J)`&CcC+5^aK|nBj=OKw2k*XJ-+9j+`tEyf*LUCT=^gqm zaNm6|d58OMNbk9gx?5>;t3Gh&8NKh0(|XTsr}WNSPU#(IPU>wpozz=yI<5y#9@XoP z9nyVA7If#*oNig1*6G=%j!o5d2q&E-BAe);N>JvRl!vHb(*CeztRRE+RgE|Z=(92u ztehnio9nj5mMs0dqjU(N{R{n|abLOCLtjHyZqK{kyPEDP#2sDS#TPG^SK(PAACgE$V6tA;VDxlsIjnNqYQ(W)>QL0$RXO8nV3jb&sZC_w{$Dpgt6|tw)dO_G3qNJ0BfyKYmnqo;a$zPae}f1fr*R zpE|DlPM^>N!0XPO(i?9%t%q*A37DjBCa~Ue$4z?Moj2+2x8JO{B{-wE-FjMYzWJmc zyy=7Jt&0BWO*8r{Z#b;K z{LoSTiF=OdevZ8PYNF>awe{$;*Yx}sUe?uTp3}xNFKF}mv)Vm(Nu6uU8f@-JyhGKa zX@*r|zTVJcy{W}oOAD2{W(e}e_O8Ok%j!MzEFWMWoc=^Uap(wVJAowaPd%Y#lf&(f=%P*?U(`*<59uaWozn!wnd3)vhM+q`5S}3b&zv|$`G{^lepqLYKzC?K zrwQnj^nKjrn48m4(j{b@Z#LzQxWE=>vDMHLjm*+2Q^RtiY>gOKS-pZ;otxGi0g_;TMhgV)BIy#i zCF&QZr;%kw^K4b-Thr|Sr!<2jws0UnF0SS|P8C$mGlgzjvD;CP)n_ndf0mcN_rO-~>IzL<~38n&DdNBI$OP&~Y^%M7;(oekU4&Ai4s3%s2 z`uP{y`o(9r_4rz;^-)e+xrP-jmjzQmj@X)oWURGgW(SRfICw64D?GW>eC{6ZB=S@MUmc6Y4Qt>k|l9Erc?-0tl2U0aL?p z4fdXOAf+s&6^<^ULwmf_urC)7SvB10BaZLjGJ6_Likzra@48Fbk)v{_j|2vNQBm## z1H^bSK}l7i66cN%taJ@{vfMPN`+YZYjut!|T$Tw`Ri}>{ z4p_}|94S|BfkUE>;@-B>Q8e2!UtQec>TxJl381;QLTi^}@~$FVw{7)xDet0h^p5_= z=)0iZsNdJo?KOR9HrJht3wmT_pkIDzN56ZyuSnK7CqD>q3DCWTA}gpiX( zCRU9KGS(^;)fiuc)a7pY7%4Xy*X@T+=sWLuv)*~z>-4~hTXd{7uh}ZA787~1QRAJc znzpVLPTadUHw@j2ciB z-mZuPMz#u`%7X*PRg45jWQIb$hMWXoo$mzs(h+$OrFvg|oDKzGQHg=NGRm@m=O~p8 zoKR8;RAP|9A8txl###a>%O%Tz08ndy^F;(DhytS&%;bD!YmNF!7v6=gRnJWY??+Ag ztK~tpJW~zc6?j(;95f3UCIf;p@&THF(`3+j8XR{32_F;!fIL|sJ%B7I3xPV*^)}Fl zgbT_thl~`Uk36GKWN?|PNMN^CkD_O-CRqW5M!ZFNl_d#R((t&X+X3*w|(L+n(P zf#5Uw>0Ze=OPNIKU>0N{Qvfn#%o&42m3%cv_B=!W2{gdnzI0Lx%{d*PJ*+zp-=cTk z@kYJx&Nu0;H{GK<7LV!hG=bG@sa36G8&k$=s5;P6^Z2}F| z392f=<%)@lDp_tzj%g!Gb)iAg0T%J6@yK#zoXpkly-yiIB*#IkqDX<_?NXj#ir^v! zbP%&)#0h+RQnKGKdC}b7?&!I8)Yx)GoCXVFs9Z7v%AB#j++k&^^?Nd# zw8_CWfWi8j8W=st88gF~Z^#E|1NfBE%*;~zgoAT1DI}Z{-e_-T;3P8xbVJ@K0|79J z0(SsRmT;sB3T6|?g0f)1B+bFQ%r2)x<$9gh0~X{zF_X!wgqk;*oEKMc(F-%K%mdI4X z)U_PxUqCd*0ffvH@}N8mte7FCS;$hFo0LH_U!T?#hYeBil~fwQC~B344$U6Y{U`3y zTW-2n51qVAcN1_&r{*+`A2#3_ST(!n&a>TnN*k|S(4gH>Wa2FuN5rSZq*=Cib%?{D z?Dp45bBB>Q&;b&U$Mi&puW>{58Z}=7x)_grMcOo!5%LQA+M4oOP1Sl`71E5^#Mu<% zLIuh%-T6_d5Gi^EiizZ{UQ_MN&8pvXzp}XnIWCr{oxzm^lS2v^FOSCzekArH5~uIw z?v9FUS2Q~Jvc~7mDqg;zVY{n;zuMPhZ4peFgfT436;Y<_h9SEw`w&x#PzYvbWW=fl z5Tpk!DzvRivb|kptay&kz`20~Z9*_v2r?rDWY7XZ@+@Eq{D{ja`7Onim>F1ZPaVjn zJLRb(H8UA~INnUOGkG!4X8;kvWjtJ-oO}S6g`nJ1AXvZ|MH{;gIb6m}Km~^cJ!b9! zwsKuWiSftl;Bscn(ziECy}4RwwiqOv_ICRkF0bozFE8uS)uDPrCQY|p>1kAfF~E7eF@VVeVz5duOS|k9QO!hU`H}-44d`{QC@SHX;U6m0~^L)-Y)?VkdlC5mD zrpC$Jq?rYclfM-zS-JHUuJ9G=zG_uDRap&rxT+9hVCD}5PR^dTiXasR8&E`vgO+UP zTo5flOwa9(9* z!hSLyf!T`0(W;=WIx>}P?QjE`IUOb>HFFLIPJr=9x5&w>JjE*$GUX*rQl3##Bqb4f zbD+q*PZRf3Cy>mjiIPY>OM<*6GY656fK7r%QpNx>Q^J{<7=}!enI#a14deEndQ5hG zARQuzI)pJM41`l;RTA5v3^-LO^ybP~bIjh`SJ$+0?wXc2`zo2}#srbKA0yug7&5M* zr|@I?(@@fgya!cD8WTun^p^!05JHB`nI>t_L|~I|OXr(2;De$hWOE>BLXI`iKW>08=@-&Cr4Gvc7n_HT>a84(;R&+}%(~(mrRbN58K;WQel3`G% zi3FMW0$soR-tQm)hvFBioIVlci#FP2)@FG$4-_!2+nX*>ZcvqgB%^@^J=V?jpLz|QjWrD^!=0*#Pe%#499&P6AdfPeP?&kf z5?z2U$kd{$=E2O-H(4-}!PCqnIS8H;KpkZKjuV_`f#`ygqBD4Fzf~kH0Z);J{tntl z3B1yk+MuIJs_X41-N!_SiZub7lqI?B2_Q7e4kW2QrGvf(Z14P^6LeXDM;;K+id7}) z2bm*zpA-$7_-^3Hu&Z};w>5qCCH2=+VA*_4=g~I>EujNp?Z^E;aSweP?vy=HtqntX2DywRl%Dv=vLlZn{U0RuA18f-i&J2m@m^O2yMW=!ipJf6x~yb7d@k4;_OwBe zt#b_S>DH(x$G1JW;L(Fe583<3;wu)K)WLR7$R3bA3qipG5*R4}-h}@1np(96xd^6A zkaP=&D0VCwGPJ&AJt^b;r_z>cZCSG;o9-&i4R!d`l#(Igzk9beQF&!0c}O{ z$VLxFFriGz?S*m;$g0(VpMEb~{#DzGe^+f)f3q@G{mq!`*YMqcGcfz!pl{&%gp z8nbokUwB2Gryf`T=_gfOWB16m&6wp3Iv9(tq%>GMz%Yzg?j**FXjw%uR1hPVWtqy% zG?;1Wl|zgA_~MMtHflnxD&gfa%bCH;4pL0yu|}eC6<*+Bp#~3M9ZM8m638N8av;Ny z8CyPgHUl4VmI9~o@s!57eRu!>5CBO;K~x7RGkFB>INz?O6_=rlP9mMTuF^2TAxaX7 z0V;yD=tvyijg8FSkLWKZC=*QtAEEU=hOGCt3OdNQ^h!z z87whgfpSVxAynWidi~a0H1ozcs&ayDTo%#*#2`wbU`yZ*I$F7`?hDVT_taw=zW6Nf zJ?jcMrr}u;ppoAI!|^gkj`Tr^G4SNh^E!$~`Sg(ysAieOemAQVSedDVQJ$Qe)gyes zyjW{!pbR}3ARx;4kpj;N&e#T&I9pD%*Mqdeium}oWqp2SLp$BJW-#h}XscH4>6t5+ z^_jC5^ywGR>ERd7=`$~!*XLfmpvPXms3%^zqNmPX(bE@}^}^LHUF?~bt*Mo4TFYTd zSNPs{DYSG6+-2aZTDlS^aLrokR;P7gZAV{t@uHr3@w}dT;ewuo|C62vzCb@u0#DG_ zQ+(ZjmY3*_jb$ATdpcEZ>qKKD|LZyzwzhO>Yg<>hceKoD+ZwC>)^1mAPCI+N^K>}b zYO~erFxCRy3jLQr1jLF{P(Rq+)z-$Ap1X3D)n}j`R-rbN%U&@gNJbj4`i!AZfM1M? zk%rU_IiTnhP<;<3a2@RKNA6uFn;w(G&@dw(^cy#w*3A9)Y4*W4Y4)ve*34VprXz28 zNT=?dRXn^c9odx~?kFtw6lVJhQ$vMjp;#L$22ul<+zgxHEHeCrqQpd20-LJnW#!r# z(;x3jK0*6omXB3gE{ouO>?Ak^Tp~chL`0Z-X~d!+3c2u89g{x(+okAu^MF_P?b!%2a-&F z4=7)0HTCG?ydEW}HY(NB+~s8(?<9Z$L0PDx*iuyq^_P17;$?l};<6s*C3`UHs22J_ zPiNP!>F1t&SwH*v7xgb5dtU$ik!SQXpZkLTkB6Vqhd=#<{>djF*FXBiWBNzG`+5DF zm7boQy;+|MOZv@XO8;@x(tjMb^dI^Spr(J{ujtphxqiJ{p-rAxYbcBt1a zayW3<&`F`qPFI`Vo_0EY?e&N13`S{N*5&}G&*@!<6=|1X=`s2dT8RbD$qEt)l#)*Y zBUY_Ff^dUieA)jME5Xpl?j8sO4;m)Zg2}ODB8^OTB{0SfM|kpxx)C%(UjauW4S+7~ zI|Nyu$*ytF-8%A}@7LTr-m0nBzYf2-Q;joc)H-oQw=V@vH}U*RDa%U90OWI zc(^A-B#)pSpg|7dZ$_{R@SVbn>e{B!1#Fno++Uz=7^8uvBF?nR0mp!SNKn*VEvSTU$jkD%?SZzsW41+w+KjJ_VRi>Y zZR3>gxa-XPtGgYok4v3+<3nmAYX_R;OILLMx##raaPA)4kRG#Xk8N0w{`|D958j<~I2xx9j(g(@vP4xH z6;1JicgJEw74%`jRQPxpL%JF8u-lRUagjdq?sWUwDWkeLTcp3_Wc>l}LcR14@U{u0 zwY|1hpzV5}9vs+xOaO&EQ)7Bg&85StA33H9y3J;06>3dI^L1S+@Q;y3>Jv~nq8sS!-N@VbyUw8Lvai9XBbG!t$E9_}d+koc4ERUsRdF<$HrM*m=Y*#F+U z=I4L)t&5Ahkfa-Rrt}+nJn_upr7W-f%NRnZAQ)UxHdR;c^f6^9$!CEvPUFAtG)DQw z?zRSJpI7_yk7{(`yfPfY1#u+_1-P?&-cuhHs2k*CXxs^5LKXf9vLN~Ilbu>vRF(Id zQw`I1EmrhS9B95#l^fWbxdG6>%xEX6q+P$7=@nMXhYugqi*tw6A@DrVMp;lN%Vh}A zBwr2(+TPs65ytWrZ=RDLH*|s1tq)8_Am+82D%FPaN>e#$R%s}!)D!?JG<)i1HCwY< zutLMjFX@Tj{53uMyT76Hk9}I#zVN8lSedt;enQ)vOzuASq}tCvr7hC`@Jk=lGta&# zCQacF6W>5ChQLkVJOhI>6k%ox1WQDgjeem#tEiS&b?4D}wOFNVAy+U44jnJca-Ek< z61{8Ju8tl;P!4it!y2fZ-j$7xG2Yuozk1%{$9Q3 zLqDK*e&`4Fmhbs~z45!hPxpNH_v+Mp-_QH;8>?J|!w0$^U=5?Ucno;BEaZ2#<+gUQGk|692hnL6W@&7s=4}b8kg_*zl;Gsj; zAc2DC{*7q+xo;%l(4m?)e_55vXGi^REc3`q-+}@TTr#L3K{R5^Fyf=v;OZ6aKK42F zo_khtXGeyhXkx$jczqx~NK4qs)60{}N!hDB=a5mDs?>GU{1F|Vosluy2OMd-67;&c zDV<`KQgRvyVSOm8cDecl72h6L3RZ)f__$Wvg*3g$Ee9AkEVK@D(6s+lhG9@y=4RDd6| z)g7mFOuMnhlt-*ALnfI4TaR5nG7rEBnX{0of?Rbbj7F`h7IL@hbxk*Fnr+s#Fx3R6 zw7}%B)*dKh5~%Xxeq^Smg=USQs;Ck&1^H$2@kbo1yFwsglRn$NUF@}1t1GQ;IQ5YJ zJ3G7D1$K~m2V5TqO_OE_dgJRK()aw4AJW}#e2Wg9KBL(aM>Tisuoh1q)3IC5=*<21 z>Mpiyx4!@VI`oeBD!b_xjT?38@L~0`Tpf7s?(J%mKwaJ4(>lSl(`~ChXzOsv`;Z~0 z3+j;a`r-?x_c4fZB=8_2m^>d@HAN8h81c1iN(D3#`jTKSJ>|VQJ9Ddy3DlW-ox=c` zRxe!A<;!b-D{O82joatvKW|3#JJFZGM3-NJ{QVTGZ z4H86nl?0);cPP+JYEND1yqIuc2Yo58_fe#jjN>7LLzK(oyj-uIU)kwOmMLQ;nx@l5 z0;!7QRwx^~v*1(?Qg3^U?@85)m@9Ul6XjqoR$8Wy* z=04=Fd571m`8q4!d(WZzn@=4&{ic(P+3n2MEoReVIM$GTy?>)`Z+zC z$t1u4O)lF{Fis?I)C7zooOnC0>gD+(8ZqnEIllL;-G!H5N)6zqCEh!X5)#Y*faT7h zkZ+Sxb47lHUH4PyD1eaa^`=k&^<|pvBMqF2B#{tHq!C)+pdE5~DbbSQmOQZF;y4;` zgXQ-2p#7$`X{$e0!QfmUjcTsBM$T3*s6r40Kt>DQ|o)+#D$xm2wv@HwIa)X3La zIj31M56@5Q%&B9#`+@s){N`H~sO$4eFoJiVceOUBhuf@5wXHRs+_|ixy(#~V7LD*_ zRu*}X0I!a{RKlT?lzJUO_2nPo%cH-3?4gD6_a16AfBc^L+4|d5=%MWm9l|K>ix;%@ z)RTM&WO*Zqryn`5tJCPEWCr0BbzxHiQjRB6?2O~{jYGTM+r%&o=ZC({-*`nS$p{KC@G(HwLHn1{uPef3!55j)qDl;rGqZ{nwUKA?1Bcbim#HgR zi3%;TeG>gdV3&6VUPbn~MTP|zZbw{SWxOC$z1HB#bb!%g0TH*N;RsIPh5f7-MVZ?Z z2h^1+-GL%pJaw{!C*!yYfvA-fq#{(+$LTF(YE-LQ^c5)tRVe4A0r^e)7f#yUSXHmH zmjY>xE#4~id#n;WIMyy(tvz3@hJD^MGClOR_vp>lp2yi+Y!GXJL-zI*B5*!{g7-MM>N+3vc=1aaKi zQrX>=2CT5`W+L{%Na&b|NSFWs5CBO;K~%b6$fXP=7y$%AB5)=_#JIpmbiEg9TFqH4 z;{?Yu>1f1?b#Z+|FRiTU?Dn3{!fwxUZCXVa_6G6n%GS@GJb7}<>Aw<$uT=T9)_wR_ zA8j`C{C}JdTAE=-a_2j=y`uM?e_Y>p{$bs5^?A*V`^wBm;anqr5z|0)@Qg~A8`Z%J zW}b8K(gX~8BU{TVx@G3LjyIR&K~#bF{7g-m0zZZUn=0xJ-g7D%VLX~#zo~`Gq-bW7 zj6cbiE*Z)%QGSNum9{U^n0JC}S1!x(Rqv}+hf*@~JHt|AdX3C_2`RrKHuXVG(&Y5; z50wm~mnv{tKcq;jSZWm0lSVSnrKTxI$qUk}qEbdiFpzsY02Bp5EWfOj44Fcus&;=Q z3#JNvFR+qU*jiSzpo#@(Oy()UZ1C)Hq}|)v)*i>?YphC_;k$`r@3wo|Mh81=eRk3E zp?mJvtq;9Tqp4Z#a;VYfU2Vk5GOlEb1WwE{nL`Lt78HQYWuRQmay3|`rdgqm&Q9z0 z(-#MZQ9fS*6CE9hIz9vAd_(XM4@TkNgxEJ<5ZMAc_D6 zLI))}R!UVym1Hkg7u3$G2ZP@*H?qF+ z#VEfr!Pin-TbMn@;n-a@29g7@v#rtEMcLLR-8SCVA3IjlkDhAj?Td9CuV?b%1V&>( zCMf_$-cl-ZN|z55ZKV99Zt@JwrpKC#I@LU^D*4QUYE{$XbbZp6Q>oaPl31~JaHPUa zsRE_xh6^kuJcVbfLa`A~EJ)oru0QOqsUWRgyQ~f~v)9k_{^!BuvN@0K-Vl4?^swTd z_%j)&C4oD4%D{*Q8Ky0n3H{y2Bt-K{!25+15&U@rQ0FC*#51Mzj)#z?Kd@w6U(O-{ z{TRU!(M6kM@&MCH7PQo=sh(%5=DDgkjqA?LiQz}$r*lJ2CVK?ZCR@4X!nDR#Zl~YT zc7LF4R?+&&+jRJW2i0Tiv&Aa6Q?F=95S9Buq%4!U;)2QOGk9vIECe7^4z2=CJ+Ek* zAUrbN(yd1i>kaqbs}mfTSJ=YcKG;y!+f$EswINXQ{v=kUNI<2uzbEk_*a#+}OFvLB z52yqsIw=XJQbO15P}hap95|r`2~lL?;^DgDEJ!1eW6FKf%}^2F%h?j^%BUXsRmH7yD*M|icuA~=s9R=gdjGMOe&nVpeb0%y&eV(- zZj&nI=D#48ENdG zbb-ZMUN$p~i?p=yK0reeuY)BsLl4IL@g${*(4FFdRw}_ooW#=!l=2B6<(XZ5wc`wg z6Tqmg?tt%=rU1RKNcCDpwMw3X$(`DCaFN3?2YlZfaB8;KZtEIBw9M9cogmsA(8uC& zExzHc8cxq^6Fuy(g&P8~l1X`x5hMYfWtl02378oH^eW`w9cp<{6FKGx#^W4+-^U5x zyI=PP-Fx(yjt|=!(Dz<%s6H_24OFnLjJ=K`D-;o?IAEK{HdEt)gzt&f$r!uqETyhz zb_o}&i)x3eu3xB;k)~pl@gfp6Lib}ZBVcTfHPQ5G)#tWBebqaBRf?~Hpsm>9W91-Y z78`6XYqaqSLDW&n?1k-co+zB{Fg&XTc2Tjv&%T2qNaS#cVhye6bDq}@h;03+LikWAb@+>GL4fGfG$4MfJjLS$dEbYhiIi#-< zFaU~w9-(1+-8>r+%umCm$469I=gN6QRs1bA}@-lKcL~pyj zt`SGkdmMRR#im!#=M_9`hfe~!@6Eb`Q(k1;tMKcXG*nPwL1oCKBru#1-hyE=Qx<~U zwiEDjrb-r=NHaCiL#tBJ6hS%9d*{t3mh|Q~zEO7Qlsb&H&4kq+j5Gkoe9tNeeGyrb zuTTzyj^x3_Somh3h~7mzVWS9itfsRBQWO`nnVBgAxFs3ph~n!7laN%%uc#b7n;E@j zpB%mP2uq*izcPfcT>Z7x?v8qg2YWl&c=MXZ>lYMz+w!f85GVqu6_Irvf|Y8}^L>j` z`oWuL^~0=E?>f@ZP0fnxIFnfr1Ci}}zL_wD$uLZdFVQzoA5#URfnlbVDy&4ataxT7 zu?ks}Aj>OiW29c5!NoaI2S>lf-LMWBf z?+P>gvl~4ozd5dk|Zh|iR_-=cL{I+YQy$~3l9)0lL@74!^_r3d_dha{msdvBgU3$+u-mUk(_g(tXcYjb> zy`qb(78ll6^~&msUS3|-i+n_V{@PVN2RzGXg=Y!)7q4EUZcQ(*uIv0(n{=qppWV@8 z=eP9vi|g|LqI5v;75f1c&_Y0W!8{i=WHst@6z=aQI|S2}P|;de*VLh-n(M6UB{q3xcs8V*Dh*rdsBP8UJB#_Jw}x5{4AwG0bOSBcgV@-DWkGK58g{B-_iCQ2 z&g!(p_OAKBThy-4b0S)(Jshdad)|oPACvdf#puD~LFFm$OE&UVX((eCVc0MN1%Y!p zpOvphZbrJ5kI>8|lSH6l;_<9kM?%9YNO4|itP1Uqb)&KT|EnOT0 zz2E;c+cx}_`cU`=>dl~ zYVmYpSb(a=*=g7RBgRiKl^l7zq=acvYwco(;>D~t!hnGCY?Ow$_-^X zz^A{pt|42f9znH>bKZPtR_~~8=soe0KB&w3f%1a>%4moKpGu5&HWI#yU=PZOo>)q#hrq;=uHNNky>K2)LtV&%1Xn@Yf zd{QaMmjsn~mog6`K&-3=h#f&>f{3h4U90IrZBf2jVgi|@Y#)rY1V&hXL_kICjVq;z zxdyIKc&c|~<_So?raOF1RIfqweINeSW~UteIZir$be(~fZMKtaC;arsBgO^uU~!=p zeJGOqw3ki(Bd#c8g$gKmsuJYyQr~^^y#B=Pi+by!hK@8Us^>u#f@&E2^wbi{Fin1> zz@TTQE2>uLiFYQo=A}xLW8X|W)rv~^(h2mEnI)i!(iM>s@O(r*hXMnXC2EAo71|2Y z&c>Q@>Lp_v5LIJ4Rv?8Nd8dRR%a!F7RlrvWC{OcBO_}pjo z_}Q2AIgZmmLy&%MV^fcAZtIDSEj__e?31gTdU|79FYR@B+wE(E7whwUMksKirP(L_q*en}3;Nl(rn*0I?`dgpC#(_3$PP_I9FukKm8UANBPs+(u-(Bb+?HR>&e zP*G0M&o^6|s?}9TKHpk~kSRAb%0xKwUt(o@HwJFrxuyrJZ8eKMjnWF+(SQ{;8|~;+ zv92Eq*Yp>LFX`>8M0S#5%FKrqJA6wH*Nx6GtGn5vYk^iij;S_t5R%&0`)QCv7Q zx2%$@cE`PHpS)eev8gv4tIuXD1rmW3`7Duul~wqhd__uuG?s5qneTKhpVmg+R5TA6 zA&Y}4h>K35jBTk{k?;dWf2ac9ER;j#|K=yY%12nZT)z{~>!q(VQ(bJ_*3QEBwaa4R zm0GRr(cYcWWg^S%!bREsPm+{Mqs9ZvQy0Lfca#x%#;TB$E;WMQdVE?Rx@lJLKHAcK za}Awr&8iU^G>uN4T44)KPgR)xa>d%TtO0~f!z^f*?Lu@agB)<#94K)|B#9~IF%b>z zm+Y@2`~M2`^;l{qhtK-DjJiE0iw41Q^Wv<|@KJHPR;Awz$dzXVlh5i0KshI00jgO= zc`zXGfxf5be&;vz@Gt#>9{$)b=yMZ<0s@;o48hAyHCj+w{Xo62{#bz)~t8{0cNx4NSXY-2C4ZfkjU zS8JKlOu}}!Bl849BE7-rC%~l>5v`JSSV`(te(Cab(HJ*`VkH3 zCpxeFK8!SYuVe~5V2E7{+<;q-3V@O;_te~j$ce21@@^2-noD%tz`7ETRg3|E`2 z@p5Y+mX;x&T+|6L5OE>5f|)|XMwvNAGJZtf%p?IRRk|`}lG$p|9dmU(xYW?$O4RxG z6LqM)ai{h#`)&!HJw_R*2#sIn$=9k_(B4cJ4TiT(hLa7k-_;?kRu1O zkjn!r(9v*rN9~nm?OeV%`QPZyoz?a$FKaWwOWMACL3PG7oo71C$4Ym~F)#Ptm-p#o z6vL8_$x|^BQvWV;dFQIUKA;DMAX%W8>DI-YWHD%_(a@MJtjjl5uj&LZ`G4g8yY*+^ z_9opqH$~8yBHKmVTvxfds`JZhdhFtwK67?OpE7rDH*)|01!_q|K~xB!6inlSiD|6pt5RB_hABTLGG4A8)+*nE zJUGz|okV$G#)F%(X+(#8`tlm1HZv)NtmN?FXaCgu9$bg$YrfI)*G&6Ggzx>xN9ugA zdMlka#wu+uWTR*2PmG7vmdp%;*%#64h9cDzU3^HubCa3eh5}O##Tryz4&bs7wLaL@ zv)kwNndK+-yH_98qw7y=V|Y!?X0A}5Qt(3tj8x)4>y@g8%-Dj*1cW{#4-)vLoIeuq zK%pf;gH-QYUT|!>NRCj!oBmhoAr19{Ez8>{_#Jl|M8FiQT?BP^)KsB zz2!~v)i|<^tMbmX*BfhOP2GIzcD?hV_vp+`_h@?lw948MEqAJV@oG=!uIy-q)vC+K z+}dDAZ_C&8L;Y8@uyRSe>pN*%mYdK)&_q9mL=3~E5=qC%;{jA)cjASWRTDrbqceA_ z&2Gd$n)V2!0o%MWD^Gz>=d7AA!($k)e#@{M7v5g+n)$CEJdOum-(F zLrBTYlr9p-p}SN}4+a2wk|m!qAYz287s#{AQJ)UIUCDb)x9DlLx1~z6P>oqNn_5z+ zG^D^xgY$YIB~~W+9vLy@?P31~5c1X_qD3{bhNi4Vfaj`La-Ce9 z(+|AkZ8|zXM}4M($!C6cT0j1Qcj^s?539~L>P)Mlx83&!eLts*?|a+3bo#_8EiEo; zVR2py^YfaWT~esdYk4%MYZKTI&4UOmfu=Bj$UGi z@}WkRJW>#)v?K^3GMR+l;`D<0H{YXvX`Bp}K*3IKtRe-_SROnM1ry<()$~O3l-i-D z$j_t~rOS9uv?s9usEf`#fJ^YqP>LZ$KFEHm-O8^z>g$06zF$up>8F1>6xHklQFhqM zvP#rjfl<3zHhOgCM7cJ-Bw>6R?73x@#$%fNcxPswCl@8MN(4S|BL@zDphO|nM2$f7 znRU#uH1L{?pz%K>AJPZddHJ9BD%n2mp~M|dqiE{Xt|QNqch$l?m6T>eS7Jd;LC}ti z5e6El)u_u2!$Oyiu-lwo34{7pXs*@Lk%bxFF`|qy24pa^GzK$I19=nA1Rh9EQ^^7j z9OUIJcs^4`&}6JWc_2^l8;Q?A14=+l6}BypM#qyOEX_#^snKKKFsx$pUI zz5DHN*U6KoRbvZS?_buCDgAyV2E%Q^gZ; zM<39#W_MP!ytT!*p&^n>!IVuXdWvW6Rkt;-F_Y+sfGLVn z@j4VLnFNQ_y7{blFoFDt_v)BHp$a5@NT`*rx(K`#2BvzI)!lH^1F0zlr}`S1a+_`=!obIgL* zKm9owz_Gt{zKe#+BJ2e&{VqQpyC+EEO_f9A)rzI7{=0)mJk;TB!$U_r&6!LH+104u zBH9b_j7Dl;2rM~?@k@sw0FeLO!>-~fyJIpk%?Oi?hyHmukyoI|2{jj7{PF21vG!Y` z_C=~UP+dflb)_kzT6SM)l+CyH0QqDdO$|jt()*@{_uc-@(FQE|~8$0B~1p`z~Q?IXc2 zBEsYx>fQR>Bi^lEp_(eK-C-tubWC({8etC@Ix=(fDZQP$h#iTsca3V!nq?JQa{MVF zl1i7YPc=y}!*=j~19^GK8x2@RyW%e5&TkL*|M#Sb*o4Lpbkbq<&z1zvNKYusXMzM@ zkLNYtN`Lnxcy+;3JE3-Z%6i11nH1?Omihb*dsXT$r;POKC;OJ!+j`e85^E#4?$38$ zTstLfQ%XI=#H)W$LlcUbY_zwEry@tK-$s4np;om0_lv7|!*F~S&v#$q+yRq}liYq4da?GNEVk*vXm&)^tIVTsQ< zt;@(gd&>K0bu?w3XxJC~!IDN!95WUd5a%ZTSeFSNvM=?K{j!`wS=VZ%1m`cuVLi|_ z>@C0fS8K_M)!WLBtZ^Bcrik2Ae@qic*HKM_x?PtqsQi@| zFqkt>42$?~xka|`~sw!Cc8`GA*Wj_2d-0K? zh}qSCr49WbJ@yeX-UcE7Q;WJDJ3TfD1{I|Mgnd5JwEceKy5@o+&kJ*OF~vapvG;8; z|J3@+ZM6>IkcI{9eWfMwJ>-&M5|3^K zI3z6v_%|ueW)~Ld>1`OZ)`ro{IpPYHvwH*n*_+^r0y+VMs@3&~3~cqWaB>erzy*mm zpUS1cU{5*@G&Y2ParuFd^oc{xVFcQ&nRIbz51At{QjS;RD8^^-_u0zfF(Ms)Mm9Pu z*zhq5Vck%sZdwP8S(eg(%(3hyxG-jMIRdh2p_dCWws}(AtLct9+mA5{oHwqp9auB_ zqJo&b;?HH;&w`N8)JQW!H5BZ*Xwy@(^vD+^O_l@R&dT{9%;+#X{IuB#u3(+_hE!j6 zHU5`~O`@Ic6yZ&=36_9{sh7^H?uo*LgYw?cKnxU>?=yo3{nG~di_bUW{<-k+!rSRB zu(Ykkm%z!V%;D?@384S0e^c>Bk-)QWZ^I|7(LGmoSX2$NTgIQcCO@TXwmI|O7qdK3 z%!M($pCvpbd^f%>G8ZM>MIFkE`YiRtQZlA8ShGLEM?nwem^VQ8Ln`!?JeNLdyad>bQdb>7dM+_4PKC zu_MA)=AXl#oGeRrr*PpXr%vw3h_7Z!zAZpqHEdAZS9J;H$HLAZs=2eXXqZ(JsWgF} z6I$UtKv(u_D1{zK^5Q+qxM!Yq$iu*zkvbVfh-(^uwzf9d`dq}C?dze=;Tl^O?S(No zeg1eV`maw)fm~#oxwC6`BzY)1j?uc8v%9xddFgxji?;EFpqx-`>B4k}39wW}`?z1D z9O?Uy4n|~4z8uiDlIPKqYDU-nqqfwN*tg_BZb*0V9T8KK_~<3v_J?rQ_lZQP4i)ru zcDZzd8=6iPD364?V`PJ@wZ>D zA4CSPumV@yvXy|RYHRbnU(SIt<3#QCl|MW5N8(z>N1$Pmx5y-Qp+rn3e0_j+6!3_q untckgPr*sYvO_bbZ!ce%QCdr>lMyv_l9p<5?*_4N9XKDM9j-mdxcq7{blFoFDt_v)BHp$a5@NT`*rx(K`#2BvzI)!lH^1F0zlr}`S1a+_`=!obIgL* zKm9owz_Gt{zKe#+BJ2e&{VqQpyC+EEO_f9A)rzI7{=0)mJk;TB!$U_r&6!LH+104u zBH9b_j7Dl;2rM~?@k@sw0FeLO!>-~fyJIpk%?Oi?hyHmukyoI|2{jj7{PF21vG!Y` z_C=~UP+dflb)_kzT6SM)l+CyH0QqDdO$|jt()*@{_uc-@(FQE|~8$0B~1p`z~Q?IXc2 zBEsYx>fQR>Bi^lEp_(eK-C-tubWC({8etC@Ix=(fDZQP$h#iTsca3V!nq?JQa{MVF zl1i7YPc=y}!*=j~19^GK8x2@RyW%e5&TkL*|M#Sb*o4Lpbkbq<&z1zvNKYusXMzM@ zkLNYtN`Lnxcy+;3JE3-Z%6i11nH1?Omihb*dsXT$r;POKC;OJ!+j`e85^E#4?$38$ zTstLfQ%XI=#H)W$LlcUbY_zwEry@tK-$s4np;om0_lv7|!*F~S&v#$q+yRq}liYq4da?GNEVk*vXm&)^tIVTsQ< zt;@(gd&>K0bu?w3XxJC~!IDN!95WUd5a%ZTSeFSNvM=?K{j!`wS=VZ%1m`cuVLi|_ z>@C0fS8K_M)!WLBtZ^Bcrik2Ae@qic*HKM_x?PtqsQi@| zFqkt>42$?~xka|`~sw!Cc8`GA*Wj_2d-0K? zh}qSCr49WbJ@yeX-UcE7Q;WJDJ3TfD1{I|Mgnd5JwEceKy5@o+&kJ*OF~vapvG;8; z|J3@+ZM6>IkcI{9eWfMwJ>-&M5|3^K zI3z6v_%|ueW)~Ld>1`OZ)`ro{IpPYHvwH*n*_+^r0y+VMs@3&~3~cqWaB>erzy*mm zpUS1cU{5*@G&Y2ParuFd^oc{xVFcQ&nRIbz51At{QjS;RD8^^-_u0zfF(Ms)Mm9Pu z*zhq5Vck%sZdwP8S(eg(%(3hyxG-jMIRdh2p_dCWws}(AtLct9+mA5{oHwqp9auB_ zqJo&b;?HH;&w`N8)JQW!H5BZ*Xwy@(^vD+^O_l@R&dT{9%;+#X{IuB#u3(+_hE!j6 zHU5`~O`@Ic6yZ&=36_9{sh7^H?uo*LgYw?cKnxU>?=yo3{nG~di_bUW{<-k+!rSRB zu(Ykkm%z!V%;D?@384S0e^c>Bk-)QWZ^I|7(LGmoSX2$NTgIQcCO@TXwmI|O7qdK3 z%!M($pCvpbd^f%>G8ZM>MIFkE`YiRtQZlA8ShGLEM?nwem^VQ8Ln`!?JeNLdyad>bQdb>7dM+_4PKC zu_MA)=AXl#oGeRrr*PpXr%vw3h_7Z!zAZpqHEdAZS9J;H$HLAZs=2eXXqZ(JsWgF} z6I$UtKv(u_D1{zK^5Q+qxM!Yq$iu*zkvbVfh-(^uwzf9d`dq}C?dze=;Tl^O?S(No zeg1eV`maw)fm~#oxwC6`BzY)1j?uc8v%9xddFgxji?;EFpqx-`>B4k}39wW}`?z1D z9O?Uy4n|~4z8uiDlIPKqYDU-nqqfwN*tg_BZb*0V9T8KK_~<3v_J?rQ_lZQP4i)ru zcDZzd8=6iPD364?V`PJ@wZ>D zA4CSPumV@yvXy|RYHRbnU(SIt<3#QCl|MW5N8(z>N1$Pmx5y-Qp+rn3e0_j+6!3_q untckgPr*sYvO_bbZ!ce%QCdr>lMyv_l9p<5?*_4N9XKDM9j-mdxcq Date: Fri, 7 Nov 2025 16:29:15 +0800 Subject: [PATCH 19/47] 2 --- .../home_bar_underline.imageset/Contents.json | 23 ++ .../home_bar_underline 1.png | Bin 0 -> 886 bytes .../home_bar_underline 2.png | Bin 0 -> 886 bytes .../home_bar_underline.png | Bin 0 -> 886 bytes .../home_left_image.imageset/Contents.json | 4 +- .../微信图片_20251107143422_215_763 1.png | Bin 2144 -> 0 bytes .../微信图片_20251107143422_215_763.png | Bin 2144 -> 0 bytes .../微信图片_20251107154239_220_763 1.png | Bin 0 -> 16981 bytes .../微信图片_20251107154239_220_763.png | Bin 0 -> 16981 bytes .../home_right_image.imageset/Contents.json | 4 +- .../微信图片_20251107143423_216_763 1.png | Bin 2184 -> 0 bytes .../微信图片_20251107143423_216_763.png | Bin 2184 -> 0 bytes .../微信图片_20251107154240_221_763 1.png | Bin 0 -> 17482 bytes .../微信图片_20251107154240_221_763.png | Bin 0 -> 17482 bytes keyBoard/Class/Home/V/KBPanModalView.m | 211 ++++++++++++------ 15 files changed, 171 insertions(+), 71 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/home_bar_underline 1.png create mode 100644 keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/home_bar_underline 2.png create mode 100644 keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/home_bar_underline.png delete mode 100644 keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763 1.png delete mode 100644 keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763.png create mode 100644 keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107154239_220_763 1.png create mode 100644 keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107154239_220_763.png delete mode 100644 keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107143423_216_763 1.png delete mode 100644 keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107143423_216_763.png create mode 100644 keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107154240_221_763 1.png create mode 100644 keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107154240_221_763.png diff --git a/keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/Contents.json new file mode 100644 index 0000000..d3f2079 --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/Contents.json @@ -0,0 +1,23 @@ +{ + "images" : [ + { + "filename" : "home_bar_underline.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_bar_underline 1.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_bar_underline 2.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/home_bar_underline 1.png b/keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/home_bar_underline 1.png new file mode 100644 index 0000000000000000000000000000000000000000..3658ff5d901b574e3d36d568c3d2800d621ba768 GIT binary patch literal 886 zcmV-+1Bv{JP)Px#1am@3R0s$N2z&@+hyVZsAW1|)R9J=8m{C^bI1ELf&v%i1-lq7dYfXgrwj$sbMa2akw0wd>0ZeTJTAv0V; zGThP}A>0fJ+#DCF=Y|0;N2OMh1fl3#)(a8x{YWBU$d&HLmFBr)N}8Z_PbT3prb$^J zB;;TueX!d)#~e&q=i2shOk&Ep;wr#n}Xk6rz&=YeNz6AWl#qllZDma@N5YhY{k!8|h>w_Xj9*8VMRBMHsD z^CLO2_Ssx4Orh^rp94nh!<%vv1^fv-^@xuf5HF@9JOr_2>g<1Db~j z*MV0brT%_=lyJRX1*0H8m=%iSK0V&AIjF^<#^5o+okoXn_t+CImt%z6wucCJ_PzWZ z;bKj=*jczCTrG;#>>_KDqqSF$aI2zX(cTVR_r2bJ$AY3=B5G*~h6%UqMpW?Y5bn;k zJ>haWM!1*FsU%#=8iaeq!}X$1xZ9P1DWCChJ>v8{Tp0r%t|DAB{-B53C_m!i?&-IA zxRgChkN!y=iJs+pj{#1e5Uxx|JX}S%p1ujA6Tpk4d?t1Ov^d}y;Lu4L!xQ+CLa3At;)#d(Msvi*QaSwM!xROI(`<7b8qaN>PNN>~U)1{)dc#w`@c;k- M07*qoM6N<$f_D|IN&o-= literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/home_bar_underline 2.png b/keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/home_bar_underline 2.png new file mode 100644 index 0000000000000000000000000000000000000000..3658ff5d901b574e3d36d568c3d2800d621ba768 GIT binary patch literal 886 zcmV-+1Bv{JP)Px#1am@3R0s$N2z&@+hyVZsAW1|)R9J=8m{C^bI1ELf&v%i1-lq7dYfXgrwj$sbMa2akw0wd>0ZeTJTAv0V; zGThP}A>0fJ+#DCF=Y|0;N2OMh1fl3#)(a8x{YWBU$d&HLmFBr)N}8Z_PbT3prb$^J zB;;TueX!d)#~e&q=i2shOk&Ep;wr#n}Xk6rz&=YeNz6AWl#qllZDma@N5YhY{k!8|h>w_Xj9*8VMRBMHsD z^CLO2_Ssx4Orh^rp94nh!<%vv1^fv-^@xuf5HF@9JOr_2>g<1Db~j z*MV0brT%_=lyJRX1*0H8m=%iSK0V&AIjF^<#^5o+okoXn_t+CImt%z6wucCJ_PzWZ z;bKj=*jczCTrG;#>>_KDqqSF$aI2zX(cTVR_r2bJ$AY3=B5G*~h6%UqMpW?Y5bn;k zJ>haWM!1*FsU%#=8iaeq!}X$1xZ9P1DWCChJ>v8{Tp0r%t|DAB{-B53C_m!i?&-IA zxRgChkN!y=iJs+pj{#1e5Uxx|JX}S%p1ujA6Tpk4d?t1Ov^d}y;Lu4L!xQ+CLa3At;)#d(Msvi*QaSwM!xROI(`<7b8qaN>PNN>~U)1{)dc#w`@c;k- M07*qoM6N<$f_D|IN&o-= literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/home_bar_underline.png b/keyBoard/Assets.xcassets/Home/home_bar_underline.imageset/home_bar_underline.png new file mode 100644 index 0000000000000000000000000000000000000000..3658ff5d901b574e3d36d568c3d2800d621ba768 GIT binary patch literal 886 zcmV-+1Bv{JP)Px#1am@3R0s$N2z&@+hyVZsAW1|)R9J=8m{C^bI1ELf&v%i1-lq7dYfXgrwj$sbMa2akw0wd>0ZeTJTAv0V; zGThP}A>0fJ+#DCF=Y|0;N2OMh1fl3#)(a8x{YWBU$d&HLmFBr)N}8Z_PbT3prb$^J zB;;TueX!d)#~e&q=i2shOk&Ep;wr#n}Xk6rz&=YeNz6AWl#qllZDma@N5YhY{k!8|h>w_Xj9*8VMRBMHsD z^CLO2_Ssx4Orh^rp94nh!<%vv1^fv-^@xuf5HF@9JOr_2>g<1Db~j z*MV0brT%_=lyJRX1*0H8m=%iSK0V&AIjF^<#^5o+okoXn_t+CImt%z6wucCJ_PzWZ z;bKj=*jczCTrG;#>>_KDqqSF$aI2zX(cTVR_r2bJ$AY3=B5G*~h6%UqMpW?Y5bn;k zJ>haWM!1*FsU%#=8iaeq!}X$1xZ9P1DWCChJ>v8{Tp0r%t|DAB{-B53C_m!i?&-IA zxRgChkN!y=iJs+pj{#1e5Uxx|JX}S%p1ujA6Tpk4d?t1Ov^d}y;Lu4L!xQ+CLa3At;)#d(Msvi*QaSwM!xROI(`<7b8qaN>PNN>~U)1{)dc#w`@c;k- M07*qoM6N<$f_D|IN&o-= literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_left_image.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_left_image.imageset/Contents.json index e32fee0..7f5eeab 100644 --- a/keyBoard/Assets.xcassets/Home/home_left_image.imageset/Contents.json +++ b/keyBoard/Assets.xcassets/Home/home_left_image.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "微信图片_20251107143422_215_763.png", + "filename" : "微信图片_20251107154239_220_763.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "微信图片_20251107143422_215_763 1.png", + "filename" : "微信图片_20251107154239_220_763 1.png", "idiom" : "universal", "scale" : "3x" } diff --git a/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763 1.png b/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763 1.png deleted file mode 100644 index 0886ec6dd6e0225c21ca91a9ad42f88e760050ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2144 zcmWkvc|6qVAAi2z8D<-cTL%(`uuk*p5Krb!e< zrQ|+xmio$O*DY5?7+rRV5ymx`-*=xs-p}!VKJU-xc|FhP^IUdzI=(|zSr!1WgJy5* z3IL1_fiqqjMb_D#184_DxE{9#6}@`}=mZ;KO>@ViEgm0m2>`q-&DP32Hg9fxEd0Lx zo|LJ&T>&=&Ptyc|nEM)|PPlREC@w&XD6VnwD8^IQtNr8|uQ_$!V}W#OLyvCQCrJNH z&>KcD>t+b%(-X{l0tFx%h0I96{{iEOqX24P2#K^Cn6`kyfw1{`Cj}7nWz9)lF+TTVf-0}Y)Bn2hvO`$f+g;Md9x@@Sm6 z_0;rUDWu4{e6Gn?+weP}_o{%hbxmk6smZM#Uzs{TQ%TCVWaD}is=Rk0_Ml4d(a3t9 zEIcec0wFEma0#g^Rzl^Co#0J?Dut>#iv``2kL_NxEJ=cDcv)Q`F&9jui`xpf-GmUE zpn0xLMjZ>f-ZZSOdMQ-#vQ`;et2;!4Q<%XaH5si>8;=(&?#du>hM|WBYC{`2?!P_} zHuJJZ?{6Hd$5*L=`Qi0l2e`9x&q0jl^2C zpY##RLfPhVb=dyQ$nD5Yy9juH z>d?7v;QS&ojfl8Ey4 zsd%RO#SsuGkdumBM4k-WaA_M8%?_YS-erI=$=WimO^yQjP(i7YNyKOSaARNP!OP>a)GO{aN0^^WZx4x*Z>B6uA3prD{nKYo^bPV;Zvr>B=K4K^oIVEtS%z^K^$3x9|C8<~eb_3tz#e zC*s(X+%z2sL9YVjl`{<2REFWCcW7Rls%Ru9t?vV%5l;a*2Vuay8kNGWEW-m$)Dd5& z*+H7)lK7?%%Qr>2(z7?^w;xbDn9O@<9jLgH)ry#-ioU9-h+sb|a=Aibp<5f5BTwJY zy?uF1JE`+O{f+_+xKSI8ZZPsRC=kG;WYlmu&jO|nO6e2PNCYwyzZZ`072i5|QVDUs z2$=K>=gr_WoBwFkUi_H#S5(X%2#)nb&pO{0Pp%tpISRA&Qm*$xzPr#Js|_{Lz+TK~ zo{nC|Vu8PlAt}~R)L|0iX`gNkPKzfZORgWp0@78~u{f@zXX6o%=$cmY5IQvXSNVz* zuyHmdHMZQiZCxJYq^+Hk>l&(DQ28!h@Ky!_e_R=>?7Y3$J}k@aimypHf5o7)+vEhx z-=VXnr|Ndcf%O$}p?_rz1(nz7*j@iWb=p`yRFrsRUK23OLY}ri{O+S>7>?#(ptIxc z4*lg-z|LqBOMi020i}(v;$F+5Cn}=Jy0RLrXcpe$Dx`Z6fQJ5^5UbOhgwH$sdEnq! z!`&Lan7-r#9I`Pr=VqR8=4?*3lT%YQlovsR5 zX*LB|T;DF+#Ifb(6c)-HC9fTHdrc6Url3?PtecuoFXb4Goq}?5-!nKPvyA(-C#^{$ zf(#Z^6ru0u7pmruyM9MfCZK4LeQ+eflsh+*9ww=eXx)&iZbP zp~~dfwYy;8t3wNq^N0Dh;TD~u6E5eXWq?`k1GI{ao^T-s^R|Sy;Nm+0`S8Z8ar&zD&CE%~mO z9R2uZAgrq(;xd7spEA1dbF*~?=f<+nH3KMKEBAp?-*QOLxS^d(v0fMBZ&pyxG-^Hk zdfhXVg0(O={~;^6p2ED@KDP-$hFEUI+iU9ltZkPeR#CeuE~&`7N$~E%9r{?nIAd1S zT>asN5teB8TO^j*upe#>n32S`h~5*PpZ}S!yX)uX+Krf?bdT5 z!2VjjMb8fGT=ezESnKhT4uF3XhZtZ`5K&GR3j`}Ab2Ue|#5nB@8K&^9XGiqd5w zVMj#X+QX$S&0XSpUA>sgUS)hQi55*<&rkUKqXaVL1-(pK&@w{5Ye2JevaPUYUid%X C>C9#T diff --git a/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763.png b/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107143422_215_763.png deleted file mode 100644 index 0886ec6dd6e0225c21ca91a9ad42f88e760050ac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2144 zcmWkvc|6qVAAi2z8D<-cTL%(`uuk*p5Krb!e< zrQ|+xmio$O*DY5?7+rRV5ymx`-*=xs-p}!VKJU-xc|FhP^IUdzI=(|zSr!1WgJy5* z3IL1_fiqqjMb_D#184_DxE{9#6}@`}=mZ;KO>@ViEgm0m2>`q-&DP32Hg9fxEd0Lx zo|LJ&T>&=&Ptyc|nEM)|PPlREC@w&XD6VnwD8^IQtNr8|uQ_$!V}W#OLyvCQCrJNH z&>KcD>t+b%(-X{l0tFx%h0I96{{iEOqX24P2#K^Cn6`kyfw1{`Cj}7nWz9)lF+TTVf-0}Y)Bn2hvO`$f+g;Md9x@@Sm6 z_0;rUDWu4{e6Gn?+weP}_o{%hbxmk6smZM#Uzs{TQ%TCVWaD}is=Rk0_Ml4d(a3t9 zEIcec0wFEma0#g^Rzl^Co#0J?Dut>#iv``2kL_NxEJ=cDcv)Q`F&9jui`xpf-GmUE zpn0xLMjZ>f-ZZSOdMQ-#vQ`;et2;!4Q<%XaH5si>8;=(&?#du>hM|WBYC{`2?!P_} zHuJJZ?{6Hd$5*L=`Qi0l2e`9x&q0jl^2C zpY##RLfPhVb=dyQ$nD5Yy9juH z>d?7v;QS&ojfl8Ey4 zsd%RO#SsuGkdumBM4k-WaA_M8%?_YS-erI=$=WimO^yQjP(i7YNyKOSaARNP!OP>a)GO{aN0^^WZx4x*Z>B6uA3prD{nKYo^bPV;Zvr>B=K4K^oIVEtS%z^K^$3x9|C8<~eb_3tz#e zC*s(X+%z2sL9YVjl`{<2REFWCcW7Rls%Ru9t?vV%5l;a*2Vuay8kNGWEW-m$)Dd5& z*+H7)lK7?%%Qr>2(z7?^w;xbDn9O@<9jLgH)ry#-ioU9-h+sb|a=Aibp<5f5BTwJY zy?uF1JE`+O{f+_+xKSI8ZZPsRC=kG;WYlmu&jO|nO6e2PNCYwyzZZ`072i5|QVDUs z2$=K>=gr_WoBwFkUi_H#S5(X%2#)nb&pO{0Pp%tpISRA&Qm*$xzPr#Js|_{Lz+TK~ zo{nC|Vu8PlAt}~R)L|0iX`gNkPKzfZORgWp0@78~u{f@zXX6o%=$cmY5IQvXSNVz* zuyHmdHMZQiZCxJYq^+Hk>l&(DQ28!h@Ky!_e_R=>?7Y3$J}k@aimypHf5o7)+vEhx z-=VXnr|Ndcf%O$}p?_rz1(nz7*j@iWb=p`yRFrsRUK23OLY}ri{O+S>7>?#(ptIxc z4*lg-z|LqBOMi020i}(v;$F+5Cn}=Jy0RLrXcpe$Dx`Z6fQJ5^5UbOhgwH$sdEnq! z!`&Lan7-r#9I`Pr=VqR8=4?*3lT%YQlovsR5 zX*LB|T;DF+#Ifb(6c)-HC9fTHdrc6Url3?PtecuoFXb4Goq}?5-!nKPvyA(-C#^{$ zf(#Z^6ru0u7pmruyM9MfCZK4LeQ+eflsh+*9ww=eXx)&iZbP zp~~dfwYy;8t3wNq^N0Dh;TD~u6E5eXWq?`k1GI{ao^T-s^R|Sy;Nm+0`S8Z8ar&zD&CE%~mO z9R2uZAgrq(;xd7spEA1dbF*~?=f<+nH3KMKEBAp?-*QOLxS^d(v0fMBZ&pyxG-^Hk zdfhXVg0(O={~;^6p2ED@KDP-$hFEUI+iU9ltZkPeR#CeuE~&`7N$~E%9r{?nIAd1S zT>asN5teB8TO^j*upe#>n32S`h~5*PpZ}S!yX)uX+Krf?bdT5 z!2VjjMb8fGT=ezESnKhT4uF3XhZtZ`5K&GR3j`}Ab2Ue|#5nB@8K&^9XGiqd5w zVMj#X+QX$S&0XSpUA>sgUS)hQi55*<&rkUKqXaVL1-(pK&@w{5Ye2JevaPUYUid%X C>C9#T diff --git a/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107154239_220_763 1.png b/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107154239_220_763 1.png new file mode 100644 index 0000000000000000000000000000000000000000..30478778828395df8558b44d548641d39984ae46 GIT binary patch literal 16981 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107154240_221_763.png b/keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107154240_221_763.png new file mode 100644 index 0000000000000000000000000000000000000000..449562331a3b72e6cb7826e257a19dbafbefd4c5 GIT binary patch literal 17482 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m index a0ac7d2..05eb457 100644 --- a/keyBoard/Class/Home/V/KBPanModalView.m +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -14,16 +14,20 @@ @property (nonatomic, strong) KBDirectionIndicatorView *indicator; // 顶部切换按钮与指示条 @property (nonatomic, strong) UIView *topBar; -@property (nonatomic, strong) UIView *contentView; -@property (nonatomic, strong) UIImageView *leftImageView; -@property (nonatomic, strong) UIImageView *rightImageView; +@property (nonatomic, strong) UIView *bigWhiteContentView; +@property (nonatomic, strong) UIView *secWhiteContentView; /// 皇冠👑 @property (nonatomic, strong) UIImageView *hgImageView; +/// 人 +@property (nonatomic, strong) UIImageView *personImageView; + +@property (nonatomic, strong) UIImageView *leftImageView; +@property (nonatomic, strong) UIImageView *rightImageView; @property (nonatomic, strong) UIButton *hotButton; @property (nonatomic, strong) UIButton *rankButton; -@property (nonatomic, strong) UIView *underlineView; // 选中下划线 +@property (nonatomic, strong) UIImageView *underlineImageView; // 选中下划线 // 承载子控制器内容 @property (nonatomic, strong) UIView *containerView; @@ -37,34 +41,16 @@ - (instancetype)initWithFrame:(CGRect)frame{ if (self = [super initWithFrame:frame]) { -// self.backgroundColor = [UIColor redColor]; + // 该背景色会被 HWPanModal 用来设置容器的 _contentView 背景色 + // 参考 Pods/HWPanModal/Sources/View/PanModal/HWPanModalContainerView.m: adjustPanContainerBackgroundColor + // 想要改变外层白色底(截图中 _contentView)的颜色,只需改这里即可 + self.backgroundColor = [UIColor clearColor]; // 柔和的绿色 // HWBackgroundConfig *config = [HWBackgroundConfig configWithBehavior:HWBackgroundBehaviorDefault]; // config.backgroundAlpha = 0; // [self.hw_dimmedView reloadConfig:config]; - // 添加容器 - [self addSubview:self.contentView]; - [self.contentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self).inset(16); - make.top.equalTo(self).offset(48); - make.bottom.equalTo(self); - }]; - - [self.contentView addSubview:self.leftImageView]; - [self.contentView addSubview:self.rightImageView]; - [self.leftImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.contentView); - make.top.equalTo(self.contentView); - make.height.mas_equalTo(79); - }]; - [self.rightImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.contentView); - make.top.equalTo(self.contentView); - make.height.equalTo(self.leftImageView); - }]; - - + // 顶部按钮 + 容器 [self setupTopButtonsAndContainer]; // 默认展示“热门” @@ -171,16 +157,38 @@ #pragma mark - UI - (void)setupTopButtonsAndContainer { + + // 添加最大的白色容器 + [self addSubview:self.bigWhiteContentView]; + [self addSubview:self.personImageView]; + [self addSubview:self.hgImageView]; + + [self.bigWhiteContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self).inset(0); + make.top.equalTo(self).offset(40); + make.bottom.equalTo(self); + }]; + + [self.bigWhiteContentView addSubview:self.secWhiteContentView]; + [self.secWhiteContentView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self).inset(16); + make.top.equalTo(self.bigWhiteContentView).offset(47); + make.bottom.equalTo(self.bigWhiteContentView); + }]; + + // 顶部栏 - self.topBar = [[UIView alloc] init]; -// self.topBar.backgroundColor = [UIColor colorWithWhite:1 alpha:0.9]; - [self addSubview:self.topBar]; - // 首次展示时先隐藏,待转场完成后再淡入,避免“自底向上滑入”的错觉 -// self.topBar.alpha = 0.0; + [self.secWhiteContentView addSubview:self.topBar]; + [self.secWhiteContentView addSubview:self.containerView]; + + [self.topBar addSubview:self.leftImageView]; + [self.topBar addSubview:self.rightImageView]; + + // 两个按钮 self.hotButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [self.hotButton setTitle:@"热门" forState:UIControlStateNormal]; + [self.hotButton setTitle:@"Ranking List" forState:UIControlStateNormal]; [self.hotButton setTitleColor:[UIColor darkTextColor] forState:UIControlStateNormal]; [self.hotButton setTitleColor:[UIColor blackColor] forState:UIControlStateSelected]; self.hotButton.titleLabel.font = [UIFont boldSystemFontOfSize:16]; @@ -189,7 +197,7 @@ [self.topBar addSubview:self.hotButton]; self.rankButton = [UIButton buttonWithType:UIButtonTypeCustom]; - [self.rankButton setTitle:@"排行" forState:UIControlStateNormal]; + [self.rankButton setTitle:@"Persona circle" forState:UIControlStateNormal]; [self.rankButton setTitleColor:[UIColor darkTextColor] forState:UIControlStateNormal]; [self.rankButton setTitleColor:[UIColor blackColor] forState:UIControlStateSelected]; self.rankButton.titleLabel.font = [UIFont boldSystemFontOfSize:16]; @@ -198,48 +206,67 @@ [self.topBar addSubview:self.rankButton]; // 下划线(跟随选中按钮) - self.underlineView = [[UIView alloc] init]; - self.underlineView.backgroundColor = [UIColor blackColor]; - self.underlineView.layer.cornerRadius = 1.0; - [self.topBar addSubview:self.underlineView]; - - // 容器视图 - self.containerView = [[UIView alloc] init]; - self.containerView.backgroundColor = [UIColor redColor]; - self.containerView.clipsToBounds = YES; - [self addSubview:self.containerView]; + [self.topBar addSubview:self.underlineImageView]; // Masonry 约束 - CGFloat topPadding = 47; // 与顶部小指示器留点空间 + CGFloat topPadding = 0; // 与顶部小指示器留点空间 [self.topBar mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self); - make.top.equalTo(self).offset(topPadding); - make.height.mas_equalTo(44); + make.left.right.equalTo(self.secWhiteContentView); + make.top.equalTo(self.secWhiteContentView).offset(topPadding); + make.height.mas_equalTo(54); + }]; + + [self.leftImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.topBar); + make.top.equalTo(self.topBar); + make.height.mas_equalTo(54); + }]; + [self.rightImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.equalTo(self.topBar); + make.top.equalTo(self.topBar); + make.height.equalTo(self.leftImageView); + }]; [self.hotButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.equalTo(self.topBar); + make.centerY.equalTo(self.topBar).offset(3); make.left.equalTo(self.topBar); }]; [self.rankButton mas_makeConstraints:^(MASConstraintMaker *make) { - make.top.bottom.equalTo(self.topBar); + make.centerY.equalTo(self.hotButton); make.right.equalTo(self.topBar); make.left.equalTo(self.hotButton.mas_right); make.width.equalTo(self.hotButton); }]; // 初始先放在“热门”下方,宽度稍小于按钮文字 - [self.underlineView mas_makeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(2); - make.bottom.equalTo(self.topBar.mas_bottom).offset(-2); - make.centerX.equalTo(self.hotButton); - make.width.mas_equalTo(24); + [self.underlineImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(5); + make.bottom.equalTo(self.topBar.mas_bottom).offset(-14); + make.centerX.equalTo(self.hotButton).offset(-0); + make.width.mas_equalTo(78); }]; [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.topBar.mas_bottom).offset(8); - make.left.right.bottom.equalTo(self); + make.left.right.equalTo(self.secWhiteContentView).inset(0); + make.bottom.equalTo(self.secWhiteContentView); }]; + + [self.personImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.equalTo(self).offset(46); + make.bottom.equalTo(self.topBar.mas_top).offset(22); + make.width.mas_equalTo(70); + make.height.mas_equalTo(107); + }]; + + [self.hgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.right.equalTo(self).offset(-38); + make.bottom.equalTo(self.topBar.mas_top).offset(12); + make.width.mas_equalTo(97); + make.height.mas_equalTo(78); + }]; + } #pragma mark - Action @@ -296,12 +323,19 @@ UIButton *btn = (index == 0) ? self.hotButton : self.rankButton; // 更新下划线位置 - [self.underlineView mas_remakeConstraints:^(MASConstraintMaker *make) { - make.height.mas_equalTo(2); - make.bottom.equalTo(self.topBar.mas_bottom).offset(-2); - make.centerX.equalTo(btn); - make.width.mas_equalTo(24); + [self.underlineImageView mas_remakeConstraints:^(MASConstraintMaker *make) { + make.height.mas_equalTo(5); + make.bottom.equalTo(self.topBar.mas_bottom).offset(-15); + make.centerX.equalTo(btn).offset(index == 0 ? -6 : -11); + make.width.mas_equalTo(78); }]; + if (index == 0) { + self.leftImageView.hidden = false; + self.rightImageView.hidden = true; + }else{ + self.leftImageView.hidden = true; + self.rightImageView.hidden = false; + } if (animated) { [UIView animateWithDuration:0.25 animations:^{ @@ -312,11 +346,22 @@ } } -- (UIView *)contentView{ - if (!_contentView) { - _contentView = [[UIView alloc] init]; +- (UIView *)bigWhiteContentView{ + if (!_bigWhiteContentView) { + _bigWhiteContentView = [[UIView alloc] init]; + _bigWhiteContentView.backgroundColor = [UIColor whiteColor]; + _bigWhiteContentView.layer.cornerRadius = 40; + _bigWhiteContentView.layer.masksToBounds = true; } - return _contentView; + return _bigWhiteContentView; +} + +- (UIView *)secWhiteContentView{ + if (!_secWhiteContentView) { + _secWhiteContentView = [[UIView alloc] init]; + _secWhiteContentView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.23]; + } + return _secWhiteContentView; } - (UIImageView *)leftImageView{ @@ -332,7 +377,7 @@ if (!_rightImageView) { _rightImageView = [[UIImageView alloc] init]; _rightImageView.image = [UIImage imageNamed:@"home_right_image"]; - _rightImageView.contentMode = UIViewContentModeScaleToFill; + _rightImageView.contentMode = UIViewContentModeScaleAspectFit; _rightImageView.hidden = true; } return _rightImageView; @@ -342,9 +387,41 @@ if (!_hgImageView) { _hgImageView = [[UIImageView alloc] init]; _hgImageView.image = [UIImage imageNamed:@"home_hg_icon"]; - _hgImageView.contentMode = UIViewContentModeScaleToFill; + _hgImageView.contentMode = UIViewContentModeScaleAspectFit; } return _hgImageView; } +- (UIImageView *)personImageView{ + if (!_personImageView) { + _personImageView = [[UIImageView alloc] init]; + _personImageView.image = [UIImage imageNamed:@"home_person_icon"]; + _personImageView.contentMode = UIViewContentModeScaleAspectFit; + } + return _personImageView; +} + + +- (UIView *)topBar{ + if (!_topBar) { + _topBar = [[UIView alloc] init]; + } + return _topBar; +} + +- (UIView *)containerView{ + if (!_containerView) { + _containerView = [[UIView alloc] init]; + } + return _containerView; +} + +- (UIImageView *)underlineImageView{ + if (!_underlineImageView) { + _underlineImageView = [[UIImageView alloc] init]; + _underlineImageView.image = [UIImage imageNamed:@"home_bar_underline"]; + } + return _underlineImageView; +} + @end From 26e39ce416b58f1a9c21140cee628076ef2e0fa7 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 16:46:08 +0800 Subject: [PATCH 20/47] 1 --- .../Home/home_left_bg.imageset/Contents.json | 21 ++++++++++++++++++ .../home_left_bg.imageset/home_left_bg.png | Bin 0 -> 9735 bytes .../Home/home_right_bg.imageset/Contents.json | 21 ++++++++++++++++++ .../home_right_bg.imageset/home_right_bg.png | Bin 0 -> 9249 bytes keyBoard/Class/Home/V/KBPanModalView.m | 12 ++++++---- 5 files changed, 50 insertions(+), 4 deletions(-) create mode 100644 keyBoard/Assets.xcassets/Home/home_left_bg.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_left_bg.imageset/home_left_bg.png create mode 100644 keyBoard/Assets.xcassets/Home/home_right_bg.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_right_bg.imageset/home_right_bg.png diff --git a/keyBoard/Assets.xcassets/Home/home_left_bg.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_left_bg.imageset/Contents.json new file mode 100644 index 0000000..9a26c26 --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_left_bg.imageset/Contents.json @@ -0,0 +1,21 @@ +{ + "images" : [ + { + "filename" : "home_left_bg.png", + "idiom" : "universal", + "scale" : "1x" + }, + { + "idiom" : "universal", + "scale" : "2x" + }, + { + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_left_bg.imageset/home_left_bg.png b/keyBoard/Assets.xcassets/Home/home_left_bg.imageset/home_left_bg.png new file mode 100644 index 0000000000000000000000000000000000000000..9d3ddc8a36f38c8c74ddaf201ed3c5313e284a73 GIT binary patch literal 9735 zcmeHt`CF4m^e>hwZ57j~Ey@-fM4$*11yZ)8Y6JxWf(y!8LDrBU0%1*}wG}8rN{J#w zK%fDUB?1y45U_%P2(kncAcV+H*uoMBAq)5Qd!PFk++XhV+|DoWGw(AqXU>_=oH_G3 zlXBVFUiBOGZOD}NPyi!ZIO-_bg~}4bkzO* zxan_pmmLf)YW)7=cL9N&>2|TY?dzw!H2?6WwXuY}=K8s@hBMmSGgDQzisiYY+}vXcv*Tw5HpTFbXLB~N zFMtXDPZ{=zdpr({DTyxuDXm!4>Ad#)SaCvjN2~6~H=g6z3We?64Tq7PiD)V5%dM6P zZT|SR-JRK1!us^3qIj%FZo=iBy)C=HEZzF(b0Ma6S+u*a?(in7#AQE%Q(Ikqx91K* zGM#Bo*XE_#F7;m|Y|$1yB8cKfzTCTYV$}$P41tbovS9TFQ)}A^&UrSH1XCD;Z&s}q z@3V=;9r2#DiXg7P*USGiSv)q4e`D^gO=_7_NZzcu?S4Uu;QQV+U91Zy2f~(lh@EsF{#9A>EgpiJmlIDvv zhBW$XdU=0$%s5Xn0zUEA(qqVV&wgGDOWEF1-%JJ1d!Hm5mWmj^?37ZbwQ-w z<=LnYZxCC<{%a)Sc2Y}B#82B5>YL|~Hol7@&b(XUpgM}|=67WtJ?K`5O!Htt3}Cegdkww)A)58q@=^qUBnnfLkEYr6Vt1q!g@h{w{Ey$!Jkuw23Y#`^ zg)$Z0uDT0te|SvYje*vM_;0)iW*_x0t#%MgXeO`BH`YtV?L9ezTW_D6p;BUdo`ZrYWMS$fk9&t26?5BQdwGC$|Ix1ph{%7BJztTwx*StG;``Pkb~tg zc{UG`?G?+}eKDutjE?^7XNK>D6}ftQdQ$McznYmvw;GA%5!3zjTyi*eMgBfH`CYK{ zfuz>MoMd_4?*waCBZ~c65(t8YLg8CgB>63a8KHgKE*kBfdI&XmbTIj>=i+lGdtpyh zUbC~kNbW!(FcXPKFHDbkK5%>ZU;r>{L|~#KH~*yxJfWg5)h6bxxHhSIlR`-#-Zjm! z*MW}GZ7q);aPHZQ-FRQ@OxOx*lC6KB`Ud%y2)Q2q-?G56=SVH2 z5ihEz{jr6-`u$32h*bzni_ur(eiCf%fDia~=FQqff$vLJe3 zQ$wv_4kx`DsUX3>o7n^JIR=9<0+d^{+|jTjY-pQo{~@ExlErT3Q3f*D;DIF9kFlCTPEU@owY7MfqWWm!VmQ+;XD>`>F;H zq|2r!TX*HHWyCdkQU9y&;4(dDrnBgB%YP?=A{GKUL^VucVci);u=91<&&=YdD=#_ z{&w5;egs@ywG1#|_c{Kf*%A!>8#%qOrA(I`9^0xh`N3DQzO`W1V=0c&cbqX6C)51;>6oO?n>5Y(sU%rXDdwSIUQoI1~Rw3S=!`8!+8@8`;Dm2 z(wCTVjnr@q#vWbE)C5QHgC+ePNg%oOeXN%sMiUHP9`#5u7JDE_^#h9*Om<87dR5fN*}K8F)JSmtUbKBvI0*WKMYkZtpQ zEY5r-@0|--zq374z~xwu-|ybmGFtu~S?R>zhaGmZOk}8!`oeP(_`cXh{uqX5RPhI#T?C z`D77p9Al=(_nuLw%ueYPnwfI_>JzH|g0JdA8DQBH*CgxU3hY;Mgv9;fhS#ZS-5OAVRkR|6;&9UXI>Ht}h?(Y*ec7Pe_CzuI$(FVEQySz_)SmU29DPd!>R z6LqK^gm1Frw;N$e&5)j?zQ~}Z_~53B&TzPZ!C-i>Egs!r7~~kQ$Q`n+S`bYc*3#k8 z+tshwbTk-D44PO~5jGrBp{d0WtI)3vY5|TZ(swa|C6d1D<+Zru{rHC9DXU}jS~?iK z8zv~&rN0_&p7khz<;-Ctn4QAuvrQ9Zc39td@4v0Qf^zy)FdCDk(yEN8l68h3Y+t@S z->~0nqpIFsN79g*Gb^lqS};+`0@~r+xD1=4<5E^CNruyMQ7@Ro)-HGYGNM9SAH><@ z5$}l00=q=I>_B(=*8VV=^{2|y&jzj1lW$-jCh_5ks|Zy46jU^JmICqT61tZ|PasgDVu0#6v+%~nrTqGt zGbdPf)(khjGE?5%tS1D(pW{};#6j+w)jQklOrfxfcukKKRsHn!vR}*V_2!8I3LhRn zPcHLopezlgxL-tj=@lvbN~KAT;rPUfiF~#AmG7Y-?yHb|3S@hYYOhFJ2GwgU4ZXXZ z5P9YmsVAIx=k+Pss+cWp=4`1f#n`RCQbsSw&%1wruvu8KIUn=2tu(u{^a zk3A@#yniY34IH-Q4h30X|1f$R4~(qARKSulZ$wock!EzZV#)gMqn9v6^bZdvY!S@W z)$qp=*5Af&X=EgMzjRe8%Z$(f1K#bRe0X(pcLb0MgMwf|vD91)akU-T*95Qm5f`L3 zcHkd+k>T=f#zVqunNc_dz6}XK5??ik1IG<3XO0?|(^+`z3dD%WRCufciAr9$aum?y1CzbYJ+-UOzXD9njte+H4Qz zS9-_x3e$ZQEokp~f3s)&f2%)!cK$f)bGr*>M^zUsn!`K+H8NZcl4yhP7tS3!WejW8 zA;zq&Ci&J_Y=c@{n`OTHT5oxKYS>5V1^(7Mf3l zzNodU8xmIL$u4MPtEk16udI%BJU7cqLe=ykLslTCn9GVA@m$!u`z^B6yMosImvaOd z)bD%Q4H8^3HlNb8i>X8kbRdnYOndOyNx>NN7U($E zF%@y_VAAIH+Em1BclPilK{!I1&1V7sNHS=@L6NA139DeJ={v^zz z^n&)Ukh0qLSQ}%Gr68Wy4>TFm)sCCa&?1t6){!*)GCD@igo5sB-e4zuBy(iSAwkF|Ej0N1cWWQDmyN`pY-UzPcC8uFCuTruOr7=I;= zdGp*&2X3zE3owGdjpN)I^EIML=7}Q*|dBS`nPs$ z^b2>@(4fYD0TyI2(~?TY!P7I}PZtN;RH{iZzPKUs=}Pl`<_k+OvRiRMe#;+eMH0Wt zeX-H{JdgLAfBe0uvn}{-gRZf}NglN;?|r}9Ns@I2J;}-nj{se?ANnI1%8wtflxVcm4l;9!*%}nBx6WLlLOQYzRmB~nMppfDNbY0iimvmjt|U!z z<|esVjQl_JPp%BsHZJVPWmx{IB2O@2=KcV*B8P< zxH=N7ci>HcY;<&Vj0Vc}*eu4VhC8NQ8Vu&DV-9bm-YoteFr%$_?8@#AZ8zS&!Y~N9i5Ad(~bL#jg7|#?~*YW2mt|9_(t~` zUB-77VAm&4p0Kkn+d28|lwaexoFvl?qSbdo-Z~BjkG`N9ET)Awy5hqKl3$b)K2=ta zPZm45r__0WqKsgh@bhRR?_ozWjsbFd%`(07n)iMi~A?&%vh^H}l?z+HTes^DGojJEn)c+kcHY4E_!(Hd`|k22s@_pMyQ z?#LT0HSghnZN=V>)R7#blC3HV7M4Pcv!~~z__9$IvPqz4RzF;4_rq})Yb!?9@xg%Yx%%nxOKJ-H#eE;Ky)Le$v zfx-h0A&X%Nc^-xP@vvij)KK@6kz|{{kfl9KUvS(ggjfWABFzK3@avSqe8W@A>&zsD z-O2AuFF_xKz?+8lx>1C$+oP@#Q-U4O;PfQ}q0Wl={vr*FQxpuvl9^Zs z>F1m*L>}v=8_#F;y#`Z3@yp+5e#CzL32Tlp^5yt$y+$H6fNP!T-!fD0@EiW}XzwC{ z-CE>^%^99jLI;ld`&~js;O=BiBn@{>8bZO6$4QD3MCVwZIo(XjZFG=cd|>CfJ;F~& zFCN<_r0#!~u5Ihln`hft);gRSy%qtGSpKm<7A$ulsHX)3Lk$lWGB42%rEWyIwXHaKnCD)23<^@z#2QyVo^yWBCl4IgM+e|v zfOu=FgTzTrR?&`q6RiEoLO|idV)d}N6T41gMIUPXpwi+_F+B1Ct+Bw{{3DBz;?eyfQPA7$2nVM(qc04weQHReueF_1&t=_e5aS4a@X$b&t{4@QUgiqe)T391~e5n=F&T@lMA zd|M`&%O}w>w4LZL?s+Ht44ni5n3h%9MsN6bs$^eQHS?@ORmayMMK3?`ZtIzMRsJ2J zE&t55LKLeiKrZnZ7{u{Fag~}k zbxd_u?rFv8L&uM>_8OJIMFk*yasEqzXJZ^Au@QSjQkG}FW4%xk_W1xJ zXLtU$F!Qsu-(;El1C^nySjA&bd~b_jT;k2aD`UY&39G_jK^@+-|AJkja`7 zVF6eCS;27VWQtzi_GK=;#1FqPi?Z8P@{HGqYA=)o1L|(J9d=37pUoMCZ2^R0bjjjW zLSs&413OsJS8#swbH`7Hw5E0T%H6T^-t&AjwZwiEpR|J)+6u7Kid^2jd?NX0OKlQy z;(wYJoKIS~UbM|~9%?)I{b<%xg$EdT@^H!&A87FTRYFj2o)Hjn7y_w-bWH;jrpV2b zs7SPon!g;!X&m2N-oJl8!q*}0LnZ0ka0fZ@hr24vyGb8i`*T zu8Nm!uf+r8r+VYlmnpfGmDyroq)-y z1^3;F!!9;!T3}a@=Fh7u9_VEFYUmX-9(OuhMnIB3(~|j;8DGT=;^)}aUu}W8d6}%b zAmmX%I(KP@5Oeqa(zPN9@Vq6fLp$MArFkJKWa-0a7WDJjLE`AO$#;jqYoBwY9F>E2 zVB2LaJ7vkq^#F7Ob%YO8Kx{Ri*dGpRSzYxX?OxnV;1q2Sqo(~+`)K9m1w@t*sG&%Kh9dm@Mce1aAyq;EQ2S8N6Jwt|4{Q8UX6on4MSHzHmkqjR~qIfJ#@B*>(l-6B9XaL?QideF z`a%9g&p)BWCEpkf_S{P}lxHfv;e|%F)eR)s(qpM5D7~9gfnPup)?VsR&O<16n@sq& zshYe8D>|X{ioeNi4znN*EnN3J5@s4tqNpY=xlYp<74WTyv`@Vh65^MW+>!8E^#~I4 ztHh;<>AEIn?w63`jS@9keS4Yp@};pLaa9%!SH#T)!QYhiNBhu)Prh8oJt|Kd-$TcJ tuy2kz{bmx>9Zo%+dsL-xbK3QLKOTM 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 Date: Fri, 7 Nov 2025 16:58:33 +0800 Subject: [PATCH 21/47] 1 --- keyBoard/Class/Home/V/KBPanModalView.m | 63 +++++++++++++++++++------- 1 file changed, 47 insertions(+), 16 deletions(-) diff --git a/keyBoard/Class/Home/V/KBPanModalView.m b/keyBoard/Class/Home/V/KBPanModalView.m index 0f5e9fe..17fd41a 100644 --- a/keyBoard/Class/Home/V/KBPanModalView.m +++ b/keyBoard/Class/Home/V/KBPanModalView.m @@ -24,6 +24,9 @@ @property (nonatomic, strong) UIImageView *leftImageView; @property (nonatomic, strong) UIImageView *rightImageView; +@property (nonatomic, strong) UIImageView *leftBgImageView; +@property (nonatomic, strong) UIImageView *rightBgImageView; + @property (nonatomic, strong) UIButton *hotButton; @property (nonatomic, strong) UIButton *rankButton; @@ -169,11 +172,23 @@ [self.bigWhiteContentView addSubview:self.secWhiteContentView]; [self.secWhiteContentView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self).inset(16); + make.left.right.equalTo(self).inset(0); make.top.equalTo(self.bigWhiteContentView).offset(47); make.bottom.equalTo(self.bigWhiteContentView); }]; + [self.secWhiteContentView addSubview:self.leftBgImageView]; + [self.secWhiteContentView addSubview:self.rightBgImageView]; + + [self.leftBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { + make.left.right.top.equalTo(self.secWhiteContentView); + make.bottom.equalTo(self.secWhiteContentView); + }]; +// [self.rightBgImageView mas_makeConstraints:^(MASConstraintMaker *make) { +// make.left.right.top.equalTo(self.secWhiteContentView); +// make.bottom.equalTo(self.secWhiteContentView); +// }]; + // 顶部栏 [self.secWhiteContentView addSubview:self.topBar]; @@ -183,8 +198,8 @@ [self.secWhiteContentView insertSubview:self.personImageView belowSubview:self.topBar]; [self.secWhiteContentView insertSubview:self.hgImageView belowSubview:self.topBar]; - [self.topBar addSubview:self.leftImageView]; - [self.topBar addSubview:self.rightImageView]; +// [self.topBar addSubview:self.leftImageView]; +// [self.topBar addSubview:self.rightImageView]; @@ -218,17 +233,17 @@ make.height.mas_equalTo(54); }]; - [self.leftImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.topBar); - make.top.equalTo(self.topBar); - make.height.mas_equalTo(54); - }]; - [self.rightImageView mas_makeConstraints:^(MASConstraintMaker *make) { - make.left.right.equalTo(self.topBar); - make.top.equalTo(self.topBar); - make.height.equalTo(self.leftImageView); - - }]; +// [self.leftImageView mas_makeConstraints:^(MASConstraintMaker *make) { +// make.left.right.equalTo(self.topBar); +// make.top.equalTo(self.topBar); +// make.height.mas_equalTo(54); +// }]; +// [self.rightImageView mas_makeConstraints:^(MASConstraintMaker *make) { +// make.left.right.equalTo(self.topBar); +// make.top.equalTo(self.topBar); +// make.height.equalTo(self.leftImageView); +// +// }]; [self.hotButton mas_makeConstraints:^(MASConstraintMaker *make) { make.centerY.equalTo(self.topBar).offset(3); @@ -251,7 +266,7 @@ [self.containerView mas_makeConstraints:^(MASConstraintMaker *make) { make.top.equalTo(self.topBar.mas_bottom).offset(8); - make.left.right.equalTo(self.secWhiteContentView).inset(0); + make.left.right.equalTo(self.secWhiteContentView).inset(16); make.bottom.equalTo(self.secWhiteContentView); }]; @@ -363,7 +378,6 @@ - (UIView *)secWhiteContentView{ if (!_secWhiteContentView) { _secWhiteContentView = [[UIView alloc] init]; - _secWhiteContentView.backgroundColor = [UIColor colorWithWhite:1 alpha:0.23]; } return _secWhiteContentView; } @@ -428,4 +442,21 @@ return _underlineImageView; } + +- (UIImageView *)leftBgImageView{ + if (!_leftBgImageView) { + _leftBgImageView = [[UIImageView alloc] init]; + _leftBgImageView.image = [UIImage imageNamed:@"home_left_bg"]; + } + return _leftBgImageView; +} + +- (UIImageView *)rightBgImageView{ + if (!_rightBgImageView) { + _rightBgImageView = [[UIImageView alloc] init]; + _rightBgImageView.image = [UIImage imageNamed:@"home_right_bg"]; + } + return _rightBgImageView; +} + @end From c3acc11f6a25b6e6dbfb5196b8bbdba0d1d65c95 Mon Sep 17 00:00:00 2001 From: CodeST <694468528@qq.com> Date: Fri, 7 Nov 2025 19:32:02 +0800 Subject: [PATCH 22/47] 1 --- .../微信图片_20251107154239_220_763 1.png | Bin 16981 -> 0 bytes .../微信图片_20251107154239_220_763.png | Bin 16981 -> 0 bytes .../Contents.json | 4 ++-- .../home_rank_1.imageset/home_rank_1@2x.png | Bin 0 -> 12448 bytes .../home_rank_1.imageset/home_rank_1@3x.png | Bin 0 -> 28937 bytes .../Contents.json | 4 ++-- .../home_rank_2.imageset/home_rank_2@2x.png | Bin 0 -> 12581 bytes .../home_rank_2.imageset/home_rank_2@3x.png | Bin 0 -> 29419 bytes .../Home/home_rank_3.imageset/Contents.json | 22 ++++++++++++++++++ .../home_rank_3.imageset/home_rank_3@2x.png | Bin 0 -> 12162 bytes .../home_rank_3.imageset/home_rank_3@3x.png | Bin 0 -> 29108 bytes .../微信图片_20251107154240_221_763 1.png | Bin 17482 -> 0 bytes .../微信图片_20251107154240_221_763.png | Bin 17482 -> 0 bytes .../recharge_now_icon.imageset/Contents.json | 22 ++++++++++++++++++ .../recharge_now_icon@2x.png | Bin 0 -> 17237 bytes .../recharge_now_icon@3x.png | Bin 0 -> 43871 bytes keyBoard/Class/Home/V/HomeHeadView.m | 16 ++----------- 17 files changed, 50 insertions(+), 18 deletions(-) delete mode 100644 keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107154239_220_763 1.png delete mode 100644 keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107154239_220_763.png rename keyBoard/Assets.xcassets/Home/{home_left_image.imageset => home_rank_1.imageset}/Contents.json (68%) create mode 100644 keyBoard/Assets.xcassets/Home/home_rank_1.imageset/home_rank_1@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_rank_1.imageset/home_rank_1@3x.png rename keyBoard/Assets.xcassets/Home/{home_right_image.imageset => home_rank_2.imageset}/Contents.json (68%) create mode 100644 keyBoard/Assets.xcassets/Home/home_rank_2.imageset/home_rank_2@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_rank_2.imageset/home_rank_2@3x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_rank_3.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/home_rank_3.imageset/home_rank_3@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/home_rank_3.imageset/home_rank_3@3x.png delete mode 100644 keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107154240_221_763 1.png delete mode 100644 keyBoard/Assets.xcassets/Home/home_right_image.imageset/微信图片_20251107154240_221_763.png create mode 100644 keyBoard/Assets.xcassets/Home/recharge_now_icon.imageset/Contents.json create mode 100644 keyBoard/Assets.xcassets/Home/recharge_now_icon.imageset/recharge_now_icon@2x.png create mode 100644 keyBoard/Assets.xcassets/Home/recharge_now_icon.imageset/recharge_now_icon@3x.png diff --git a/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107154239_220_763 1.png b/keyBoard/Assets.xcassets/Home/home_left_image.imageset/微信图片_20251107154239_220_763 1.png deleted file mode 100644 index 30478778828395df8558b44d548641d39984ae46..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16981 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_rank_1.imageset/home_rank_1@3x.png b/keyBoard/Assets.xcassets/Home/home_rank_1.imageset/home_rank_1@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..6016a35b5dbf3c16ff4f3441bd9fb65e66efeac2 GIT binary patch literal 28937 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_right_image.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_rank_2.imageset/Contents.json similarity index 68% rename from keyBoard/Assets.xcassets/Home/home_right_image.imageset/Contents.json rename to keyBoard/Assets.xcassets/Home/home_rank_2.imageset/Contents.json index 2f6b25b..90ba1f8 100644 --- a/keyBoard/Assets.xcassets/Home/home_right_image.imageset/Contents.json +++ b/keyBoard/Assets.xcassets/Home/home_rank_2.imageset/Contents.json @@ -5,12 +5,12 @@ "scale" : "1x" }, { - "filename" : "微信图片_20251107154240_221_763.png", + "filename" : "home_rank_2@2x.png", "idiom" : "universal", "scale" : "2x" }, { - "filename" : "微信图片_20251107154240_221_763 1.png", + "filename" : "home_rank_2@3x.png", "idiom" : "universal", "scale" : "3x" } diff --git a/keyBoard/Assets.xcassets/Home/home_rank_2.imageset/home_rank_2@2x.png b/keyBoard/Assets.xcassets/Home/home_rank_2.imageset/home_rank_2@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..68a37c122d7adef256e069df68ccdf8ccc5461c2 GIT binary patch literal 12581 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_rank_2.imageset/home_rank_2@3x.png b/keyBoard/Assets.xcassets/Home/home_rank_2.imageset/home_rank_2@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..f8b8958e296d06701d21481557dbcca26ed4e663 GIT binary patch literal 29419 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 literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_rank_3.imageset/Contents.json b/keyBoard/Assets.xcassets/Home/home_rank_3.imageset/Contents.json new file mode 100644 index 0000000..2548fdc --- /dev/null +++ b/keyBoard/Assets.xcassets/Home/home_rank_3.imageset/Contents.json @@ -0,0 +1,22 @@ +{ + "images" : [ + { + "idiom" : "universal", + "scale" : "1x" + }, + { + "filename" : "home_rank_3@2x.png", + "idiom" : "universal", + "scale" : "2x" + }, + { + "filename" : "home_rank_3@3x.png", + "idiom" : "universal", + "scale" : "3x" + } + ], + "info" : { + "author" : "xcode", + "version" : 1 + } +} diff --git a/keyBoard/Assets.xcassets/Home/home_rank_3.imageset/home_rank_3@2x.png b/keyBoard/Assets.xcassets/Home/home_rank_3.imageset/home_rank_3@2x.png new file mode 100644 index 0000000000000000000000000000000000000000..d9530bdfb74588d29a9f553b5a3ca6fb9799cba6 GIT binary patch literal 12162 zcmZu%by$>7wBB77Ttd2=WeJrA1(XH}Y3WW0k?!t>rIbzyQKY1MrIA>=ySqE@{_gYK z|L$MkJQL@<=giDEGv~aKDoQfXu_&4+6r*c=LDxrsip&A=Ns4vx#>3 zNH^^wqZ>nW(_>Flgn`2EU;yk*j2SvcAX5k|1UH5QHfY6ReK<1UqD-fecIV6as;R`L z5#Cx<^3tE=rvK{HtLLiqsAb7JZHy?ln^UCT#@FZgLb>~y+k=2e#o3G5zaCFRsXdjU zVUkIw%k=#x9s?%!*YLl6Uo9?HQ)=`d@>bM9---FiX#4y2?gT0Cb$+^t zq!I^c$q@U_SJ+*YJ&zfDp_sZYZ4sbP$VhlB&FN11;UzBn~f<)Xq|XzCq>-Rp}9@_bji< zrz;uaF~LzI6Tpvc6iXZssT`g}+# zfM@nt^8g%(gGv9h;^29p6IcPTVWlnP{9n`5y5`FNQ^5)-eYW>CR6^XQ!Ck+(1 z;6S~MwfGpo$GWtmWj^xsglmcwNyM*N3rICP=;EaXs5m^{z}^N0$abMwv%w36XqUl! zYK{^}B&Nq-u2Dt{A{LV_x~r|0NWXT)+WR?xwaz`%+auwp1l?>3!Hc;rLR z%c^f$tO{u>+@YbSJ!`5AfQz6;?$_^>5@aPh82>UX)QQlNfMj1;4o+aZ~?#Oo16?Vhyi;8`Q)i(I~Z&PQ~+s2EgJQ)_^I|93V^fs!`b%MDEG53 z_-J0=K#f7EoI#g9^8a~oXS1puNd_cB_z+ZY=}`ufl8VW%*@fB@f`hF62^2$LK4DwC z4SaHJrIO{AJBffwmD|d!tjKVm1k;(U{%zx&QE#q4aLu*RF%4Yv4R2pl{(fDurE=f1CI5yb4wqVbej-J? zmAI(KT07$AzFZ#pGWO?I5})UNyS!N0J2@8LG9mNX?L(Q9Z>0+1SIWtSUl*&|q*oGh z%7?vm{Er~g&}Vn%C0Ui{ESM|WE$(tSj+B7PGtB&~lSHs2 zO=?tD_g|Gz?Aj`E#;FZ`snr#&(w&Dt+Lgr$DG`EAcV^_t{`xY)z&(&dh5gkVSt){6 zi?;(TCx?4vah`9#l|E*r)pvj^v%(@tFKQYqMygYYhOKN z7^9i45U6nKl}t^(#wy5*c>&md{LIYodK+|e|C03Kz9HuD3t0PiSovPvnC*!0#i^D( zJ8+y24!9V7(N@OSAID404;=V@(v^`aY%3}4)YAo8NZBotb7Hi(p>q-pS)qfiCZo<9t?*~sSKI;PgghMT}GgWjQ z{ybUqueJX!R*K$QP^8og`GIry2wxjlMo5#fGPj>N5hjN`!;E>vr6;T4VZ!)GzT7(+ zA6d#kcQB|*92v1nLX6RcFPHlKtNayrsJWi0&k-u~kzN?=kV%9?gE*oTI`nvi$=xkP7C?ZhZoTq?#boBl zpVA<+w~;!_D&b&NX~WC8aINo-vOg9+E)h~gIAjo=$Dk>B;3HNjIVrLN_kBQXW{V!uySj^UWbqz7!LR|Yi{ zm^VKlbS~?_gkM+;@9!hgydBR|@Vu#(PO$3vf-9PynP}lTVOe9b#BPo4VY!MxK*X1a z?Z;JdYsX0c&JnX$p(+Rk^Kv&1|6M&5Lg7C`4OKmP#Qxk718V5cJ3T%Ws1|9xv^19$SF<4>P4Vl?#wPUyFrPLcvDl# z4Eo+HfXV2TVDiN~dxTZYSsXGo6PsJYDHpu88i|P`dPUq_+Z<7mPh^rUMdnDdc?R<| zZ6uA~h8GPdwee(QeXlax6)Ykeme8f==E|JDdJA_d80l>M6Egv4i6Uz5Y=ki(*F}m) zb}I8CBai#)NiL8Cj5o6c+-Y_uPcIvvfI-x9Sx1t5B4H~=!tm8RUzlIE^l4JAxQH^y z9hyroG$ZGtd`}&z=-fc9pDL-s)0H(e0!m*K4vay*h*fDfPB&p0D}+dF21YvKIByg? zTn{^LfMtT#N+Tjy1&#*o-mx$SFal=Th_S>daJjuBf>oA`F)RI}|agk_p0 zE4Rx>0N)0SGuvHnxqqM(nB-72_4VJ1Z6F z{7fU=>%_HBh5Q=X-Dgvi#lD)us7?V<^t4@V5V4&GwQH zRU^`u>iFY2$SnXX`3=WyT-bUVaM*UK`u z&BDOmm3390{(DA`3{M?;TFD99OCfHN4^INnhEqt>?aEt$nS=cxY^NGEM_h4t&i2O* zNJ_c1odbJNwuo3uy|cp*cXnzo^%zqcIh_pm!&r19JSt~sh&$7~S4FwY~Nf#hIHe>A0>a zLNQik&z&O5vN#=N*5-q6h7=8I-{WL>TTR8?wVv6r-OGi#F=5`{-(9WU8QmRS?}|;K=b>1EL>njkwfPQTKNVt!Q<9RfB5>d!;QAe=Dz-4z3t9qiGevx}#G=ut z9$Ymr(#&VcZBgXCQiA{a6rS1sH4v#pS32JOj;ry2TdT@3O^y<)(-3@8MLf zaZFG|)ca0qbknHPUe^cytAnmrNTJA_hb8;9$F_T<$F|-QqBo%<^`2X}u#5QN#TIoY z8QNJsk;}u$|HT3znZJWU#^eqz5v$vF*r6?_U=S@jwy z^W~SW>qVL*Wq8XiPSmp{+1_GWL5E{0SGfqmdssv%QaHNpf$oVU9PcnE8#Lz1AvdRL z6$t^=$De_e;%VM53qXnS=sswM{+bMxZ)((NT z|NRNQ>;g~pjHt6&Sw4rTyiMY?lB`G`MEG%&8uOQwjkdyQAG3WLgVXu2`2G3ZQiyc) zzy2X^JPLGvrXYOr)Zlyo2o7HJc5|wRj_7ErSEeSJ#F{o&etmy;#=tr;9>fENmfb}| zxFbLIcV8VypY)2OfQg+TI0P1tWc|nl1Z1$^C8|>>L+5$3w+MG;pZ{2y?|-vKbJRv~ z)Ow+$e=$dAc5ji{uye4zd$1MTV}Ivn*Yn8lrr3r!Po?1B+?vjG3YCZ&*29g2I7Psz z#XHG9)$HcmpqF_mB6C~fBDB4=95`ymLMj^fIt;%aO7OjjvRY>qYbU`y3{!B7zjp}v zw$)MdgD&NvacrnF{Bc{p{_qgFnl-f$bGGEkG}OHPG1KpFSB!o4W`=0UoahzOak4Ol zVY62yI{^MVoK;kd!u{WzpupzQAU4CgEjN~o0ENYj%>;YmUQbiipUT2NA1Au^cF^fh zC%Am4j>hMbj7L;sLEgeU^=pJybZ;lyNE%*KCA_-;CgeBLscfb*>q%7uuCy<7U9)CSq9 z{ohqM_hbd^KJd^A#zanKzZd$zFUPWJyw(FJQ*vJ#I77>6MlOj5E^)7B!e<6J#0Fd+ zQ-ysdynYVB+BQW+T9~G@w%H=Fs@99QQ~cQ#jF&&lvWp5btD;UmrvV_0^x9d;k<$FF zxV_mmKBM#8<>4&c_uY?V?Qb6x9C5SmN#B>~Cce9xWmWq6Z$n+FJO6}x{8vVqC(t|u zd!O=`Y1$z67mp*Xh;feZO=`@^e5p7SKQ~113r!cP+ z_8z%Rsg#@&N-aT;5y75SK{2W|!m`m)YwDHw1UhsCsq(F`=FBP-gKW;`GBNvJN}kHI zE5O?>hOe1s{tP4AZ(Dp8@0hrw=kXADznt+zwDcJL6hP;*R_?IBonUPp>hsfeqLfa& z)#kH=@IhEqaDl)VL;uCUg3k_@z1<0#!+xTPNed)E!KmwH1dBQ5Tuy)1ZeWS7)06%c zA%fHYK9}Wb4DSJe6u#tgYd#l}#&!Pr2Rc&YW9jfzBiM9Ohzeo%E|XntyIwaN-WprW zzcsDeH}(ALx!b4xAi`L=i*Qzmr&2x^fV8K(M!$eZTzzAi8*;2QeWzuA>55(dM{Qi! zV}MLTBNl|OD)%*2+Rc&iKxiiQhXh7VZJw+B-wpox&4VZ^`<~Zz{>1!`hjgoEM)&+4 zM_KM_IJ$>0>xBDEXMNHIxFy}As?+ybL(e^Kx>0mfadihl7^$EEA;JG54PJ^!Jb z`o}}$NAM3N?@7UMBhg#67#gZHH@{in7yy%Vv?r?S-m$OUhwSr&+>|;?KpD}W6Vyhm zu5#8zV*tuR34W%B8hEzqeB#uFYDv&WinVYo_h}_ue!<InRj(K?Kbae z(W}@lF9YrNoza$Vt%}G81#w{IDz#vRLWAP%Mo$E*Hz=?I#QH4x%+Of0rS^eljc;mj zI07CCgP8{w?`6eKlU$BruNa|fWepk)(>-KHyatpbT3H)p<6|lCmSdlpq(7b1gX$u$ z?T1JDzE|o$-VUsgZ&8_)1^;ByR{3X3^8=vW))yIY?pzM2U)tFxLE0b~tN1f_4qXl_ zbiX&{qy5t*-Z<~|td~l|TJpsjyo@$xTau6PJE=*~5N;>Ti%*sQ${LpLHK&~qVBb9B zE^|k#ew&}_m32@m?;s&+gm$qHfU0`4d-mZ z0p5AlwE@pS4usD;+Wc4p{4Obv52eLe8Cl?uhXlZq?TrS(I>oADIm-PXLgb}#2?D>! zVg4J(CR#g&eQKU``*O`n`|$WMeLFt@BG+~QaO#m>iznxmJhhdTm~*HwAT)9J%p~IT zg)A}-4$u4HFWBi{?DVg2u)`c|{O%?JApr?LeEgKkDpd_KU5ZZ9*J#hpAd)9!g3g$8 z_mQbVDsw#k@H4+igVd38KCW(Ecjr94m^ynRjC(wAuP?YUdzxbKI~ym$@!u4U_Bf{U z4{f_qe!}7udW5J6`@K78S3J&3l;<`oWqC6i$w5V0ud#|5S&Ra4~Chunf@D>ln3%^@?Y>;G;b?k zI;eZ0_IIBBj4>1+>)+L)-yeA(SGla`KXnY>E2Md_5KFbjzpP0a=v$|C*4t-V49nh- z9203b=75*a7n;7HSASt8@c3T&tdu0ohm*cd=V=+1PA-|yV*jCcoE`LDg{g@`xd-NH zsl`7ue~vqU?w!-Kt2SBn%<>57vMRSarbx8Y;s}PGMDxXpQKnr3(A5?~qjkz1u`JA8 zh=W=7x~MdG&8%n7VCX7>^Rt!dx;88QQ<*`M;c>aWwA8QrPHW3(3~Tjwu*@hKDq_1K&t1&s$J2j0{?c86`{11eeoMdRcXwlS82RD9+RIHz z6-~8hP5KIpH9>$*bq<(7RqW3=PY><8DaI5=i4W2j-8=-YR)cc&r`>Z7Yd=JymmVKD zm*Jwfgd+DhoXl>>6o)OcM`F6$`JCk<WY&=*r)OAi2$7KA zA>j7qYZfCnL!WAg6oaA=Fw&U#1$Q*`rOO`v@A-I$Gkbphhd1s$9_#Jxs{E z)zRWgl>xt`2*^Mjl--O<|%y38koDI3f;A@LMo*${YOE<)?SzQ_f`u2!cghy1xx`MzaCfiRjXRd zC*aXymeXTl@9a8RVGd?4SgIzMaVb=d)8`o$Z2i#puJ@prdkuoW4hk_4OmqZwjhL~X z9yp0JutNhG6B}fs$+c2bJH@H;9Xs)7qKRYMG@;EAIYo>n;4FrAAKU^zvrlWR&db9Y z0{;?hj|(#u`Mo$d@e4qtaU)HzH10xDSQJ@YY_1s5i2;7nHN*4{<6wD$N~fs9G5y=q1%Zpw zloQWbS8RYfHZwuBahkG6LNI;jj(rD(Eb#VLjgx_sq8&K4m16(El@d@6EMmtTV13e#S4`O*q;G^TtKpnzdCf zVO-Ks17yz%`b|18%YJ_o+#tKE@!rR=hfKvv;^1(O!qZ^w=7Z)CwvSm~?>E=R*gl6K7s8!kxN42b>8F6jU!t^`o(u+}{m(BL}w+_1@e?neSr~ zAwc{dOHmW`%XM~Lh5WwMudWvn=(<+Xy=M?cM#kwDOT5}Ib75qLUKGf&>Y($ta?S2f ze$)aUko0C+Q)Rz+`^>9KcmLr0o;Qu^oUQj*+1@8i&CRZ_frVTZ?EY0hbxYHJhO#?nr&Mp~|3!Kd+- zyUP{V*1UyEXO>#qCAh7=>TIjoGdD+QQ+SY|%Qik=;&$38pG4V4`MW#lm&TQRk(?S! z{dhLVp~lV`-vH3^aep3>h56rh)0NEN&1XN_9$xA{j))?d;aGcu%G#}V!V*d<8_>aS zee&=2R_sb5Pqy{TIrCwIIoCo%Ew>mrW$#GDd$qbJ!>a5gu>z2p@$7SHU=xV1w{!QW zsb#_;qO#^YY>%m|oUWUr2l}NK%~ZO-^qsqJv};bj3^5FKe=g(5avAE<_CMJW*!s0M z)A58`b~{eDMpNfcxux$(Gnwf~>qM+ttD5D15PZX8@?wA#c(VoE!e}|4yHK6oArAFA zMa>vhin?e_bomq4qSwKJz>_fl%0RzA_K%7lquNXJkOt~Z+HBh}H-8OOs9qzl5?e;IVuo#tXS0#OOVwi>7P^fmmubV_n}jS_HHO>gNqWHt?%C> zz!k;Ex~qe5RC;_yulHYFF@)_qfV5^lxt^hd9s(W~?VkJ*M@p#D`izU3CsZ=vyhH?h z=6D|GSrCGqQNRIg{AuRI8lQ`o?N4`LfTCRnL%a@3di2P7vPC~VDnp%C^e2b|1Esl3 zY-02a1*(mGOkH!hODq6X!IZmhBus&;(-{cT#xc-I*Lj~iv1<#msv)g9zhm_40^Hj4!lATP@P*(Ajmjl&H`di9GD1b9>)v}1qWuVh~d}Qh~hEte&7S&gGRp5jiO+ zTney@{;eoff?rN zb2kisV70!6KpYfnq1QNH@7oXj)KEYX?VnVJVGfjmvxQ8hw9XPJ z16ii`^W4NyPUc{@zDOlPp%naUfmeeKA_h#|)pXl-zbOq0H5sd&RssCZuniNFMlmPM zt5-^AF;QK?&*m(N0})MiznbTbuuVK7z|}FwCZEBqcM|Z4p7kXIsU6EHd9klSG0UpI z*k`}tMFI*g#}P)9TD_7>uU>Lgt(kwtC*|qLFFcV2=SuVOf_WkU=(%=muNmUINoF18 z-R(b%P_;$|)w7vZgYdA#SO)V*u+%I(6io88?^aa_#TwqKo4g~%k~=C-U11=eC5TG| zBV3y@*Fh>uMw5<2Ph7UanYMv=QNZD z;?s(1qlQAnmY@EmJc2SQQW_c-?FG!S!p*_5M&~-IE`(u{77nst1ROavErA#Oq%XzY zA<60>B^%_{$wVOb(~p!Kq$7zER6|;KtAr|WJ;#05ONmnYyQY4^{l9{>!?gG$ii=b| zZj#LAN{*}35eSlfZJ);wFN}gTW8+-nNP+6c!^M{V|5SjUd}SudM1Mc(=%F^CJr8Jl zDo$?7QotPd8CJkTPHW(liZKJGvB$MPVHzgY831CV9_ zpf2wIk>^waff{0#{P=D#!Dl9fQ-TJ1UEUwL1#Ggx1zmGQCS~4t=j`WPRu6MBn~^fD zWZJFCE$=W}zC0J&@ojv*&)kJjl`tJXDInj}DGU8&wD)6;DhPC(cR&gP5@?vGc=LJ? z4o~p6slR^9su(F|eTg@yBzx8`Or)FwHg5SaI_r!OFN=vtYvfo!i)N-kk-CcP>Y4R^X@IcP`(2vOGB5CanorLKf|4KfW0)wU>o{aUZ&aC~18U401J zHhJX8wEvanv)GEE!7^R!TIp`2G$q~AqMtRCUC0uv4^zyZ%IqEqERj$5wrU-=%Hr|M zi3MD+vIRx%L#LgTEVlNhruywgrkHyFx(0yX8lQzq=MEI1NLu-Y@&vL{x^g*9;lge6 za4+QRe%Eg`?)WM*O!|Xluyu%1zlMd#miPT$?ESpZ%9vw1=9i}r6EzZ`d9PW4P|W~1 z1XCVc3pvKN$S+BP?sm$96B}FL`e^{A`GmCbh900nU~r1#s$+#C(UySG6dQrpa@T~a}-*)Fsr1;SX7)HyxlQZ;D>zxmL z;hAfaY?a<#vq>k_jBtda1KX1GXu0U~VTbuI1u4;tOTr8fuc0k_v_7Sv7Eijjk$LtT zS}o-I9^A{V0}Y*{Zl*K_0XdwRz^9sDZ&_<7uA{9t=0<5)3RAP6G<|XSX@pYd`5TP> znfXo^*6eOx?BON&j6K}Gr++ZlQ=$5ikqDWmuu98l=jvN-&&OZ9I?|Hn4J`1Oo$Ms3;?4vX(~UE^{%ufM_ATB5%m z1?FT}w+^>q4g2I#2qY&1;UIDf-+;%@JXrNRr-;b6lU^_i#wlU^q;QFm zop~w5(eswO6?!;^4&oB>!@K(O<&ez3i4JJ@H+}3d{LwKoOpb4avpcWwe6LcrttgAL zcx|jWcSQUwR2?TeMDoQ+q(bM=X`367V#aszKA99zI1OuN!wOC9}74H4$AkX%}kZ%v4GsQ+C3{cIfPe+ zTK6f+JQuqp8>DbHTWmuoOWxmBy)jxFTD*64pCw7^4{~Ce9^+6qbY}Z9Pw4kR{YvYK z`w04a&gXAv`0$c@-8;*(*ZYNnj))ZCm#(0D)7ZnhdS1>P9}0@EKVBt*1Y7-j^m)gf zuNWM(s(vhO4>jJGY!t|BAiMM>ehW49_HfsJ^tfV5nwdO9SuV;MW|7J%a7FU%{e(KF zBJG0w9IMjbE+Z2b;VGr0`ThFYEaxt?5ASN|V+-==Fr~ZsPg4IyQw{EmB<_-ue06hg zXirtTD0MhD6zK`lX!|5yrha>YCh5-EE&mJsg$)txkNFw8t5RskB7b>^c&3x3ZEJYe zc`g~6gMY9oep{=8q22j^BxFa>@P@i4d0Og6L+XAO@ARpeU>=UwpIbc5ec~gXd(+F< z7PZ{ZJ{&<_ua394!}*24;R@Fm+67D1H=s)MH+UnYmd+~%*+i}%uS}QqN6*x#&-Gy} z8!sb&@c84_1!M`{cyj)_w;&etDklRyFqI44nk!fl+2-F@t zZ)xQ^-Q&F*xlce9u(l$CfX_$X$&cTzK0*qQmdu83|MubXjVBK{I?);`w%0v)3G42s zM3`ut3KPC#F6KQ;()c>7ls7wGw@~ literal 0 HcmV?d00001 diff --git a/keyBoard/Assets.xcassets/Home/home_rank_3.imageset/home_rank_3@3x.png b/keyBoard/Assets.xcassets/Home/home_rank_3.imageset/home_rank_3@3x.png new file mode 100644 index 0000000000000000000000000000000000000000..267bfff861c6887b4ce3c02fdf7c4de4c8d1cb17 GIT binary patch literal 29108 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%0Dh87ajxp4Gs3Rz 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