diff --git a/Doc/LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md b/Doc/LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md index fe9b15a..b534515 100644 --- a/Doc/LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md +++ b/Doc/LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md @@ -61,28 +61,26 @@ **任务**: -- [ ] 在章节运行时侧(建议挂在 `RDEPUBRuntimeChapter` 或新建 `RDEPUBChapterDisplayCache`)新增: - - `chapterDisplayContent`(`typesetAttributedString` 的一次性拷贝) - - `displaySignature`(组成:主题、暗黑图配置、字体设置、本章高亮集合版本) -- [ ] 构建共享内容时一次性注入:全章范围主题色;全章范围高亮/下划线属性(若 P1-2 决定转 overlay 则此项取消) -- [ ] 确定暗黑图策略(二选一): - - a. 构建时全章一次性替换(依赖 `RDEPUBDarkImageAdjuster` 的 NSCache 兜底解码成本) - - b. 移到渲染时按可见附件替换,不触碰共享字符串 -- [ ] `RDEPUBTextContentView.configure` 改为接收"共享内容引用 + `page.contentRange`",删除 443 行的整章拷贝 -- [ ] 高亮增删、搜索激活、主题/设置变化 → 比对 `displaySignature`,不一致则重建共享内容(禁止原地修改) -- [ ] 章节淘汰(`RDEPUBChapterRuntimeStore.evict` / `handleMemoryWarning` / `invalidateAllForSettingsChange`)同步释放 display cache +- [x] 已新建 `RDEPUBChapterDisplayContentCache`(LRU 容量 2,主线程限定,`RDEPUBReaderController` 持有):`content` + `layouter` + `signature` +- [x] 构建共享内容时一次性注入:全章范围主题色;高亮/下划线因 P1-2 转 overlay,不进共享内容也不进签名 +- [x] 暗黑图策略选 a:构建时全章一次性替换,复用 `RDEPUBDarkImageAdjuster` 的 NSCache +- [x] `RDEPUBTextContentView.configure` 已改为接收 `displayCache` 参数并引用共享 entry,整章拷贝已删除 +- [x] 签名 = 章节内容对象标识 + 长度 + 主题双色 + 暗黑图配置;设置/主题变化经签名自动失效重建(高亮变化不触发重建,仅重建 overlay 装饰) +- [x] 控制器在 `didReceiveMemoryWarning` 清空 display cache;设置变更重建 chapterContent 实例后由签名兜底换代 **验收**:连续翻页不再出现整章拷贝(打点确认);翻页延迟下降;高亮显示、高亮点击菜单、underline、搜索 currentMatch、附件点击、选区拖拽全部回归通过。 +> 2026-07-08 回归记录:高亮/批注/选区/翻页/设置 13 项 UI 用例全过;SearchTests 10 项失败,但已在会话前提交 5a41066 与 P0 提交 e4e629a 上复现同样失败(搜索 0 命中),确认为先于本优化存在的独立回归(最后一次已知通过是 2026-06-08 全量跑),需单独排查,与 P1 改动无关。 + ### P1-2 高亮/下划线剥离为 overlay(与 P1-1 绑定) **现状**:搜索高亮已走 overlay(`RDEPUBTextContentView.swift:759` 处 `buildDecorations` 传 `highlights: []`,注释明确为避免双画);普通高亮/下划线仍靠写 `kRDEPUBHighlightAttributeName` / `kRDEPUBUnderlineAttributeName` 属性由 render view 绘制。 **任务**: -- [ ] `buildDecorations` 改为传入真实 highlights,高亮/下划线由 decoration 层绘制 -- [ ] 移除 `applyHighlightsToContent`(`RDEPUBTextContentView.swift:617`)及 render view 对两个自定义属性的绘制路径,确认无双画 -- [ ] 高亮命中(`highlight(at:)`)与菜单锚点继续走 `interactionController.selectionRects`,坐标保持 chapter-absolute +- [x] `buildDecorations` 已传入真实 highlights,高亮进背景层(文字下方)、下划线进前景层 +- [x] `applyHighlightsToContent` 与 render view 的 `drawHighlights`/`computeHighlightRects`/`attributedDisplayContent` 已整体移除,无双画 +- [x] 高亮命中与菜单锚点继续走 `interactionController.selectionRects`,坐标保持 chapter-absolute(未改动) **验收**:高亮/下划线视觉与改前一致(含跨页高亮的页内裁剪);高亮点击弹菜单正常;与搜索高亮叠加时无双画。 @@ -92,10 +90,10 @@ **任务**: -- [ ] `DTCoreTextLayouter` 随 `chapterDisplayContent` 一起放入章节级 display cache,与 signature 同生命周期 -- [ ] 页面按 `bounds` + `page.contentRange` 取 `layoutFrame`;`RDEPUBTextPageVerticalJustifier.justify` 会修改 layoutFrame,因此 **保持 `shouldCacheLayoutFrames = false`**,layoutFrame 永远按页新建、不共享 -- [ ] bounds 变化(横竖屏/双页)纳入失效条件;确认旧 layoutFrame 随页面视图释放 -- [ ] `RDEPUBTextPageBoundaryValidator` 校验路径不变 +- [x] `DTCoreTextLayouter` 已随共享内容放入 display cache,与 signature 同生命周期 +- [x] 页面按 `bounds` + `page.contentRange` 取 `layoutFrame`;`shouldCacheLayoutFrames = false` 保持,layoutFrame 按页新建(VerticalJustifier 的修改不会污染共享对象) +- [x] framesetter 只依赖字符串、与 bounds 无关,bounds 变化无需失效共享对象;layoutFrame 随页面视图释放 +- [x] `RDEPUBTextPageBoundaryValidator` 校验路径不变 **验收**:翻页时不再重建 framesetter(打点确认);横竖屏切换后布局正确;`--demo-pagination-validate` 不回升。 diff --git a/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj b/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj index 96f69de..2145224 100644 --- a/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj +++ b/ReadViewDemo/Pods/Pods.xcodeproj/project.pbxproj @@ -7,508 +7,509 @@ objects = { /* Begin PBXBuildFile section */ - 00072FE6929FE581D750274713B42926 /* DTCoreGraphicsUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0372FD1824BC43F7BD6B337430201420 /* DTCoreGraphicsUtils.m */; }; 002685407B9C4D548571DA24AFD6E8F1 /* NSString+Paragraphs.m in Sources */ = {isa = PBXBuildFile; fileRef = B4A7F7402FAEE3A277A8716DDA115C95 /* NSString+Paragraphs.m */; }; - 00311F55CAC7A80476861A9A01A0D9D2 /* NSArray+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E5297E7F5769C61C1838962BA76D4F5 /* NSArray+DTError.m */; }; - 00C925B23F15FD8CC68036BE6E02D58D /* DTBase64Coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 519087D9CD0F5E440E6D2C3B1AA1DFA2 /* DTBase64Coding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 00CFA968BBAE011A9F4777EB8A2C4214 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - 00DBA2F5D7C2191FEBE9FCEF81D0A121 /* DTExtendedFileAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F75437CE9F9324D315E417014797C1D /* DTExtendedFileAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 00CB711CB9D36AC4F7C74C396C5EF095 /* wxread-dark.css in Resources */ = {isa = PBXBuildFile; fileRef = EB7C7A670C851744ACBCA45DA70795C8 /* wxread-dark.css */; }; 014449AE560FFF3C628FAE639D043004 /* DTAnchorHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 148B993AB228816D19FCB7CD13874C83 /* DTAnchorHTMLElement.m */; }; - 020906DE38AFEC75CD6DC1402F8E97BC /* RDEPUBSearchModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E07EEE45C5439A207C5647210A4A7F /* RDEPUBSearchModels.swift */; }; - 022AC87F90411AB1565BFC34CBD20C77 /* RDEPUBMetadataParseCancellationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB992485D17345E01FF784879C39CC29 /* RDEPUBMetadataParseCancellationController.swift */; }; - 02F25218F72D3AD6CAFEC4BB2C0AF6DB /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - 033A34848F829FA31371E93D1AB4827F /* RDEPUBTextRendererSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E000FE659A8C4AE6C55AE7B9CC951AA /* RDEPUBTextRendererSupport.swift */; }; + 018DF9B10C77B0F9AB03693CB8E9FA7E /* RDEPUBCoreTextPageFrameFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09336B106D598DCD38F6B79AEA629066 /* RDEPUBCoreTextPageFrameFactory.swift */; }; + 01AC9A3EA5F344CDC16ACBC3A3E45492 /* NSArray+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = C7E09A6C247D465CA0EF71B939B2A040 /* NSArray+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 026BE0E38192F8E2F8A3119AB7E35952 /* NSString+DTPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = B76B1E836C34CB755AEE1FBF7DC26BDD /* NSString+DTPaths.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 02ABB9C568A16F8795CFEC2D01BBF067 /* RDEPUBWebContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B37A3A1274B29F6D04BFB081D22CB96 /* RDEPUBWebContentView.swift */; }; 03D90C831397E8636A33CE557024A136 /* NSMutableAttributedString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 044BEA679671E16EA9BA9AD627750742 /* NSMutableAttributedString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 041E5C2F1CCF83406447722A174B6D86 /* RDEPUBTextPositionConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BE089AF845973208A11AA41A9B6AAB /* RDEPUBTextPositionConverter.swift */; }; - 04C7133BF47F70BF28F6043EB9939B04 /* RDEPUBReaderViewportMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8BC1163A98FA7D285438393945C2EC73 /* RDEPUBReaderViewportMonitor.swift */; }; + 050EA0297A5EC0E765F40F075245BDA7 /* epub-fixed-layout.html in Resources */ = {isa = PBXBuildFile; fileRef = C229DC7F5A2BB8C2A3C586FF6CF41D47 /* epub-fixed-layout.html */; }; + 054178AB372DF8BBB80B17504A4CFF8F /* RDEPUBPageCountCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F525CC259CDC719A02AC344AFC95E1F /* RDEPUBPageCountCache.swift */; }; + 054D18D9951E8B07F33EF4D35BAE26F6 /* RDEPUBChapterLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA788B1C32640B2F2761D3C04446BB67 /* RDEPUBChapterLocation.swift */; }; 0561DF6793C8516F469D9813F5CE3211 /* DTCoreTextLayouter.m in Sources */ = {isa = PBXBuildFile; fileRef = D80A72D8B7941D30246858D840EE1EF5 /* DTCoreTextLayouter.m */; }; - 05C9B93A3147D32C239D36A568E19FB4 /* RDEPUBCoreTextPageFrameFactory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09336B106D598DCD38F6B79AEA629066 /* RDEPUBCoreTextPageFrameFactory.swift */; }; - 06382387610043DAA6CD14D7AD182DBF /* RDEPUBBookPageMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45A880FCAB9201640E8329B683FCACBA /* RDEPUBBookPageMap.swift */; }; - 08114BFDC74464E95F7403D745C03597 /* RDEPUBAnnotationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 685FE9B1A888D8D05E9AC049787CBC8D /* RDEPUBAnnotationModels.swift */; }; - 0832443C5D3179680E63DE42E41E4A7C /* RDEPUBReaderTopToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D91E45585D4F6401B403BD10449ADDF /* RDEPUBReaderTopToolView.swift */; }; - 08579DA9653BBAE41A18A65026C4006A /* RDEPUBFixedLayoutTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2159ABBE19F1408CF16A6EF0271404D /* RDEPUBFixedLayoutTemplate.swift */; }; - 0A907B7973CEA38E9E330C87CCCCBF07 /* DTSmartPagingScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 21CCCCAAF832BE9C859BEDDC79B4E9E2 /* DTSmartPagingScrollView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 067FB980EC11563DABA6377BA323F041 /* RDEPUBReaderController+TableOfContents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17A6573887F6DA388F2EA0B96400C892 /* RDEPUBReaderController+TableOfContents.swift */; }; + 06D28593D963E13161146C674594D3C1 /* NSURL+DTAppLinks.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F7613E99CAA29881A015D0ED969B86 /* NSURL+DTAppLinks.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 07F8549C519E0712D1373654C4522D3B /* RDEPUBCFIUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6CA207039A89EF3323F6FFEA38A1C3F /* RDEPUBCFIUtilities.swift */; }; + 087551FB17CA91E8126B443D1BB2DB57 /* RDEPUBSelectionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0389417C712B5E7FA8F9FBB870FA2227 /* RDEPUBSelectionState.swift */; }; + 0942EF9F626D8448F7B4BEF9CEB112F1 /* RDEPUBAnnotationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 685FE9B1A888D8D05E9AC049787CBC8D /* RDEPUBAnnotationModels.swift */; }; + 09C14984907EF0E18430483195615CEF /* RDEPUBWebView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E6795B0D648B27CC7EB030E7550566 /* RDEPUBWebView+Configuration.swift */; }; + 0A0C40F35AA05AB2FA05621AD6620164 /* RDEPUBPageLayoutSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B02D527081372B04CC8FECF5940E6DC /* RDEPUBPageLayoutSnapshot.swift */; }; + 0A6A2B85150D31B0DA6C1154EF75544C /* NSString+DTPaths.m in Sources */ = {isa = PBXBuildFile; fileRef = D30DBDF1EDB20CF83690AC6619AA0C48 /* NSString+DTPaths.m */; }; 0AAA5BB1DBF584102B15CF8738F1815E /* NSScanner+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 057DBFBFC99448A0B77A3C0DBB13B4A9 /* NSScanner+HTML.m */; }; 0ABC4D62588EABAA636441FD9A82C940 /* CTLineUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C6CE93FAA68605C6B90FF844A98E440 /* CTLineUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0B6FA1F22150D7F8B1865F41FF70C922 /* DTImage+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = E3CAAC46883B74B071843E5D38B5BF85 /* DTImage+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 0CD65B52297926BF6B22245BB401FE69 /* URL+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6430501430329643C8280B3985C48711 /* URL+ZIP.swift */; }; - 0D78DEE22F5E034C9DDC5856C0E4F015 /* RDEPUBTextBookModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33643E88B779A3DB1B3A14C7A194045B /* RDEPUBTextBookModels.swift */; }; - 0E654514AD6619948B5E7AB8A68398BB /* RDEPUBNoteModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D0BFFD14B93A2F313B937F14652738C /* RDEPUBNoteModels.swift */; }; - 0E73D6B61A31F648C93F2820F8601D4A /* RDEPUBTextPageVerticalJustifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D811ABCB31C221FA6F002E32629D6B7 /* RDEPUBTextPageVerticalJustifier.swift */; }; + 0B94DCFED4A20BC2BC258B0A7AD84EE7 /* RDEPUBResourceURLSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B5686B2CD1ADB2443ECF94B15903873 /* RDEPUBResourceURLSchemeHandler.swift */; }; + 0CAD6415F436E49FB2DEB2CBEC0A3ED8 /* RDEPUBReaderDependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FB158582A185027BF7C5254A69DA213 /* RDEPUBReaderDependencies.swift */; }; + 0CEE2FF08EBBEDB2F8753C1C754DC5B1 /* RDEPUBCFIRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842B11843F82FBEA1D725543ACAB02CE /* RDEPUBCFIRange.swift */; }; + 0D90E5A76994C8CD2C68A5728CD7A1CA /* RDEPUBSelectionOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C64A40D0DAA97EF0A1E98A05DF28CE4 /* RDEPUBSelectionOverlayView.swift */; }; + 0E1CE5455B59D5A5B2E2A05A09CA06B5 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B0AAC7948C4A103B284B0F3DCC1262 /* RDEPUBBuildDiagnosticsReporter.swift */; }; + 0E7CC48F667B0921973CCE39B5C99726 /* RDEPUBTextSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48121E38890812B2122D7CD791CB9F52 /* RDEPUBTextSelectionController.swift */; }; + 0EE7F18FF656A4EC05B960233F005AD5 /* DTCoreGraphicsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C1A7359A45BB880877A672C57F522FE /* DTCoreGraphicsUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; 0FCBC8C64D8862F2A0E8794EDADDECBD /* UIFont+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 398DC798680E2CA64D46B9E19B380356 /* UIFont+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; 100BFFBD24F234C095EDB001B8088DB1 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m in Sources */ = {isa = PBXBuildFile; fileRef = 4476B58B93EE7476A4762FE0E26E8178 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m */; }; 109458F9D48FD4F381F0E40E2DB3D91C /* DTLazyImageView.h in Headers */ = {isa = PBXBuildFile; fileRef = D5DD4142DF33E1BE0B5A057101E851C5 /* DTLazyImageView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 11177A56BBD6782F3F92E0E9BAEF677F /* RDEPUBBackgroundTrace.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5BE2FBFC1E7270EABABA9C6F0C686CA /* RDEPUBBackgroundTrace.swift */; }; - 11A4D1ED36F0F2CD8FB62160CE6253A7 /* RDEPUBNoteDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0430034A7AFBCEC269D7C46517004DF0 /* RDEPUBNoteDetector.swift */; }; + 1122A47ACC8E270202080A596BF6C153 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; 11AB1902A68385851FB81E870991F9A0 /* DTImageTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 57642B518C047A428FE1266A09E0513F /* DTImageTextAttachment.m */; }; + 11D18376068FF7361548016615E5D26A /* RDEPUBPageResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81514BCB47BC71C39284064C943C0DC3 /* RDEPUBPageResolver.swift */; }; 12B4A35B8E40C112E18A7C5511F023E9 /* CoreText.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4472755F83C121DE5E1E505D145F6DBE /* CoreText.framework */; }; 130C3A85D9F9F445222C2E31EC245B0A /* NSScanner+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = DD0A5FF70CDBE87597264762EC20EF43 /* NSScanner+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 14A0B98D226AA828CC7598D92B1BA29E /* RDReaderView+ContentAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8BB0B072E5F24B51A6D348D8F9745CC /* RDReaderView+ContentAccess.swift */; }; + 1415381C0EC999E8E0990C293F69164D /* NSMutableArray+DTMoving.h in Headers */ = {isa = PBXBuildFile; fileRef = 3046397381A83C2F6BAF344B86AD176E /* NSMutableArray+DTMoving.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 14AAB86A7399B98D39121B49EEB90065 /* RDEPUBParser+Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 482C32ED3E6D23BBCED7BBE64E370A91 /* RDEPUBParser+Archive.swift */; }; 14BDD9FB7A7AC5C8ABFF8D24C381F3DA /* NSAttributedString+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = 978449466D53EA6F5D40FCF0F353DDCA /* NSAttributedString+DTCoreText.m */; }; - 14CE62432CD3EE5D5112BCA53DB4DC87 /* wxread-default.css in Resources */ = {isa = PBXBuildFile; fileRef = 7667AF77CBF47AFAA7D5F190B16A51FF /* wxread-default.css */; }; 15A7ED15DA03DD3B9F26A017D270D1C2 /* DTCSSListStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = 0C24F592C4F38F15DC8C46BE0442B59C /* DTCSSListStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 15AEA1D561EAB9E702FFE2F8595856DE /* DTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 199E2ECC77BDAC03F644C20040F042D4 /* DTLog.m */; }; - 169E3A8D7CF9CD10474613EF0CE0BA58 /* RDEPUBPageBreakPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD3430DE68FE0020F68C496C24E87470 /* RDEPUBPageBreakPolicy.swift */; }; - 18B162A00BDD1E6C09AFECB6B45C031B /* RDEPUBImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4ACC6E3B4FEF517FF8038927FB873994 /* RDEPUBImageViewController.swift */; }; + 15F9DC2A3DBAC3293A93997078E721DE /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3E162E0261A5B0850158D3403191E62 /* Archive.swift */; }; + 182B6A0E130F7AF8D1C8FC02BB985B28 /* RDEPUBReaderServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9D06448CCB730D9D9ACF44F513FCA87 /* RDEPUBReaderServices.swift */; }; 191824B2B1E1B0A7DD3B6298100B4B8A /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = DE4821B98DDE6C71411EC139EC6D2762 /* CoreGraphics.framework */; }; - 194C90037DA8585AA0251509D2E25C1C /* Archive+ReadingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5193541848D2D1BF115A45D8A730611C /* Archive+ReadingDeprecated.swift */; }; + 1963E9B2831753783ECAC37942D73D6A /* RDEPUBReaderLoadCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3656D2A32DB42AE8DD66E0079651906D /* RDEPUBReaderLoadCoordinator.swift */; }; 19649ED312D92A6F5D2D6AF4E540CE75 /* DTHorizontalRuleHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 89268DC8F1FBDE4F3167647B6A4F9216 /* DTHorizontalRuleHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1A328AD562FD39C0FE98473621E7184B /* RDPlainTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F44A99D2304FE5397B4DCD6BABAF2B /* RDPlainTextBookBuilder.swift */; }; - 1AAE497083E517906F7B5FE3B54261B9 /* DTBase64Coding.m in Sources */ = {isa = PBXBuildFile; fileRef = E5D4D6E12779C54F17AE98A1E6C9B699 /* DTBase64Coding.m */; }; - 1B2F0D344A944A071C0680998A96F14E /* NSURL+DTAppLinks.m in Sources */ = {isa = PBXBuildFile; fileRef = 3453CFB9BDBF6F9D0937EDF5FB2BD07B /* NSURL+DTAppLinks.m */; }; - 1BCB6744E9F316DA47E1304849DCFDE8 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = A765D0DF2FFB6442A7BF2726F2F3B2C8 /* RDEPUBTextContentInteractionCoordinator.swift */; }; - 1C03A62B014AC6A2A890F996F76271C9 /* RDEPUBPublication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FA2158447C66C1AA074403C4AEF1BD9 /* RDEPUBPublication.swift */; }; - 1C844A8F215ED4A0D27F2B30DC0D52C2 /* NSData+DTCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 94705DADD1F09F4162F7D733318238F4 /* NSData+DTCrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 1D2A8818B6C94705205AEDD2CD0F505A /* RDReaderPagingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C99F4EC07FF6B3DD8C8B72E54DEB008 /* RDReaderPagingController.swift */; }; + 1992A77ADA2B85372C51DE67DE656089 /* DTExtendedFileAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 56E8939081946D090FD77A04F879754C /* DTExtendedFileAttributes.m */; }; + 1B2004F66EE1D24FEDEB4CF2B82E1E6B /* RDEPUBFixedLayoutTemplate.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2159ABBE19F1408CF16A6EF0271404D /* RDEPUBFixedLayoutTemplate.swift */; }; + 1B671F75188F742245480EC8EB6DE72D /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECC02C082DBCB6126A7ECBA72C258B3 /* RDEPUBTextBuildPipelineInterfaces.swift */; }; + 1B74EC1BBEE68B9E2F86EC4F589E65EB /* NSMutableArray+DTMoving.m in Sources */ = {isa = PBXBuildFile; fileRef = ADD5B2F66FCCFB58393314E7B9FE4384 /* NSMutableArray+DTMoving.m */; }; + 1C25FD16E4A629E3F76B8F67BFAB5474 /* wxread-replace-latin.css in Resources */ = {isa = PBXBuildFile; fileRef = 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */; }; + 1D4601F156BBC481DF8CBEA127933339 /* DTFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 23588B63FC4026A371F5C683744A664C /* DTFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 1D460603DCA4A4E5ECFE8FF1F1CACC10 /* DTColorFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4544C4444DCA90E700611D1281969883 /* DTColorFunctions.m */; }; - 1D78EA12F3A3AAE27FA5792A07907589 /* wxread-dark.css in Resources */ = {isa = PBXBuildFile; fileRef = EB7C7A670C851744ACBCA45DA70795C8 /* wxread-dark.css */; }; - 1FA4D34922ED28BE3052D53730D94A37 /* RDEPUBReaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 527A6EE584C515DEE0448928F5BB0AE6 /* RDEPUBReaderDelegate.swift */; }; - 203CB331D8744F1800C59AE8D711EF88 /* RDEPUBChapterTailNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59C77DC849EDF86936A25873E674F72 /* RDEPUBChapterTailNormalizer.swift */; }; - 21ACC31FEB25D8E00B1CE1017A180716 /* RDEPUBReaderTableOfContentsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 964DE5C11E965DC6F881D1B75582D58B /* RDEPUBReaderTableOfContentsItem.swift */; }; + 1F485583C73D3833F600377BD756AB48 /* RDEPUBCFI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976DBE312D138856488A4DEF88606BC9 /* RDEPUBCFI.swift */; }; + 1FA1F998447124DD53EAEA05DCFAFF1C /* RDEPUBReaderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = DC30694BAEEC8DB2869AF8D85E0C5173 /* RDEPUBReaderConfiguration.swift */; }; + 2021D5E8FEE83065E27E6D0003A84F34 /* RDEPUBReaderPaginationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9718E0B39AD8A3470522498E28F30F /* RDEPUBReaderPaginationCoordinator.swift */; }; + 20495C7DE93F1281E83BA8970C67C681 /* RDEPUBWebView+JavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321FA16FF2FAD7985CCAC14EF5A221D4 /* RDEPUBWebView+JavaScriptBridge.swift */; }; + 218F054EC487B66920A6873618AE3482 /* RDReaderView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C3DEA097D20AC964CFB673C39B4A8AF /* RDReaderView-dummy.m */; }; + 22000F5527C48C68944C4F1758E2A069 /* RDEPUBTextAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F81C81E7CF8B0AE4646712FC2ADD8B0 /* RDEPUBTextAnchor.swift */; }; 2203356EEA94A9172BC7902923E43CBE /* DTCoreTextFontCollection.h in Headers */ = {isa = PBXBuildFile; fileRef = 25DDD76CA572F0C7AB5A8178CF80169D /* DTCoreTextFontCollection.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 22DBEE5DFBD48875EDBA1DB856BA2CFC /* UIView+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 67DA49B61A249C2B8241D8FE166608C9 /* UIView+DTFoundation.m */; }; - 2341F46E32027F16B3EE8F86B75B58A9 /* RDEPUBFontNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D23A912F5F91D0D3D83DF9E05515D0 /* RDEPUBFontNormalizer.swift */; }; + 23CD207519C6B07EC5537C7D524A15E0 /* Data+CompressionDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B46EF6F055A721AF370D705D026E9E /* Data+CompressionDeprecated.swift */; }; + 23EF24FC2D01FCAE8C72AB5C1BEBC719 /* NSString+DTUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C80941DE172AF972D2247659684D93A /* NSString+DTUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 23F5519DAB7AF448277328F67DF8427B /* RDEPUBFragmentMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587C2E270D5414FF4E3786D14BD36694 /* RDEPUBFragmentMarkerInjector.swift */; }; 24395BEB3C360D9DA5180BFB955B04A0 /* DTAttributedLabel.m in Sources */ = {isa = PBXBuildFile; fileRef = 3EFAE8DFDDEA1E6047289C86D66381C0 /* DTAttributedLabel.m */; }; - 243E7B847D6B869F5B19BEC2007B9290 /* RDEPUBAssetRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = E97B6B6C59BBCD6685CE808E64981E76 /* RDEPUBAssetRepository.swift */; }; 2445709667CB3820E51CD4AA915E6943 /* DTHTMLParserTextNode.h in Headers */ = {isa = PBXBuildFile; fileRef = 558FCD3F7E481B782EBFA127486ED15D /* DTHTMLParserTextNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 247B7228F440D911BBD9C6BBF0276F6E /* UIScreen+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C5E29D728B8CD4EABC0B3DD9CD9DE99 /* UIScreen+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 246BB0637AF781853BFC822206467634 /* DTFolderMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CC38EFEF171FFEE008C32A6319BE6A /* DTFolderMonitor.h */; settings = {ATTRIBUTES = (Public, ); }; }; 24C5B52FD2AA9C49731DC6859ABA7CDE /* NSDictionary+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = 78887827FF15DE20865DF3A00660993B /* NSDictionary+DTCoreText.m */; }; - 250D99A44F530B5A9979A09C015D2EEA /* DTAnimatedGIF.m in Sources */ = {isa = PBXBuildFile; fileRef = A3DE08AC23FE36A6C3F33A04700FDE57 /* DTAnimatedGIF.m */; }; - 25C0E2CB3040A681F48C60BE0BA6D5F8 /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3B016E458C08679B7164130EE2F038A /* RDEPUBAttachmentTooltipOverlayView.swift */; }; - 2651136AC72A13233A460A70CAEE717D /* DTFoundationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FF63F5E8902D6F3F5E845A924EBBC6D3 /* DTFoundationConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 2585104BFDD35B5513F93B5D4933B620 /* RDEPUBParser+TOC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43197856E7D06A21EF9B252FD37456A5 /* RDEPUBParser+TOC.swift */; }; + 2605545B3BDD0B4D316669BD3BC4DA7D /* RDEPUBReaderPersistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 852FB37B13A5612919954D97632ED37F /* RDEPUBReaderPersistence.swift */; }; 270C5C10028F0BC5A62548326CCB379B /* DTColor+Compatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 8FAAF640165FC1B4B47C546F80D98B1E /* DTColor+Compatibility.m */; }; - 2762C38F0DCA2C6027557ACD3444787E /* RDEPUBWebView+FixedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8F015377F898E4B0229FF584685390 /* RDEPUBWebView+FixedLayout.swift */; }; - 276E9AA59EB63396C8378BBC950CE291 /* String+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = FB56EEA8FBF8DBE56135C22D77769CC8 /* String+RDEPUB.swift */; }; + 28BA0924E7AB999F2E9E7676AE0B176C /* RDEPUBChapterTailNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A59C77DC849EDF86936A25873E674F72 /* RDEPUBChapterTailNormalizer.swift */; }; + 28D5C5DB7C2755A625FDD6446B248312 /* RDEPUBPaginator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65572083A10EE0C48AA7F493F923BCC0 /* RDEPUBPaginator.swift */; }; 29D9B32DFFC59A157EDEF005DB92A5AC /* DTCoreTextLayoutLine.m in Sources */ = {isa = PBXBuildFile; fileRef = EB850927957E35DB8CE0F109188C99A9 /* DTCoreTextLayoutLine.m */; }; - 29E12DE24E3817E282979645D80E45C0 /* cssInjector.js in Resources */ = {isa = PBXBuildFile; fileRef = 2EBD41467F344F6091AD0C1A3981EDC3 /* cssInjector.js */; }; 2AAF9361720FC2D8FFCA93B5FAE42019 /* NSMutableString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 126E6ACAC7C0427806B58DA8E10BDD78 /* NSMutableString+HTML.m */; }; - 2B9B5C05BFB132C2A03AF56BB262A4B3 /* DTPieProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 173194D38C897D8E38AD8A194E47DB5C /* DTPieProgressIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 2CA6F4C17909548E2D91BF71AEE0BB84 /* RDEPUBReaderSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AE3C35BC77F4A80D8725CE0CDE20B5E /* RDEPUBReaderSettings.swift */; }; - 2EA87D5E151B183B64161912F24F27B3 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; - 2F5394C897D37AED4DC2ED00D180A07D /* RDEPUBTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F5110430A322C853C80F6041B0EDF94 /* RDEPUBTextBookBuilder.swift */; }; + 2B8CD3733FF7B0369B0D2C1CE69118DC /* RDEPUBReaderChromeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DF0A5A438D3319310C8FF50C82762F2 /* RDEPUBReaderChromeCoordinator.swift */; }; + 2BB4DB83A4971988729C48F6A97D9F7A /* RDEPUBBookPageMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 40E88E1EF1BA62D99833E17E30E87DC5 /* RDEPUBBookPageMap.swift */; }; + 2C20B4A46EB9E16AE6DDFF6B330E3BDA /* FileManager+ZIPDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F49FC82A04EE9B3B49CBA6CB88ACBC67 /* FileManager+ZIPDeprecated.swift */; }; + 2C446ACD6B39988DAE88DB686C41940D /* RDEPUBChapterLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8CA2D533001FF2048A1A42F91A23085 /* RDEPUBChapterLoader.swift */; }; + 2CB00C61073E96CBC0EB977B756E552B /* RDEPUBSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B43BA14CD70F5448082DE1EE73B034 /* RDEPUBSearchEngine.swift */; }; + 2DF99A7F490B72BAF469D0D13048C36B /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C3F8DF48C6EB28BFD05F5BB49793DDA /* FileManager+ZIP.swift */; }; + 2E179DBB9513ED69284AD20B7E867007 /* RDEPUBCFISerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F54575506F65B0B0E12AABF25A9E6C6F /* RDEPUBCFISerializer.swift */; }; + 2E2E05B3915B792EA3E1012A49C0C4D2 /* NSString+DTUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F3E93C4AC73A09DE1EAE805B0ADE3306 /* NSString+DTUtilities.m */; }; + 2F0A11C3ED02F7E7C3C4982DE5B6CDA3 /* RDEPUBReaderSearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED4AFBE65217F4B7692C91828CC9BF53 /* RDEPUBReaderSearchCoordinator.swift */; }; 2FD7360250C2255A80583D4CF518FBFA /* DTTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 4944FE0BE3205F2EC91A6A0550D30B75 /* DTTextAttachment.m */; }; - 300D521B97F66DD5401F6292436339EF /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 47DC174612C98B2CFB4E7D158169139E /* default.css */; }; 30C01FE491C26314F776AD8B2AF136FA /* NSAttributedStringRunDelegates.m in Sources */ = {isa = PBXBuildFile; fileRef = C69C7A531B5E021499D8FBF1DBE0E3BB /* NSAttributedStringRunDelegates.m */; }; - 30EA52B5D49A8820D1AE92AFA61F7C63 /* RDEPUBTextBookCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 696C8561F8104D867B50A79E1147DE02 /* RDEPUBTextBookCache.swift */; }; 31B805C50E0E187E6242B0C878C4D30D /* DTCoreTextMacros.h in Headers */ = {isa = PBXBuildFile; fileRef = C495C74844982FAA1B846A2A89023D12 /* DTCoreTextMacros.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 31DA191069436C02405F0744A4884295 /* RDEPUBTypesettingPipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92960C67FEC64C10BA567184834F0DCC /* RDEPUBTypesettingPipeline.swift */; }; + 325368D9102D104F1711FA60620F35CD /* DTAnimatedGIF.h in Headers */ = {isa = PBXBuildFile; fileRef = F9D9BEF72311AF9E3239F9B92A9D2842 /* DTAnimatedGIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 33A618B45C6B0CE963A1E86B40FB1BC1 /* RDEPUBCFIPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDCA21771B2D145D7DCFEEDE00FEDADC /* RDEPUBCFIPath.swift */; }; 343E794F88AA503F5139C2244DC1A2B1 /* DTTextAttachmentHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 8B8FDAF9E8370366F7FA8524CB0D80B3 /* DTTextAttachmentHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 34AA42EA526694A33971418DA2B5F8B7 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3F3375F32D22D669DD2C8A34D3FB9A8E /* RDEPUBReaderController+AttachmentTooltip.swift */; }; - 35339CEE078C68227605E3F5DA550ADD /* RDEPUBParser+TOC.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43197856E7D06A21EF9B252FD37456A5 /* RDEPUBParser+TOC.swift */; }; - 356D1732FFEFFCB6EA25A3E5C6F17251 /* RDEPUBCFIRecoveryEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35803D654BE44326A28A0947DD178B63 /* RDEPUBCFIRecoveryEngine.swift */; }; + 344C8C38953CD3ABBB5CEE004D748DBE /* RDEPUBMetadataParseCancellationController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 04D90198F17A11D36ABBECA5A4F3AD7F /* RDEPUBMetadataParseCancellationController.swift */; }; 35C5BE59CA712CCDF93D6E7010D93883 /* DTAttributedTextContentView.h in Headers */ = {isa = PBXBuildFile; fileRef = E96C0EEB2032D3CC18F4B37A7C34C84C /* DTAttributedTextContentView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 36A83636F549A72B823760708496D7B9 /* UIImage+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 499E135F1FEB31C26EB0EF793A90086C /* UIImage+DTFoundation.m */; }; - 3718C3664D054ECFFDAA22DC26A170C7 /* RDEPUBAttachmentNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63A75BF0478FAC7398F5E66A509F639D /* RDEPUBAttachmentNormalizer.swift */; }; + 35CA4D0B6A010869DC047DFF04A5EA9F /* RDEPUBWebView+Reflowable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AAC2FDC24D8604A39BD25111689D06A /* RDEPUBWebView+Reflowable.swift */; }; + 35EC832D6E6042D539F5CE9ACDEAB875 /* RDEPUBReaderContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3EF0585A8A2B50BF79245DF9365836C8 /* RDEPUBReaderContext.swift */; }; + 369FD67C7489AC14165FDB7096822ECC /* RDEPUBReadingSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 314E39CF7ADE645354AC8873D80957CA /* RDEPUBReadingSession.swift */; }; + 36C829C21BAD67EBA806B013689A8B8A /* RDEPUBNoteModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D0BFFD14B93A2F313B937F14652738C /* RDEPUBNoteModels.swift */; }; 372E907DF08263D0E1AF904F1FCD66EB /* DTTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = E853AAB3B09E0662567752431CEF1D33 /* DTTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 37658AA02ED801B0F951BB353FD64478 /* RDEPUBBackgroundPriorityPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0B4FEEF73E68688CF8770B9A3A368710 /* RDEPUBBackgroundPriorityPolicy.swift */; }; + 385F62303058B932DE2C5A7AA7DE61FB /* DTPieProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA617294E6371DD7FAC32B61E0873F2 /* DTPieProgressIndicator.m */; }; + 38983B574644AE41804DFFBE96A3F6F3 /* RDEPUBPublication.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FA2158447C66C1AA074403C4AEF1BD9 /* RDEPUBPublication.swift */; }; 389F7C8400F9223C019F2D7825CD2369 /* NSCharacterSet+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 2F242FC1357DD90FA4FD67E1DB90A837 /* NSCharacterSet+HTML.m */; }; - 38E75F23ECF239CE35A5687C44F85244 /* Entry+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C1831768CE55090EADD902B29B6CD1 /* Entry+Serialization.swift */; }; - 399706B52D94F4BB0F6BF7DEE1D7A198 /* RDEPUBChapterDataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = E58FA87A2BA86B4AF4AC1D9ED80ADB9D /* RDEPUBChapterDataCache.swift */; }; - 3A42CEAFF80430B8C60ED7DA64846CB3 /* RDURLReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 949BC485A5DC7EF786656CBF9A479A1D /* RDURLReaderController.swift */; }; - 3AA1044D0DBE82EF985629B06BE71A7E /* RDEPUBCFIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C1CDD44F96B466A619015AA0A7B2D17 /* RDEPUBCFIError.swift */; }; - 3B0DD640C4EFE14E8F5148895C99A5CE /* DTVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C9575F05D72C239E7E6F079BACDF4C7 /* DTVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3BB5E376318200B3769C486789E24289 /* RDEPUBPaginationCacheCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528643F4F0CD2FEC7AD5C0ACA9895D9D /* RDEPUBPaginationCacheCoordinator.swift */; }; - 3BE0A085BC69652EE763EED221A6F9D9 /* DTFolderMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = BEA46E51E3616ECEAF0ACCEA9B8C67EF /* DTFolderMonitor.m */; }; + 3A3EEA702B6881089A65D1CB812C28E4 /* UIImage+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1300CC5794E609DB8FBA6FFF90A09408 /* UIImage+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 3A5B7B0C74B75094BD4013076811A195 /* NSString+DTFormatNumbers.m in Sources */ = {isa = PBXBuildFile; fileRef = C5005A9E8F746647585CCAB26853E922 /* NSString+DTFormatNumbers.m */; }; + 3A699A68129DB8D0475C3B426B54903D /* RDEPUBReaderController+ExternalLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10E90103F330F58312FAAE9AA82E84B6 /* RDEPUBReaderController+ExternalLinks.swift */; }; + 3C6422E07A5FD5F61EE7C8E52CD81D9E /* RDReaderSpreadResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 008302A48FE881CADADBCB02832B880B /* RDReaderSpreadResolver.swift */; }; + 3CE81197AA8330FD15E1B78CB9C6999F /* UIApplication+DTNetworkActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 730B56BC97DFF2B1E04DD2608055D9E0 /* UIApplication+DTNetworkActivity.m */; }; 3DC8F9474FC6A0BB7E81A703CE958966 /* NSAttributedString+DTDebug.h in Headers */ = {isa = PBXBuildFile; fileRef = A8A086525BF509F4581693115438B82B /* NSAttributedString+DTDebug.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3E96CCAED9D356F66D8EE8F6E6A496F8 /* NSURL+DTUnshorten.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA6D26B26D2653D6E1C871A482BD6DF /* NSURL+DTUnshorten.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 3F8F4CE78B1B0B3E8343E7F91ACCE444 /* UIColor+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DACF1F2702EB6425DF22A4B0CB64202 /* UIColor+RDEPUB.swift */; }; - 42775236B82754FEF09932222F484EB1 /* Archive+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B9309F0BDDDE2C3EE13C97BF2C0F1E /* Archive+Helpers.swift */; }; + 3DD75C9E109518EC17CD1E6374CCAAA5 /* RDEPUBPageInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 785AE7F19DADEDA041CFCC67D8B25189 /* RDEPUBPageInteractionController.swift */; }; + 3E1C9314B1519630D8FB24D35EFAF93E /* wxread-replace.css in Resources */ = {isa = PBXBuildFile; fileRef = E15D7179C6CF82530CF5E7264BBA1679 /* wxread-replace.css */; }; + 3E27F00334D3044C4DF18F5F9710EDB8 /* RDEPUBRenderDiagnosticsCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B7FCEEAD833F7C1706659E688B09BEA /* RDEPUBRenderDiagnosticsCollector.swift */; }; + 3E6FCEC88EF3618C15CCFDF85714F46A /* RDEPUBAttachmentNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63A75BF0478FAC7398F5E66A509F639D /* RDEPUBAttachmentNormalizer.swift */; }; + 3E72C32B4BB24CE2F9241C9336D2F026 /* NSString+DTURLEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 131C1D8C96DF2D44A2D4F50C5AEFFF11 /* NSString+DTURLEncoding.m */; }; + 3F0E1A921788D7E9621DD76499F94BE0 /* RDEPUBCSSCompatibilityLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3B770A5B6ED1C21FDA2BD1A8B06EE6 /* RDEPUBCSSCompatibilityLayer.swift */; }; + 3F488BC7AFBBB6998B9E06EB01D3CD8E /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C3615C94C147AEA92F022E119810E9F /* Data+Serialization.swift */; }; + 3F9BE434EB1085D1F90B83DB60FD00C5 /* RDEPUBImageViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 174D4D5E30ACC1B5266B20D621E65064 /* RDEPUBImageViewController.swift */; }; + 4141E28F9EF7A7626ECEA23E54C1437E /* RDEPUBNoteDetector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0430034A7AFBCEC269D7C46517004DF0 /* RDEPUBNoteDetector.swift */; }; + 41EB29FA06E55DE88B687C1F7AB4E97E /* RDEPUBTextContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75C58FBF3697A8233DC5C9527094D6C3 /* RDEPUBTextContentView.swift */; }; + 432AAF1617C092D088B43B9AFD409C59 /* RDEPUBTextPaginationSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4609798012DB9C5B85641224CD6081D /* RDEPUBTextPaginationSupport.swift */; }; + 435BB5138F3187F4BF5ECB65AA61A12F /* RDEPUBNavigatorLayoutContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 055B53D0A60DC351390338A48800AE77 /* RDEPUBNavigatorLayoutContext.swift */; }; + 43A7FE65277A8D860FEC743C2E7F2627 /* RDEPUBChapterSummaryDiskCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 02B2F8AC62D3CFC4C1A082B868C195F7 /* RDEPUBChapterSummaryDiskCache.swift */; }; + 43D97AE7AF25413C3F239057F503CFA7 /* NSDictionary+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = 05838D65DEC339C51AADB17346B7E287 /* NSDictionary+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 43E89A6EF34E4AB7DA97425018672890 /* RDEPUBParser+Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = F94780553A2ED7BE5E972D634F7F52DE /* RDEPUBParser+Package.swift */; }; + 445971F9045D5C639BCD4C361A5D99C4 /* NSData+DTCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = F63EBF2BF3000B3391F6E693581EA129 /* NSData+DTCrypto.m */; }; + 4495EAFF6740BE5C8D6C2319D2EBFE23 /* NSURL+DTUnshorten.h in Headers */ = {isa = PBXBuildFile; fileRef = ACA6D26B26D2653D6E1C871A482BD6DF /* NSURL+DTUnshorten.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 44AB3853424577251B26484683243528 /* RDEPUBReaderTopToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AB4FAD61ECDD132D743C6E8CFF267798 /* RDEPUBReaderTopToolView.swift */; }; 44B1FBF893C06F314F8C9BD1405897D8 /* DTCoreTextGlyphRun.m in Sources */ = {isa = PBXBuildFile; fileRef = ED049C791713944233EE10C7A111C691 /* DTCoreTextGlyphRun.m */; }; 45133E47CC5FBCF78BFCD38981BA027F /* DTDictationPlaceholderView.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C12A4A5BB42D0F68DABBD3BDF103BC5 /* DTDictationPlaceholderView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 454D8A5137809902C531CB3C60FDACE5 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; - 45CFC0BDED4932E8406B27C77613231E /* DTBlockFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35417EC94F2D58CB80C991F875CE15C2 /* DTBlockFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 45EF68C719B84025A3AF68DD970F30B7 /* RDEPUBTextPageDecorationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F32976CA02F8617CB2E2A38D9261257F /* RDEPUBTextPageDecorationView.swift */; }; 45F90B98546FDBA03AB112DFE859A185 /* DTCSSStylesheet.m in Sources */ = {isa = PBXBuildFile; fileRef = B37118B8D16847B0F82E06A5B33898AB /* DTCSSStylesheet.m */; }; - 46A2E18E981DE7D7FFAC4BF04E967AE2 /* RDEPUBFontFallbackResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DE76CD63BD47DC86DF55C349B1CF91 /* RDEPUBFontFallbackResolver.swift */; }; - 46E70B7A4E1C35BBB88EFBCB9DCE8ADB /* RDEPUBChapterPageCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 328AA616EE25AB53BFB60EFE1C7AAFCE /* RDEPUBChapterPageCounter.swift */; }; + 467AC26DFF3A13AC921D7D396CA9A208 /* RDEPUBTextPaginationInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ED87665B0B64B6E8153C0490203E43B /* RDEPUBTextPaginationInterfaces.swift */; }; 46EF32D586FF590CE2C60C66364B9357 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; - 46F411369949108E7AEEFD1936818F80 /* RDEPUBWebView+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = CADF4452F89F7A5F419D2841FABC8CBC /* RDEPUBWebView+Search.swift */; }; - 49843E4719C8DDC61C622560E73ACBC4 /* NSURL+DTComparing.m in Sources */ = {isa = PBXBuildFile; fileRef = 467CC59CEC3B3BC7ACDCA776FDCBDC1D /* NSURL+DTComparing.m */; }; + 47D84DA606F549F8FAF0F034F0815BC2 /* RDEPUBHTMLNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3B908A78A947A1A9D66C368CB616DE4 /* RDEPUBHTMLNormalizer.swift */; }; + 4996BB43278BB26CE542E46CD76C5792 /* RDEPUBAttachmentTooltipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76DC91EBC1C9627AD0F09DFE57D04F52 /* RDEPUBAttachmentTooltipView.swift */; }; 4A13B4E5EA8616A8F09D90BC6EAEEA64 /* CTLineUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 4FF4A2A7F2C7CFB5DD757BE1A6E59C7B /* CTLineUtils.m */; }; - 4A9FBB237C4C47B9D35706FB689791A0 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = FECC02C082DBCB6126A7ECBA72C258B3 /* RDEPUBTextBuildPipelineInterfaces.swift */; }; - 4CE93ED4B7B40D4518A42BB27BE6A338 /* DTSmartPagingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = A20F6F0463A998DC3BD53DE9E63B63DE /* DTSmartPagingScrollView.m */; }; - 4D62C2EC64541CC90BDBA431B9099C85 /* RDEPUBReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7E8901535604C19FD5AD766F825AA54 /* RDEPUBReaderController.swift */; }; - 4D8FF0E0C042C10B4B68DCCFC056ED73 /* RDEPUBTextAnchor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F81C81E7CF8B0AE4646712FC2ADD8B0 /* RDEPUBTextAnchor.swift */; }; + 4A2BB9012F17EF067B8CFFDF6F6911EA /* RDEPUBCFIGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 104930ADAD326C90EB587485A6BFF755 /* RDEPUBCFIGenerator.swift */; }; + 4A576CC1A123AB214203367996A2E86E /* DTBase64Coding.h in Headers */ = {isa = PBXBuildFile; fileRef = 519087D9CD0F5E440E6D2C3B1AA1DFA2 /* DTBase64Coding.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 4AA63EFA61156258C6E631DB9A17741C /* RDEPUBStyleSheetComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0796C7E8BEEA96989FCE6698868366D /* RDEPUBStyleSheetComposer.swift */; }; + 4BC9532587020653004B491C4651C1B8 /* RDEPUBNoteResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11D2090101EA891F21834863EE859AE8 /* RDEPUBNoteResolver.swift */; }; + 4C054FC76F0EE7FD9312B9CAA083A9F3 /* NSURL+DTAppLinks.m in Sources */ = {isa = PBXBuildFile; fileRef = 3453CFB9BDBF6F9D0937EDF5FB2BD07B /* NSURL+DTAppLinks.m */; }; + 4C583F9619384A0DD676E98122883CFA /* DTFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FF1C41D226C0957F715EFF3F23893386 /* DTFoundation-dummy.m */; }; + 4D42C6B8EA5DE066F6BAC45AC8679CE6 /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D8AB18960B56A997408E3235751624 /* ZIPFoundation-dummy.m */; }; + 4D452850D8D4B3518722B0399D49C0A4 /* wxread-default.css in Resources */ = {isa = PBXBuildFile; fileRef = 7667AF77CBF47AFAA7D5F190B16A51FF /* wxread-default.css */; }; 4DA6EC46F8968265B96C6D7B2260C4E5 /* DTTextBlock.m in Sources */ = {isa = PBXBuildFile; fileRef = C508E49F6BF9F50B05918C230B033069 /* DTTextBlock.m */; }; + 4DB471E8F49562EBC4E384451DF8657F /* RDEPUBReaderViewportMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08AF3CF7541223D386A278B79878A8DF /* RDEPUBReaderViewportMonitor.swift */; }; 4E4939F6592B06D2CA764DCACFB47871 /* NSString+Paragraphs.h in Headers */ = {isa = PBXBuildFile; fileRef = 0B8321AB80CFE0B94537AEA63E9A79F5 /* NSString+Paragraphs.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 4E857C4A8AF4533FC93D6A5E4B7BB3D4 /* RDEPUBCFI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 976DBE312D138856488A4DEF88606BC9 /* RDEPUBCFI.swift */; }; + 4EFBD030D3E1FAB489E148E673ABEECE /* RDReaderView+ToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83041D1E40ECC246DB5539C712499A09 /* RDReaderView+ToolView.swift */; }; 4F50C703427747B88405080B221349A1 /* DTLinkButton.h in Headers */ = {isa = PBXBuildFile; fileRef = B12CE4962CDC324FB47FB92D6706D149 /* DTLinkButton.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 504022F60824B8B6B204AA2100F5D47A /* RDEPUBCFIResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC3591CDAEE16F7444AC3B176EFDAFD /* RDEPUBCFIResolver.swift */; }; - 5051E90EBC038ED8C2C698770A18BCC7 /* UIApplication+DTNetworkActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 55423549E54A01F039B5F379B264C73F /* UIApplication+DTNetworkActivity.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5036A0CF9C43310D7BD87E3F27DB1619 /* DTBlockFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D2316F422A6C97F95F9CF43E6F8E94F /* DTBlockFunctions.m */; }; + 50529E178616769202F43EDBAE3E96EC /* DTLog.m in Sources */ = {isa = PBXBuildFile; fileRef = 199E2ECC77BDAC03F644C20040F042D4 /* DTLog.m */; }; 5065D99E1588E8CC60677E74916A5C03 /* DTAttributedTextCell.m in Sources */ = {isa = PBXBuildFile; fileRef = 814315319ED50AF916C3C8A68C0A47A0 /* DTAttributedTextCell.m */; }; - 50A6C85899890D44BBB56FEE3F696D25 /* RDEPUBReaderController+RenderSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7975AED4D3A0C7FCE350B73EA6D1DC77 /* RDEPUBReaderController+RenderSupport.swift */; }; - 50EF9EE32F5C1FA13D30428F9FF42A44 /* DTActivityTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 662D30C1E74D1D5122921475F4024F73 /* DTActivityTitleView.m */; }; - 519D2881E7DDE1204CE7D17BE98333FE /* UIImage+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 1300CC5794E609DB8FBA6FFF90A09408 /* UIImage+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 519FBE83225E8DD86A6970FB875803D6 /* RDEPUBCFIRange.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842B11843F82FBEA1D725543ACAB02CE /* RDEPUBCFIRange.swift */; }; + 518050A548F693F8ADC0CBACB9D1255A /* RDEPUBTextSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24130F5639CFFFA28D8BE6C2BD7A45FE /* RDEPUBTextSearchEngine.swift */; }; 51A1B5800D23C355B1712E8D1103780C /* DTTextBlock.h in Headers */ = {isa = PBXBuildFile; fileRef = EA2BF1D7535B036E1356E8DF42A04954 /* DTTextBlock.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 51A4A5B6D8E9B59D8D544015275F3F37 /* RDEPUBReaderTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5BEA03FA083C9125362B656F760E845F /* RDEPUBReaderTheme.swift */; }; - 522D2B339FE7E19ED927F82150C55BF9 /* RDEPUBSelectionState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 408BF57916E27949442B18215BE0B51A /* RDEPUBSelectionState.swift */; }; - 52736993BE6C7C4DD93C81586B3E2461 /* RDReaderGestureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6582B1336C77B6C366DAA669570B4A /* RDReaderGestureController.swift */; }; + 51F9E5819381C5AF4A17E26ADC97F144 /* UIImage+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 499E135F1FEB31C26EB0EF793A90086C /* UIImage+DTFoundation.m */; }; + 525377BAC7A4B942FF37A356DE08FC59 /* NSFileWrapper+DTCopying.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A812C3E577A3ADC36BAE3FF7AA4D9C /* NSFileWrapper+DTCopying.m */; }; 528DBAC7FCEFC7D6575C1F6CB4399AEA /* DTStylesheetHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 1A88AA04D7B29A217B432C19AC48AB6B /* DTStylesheetHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 53F4E2FA05AC45F68A8CC2258D669F32 /* NSString+DTPaths.h in Headers */ = {isa = PBXBuildFile; fileRef = B76B1E836C34CB755AEE1FBF7DC26BDD /* NSString+DTPaths.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 542566132B2CE691EA2226BE4CCC313A /* RDEPUBParser+Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = 482C32ED3E6D23BBCED7BBE64E370A91 /* RDEPUBParser+Archive.swift */; }; + 530A22FD0D34843C3A2C842C4012E33C /* RDEPUBCFICompatibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F08538F2728E3B8B81113D12DB74E3A /* RDEPUBCFICompatibility.swift */; }; + 543FE9A0CE7B07A39615125194BEB1ED /* NSURL+DTUnshorten.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A6A858B976D032A3C61540AFF19DEE4 /* NSURL+DTUnshorten.m */; }; + 547BABC3CDBF7072E6A968A37C4F0B35 /* RDEPUBTextLayouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86526ADF32337683AA173B5FC1E6A94C /* RDEPUBTextLayouter.swift */; }; 5582735073EBB9F5078E6E8AEEFB646A /* DTCoreTextLayoutLine.h in Headers */ = {isa = PBXBuildFile; fileRef = 37327141DC73DE2D5742BE6F989094CE /* DTCoreTextLayoutLine.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 561017094AFE9205C1B9FACAE64255AE /* RDEPUBChapterLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = A686F0FF211686E1D4F60B994E012587 /* RDEPUBChapterLoader.swift */; }; - 56F19DA2EC227104B8690133AAD7B622 /* RDEPUBDTCoreTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 505D658FEB22042EEDC51D402700F8C9 /* RDEPUBDTCoreTextRenderer.swift */; }; - 57A35BC904190F50EB5D281C5D033AF3 /* RDEPUBRenderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 564F072D0966350F4C3986E01EB3EB2C /* RDEPUBRenderRequest.swift */; }; + 56733EB92902794487A13DF03E0026A6 /* RDReaderView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 36606A851BDB5FFF6E9BFFDD7FB72455 /* RDReaderView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 56CD331F590F173B69E04D0D0557D74F /* NSURL+DTComparing.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F1F7BFB63DE15D627EB8F64829B8AAD /* NSURL+DTComparing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5795281D4176B3A8D936E9361B69BC97 /* RDEPUBTextLayoutFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E94387C53C6E054A73F8EE89787003D /* RDEPUBTextLayoutFrame.swift */; }; 57D5228C8A85628772D4D78E7FBEAF3C /* DTDictationPlaceholderTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8DA0F94C0870C1F0DFADE5E9045E5E6E /* DTDictationPlaceholderTextAttachment.m */; }; - 57E1FC6C0C6F1D12E9D1558BF9BA58D0 /* wxread-replace.css in Resources */ = {isa = PBXBuildFile; fileRef = E15D7179C6CF82530CF5E7264BBA1679 /* wxread-replace.css */; }; - 584AE069BDA8C80BAED639DF26754A0B /* NSURL+DTUnshorten.m in Sources */ = {isa = PBXBuildFile; fileRef = 3A6A858B976D032A3C61540AFF19DEE4 /* NSURL+DTUnshorten.m */; }; + 5874BB57522B4E62B6A8E13CE0D4F6A5 /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; 597DE4CDF5C674E269F03F6AA0AFFCC1 /* NSAttributedString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 71EE0B4D4D1B3D0A55E903E7E0CA44E7 /* NSAttributedString+HTML.m */; }; - 598067C0EF7A61AC9002DD34CC503031 /* Data+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C3615C94C147AEA92F022E119810E9F /* Data+Serialization.swift */; }; - 5A76BA537A8E9769097E716036D5DD9D /* RDEPUBTextPageRenderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7380BDD29AC5C55223ADDD7C33698102 /* RDEPUBTextPageRenderView.swift */; }; + 5B38B217D713ACA39F82D2CB1CC38F6F /* RDEPUBReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 773DBBEB900B259FCF917AD7299A4F34 /* RDEPUBReaderController.swift */; }; + 5BFB0AD88ABADB0492E6507292DC48FB /* RDEPUBRenderRequest.swift in Sources */ = {isa = PBXBuildFile; fileRef = 564F072D0966350F4C3986E01EB3EB2C /* RDEPUBRenderRequest.swift */; }; + 5CC4CD14F333EA81EFE68B04038276E7 /* UIView+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = 67DA49B61A249C2B8241D8FE166608C9 /* UIView+DTFoundation.m */; }; 5D03A5B9DC067875CFEC9D4EA7B059E8 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h in Headers */ = {isa = PBXBuildFile; fileRef = 671C2429406FDB36B677F4B6EC85B52F /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 5D83C7A8F70D08CDDFD2BC1B716CD3EF /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 69E5D0AD1240B6B0802F2647F5435EA3 /* RDEPUBPageMapReconciliationCoordinator.swift */; }; 5D8D65121E87E419D8D2F23F8AF43673 /* DTColor+Compatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 68D81DF1BB2A14F9C186F75BBA5CF50D /* DTColor+Compatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E7F686124648073387FCFA9D4241709 /* NSArray+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = C7E09A6C247D465CA0EF71B939B2A040 /* NSArray+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5E8F2E42C4BE9511BEE24EA17234F30C /* RDEPUBReaderSearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3CAD42B48B9168BBD3A810E5D3F0F956 /* RDEPUBReaderSearchBarView.swift */; }; + 5E0945043D7BD6A600ECCC3A78A26709 /* RDEPUBMemoryProbe.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2648A6B239413226E9A72CCC64D4C79 /* RDEPUBMemoryProbe.swift */; }; + 5E518CA4C1BA58E3B88683FD04722D5D /* RDEPUBReaderHighlightsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAAA5CC57B64078C930CBC9221BAAB30 /* RDEPUBReaderHighlightsViewController.swift */; }; 5E90EBD876ED4E50AB890FB56C4BFA57 /* DTHTMLParserNode.h in Headers */ = {isa = PBXBuildFile; fileRef = D28A3E79D83EA4B807E2D3A5EE086B8B /* DTHTMLParserNode.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 5F5D2D465B1C6351873BCE1AA7983583 /* RDEPUBJavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = F69C9651823EAB579B078EC3B7435D16 /* RDEPUBJavaScriptBridge.swift */; }; 60532A2E06CCFF814933D2FAE6793AE9 /* DTCoreTextLayouter.h in Headers */ = {isa = PBXBuildFile; fileRef = 72225FB74594FCF18DA8064E7DB3947E /* DTCoreTextLayouter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 60EBB36339ECD67F5A6DFC402A44E701 /* RDEPUBReadingLocationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = E67A535D80CEA637777BC317BCFE28C6 /* RDEPUBReadingLocationModels.swift */; }; 61BE3607EABD2657BC71AF8ACB1C25D4 /* DTHTMLAttributedStringBuilder.h in Headers */ = {isa = PBXBuildFile; fileRef = 4E1066A8FE63AD2C818E26DDCE62DF58 /* DTHTMLAttributedStringBuilder.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 61E0C3F772839BE1391A3EC12052D867 /* FileManager+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C3F8DF48C6EB28BFD05F5BB49793DDA /* FileManager+ZIP.swift */; }; - 63A6EA2C3E8FB233F7DCD42AC33F38C5 /* RDEPUBReaderController+PublicAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44CC9E1CE3BFCDCF123AF3232DE600ED /* RDEPUBReaderController+PublicAPI.swift */; }; - 648AD27F4319D2CC654BAEE5439DEEAC /* DTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 207CC0EEB74CECEB43A870FF80560E0F /* DTLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 65D333231372A013B720415537BCFBC9 /* RDEPUBMetadataParseWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2120F356DBB0D7C46B15B379759AC7AE /* RDEPUBMetadataParseWorker.swift */; }; 6634D568E49F5610242E1454680E5885 /* NSAttributedString+SmallCaps.h in Headers */ = {isa = PBXBuildFile; fileRef = CACF20969583778CAC1BC92BB96F27FD /* NSAttributedString+SmallCaps.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6635ACAC44269CA4F029D09B8FA0AB6A /* RDEPUBPageLayoutSnapshot.swift in Sources */ = {isa = PBXBuildFile; fileRef = 353528037271462D3C73D07BBF5D8DED /* RDEPUBPageLayoutSnapshot.swift */; }; - 66C5B1E7A94EFD608EA77088B598164E /* RDReaderPageChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33452E6D078F6CC1EF8A17DF42966CAA /* RDReaderPageChildViewController.swift */; }; - 66D5B656A033F00ECD29B7CA01120166 /* RDEPUBParser+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 170D81239AF3CE5CD64BA2E44A505872 /* RDEPUBParser+Resources.swift */; }; + 669A276238BD2AC9A9CD49A1C4E1359D /* RDReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9B4C7EA8E0601A462DDA753AFA93E66 /* RDReaderView.swift */; }; + 66F01F1C18E107408429B32EFB9B2A8E /* RDEPUBCFIResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFC3591CDAEE16F7444AC3B176EFDAFD /* RDEPUBCFIResolver.swift */; }; + 66F23FCBD9ED7712B6CFA0AE5472B6BA /* RDEPUBChapterRuntimeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 58C8FD645A1F2CB6BC9C86FE156721F1 /* RDEPUBChapterRuntimeStore.swift */; }; + 678DD680CD8788AB188780999CD2F36C /* DTAnimatedGIF.m in Sources */ = {isa = PBXBuildFile; fileRef = A3DE08AC23FE36A6C3F33A04700FDE57 /* DTAnimatedGIF.m */; }; 67AE2AC8D9B961D45871077774E11FD3 /* DTObjectTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 13597E7190F2C08C5906D7D128E43E99 /* DTObjectTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 67FEDE8824DCBF369F8BC557A54A4B38 /* RDEPUBDarkImageAdjuster.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD93A4C37E58849DD3FBADFE4E3BB7E4 /* RDEPUBDarkImageAdjuster.swift */; }; - 6873031C87E6AAD6EEBA809E2296896E /* RDEPUBRenderDiagnosticsCollector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B7FCEEAD833F7C1706659E688B09BEA /* RDEPUBRenderDiagnosticsCollector.swift */; }; + 67E1C9F9FA4C02105DC5B388B0B6F117 /* NSString+DTURLEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = CEEC8715398E89B42F9B04E290E8E4FE /* NSString+DTURLEncoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; 69674FEA70899F07BE6098AAEC849978 /* DTAccessibilityViewProxy.m in Sources */ = {isa = PBXBuildFile; fileRef = 6AC1E707308CDBC9FFC09CECE3117A9A /* DTAccessibilityViewProxy.m */; }; - 6A1ED4852B10607E6D1A8DB0C78848F5 /* Archive+Progress.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE83356F8FBC1801D29CA93C1A190D81 /* Archive+Progress.swift */; }; - 6B0DCDF171C89921104B03A7C2FBD921 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 006D002D86B43AA52E0AFD2E18459107 /* PrivacyInfo.xcprivacy */; }; - 6C07C95892D6224437E7B6376B08EB23 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B3B0AAC7948C4A103B284B0F3DCC1262 /* RDEPUBBuildDiagnosticsReporter.swift */; }; - 6CE3DD94BDB5F75D648201EB01DD9986 /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B41F7D27C2336F89BB0185ACB0B19EA9 /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6D36BACFE1C53D5E5AF5F89EC910AB57 /* RDEPUBSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78B43BA14CD70F5448082DE1EE73B034 /* RDEPUBSearchEngine.swift */; }; - 6D753927C673A54E3324CC80F3B797F3 /* DTCoreGraphicsUtils.h in Headers */ = {isa = PBXBuildFile; fileRef = 2C1A7359A45BB880877A672C57F522FE /* DTCoreGraphicsUtils.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 6DB3139A32F959E5660143F92B1B9E02 /* RDReaderViewProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF55DCBC3A5B0BEC5B1A4C6187F20D38 /* RDReaderViewProtocols.swift */; }; + 6A041B02022A6CE792906DFF30FC65BD /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D93C2002AAECD29B3ED5A14026D3DFE /* Entry.swift */; }; + 6A233E2D67F005BCE55CBA9297463B2F /* DTCustomColoredAccessory.h in Headers */ = {isa = PBXBuildFile; fileRef = BAE45673EE2875DB23FA7BDD61FDE1EF /* DTCustomColoredAccessory.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 6A340ECFF14E109203929637D3A312F9 /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF51E56E09E095C92CB5B9F21384027 /* Archive+MemoryFile.swift */; }; + 6A4933033D272D4B250818DA22556834 /* RDReaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56A9260F17C4825708B83598BEC99365 /* RDReaderFlowLayout.swift */; }; + 6A9D5B2D485B78E12A14EE0A6543D169 /* RDEPUBSemanticMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F4881006C6FAE4DFADBE2ACE4E9A744 /* RDEPUBSemanticMarkerInjector.swift */; }; + 6B4EA5315A9E5381ADB2792C43FEF71C /* RDEPUBReaderUIState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55C2EDC5A62B0F36995A69620E5464B3 /* RDEPUBReaderUIState.swift */; }; + 6DF4156314ACD722DD64716D3A4304E1 /* NSString+DTFormatNumbers.h in Headers */ = {isa = PBXBuildFile; fileRef = A3BD3ED7913130D32E14D5572CBCC921 /* NSString+DTFormatNumbers.h */; settings = {ATTRIBUTES = (Public, ); }; }; 6E3D0FDD78ECC20F4B3697ED21D64224 /* MediaPlayer.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 4C2B218B5EAA5831A036BBF7E1EFC1B9 /* MediaPlayer.framework */; }; - 6E6B1F175FA7E69A77604DA9FBA74F7A /* RDEPUBChapterData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317357794EF461FA4C6992E798C900DF /* RDEPUBChapterData.swift */; }; - 6ED8ED03655DAA19AD28AB74929C8D5E /* RDEPUBNotePopupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52A7FCBB2219561212D36C393B333E8D /* RDEPUBNotePopupViewController.swift */; }; - 6F0024AAF00C39496470ABDA6311FC34 /* RDEPUBTextLayoutFrame.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9E94387C53C6E054A73F8EE89787003D /* RDEPUBTextLayoutFrame.swift */; }; - 6F111FA5A549C14B477D6D11A072C865 /* RDEPUBChapterRuntimeStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7118633F5A91B2900F602E19CFD15D1F /* RDEPUBChapterRuntimeStore.swift */; }; + 6E5FC40818F90D13C4715DC82CAA05D0 /* RDEPUBReaderSearchBarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1F6418C1A247C2BC37337DE4C0A9C770 /* RDEPUBReaderSearchBarView.swift */; }; + 6F3D6640A523A3CDAE5042B420839D06 /* RDEPUBReaderTheme.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4C9154B6031E8FD71F71E3F89391A519 /* RDEPUBReaderTheme.swift */; }; 6FA0125F16DDEDAD341DB75DEB084F4B /* DTHTMLWriter.m in Sources */ = {isa = PBXBuildFile; fileRef = B23C5F038DAC52B75213C0760C431F2B /* DTHTMLWriter.m */; }; - 700215E76C62321BBD343D2FA26AC750 /* DTCustomColoredAccessory.h in Headers */ = {isa = PBXBuildFile; fileRef = BAE45673EE2875DB23FA7BDD61FDE1EF /* DTCustomColoredAccessory.h */; settings = {ATTRIBUTES = (Public, ); }; }; 7027EF8D77D4082C1BB9B80FF61FCADC /* DTCoreTextLayoutFrame+Cursor.h in Headers */ = {isa = PBXBuildFile; fileRef = 214F0FC87DE99D3FCE69D98B357F3FFC /* DTCoreTextLayoutFrame+Cursor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 70423D7766237808D787F70649D66D2D /* RDEPUBMemoryProbe.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE883C47DFCDA257928D7BCC153B127E /* RDEPUBMemoryProbe.swift */; }; - 70B2498BF424D327D9F685942E2545FD /* epub-fixed-layout.html in Resources */ = {isa = PBXBuildFile; fileRef = C229DC7F5A2BB8C2A3C586FF6CF41D47 /* epub-fixed-layout.html */; }; - 721100E1D82608E783B22C3E07699E7C /* RDEPUBReaderSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61EE5C61A8163892E9A19C231828658C /* RDEPUBReaderSettingsViewController.swift */; }; - 72BDDBEFDA5D6E7FC270C312B1BCC4DE /* RDEPUBTextPaginationInterfaces.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8ED87665B0B64B6E8153C0490203E43B /* RDEPUBTextPaginationInterfaces.swift */; }; + 7171BDF42DA8008320D1AC7E7A8FEB05 /* RDEPUBTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F5110430A322C853C80F6041B0EDF94 /* RDEPUBTextBookBuilder.swift */; }; + 71B76C3166DE0C5DF235A0C22EFEDE59 /* RDEPUBCFIRecoveryEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35803D654BE44326A28A0947DD178B63 /* RDEPUBCFIRecoveryEngine.swift */; }; + 7217CE578FE4452B04FDB29E272BAA21 /* RDEPUBReaderController+ContentDelegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = B359BD655F8361E4030C9E5F4FBAAD97 /* RDEPUBReaderController+ContentDelegates.swift */; }; + 72F720BE51962FC458B7A77B5635EFCF /* RDReaderView+ContentAccess.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8BB0B072E5F24B51A6D348D8F9745CC /* RDReaderView+ContentAccess.swift */; }; 730ACB99580C5982DC08D50FC5084D41 /* DTAttributedTextView.h in Headers */ = {isa = PBXBuildFile; fileRef = B4D20A2B33F9F4DD8499FB462DE2731F /* DTAttributedTextView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 73D0271B76B6262C2300B3C7DB163DF2 /* RDReaderView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D24E48ADEAADE831B2F5FAFBF67CD53D /* RDReaderView+CollectionView.swift */; }; + 738FAFC22719BC9A70AFBD0D3B05C79A /* RDEPUBPresentationRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88FB583F2D022D1B84B91F285F67FE76 /* RDEPUBPresentationRuntime.swift */; }; + 73C0E664C70F48D94EB4A95026909708 /* RDEPUBReaderDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = A357FC293046D648FE84D98C27AF2821 /* RDEPUBReaderDelegate.swift */; }; 7408D293C24C3BD9CBBCBB530B50938B /* Pods-ReadViewDemo-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = AA0811310099A4BCB3D52683B70DB3D1 /* Pods-ReadViewDemo-dummy.m */; }; 7459A1656EDC29D685073B83561B783E /* NSNumber+RomanNumerals.h in Headers */ = {isa = PBXBuildFile; fileRef = 7CFFB65C5D340A4B5C627B3EF02CD127 /* NSNumber+RomanNumerals.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 745C41558A0E86F1EE7C1C7D15180C06 /* RDEPUBReaderChromeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0763B05C11F090D063D1BF3D9E6C31B7 /* RDEPUBReaderChromeCoordinator.swift */; }; - 759B37F4E343E04EEB2EFA3CF524A47D /* RDEPUBCFIMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11C3B7C93919D787AAC0C4D25E52805A /* RDEPUBCFIMarkerInjector.swift */; }; - 777A8C7B4DFA0A72A6E20A1E76D213F3 /* Archive+MemoryFile.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFF51E56E09E095C92CB5B9F21384027 /* Archive+MemoryFile.swift */; }; + 757A101F60F482793C65B07F301FC009 /* RDEPUBParser+Resources.swift in Sources */ = {isa = PBXBuildFile; fileRef = 170D81239AF3CE5CD64BA2E44A505872 /* RDEPUBParser+Resources.swift */; }; + 763E0AE4634F863DA80C723AE8259806 /* RDEPUBTextBookModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33643E88B779A3DB1B3A14C7A194045B /* RDEPUBTextBookModels.swift */; }; 7821105EF320619993B3BF7FB90C7ADA /* DTCSSStylesheet.h in Headers */ = {isa = PBXBuildFile; fileRef = 796EF27FF6AA4B62367B6BD9CEBD85A8 /* DTCSSStylesheet.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 783581535949175DA2E2C1D2D907E48C /* RDEPUBDarkImageAdjuster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 378AC6C2092D7E25BFF88FB4C743886C /* RDEPUBDarkImageAdjuster.swift */; }; 78D24D82D98D77E744FF73C9040618A8 /* DTHTMLParserNode.m in Sources */ = {isa = PBXBuildFile; fileRef = 5001C74FB9506AEC71E458047698A4AB /* DTHTMLParserNode.m */; }; + 793A9A3FCA9C44D959556F91F9706CB5 /* RDEPUBChapterOffsetMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33D775F257172C2AB560D7B9B5A918FD /* RDEPUBChapterOffsetMap.swift */; }; 7A48CDFB40202EFD09A2A9AB0EE0770D /* DTCoreTextFontDescriptor.h in Headers */ = {isa = PBXBuildFile; fileRef = 1EF19AD0EF4889156D46061FB43E0F5D /* DTCoreTextFontDescriptor.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 7AB9F2AE594BD802C76BBA4980E19705 /* RDEPUBReaderDependencies.swift in Sources */ = {isa = PBXBuildFile; fileRef = EC2E45BB6FF85A1D1E2C853B5AB68048 /* RDEPUBReaderDependencies.swift */; }; + 7A7FF7B976849107A4083C537537FDD9 /* RDEPUBChapterPageCounter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 328AA616EE25AB53BFB60EFE1C7AAFCE /* RDEPUBChapterPageCounter.swift */; }; 7C05F56B62B15EFF344C5CDE4A52B8FB /* DTHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 7A4E9E54E556A72BC885CCC08B3791C1 /* DTHTMLElement.m */; }; - 7CDBBCF9CC1552D3AB0B095A1AA6FB5A /* RDEPUBSettingsFlipAutomation.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADB1213E5EB8A69E4CD2283819D92718 /* RDEPUBSettingsFlipAutomation.swift */; }; - 7F6038D943A16DE9AC6A1C0F7A0402BC /* RDEPUBParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AACA59CA4CBD2AFAACC3D162C2C75B5 /* RDEPUBParser.swift */; }; + 7E0D7B35BB0767623CC6BA41C219E988 /* RDReaderContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 410C5BB742936BFF1A02BAB0970CAF34 /* RDReaderContentCell.swift */; }; + 7E9E05AD2B6728C1D299F07941522290 /* RDEPUBChapterData.swift in Sources */ = {isa = PBXBuildFile; fileRef = 317357794EF461FA4C6992E798C900DF /* RDEPUBChapterData.swift */; }; + 7EF2739F9A5644F0A33A0BB5FBB847F9 /* DTActivityTitleView.m in Sources */ = {isa = PBXBuildFile; fileRef = 662D30C1E74D1D5122921475F4024F73 /* DTActivityTitleView.m */; }; + 7F2BA0E2BCB6D4613A6A0F79CD8A0341 /* RDEPUBJavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = F69C9651823EAB579B078EC3B7435D16 /* RDEPUBJavaScriptBridge.swift */; }; + 7F99F1B51CCF451AE85BA8088FEB4519 /* RDEPUBPaginationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 422DAC763888F8667708F7B66F9C701E /* RDEPUBPaginationModels.swift */; }; 7F9CC306B17D409DB903DF850FEDA64C /* DTListItemHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 61B18088896D291E0CE7718DFE82FAC1 /* DTListItemHTMLElement.m */; }; - 7FE9F58EFF876EC8014F334CAA38D30E /* DTCustomColoredAccessory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9542AFE3A82C8AE56576254CE196E71A /* DTCustomColoredAccessory.m */; }; 8099F1E613A15275EF5FC59ED3C73579 /* NSAttributedString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 7805DFC2CB71F5B6BBF7891876360EFB /* NSAttributedString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 80E64600E4FF6A3D54497AFCEB21A330 /* RDEPUBPaginator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65572083A10EE0C48AA7F493F923BCC0 /* RDEPUBPaginator.swift */; }; - 81086388CAAFC08F99A6CFBC54E612FC /* RDEPUBRuntimePageCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = B68E527967EEF7E7E61E5B5F1F64C791 /* RDEPUBRuntimePageCount.swift */; }; + 80E95C784BB3D4FE6A6C0B71AE11F9B2 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F661A240C4FCF4610D249E6389CF34E /* RDEPUBReaderController+AttachmentTooltip.swift */; }; 811D7CBCD710AE45FF80A4B05BFE444C /* UIFont+DTCoreText.m in Sources */ = {isa = PBXBuildFile; fileRef = CEBA01360577AAD3FD089B6B17C24260 /* UIFont+DTCoreText.m */; }; 814D0D63E5FD4AB7231E63064FE9EB5C /* NSAttributedString+DTDebug.m in Sources */ = {isa = PBXBuildFile; fileRef = 5096458D9BD2818F786BC3B61B91EAC7 /* NSAttributedString+DTDebug.m */; }; 81905A7717925A17E6B98E934A75B8BA /* QuartzCore.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0834E84632886CDD9911CAB76183F1CE /* QuartzCore.framework */; }; 82119A0DC4981CC2AF389C7C4CC08186 /* DTListItemHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 5DB480D0B78911DBF96986E64A714907 /* DTListItemHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 828F623C86C2A80E235B2134A0CCA664 /* RDReaderView+PageCurl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499C327E148794A7F09BAF1C83BE59EF /* RDReaderView+PageCurl.swift */; }; - 83519082B9AE779AED5292F7BEC3F536 /* RDEPUBPageInteractionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = A01E0B0F5FAC4DBF5D1DEC0013417AC1 /* RDEPUBPageInteractionController.swift */; }; + 83336BED035B870BBC5CE6C13A4A5676 /* RDEPUBDTCoreTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 505D658FEB22042EEDC51D402700F8C9 /* RDEPUBDTCoreTextRenderer.swift */; }; 83A4BC9FE4765C9B848DD4925D99F362 /* DTAccessibilityElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 5D146C3F4B7878B5CE8EFF38765580C2 /* DTAccessibilityElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 840CB4AD602D707E2C2C4FFB41556248 /* RDEPUBReaderUIState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EED5E2706CF825A44883E6FC04A74AEA /* RDEPUBReaderUIState.swift */; }; - 857E62043F8CC55F9663CFDE0AEC96ED /* Data+CompressionDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6B46EF6F055A721AF370D705D026E9E /* Data+CompressionDeprecated.swift */; }; - 86CE7CF558D2DC085C9D6DEC7B2FFA2C /* RDEPUBModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDFEB59EC6040AB3CF58E4E1045A8913 /* RDEPUBModels.swift */; }; - 872AAE3DA53479C97D1DA24E9DDFD043 /* NSURL+DTAppLinks.h in Headers */ = {isa = PBXBuildFile; fileRef = A3F7613E99CAA29881A015D0ED969B86 /* NSURL+DTAppLinks.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 873DF3287B8B155EDB5F2FEE84DDAF13 /* DTExtendedFileAttributes.m in Sources */ = {isa = PBXBuildFile; fileRef = 56E8939081946D090FD77A04F879754C /* DTExtendedFileAttributes.m */; }; - 8823198305D6AF3485BC4DAA84CA08CE /* UIScreen+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = AF436E76C893E223A4F0BE86C1276054 /* UIScreen+DTFoundation.m */; }; - 884C57253DC39B361B9D821059BBCB0B /* RDEPUBTextPageDecorationView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A7ECD7EBE082C509350CCB121EE308F6 /* RDEPUBTextPageDecorationView.swift */; }; + 85F3D006BBBB3C4B0D15F76801AE6518 /* RDEPUBTextIndexTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80F1F9A3C3AD1C55622B17CA5D503766 /* RDEPUBTextIndexTable.swift */; }; + 8602D332B12D56DF37C90CA9E8216DEF /* DTFoundationConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = FF63F5E8902D6F3F5E845A924EBBC6D3 /* DTFoundationConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8704620DCD44CD027D5566BB69576C20 /* RDEPUBBackgroundTrace.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51DA940F74309B236AFA2A214D82D47C /* RDEPUBBackgroundTrace.swift */; }; + 8892F824CF5AE13E7951F21E83A1341F /* ZIPFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = B41F7D27C2336F89BB0185ACB0B19EA9 /* ZIPFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8A0A0FB23DB0021ADC9AD0D90631883A /* NSMutableString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = 52053ABC9CD3D4A72CD8A22173428AEB /* NSMutableString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; 8A35CC67F0AA6B26397C10D756EA34E8 /* DTTextHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = ED9A1EBDA0FD72671C7F6FE15F37B906 /* DTTextHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8A6DB3C30CAA5C433EB4A6964D59411B /* RDEPUBTextSearchEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24130F5639CFFFA28D8BE6C2BD7A45FE /* RDEPUBTextSearchEngine.swift */; }; - 8A9ECE2E8CD637210EAEACA2930CB20B /* RDEPUBTextIndexTable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80F1F9A3C3AD1C55622B17CA5D503766 /* RDEPUBTextIndexTable.swift */; }; + 8A927D68F7759D6828B7A75ED7A4E313 /* RDEPUBCFIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ADCC15F3965570C3568420F9A75845E /* RDEPUBCFIParser.swift */; }; 8AC90941E71199090BCED76DE89EFB60 /* DTAttributedTextView.m in Sources */ = {isa = PBXBuildFile; fileRef = F46010C3A0C82AE5ABEC814D7EC6351B /* DTAttributedTextView.m */; }; - 8B2918CC0175499F973B3EC6E6CCAD09 /* NSString+DTPaths.m in Sources */ = {isa = PBXBuildFile; fileRef = D30DBDF1EDB20CF83690AC6619AA0C48 /* NSString+DTPaths.m */; }; 8B405CE13E7D718A9340A82B52766AB2 /* NSCharacterSet+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = A7E167717A18E0C858C6FD95804249E4 /* NSCharacterSet+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8B59DB319C18ABA52569DE2683A0BA70 /* DTFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = FF1C41D226C0957F715EFF3F23893386 /* DTFoundation-dummy.m */; }; - 8B98912F325274D04D610B3FAE7782B4 /* RDEPUBTextSelectionController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 745B50420148262217CC19E5B8E1E61A /* RDEPUBTextSelectionController.swift */; }; - 8C58B34D8DE85D12F107B697D7CBDD33 /* RDEPUBReaderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = BDF2713051A7FCC4BA20AD1374044971 /* RDEPUBReaderState.swift */; }; - 8C79FF60C4C70F03F4EA4C8F6713B392 /* RDReaderView-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 36606A851BDB5FFF6E9BFFDD7FB72455 /* RDReaderView-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 8DE51BB0432FCA906EE574F54728D7CF /* RDEPUBCFITextAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE1B490DE56DE55724779E3E8BF6D14A /* RDEPUBCFITextAssertion.swift */; }; - 8E1761DA4D139D2AFBC9672FB1FB78FB /* RDEPUBChapterLocation.swift in Sources */ = {isa = PBXBuildFile; fileRef = B02D3DE3AD6CA9AC5B80F44767F647FE /* RDEPUBChapterLocation.swift */; }; + 8B998D74A270BB941E76E642DF7636C3 /* DTHTMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BBE6384315D7F00F5ECFFF67A85AF9 /* DTHTMLParser.m */; }; + 8BAB1EEE05BFB3B8B153BF2D92FDFFC8 /* DTExtendedFileAttributes.h in Headers */ = {isa = PBXBuildFile; fileRef = 2F75437CE9F9324D315E417014797C1D /* DTExtendedFileAttributes.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 8CE17D58D28703A2311C974A430F4319 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25D28385D66ED93351515441996056D7 /* RDEPUBTextContentInteractionCoordinator.swift */; }; + 8D86B1DD0F6E09A3FBC9E5D03DCFF90C /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; 8E8726381CBCFB1EDB350183456D4EF7 /* DTHTMLParserTextNode.m in Sources */ = {isa = PBXBuildFile; fileRef = E5377786E80195587BF3E8A7589E5925 /* DTHTMLParserTextNode.m */; }; - 8F4BA91E37DA06CD0BBEDF9D0C5D9150 /* RDEPUBStyleSheetBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72F99D96321DF0F2BC595BC7B6A66EA2 /* RDEPUBStyleSheetBuilder.swift */; }; - 8F6093E0D4A2EDA6502FFA163A95EF03 /* RDEPUBCFICompatibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F08538F2728E3B8B81113D12DB74E3A /* RDEPUBCFICompatibility.swift */; }; - 911A30689EEF1FAD44FC96D757920A6E /* RDEPUBTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B35A0451D9A3CF5477258E38D363189 /* RDEPUBTextRenderer.swift */; }; + 8F695E0579605768E29DDA8C50596D9D /* DTTiledLayerWithoutFade.h in Headers */ = {isa = PBXBuildFile; fileRef = 0764D155F69503AACFA7AD976825E986 /* DTTiledLayerWithoutFade.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 90DE245714318E23EB6D5A19B8091CC0 /* NSData+DTCrypto.h in Headers */ = {isa = PBXBuildFile; fileRef = 94705DADD1F09F4162F7D733318238F4 /* NSData+DTCrypto.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 91085F6C691CF5E3B32E3B26BEC3605C /* ZIPFoundation-ZIPFoundation_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = CA4A114775B98CEA4A566C18123B145F /* ZIPFoundation-ZIPFoundation_Privacy */; }; + 910CF6F57206CE880204D4A3F693885C /* RDEPUBTextPageVerticalJustifier.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05474A384503DBB6DB8EF47D660B849C /* RDEPUBTextPageVerticalJustifier.swift */; }; + 9186C2A051CD161DD0AD17023C9B8683 /* DTHTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = CB2BD1F8CFECB82D427DF046439E68D6 /* DTHTMLParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; 91FDA47810CE5CE2C48AED9205AE89B5 /* DTStylesheetHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 354C1C3A74DB75C8B8608D538212A963 /* DTStylesheetHTMLElement.m */; }; - 92429AC50D8D9C9393EC06D275CDC5EE /* NSDictionary+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 45A67761829BBB3974CE24FE50E459EA /* NSDictionary+DTError.m */; }; 92C59F96D443525E8833676479FA60C5 /* DTVideoTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 50C2868064310B16D2B5FD9901C846DC /* DTVideoTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9400BE65C1A692BC1413843076D6EB03 /* RDEPUBMetadataParseWorker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3E238CC0941838E4BFCF81D523FFA0BF /* RDEPUBMetadataParseWorker.swift */; }; - 944B8F27F21C924747CCBCBC74517808 /* RDEPUBReaderEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 91D2B14530EDF4C2D742B24A0D32B858 /* RDEPUBReaderEnvironment.swift */; }; + 9305755E8D8376D85CE959EA84EA38B0 /* RDEPUBSafeArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA068568A9B92FE52049E190968609A8 /* RDEPUBSafeArea.swift */; }; + 9380666C109F9D0A903C936318A1C818 /* RDEPUBWebView+FixedLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD8F015377F898E4B0229FF584685390 /* RDEPUBWebView+FixedLayout.swift */; }; 94F5846979DBC90E2B646E975F5ECBA8 /* DTHTMLWriter.h in Headers */ = {isa = PBXBuildFile; fileRef = 14E63A0D35D4A07BD0123021EA161C99 /* DTHTMLWriter.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 967B256ED1342620B974B79ECB14CB02 /* RDEPUBReaderLocationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = DF1367D7047430E833E1596CCB9D7592 /* RDEPUBReaderLocationCoordinator.swift */; }; - 97815755305FE4263E834D2E733D7244 /* NSString+DTURLEncoding.h in Headers */ = {isa = PBXBuildFile; fileRef = CEEC8715398E89B42F9B04E290E8E4FE /* NSString+DTURLEncoding.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 97A08769271E83386E538B6CA488A1D7 /* RDEPUBHTMLNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = E3B908A78A947A1A9D66C368CB616DE4 /* RDEPUBHTMLNormalizer.swift */; }; + 971142A48582899957D6A526F2FB2895 /* RDEPUBTextRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B35A0451D9A3CF5477258E38D363189 /* RDEPUBTextRenderer.swift */; }; 9854DC3F1763B6272C2EA3FC6EC40B95 /* NSAttributedStringRunDelegates.h in Headers */ = {isa = PBXBuildFile; fileRef = 30EB4CF4AD4114DE53786C318621EB19 /* NSAttributedStringRunDelegates.h */; settings = {ATTRIBUTES = (Public, ); }; }; 987538B07E11741899878EA8BC947F51 /* NSCoder+DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = A592A34CA2EA792DDFAFAEB516FE8A10 /* NSCoder+DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9917E9B804CD33AF3BE2A992A3510C97 /* NSNumber+RomanNumerals.m in Sources */ = {isa = PBXBuildFile; fileRef = 6E21B10EE150F00F245D297EAB7F2BA2 /* NSNumber+RomanNumerals.m */; }; 992B7C8C824B5EA190EF1DB096064DB7 /* DTDictationPlaceholderTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D0856C3894240A673B5AB7C2704E9144 /* DTDictationPlaceholderTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9ACDE3CA3FE3A60AC27687C656FB419C /* RDEPUBNoteResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11D2090101EA891F21834863EE859AE8 /* RDEPUBNoteResolver.swift */; }; + 995F0E20A1745FECE256E5984C281223 /* RDEPUBViewportTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 751A6591CCEC79FB3B33C8EADF3465B6 /* RDEPUBViewportTypes.swift */; }; + 9A2E0E076EA566C56A230AFED489353C /* RDReaderView+PageCurl.swift in Sources */ = {isa = PBXBuildFile; fileRef = 499C327E148794A7F09BAF1C83BE59EF /* RDReaderView+PageCurl.swift */; }; + 9AB60E5308E49D98017B2CF7F9F00CA5 /* RDEPUBFontFallbackResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29DE76CD63BD47DC86DF55C349B1CF91 /* RDEPUBFontFallbackResolver.swift */; }; 9B199D71D2F48B2055A7FDF9BD7051CC /* NSString+CSS.m in Sources */ = {isa = PBXBuildFile; fileRef = 8718F2DB8F0DC085CB012D9996596F3F /* NSString+CSS.m */; }; - 9B1BC6991EADCE68D8C556C23803C70E /* WeReadApi.js in Resources */ = {isa = PBXBuildFile; fileRef = 3AF63806C4793F384C4CF28201BC756C /* WeReadApi.js */; }; - 9B7D4D2064D42DC7649C5A9B0A90DBAD /* RDEPUBRuntimeChapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462F0F78022064457859139A0D9B8D3E /* RDEPUBRuntimeChapter.swift */; }; + 9B836CB271EDBE823AC19F08BC0EC625 /* RDEPUBTextPerformanceSampler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8300EA716892548FEA44EC27801F5987 /* RDEPUBTextPerformanceSampler.swift */; }; 9BD146F72B29C703798001F138B069C2 /* NSCoder+DTCompatibility.m in Sources */ = {isa = PBXBuildFile; fileRef = 753994141ACB981C898B36B761321C23 /* NSCoder+DTCompatibility.m */; }; - 9C7780A496D623BBD48A87117EE07140 /* RDEPUBTextPageBoundaryValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 457B5F878654F351DEB25FAF4076AE4D /* RDEPUBTextPageBoundaryValidator.swift */; }; - 9D682703886BFAD8E7BCD0FE2EB1F78E /* RDReaderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9B4C7EA8E0601A462DDA753AFA93E66 /* RDReaderView.swift */; }; - 9D70BB28324C9FF5C0EFC5B4A7FC8D34 /* RDEPUBCFIMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0390F2BB06B9CE8FCBCD30D60C154B9 /* RDEPUBCFIMap.swift */; }; - 9D87AFB2CD371D4C2E4DF923743A3006 /* DTBlockFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 6D2316F422A6C97F95F9CF43E6F8E94F /* DTBlockFunctions.m */; }; + 9BFD528442B295AED7E060DC26BB1065 /* DTVersion.h in Headers */ = {isa = PBXBuildFile; fileRef = 8C9575F05D72C239E7E6F079BACDF4C7 /* DTVersion.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9C0DC170906447654EC656D17AD56645 /* default.css in Resources */ = {isa = PBXBuildFile; fileRef = 47DC174612C98B2CFB4E7D158169139E /* default.css */; }; + 9C9331448A1CBD31F9C64CBA0FBB793B /* DTBlockFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 35417EC94F2D58CB80C991F875CE15C2 /* DTBlockFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; + 9C9EEE7111F26FD3BECC39E97B674280 /* DTCustomColoredAccessory.m in Sources */ = {isa = PBXBuildFile; fileRef = 9542AFE3A82C8AE56576254CE196E71A /* DTCustomColoredAccessory.m */; }; 9DE04C83A68C7512C0A860FFF5CEC113 /* DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 8CF7CEB31BED0554F3EF3D3442A89B47 /* DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; 9E4AB71DE8B3E7218B53B2C8EF6B843A /* DTAttributedTextContentView.m in Sources */ = {isa = PBXBuildFile; fileRef = 7203B4D9D997037E0F9D154A3B049738 /* DTAttributedTextContentView.m */; }; - 9E94C953488AA36229B1AFBFA32BBED5 /* RDEPUBBackgroundCoverageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 113B414F4DD510248C8462427553EDF1 /* RDEPUBBackgroundCoverageStore.swift */; }; - 9EDEF94D4426C164FE9A2E2FA36ADC37 /* RDEPUBReaderLoadCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B660A95A07E55AE3763E8F908456150 /* RDEPUBReaderLoadCoordinator.swift */; }; - 9F00ED88950CC6FE3294B3484035AAE2 /* wxread-replace-latin.css in Resources */ = {isa = PBXBuildFile; fileRef = 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */; }; - 9F179DC382D2EC073B078FD429DEE6CF /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = E4C5EB3F8F005C65005C101A9DBE488A /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9F1B5F23AF8841B11D008BE9356D74C1 /* RDReaderView+ToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 83041D1E40ECC246DB5539C712499A09 /* RDReaderView+ToolView.swift */; }; - 9F7BF25BE458742AEF685FDBF03E8F6B /* UIView+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DEA4D201BB179BB6E228E9F688CD4C /* UIView+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; - 9FA66A3511705E7CF26F5F37F507875C /* RDEPUBReaderToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FAFD969C7141125539E80810C0A6A9B /* RDEPUBReaderToolView.swift */; }; - A0BF95B1A71DCE42E810D983687BB7F3 /* RDEPUBReaderAnnotationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C4416B5CBB4AF36581524965A8C8F53F /* RDEPUBReaderAnnotationCoordinator.swift */; }; - A0E447FEA7D1488ADCE2972E526D92D0 /* DTHTMLParser.m in Sources */ = {isa = PBXBuildFile; fileRef = 71BBE6384315D7F00F5ECFFF67A85AF9 /* DTHTMLParser.m */; }; + 9EB0170E3B12D184C78EEF4602A65309 /* RDReaderPreloadController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82B54A69DF5E94D0D1B34E9D31C0D997 /* RDReaderPreloadController.swift */; }; A132A0C9EB13B65FB886B11AA2E6304C /* NSDictionary+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C891B983F0CC956CAE3978A15875819 /* NSDictionary+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A15EA1D45DE28B8883D692ED66DC13DD /* RDEPUBWebView+Reflowable.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4AAC2FDC24D8604A39BD25111689D06A /* RDEPUBWebView+Reflowable.swift */; }; - A1F973FDFDF76DF8D0933605D66EBDA8 /* RDEPUBPaginationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 422DAC763888F8667708F7B66F9C701E /* RDEPUBPaginationModels.swift */; }; - A237D8BD5695BD412EFBF94B0FECE210 /* NSData+DTCrypto.m in Sources */ = {isa = PBXBuildFile; fileRef = F63EBF2BF3000B3391F6E693581EA129 /* NSData+DTCrypto.m */; }; + A133DADCC4B6BC6D0C037DAC0A930B3F /* Archive+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C9CA544EBF55130625F6C3AD2ABFB4 /* Archive+Deprecated.swift */; }; A2CA9C27EB2B77637A12723F8CFE7AAB /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = FA107BE47514D01B94B7A2670A9F83E5 /* NSString+HTML.m */; }; A30D5C1E413A3D319A83D3410A8A549F /* DTCoreTextParagraphStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = B7C4233DF4FA80BF4A9E6FA5082D49E5 /* DTCoreTextParagraphStyle.m */; }; - A58C42A9E07E7FE0F012C72C8875BE70 /* FileManager+ZIPDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F49FC82A04EE9B3B49CBA6CB88ACBC67 /* FileManager+ZIPDeprecated.swift */; }; - A6082878B9CCD86C68D33404E50F9C69 /* Archive+Deprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = F3C9CA544EBF55130625F6C3AD2ABFB4 /* Archive+Deprecated.swift */; }; - A6B7BEBBE39A4D2CCA975B69A8FF385D /* Archive+WritingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2373DCA0FC45287BFC063BEA661B8367 /* Archive+WritingDeprecated.swift */; }; + A48D92059E665D572F4752713D33D8F7 /* Entry+Serialization.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C1831768CE55090EADD902B29B6CD1 /* Entry+Serialization.swift */; }; + A5F4E73D08B78DC9FC63FF9E71AC5326 /* RDEPUBTextRendererSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E000FE659A8C4AE6C55AE7B9CC951AA /* RDEPUBTextRendererSupport.swift */; }; + A695F716FD1DFA3CAE43F52135ACDB66 /* RDEPUBSearchModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E07EEE45C5439A207C5647210A4A7F /* RDEPUBSearchModels.swift */; }; A72E9F983E5BBFA7485EFB482B80E89E /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = E687628EF2FE92D093E3005D21B578E5 /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; - A7D06BA48ADC3D9B552018F7571D2E78 /* RDEPUBReaderChapterListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B42B8B70BAED6BCED06FF54636A4FF0C /* RDEPUBReaderChapterListController.swift */; }; + A736290F32D0ED7B7EC1268AE1D72154 /* NSArray+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 8E5297E7F5769C61C1838962BA76D4F5 /* NSArray+DTError.m */; }; + A7C4CDACFC79ED3C0CC24B518CEEB5D5 /* RDEPUBFontNormalizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63D23A912F5F91D0D3D83DF9E05515D0 /* RDEPUBFontNormalizer.swift */; }; A7D665BBDADBE3D64023FF52E218FCFA /* DTCoreTextConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = E89F199ECDE796B15CAF8E0C1775FAA6 /* DTCoreTextConstants.m */; }; - A85A3014D81A83761428B0F3A13153DE /* RDEPUBReaderContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92CEF2B1CC1AD607F9F46594DADCE788 /* RDEPUBReaderContext.swift */; }; - A87317751C202D7AD8713AC8B31BFE16 /* RDReaderView-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = 1C3DEA097D20AC964CFB673C39B4A8AF /* RDReaderView-dummy.m */; }; - A87ECC764B3058BD18F068F5235C0409 /* RDEPUBPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1EAAFA56DA59E80D53DA0DC7C6532D2 /* RDEPUBPreferences.swift */; }; + A8C4F1A966FA53FF2BBA7A97EA8E3BCF /* UIColor+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = 21D501067A95E18D0DCAEF44170D36F2 /* UIColor+RDEPUB.swift */; }; AA3722CC8B4992EDA8A9F5E9116835B7 /* DTCoreText-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = B6CA8CC4525EF64AA5CEE4A722737F1C /* DTCoreText-dummy.m */; }; - AA9ACAE70A4CC306428EDC279545AC17 /* RDEPUBTextPerformanceSampler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8300EA716892548FEA44EC27801F5987 /* RDEPUBTextPerformanceSampler.swift */; }; - ABA19D640CF2E239820BFCC47CF6CBD4 /* RDReaderSpreadResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 008302A48FE881CADADBCB02832B880B /* RDReaderSpreadResolver.swift */; }; - AC6986BEB5202AD38DADBDCA5E6E35AC /* NSURL+DTComparing.h in Headers */ = {isa = PBXBuildFile; fileRef = 1F1F7BFB63DE15D627EB8F64829B8AAD /* NSURL+DTComparing.h */; settings = {ATTRIBUTES = (Public, ); }; }; + AAF0A60FD7C1F632134A65AC34A37F93 /* RDEPUBReaderTableOfContentsItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5ECDA952875E7B452D3D15796C20046 /* RDEPUBReaderTableOfContentsItem.swift */; }; + AB57C91A5A85BDC769B0B16F93902861 /* ImageIO.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = FEB14A8F8170777DB7CCC3F27C8EA57A /* ImageIO.framework */; }; AC7000465258822B466855B12F1F97A3 /* DTCoreTextGlyphRun.h in Headers */ = {isa = PBXBuildFile; fileRef = 771E0D5CBCBC013BF5780FEE5BBA81FF /* DTCoreTextGlyphRun.h */; settings = {ATTRIBUTES = (Public, ); }; }; - ADFF1DCD1BBCDF63976D472155FDE109 /* RDEPUBChapterSummaryDiskCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 347A1849A630130CBFBDD4DDDC44A51A /* RDEPUBChapterSummaryDiskCache.swift */; }; + AD9C79AE20497F6795AD6AB0826DD3A7 /* RDEPUBReaderLocationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30B0AB500258357278F5D4E6C1AA2848 /* RDEPUBReaderLocationCoordinator.swift */; }; + ADB0613F7A7821828D71DE9B36F215A8 /* RDEPUBWebDecorationOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 636939AFA1CB3F49FE41D1160D512A54 /* RDEPUBWebDecorationOverlayView.swift */; }; + AE3D20CC98B01ED32FF4508114769A82 /* RDEPUBJumpSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35C2BF4CF393A0130124600E79ECC3D6 /* RDEPUBJumpSession.swift */; }; AF7A1DC953992A149CB0815C90769529 /* DTIframeTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = D4C731AA2088D7E873D8E3D21B95D215 /* DTIframeTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - AF94C02DCB17B49683E8D66372238792 /* RDReaderView-RDReaderViewAssets in Resources */ = {isa = PBXBuildFile; fileRef = 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */; }; - B0075EE1F2539980DC68350A92C8F464 /* RDEPUBParser+Package.swift in Sources */ = {isa = PBXBuildFile; fileRef = F94780553A2ED7BE5E972D634F7F52DE /* RDEPUBParser+Package.swift */; }; - B11CE7833B93D2AE5CDD0F71DAFF5012 /* RDEPUBWebViewDebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C59CB44187E054E80CA13F60FF8EE303 /* RDEPUBWebViewDebug.swift */; }; - B1C53F2DDF1548C6A9EA0262BD47F6D2 /* epub-bridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 64676B6C8A9F9195A481010213F37B6C /* epub-bridge.js */; }; - B20767C75E33D940407A73684BBF117D /* NSFileWrapper+DTCopying.m in Sources */ = {isa = PBXBuildFile; fileRef = D9A812C3E577A3ADC36BAE3FF7AA4D9C /* NSFileWrapper+DTCopying.m */; }; + AF7CACF0474B9FE3D9172AB298CDA425 /* RDEPUBCFIDOMPathBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49DF44BF9FBD9CCC9CDE0A998C428D86 /* RDEPUBCFIDOMPathBuilder.swift */; }; + AF9028B73D9C5575E3FCA3CEDC377A21 /* UIScreen+DTFoundation.m in Sources */ = {isa = PBXBuildFile; fileRef = AF436E76C893E223A4F0BE86C1276054 /* UIScreen+DTFoundation.m */; }; + AFF25E38A6547A1360F0F1C7A13A4E16 /* Archive+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = D18519BCA8FAA9B01A704A0F0B9FFC78 /* Archive+ZIP64.swift */; }; + B002E59779E939442511C792C82E5DE8 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + B226D57B4C6D260E22B067D428F6DCE9 /* RDEPUBCFIMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0390F2BB06B9CE8FCBCD30D60C154B9 /* RDEPUBCFIMap.swift */; }; B24FAD34A7915FC4B90FE9038E814FF2 /* DTLazyImageView.m in Sources */ = {isa = PBXBuildFile; fileRef = CA5630DC0E663F38A9EC713323697EE1 /* DTLazyImageView.m */; }; - B370BAB1B1D7913DAB1C6C186DD058B3 /* ZIPFoundation-ZIPFoundation_Privacy in Resources */ = {isa = PBXBuildFile; fileRef = CA4A114775B98CEA4A566C18123B145F /* ZIPFoundation-ZIPFoundation_Privacy */; }; - B4AF90C620D7D151BFE11E949374980B /* RDEPUBWebView+JavaScriptBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321FA16FF2FAD7985CCAC14EF5A221D4 /* RDEPUBWebView+JavaScriptBridge.swift */; }; - B52761359F11726D1B0FA2A132CEC212 /* RDEPUBReaderPersistence.swift in Sources */ = {isa = PBXBuildFile; fileRef = 563790B1DA3FCFFF97263535AEDB9591 /* RDEPUBReaderPersistence.swift */; }; - B5427437A9D88407114E663610C3C014 /* RDEPUBCSSCompatibilityLayer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F3B770A5B6ED1C21FDA2BD1A8B06EE6 /* RDEPUBCSSCompatibilityLayer.swift */; }; - B5DDFE1A90163715B0E93714052162F0 /* RDEPUBReaderBottomToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 45BDE90FC850C338F5085963B44CE0F3 /* RDEPUBReaderBottomToolView.swift */; }; - B63625809A957025082B4033C7442289 /* RDEPUBWebDecorationOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C9B40FEFC2CC9CEB30271F8C4A38740 /* RDEPUBWebDecorationOverlayView.swift */; }; - B6E39D7922E559EA9F6C452B0DEFA2ED /* RDEPUBReaderController+LocationResolution.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60F3D803C6E446785A25173F8A33539E /* RDEPUBReaderController+LocationResolution.swift */; }; - B78E0261737C3AB2C16AE5026AC5910E /* RDEPUBCFISerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F54575506F65B0B0E12AABF25A9E6C6F /* RDEPUBCFISerializer.swift */; }; - B7A0FE3182F8FA37D3DADBF317BE7D6F /* RDEPUBWebView+Configuration.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8E6795B0D648B27CC7EB030E7550566 /* RDEPUBWebView+Configuration.swift */; }; + B27621CA258E768A16E5E25A89668C6C /* DTSmartPagingScrollView.m in Sources */ = {isa = PBXBuildFile; fileRef = A20F6F0463A998DC3BD53DE9E63B63DE /* DTSmartPagingScrollView.m */; }; + B2D4278E2D1008B9717940F438726A34 /* DTActivityTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1516035C269F7A41EE064AAB14D562 /* DTActivityTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + B2E8E9B9519C8E8190BD47194D788CE9 /* NSURL+DTComparing.m in Sources */ = {isa = PBXBuildFile; fileRef = 467CC59CEC3B3BC7ACDCA776FDCBDC1D /* NSURL+DTComparing.m */; }; + B32BBAE5F349A30AB57236C3CC062A81 /* RDEPUBNotePopupViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B86020325578905B4D3E1E685C01CDA6 /* RDEPUBNotePopupViewController.swift */; }; + B634D426705F479A169E41DAC10D1955 /* RDEPUBTextPositionConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8BE089AF845973208A11AA41A9B6AAB /* RDEPUBTextPositionConverter.swift */; }; + B6A555BBEB8B42FFCE02D75862378B4E /* RDEPUBTextAnnotationOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AAF82A90409132033768049C49798C3 /* RDEPUBTextAnnotationOverlay.swift */; }; + B73D7A2503F92B5935924A7E3E370901 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9EA9EC765AA36B44104989E818B13326 /* RDEPUBReaderAssemblyCoordinator.swift */; }; B7BDD79FC06A1E4E0E17592860844108 /* NSAttributedString+DTCoreText.h in Headers */ = {isa = PBXBuildFile; fileRef = 3985FED7BD8EC49191663BEF73FB2C79 /* NSAttributedString+DTCoreText.h */; settings = {ATTRIBUTES = (Public, ); }; }; B8332F36582F7A001FE85A8D54B27C9E /* DTCoreTextParagraphStyle.h in Headers */ = {isa = PBXBuildFile; fileRef = BD65B936E2A6FEB74718EA86D9AC1899 /* DTCoreTextParagraphStyle.h */; settings = {ATTRIBUTES = (Public, ); }; }; B86493B996A888D1DA7814ECB6028E22 /* DTHorizontalRuleHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = DD7A2DE5BDF72ABC066484CE554BDEF0 /* DTHorizontalRuleHTMLElement.m */; }; - B90885681DDEEB4B8E9A02D42618DED8 /* RDEPUBFragmentMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 587C2E270D5414FF4E3786D14BD36694 /* RDEPUBFragmentMarkerInjector.swift */; }; + B8802F744D06EF02E7DBB6151F874688 /* RDEPUBStyleCompatibilityModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA3BB3F5BC48BF4CA6F8DE4559318C /* RDEPUBStyleCompatibilityModels.swift */; }; + B94583A5C6CEB6C22B65B1572E3A1B9A /* RDEPUBReaderController+LocationResolution.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67BEEE595D865F7E86B156385CDF6111 /* RDEPUBReaderController+LocationResolution.swift */; }; B94CD41727DFCA8791EED8FB2CA397DD /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 5C3D91FFA65414A2787FEB95576E0097 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - B9A95DEFECB1E89F36E3F43DED119DF8 /* RDEPUBWebContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6DFA1F6B3E87EFC26C391A4189DCB53 /* RDEPUBWebContentView.swift */; }; - BCE14EE78A2BFD66DBC63E3DEDB0BA96 /* DTTiledLayerWithoutFade.h in Headers */ = {isa = PBXBuildFile; fileRef = 0764D155F69503AACFA7AD976825E986 /* DTTiledLayerWithoutFade.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BD4D0BA5B93C8F582243A7BC87EAF01D /* NSString+DTUtilities.h in Headers */ = {isa = PBXBuildFile; fileRef = 7C80941DE172AF972D2247659684D93A /* NSString+DTUtilities.h */; settings = {ATTRIBUTES = (Public, ); }; }; - BDED6C43665A64B2F3A487526F317E07 /* RDEPUBParser+ReadingProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31B49361D4C4F119B135F85B7A8219DB /* RDEPUBParser+ReadingProfile.swift */; }; + BA7C1EC8FF514D08BB64EC4E9BEFFAC0 /* RDEPUBTextPageBoundaryValidator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74A0B8ECDC21C0F91EAB0484A86289DA /* RDEPUBTextPageBoundaryValidator.swift */; }; + BAB70BF6EB8A7F22ED7FAFE0B210D9FF /* RDEPUBWebView+Search.swift in Sources */ = {isa = PBXBuildFile; fileRef = CADF4452F89F7A5F419D2841FABC8CBC /* RDEPUBWebView+Search.swift */; }; + BC8E238263BDB456890A5BE8EC82FE09 /* DTVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = CCC633BF76C79E0B4A6750337D5DCDB8 /* DTVersion.m */; }; + BD1601EB1923096C0D1E60D9BD1BD2DE /* RDEPUBReaderController+RenderSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08ABF9E1CC5582725B03469178A59A0A /* RDEPUBReaderController+RenderSupport.swift */; }; + BDFDDC4A48A5FACFBC1DC1CDE1350357 /* RDEPUBReaderSettings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FADE8129957738A63AA3387FEC5222B /* RDEPUBReaderSettings.swift */; }; BE12CD112F82AD9050D7FB29395F27F9 /* DTVideoTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = B83D7A73677A2C3141EDEF56B9CE6584 /* DTVideoTextAttachment.m */; }; - C01E5466578E9C7FE1EB54CDC807281E /* DTFoundation-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 23588B63FC4026A371F5C683744A664C /* DTFoundation-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C03DA8BB6EADCF18FDC42EA0996A4A27 /* RDEPUBChapterCacheKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9E98DF633FFBA1D5C2D451CB2B2E6F1 /* RDEPUBChapterCacheKey.swift */; }; - C07672A68F02B0C89233FDB2F58405B4 /* DTPieProgressIndicator.m in Sources */ = {isa = PBXBuildFile; fileRef = 8BA617294E6371DD7FAC32B61E0873F2 /* DTPieProgressIndicator.m */; }; - C1BCDDF7EBA55903706A5435C3BD6952 /* rangy-core.js in Resources */ = {isa = PBXBuildFile; fileRef = 15A5AF469CA067562D1516F98913D4DF /* rangy-core.js */; }; - C256454C354207C9934BF9D8CEE7DC17 /* RDEPUBReaderController+DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8DBBD9EE558EAEC43860A5170AEEB3C /* RDEPUBReaderController+DataSource.swift */; }; - C31CB8F48217224330E3A3D756B6A9E6 /* NSMutableArray+DTMoving.h in Headers */ = {isa = PBXBuildFile; fileRef = 3046397381A83C2F6BAF344B86AD176E /* NSMutableArray+DTMoving.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C4ADF74929D282553D9CC6B12132E57A /* DTFoundationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F80AC45FB1DBF50E0E3AA4F26BFA676 /* DTFoundationConstants.m */; }; - C51D41D902C067957EBEB531784866C9 /* RDEPUBCFIUtilities.swift in Sources */ = {isa = PBXBuildFile; fileRef = E6CA207039A89EF3323F6FFEA38A1C3F /* RDEPUBCFIUtilities.swift */; }; - C5BB2F613985D1B830839ED1E11CEACA /* RDEPUBCFIParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ADCC15F3965570C3568420F9A75845E /* RDEPUBCFIParser.swift */; }; - C5C1EECC76090DF1CB2E7D8E7959CCE2 /* RDEPUBAttachmentTooltipView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8B5934123F0DB4372907A51918A83273 /* RDEPUBAttachmentTooltipView.swift */; }; + BE9C1998CCE5DFB92AAB95691E08AA1F /* DTSmartPagingScrollView.h in Headers */ = {isa = PBXBuildFile; fileRef = 21CCCCAAF832BE9C859BEDDC79B4E9E2 /* DTSmartPagingScrollView.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C09D441F47DC9EA1B655BFB0E2B4C042 /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0218A7B243387C79E099CA947CF243D /* Archive+Writing.swift */; }; + C108E606A900A4EE495AE04E08BDEA59 /* DTCoreGraphicsUtils.m in Sources */ = {isa = PBXBuildFile; fileRef = 0372FD1824BC43F7BD6B337430201420 /* DTCoreGraphicsUtils.m */; }; + C21094B9FCEAF6D8D94B2575C5D0C47D /* RDReaderViewProtocols.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF55DCBC3A5B0BEC5B1A4C6187F20D38 /* RDReaderViewProtocols.swift */; }; + C2AD0159F00DB585A1684EB0BCBFE610 /* RDEPUBReaderController+PublicAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 321B4FCED5571F74A0AAD75BF9637505 /* RDEPUBReaderController+PublicAPI.swift */; }; + C2EAD6705E64932D7957A88F9B85708C /* RDEPUBSelectionLoupeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1BEE21B44C49B23A7AAD27A4ACABF44 /* RDEPUBSelectionLoupeView.swift */; }; + C2F559074FF9F0354C733F8B175B91C8 /* Entry+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 288589D0B52F73505B43C743D9837578 /* Entry+ZIP64.swift */; }; + C3295FC9C627664107C0D3DD41938EBA /* RDEPUBResourceResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 677182E8663D93C2C9E5617999F649C7 /* RDEPUBResourceResolver.swift */; }; + C3612EECF20AE2BC8C1B84C468A7EF51 /* RDEPUBReaderChapterListController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE57F56B1368E2617F06DE5FF893AA7 /* RDEPUBReaderChapterListController.swift */; }; + C48915AC691D47F3880D347B775C403C /* RDEPUBSettingsFlipAutomation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 894D74C9B59F1EE9BE4DFF5D3B60B772 /* RDEPUBSettingsFlipAutomation.swift */; }; + C53F4357A355E1BF6695F05E1021A22B /* RDEPUBWebViewDebug.swift in Sources */ = {isa = PBXBuildFile; fileRef = C59CB44187E054E80CA13F60FF8EE303 /* RDEPUBWebViewDebug.swift */; }; + C5DE018B3EBA50BC4F9D87EB03F810A4 /* RDEPUBReaderToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59600B93DBD35077CC79C74D07BC03CE /* RDEPUBReaderToolView.swift */; }; C5EE8E7373FBD24E66C678356393D871 /* DTCoreTextFontCollection.m in Sources */ = {isa = PBXBuildFile; fileRef = 722AF38F5106ADDE6F98D282F886A769 /* DTCoreTextFontCollection.m */; }; - C60C55B121391A5AF467974B11309DD7 /* RDEPUBImageViewerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3283355D8EFC5B2B3D2D676DCE1BCEDB /* RDEPUBImageViewerCoordinator.swift */; }; + C5F367B6EC933668EAD90AB7B6394AE6 /* RDEPUBModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = EDFEB59EC6040AB3CF58E4E1045A8913 /* RDEPUBModels.swift */; }; C6B65C0EA759DF426FBBBB113BA3C3E8 /* DTBreakHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 7D8AE4BEBD1998839BA83AD05CA6CAC5 /* DTBreakHTMLElement.m */; }; - C72498A0EFC6C52DAB148D7F89F91A5E /* RDEPUBTextPaginationSupport.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4609798012DB9C5B85641224CD6081D /* RDEPUBTextPaginationSupport.swift */; }; + C6E901F7E1180BFAD5FFDD7D9D60DBB9 /* WeReadApi.js in Resources */ = {isa = PBXBuildFile; fileRef = 3AF63806C4793F384C4CF28201BC756C /* WeReadApi.js */; }; C72CE4B974DFAE2C3037D425EB559314 /* DTCoreTextLayoutFrame.h in Headers */ = {isa = PBXBuildFile; fileRef = C46FCF109DBCB37595D2A3366CF1D765 /* DTCoreTextLayoutFrame.h */; settings = {ATTRIBUTES = (Public, ); }; }; - C79D3ACF7D916E647CF4071DF76FF694 /* DTFolderMonitor.h in Headers */ = {isa = PBXBuildFile; fileRef = A8CC38EFEF171FFEE008C32A6319BE6A /* DTFolderMonitor.h */; settings = {ATTRIBUTES = (Public, ); }; }; + C86E362D36C74FE4559A54576F7C04A5 /* rangy-core.js in Resources */ = {isa = PBXBuildFile; fileRef = 15A5AF469CA067562D1516F98913D4DF /* rangy-core.js */; }; + C8C6CE8DEFF63D9D5FDA9DB100A45DD0 /* DTFoundationConstants.m in Sources */ = {isa = PBXBuildFile; fileRef = 0F80AC45FB1DBF50E0E3AA4F26BFA676 /* DTFoundationConstants.m */; }; C8F753B56A6C4D2A938B6EA68CF522F8 /* DTColorFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = 720396ED306E768BAD28007D5E96B757 /* DTColorFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; C9DD05EF2D27FFEBFA7BF6F437168501 /* DTCoreTextConstants.h in Headers */ = {isa = PBXBuildFile; fileRef = A61C8F1BDD76EA59082F65269083BD08 /* DTCoreTextConstants.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CA823FD71C0113C96F9BED13E98817A8 /* ZIPFoundation-dummy.m in Sources */ = {isa = PBXBuildFile; fileRef = E9D8AB18960B56A997408E3235751624 /* ZIPFoundation-dummy.m */; }; - CC2144FB1A6B27AC54FC4DAAD06AB050 /* RDReaderPreloadController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82B54A69DF5E94D0D1B34E9D31C0D997 /* RDReaderPreloadController.swift */; }; - CC5C8A39AEFABC007F0ED9DEECDE7AC1 /* RDEPUBSelectionOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9990D385BA523E06021532FB947967B /* RDEPUBSelectionOverlayView.swift */; }; - CC7DDA979B2F4CDAE40A3EFF77026910 /* RDReaderContentCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = 410C5BB742936BFF1A02BAB0970CAF34 /* RDReaderContentCell.swift */; }; + C9E30ED66CBBE352C35305AC6E1A5F2A /* RDEPUBPaginationCacheCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 528643F4F0CD2FEC7AD5C0ACA9895D9D /* RDEPUBPaginationCacheCoordinator.swift */; }; + CAE9C7E8F8BF6322155DB2AA530C905B /* UIView+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 29DEA4D201BB179BB6E228E9F688CD4C /* UIView+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; + CB177A8E7BE40959C8C71E15CDBA0688 /* RDReaderView-RDReaderViewAssets in Resources */ = {isa = PBXBuildFile; fileRef = 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */; }; + CB26464A5790BA24495D6BEEB5BA4216 /* RDReaderGestureController.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE6582B1336C77B6C366DAA669570B4A /* RDReaderGestureController.swift */; }; + CBCADFEE601640B09A1F70DAE191A882 /* RDEPUBAssetRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = E97B6B6C59BBCD6685CE808E64981E76 /* RDEPUBAssetRepository.swift */; }; + CC6B05241A40971D95985E73574BF325 /* DTPieProgressIndicator.h in Headers */ = {isa = PBXBuildFile; fileRef = 173194D38C897D8E38AD8A194E47DB5C /* DTPieProgressIndicator.h */; settings = {ATTRIBUTES = (Public, ); }; }; CC8B8F3D758E98B51F69EDFAA69663A4 /* NSString+HTML.h in Headers */ = {isa = PBXBuildFile; fileRef = DC7D3AB85C954DA41E1500936C166C0E /* NSString+HTML.h */; settings = {ATTRIBUTES = (Public, ); }; }; - CD07B6D83A3EE35C403CA18660E3DE87 /* RDEPUBReaderController+ExternalLinks.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CCE94BB911FD46F5041173C2B601F2B /* RDEPUBReaderController+ExternalLinks.swift */; }; - CDBE585CA5FFEE29F992BD700CF11D79 /* RDEPUBSelectionLoupeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 592C900095F4CE33172C3233D2720E53 /* RDEPUBSelectionLoupeView.swift */; }; - CE4F884B81F8F1C6E6D283768A102802 /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3E162E0261A5B0850158D3403191E62 /* Archive.swift */; }; - CEC143DE538A2438B7EE30F733C6F5B1 /* NSString+DTUtilities.m in Sources */ = {isa = PBXBuildFile; fileRef = F3E93C4AC73A09DE1EAE805B0ADE3306 /* NSString+DTUtilities.m */; }; + CCB0E720D8A29B7877E15196ED3F1712 /* RDEPUBNotePopupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = C38063F3F0C8D42DC9970AD664B475B0 /* RDEPUBNotePopupCoordinator.swift */; }; + CDC518E9F14CC95B4A08177DE9844405 /* PrivacyInfo.xcprivacy in Resources */ = {isa = PBXBuildFile; fileRef = 006D002D86B43AA52E0AFD2E18459107 /* PrivacyInfo.xcprivacy */; }; + CE1AD32EC47B914878C96D72C1DF0407 /* RDEPUBCFIError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9C1CDD44F96B466A619015AA0A7B2D17 /* RDEPUBCFIError.swift */; }; + CE407E1A7424F091BD8CA5AF29F11D1D /* NSDictionary+DTError.m in Sources */ = {isa = PBXBuildFile; fileRef = 45A67761829BBB3974CE24FE50E459EA /* NSDictionary+DTError.m */; }; CFC49467FE75BFABC22A1CE2FFA26570 /* DTImage+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = CF1CED3ED65443999913BC0D96ACA151 /* DTImage+HTML.m */; }; + CFE6B9E809438CC90BBC76C4496FF9A2 /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F653EFBBEDAAC96A34BC93B4211E792 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D05A5FC200F6862A31CBCEE97B4EB3A4 /* RDEPUBWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09608C067F73D7A137B9F22AF1384DF2 /* RDEPUBWebView.swift */; }; D063317214AFF5143D9C958E5FAFBB38 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; + D095B75FDCDDCF2603F89B00FE810F29 /* RDEPUBParser+ReadingProfile.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31B49361D4C4F119B135F85B7A8219DB /* RDEPUBParser+ReadingProfile.swift */; }; + D0F01595DA430FF422E4444660C65D66 /* String+RDEPUB.swift in Sources */ = {isa = PBXBuildFile; fileRef = C46B8E1584FAC5111CD0C46A159AB951 /* String+RDEPUB.swift */; }; D1A93B2D7F1B312755C48790338D7712 /* DTIframeTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = BA8A527A4CCB2AF1C1E26744B301F6B8 /* DTIframeTextAttachment.m */; }; - D31E5EA195C333049DE497301EFD2BA8 /* NSMutableArray+DTMoving.m in Sources */ = {isa = PBXBuildFile; fileRef = ADD5B2F66FCCFB58393314E7B9FE4384 /* NSMutableArray+DTMoving.m */; }; - D4E1BD55CB50FAE3E5F629004180CF45 /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 004EF3C2CC7FA5E3556C149C6514309E /* RDEPUBPageMapReconciliationCoordinator.swift */; }; - D4F073EFF3AB9902816591F4D92CD9FC /* RDEPUBTextLayouter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86526ADF32337683AA173B5FC1E6A94C /* RDEPUBTextLayouter.swift */; }; + D1AD11465484A539562B97EACA5A7294 /* RDEPUBReaderEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1CDA4D9D71528F8C1070DBF2AFB21AED /* RDEPUBReaderEnvironment.swift */; }; + D35C453CE2934D63A534C3DF14DB1193 /* RDEPUBPageBreakPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD3430DE68FE0020F68C496C24E87470 /* RDEPUBPageBreakPolicy.swift */; }; + D3821C1D1240C48382C3DC9EE086BFC3 /* UIColor+RDEPUBHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0ABD7D7079A2D977E38F0289E27447EC /* UIColor+RDEPUBHex.swift */; }; + D4978BF32F70F56DC0336ABA26D5B43B /* RDEPUBReaderAnnotationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1AB6F109E02D97808539FB0F9B894487 /* RDEPUBReaderAnnotationCoordinator.swift */; }; D526E03C098DA6CF8F01C1BC126C9BBA /* DTCoreText-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = 13F8FC8B51AD434F5D4B0CF5150D7563 /* DTCoreText-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D52D504561415193B8D8731387406403 /* RDEPUBPageCountCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = F861EBEED5EEBC67F1F7D8A479069EEB /* RDEPUBPageCountCache.swift */; }; - D5CF2E24EF14B57D2168EB7C44C32145 /* RDEPUBViewportTypes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2088F60EF3B4ADB258266A178B5D3ECC /* RDEPUBViewportTypes.swift */; }; - D6406B0E25B3462D230EB0498DD20AF3 /* RDEPUBReadingSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 314E39CF7ADE645354AC8873D80957CA /* RDEPUBReadingSession.swift */; }; - D6735070EA7803B9CD44F3B6319A3044 /* RDEPUBWebView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09608C067F73D7A137B9F22AF1384DF2 /* RDEPUBWebView.swift */; }; - D782680C3249B3848A8E7DCB29665EC0 /* DTHTMLParser.h in Headers */ = {isa = PBXBuildFile; fileRef = CB2BD1F8CFECB82D427DF046439E68D6 /* DTHTMLParser.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D7AED37646A665332F337B31C4071410 /* DTAnimatedGIF.h in Headers */ = {isa = PBXBuildFile; fileRef = F9D9BEF72311AF9E3239F9B92A9D2842 /* DTAnimatedGIF.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D82B8E3CA04192590999A80AE31A0134 /* Archive+Writing.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0218A7B243387C79E099CA947CF243D /* Archive+Writing.swift */; }; + D5B7E7EE50571CDD4CC29DC213B484D1 /* RDEPUBTextBookCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 696C8561F8104D867B50A79E1147DE02 /* RDEPUBTextBookCache.swift */; }; + D5D4C9E7AF6B052B16C49CFE42C3256D /* RDEPUBChapterDisplayContentCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3A6AD2E4A78A3060ED880D0ADFC9C5C7 /* RDEPUBChapterDisplayContentCache.swift */; }; + D774B677F70DE8690AEE544D300325FC /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25B061393791774B154F5F8759A2BDD9 /* RDEPUBAttachmentTooltipOverlayView.swift */; }; D82DDA4C1E5C4D5378A9E5EA3F8E9DFE /* DTBreakHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 14283024FA4A0231B32CA22AA907FEFA /* DTBreakHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - D83430CB424836F9A1B874801AB56F95 /* RDEPUBChapterOffsetMap.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6D1A3ADEC673B078306A361D2601E743 /* RDEPUBChapterOffsetMap.swift */; }; - D97F718E6DE212120CAEB1EB0545D138 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - D990C9BBC5DEAEE4BA5BFF730C017B94 /* NSString+DTFormatNumbers.m in Sources */ = {isa = PBXBuildFile; fileRef = C5005A9E8F746647585CCAB26853E922 /* NSString+DTFormatNumbers.m */; }; - D9BDE5ECF4EDB325C935F92526AF3BCC /* RDEPUBNotePopupCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CEC94872B74DE33DE8E675EEBC60812A /* RDEPUBNotePopupCoordinator.swift */; }; - DA02AE37173CA807657B44A7C20604E7 /* RDEPUBTextContentView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6E1394B4A44C49F86D8E755C1C16910C /* RDEPUBTextContentView.swift */; }; + D8C46305AAB14F8F5064D519B029AA67 /* RDEPUBRuntimeChapter.swift in Sources */ = {isa = PBXBuildFile; fileRef = D8590506F0EECF12909B4BBA8CCCF3D6 /* RDEPUBRuntimeChapter.swift */; }; + D9198DC4DEF107D39DA38B282418727B /* UIApplication+DTNetworkActivity.h in Headers */ = {isa = PBXBuildFile; fileRef = 55423549E54A01F039B5F379B264C73F /* UIApplication+DTNetworkActivity.h */; settings = {ATTRIBUTES = (Public, ); }; }; + D9605D2EA0DFC00D02A4DF6BDACB3537 /* Archive+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 55B9309F0BDDDE2C3EE13C97BF2C0F1E /* Archive+Helpers.swift */; }; DA5B51E5D80C161D2902B6FC60DA5EC8 /* DTImageTextAttachment.h in Headers */ = {isa = PBXBuildFile; fileRef = 27372A23AA4B051867E7D2C749D1DE81 /* DTImageTextAttachment.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DA9C5616DC232B156BE657B482DC9F4C /* RDEPUBCFIDOMPathBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 49DF44BF9FBD9CCC9CDE0A998C428D86 /* RDEPUBCFIDOMPathBuilder.swift */; }; + DA79394BEF363C93BA15CBB18882387F /* RDEPUBStyleSheetBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 72F99D96321DF0F2BC595BC7B6A66EA2 /* RDEPUBStyleSheetBuilder.swift */; }; + DACE30D73A9F24E47169758E96D2FB22 /* rangy-serializer.js in Resources */ = {isa = PBXBuildFile; fileRef = 1527510DA54482E3557D6BB3EB651015 /* rangy-serializer.js */; }; DAD16D3E6EBB32FF96C63BFE6037065F /* DTLinkButton.m in Sources */ = {isa = PBXBuildFile; fileRef = CE761A55BD57C0BFD6336CD073F85C31 /* DTLinkButton.m */; }; - DB38823D05F9EAA6515ED753C076068E /* RDEPUBReaderSearchCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 145A463390EC56FF141B1FFA95C6EB52 /* RDEPUBReaderSearchCoordinator.swift */; }; DBCA42F7E1697F4EC82E0E7C9657851D /* DTAttributedTextCell.h in Headers */ = {isa = PBXBuildFile; fileRef = 068885F1B54CFD5DBBE6E2DC253F7819 /* DTAttributedTextCell.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DC39285E80B6FB62F4F0CF4DAD71DD70 /* Entry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0D93C2002AAECD29B3ED5A14026D3DFE /* Entry.swift */; }; + DC1D4FD92F5860C25B1827B2570C79E4 /* DTTiledLayerWithoutFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 23006DBAC610AEB0A4B3EAFEA4FB0567 /* DTTiledLayerWithoutFade.m */; }; + DC24B5B7425A85CAA327121EFC13F7A2 /* RDEPUBReaderRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFF9AAECD5FDC285A509FEED0B29951E /* RDEPUBReaderRuntime.swift */; }; DC3E2932A82AD5D88D8B1EFBF004BEC8 /* DTCSSListStyle.m in Sources */ = {isa = PBXBuildFile; fileRef = 40FD7C9E2E05FB4A73F4C4C70A3AFAF0 /* DTCSSListStyle.m */; }; - DD26AEA60539DED9AD28F2159313A41B /* DTVersion.m in Sources */ = {isa = PBXBuildFile; fileRef = CCC633BF76C79E0B4A6750337D5DCDB8 /* DTVersion.m */; }; + DC5B3968CF64D52B02A9BEC6E775FDD4 /* RDEPUBTextPageRenderView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6859E00AB232CC21F2C63A4CCB9EB108 /* RDEPUBTextPageRenderView.swift */; }; DD73CD0E5148961D1ABD80E050122314 /* DTCoreTextFunctions.h in Headers */ = {isa = PBXBuildFile; fileRef = DA2ED17D0DDF5F1C5606BFFD9A512DE4 /* DTCoreTextFunctions.h */; settings = {ATTRIBUTES = (Public, ); }; }; - DE2477E7AF48AC9600DCB208D5C8523E /* RDEPUBSafeArea.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA068568A9B92FE52049E190968609A8 /* RDEPUBSafeArea.swift */; }; - DE3D7E5F7E446D69573E4F0FEEAB85BB /* NSFileWrapper+DTCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = B43D7603C0D66635268842EC0A2655AC /* NSFileWrapper+DTCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; DE68AD2F426FD462BC70F968E5AF5553 /* DTTextAttachmentHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = AC0A4ED7E936923A29A5EEB1D95D6B55 /* DTTextAttachmentHTMLElement.m */; }; - DF1C221DC22E91A3950948E08E0202F7 /* RDEPUBReaderHighlightsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFE59748EBA8ED3671180B5ACB903377 /* RDEPUBReaderHighlightsViewController.swift */; }; + DEF9A0575535DB791E2C22F10A3B0762 /* Archive+BackingConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 765A94769106D14615FFB30EE1BD5E65 /* Archive+BackingConfiguration.swift */; }; DFB5A1C64C7908FD05BEFF7C7B571353 /* DTAttributedLabel.h in Headers */ = {isa = PBXBuildFile; fileRef = 09FF858DC29B73E9B67B32B03CFF4084 /* DTAttributedLabel.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E03787083A7F95A436360351495FCC9F /* RDEPUBStyleCompatibilityModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DFA3BB3F5BC48BF4CA6F8DE4559318C /* RDEPUBStyleCompatibilityModels.swift */; }; - E1030FA1F1FD28A346E9B0CDE79A3C9E /* RDEPUBReaderPaginationCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8CF3C95B01CA3EFA19AD38DA2AC51E5 /* RDEPUBReaderPaginationCoordinator.swift */; }; - E149D293D49FC1A797C2F7690729E081 /* RDEPUBCFIGenerator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 104930ADAD326C90EB587485A6BFF755 /* RDEPUBCFIGenerator.swift */; }; - E197A95013D415FCB22EF52D7F83EDEA /* rangy-serializer.js in Resources */ = {isa = PBXBuildFile; fileRef = 1527510DA54482E3557D6BB3EB651015 /* rangy-serializer.js */; }; + E0ACC692A6E030A3BC76B4C463FC5633 /* RDEPUBReadingLocationModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = E67A535D80CEA637777BC317BCFE28C6 /* RDEPUBReadingLocationModels.swift */; }; + E1375BF50702AF2715E3D6B128553DBB /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B69C9433F2FBE5CE8409BD4266DFE8 /* Data+Compression.swift */; }; + E1C9EA6A9255ED661104908CE5FDD37F /* RDPlainTextBookBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75F44A99D2304FE5397B4DCD6BABAF2B /* RDPlainTextBookBuilder.swift */; }; + E1D7C3ECB222249108F6A0C3DC8B71D1 /* RDReaderView+CollectionView.swift in Sources */ = {isa = PBXBuildFile; fileRef = D24E48ADEAADE831B2F5FAFBF67CD53D /* RDReaderView+CollectionView.swift */; }; E1DA58105A72D6C0B77A8A9F7822BD68 /* DTCoreTextLayoutFrame.m in Sources */ = {isa = PBXBuildFile; fileRef = 4641C3C93CE32054665ACF80457A7A94 /* DTCoreTextLayoutFrame.m */; }; - E233331C5792C8C79E1C31F0617F96A0 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E86839B7DDFC59C16A388E00239F50F /* RDEPUBReaderAssemblyCoordinator.swift */; }; - E2E8C0892B9A8C42DBEC22695AFD9CBD /* DTActivityTitleView.h in Headers */ = {isa = PBXBuildFile; fileRef = AF1516035C269F7A41EE064AAB14D562 /* DTActivityTitleView.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E33C2D168A4E6B3DA75FD2BE92D978BF /* RDEPUBStyleSheetComposer.swift in Sources */ = {isa = PBXBuildFile; fileRef = F0796C7E8BEEA96989FCE6698868366D /* RDEPUBStyleSheetComposer.swift */; }; - E35DC3465FF74C36D1877CE677053732 /* RDEPUBNavigatorLayoutContext.swift in Sources */ = {isa = PBXBuildFile; fileRef = 055B53D0A60DC351390338A48800AE77 /* RDEPUBNavigatorLayoutContext.swift */; }; + E2743CECD77E9F0CBBBBE0208C06A4F5 /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = E865600EE9117A9153716299FFA7912D /* Archive+Reading.swift */; }; + E2C8F99C0D397CB91F64EE73021E60AA /* RDReaderPageChildViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33452E6D078F6CC1EF8A17DF42966CAA /* RDReaderPageChildViewController.swift */; }; E38FC7829B5BDD1588FA487E0FBAC208 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = B50104DE2E35D820ECA22CDB3E6F96EA /* Foundation.framework */; }; - E3C79B70ACF93E0817F39141252748E3 /* DTCompatibility.h in Headers */ = {isa = PBXBuildFile; fileRef = 8F653EFBBEDAAC96A34BC93B4211E792 /* DTCompatibility.h */; settings = {ATTRIBUTES = (Public, ); }; }; - E4D40CE3F09E656A501BE416D3E75182 /* NSString+DTURLEncoding.m in Sources */ = {isa = PBXBuildFile; fileRef = 131C1D8C96DF2D44A2D4F50C5AEFFF11 /* NSString+DTURLEncoding.m */; }; - E4E1ACD032CFBA1EA80A4E5DD8F68848 /* UIColor+RDEPUBHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4D1E680FFD8DDC08A39464AD386D2992 /* UIColor+RDEPUBHex.swift */; }; - E63EF4172239E114561F77A6EDABEA7F /* UIApplication+DTNetworkActivity.m in Sources */ = {isa = PBXBuildFile; fileRef = 730B56BC97DFF2B1E04DD2608055D9E0 /* UIApplication+DTNetworkActivity.m */; }; - E6C10023AEAEF85E7202D0BCD43E847E /* RDEPUBReaderRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8829A16514270D407FA56861634910D6 /* RDEPUBReaderRuntime.swift */; }; - E80114BEF65115368E89B351DF979DDA /* RDEPUBPageResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 76C37210B5D599FF177A819748A274DF /* RDEPUBPageResolver.swift */; }; - E82E865A9535983CF0E322C3A120A106 /* Archive+Reading.swift in Sources */ = {isa = PBXBuildFile; fileRef = E865600EE9117A9153716299FFA7912D /* Archive+Reading.swift */; }; + E398FC9914DF2A5088DB753AD361A4AC /* RDEPUBReaderController+DataSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6A42607282986A7CB11AD3361E82530C /* RDEPUBReaderController+DataSource.swift */; }; + E4088DFB00F106A3BEA476A1570497B8 /* RDEPUBBackgroundCoverageStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92BDC596AE388602E419B3750DAD4229 /* RDEPUBBackgroundCoverageStore.swift */; }; + E48E862AD8952D3C1C6873484996A37E /* RDEPUBChapterCacheKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = E07FDF85BE977EC47B3B8194DA98648E /* RDEPUBChapterCacheKey.swift */; }; + E735D9E4200242DD1A20A21BD5DE96E8 /* RDURLReaderController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5253C9907BB440614610BB054B001181 /* RDURLReaderController.swift */; }; + E7BBD037775F4E4FC8C5F5B2C1F6DE74 /* RDEPUBImageViewerCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75DA84652E7A2A0529D8385085690062 /* RDEPUBImageViewerCoordinator.swift */; }; + E8401B395AE4914B5EE2D0C09CDCF841 /* RDEPUBChapterDataCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = 842C60964BEEDCF50FFF84E40B135751 /* RDEPUBChapterDataCache.swift */; }; + E847811FA489F675A69816A24E89C7C0 /* RDEPUBReaderBottomToolView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AA7348D6DBED868AB2EC3A252840235A /* RDEPUBReaderBottomToolView.swift */; }; E8AB5CE26A5224EF09E9E363D70C7775 /* DTDictationPlaceholderView.m in Sources */ = {isa = PBXBuildFile; fileRef = 1FA88D00B7B2B2F0BA98BB92DF035906 /* DTDictationPlaceholderView.m */; }; - E9FDE27049972F9802E2968B2A54CCA4 /* NSString+DTFormatNumbers.h in Headers */ = {isa = PBXBuildFile; fileRef = A3BD3ED7913130D32E14D5572CBCC921 /* NSString+DTFormatNumbers.h */; settings = {ATTRIBUTES = (Public, ); }; }; + E90D43AA0AD458CB37C055A739FC7F45 /* RDEPUBRuntimePageCount.swift in Sources */ = {isa = PBXBuildFile; fileRef = 36B0EC72869740D8DB68B51304CC9B48 /* RDEPUBRuntimePageCount.swift */; }; EA0040823CCF8E97363DB5891F5DA6D0 /* DTCoreTextFunctions.m in Sources */ = {isa = PBXBuildFile; fileRef = 4917E08E6E59460594AC443EDDAB7E77 /* DTCoreTextFunctions.m */; }; - EA2781B628D5C588BD13FF68B8EB4F67 /* RDEPUBReaderConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF49A91751A72F97903729543181A6B9 /* RDEPUBReaderConfiguration.swift */; }; - EADAA30B24211C8357659B97D6990479 /* DTTiledLayerWithoutFade.m in Sources */ = {isa = PBXBuildFile; fileRef = 23006DBAC610AEB0A4B3EAFEA4FB0567 /* DTTiledLayerWithoutFade.m */; }; - EB65ABC75FDB00A44AB0A4B8734EEA66 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5CC04F74B62D6B70820B21C9498D09C /* RDEPUBReaderController+RuntimeBridge.swift */; }; + EAF13D2953FCD72F195E9570B52E3912 /* Date+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D23D8D10719754D93032F66EB98536 /* Date+ZIP.swift */; }; + EB30F253217E1FEF29C352010550227C /* RDEPUBPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = D1EAAFA56DA59E80D53DA0DC7C6532D2 /* RDEPUBPreferences.swift */; }; EBB7E4D4DB253B5F1267CF9B4DDB4E93 /* DTCoreTextFontDescriptor.m in Sources */ = {isa = PBXBuildFile; fileRef = 88464D2E3579F1A5B25DCCA128528938 /* DTCoreTextFontDescriptor.m */; }; + EC421506FB12180BE48E4066B67176DD /* DTFolderMonitor.m in Sources */ = {isa = PBXBuildFile; fileRef = BEA46E51E3616ECEAF0ACCEA9B8C67EF /* DTFolderMonitor.m */; }; EDA269B595D70EC2B9D81DC890157D63 /* DTAccessibilityViewProxy.h in Headers */ = {isa = PBXBuildFile; fileRef = 399AED6BF151EC39BE4450784795A832 /* DTAccessibilityViewProxy.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EDCD76D407E7BE7D66F1D02E1D5524EE /* RDEPUBResourceURLSchemeHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B5686B2CD1ADB2443ECF94B15903873 /* RDEPUBResourceURLSchemeHandler.swift */; }; + EDB22948AD6C7DFB5AF514AAC74CCEB4 /* UIScreen+DTFoundation.h in Headers */ = {isa = PBXBuildFile; fileRef = 9C5E29D728B8CD4EABC0B3DD9CD9DE99 /* UIScreen+DTFoundation.h */; settings = {ATTRIBUTES = (Public, ); }; }; EE4F0992A0F597320FF7BDE4691D0FD4 /* NSString+CSS.h in Headers */ = {isa = PBXBuildFile; fileRef = 3578B97A85BCDC60888FDF87B8F2600C /* NSString+CSS.h */; settings = {ATTRIBUTES = (Public, ); }; }; - EF8EF713C7DBBC114AF00BB54688B886 /* RDEPUBTextAnnotationOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 95C3D8182D7F19D798483F0031DB4B8A /* RDEPUBTextAnnotationOverlay.swift */; }; + EE82D71B45FB3F5253C20CED00A83905 /* epub-bridge.js in Resources */ = {isa = PBXBuildFile; fileRef = 64676B6C8A9F9195A481010213F37B6C /* epub-bridge.js */; }; + EF83C2E1CFBB5E27E20DB1CBED62B356 /* DTWeakSupport.h in Headers */ = {isa = PBXBuildFile; fileRef = E4C5EB3F8F005C65005C101A9DBE488A /* DTWeakSupport.h */; settings = {ATTRIBUTES = (Public, ); }; }; + EFD93ED339F0D5CB242D3D1316AACE15 /* DTLog.h in Headers */ = {isa = PBXBuildFile; fileRef = 207CC0EEB74CECEB43A870FF80560E0F /* DTLog.h */; settings = {ATTRIBUTES = (Public, ); }; }; F006F73F17F2E3CC0E7852E9357BA946 /* DTAnchorHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = 599172147A32B6978EB5AAE1BE55FF7A /* DTAnchorHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; + F01B5B179687BFD9F9926BBDB6ACF96A /* Archive+WritingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2373DCA0FC45287BFC063BEA661B8367 /* Archive+WritingDeprecated.swift */; }; + F044036C609628883322321D708E6A8B /* RDEPUBCFITextAssertion.swift in Sources */ = {isa = PBXBuildFile; fileRef = FE1B490DE56DE55724779E3E8BF6D14A /* RDEPUBCFITextAssertion.swift */; }; + F0CCACFC44ACC09F51A457F95A5079E4 /* DTBase64Coding.m in Sources */ = {isa = PBXBuildFile; fileRef = E5D4D6E12779C54F17AE98A1E6C9B699 /* DTBase64Coding.m */; }; F0F631056BADA32253528247DF493272 /* DTHTMLElement.h in Headers */ = {isa = PBXBuildFile; fileRef = F7C508BE899A1397560A767CAEADB7B9 /* DTHTMLElement.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F10E196600D9D9B578D2092DE5CF0601 /* NSDictionary+DTError.h in Headers */ = {isa = PBXBuildFile; fileRef = 05838D65DEC339C51AADB17346B7E287 /* NSDictionary+DTError.h */; settings = {ATTRIBUTES = (Public, ); }; }; - F1436DB556678069EE1DAAA6CD21D6BD /* RDEPUBJumpSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = B35B9168E52A3CBB8E424FD0F5A0361C /* RDEPUBJumpSession.swift */; }; - F3BF4C42ECB685ABA17AFFF436AA8DD6 /* RDEPUBReaderServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3B25B5299A67D3BEA9E9887BE079BCDF /* RDEPUBReaderServices.swift */; }; - F41BEDF611247EC8338D9FE8B7E2BA00 /* Archive+BackingConfiguration.swift in Sources */ = {isa = PBXBuildFile; fileRef = 765A94769106D14615FFB30EE1BD5E65 /* Archive+BackingConfiguration.swift */; }; - F487E4572BA5F4C757EB6D6C50320BA7 /* RDEPUBTypesettingPipeline.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92960C67FEC64C10BA567184834F0DCC /* RDEPUBTypesettingPipeline.swift */; }; + F1CDC4F8B2FA28E00CBD282DFA72D49C /* RDEPUBReaderSettingsViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5857420A221729DB0D3EBBC59AA4BFF2 /* RDEPUBReaderSettingsViewController.swift */; }; + F28C5B831BFD35396E6F45BF65AD1F28 /* RDReaderPagingController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C99F4EC07FF6B3DD8C8B72E54DEB008 /* RDReaderPagingController.swift */; }; + F36F09BAA9AE57FF3DCBABA061CAC4A0 /* NSFileWrapper+DTCopying.h in Headers */ = {isa = PBXBuildFile; fileRef = B43D7603C0D66635268842EC0A2655AC /* NSFileWrapper+DTCopying.h */; settings = {ATTRIBUTES = (Public, ); }; }; F4A2E3C4237B8931F61B72FF0BDD6D69 /* DTObjectTextAttachment.m in Sources */ = {isa = PBXBuildFile; fileRef = 8EDA1618562CC224690CF6FC03AFED38 /* DTObjectTextAttachment.m */; }; - F4C56CA89B50670081B742F4715AC9DD /* RDReaderTapRegionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D75F5147BF67C9935CC45C16F0118C14 /* RDReaderTapRegionHandler.swift */; }; - F57FC499CF50E2C66E28E56B28ABCFC1 /* Archive+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = D18519BCA8FAA9B01A704A0F0B9FFC78 /* Archive+ZIP64.swift */; }; + F4B2FA0C6A5D681F76C6C6F41F06D437 /* RDReaderTapRegionHandler.swift in Sources */ = {isa = PBXBuildFile; fileRef = D75F5147BF67C9935CC45C16F0118C14 /* RDReaderTapRegionHandler.swift */; }; + F4B3D5E720E9ECEF3813E3F20392725F /* Archive+Progress.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE83356F8FBC1801D29CA93C1A190D81 /* Archive+Progress.swift */; }; F58ABA106C6200175DF574DF05A75BA8 /* DTAccessibilityElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 18F842408AB76A580B80255453F2FDF6 /* DTAccessibilityElement.m */; }; F5A424E67F41C4F7B830CE2F7E71570D /* DTCoreText-Resources in Resources */ = {isa = PBXBuildFile; fileRef = F4E2B1AC73977F10254628C0B7EBE38F /* DTCoreText-Resources */; }; F6036BBDFE7484F5A453F6876C97C098 /* NSAttributedString+SmallCaps.m in Sources */ = {isa = PBXBuildFile; fileRef = 98CF9C5D504838741E399811F4D5A0B7 /* NSAttributedString+SmallCaps.m */; }; F61102C9BF3D6296CB6C6B754ABF98C5 /* DTTextHTMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = 69076FC9D4201719C319547346DA3E21 /* DTTextHTMLElement.m */; }; - F859E971794D18B4596AACB619C9FC0E /* Data+Compression.swift in Sources */ = {isa = PBXBuildFile; fileRef = 22B69C9433F2FBE5CE8409BD4266DFE8 /* Data+Compression.swift */; }; - F896051055B1D335F9DCBAF12528D17F /* Entry+ZIP64.swift in Sources */ = {isa = PBXBuildFile; fileRef = 288589D0B52F73505B43C743D9837578 /* Entry+ZIP64.swift */; }; - FA9A0F5DA5D75BA58E5FD351AEBF77C7 /* RDEPUBResourceResolver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 677182E8663D93C2C9E5617999F649C7 /* RDEPUBResourceResolver.swift */; }; - FAB5E8C85816C2A4151BA0E6AC853D16 /* RDEPUBSemanticMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F4881006C6FAE4DFADBE2ACE4E9A744 /* RDEPUBSemanticMarkerInjector.swift */; }; - FB73803F328A3E28764797436C90B0B1 /* RDEPUBReaderController+TableOfContents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 35AD33C94AE70E2D00F629BACC8622C9 /* RDEPUBReaderController+TableOfContents.swift */; }; - FBEA39961A7CC41D92A67A52D859FA9B /* RDEPUBBackgroundPriorityPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = DFA733CE261D37C49F859F8E72332108 /* RDEPUBBackgroundPriorityPolicy.swift */; }; - FC27EB0CB0FF172C74A211248FC42DEA /* RDEPUBChapterWarmupOrchestrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1FAFF98C24F34206448C655698BF56E3 /* RDEPUBChapterWarmupOrchestrator.swift */; }; + FB2C643CD9553D5BD03E4BA5088E71EB /* cssInjector.js in Resources */ = {isa = PBXBuildFile; fileRef = 2EBD41467F344F6091AD0C1A3981EDC3 /* cssInjector.js */; }; + FB4199352AAC811E9BC4FEBAEFDBE66C /* RDEPUBReaderState.swift in Sources */ = {isa = PBXBuildFile; fileRef = AE9B612343098773F84020F02EF8FB23 /* RDEPUBReaderState.swift */; }; + FBDD7D73613BCCAE82217DEDC25F3827 /* RDEPUBParser.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2AACA59CA4CBD2AFAACC3D162C2C75B5 /* RDEPUBParser.swift */; }; FC5F52919451A15639442B46B38E4C67 /* DTCoreTextLayoutFrame+Cursor.m in Sources */ = {isa = PBXBuildFile; fileRef = EF625CF6A790938F5CE0F0C7DC36E340 /* DTCoreTextLayoutFrame+Cursor.m */; }; - FD26AB576144C8A2678BBFB213E17E7C /* RDEPUBReaderController+ContentDelegates.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11C152E0F5FA501D1DE57C6F84974FB2 /* RDEPUBReaderController+ContentDelegates.swift */; }; + FCD2420C80CC980EEED544B1BF12A5E1 /* RDEPUBChapterWarmupOrchestrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2622CEF5D9B34D713B60EB2991499EDC /* RDEPUBChapterWarmupOrchestrator.swift */; }; + FCD460BA901F28C1098FE3E601D67E06 /* RDEPUBCFIMarkerInjector.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11C3B7C93919D787AAC0C4D25E52805A /* RDEPUBCFIMarkerInjector.swift */; }; + FCD556E1A22809B004BBB7722C5F0D8E /* Archive+ReadingDeprecated.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5193541848D2D1BF115A45D8A730611C /* Archive+ReadingDeprecated.swift */; }; FD5D68887297CFA94F543C49DC68A156 /* DTHTMLAttributedStringBuilder.m in Sources */ = {isa = PBXBuildFile; fileRef = E0192469A486DA7CECFECEA37518B6B9 /* DTHTMLAttributedStringBuilder.m */; }; - FDD70B9210012C399DDEAC1ACEF2B2AA /* Date+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18D23D8D10719754D93032F66EB98536 /* Date+ZIP.swift */; }; + FDE567E1D200A599BDB6090ED4C8E577 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 90779E903799E06765C8410408D06C76 /* RDEPUBReaderController+RuntimeBridge.swift */; }; FEB00C614DCB6A8A7BDF8DEE11260984 /* NSMutableAttributedString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = 7CA72FA9A4F2F42A75C58325738A44AC /* NSMutableAttributedString+HTML.m */; }; - FF707D17AED7D66ACAD9953CF67DA3EC /* RDEPUBCFIPath.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDCA21771B2D145D7DCFEEDE00FEDADC /* RDEPUBCFIPath.swift */; }; - FFD2CD894C5599DB9D60FEFFAE1F9395 /* RDReaderFlowLayout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56A9260F17C4825708B83598BEC99365 /* RDReaderFlowLayout.swift */; }; - FFE7975D2961B9A306B6BB6831C2C8B4 /* RDEPUBPresentationRuntime.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8857E55841583E848290F85432CA460B /* RDEPUBPresentationRuntime.swift */; }; + FF459F7B0C40924DB0D1F4AE703C2133 /* URL+ZIP.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6430501430329643C8280B3985C48711 /* URL+ZIP.swift */; }; FFEB74D61E54DC46EFE0DBE2E76EFAA1 /* Pods-ReadViewDemo-umbrella.h in Headers */ = {isa = PBXBuildFile; fileRef = EBA0272559B0F7FAD8AC670AC7431188 /* Pods-ReadViewDemo-umbrella.h */; settings = {ATTRIBUTES = (Public, ); }; }; /* End PBXBuildFile section */ /* Begin PBXContainerItemProxy section */ - 0FA9693685F9460B99920356EF985291 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = AE7F393FB7805DE2664AB4111873F907; - remoteInfo = "RDReaderView-RDReaderViewAssets"; - }; - 3C5DCECE0CCBBBF11E32FCD89FF41FC4 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; - remoteInfo = DTCoreText; - }; - 4CE1E333EFC7D126BF846EF5DE95196A /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = C7A8D82E407CD3FDC3BA55CEE519B252; - remoteInfo = "ZIPFoundation-ZIPFoundation_Privacy"; - }; - 674A6C9D96CA4E77FB1BCC2935DFFB9B /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; - remoteInfo = DTFoundation; - }; - 6E4C6A0099934171BD974B9C968C0A63 /* PBXContainerItemProxy */ = { - isa = PBXContainerItemProxy; - containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; - proxyType = 1; - remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; - remoteInfo = DTFoundation; - }; - B2B3B1D10F4029AF72458869308C4EC4 /* PBXContainerItemProxy */ = { + 074F879ADE9999797C86C3740B5E32D4 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = AA2E57587AA8EECA63C4BE08EA3CB6D2; remoteInfo = RDReaderView; }; - B93E0318F913C2A3AEC5E3871123DE60 /* PBXContainerItemProxy */ = { + 2ED6C00B62E16EDD0756021F22DF82D0 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; - remoteInfo = ZIPFoundation; + remoteGlobalIDString = C7A8D82E407CD3FDC3BA55CEE519B252; + remoteInfo = "ZIPFoundation-ZIPFoundation_Privacy"; }; - C954E4173D45F863B74E03CA5AD6E923 /* PBXContainerItemProxy */ = { + 3868F6EA6B9BF861CF7177F46830F1BD /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; - remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; - remoteInfo = DTCoreText; + remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; + remoteInfo = DTFoundation; }; - F8919A621AEA917EC6FFE71CAB71613A /* PBXContainerItemProxy */ = { + 7A2CCFC5E3869A63E6A282D8684D7A53 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = 8F6E5A5BF72D62CDFD25F91A7CFA3309; + remoteInfo = DTFoundation; + }; + 97B0BF093C37416184C7A171B080AC06 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; remoteGlobalIDString = 0C24CB0E87A728A11AA1124CB360D6A1; remoteInfo = "DTCoreText-Resources"; }; - F909F14D649B5BB80A2737493D561E58 /* PBXContainerItemProxy */ = { + A4328450FDA153EAB4BD0783C46E485B /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; + remoteInfo = DTCoreText; + }; + A67D6F565DADD3E0774013433C994B6E /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AA15C8469D67684160CC2A7098EB841C; + remoteInfo = ZIPFoundation; + }; + AAFAB68D136C5F2D92DBAB8B29FD0AB5 /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = B88F4EA0695B6B3165C64594850D72C7; + remoteInfo = DTCoreText; + }; + AD4ABAC26C7FD0B1AF7E70325A736A1D /* PBXContainerItemProxy */ = { + isa = PBXContainerItemProxy; + containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; + proxyType = 1; + remoteGlobalIDString = AE7F393FB7805DE2664AB4111873F907; + remoteInfo = "RDReaderView-RDReaderViewAssets"; + }; + D6606DA782022F182AB83DC44599FC10 /* PBXContainerItemProxy */ = { isa = PBXContainerItemProxy; containerPortal = BFDFE7DC352907FC980B868725387E98 /* Project object */; proxyType = 1; @@ -518,36 +519,40 @@ /* End PBXContainerItemProxy section */ /* Begin PBXFileReference section */ - 004EF3C2CC7FA5E3556C149C6514309E /* RDEPUBPageMapReconciliationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageMapReconciliationCoordinator.swift; sourceTree = ""; }; 006D002D86B43AA52E0AFD2E18459107 /* PrivacyInfo.xcprivacy */ = {isa = PBXFileReference; includeInIndex = 1; name = PrivacyInfo.xcprivacy; path = Sources/ZIPFoundation/Resources/PrivacyInfo.xcprivacy; sourceTree = ""; }; 008302A48FE881CADADBCB02832B880B /* RDReaderSpreadResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderSpreadResolver.swift; sourceTree = ""; }; + 02B2F8AC62D3CFC4C1A082B868C195F7 /* RDEPUBChapterSummaryDiskCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterSummaryDiskCache.swift; sourceTree = ""; }; 0372FD1824BC43F7BD6B337430201420 /* DTCoreGraphicsUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreGraphicsUtils.m; path = Core/Source/DTCoreGraphicsUtils.m; sourceTree = ""; }; + 0389417C712B5E7FA8F9FBB870FA2227 /* RDEPUBSelectionState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionState.swift; sourceTree = ""; }; 0430034A7AFBCEC269D7C46517004DF0 /* RDEPUBNoteDetector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteDetector.swift; sourceTree = ""; }; 044BEA679671E16EA9BA9AD627750742 /* NSMutableAttributedString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableAttributedString+HTML.h"; path = "Core/Source/NSMutableAttributedString+HTML.h"; sourceTree = ""; }; 045ADBF2087ADD914A9CA0B62EBF2A9F /* Pods-ReadViewDemo.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = "Pods-ReadViewDemo.modulemap"; sourceTree = ""; }; + 04D90198F17A11D36ABBECA5A4F3AD7F /* RDEPUBMetadataParseCancellationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseCancellationController.swift; sourceTree = ""; }; + 05474A384503DBB6DB8EF47D660B849C /* RDEPUBTextPageVerticalJustifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageVerticalJustifier.swift; sourceTree = ""; }; 055B53D0A60DC351390338A48800AE77 /* RDEPUBNavigatorLayoutContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNavigatorLayoutContext.swift; sourceTree = ""; }; 057DBFBFC99448A0B77A3C0DBB13B4A9 /* NSScanner+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSScanner+HTML.m"; path = "Core/Source/NSScanner+HTML.m"; sourceTree = ""; }; 05838D65DEC339C51AADB17346B7E287 /* NSDictionary+DTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+DTError.h"; path = "Core/Source/NSDictionary+DTError.h"; sourceTree = ""; }; 068885F1B54CFD5DBBE6E2DC253F7819 /* DTAttributedTextCell.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedTextCell.h; path = Core/Source/DTAttributedTextCell.h; sourceTree = ""; }; - 0763B05C11F090D063D1BF3D9E6C31B7 /* RDEPUBReaderChromeCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChromeCoordinator.swift; sourceTree = ""; }; 0764D155F69503AACFA7AD976825E986 /* DTTiledLayerWithoutFade.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTiledLayerWithoutFade.h; path = Core/Source/iOS/DTTiledLayerWithoutFade.h; sourceTree = ""; }; 07E07EEE45C5439A207C5647210A4A7F /* RDEPUBSearchModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchModels.swift; sourceTree = ""; }; 0834E84632886CDD9911CAB76183F1CE /* 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; }; + 08ABF9E1CC5582725B03469178A59A0A /* RDEPUBReaderController+RenderSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RenderSupport.swift"; sourceTree = ""; }; + 08AF3CF7541223D386A278B79878A8DF /* RDEPUBReaderViewportMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderViewportMonitor.swift; sourceTree = ""; }; 08F54C3D9B4AECA08A47309615DC2715 /* DTFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTFoundation-prefix.pch"; sourceTree = ""; }; 09336B106D598DCD38F6B79AEA629066 /* RDEPUBCoreTextPageFrameFactory.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCoreTextPageFrameFactory.swift; sourceTree = ""; }; 09608C067F73D7A137B9F22AF1384DF2 /* RDEPUBWebView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebView.swift; sourceTree = ""; }; 09FF858DC29B73E9B67B32B03CFF4084 /* DTAttributedLabel.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedLabel.h; path = Core/Source/DTAttributedLabel.h; sourceTree = ""; }; + 0ABD7D7079A2D977E38F0289E27447EC /* UIColor+RDEPUBHex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUBHex.swift"; sourceTree = ""; }; 0ADCC15F3965570C3568420F9A75845E /* RDEPUBCFIParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIParser.swift; sourceTree = ""; }; + 0B4FEEF73E68688CF8770B9A3A368710 /* RDEPUBBackgroundPriorityPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundPriorityPolicy.swift; sourceTree = ""; }; 0B8321AB80CFE0B94537AEA63E9A79F5 /* NSString+Paragraphs.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+Paragraphs.h"; path = "Core/Source/NSString+Paragraphs.h"; sourceTree = ""; }; 0C24F592C4F38F15DC8C46BE0442B59C /* DTCSSListStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCSSListStyle.h; path = Core/Source/DTCSSListStyle.h; sourceTree = ""; }; 0D93C2002AAECD29B3ED5A14026D3DFE /* Entry.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Entry.swift; path = Sources/ZIPFoundation/Entry.swift; sourceTree = ""; }; 0EA81A6E9B081AC375550C90411530B8 /* RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "RDReaderView-Info.plist"; sourceTree = ""; }; 0F5110430A322C853C80F6041B0EDF94 /* RDEPUBTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookBuilder.swift; sourceTree = ""; }; 0F80AC45FB1DBF50E0E3AA4F26BFA676 /* DTFoundationConstants.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTFoundationConstants.m; path = Core/Source/DTFoundationConstants.m; sourceTree = ""; }; - 0FAFD969C7141125539E80810C0A6A9B /* RDEPUBReaderToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderToolView.swift; sourceTree = ""; }; 104930ADAD326C90EB587485A6BFF755 /* RDEPUBCFIGenerator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIGenerator.swift; sourceTree = ""; }; - 113B414F4DD510248C8462427553EDF1 /* RDEPUBBackgroundCoverageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundCoverageStore.swift; sourceTree = ""; }; - 11C152E0F5FA501D1DE57C6F84974FB2 /* RDEPUBReaderController+ContentDelegates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ContentDelegates.swift"; sourceTree = ""; }; + 10E90103F330F58312FAAE9AA82E84B6 /* RDEPUBReaderController+ExternalLinks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ExternalLinks.swift"; sourceTree = ""; }; 11C3B7C93919D787AAC0C4D25E52805A /* RDEPUBCFIMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMarkerInjector.swift; sourceTree = ""; }; 11D2090101EA891F21834863EE859AE8 /* RDEPUBNoteResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNoteResolver.swift; sourceTree = ""; }; 126E6ACAC7C0427806B58DA8E10BDD78 /* NSMutableString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableString+HTML.m"; path = "Core/Source/NSMutableString+HTML.m"; sourceTree = ""; }; @@ -556,29 +561,33 @@ 13597E7190F2C08C5906D7D128E43E99 /* DTObjectTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTObjectTextAttachment.h; path = Core/Source/DTObjectTextAttachment.h; sourceTree = ""; }; 13F8FC8B51AD434F5D4B0CF5150D7563 /* DTCoreText-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTCoreText-umbrella.h"; sourceTree = ""; }; 14283024FA4A0231B32CA22AA907FEFA /* DTBreakHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBreakHTMLElement.h; path = Core/Source/DTBreakHTMLElement.h; sourceTree = ""; }; - 145A463390EC56FF141B1FFA95C6EB52 /* RDEPUBReaderSearchCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchCoordinator.swift; sourceTree = ""; }; 148B993AB228816D19FCB7CD13874C83 /* DTAnchorHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAnchorHTMLElement.m; path = Core/Source/DTAnchorHTMLElement.m; sourceTree = ""; }; 14E63A0D35D4A07BD0123021EA161C99 /* DTHTMLWriter.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLWriter.h; path = Core/Source/DTHTMLWriter.h; sourceTree = ""; }; 1527510DA54482E3557D6BB3EB651015 /* rangy-serializer.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-serializer.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-serializer.js"; sourceTree = ""; }; 15A5AF469CA067562D1516F98913D4DF /* rangy-core.js */ = {isa = PBXFileReference; includeInIndex = 1; name = "rangy-core.js"; path = "Sources/RDReaderView/EPUBCore/Resources/rangy-core.js"; sourceTree = ""; }; 170D81239AF3CE5CD64BA2E44A505872 /* RDEPUBParser+Resources.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Resources.swift"; sourceTree = ""; }; 173194D38C897D8E38AD8A194E47DB5C /* DTPieProgressIndicator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTPieProgressIndicator.h; path = Core/Source/iOS/DTPieProgressIndicator.h; sourceTree = ""; }; + 174D4D5E30ACC1B5266B20D621E65064 /* RDEPUBImageViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewController.swift; sourceTree = ""; }; + 17A6573887F6DA388F2EA0B96400C892 /* RDEPUBReaderController+TableOfContents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+TableOfContents.swift"; sourceTree = ""; }; 18D23D8D10719754D93032F66EB98536 /* Date+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Date+ZIP.swift"; path = "Sources/ZIPFoundation/Date+ZIP.swift"; sourceTree = ""; }; 18F842408AB76A580B80255453F2FDF6 /* DTAccessibilityElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAccessibilityElement.m; path = Core/Source/DTAccessibilityElement.m; sourceTree = ""; }; 199E2ECC77BDAC03F644C20040F042D4 /* DTLog.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTLog.m; path = Core/Source/DTLog.m; sourceTree = ""; }; 1A88AA04D7B29A217B432C19AC48AB6B /* DTStylesheetHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTStylesheetHTMLElement.h; path = Core/Source/DTStylesheetHTMLElement.h; sourceTree = ""; }; + 1AAF82A90409132033768049C49798C3 /* RDEPUBTextAnnotationOverlay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnnotationOverlay.swift; sourceTree = ""; }; + 1AB6F109E02D97808539FB0F9B894487 /* RDEPUBReaderAnnotationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAnnotationCoordinator.swift; sourceTree = ""; }; 1AD502A1FA6EB1E38200B5283F979504 /* Pods-ReadViewDemo.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReadViewDemo.release.xcconfig"; sourceTree = ""; }; - 1AE3C35BC77F4A80D8725CE0CDE20B5E /* RDEPUBReaderSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettings.swift; sourceTree = ""; }; 1C3DEA097D20AC964CFB673C39B4A8AF /* RDReaderView-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "RDReaderView-dummy.m"; sourceTree = ""; }; + 1CDA4D9D71528F8C1070DBF2AFB21AED /* RDEPUBReaderEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderEnvironment.swift; sourceTree = ""; }; 1EF19AD0EF4889156D46061FB43E0F5D /* DTCoreTextFontDescriptor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFontDescriptor.h; path = Core/Source/DTCoreTextFontDescriptor.h; sourceTree = ""; }; 1F1F7BFB63DE15D627EB8F64829B8AAD /* NSURL+DTComparing.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTComparing.h"; path = "Core/Source/NSURL+DTComparing.h"; sourceTree = ""; }; + 1F6418C1A247C2BC37337DE4C0A9C770 /* RDEPUBReaderSearchBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchBarView.swift; sourceTree = ""; }; 1FA88D00B7B2B2F0BA98BB92DF035906 /* DTDictationPlaceholderView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTDictationPlaceholderView.m; path = Core/Source/DTDictationPlaceholderView.m; sourceTree = ""; }; - 1FAFF98C24F34206448C655698BF56E3 /* RDEPUBChapterWarmupOrchestrator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWarmupOrchestrator.swift; sourceTree = ""; }; 2047430DF5C84E0A8FC8874A2B915FC3 /* Pods-ReadViewDemo-acknowledgements.markdown */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text; path = "Pods-ReadViewDemo-acknowledgements.markdown"; sourceTree = ""; }; 207CC0EEB74CECEB43A870FF80560E0F /* DTLog.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLog.h; path = Core/Source/DTLog.h; sourceTree = ""; }; - 2088F60EF3B4ADB258266A178B5D3ECC /* RDEPUBViewportTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBViewportTypes.swift; sourceTree = ""; }; + 2120F356DBB0D7C46B15B379759AC7AE /* RDEPUBMetadataParseWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseWorker.swift; sourceTree = ""; }; 214F0FC87DE99D3FCE69D98B357F3FFC /* DTCoreTextLayoutFrame+Cursor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTCoreTextLayoutFrame+Cursor.h"; path = "Core/Source/DTCoreTextLayoutFrame+Cursor.h"; sourceTree = ""; }; 21CCCCAAF832BE9C859BEDDC79B4E9E2 /* DTSmartPagingScrollView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTSmartPagingScrollView.h; path = Core/Source/iOS/DTSmartPagingScrollView.h; sourceTree = ""; }; + 21D501067A95E18D0DCAEF44170D36F2 /* UIColor+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUB.swift"; sourceTree = ""; }; 22B69C9433F2FBE5CE8409BD4266DFE8 /* Data+Compression.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+Compression.swift"; path = "Sources/ZIPFoundation/Data+Compression.swift"; sourceTree = ""; }; 23006DBAC610AEB0A4B3EAFEA4FB0567 /* DTTiledLayerWithoutFade.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTiledLayerWithoutFade.m; path = Core/Source/iOS/DTTiledLayerWithoutFade.m; sourceTree = ""; }; 23588B63FC4026A371F5C683744A664C /* DTFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "DTFoundation-umbrella.h"; sourceTree = ""; }; @@ -586,54 +595,60 @@ 2373DCA0FC45287BFC063BEA661B8367 /* Archive+WritingDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+WritingDeprecated.swift"; path = "Sources/ZIPFoundation/Archive+WritingDeprecated.swift"; sourceTree = ""; }; 238893C9CBD95CB9BDF069EB5A303E17 /* RDReaderView */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = RDReaderView; path = RDReaderView.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 24130F5639CFFFA28D8BE6C2BD7A45FE /* RDEPUBTextSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSearchEngine.swift; sourceTree = ""; }; + 25B061393791774B154F5F8759A2BDD9 /* RDEPUBAttachmentTooltipOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipOverlayView.swift; sourceTree = ""; }; + 25D28385D66ED93351515441996056D7 /* RDEPUBTextContentInteractionCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentInteractionCoordinator.swift; sourceTree = ""; }; 25DDD76CA572F0C7AB5A8178CF80169D /* DTCoreTextFontCollection.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFontCollection.h; path = Core/Source/DTCoreTextFontCollection.h; sourceTree = ""; }; + 2622CEF5D9B34D713B60EB2991499EDC /* RDEPUBChapterWarmupOrchestrator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterWarmupOrchestrator.swift; sourceTree = ""; }; 27372A23AA4B051867E7D2C749D1DE81 /* DTImageTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTImageTextAttachment.h; path = Core/Source/DTImageTextAttachment.h; sourceTree = ""; }; 288589D0B52F73505B43C743D9837578 /* Entry+ZIP64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Entry+ZIP64.swift"; path = "Sources/ZIPFoundation/Entry+ZIP64.swift"; sourceTree = ""; }; 29DE76CD63BD47DC86DF55C349B1CF91 /* RDEPUBFontFallbackResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontFallbackResolver.swift; sourceTree = ""; }; 29DEA4D201BB179BB6E228E9F688CD4C /* UIView+DTFoundation.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIView+DTFoundation.h"; path = "Core/Source/iOS/UIView+DTFoundation.h"; sourceTree = ""; }; 2AACA59CA4CBD2AFAACC3D162C2C75B5 /* RDEPUBParser.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBParser.swift; sourceTree = ""; }; + 2B02D527081372B04CC8FECF5940E6DC /* RDEPUBPageLayoutSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageLayoutSnapshot.swift; sourceTree = ""; }; 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.release.xcconfig; sourceTree = ""; }; 2B7FCEEAD833F7C1706659E688B09BEA /* RDEPUBRenderDiagnosticsCollector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderDiagnosticsCollector.swift; sourceTree = ""; }; 2C1A7359A45BB880877A672C57F522FE /* DTCoreGraphicsUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreGraphicsUtils.h; path = Core/Source/DTCoreGraphicsUtils.h; sourceTree = ""; }; - 2D811ABCB31C221FA6F002E32629D6B7 /* RDEPUBTextPageVerticalJustifier.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageVerticalJustifier.swift; sourceTree = ""; }; 2EBD41467F344F6091AD0C1A3981EDC3 /* cssInjector.js */ = {isa = PBXFileReference; includeInIndex = 1; name = cssInjector.js; path = Sources/RDReaderView/EPUBCore/Resources/cssInjector.js; sourceTree = ""; }; 2F242FC1357DD90FA4FD67E1DB90A837 /* NSCharacterSet+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSCharacterSet+HTML.m"; path = "Core/Source/NSCharacterSet+HTML.m"; sourceTree = ""; }; 2F75437CE9F9324D315E417014797C1D /* DTExtendedFileAttributes.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTExtendedFileAttributes.h; path = Core/Source/DTExtendedFileAttributes.h; sourceTree = ""; }; 2FA2158447C66C1AA074403C4AEF1BD9 /* RDEPUBPublication.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPublication.swift; sourceTree = ""; }; + 2FADE8129957738A63AA3387FEC5222B /* RDEPUBReaderSettings.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettings.swift; sourceTree = ""; }; 3046397381A83C2F6BAF344B86AD176E /* NSMutableArray+DTMoving.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableArray+DTMoving.h"; path = "Core/Source/NSMutableArray+DTMoving.h"; sourceTree = ""; }; 306477706BBB1E784F55BCF8EB1AD737 /* Pods-ReadViewDemo.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = "Pods-ReadViewDemo.debug.xcconfig"; sourceTree = ""; }; + 30B0AB500258357278F5D4E6C1AA2848 /* RDEPUBReaderLocationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLocationCoordinator.swift; sourceTree = ""; }; 30EB4CF4AD4114DE53786C318621EB19 /* NSAttributedStringRunDelegates.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = NSAttributedStringRunDelegates.h; path = Core/Source/NSAttributedStringRunDelegates.h; sourceTree = ""; }; 314E39CF7ADE645354AC8873D80957CA /* RDEPUBReadingSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingSession.swift; sourceTree = ""; }; 317357794EF461FA4C6992E798C900DF /* RDEPUBChapterData.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterData.swift; sourceTree = ""; }; 31B49361D4C4F119B135F85B7A8219DB /* RDEPUBParser+ReadingProfile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+ReadingProfile.swift"; sourceTree = ""; }; + 321B4FCED5571F74A0AAD75BF9637505 /* RDEPUBReaderController+PublicAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+PublicAPI.swift"; sourceTree = ""; }; 321FA16FF2FAD7985CCAC14EF5A221D4 /* RDEPUBWebView+JavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+JavaScriptBridge.swift"; sourceTree = ""; }; - 3283355D8EFC5B2B3D2D676DCE1BCEDB /* RDEPUBImageViewerCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewerCoordinator.swift; sourceTree = ""; }; 328AA616EE25AB53BFB60EFE1C7AAFCE /* RDEPUBChapterPageCounter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterPageCounter.swift; sourceTree = ""; }; 33452E6D078F6CC1EF8A17DF42966CAA /* RDReaderPageChildViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPageChildViewController.swift; sourceTree = ""; }; 33643E88B779A3DB1B3A14C7A194045B /* RDEPUBTextBookModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookModels.swift; sourceTree = ""; }; + 33D775F257172C2AB560D7B9B5A918FD /* RDEPUBChapterOffsetMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterOffsetMap.swift; sourceTree = ""; }; 3453CFB9BDBF6F9D0937EDF5FB2BD07B /* NSURL+DTAppLinks.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTAppLinks.m"; path = "Core/Source/iOS/NSURL+DTAppLinks.m"; sourceTree = ""; }; - 347A1849A630130CBFBDD4DDDC44A51A /* RDEPUBChapterSummaryDiskCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterSummaryDiskCache.swift; sourceTree = ""; }; - 353528037271462D3C73D07BBF5D8DED /* RDEPUBPageLayoutSnapshot.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageLayoutSnapshot.swift; sourceTree = ""; }; 35417EC94F2D58CB80C991F875CE15C2 /* DTBlockFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBlockFunctions.h; path = Core/Source/DTBlockFunctions.h; sourceTree = ""; }; 354C1C3A74DB75C8B8608D538212A963 /* DTStylesheetHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTStylesheetHTMLElement.m; path = Core/Source/DTStylesheetHTMLElement.m; sourceTree = ""; }; 3578B97A85BCDC60888FDF87B8F2600C /* NSString+CSS.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+CSS.h"; path = "Core/Source/NSString+CSS.h"; sourceTree = ""; }; 35803D654BE44326A28A0947DD178B63 /* RDEPUBCFIRecoveryEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRecoveryEngine.swift; sourceTree = ""; }; - 35AD33C94AE70E2D00F629BACC8622C9 /* RDEPUBReaderController+TableOfContents.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+TableOfContents.swift"; sourceTree = ""; }; + 35C2BF4CF393A0130124600E79ECC3D6 /* RDEPUBJumpSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJumpSession.swift; sourceTree = ""; }; + 3656D2A32DB42AE8DD66E0079651906D /* RDEPUBReaderLoadCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLoadCoordinator.swift; sourceTree = ""; }; 36606A851BDB5FFF6E9BFFDD7FB72455 /* RDReaderView-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-umbrella.h"; sourceTree = ""; }; + 36B0EC72869740D8DB68B51304CC9B48 /* RDEPUBRuntimePageCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimePageCount.swift; sourceTree = ""; }; 37327141DC73DE2D5742BE6F989094CE /* DTCoreTextLayoutLine.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutLine.h; path = Core/Source/DTCoreTextLayoutLine.h; sourceTree = ""; }; + 378AC6C2092D7E25BFF88FB4C743886C /* RDEPUBDarkImageAdjuster.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDarkImageAdjuster.swift; sourceTree = ""; }; 3985FED7BD8EC49191663BEF73FB2C79 /* NSAttributedString+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+DTCoreText.h"; path = "Core/Source/NSAttributedString+DTCoreText.h"; sourceTree = ""; }; 398DC798680E2CA64D46B9E19B380356 /* UIFont+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIFont+DTCoreText.h"; path = "Core/Source/UIFont+DTCoreText.h"; sourceTree = ""; }; 399AED6BF151EC39BE4450784795A832 /* DTAccessibilityViewProxy.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAccessibilityViewProxy.h; path = Core/Source/DTAccessibilityViewProxy.h; sourceTree = ""; }; 3A6A858B976D032A3C61540AFF19DEE4 /* NSURL+DTUnshorten.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTUnshorten.m"; path = "Core/Source/NSURL+DTUnshorten.m"; sourceTree = ""; }; + 3A6AD2E4A78A3060ED880D0ADFC9C5C7 /* RDEPUBChapterDisplayContentCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDisplayContentCache.swift; sourceTree = ""; }; 3AF63806C4793F384C4CF28201BC756C /* WeReadApi.js */ = {isa = PBXFileReference; includeInIndex = 1; name = WeReadApi.js; path = Sources/RDReaderView/EPUBCore/Resources/WeReadApi.js; sourceTree = ""; }; - 3B25B5299A67D3BEA9E9887BE079BCDF /* RDEPUBReaderServices.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderServices.swift; sourceTree = ""; }; 3B35A0451D9A3CF5477258E38D363189 /* RDEPUBTextRenderer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRenderer.swift; sourceTree = ""; }; - 3CAD42B48B9168BBD3A810E5D3F0F956 /* RDEPUBReaderSearchBarView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchBarView.swift; sourceTree = ""; }; 3DAC9D3802A9F165B2F6B09C2DCF0EB7 /* ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; sourceTree = ""; }; - 3E238CC0941838E4BFCF81D523FFA0BF /* RDEPUBMetadataParseWorker.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseWorker.swift; sourceTree = ""; }; + 3EF0585A8A2B50BF79245DF9365836C8 /* RDEPUBReaderContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderContext.swift; sourceTree = ""; }; 3EFAE8DFDDEA1E6047289C86D66381C0 /* DTAttributedLabel.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedLabel.m; path = Core/Source/DTAttributedLabel.m; sourceTree = ""; }; - 3F3375F32D22D669DD2C8A34D3FB9A8E /* RDEPUBReaderController+AttachmentTooltip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+AttachmentTooltip.swift"; sourceTree = ""; }; - 408BF57916E27949442B18215BE0B51A /* RDEPUBSelectionState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionState.swift; sourceTree = ""; }; + 3FB158582A185027BF7C5254A69DA213 /* RDEPUBReaderDependencies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDependencies.swift; sourceTree = ""; }; + 40E88E1EF1BA62D99833E17E30E87DC5 /* RDEPUBBookPageMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBookPageMap.swift; sourceTree = ""; }; 40FD7C9E2E05FB4A73F4C4C70A3AFAF0 /* DTCSSListStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCSSListStyle.m; path = Core/Source/DTCSSListStyle.m; sourceTree = ""; }; 410C5BB742936BFF1A02BAB0970CAF34 /* RDReaderContentCell.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderContentCell.swift; sourceTree = ""; }; 422DAC763888F8667708F7B66F9C701E /* RDEPUBPaginationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationModels.swift; sourceTree = ""; }; @@ -641,16 +656,12 @@ 44133205D7FD87B481BF89EA607CA7A4 /* ZIPFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ZIPFoundation-Info.plist"; sourceTree = ""; }; 4472755F83C121DE5E1E505D145F6DBE /* CoreText.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreText.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/CoreText.framework; sourceTree = DEVELOPER_DIR; }; 4476B58B93EE7476A4762FE0E26E8178 /* DTCoreTextLayoutFrameAccessibilityElementGenerator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutFrameAccessibilityElementGenerator.m; path = Core/Source/DTCoreTextLayoutFrameAccessibilityElementGenerator.m; sourceTree = ""; }; - 44CC9E1CE3BFCDCF123AF3232DE600ED /* RDEPUBReaderController+PublicAPI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+PublicAPI.swift"; sourceTree = ""; }; 4544C4444DCA90E700611D1281969883 /* DTColorFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTColorFunctions.m; path = Core/Source/DTColorFunctions.m; sourceTree = ""; }; - 457B5F878654F351DEB25FAF4076AE4D /* RDEPUBTextPageBoundaryValidator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageBoundaryValidator.swift; sourceTree = ""; }; 45A67761829BBB3974CE24FE50E459EA /* NSDictionary+DTError.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+DTError.m"; path = "Core/Source/NSDictionary+DTError.m"; sourceTree = ""; }; - 45A880FCAB9201640E8329B683FCACBA /* RDEPUBBookPageMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBookPageMap.swift; sourceTree = ""; }; - 45BDE90FC850C338F5085963B44CE0F3 /* RDEPUBReaderBottomToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderBottomToolView.swift; sourceTree = ""; }; - 462F0F78022064457859139A0D9B8D3E /* RDEPUBRuntimeChapter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimeChapter.swift; sourceTree = ""; }; 4641C3C93CE32054665ACF80457A7A94 /* DTCoreTextLayoutFrame.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutFrame.m; path = Core/Source/DTCoreTextLayoutFrame.m; sourceTree = ""; }; 467CC59CEC3B3BC7ACDCA776FDCBDC1D /* NSURL+DTComparing.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSURL+DTComparing.m"; path = "Core/Source/NSURL+DTComparing.m"; sourceTree = ""; }; 47DC174612C98B2CFB4E7D158169139E /* default.css */ = {isa = PBXFileReference; includeInIndex = 1; name = default.css; path = Core/Source/default.css; sourceTree = ""; }; + 48121E38890812B2122D7CD791CB9F52 /* RDEPUBTextSelectionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSelectionController.swift; sourceTree = ""; }; 482C32ED3E6D23BBCED7BBE64E370A91 /* RDEPUBParser+Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Archive.swift"; sourceTree = ""; }; 48A4A6EDC08C8AC933D0DCD507E9D173 /* ZIPFoundation */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = ZIPFoundation; path = ZIPFoundation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 4917E08E6E59460594AC443EDDAB7E77 /* DTCoreTextFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFunctions.m; path = Core/Source/DTCoreTextFunctions.m; sourceTree = ""; }; @@ -659,11 +670,10 @@ 499E135F1FEB31C26EB0EF793A90086C /* UIImage+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIImage+DTFoundation.m"; path = "Core/Source/iOS/UIImage+DTFoundation.m"; sourceTree = ""; }; 49DF44BF9FBD9CCC9CDE0A998C428D86 /* RDEPUBCFIDOMPathBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIDOMPathBuilder.swift; sourceTree = ""; }; 4AAC2FDC24D8604A39BD25111689D06A /* RDEPUBWebView+Reflowable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+Reflowable.swift"; sourceTree = ""; }; - 4ACC6E3B4FEF517FF8038927FB873994 /* RDEPUBImageViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewController.swift; sourceTree = ""; }; 4C2B218B5EAA5831A036BBF7E1EFC1B9 /* MediaPlayer.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = MediaPlayer.framework; path = Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS18.0.sdk/System/Library/Frameworks/MediaPlayer.framework; sourceTree = DEVELOPER_DIR; }; - 4D1E680FFD8DDC08A39464AD386D2992 /* UIColor+RDEPUBHex.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUBHex.swift"; sourceTree = ""; }; - 4D91E45585D4F6401B403BD10449ADDF /* RDEPUBReaderTopToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTopToolView.swift; sourceTree = ""; }; + 4C9154B6031E8FD71F71E3F89391A519 /* RDEPUBReaderTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTheme.swift; sourceTree = ""; }; 4E1066A8FE63AD2C818E26DDCE62DF58 /* DTHTMLAttributedStringBuilder.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLAttributedStringBuilder.h; path = Core/Source/DTHTMLAttributedStringBuilder.h; sourceTree = ""; }; + 4F525CC259CDC719A02AC344AFC95E1F /* RDEPUBPageCountCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageCountCache.swift; sourceTree = ""; }; 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace-latin.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace-latin.css"; sourceTree = ""; }; 4FF4A2A7F2C7CFB5DD757BE1A6E59C7B /* CTLineUtils.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = CTLineUtils.m; path = Core/Source/CTLineUtils.m; sourceTree = ""; }; 5001C74FB9506AEC71E458047698A4AB /* DTHTMLParserNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParserNode.m; path = Core/Source/DTHTMLParserNode.m; sourceTree = ""; }; @@ -672,38 +682,36 @@ 50C2868064310B16D2B5FD9901C846DC /* DTVideoTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTVideoTextAttachment.h; path = Core/Source/DTVideoTextAttachment.h; sourceTree = ""; }; 519087D9CD0F5E440E6D2C3B1AA1DFA2 /* DTBase64Coding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTBase64Coding.h; path = Core/Source/DTBase64Coding.h; sourceTree = ""; }; 5193541848D2D1BF115A45D8A730611C /* Archive+ReadingDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+ReadingDeprecated.swift"; path = "Sources/ZIPFoundation/Archive+ReadingDeprecated.swift"; sourceTree = ""; }; + 51DA940F74309B236AFA2A214D82D47C /* RDEPUBBackgroundTrace.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundTrace.swift; sourceTree = ""; }; 52053ABC9CD3D4A72CD8A22173428AEB /* NSMutableString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSMutableString+HTML.h"; path = "Core/Source/NSMutableString+HTML.h"; sourceTree = ""; }; - 527A6EE584C515DEE0448928F5BB0AE6 /* RDEPUBReaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDelegate.swift; sourceTree = ""; }; + 5253C9907BB440614610BB054B001181 /* RDURLReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDURLReaderController.swift; sourceTree = ""; }; 528643F4F0CD2FEC7AD5C0ACA9895D9D /* RDEPUBPaginationCacheCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPaginationCacheCoordinator.swift; sourceTree = ""; }; - 52A7FCBB2219561212D36C393B333E8D /* RDEPUBNotePopupViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupViewController.swift; sourceTree = ""; }; 5514CEBB75D8BFFC1D1CA08E8E46BE62 /* RDReaderView-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "RDReaderView-prefix.pch"; sourceTree = ""; }; 55423549E54A01F039B5F379B264C73F /* UIApplication+DTNetworkActivity.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "UIApplication+DTNetworkActivity.h"; path = "Core/Source/iOS/UIApplication+DTNetworkActivity.h"; sourceTree = ""; }; 558FCD3F7E481B782EBFA127486ED15D /* DTHTMLParserTextNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLParserTextNode.h; path = Core/Source/DTHTMLParserTextNode.h; sourceTree = ""; }; 55B9309F0BDDDE2C3EE13C97BF2C0F1E /* Archive+Helpers.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Helpers.swift"; path = "Sources/ZIPFoundation/Archive+Helpers.swift"; sourceTree = ""; }; - 563790B1DA3FCFFF97263535AEDB9591 /* RDEPUBReaderPersistence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPersistence.swift; sourceTree = ""; }; + 55C2EDC5A62B0F36995A69620E5464B3 /* RDEPUBReaderUIState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderUIState.swift; sourceTree = ""; }; 564F072D0966350F4C3986E01EB3EB2C /* RDEPUBRenderRequest.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRenderRequest.swift; sourceTree = ""; }; 56A9260F17C4825708B83598BEC99365 /* RDReaderFlowLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderFlowLayout.swift; sourceTree = ""; }; 56E8939081946D090FD77A04F879754C /* DTExtendedFileAttributes.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTExtendedFileAttributes.m; path = Core/Source/DTExtendedFileAttributes.m; sourceTree = ""; }; 57642B518C047A428FE1266A09E0513F /* DTImageTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTImageTextAttachment.m; path = Core/Source/DTImageTextAttachment.m; sourceTree = ""; }; + 5857420A221729DB0D3EBBC59AA4BFF2 /* RDEPUBReaderSettingsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettingsViewController.swift; sourceTree = ""; }; 587C2E270D5414FF4E3786D14BD36694 /* RDEPUBFragmentMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFragmentMarkerInjector.swift; sourceTree = ""; }; - 592C900095F4CE33172C3233D2720E53 /* RDEPUBSelectionLoupeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionLoupeView.swift; sourceTree = ""; }; + 58C8FD645A1F2CB6BC9C86FE156721F1 /* RDEPUBChapterRuntimeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterRuntimeStore.swift; sourceTree = ""; }; + 59600B93DBD35077CC79C74D07BC03CE /* RDEPUBReaderToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderToolView.swift; sourceTree = ""; }; 5977986EDFE76D5EF96A6D95483B12F7 /* Pods-ReadViewDemo-frameworks.sh */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.script.sh; path = "Pods-ReadViewDemo-frameworks.sh"; sourceTree = ""; }; 599172147A32B6978EB5AAE1BE55FF7A /* DTAnchorHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAnchorHTMLElement.h; path = Core/Source/DTAnchorHTMLElement.h; sourceTree = ""; }; + 5B37A3A1274B29F6D04BFB081D22CB96 /* RDEPUBWebContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebContentView.swift; sourceTree = ""; }; 5B5686B2CD1ADB2443ECF94B15903873 /* RDEPUBResourceURLSchemeHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceURLSchemeHandler.swift; sourceTree = ""; }; - 5B660A95A07E55AE3763E8F908456150 /* RDEPUBReaderLoadCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLoadCoordinator.swift; sourceTree = ""; }; - 5BEA03FA083C9125362B656F760E845F /* RDEPUBReaderTheme.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTheme.swift; sourceTree = ""; }; 5C3D91FFA65414A2787FEB95576E0097 /* DTCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCompatibility.h; path = Core/Source/DTCompatibility.h; sourceTree = ""; }; 5C891B983F0CC956CAE3978A15875819 /* NSDictionary+DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSDictionary+DTCoreText.h"; path = "Core/Source/NSDictionary+DTCoreText.h"; sourceTree = ""; }; - 5CCE94BB911FD46F5041173C2B601F2B /* RDEPUBReaderController+ExternalLinks.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ExternalLinks.swift"; sourceTree = ""; }; 5D146C3F4B7878B5CE8EFF38765580C2 /* DTAccessibilityElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAccessibilityElement.h; path = Core/Source/DTAccessibilityElement.h; sourceTree = ""; }; 5DB480D0B78911DBF96986E64A714907 /* DTListItemHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTListItemHTMLElement.h; path = Core/Source/DTListItemHTMLElement.h; sourceTree = ""; }; 5E000FE659A8C4AE6C55AE7B9CC951AA /* RDEPUBTextRendererSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextRendererSupport.swift; sourceTree = ""; }; - 5E86839B7DDFC59C16A388E00239F50F /* RDEPUBReaderAssemblyCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAssemblyCoordinator.swift; sourceTree = ""; }; 5F3B770A5B6ED1C21FDA2BD1A8B06EE6 /* RDEPUBCSSCompatibilityLayer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCSSCompatibilityLayer.swift; sourceTree = ""; }; 5F81C81E7CF8B0AE4646712FC2ADD8B0 /* RDEPUBTextAnchor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnchor.swift; sourceTree = ""; }; - 60F3D803C6E446785A25173F8A33539E /* RDEPUBReaderController+LocationResolution.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+LocationResolution.swift"; sourceTree = ""; }; 61B18088896D291E0CE7718DFE82FAC1 /* DTListItemHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTListItemHTMLElement.m; path = Core/Source/DTListItemHTMLElement.m; sourceTree = ""; }; - 61EE5C61A8163892E9A19C231828658C /* RDEPUBReaderSettingsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSettingsViewController.swift; sourceTree = ""; }; + 636939AFA1CB3F49FE41D1160D512A54 /* RDEPUBWebDecorationOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebDecorationOverlayView.swift; sourceTree = ""; }; 63A75BF0478FAC7398F5E66A509F639D /* RDEPUBAttachmentNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentNormalizer.swift; sourceTree = ""; }; 63D23A912F5F91D0D3D83DF9E05515D0 /* RDEPUBFontNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFontNormalizer.swift; sourceTree = ""; }; 6430501430329643C8280B3985C48711 /* URL+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "URL+ZIP.swift"; path = "Sources/ZIPFoundation/URL+ZIP.swift"; sourceTree = ""; }; @@ -712,20 +720,20 @@ 662D30C1E74D1D5122921475F4024F73 /* DTActivityTitleView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTActivityTitleView.m; path = Core/Source/iOS/DTActivityTitleView.m; sourceTree = ""; }; 671C2429406FDB36B677F4B6EC85B52F /* DTCoreTextLayoutFrameAccessibilityElementGenerator.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutFrameAccessibilityElementGenerator.h; path = Core/Source/DTCoreTextLayoutFrameAccessibilityElementGenerator.h; sourceTree = ""; }; 677182E8663D93C2C9E5617999F649C7 /* RDEPUBResourceResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBResourceResolver.swift; sourceTree = ""; }; + 67BEEE595D865F7E86B156385CDF6111 /* RDEPUBReaderController+LocationResolution.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+LocationResolution.swift"; sourceTree = ""; }; 67DA49B61A249C2B8241D8FE166608C9 /* UIView+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIView+DTFoundation.m"; path = "Core/Source/iOS/UIView+DTFoundation.m"; sourceTree = ""; }; + 6859E00AB232CC21F2C63A4CCB9EB108 /* RDEPUBTextPageRenderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageRenderView.swift; sourceTree = ""; }; 685FE9B1A888D8D05E9AC049787CBC8D /* RDEPUBAnnotationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAnnotationModels.swift; sourceTree = ""; }; 68D81DF1BB2A14F9C186F75BBA5CF50D /* DTColor+Compatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTColor+Compatibility.h"; path = "Core/Source/DTColor+Compatibility.h"; sourceTree = ""; }; 69076FC9D4201719C319547346DA3E21 /* DTTextHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextHTMLElement.m; path = Core/Source/DTTextHTMLElement.m; sourceTree = ""; }; 696C8561F8104D867B50A79E1147DE02 /* RDEPUBTextBookCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBookCache.swift; sourceTree = ""; }; + 69E5D0AD1240B6B0802F2647F5435EA3 /* RDEPUBPageMapReconciliationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageMapReconciliationCoordinator.swift; sourceTree = ""; }; + 6A42607282986A7CB11AD3361E82530C /* RDEPUBReaderController+DataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+DataSource.swift"; sourceTree = ""; }; 6AC1E707308CDBC9FFC09CECE3117A9A /* DTAccessibilityViewProxy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAccessibilityViewProxy.m; path = Core/Source/DTAccessibilityViewProxy.m; sourceTree = ""; }; 6C3F8DF48C6EB28BFD05F5BB49793DDA /* FileManager+ZIP.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "FileManager+ZIP.swift"; path = "Sources/ZIPFoundation/FileManager+ZIP.swift"; sourceTree = ""; }; - 6C9B40FEFC2CC9CEB30271F8C4A38740 /* RDEPUBWebDecorationOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebDecorationOverlayView.swift; sourceTree = ""; }; - 6D1A3ADEC673B078306A361D2601E743 /* RDEPUBChapterOffsetMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterOffsetMap.swift; sourceTree = ""; }; 6D2316F422A6C97F95F9CF43E6F8E94F /* DTBlockFunctions.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBlockFunctions.m; path = Core/Source/DTBlockFunctions.m; sourceTree = ""; }; - 6DACF1F2702EB6425DF22A4B0CB64202 /* UIColor+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "UIColor+RDEPUB.swift"; sourceTree = ""; }; - 6E1394B4A44C49F86D8E755C1C16910C /* RDEPUBTextContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentView.swift; sourceTree = ""; }; + 6DF0A5A438D3319310C8FF50C82762F2 /* RDEPUBReaderChromeCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChromeCoordinator.swift; sourceTree = ""; }; 6E21B10EE150F00F245D297EAB7F2BA2 /* NSNumber+RomanNumerals.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSNumber+RomanNumerals.m"; path = "Core/Source/NSNumber+RomanNumerals.m"; sourceTree = ""; }; - 7118633F5A91B2900F602E19CFD15D1F /* RDEPUBChapterRuntimeStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterRuntimeStore.swift; sourceTree = ""; }; 71BBE6384315D7F00F5ECFFF67A85AF9 /* DTHTMLParser.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParser.m; path = Core/Source/DTHTMLParser/DTHTMLParser.m; sourceTree = ""; }; 71EE0B4D4D1B3D0A55E903E7E0CA44E7 /* NSAttributedString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+HTML.m"; path = "Core/Source/NSAttributedString+HTML.m"; sourceTree = ""; }; 720396ED306E768BAD28007D5E96B757 /* DTColorFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTColorFunctions.h; path = Core/Source/DTColorFunctions.h; sourceTree = ""; }; @@ -734,28 +742,32 @@ 722AF38F5106ADDE6F98D282F886A769 /* DTCoreTextFontCollection.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFontCollection.m; path = Core/Source/DTCoreTextFontCollection.m; sourceTree = ""; }; 72F99D96321DF0F2BC595BC7B6A66EA2 /* RDEPUBStyleSheetBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetBuilder.swift; sourceTree = ""; }; 730B56BC97DFF2B1E04DD2608055D9E0 /* UIApplication+DTNetworkActivity.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIApplication+DTNetworkActivity.m"; path = "Core/Source/iOS/UIApplication+DTNetworkActivity.m"; sourceTree = ""; }; - 7380BDD29AC5C55223ADDD7C33698102 /* RDEPUBTextPageRenderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageRenderView.swift; sourceTree = ""; }; 741D74BC489AF6715191F2A88E50B016 /* DTCoreText.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DTCoreText.modulemap; sourceTree = ""; }; - 745B50420148262217CC19E5B8E1E61A /* RDEPUBTextSelectionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextSelectionController.swift; sourceTree = ""; }; + 74A0B8ECDC21C0F91EAB0484A86289DA /* RDEPUBTextPageBoundaryValidator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageBoundaryValidator.swift; sourceTree = ""; }; 7503926237A4785CCB864B2BCD1F4C2B /* DTFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTFoundation.release.xcconfig; sourceTree = ""; }; + 751A6591CCEC79FB3B33C8EADF3465B6 /* RDEPUBViewportTypes.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBViewportTypes.swift; sourceTree = ""; }; 753994141ACB981C898B36B761321C23 /* NSCoder+DTCompatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSCoder+DTCompatibility.m"; path = "Core/Source/NSCoder+DTCompatibility.m"; sourceTree = ""; }; + 75C58FBF3697A8233DC5C9527094D6C3 /* RDEPUBTextContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentView.swift; sourceTree = ""; }; + 75DA84652E7A2A0529D8385085690062 /* RDEPUBImageViewerCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBImageViewerCoordinator.swift; sourceTree = ""; }; 75F44A99D2304FE5397B4DCD6BABAF2B /* RDPlainTextBookBuilder.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDPlainTextBookBuilder.swift; sourceTree = ""; }; 765A94769106D14615FFB30EE1BD5E65 /* Archive+BackingConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+BackingConfiguration.swift"; path = "Sources/ZIPFoundation/Archive+BackingConfiguration.swift"; sourceTree = ""; }; 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.release.xcconfig; sourceTree = ""; }; 7667AF77CBF47AFAA7D5F190B16A51FF /* wxread-default.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-default.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-default.css"; sourceTree = ""; }; 76C1831768CE55090EADD902B29B6CD1 /* Entry+Serialization.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Entry+Serialization.swift"; path = "Sources/ZIPFoundation/Entry+Serialization.swift"; sourceTree = ""; }; - 76C37210B5D599FF177A819748A274DF /* RDEPUBPageResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageResolver.swift; sourceTree = ""; }; + 76DC91EBC1C9627AD0F09DFE57D04F52 /* RDEPUBAttachmentTooltipView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipView.swift; sourceTree = ""; }; 771E0D5CBCBC013BF5780FEE5BBA81FF /* DTCoreTextGlyphRun.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextGlyphRun.h; path = Core/Source/DTCoreTextGlyphRun.h; sourceTree = ""; }; + 773DBBEB900B259FCF917AD7299A4F34 /* RDEPUBReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderController.swift; sourceTree = ""; }; 7805DFC2CB71F5B6BBF7891876360EFB /* NSAttributedString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+HTML.h"; path = "Core/Source/NSAttributedString+HTML.h"; sourceTree = ""; }; + 785AE7F19DADEDA041CFCC67D8B25189 /* RDEPUBPageInteractionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageInteractionController.swift; sourceTree = ""; }; 78887827FF15DE20865DF3A00660993B /* NSDictionary+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSDictionary+DTCoreText.m"; path = "Core/Source/NSDictionary+DTCoreText.m"; sourceTree = ""; }; 78B43BA14CD70F5448082DE1EE73B034 /* RDEPUBSearchEngine.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSearchEngine.swift; sourceTree = ""; }; 78EA0DF405F8465A86BFD3DDFD2EC295 /* Pods-ReadViewDemo */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = "Pods-ReadViewDemo"; path = Pods_ReadViewDemo.framework; sourceTree = BUILT_PRODUCTS_DIR; }; 796EF27FF6AA4B62367B6BD9CEBD85A8 /* DTCSSStylesheet.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCSSStylesheet.h; path = Core/Source/DTCSSStylesheet.h; sourceTree = ""; }; - 7975AED4D3A0C7FCE350B73EA6D1DC77 /* RDEPUBReaderController+RenderSupport.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RenderSupport.swift"; sourceTree = ""; }; 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = ZIPFoundation.debug.xcconfig; sourceTree = ""; }; 7A13F9221A300A89F9F8D0A2AB1794BF /* DTCoreText.release.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTCoreText.release.xcconfig; sourceTree = ""; }; 7A4E9E54E556A72BC885CCC08B3791C1 /* DTHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLElement.m; path = Core/Source/DTHTMLElement.m; sourceTree = ""; }; 7B0179A6B7825D9A269A8A50C2BCBDDB /* RDReaderView.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = RDReaderView.modulemap; sourceTree = ""; }; + 7C64A40D0DAA97EF0A1E98A05DF28CE4 /* RDEPUBSelectionOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionOverlayView.swift; sourceTree = ""; }; 7C80941DE172AF972D2247659684D93A /* NSString+DTUtilities.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTUtilities.h"; path = "Core/Source/NSString+DTUtilities.h"; sourceTree = ""; }; 7CA72FA9A4F2F42A75C58325738A44AC /* NSMutableAttributedString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableAttributedString+HTML.m"; path = "Core/Source/NSMutableAttributedString+HTML.m"; sourceTree = ""; }; 7CFFB65C5D340A4B5C627B3EF02CD127 /* NSNumber+RomanNumerals.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSNumber+RomanNumerals.h"; path = "Core/Source/NSNumber+RomanNumerals.h"; sourceTree = ""; }; @@ -763,23 +775,24 @@ 7D8AE4BEBD1998839BA83AD05CA6CAC5 /* DTBreakHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBreakHTMLElement.m; path = Core/Source/DTBreakHTMLElement.m; sourceTree = ""; }; 80F1F9A3C3AD1C55622B17CA5D503766 /* RDEPUBTextIndexTable.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextIndexTable.swift; sourceTree = ""; }; 814315319ED50AF916C3C8A68C0A47A0 /* DTAttributedTextCell.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextCell.m; path = Core/Source/DTAttributedTextCell.m; sourceTree = ""; }; + 81514BCB47BC71C39284064C943C0DC3 /* RDEPUBPageResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageResolver.swift; sourceTree = ""; }; 82B54A69DF5E94D0D1B34E9D31C0D997 /* RDReaderPreloadController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPreloadController.swift; sourceTree = ""; }; 8300EA716892548FEA44EC27801F5987 /* RDEPUBTextPerformanceSampler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPerformanceSampler.swift; sourceTree = ""; }; 83041D1E40ECC246DB5539C712499A09 /* RDReaderView+ToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ToolView.swift"; sourceTree = ""; }; 83410CC9CF2ABE63B90A92F2F988BF65 /* RDReaderView-RDReaderViewAssets */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; name = "RDReaderView-RDReaderViewAssets"; path = RDReaderViewAssets.bundle; sourceTree = BUILT_PRODUCTS_DIR; }; 842B11843F82FBEA1D725543ACAB02CE /* RDEPUBCFIRange.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIRange.swift; sourceTree = ""; }; + 842C60964BEEDCF50FFF84E40B135751 /* RDEPUBChapterDataCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDataCache.swift; sourceTree = ""; }; + 852FB37B13A5612919954D97632ED37F /* RDEPUBReaderPersistence.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPersistence.swift; sourceTree = ""; }; 85E8DA9DE1F796F12171763D20CBAF27 /* DTFoundation.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTFoundation.debug.xcconfig; sourceTree = ""; }; 86526ADF32337683AA173B5FC1E6A94C /* RDEPUBTextLayouter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayouter.swift; sourceTree = ""; }; 8718F2DB8F0DC085CB012D9996596F3F /* NSString+CSS.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+CSS.m"; path = "Core/Source/NSString+CSS.m"; sourceTree = ""; }; - 8829A16514270D407FA56861634910D6 /* RDEPUBReaderRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderRuntime.swift; sourceTree = ""; }; 88464D2E3579F1A5B25DCCA128528938 /* DTCoreTextFontDescriptor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextFontDescriptor.m; path = Core/Source/DTCoreTextFontDescriptor.m; sourceTree = ""; }; - 8857E55841583E848290F85432CA460B /* RDEPUBPresentationRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPresentationRuntime.swift; sourceTree = ""; }; + 88FB583F2D022D1B84B91F285F67FE76 /* RDEPUBPresentationRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPresentationRuntime.swift; sourceTree = ""; }; 89268DC8F1FBDE4F3167647B6A4F9216 /* DTHorizontalRuleHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHorizontalRuleHTMLElement.h; path = Core/Source/DTHorizontalRuleHTMLElement.h; sourceTree = ""; }; + 894D74C9B59F1EE9BE4DFF5D3B60B772 /* RDEPUBSettingsFlipAutomation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSettingsFlipAutomation.swift; sourceTree = ""; }; 8B35D0622F339A5B8A864FAA0C9EAE47 /* Pods-ReadViewDemo-acknowledgements.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReadViewDemo-acknowledgements.plist"; sourceTree = ""; }; - 8B5934123F0DB4372907A51918A83273 /* RDEPUBAttachmentTooltipView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipView.swift; sourceTree = ""; }; 8B8FDAF9E8370366F7FA8524CB0D80B3 /* DTTextAttachmentHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextAttachmentHTMLElement.h; path = Core/Source/DTTextAttachmentHTMLElement.h; sourceTree = ""; }; 8BA617294E6371DD7FAC32B61E0873F2 /* DTPieProgressIndicator.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTPieProgressIndicator.m; path = Core/Source/iOS/DTPieProgressIndicator.m; sourceTree = ""; }; - 8BC1163A98FA7D285438393945C2EC73 /* RDEPUBReaderViewportMonitor.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderViewportMonitor.swift; sourceTree = ""; }; 8C9575F05D72C239E7E6F079BACDF4C7 /* DTVersion.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTVersion.h; path = Core/Source/DTVersion.h; sourceTree = ""; }; 8C99F4EC07FF6B3DD8C8B72E54DEB008 /* RDReaderPagingController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderPagingController.swift; sourceTree = ""; }; 8CF7CEB31BED0554F3EF3D3442A89B47 /* DTCoreText.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreText.h; path = Core/Source/DTCoreText.h; sourceTree = ""; }; @@ -792,16 +805,15 @@ 8F08538F2728E3B8B81113D12DB74E3A /* RDEPUBCFICompatibility.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFICompatibility.swift; sourceTree = ""; }; 8F4881006C6FAE4DFADBE2ACE4E9A744 /* RDEPUBSemanticMarkerInjector.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSemanticMarkerInjector.swift; sourceTree = ""; }; 8F653EFBBEDAAC96A34BC93B4211E792 /* DTCompatibility.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCompatibility.h; path = Core/Source/DTCompatibility.h; sourceTree = ""; }; + 8F661A240C4FCF4610D249E6389CF34E /* RDEPUBReaderController+AttachmentTooltip.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+AttachmentTooltip.swift"; sourceTree = ""; }; + 8F9718E0B39AD8A3470522498E28F30F /* RDEPUBReaderPaginationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPaginationCoordinator.swift; sourceTree = ""; }; 8FAAF640165FC1B4B47C546F80D98B1E /* DTColor+Compatibility.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTColor+Compatibility.m"; path = "Core/Source/DTColor+Compatibility.m"; sourceTree = ""; }; - 91D2B14530EDF4C2D742B24A0D32B858 /* RDEPUBReaderEnvironment.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderEnvironment.swift; sourceTree = ""; }; + 90779E903799E06765C8410408D06C76 /* RDEPUBReaderController+RuntimeBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RuntimeBridge.swift"; sourceTree = ""; }; 92960C67FEC64C10BA567184834F0DCC /* RDEPUBTypesettingPipeline.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTypesettingPipeline.swift; sourceTree = ""; }; - 92CEF2B1CC1AD607F9F46594DADCE788 /* RDEPUBReaderContext.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderContext.swift; sourceTree = ""; }; + 92BDC596AE388602E419B3750DAD4229 /* RDEPUBBackgroundCoverageStore.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundCoverageStore.swift; sourceTree = ""; }; 93A4E820E3592827FF87F820BBAC3179 /* RDReaderView.podspec */ = {isa = PBXFileReference; explicitFileType = text.script.ruby; includeInIndex = 1; indentWidth = 2; lastKnownFileType = text; path = RDReaderView.podspec; sourceTree = ""; tabWidth = 2; xcLanguageSpecificationIdentifier = xcode.lang.ruby; }; 94705DADD1F09F4162F7D733318238F4 /* NSData+DTCrypto.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSData+DTCrypto.h"; path = "Core/Source/NSData+DTCrypto.h"; sourceTree = ""; }; - 949BC485A5DC7EF786656CBF9A479A1D /* RDURLReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDURLReaderController.swift; sourceTree = ""; }; 9542AFE3A82C8AE56576254CE196E71A /* DTCustomColoredAccessory.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCustomColoredAccessory.m; path = Core/Source/iOS/DTCustomColoredAccessory.m; sourceTree = ""; }; - 95C3D8182D7F19D798483F0031DB4B8A /* RDEPUBTextAnnotationOverlay.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextAnnotationOverlay.swift; sourceTree = ""; }; - 964DE5C11E965DC6F881D1B75582D58B /* RDEPUBReaderTableOfContentsItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTableOfContentsItem.swift; sourceTree = ""; }; 976DBE312D138856488A4DEF88606BC9 /* RDEPUBCFI.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFI.swift; sourceTree = ""; }; 978449466D53EA6F5D40FCF0F353DDCA /* NSAttributedString+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+DTCoreText.m"; path = "Core/Source/NSAttributedString+DTCoreText.m"; sourceTree = ""; }; 98CF9C5D504838741E399811F4D5A0B7 /* NSAttributedString+SmallCaps.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSAttributedString+SmallCaps.m"; path = "Core/Source/NSAttributedString+SmallCaps.m"; sourceTree = ""; }; @@ -812,8 +824,9 @@ 9C6CE93FAA68605C6B90FF844A98E440 /* CTLineUtils.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = CTLineUtils.h; path = Core/Source/CTLineUtils.h; 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; }; 9E94387C53C6E054A73F8EE89787003D /* RDEPUBTextLayoutFrame.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextLayoutFrame.swift; sourceTree = ""; }; - A01E0B0F5FAC4DBF5D1DEC0013417AC1 /* RDEPUBPageInteractionController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageInteractionController.swift; sourceTree = ""; }; + 9EA9EC765AA36B44104989E818B13326 /* RDEPUBReaderAssemblyCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAssemblyCoordinator.swift; sourceTree = ""; }; A20F6F0463A998DC3BD53DE9E63B63DE /* DTSmartPagingScrollView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTSmartPagingScrollView.m; path = Core/Source/iOS/DTSmartPagingScrollView.m; sourceTree = ""; }; + A357FC293046D648FE84D98C27AF2821 /* RDEPUBReaderDelegate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDelegate.swift; sourceTree = ""; }; A3BD3ED7913130D32E14D5572CBCC921 /* NSString+DTFormatNumbers.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTFormatNumbers.h"; path = "Core/Source/NSString+DTFormatNumbers.h"; sourceTree = ""; }; A3DE08AC23FE36A6C3F33A04700FDE57 /* DTAnimatedGIF.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAnimatedGIF.m; path = Core/Source/iOS/DTAnimatedGIF/DTAnimatedGIF.m; sourceTree = ""; }; A3F7613E99CAA29881A015D0ED969B86 /* NSURL+DTAppLinks.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTAppLinks.h"; path = "Core/Source/iOS/NSURL+DTAppLinks.h"; sourceTree = ""; }; @@ -821,66 +834,60 @@ A59C77DC849EDF86936A25873E674F72 /* RDEPUBChapterTailNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterTailNormalizer.swift; sourceTree = ""; }; A5D1FFCB042340FB917DAAE076DD1CCF /* DTFoundation.modulemap */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.module; path = DTFoundation.modulemap; sourceTree = ""; }; A61C8F1BDD76EA59082F65269083BD08 /* DTCoreTextConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextConstants.h; path = Core/Source/DTCoreTextConstants.h; sourceTree = ""; }; - A686F0FF211686E1D4F60B994E012587 /* RDEPUBChapterLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLoader.swift; sourceTree = ""; }; - A765D0DF2FFB6442A7BF2726F2F3B2C8 /* RDEPUBTextContentInteractionCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextContentInteractionCoordinator.swift; sourceTree = ""; }; A7E167717A18E0C858C6FD95804249E4 /* NSCharacterSet+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSCharacterSet+HTML.h"; path = "Core/Source/NSCharacterSet+HTML.h"; sourceTree = ""; }; - A7ECD7EBE082C509350CCB121EE308F6 /* RDEPUBTextPageDecorationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageDecorationView.swift; sourceTree = ""; }; A8A086525BF509F4581693115438B82B /* NSAttributedString+DTDebug.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSAttributedString+DTDebug.h"; path = "Core/Source/NSAttributedString+DTDebug.h"; sourceTree = ""; }; + A8CA2D533001FF2048A1A42F91A23085 /* RDEPUBChapterLoader.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLoader.swift; sourceTree = ""; }; A8CC38EFEF171FFEE008C32A6319BE6A /* DTFolderMonitor.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTFolderMonitor.h; path = Core/Source/DTFolderMonitor.h; sourceTree = ""; }; - A8DBBD9EE558EAEC43860A5170AEEB3C /* RDEPUBReaderController+DataSource.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+DataSource.swift"; sourceTree = ""; }; A9B4C7EA8E0601A462DDA753AFA93E66 /* RDReaderView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderView.swift; sourceTree = ""; }; AA0811310099A4BCB3D52683B70DB3D1 /* Pods-ReadViewDemo-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "Pods-ReadViewDemo-dummy.m"; sourceTree = ""; }; + AA7348D6DBED868AB2EC3A252840235A /* RDEPUBReaderBottomToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderBottomToolView.swift; sourceTree = ""; }; + AA788B1C32640B2F2761D3C04446BB67 /* RDEPUBChapterLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLocation.swift; sourceTree = ""; }; + AB4FAD61ECDD132D743C6E8CFF267798 /* RDEPUBReaderTopToolView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTopToolView.swift; sourceTree = ""; }; AC0A4ED7E936923A29A5EEB1D95D6B55 /* DTTextAttachmentHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextAttachmentHTMLElement.m; path = Core/Source/DTTextAttachmentHTMLElement.m; sourceTree = ""; }; ACA6D26B26D2653D6E1C871A482BD6DF /* NSURL+DTUnshorten.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSURL+DTUnshorten.h"; path = "Core/Source/NSURL+DTUnshorten.h"; sourceTree = ""; }; ACD2A4FF41C5A223C2D4B74E0EDA9B2C /* DTCoreText-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DTCoreText-Info.plist"; sourceTree = ""; }; - ADB1213E5EB8A69E4CD2283819D92718 /* RDEPUBSettingsFlipAutomation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSettingsFlipAutomation.swift; sourceTree = ""; }; ADD5B2F66FCCFB58393314E7B9FE4384 /* NSMutableArray+DTMoving.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSMutableArray+DTMoving.m"; path = "Core/Source/NSMutableArray+DTMoving.m"; sourceTree = ""; }; AE6582B1336C77B6C366DAA669570B4A /* RDReaderGestureController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderGestureController.swift; sourceTree = ""; }; + AE9B612343098773F84020F02EF8FB23 /* RDEPUBReaderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderState.swift; sourceTree = ""; }; AF1516035C269F7A41EE064AAB14D562 /* DTActivityTitleView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTActivityTitleView.h; path = Core/Source/iOS/DTActivityTitleView.h; sourceTree = ""; }; AF436E76C893E223A4F0BE86C1276054 /* UIScreen+DTFoundation.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIScreen+DTFoundation.m"; path = "Core/Source/iOS/UIScreen+DTFoundation.m"; sourceTree = ""; }; B0218A7B243387C79E099CA947CF243D /* Archive+Writing.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Writing.swift"; path = "Sources/ZIPFoundation/Archive+Writing.swift"; sourceTree = ""; }; - B02D3DE3AD6CA9AC5B80F44767F647FE /* RDEPUBChapterLocation.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterLocation.swift; sourceTree = ""; }; B0390F2BB06B9CE8FCBCD30D60C154B9 /* RDEPUBCFIMap.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIMap.swift; sourceTree = ""; }; B12CE4962CDC324FB47FB92D6706D149 /* DTLinkButton.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLinkButton.h; path = Core/Source/DTLinkButton.h; sourceTree = ""; }; B23C5F038DAC52B75213C0760C431F2B /* DTHTMLWriter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLWriter.m; path = Core/Source/DTHTMLWriter.m; sourceTree = ""; }; - B35B9168E52A3CBB8E424FD0F5A0361C /* RDEPUBJumpSession.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJumpSession.swift; sourceTree = ""; }; + B359BD655F8361E4030C9E5F4FBAAD97 /* RDEPUBReaderController+ContentDelegates.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+ContentDelegates.swift"; sourceTree = ""; }; B37118B8D16847B0F82E06A5B33898AB /* DTCSSStylesheet.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCSSStylesheet.m; path = Core/Source/DTCSSStylesheet.m; sourceTree = ""; }; B3B0AAC7948C4A103B284B0F3DCC1262 /* RDEPUBBuildDiagnosticsReporter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBuildDiagnosticsReporter.swift; sourceTree = ""; }; B41F7D27C2336F89BB0185ACB0B19EA9 /* ZIPFoundation-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-umbrella.h"; sourceTree = ""; }; - B42B8B70BAED6BCED06FF54636A4FF0C /* RDEPUBReaderChapterListController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChapterListController.swift; sourceTree = ""; }; B43D7603C0D66635268842EC0A2655AC /* NSFileWrapper+DTCopying.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSFileWrapper+DTCopying.h"; path = "Core/Source/NSFileWrapper+DTCopying.h"; sourceTree = ""; }; B4A7F7402FAEE3A277A8716DDA115C95 /* NSString+Paragraphs.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+Paragraphs.m"; path = "Core/Source/NSString+Paragraphs.m"; sourceTree = ""; }; B4D20A2B33F9F4DD8499FB462DE2731F /* DTAttributedTextView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAttributedTextView.h; path = Core/Source/DTAttributedTextView.h; sourceTree = ""; }; B50104DE2E35D820ECA22CDB3E6F96EA /* 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; }; - B68E527967EEF7E7E61E5B5F1F64C791 /* RDEPUBRuntimePageCount.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimePageCount.swift; sourceTree = ""; }; B6CA8CC4525EF64AA5CEE4A722737F1C /* DTCoreText-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DTCoreText-dummy.m"; sourceTree = ""; }; B76B1E836C34CB755AEE1FBF7DC26BDD /* NSString+DTPaths.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTPaths.h"; path = "Core/Source/NSString+DTPaths.h"; sourceTree = ""; }; B7C4233DF4FA80BF4A9E6FA5082D49E5 /* DTCoreTextParagraphStyle.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextParagraphStyle.m; path = Core/Source/DTCoreTextParagraphStyle.m; sourceTree = ""; }; - B7E8901535604C19FD5AD766F825AA54 /* RDEPUBReaderController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderController.swift; sourceTree = ""; }; B83D7A73677A2C3141EDEF56B9CE6584 /* DTVideoTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTVideoTextAttachment.m; path = Core/Source/DTVideoTextAttachment.m; sourceTree = ""; }; + B86020325578905B4D3E1E685C01CDA6 /* RDEPUBNotePopupViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupViewController.swift; sourceTree = ""; }; B8717A7A7BC5A1529A0F80FB3B22675D /* DTFoundation-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "DTFoundation-Info.plist"; sourceTree = ""; }; - B8CF3C95B01CA3EFA19AD38DA2AC51E5 /* RDEPUBReaderPaginationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderPaginationCoordinator.swift; sourceTree = ""; }; - B9E98DF633FFBA1D5C2D451CB2B2E6F1 /* RDEPUBChapterCacheKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterCacheKey.swift; sourceTree = ""; }; + B9D06448CCB730D9D9ACF44F513FCA87 /* RDEPUBReaderServices.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderServices.swift; sourceTree = ""; }; BA8A527A4CCB2AF1C1E26744B301F6B8 /* DTIframeTextAttachment.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTIframeTextAttachment.m; path = Core/Source/DTIframeTextAttachment.m; sourceTree = ""; }; BAE45673EE2875DB23FA7BDD61FDE1EF /* DTCustomColoredAccessory.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCustomColoredAccessory.h; path = Core/Source/iOS/DTCustomColoredAccessory.h; sourceTree = ""; }; BC59BBF6628D93AAC30CBFE0FF0151F2 /* ZIPFoundation-prefix.pch */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "ZIPFoundation-prefix.pch"; sourceTree = ""; }; BD65B936E2A6FEB74718EA86D9AC1899 /* DTCoreTextParagraphStyle.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextParagraphStyle.h; path = Core/Source/DTCoreTextParagraphStyle.h; sourceTree = ""; }; BD8F015377F898E4B0229FF584685390 /* RDEPUBWebView+FixedLayout.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBWebView+FixedLayout.swift"; sourceTree = ""; }; - BD93A4C37E58849DD3FBADFE4E3BB7E4 /* RDEPUBDarkImageAdjuster.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBDarkImageAdjuster.swift; sourceTree = ""; }; - BDF2713051A7FCC4BA20AD1374044971 /* RDEPUBReaderState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderState.swift; sourceTree = ""; }; BEA46E51E3616ECEAF0ACCEA9B8C67EF /* DTFolderMonitor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTFolderMonitor.m; path = Core/Source/DTFolderMonitor.m; sourceTree = ""; }; BF55DCBC3A5B0BEC5B1A4C6187F20D38 /* RDReaderViewProtocols.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderViewProtocols.swift; sourceTree = ""; }; BFF51E56E09E095C92CB5B9F21384027 /* Archive+MemoryFile.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+MemoryFile.swift"; path = "Sources/ZIPFoundation/Archive+MemoryFile.swift"; sourceTree = ""; }; C0DCB00F0B62D7DBE628D2B5FF006E93 /* DTCoreText.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = DTCoreText.debug.xcconfig; sourceTree = ""; }; C229DC7F5A2BB8C2A3C586FF6CF41D47 /* epub-fixed-layout.html */ = {isa = PBXFileReference; includeInIndex = 1; name = "epub-fixed-layout.html"; path = "Sources/RDReaderView/EPUBCore/Resources/epub-fixed-layout.html"; sourceTree = ""; }; + C38063F3F0C8D42DC9970AD664B475B0 /* RDEPUBNotePopupCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupCoordinator.swift; sourceTree = ""; }; C3E162E0261A5B0850158D3403191E62 /* Archive.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = Archive.swift; path = Sources/ZIPFoundation/Archive.swift; sourceTree = ""; }; - C4416B5CBB4AF36581524965A8C8F53F /* RDEPUBReaderAnnotationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderAnnotationCoordinator.swift; sourceTree = ""; }; + C46B8E1584FAC5111CD0C46A159AB951 /* String+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+RDEPUB.swift"; sourceTree = ""; }; C46FCF109DBCB37595D2A3366CF1D765 /* DTCoreTextLayoutFrame.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextLayoutFrame.h; path = Core/Source/DTCoreTextLayoutFrame.h; sourceTree = ""; }; C495C74844982FAA1B846A2A89023D12 /* DTCoreTextMacros.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextMacros.h; path = Core/Source/DTCoreTextMacros.h; sourceTree = ""; }; C5005A9E8F746647585CCAB26853E922 /* NSString+DTFormatNumbers.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTFormatNumbers.m"; path = "Core/Source/NSString+DTFormatNumbers.m"; sourceTree = ""; }; C508E49F6BF9F50B05918C230B033069 /* DTTextBlock.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTTextBlock.m; path = Core/Source/DTTextBlock.m; sourceTree = ""; }; C59CB44187E054E80CA13F60FF8EE303 /* RDEPUBWebViewDebug.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebViewDebug.swift; sourceTree = ""; }; - C5CC04F74B62D6B70820B21C9498D09C /* RDEPUBReaderController+RuntimeBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBReaderController+RuntimeBridge.swift"; sourceTree = ""; }; C69C7A531B5E021499D8FBF1DBE0E3BB /* NSAttributedStringRunDelegates.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = NSAttributedStringRunDelegates.m; path = Core/Source/NSAttributedStringRunDelegates.m; sourceTree = ""; }; C7E09A6C247D465CA0EF71B939B2A040 /* NSArray+DTError.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSArray+DTError.h"; path = "Core/Source/NSArray+DTError.h"; sourceTree = ""; }; C8BE089AF845973208A11AA41A9B6AAB /* RDEPUBTextPositionConverter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPositionConverter.swift; sourceTree = ""; }; @@ -895,52 +902,50 @@ CDCA21771B2D145D7DCFEEDE00FEDADC /* RDEPUBCFIPath.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIPath.swift; sourceTree = ""; }; CE761A55BD57C0BFD6336CD073F85C31 /* DTLinkButton.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTLinkButton.m; path = Core/Source/DTLinkButton.m; sourceTree = ""; }; CEBA01360577AAD3FD089B6B17C24260 /* UIFont+DTCoreText.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "UIFont+DTCoreText.m"; path = "Core/Source/UIFont+DTCoreText.m"; sourceTree = ""; }; - CEC94872B74DE33DE8E675EEBC60812A /* RDEPUBNotePopupCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBNotePopupCoordinator.swift; sourceTree = ""; }; CEEC8715398E89B42F9B04E290E8E4FE /* NSString+DTURLEncoding.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+DTURLEncoding.h"; path = "Core/Source/NSString+DTURLEncoding.h"; sourceTree = ""; }; CF1CED3ED65443999913BC0D96ACA151 /* DTImage+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTImage+HTML.m"; path = "Core/Source/DTImage+HTML.m"; sourceTree = ""; }; - CFE59748EBA8ED3671180B5ACB903377 /* RDEPUBReaderHighlightsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderHighlightsViewController.swift; sourceTree = ""; }; + CFE57F56B1368E2617F06DE5FF893AA7 /* RDEPUBReaderChapterListController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderChapterListController.swift; sourceTree = ""; }; D0856C3894240A673B5AB7C2704E9144 /* DTDictationPlaceholderTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTDictationPlaceholderTextAttachment.h; path = Core/Source/DTDictationPlaceholderTextAttachment.h; sourceTree = ""; }; D18519BCA8FAA9B01A704A0F0B9FFC78 /* Archive+ZIP64.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+ZIP64.swift"; path = "Sources/ZIPFoundation/Archive+ZIP64.swift"; sourceTree = ""; }; + D1BEE21B44C49B23A7AAD27A4ACABF44 /* RDEPUBSelectionLoupeView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionLoupeView.swift; sourceTree = ""; }; D1E89A31867FF1FB44B4B999988F1B82 /* DTFoundation */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DTFoundation; path = DTFoundation.framework; sourceTree = BUILT_PRODUCTS_DIR; }; D1EAAFA56DA59E80D53DA0DC7C6532D2 /* RDEPUBPreferences.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPreferences.swift; sourceTree = ""; }; D24E48ADEAADE831B2F5FAFBF67CD53D /* RDReaderView+CollectionView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+CollectionView.swift"; sourceTree = ""; }; + D2648A6B239413226E9A72CCC64D4C79 /* RDEPUBMemoryProbe.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMemoryProbe.swift; sourceTree = ""; }; D28A3E79D83EA4B807E2D3A5EE086B8B /* DTHTMLParserNode.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLParserNode.h; path = Core/Source/DTHTMLParserNode.h; sourceTree = ""; }; D30DBDF1EDB20CF83690AC6619AA0C48 /* NSString+DTPaths.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTPaths.m"; path = "Core/Source/NSString+DTPaths.m"; sourceTree = ""; }; D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.xcconfig; path = RDReaderView.debug.xcconfig; sourceTree = ""; }; D4C731AA2088D7E873D8E3D21B95D215 /* DTIframeTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTIframeTextAttachment.h; path = Core/Source/DTIframeTextAttachment.h; sourceTree = ""; }; - D5BE2FBFC1E7270EABABA9C6F0C686CA /* RDEPUBBackgroundTrace.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundTrace.swift; sourceTree = ""; }; D5DD4142DF33E1BE0B5A057101E851C5 /* DTLazyImageView.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTLazyImageView.h; path = Core/Source/DTLazyImageView.h; sourceTree = ""; }; D6DAFB416DE591A656C8614E117EEBEF /* ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; sourceTree = ""; }; D75F5147BF67C9935CC45C16F0118C14 /* RDReaderTapRegionHandler.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDReaderTapRegionHandler.swift; sourceTree = ""; }; D80A72D8B7941D30246858D840EE1EF5 /* DTCoreTextLayouter.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayouter.m; path = Core/Source/DTCoreTextLayouter.m; sourceTree = ""; }; + D8590506F0EECF12909B4BBA8CCCF3D6 /* RDEPUBRuntimeChapter.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBRuntimeChapter.swift; sourceTree = ""; }; D9A812C3E577A3ADC36BAE3FF7AA4D9C /* NSFileWrapper+DTCopying.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSFileWrapper+DTCopying.m"; path = "Core/Source/NSFileWrapper+DTCopying.m"; sourceTree = ""; }; DA068568A9B92FE52049E190968609A8 /* RDEPUBSafeArea.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSafeArea.swift; sourceTree = ""; }; DA2ED17D0DDF5F1C5606BFFD9A512DE4 /* DTCoreTextFunctions.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTCoreTextFunctions.h; path = Core/Source/DTCoreTextFunctions.h; sourceTree = ""; }; - DB992485D17345E01FF784879C39CC29 /* RDEPUBMetadataParseCancellationController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMetadataParseCancellationController.swift; sourceTree = ""; }; + DAAA5CC57B64078C930CBC9221BAAB30 /* RDEPUBReaderHighlightsViewController.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderHighlightsViewController.swift; sourceTree = ""; }; + DC30694BAEEC8DB2869AF8D85E0C5173 /* RDEPUBReaderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderConfiguration.swift; sourceTree = ""; }; DC7D3AB85C954DA41E1500936C166C0E /* NSString+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSString+HTML.h"; path = "Core/Source/NSString+HTML.h"; sourceTree = ""; }; DD0A5FF70CDBE87597264762EC20EF43 /* NSScanner+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "NSScanner+HTML.h"; path = "Core/Source/NSScanner+HTML.h"; sourceTree = ""; }; DD7A2DE5BDF72ABC066484CE554BDEF0 /* DTHorizontalRuleHTMLElement.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHorizontalRuleHTMLElement.m; path = Core/Source/DTHorizontalRuleHTMLElement.m; sourceTree = ""; }; DE4821B98DDE6C71411EC139EC6D2762 /* 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; }; DE83356F8FBC1801D29CA93C1A190D81 /* Archive+Progress.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Progress.swift"; path = "Sources/ZIPFoundation/Archive+Progress.swift"; sourceTree = ""; }; - DE883C47DFCDA257928D7BCC153B127E /* RDEPUBMemoryProbe.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBMemoryProbe.swift; sourceTree = ""; }; - DF1367D7047430E833E1596CCB9D7592 /* RDEPUBReaderLocationCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderLocationCoordinator.swift; sourceTree = ""; }; - DFA733CE261D37C49F859F8E72332108 /* RDEPUBBackgroundPriorityPolicy.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBBackgroundPriorityPolicy.swift; sourceTree = ""; }; DFC3591CDAEE16F7444AC3B176EFDAFD /* RDEPUBCFIResolver.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIResolver.swift; sourceTree = ""; }; E0192469A486DA7CECFECEA37518B6B9 /* DTHTMLAttributedStringBuilder.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLAttributedStringBuilder.m; path = Core/Source/DTHTMLAttributedStringBuilder.m; sourceTree = ""; }; + E07FDF85BE977EC47B3B8194DA98648E /* RDEPUBChapterCacheKey.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterCacheKey.swift; sourceTree = ""; }; E15D7179C6CF82530CF5E7264BBA1679 /* wxread-replace.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-replace.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-replace.css"; sourceTree = ""; }; E2159ABBE19F1408CF16A6EF0271404D /* RDEPUBFixedLayoutTemplate.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBFixedLayoutTemplate.swift; sourceTree = ""; }; - E3B016E458C08679B7164130EE2F038A /* RDEPUBAttachmentTooltipOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBAttachmentTooltipOverlayView.swift; sourceTree = ""; }; E3B908A78A947A1A9D66C368CB616DE4 /* RDEPUBHTMLNormalizer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBHTMLNormalizer.swift; sourceTree = ""; }; E3CAAC46883B74B071843E5D38B5BF85 /* DTImage+HTML.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = "DTImage+HTML.h"; path = "Core/Source/DTImage+HTML.h"; sourceTree = ""; }; E4C5EB3F8F005C65005C101A9DBE488A /* DTWeakSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTWeakSupport.h; path = Core/Source/DTWeakSupport.h; sourceTree = ""; }; E5377786E80195587BF3E8A7589E5925 /* DTHTMLParserTextNode.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTHTMLParserTextNode.m; path = Core/Source/DTHTMLParserTextNode.m; sourceTree = ""; }; - E58FA87A2BA86B4AF4AC1D9ED80ADB9D /* RDEPUBChapterDataCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBChapterDataCache.swift; sourceTree = ""; }; E5D4D6E12779C54F17AE98A1E6C9B699 /* DTBase64Coding.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTBase64Coding.m; path = Core/Source/DTBase64Coding.m; sourceTree = ""; }; + E5ECDA952875E7B452D3D15796C20046 /* RDEPUBReaderTableOfContentsItem.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderTableOfContentsItem.swift; sourceTree = ""; }; E67A535D80CEA637777BC317BCFE28C6 /* RDEPUBReadingLocationModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReadingLocationModels.swift; sourceTree = ""; }; E687628EF2FE92D093E3005D21B578E5 /* DTWeakSupport.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTWeakSupport.h; path = Core/Source/DTWeakSupport.h; sourceTree = ""; }; E6B46EF6F055A721AF370D705D026E9E /* Data+CompressionDeprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Data+CompressionDeprecated.swift"; path = "Sources/ZIPFoundation/Data+CompressionDeprecated.swift"; sourceTree = ""; }; E6CA207039A89EF3323F6FFEA38A1C3F /* RDEPUBCFIUtilities.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFIUtilities.swift; sourceTree = ""; }; - E6DFA1F6B3E87EFC26C391A4189DCB53 /* RDEPUBWebContentView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBWebContentView.swift; sourceTree = ""; }; E74132875CC4A311B230B68C085D8CE6 /* ResourceBundle-Resources-DTCoreText-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "ResourceBundle-Resources-DTCoreText-Info.plist"; sourceTree = ""; }; E853AAB3B09E0662567752431CEF1D33 /* DTTextAttachment.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextAttachment.h; path = Core/Source/DTTextAttachment.h; sourceTree = ""; }; E865600EE9117A9153716299FFA7912D /* Archive+Reading.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Reading.swift"; path = "Sources/ZIPFoundation/Archive+Reading.swift"; sourceTree = ""; }; @@ -952,14 +957,14 @@ EB7C7A670C851744ACBCA45DA70795C8 /* wxread-dark.css */ = {isa = PBXFileReference; includeInIndex = 1; name = "wxread-dark.css"; path = "Sources/RDReaderView/EPUBCore/Resources/wxread-dark.css"; sourceTree = ""; }; EB850927957E35DB8CE0F109188C99A9 /* DTCoreTextLayoutLine.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextLayoutLine.m; path = Core/Source/DTCoreTextLayoutLine.m; sourceTree = ""; }; EBA0272559B0F7FAD8AC670AC7431188 /* Pods-ReadViewDemo-umbrella.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; path = "Pods-ReadViewDemo-umbrella.h"; sourceTree = ""; }; - EC2E45BB6FF85A1D1E2C853B5AB68048 /* RDEPUBReaderDependencies.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderDependencies.swift; sourceTree = ""; }; ED049C791713944233EE10C7A111C691 /* DTCoreTextGlyphRun.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTCoreTextGlyphRun.m; path = Core/Source/DTCoreTextGlyphRun.m; sourceTree = ""; }; + ED4AFBE65217F4B7692C91828CC9BF53 /* RDEPUBReaderSearchCoordinator.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderSearchCoordinator.swift; sourceTree = ""; }; ED9A1EBDA0FD72671C7F6FE15F37B906 /* DTTextHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTTextHTMLElement.h; path = Core/Source/DTTextHTMLElement.h; sourceTree = ""; }; EDA6D5D7D0A04878EE78FAAE94F65068 /* DTCoreText */ = {isa = PBXFileReference; explicitFileType = wrapper.framework; includeInIndex = 0; name = DTCoreText; path = DTCoreText.framework; sourceTree = BUILT_PRODUCTS_DIR; }; EDFEB59EC6040AB3CF58E4E1045A8913 /* RDEPUBModels.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBModels.swift; sourceTree = ""; }; - EED5E2706CF825A44883E6FC04A74AEA /* RDEPUBReaderUIState.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderUIState.swift; sourceTree = ""; }; EF625CF6A790938F5CE0F0C7DC36E340 /* DTCoreTextLayoutFrame+Cursor.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "DTCoreTextLayoutFrame+Cursor.m"; path = "Core/Source/DTCoreTextLayoutFrame+Cursor.m"; sourceTree = ""; }; F0796C7E8BEEA96989FCE6698868366D /* RDEPUBStyleSheetComposer.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBStyleSheetComposer.swift; sourceTree = ""; }; + F32976CA02F8617CB2E2A38D9261257F /* RDEPUBTextPageDecorationView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextPageDecorationView.swift; sourceTree = ""; }; F3C9CA544EBF55130625F6C3AD2ABFB4 /* Archive+Deprecated.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; name = "Archive+Deprecated.swift"; path = "Sources/ZIPFoundation/Archive+Deprecated.swift"; sourceTree = ""; }; F3E93C4AC73A09DE1EAE805B0ADE3306 /* NSString+DTUtilities.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+DTUtilities.m"; path = "Core/Source/NSString+DTUtilities.m"; sourceTree = ""; }; F46010C3A0C82AE5ABEC814D7EC6351B /* DTAttributedTextView.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = DTAttributedTextView.m; path = Core/Source/DTAttributedTextView.m; sourceTree = ""; }; @@ -970,28 +975,25 @@ F63EBF2BF3000B3391F6E693581EA129 /* NSData+DTCrypto.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSData+DTCrypto.m"; path = "Core/Source/NSData+DTCrypto.m"; sourceTree = ""; }; F69C9651823EAB579B078EC3B7435D16 /* RDEPUBJavaScriptBridge.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBJavaScriptBridge.swift; sourceTree = ""; }; F7C508BE899A1397560A767CAEADB7B9 /* DTHTMLElement.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTHTMLElement.h; path = Core/Source/DTHTMLElement.h; sourceTree = ""; }; - F861EBEED5EEBC67F1F7D8A479069EEB /* RDEPUBPageCountCache.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBPageCountCache.swift; sourceTree = ""; }; F8BB0B072E5F24B51A6D348D8F9745CC /* RDReaderView+ContentAccess.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDReaderView+ContentAccess.swift"; sourceTree = ""; }; F94780553A2ED7BE5E972D634F7F52DE /* RDEPUBParser+Package.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "RDEPUBParser+Package.swift"; sourceTree = ""; }; - F9990D385BA523E06021532FB947967B /* RDEPUBSelectionOverlayView.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBSelectionOverlayView.swift; sourceTree = ""; }; F9D9BEF72311AF9E3239F9B92A9D2842 /* DTAnimatedGIF.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTAnimatedGIF.h; path = Core/Source/iOS/DTAnimatedGIF/DTAnimatedGIF.h; sourceTree = ""; }; FA107BE47514D01B94B7A2670A9F83E5 /* NSString+HTML.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; name = "NSString+HTML.m"; path = "Core/Source/NSString+HTML.m"; sourceTree = ""; }; - FB56EEA8FBF8DBE56135C22D77769CC8 /* String+RDEPUB.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = "String+RDEPUB.swift"; sourceTree = ""; }; FE1B490DE56DE55724779E3E8BF6D14A /* RDEPUBCFITextAssertion.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBCFITextAssertion.swift; sourceTree = ""; }; FEA9F91758013B23B0EEA71DA22E7475 /* Pods-ReadViewDemo-Info.plist */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = text.plist.xml; path = "Pods-ReadViewDemo-Info.plist"; sourceTree = ""; }; FEB14A8F8170777DB7CCC3F27C8EA57A /* 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; }; FECC02C082DBCB6126A7ECBA72C258B3 /* RDEPUBTextBuildPipelineInterfaces.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBTextBuildPipelineInterfaces.swift; sourceTree = ""; }; FF1C41D226C0957F715EFF3F23893386 /* DTFoundation-dummy.m */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.objc; path = "DTFoundation-dummy.m"; sourceTree = ""; }; - FF49A91751A72F97903729543181A6B9 /* RDEPUBReaderConfiguration.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderConfiguration.swift; sourceTree = ""; }; FF63F5E8902D6F3F5E845A924EBBC6D3 /* DTFoundationConstants.h */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.c.h; name = DTFoundationConstants.h; path = Core/Source/DTFoundationConstants.h; sourceTree = ""; }; + FFF9AAECD5FDC285A509FEED0B29951E /* RDEPUBReaderRuntime.swift */ = {isa = PBXFileReference; includeInIndex = 1; lastKnownFileType = sourcecode.swift; path = RDEPUBReaderRuntime.swift; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXFrameworksBuildPhase section */ - 0BC732510CDEB52A7CB28936E746A726 /* Frameworks */ = { + 02FD61DAA6380EBDC9D98B4644F4791F /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - D97F718E6DE212120CAEB1EB0545D138 /* Foundation.framework in Frameworks */, + 1122A47ACC8E270202080A596BF6C153 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1003,17 +1005,20 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 68BAD03119A3C08F11F48EC53AE50E2A /* Frameworks */ = { + 2A1FC717178B248B6BB29FD676DA5C06 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 69DDADDC67DC51005EC1277552F4DE77 /* Frameworks */ = { + 675C36B63C7099735ABF05C8415239F4 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( + 8D86B1DD0F6E09A3FBC9E5D03DCFF90C /* Foundation.framework in Frameworks */, + AB57C91A5A85BDC769B0B16F93902861 /* ImageIO.framework in Frameworks */, + 5874BB57522B4E62B6A8E13CE0D4F6A5 /* QuartzCore.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1030,28 +1035,25 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 9CCBD56F874FA596A1696EB08225947F /* Frameworks */ = { + D6628DA002F520A4D4D4AA1E070A16D6 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - C4547124925694C151155C5C459D5EA1 /* Frameworks */ = { + E59106FD1BF297D3A64453E60776A85B /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 00CFA968BBAE011A9F4777EB8A2C4214 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; - FD6D97590348CA8F8FC55FC0BD392B6B /* Frameworks */ = { + F0FD7205A630E9BC2296E4014DAD1A46 /* Frameworks */ = { isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = ( - 02F25218F72D3AD6CAFEC4BB2C0AF6DB /* Foundation.framework in Frameworks */, - 454D8A5137809902C531CB3C60FDACE5 /* ImageIO.framework in Frameworks */, - 2EA87D5E151B183B64161912F24F27B3 /* QuartzCore.framework in Frameworks */, + B002E59779E939442511C792C82E5DE8 /* Foundation.framework in Frameworks */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -1212,28 +1214,6 @@ path = "Target Support Files/Pods-ReadViewDemo"; sourceTree = ""; }; - 112D42A0887F21641053036D609D36A7 /* ChapterRuntime */ = { - isa = PBXGroup; - children = ( - D5BE2FBFC1E7270EABABA9C6F0C686CA /* RDEPUBBackgroundTrace.swift */, - 45A880FCAB9201640E8329B683FCACBA /* RDEPUBBookPageMap.swift */, - B9E98DF633FFBA1D5C2D451CB2B2E6F1 /* RDEPUBChapterCacheKey.swift */, - E58FA87A2BA86B4AF4AC1D9ED80ADB9D /* RDEPUBChapterDataCache.swift */, - A686F0FF211686E1D4F60B994E012587 /* RDEPUBChapterLoader.swift */, - B02D3DE3AD6CA9AC5B80F44767F647FE /* RDEPUBChapterLocation.swift */, - 6D1A3ADEC673B078306A361D2601E743 /* RDEPUBChapterOffsetMap.swift */, - 7118633F5A91B2900F602E19CFD15D1F /* RDEPUBChapterRuntimeStore.swift */, - 347A1849A630130CBFBDD4DDDC44A51A /* RDEPUBChapterSummaryDiskCache.swift */, - 1FAFF98C24F34206448C655698BF56E3 /* RDEPUBChapterWarmupOrchestrator.swift */, - F861EBEED5EEBC67F1F7D8A479069EEB /* RDEPUBPageCountCache.swift */, - 76C37210B5D599FF177A819748A274DF /* RDEPUBPageResolver.swift */, - 462F0F78022064457859139A0D9B8D3E /* RDEPUBRuntimeChapter.swift */, - B68E527967EEF7E7E61E5B5F1F64C791 /* RDEPUBRuntimePageCount.swift */, - ); - name = ChapterRuntime; - path = ChapterRuntime; - sourceTree = ""; - }; 1A823333EC1496E37E1F99813FE335DD /* DTAnimatedGIF */ = { isa = PBXGroup; children = ( @@ -1325,6 +1305,18 @@ name = Pods; sourceTree = ""; }; + 4858F5F9C1EDB780E6E01A377CD98EA0 /* Settings */ = { + isa = PBXGroup; + children = ( + DC30694BAEEC8DB2869AF8D85E0C5173 /* RDEPUBReaderConfiguration.swift */, + 2FADE8129957738A63AA3387FEC5222B /* RDEPUBReaderSettings.swift */, + 5857420A221729DB0D3EBBC59AA4BFF2 /* RDEPUBReaderSettingsViewController.swift */, + 4C9154B6031E8FD71F71E3F89391A519 /* RDEPUBReaderTheme.swift */, + ); + name = Settings; + path = Settings; + sourceTree = ""; + }; 4B9763CFE13CC8B0D8AA60EE28156E6D /* Support Files */ = { isa = PBXGroup; children = ( @@ -1341,16 +1333,6 @@ path = "../Target Support Files/ZIPFoundation"; sourceTree = ""; }; - 4C6BC7B4283EB95C91914329899B3F0B /* Notes */ = { - isa = PBXGroup; - children = ( - CEC94872B74DE33DE8E675EEBC60812A /* RDEPUBNotePopupCoordinator.swift */, - 52A7FCBB2219561212D36C393B333E8D /* RDEPUBNotePopupViewController.swift */, - ); - name = Notes; - path = Notes; - sourceTree = ""; - }; 4DABD1D106D01055A2AB87F3DA58A3CC /* iOS */ = { isa = PBXGroup; children = ( @@ -1384,6 +1366,16 @@ name = DTHTMLParser; sourceTree = ""; }; + 5A0DF31FEBA61B1697993F27E68CD307 /* Notes */ = { + isa = PBXGroup; + children = ( + C38063F3F0C8D42DC9970AD664B475B0 /* RDEPUBNotePopupCoordinator.swift */, + B86020325578905B4D3E1E685C01CDA6 /* RDEPUBNotePopupViewController.swift */, + ); + name = Notes; + path = Notes; + sourceTree = ""; + }; 828B7FE388769409E56A0166AC98DE46 /* EPUBCore */ = { isa = PBXGroup; children = ( @@ -1425,39 +1417,6 @@ path = Sources/RDReaderView/EPUBCore; sourceTree = ""; }; - 83FFDC8682B47C8CA37A1C147F2B1FB9 /* ReaderController */ = { - isa = PBXGroup; - children = ( - 113B414F4DD510248C8462427553EDF1 /* RDEPUBBackgroundCoverageStore.swift */, - DFA733CE261D37C49F859F8E72332108 /* RDEPUBBackgroundPriorityPolicy.swift */, - B35B9168E52A3CBB8E424FD0F5A0361C /* RDEPUBJumpSession.swift */, - DE883C47DFCDA257928D7BCC153B127E /* RDEPUBMemoryProbe.swift */, - DB992485D17345E01FF784879C39CC29 /* RDEPUBMetadataParseCancellationController.swift */, - 3E238CC0941838E4BFCF81D523FFA0BF /* RDEPUBMetadataParseWorker.swift */, - 004EF3C2CC7FA5E3556C149C6514309E /* RDEPUBPageMapReconciliationCoordinator.swift */, - 8857E55841583E848290F85432CA460B /* RDEPUBPresentationRuntime.swift */, - C4416B5CBB4AF36581524965A8C8F53F /* RDEPUBReaderAnnotationCoordinator.swift */, - 5E86839B7DDFC59C16A388E00239F50F /* RDEPUBReaderAssemblyCoordinator.swift */, - 0763B05C11F090D063D1BF3D9E6C31B7 /* RDEPUBReaderChromeCoordinator.swift */, - 92CEF2B1CC1AD607F9F46594DADCE788 /* RDEPUBReaderContext.swift */, - EC2E45BB6FF85A1D1E2C853B5AB68048 /* RDEPUBReaderDependencies.swift */, - 91D2B14530EDF4C2D742B24A0D32B858 /* RDEPUBReaderEnvironment.swift */, - 5B660A95A07E55AE3763E8F908456150 /* RDEPUBReaderLoadCoordinator.swift */, - DF1367D7047430E833E1596CCB9D7592 /* RDEPUBReaderLocationCoordinator.swift */, - B8CF3C95B01CA3EFA19AD38DA2AC51E5 /* RDEPUBReaderPaginationCoordinator.swift */, - 8829A16514270D407FA56861634910D6 /* RDEPUBReaderRuntime.swift */, - 145A463390EC56FF141B1FFA95C6EB52 /* RDEPUBReaderSearchCoordinator.swift */, - 3B25B5299A67D3BEA9E9887BE079BCDF /* RDEPUBReaderServices.swift */, - BDF2713051A7FCC4BA20AD1374044971 /* RDEPUBReaderState.swift */, - EED5E2706CF825A44883E6FC04A74AEA /* RDEPUBReaderUIState.swift */, - 8BC1163A98FA7D285438393945C2EC73 /* RDEPUBReaderViewportMonitor.swift */, - 408BF57916E27949442B18215BE0B51A /* RDEPUBSelectionState.swift */, - 112D42A0887F21641053036D609D36A7 /* ChapterRuntime */, - ); - name = ReaderController; - path = ReaderController; - sourceTree = ""; - }; 8AE80DCE6937729AEA82EC094AC470AE /* Resources */ = { isa = PBXGroup; children = ( @@ -1466,18 +1425,6 @@ name = Resources; sourceTree = ""; }; - 8E0D9F272A7D36DDF5AFB217A51F8141 /* Settings */ = { - isa = PBXGroup; - children = ( - FF49A91751A72F97903729543181A6B9 /* RDEPUBReaderConfiguration.swift */, - 1AE3C35BC77F4A80D8725CE0CDE20B5E /* RDEPUBReaderSettings.swift */, - 61EE5C61A8163892E9A19C231828658C /* RDEPUBReaderSettingsViewController.swift */, - 5BEA03FA083C9125362B656F760E845F /* RDEPUBReaderTheme.swift */, - ); - name = Settings; - path = Settings; - sourceTree = ""; - }; 994C39A644C0722C7A9E97AB46DB8965 /* Targets Support Files */ = { isa = PBXGroup; children = ( @@ -1548,7 +1495,7 @@ 4F5A145710C3E212B771C4E38BED9926 /* wxread-replace-latin.css */, 828B7FE388769409E56A0166AC98DE46 /* EPUBCore */, 1D9804819EBDA4A6E80B0DC0E8B5CEF0 /* EPUBTextRendering */, - B660014A8CD5F492571C723CB3C7A3CA /* EPUBUI */, + BD102190D5C3EBD65EF2520B52413541 /* EPUBUI */, F98C9DB9E125F328B2B30E1CE7F0C09A /* Pod */, 20DA68B2AE07089744D3DF8E725D162D /* ReaderView */, A873C6C06E8019679E6189DCC59175B4 /* Support Files */, @@ -1637,49 +1584,6 @@ path = ZIPFoundation; sourceTree = ""; }; - B660014A8CD5F492571C723CB3C7A3CA /* EPUBUI */ = { - isa = PBXGroup; - children = ( - E3B016E458C08679B7164130EE2F038A /* RDEPUBAttachmentTooltipOverlayView.swift */, - 8B5934123F0DB4372907A51918A83273 /* RDEPUBAttachmentTooltipView.swift */, - 4ACC6E3B4FEF517FF8038927FB873994 /* RDEPUBImageViewController.swift */, - 3283355D8EFC5B2B3D2D676DCE1BCEDB /* RDEPUBImageViewerCoordinator.swift */, - 45BDE90FC850C338F5085963B44CE0F3 /* RDEPUBReaderBottomToolView.swift */, - B42B8B70BAED6BCED06FF54636A4FF0C /* RDEPUBReaderChapterListController.swift */, - B7E8901535604C19FD5AD766F825AA54 /* RDEPUBReaderController.swift */, - 3F3375F32D22D669DD2C8A34D3FB9A8E /* RDEPUBReaderController+AttachmentTooltip.swift */, - 11C152E0F5FA501D1DE57C6F84974FB2 /* RDEPUBReaderController+ContentDelegates.swift */, - A8DBBD9EE558EAEC43860A5170AEEB3C /* RDEPUBReaderController+DataSource.swift */, - 5CCE94BB911FD46F5041173C2B601F2B /* RDEPUBReaderController+ExternalLinks.swift */, - 60F3D803C6E446785A25173F8A33539E /* RDEPUBReaderController+LocationResolution.swift */, - 44CC9E1CE3BFCDCF123AF3232DE600ED /* RDEPUBReaderController+PublicAPI.swift */, - 7975AED4D3A0C7FCE350B73EA6D1DC77 /* RDEPUBReaderController+RenderSupport.swift */, - C5CC04F74B62D6B70820B21C9498D09C /* RDEPUBReaderController+RuntimeBridge.swift */, - 35AD33C94AE70E2D00F629BACC8622C9 /* RDEPUBReaderController+TableOfContents.swift */, - 527A6EE584C515DEE0448928F5BB0AE6 /* RDEPUBReaderDelegate.swift */, - CFE59748EBA8ED3671180B5ACB903377 /* RDEPUBReaderHighlightsViewController.swift */, - 563790B1DA3FCFFF97263535AEDB9591 /* RDEPUBReaderPersistence.swift */, - 3CAD42B48B9168BBD3A810E5D3F0F956 /* RDEPUBReaderSearchBarView.swift */, - 964DE5C11E965DC6F881D1B75582D58B /* RDEPUBReaderTableOfContentsItem.swift */, - 0FAFD969C7141125539E80810C0A6A9B /* RDEPUBReaderToolView.swift */, - 4D91E45585D4F6401B403BD10449ADDF /* RDEPUBReaderTopToolView.swift */, - ADB1213E5EB8A69E4CD2283819D92718 /* RDEPUBSettingsFlipAutomation.swift */, - 2088F60EF3B4ADB258266A178B5D3ECC /* RDEPUBViewportTypes.swift */, - E6DFA1F6B3E87EFC26C391A4189DCB53 /* RDEPUBWebContentView.swift */, - 6C9B40FEFC2CC9CEB30271F8C4A38740 /* RDEPUBWebDecorationOverlayView.swift */, - 949BC485A5DC7EF786656CBF9A479A1D /* RDURLReaderController.swift */, - FB56EEA8FBF8DBE56135C22D77769CC8 /* String+RDEPUB.swift */, - 6DACF1F2702EB6425DF22A4B0CB64202 /* UIColor+RDEPUB.swift */, - 4D1E680FFD8DDC08A39464AD386D2992 /* UIColor+RDEPUBHex.swift */, - 4C6BC7B4283EB95C91914329899B3F0B /* Notes */, - 83FFDC8682B47C8CA37A1C147F2B1FB9 /* ReaderController */, - 8E0D9F272A7D36DDF5AFB217A51F8141 /* Settings */, - BB85FC6028568D908BA27A976E1EBFF8 /* TextPage */, - ); - name = EPUBUI; - path = Sources/RDReaderView/EPUBUI; - sourceTree = ""; - }; B9550C76BFCCB8D00C45A27D139400B1 /* BuildPipeline */ = { isa = PBXGroup; children = ( @@ -1704,25 +1608,47 @@ name = "Development Pods"; sourceTree = ""; }; - BB85FC6028568D908BA27A976E1EBFF8 /* TextPage */ = { + BD102190D5C3EBD65EF2520B52413541 /* EPUBUI */ = { isa = PBXGroup; children = ( - BD93A4C37E58849DD3FBADFE4E3BB7E4 /* RDEPUBDarkImageAdjuster.swift */, - A01E0B0F5FAC4DBF5D1DEC0013417AC1 /* RDEPUBPageInteractionController.swift */, - 353528037271462D3C73D07BBF5D8DED /* RDEPUBPageLayoutSnapshot.swift */, - 592C900095F4CE33172C3233D2720E53 /* RDEPUBSelectionLoupeView.swift */, - F9990D385BA523E06021532FB947967B /* RDEPUBSelectionOverlayView.swift */, - 95C3D8182D7F19D798483F0031DB4B8A /* RDEPUBTextAnnotationOverlay.swift */, - A765D0DF2FFB6442A7BF2726F2F3B2C8 /* RDEPUBTextContentInteractionCoordinator.swift */, - 6E1394B4A44C49F86D8E755C1C16910C /* RDEPUBTextContentView.swift */, - 457B5F878654F351DEB25FAF4076AE4D /* RDEPUBTextPageBoundaryValidator.swift */, - A7ECD7EBE082C509350CCB121EE308F6 /* RDEPUBTextPageDecorationView.swift */, - 7380BDD29AC5C55223ADDD7C33698102 /* RDEPUBTextPageRenderView.swift */, - 2D811ABCB31C221FA6F002E32629D6B7 /* RDEPUBTextPageVerticalJustifier.swift */, - 745B50420148262217CC19E5B8E1E61A /* RDEPUBTextSelectionController.swift */, + 25B061393791774B154F5F8759A2BDD9 /* RDEPUBAttachmentTooltipOverlayView.swift */, + 76DC91EBC1C9627AD0F09DFE57D04F52 /* RDEPUBAttachmentTooltipView.swift */, + 174D4D5E30ACC1B5266B20D621E65064 /* RDEPUBImageViewController.swift */, + 75DA84652E7A2A0529D8385085690062 /* RDEPUBImageViewerCoordinator.swift */, + AA7348D6DBED868AB2EC3A252840235A /* RDEPUBReaderBottomToolView.swift */, + CFE57F56B1368E2617F06DE5FF893AA7 /* RDEPUBReaderChapterListController.swift */, + 773DBBEB900B259FCF917AD7299A4F34 /* RDEPUBReaderController.swift */, + 8F661A240C4FCF4610D249E6389CF34E /* RDEPUBReaderController+AttachmentTooltip.swift */, + B359BD655F8361E4030C9E5F4FBAAD97 /* RDEPUBReaderController+ContentDelegates.swift */, + 6A42607282986A7CB11AD3361E82530C /* RDEPUBReaderController+DataSource.swift */, + 10E90103F330F58312FAAE9AA82E84B6 /* RDEPUBReaderController+ExternalLinks.swift */, + 67BEEE595D865F7E86B156385CDF6111 /* RDEPUBReaderController+LocationResolution.swift */, + 321B4FCED5571F74A0AAD75BF9637505 /* RDEPUBReaderController+PublicAPI.swift */, + 08ABF9E1CC5582725B03469178A59A0A /* RDEPUBReaderController+RenderSupport.swift */, + 90779E903799E06765C8410408D06C76 /* RDEPUBReaderController+RuntimeBridge.swift */, + 17A6573887F6DA388F2EA0B96400C892 /* RDEPUBReaderController+TableOfContents.swift */, + A357FC293046D648FE84D98C27AF2821 /* RDEPUBReaderDelegate.swift */, + DAAA5CC57B64078C930CBC9221BAAB30 /* RDEPUBReaderHighlightsViewController.swift */, + 852FB37B13A5612919954D97632ED37F /* RDEPUBReaderPersistence.swift */, + 1F6418C1A247C2BC37337DE4C0A9C770 /* RDEPUBReaderSearchBarView.swift */, + E5ECDA952875E7B452D3D15796C20046 /* RDEPUBReaderTableOfContentsItem.swift */, + 59600B93DBD35077CC79C74D07BC03CE /* RDEPUBReaderToolView.swift */, + AB4FAD61ECDD132D743C6E8CFF267798 /* RDEPUBReaderTopToolView.swift */, + 894D74C9B59F1EE9BE4DFF5D3B60B772 /* RDEPUBSettingsFlipAutomation.swift */, + 751A6591CCEC79FB3B33C8EADF3465B6 /* RDEPUBViewportTypes.swift */, + 5B37A3A1274B29F6D04BFB081D22CB96 /* RDEPUBWebContentView.swift */, + 636939AFA1CB3F49FE41D1160D512A54 /* RDEPUBWebDecorationOverlayView.swift */, + 5253C9907BB440614610BB054B001181 /* RDURLReaderController.swift */, + C46B8E1584FAC5111CD0C46A159AB951 /* String+RDEPUB.swift */, + 21D501067A95E18D0DCAEF44170D36F2 /* UIColor+RDEPUB.swift */, + 0ABD7D7079A2D977E38F0289E27447EC /* UIColor+RDEPUBHex.swift */, + 5A0DF31FEBA61B1697993F27E68CD307 /* Notes */, + DAD1CF22E2CEE4FF1740DB9F6E221942 /* ReaderController */, + 4858F5F9C1EDB780E6E01A377CD98EA0 /* Settings */, + E8DB0A553F41A3FD84BD21409EFA60C0 /* TextPage */, ); - name = TextPage; - path = TextPage; + name = EPUBUI; + path = Sources/RDReaderView/EPUBUI; sourceTree = ""; }; C0A487BA5466E564181169CA28A4FDFF /* Pagination */ = { @@ -1798,6 +1724,28 @@ ); sourceTree = ""; }; + D0618DA78651C576D5A9688963EC9519 /* ChapterRuntime */ = { + isa = PBXGroup; + children = ( + 51DA940F74309B236AFA2A214D82D47C /* RDEPUBBackgroundTrace.swift */, + 40E88E1EF1BA62D99833E17E30E87DC5 /* RDEPUBBookPageMap.swift */, + E07FDF85BE977EC47B3B8194DA98648E /* RDEPUBChapterCacheKey.swift */, + 842C60964BEEDCF50FFF84E40B135751 /* RDEPUBChapterDataCache.swift */, + A8CA2D533001FF2048A1A42F91A23085 /* RDEPUBChapterLoader.swift */, + AA788B1C32640B2F2761D3C04446BB67 /* RDEPUBChapterLocation.swift */, + 33D775F257172C2AB560D7B9B5A918FD /* RDEPUBChapterOffsetMap.swift */, + 58C8FD645A1F2CB6BC9C86FE156721F1 /* RDEPUBChapterRuntimeStore.swift */, + 02B2F8AC62D3CFC4C1A082B868C195F7 /* RDEPUBChapterSummaryDiskCache.swift */, + 2622CEF5D9B34D713B60EB2991499EDC /* RDEPUBChapterWarmupOrchestrator.swift */, + 4F525CC259CDC719A02AC344AFC95E1F /* RDEPUBPageCountCache.swift */, + 81514BCB47BC71C39284064C943C0DC3 /* RDEPUBPageResolver.swift */, + D8590506F0EECF12909B4BBA8CCCF3D6 /* RDEPUBRuntimeChapter.swift */, + 36B0EC72869740D8DB68B51304CC9B48 /* RDEPUBRuntimePageCount.swift */, + ); + name = ChapterRuntime; + path = ChapterRuntime; + sourceTree = ""; + }; D4D1573132E3E8DD3B99E449658562B8 /* Resources */ = { isa = PBXGroup; children = ( @@ -1827,6 +1775,39 @@ path = DTFoundation; sourceTree = ""; }; + DAD1CF22E2CEE4FF1740DB9F6E221942 /* ReaderController */ = { + isa = PBXGroup; + children = ( + 92BDC596AE388602E419B3750DAD4229 /* RDEPUBBackgroundCoverageStore.swift */, + 0B4FEEF73E68688CF8770B9A3A368710 /* RDEPUBBackgroundPriorityPolicy.swift */, + 35C2BF4CF393A0130124600E79ECC3D6 /* RDEPUBJumpSession.swift */, + D2648A6B239413226E9A72CCC64D4C79 /* RDEPUBMemoryProbe.swift */, + 04D90198F17A11D36ABBECA5A4F3AD7F /* RDEPUBMetadataParseCancellationController.swift */, + 2120F356DBB0D7C46B15B379759AC7AE /* RDEPUBMetadataParseWorker.swift */, + 69E5D0AD1240B6B0802F2647F5435EA3 /* RDEPUBPageMapReconciliationCoordinator.swift */, + 88FB583F2D022D1B84B91F285F67FE76 /* RDEPUBPresentationRuntime.swift */, + 1AB6F109E02D97808539FB0F9B894487 /* RDEPUBReaderAnnotationCoordinator.swift */, + 9EA9EC765AA36B44104989E818B13326 /* RDEPUBReaderAssemblyCoordinator.swift */, + 6DF0A5A438D3319310C8FF50C82762F2 /* RDEPUBReaderChromeCoordinator.swift */, + 3EF0585A8A2B50BF79245DF9365836C8 /* RDEPUBReaderContext.swift */, + 3FB158582A185027BF7C5254A69DA213 /* RDEPUBReaderDependencies.swift */, + 1CDA4D9D71528F8C1070DBF2AFB21AED /* RDEPUBReaderEnvironment.swift */, + 3656D2A32DB42AE8DD66E0079651906D /* RDEPUBReaderLoadCoordinator.swift */, + 30B0AB500258357278F5D4E6C1AA2848 /* RDEPUBReaderLocationCoordinator.swift */, + 8F9718E0B39AD8A3470522498E28F30F /* RDEPUBReaderPaginationCoordinator.swift */, + FFF9AAECD5FDC285A509FEED0B29951E /* RDEPUBReaderRuntime.swift */, + ED4AFBE65217F4B7692C91828CC9BF53 /* RDEPUBReaderSearchCoordinator.swift */, + B9D06448CCB730D9D9ACF44F513FCA87 /* RDEPUBReaderServices.swift */, + AE9B612343098773F84020F02EF8FB23 /* RDEPUBReaderState.swift */, + 55C2EDC5A62B0F36995A69620E5464B3 /* RDEPUBReaderUIState.swift */, + 08AF3CF7541223D386A278B79878A8DF /* RDEPUBReaderViewportMonitor.swift */, + 0389417C712B5E7FA8F9FBB870FA2227 /* RDEPUBSelectionState.swift */, + D0618DA78651C576D5A9688963EC9519 /* ChapterRuntime */, + ); + name = ReaderController; + path = ReaderController; + sourceTree = ""; + }; E21916B80D2B8A09E76AB2CFCB1E1232 /* Support Files */ = { isa = PBXGroup; children = ( @@ -1842,6 +1823,28 @@ path = "../Target Support Files/DTFoundation"; sourceTree = ""; }; + E8DB0A553F41A3FD84BD21409EFA60C0 /* TextPage */ = { + isa = PBXGroup; + children = ( + 3A6AD2E4A78A3060ED880D0ADFC9C5C7 /* RDEPUBChapterDisplayContentCache.swift */, + 378AC6C2092D7E25BFF88FB4C743886C /* RDEPUBDarkImageAdjuster.swift */, + 785AE7F19DADEDA041CFCC67D8B25189 /* RDEPUBPageInteractionController.swift */, + 2B02D527081372B04CC8FECF5940E6DC /* RDEPUBPageLayoutSnapshot.swift */, + D1BEE21B44C49B23A7AAD27A4ACABF44 /* RDEPUBSelectionLoupeView.swift */, + 7C64A40D0DAA97EF0A1E98A05DF28CE4 /* RDEPUBSelectionOverlayView.swift */, + 1AAF82A90409132033768049C49798C3 /* RDEPUBTextAnnotationOverlay.swift */, + 25D28385D66ED93351515441996056D7 /* RDEPUBTextContentInteractionCoordinator.swift */, + 75C58FBF3697A8233DC5C9527094D6C3 /* RDEPUBTextContentView.swift */, + 74A0B8ECDC21C0F91EAB0484A86289DA /* RDEPUBTextPageBoundaryValidator.swift */, + F32976CA02F8617CB2E2A38D9261257F /* RDEPUBTextPageDecorationView.swift */, + 6859E00AB232CC21F2C63A4CCB9EB108 /* RDEPUBTextPageRenderView.swift */, + 05474A384503DBB6DB8EF47D660B849C /* RDEPUBTextPageVerticalJustifier.swift */, + 48121E38890812B2122D7CD791CB9F52 /* RDEPUBTextSelectionController.swift */, + ); + name = TextPage; + path = TextPage; + sourceTree = ""; + }; EDB7CA736956B024AA10C0D144AC906D /* Models */ = { isa = PBXGroup; children = ( @@ -1879,47 +1882,6 @@ /* End PBXGroup section */ /* Begin PBXHeadersBuildPhase section */ - 0B93AEFA1D7B38E961B889A2911C2370 /* Headers */ = { - isa = PBXHeadersBuildPhase; - buildActionMask = 2147483647; - files = ( - E2E8C0892B9A8C42DBEC22695AFD9CBD /* DTActivityTitleView.h in Headers */, - D7AED37646A665332F337B31C4071410 /* DTAnimatedGIF.h in Headers */, - 00C925B23F15FD8CC68036BE6E02D58D /* DTBase64Coding.h in Headers */, - 45CFC0BDED4932E8406B27C77613231E /* DTBlockFunctions.h in Headers */, - E3C79B70ACF93E0817F39141252748E3 /* DTCompatibility.h in Headers */, - 6D753927C673A54E3324CC80F3B797F3 /* DTCoreGraphicsUtils.h in Headers */, - 700215E76C62321BBD343D2FA26AC750 /* DTCustomColoredAccessory.h in Headers */, - 00DBA2F5D7C2191FEBE9FCEF81D0A121 /* DTExtendedFileAttributes.h in Headers */, - C79D3ACF7D916E647CF4071DF76FF694 /* DTFolderMonitor.h in Headers */, - C01E5466578E9C7FE1EB54CDC807281E /* DTFoundation-umbrella.h in Headers */, - 2651136AC72A13233A460A70CAEE717D /* DTFoundationConstants.h in Headers */, - D782680C3249B3848A8E7DCB29665EC0 /* DTHTMLParser.h in Headers */, - 648AD27F4319D2CC654BAEE5439DEEAC /* DTLog.h in Headers */, - 2B9B5C05BFB132C2A03AF56BB262A4B3 /* DTPieProgressIndicator.h in Headers */, - 0A907B7973CEA38E9E330C87CCCCBF07 /* DTSmartPagingScrollView.h in Headers */, - BCE14EE78A2BFD66DBC63E3DEDB0BA96 /* DTTiledLayerWithoutFade.h in Headers */, - 3B0DD640C4EFE14E8F5148895C99A5CE /* DTVersion.h in Headers */, - 9F179DC382D2EC073B078FD429DEE6CF /* DTWeakSupport.h in Headers */, - 5E7F686124648073387FCFA9D4241709 /* NSArray+DTError.h in Headers */, - 1C844A8F215ED4A0D27F2B30DC0D52C2 /* NSData+DTCrypto.h in Headers */, - F10E196600D9D9B578D2092DE5CF0601 /* NSDictionary+DTError.h in Headers */, - DE3D7E5F7E446D69573E4F0FEEAB85BB /* NSFileWrapper+DTCopying.h in Headers */, - C31CB8F48217224330E3A3D756B6A9E6 /* NSMutableArray+DTMoving.h in Headers */, - E9FDE27049972F9802E2968B2A54CCA4 /* NSString+DTFormatNumbers.h in Headers */, - 53F4E2FA05AC45F68A8CC2258D669F32 /* NSString+DTPaths.h in Headers */, - 97815755305FE4263E834D2E733D7244 /* NSString+DTURLEncoding.h in Headers */, - BD4D0BA5B93C8F582243A7BC87EAF01D /* NSString+DTUtilities.h in Headers */, - 872AAE3DA53479C97D1DA24E9DDFD043 /* NSURL+DTAppLinks.h in Headers */, - AC6986BEB5202AD38DADBDCA5E6E35AC /* NSURL+DTComparing.h in Headers */, - 3E96CCAED9D356F66D8EE8F6E6A496F8 /* NSURL+DTUnshorten.h in Headers */, - 5051E90EBC038ED8C2C698770A18BCC7 /* UIApplication+DTNetworkActivity.h in Headers */, - 519D2881E7DDE1204CE7D17BE98333FE /* UIImage+DTFoundation.h in Headers */, - 247B7228F440D911BBD9C6BBF0276F6E /* UIScreen+DTFoundation.h in Headers */, - 9F7BF25BE458742AEF685FDBF03E8F6B /* UIView+DTFoundation.h in Headers */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; 29CB77F5EC62298B8E19FEFFD791AEAD /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; @@ -2001,19 +1963,60 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - BC7A196A9AB65D79B6D2930DE22791ED /* Headers */ = { + 648DFED59DCC5D3BE0B81D2B602CD9C0 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 8C79FF60C4C70F03F4EA4C8F6713B392 /* RDReaderView-umbrella.h in Headers */, + B2D4278E2D1008B9717940F438726A34 /* DTActivityTitleView.h in Headers */, + 325368D9102D104F1711FA60620F35CD /* DTAnimatedGIF.h in Headers */, + 4A576CC1A123AB214203367996A2E86E /* DTBase64Coding.h in Headers */, + 9C9331448A1CBD31F9C64CBA0FBB793B /* DTBlockFunctions.h in Headers */, + CFE6B9E809438CC90BBC76C4496FF9A2 /* DTCompatibility.h in Headers */, + 0EE7F18FF656A4EC05B960233F005AD5 /* DTCoreGraphicsUtils.h in Headers */, + 6A233E2D67F005BCE55CBA9297463B2F /* DTCustomColoredAccessory.h in Headers */, + 8BAB1EEE05BFB3B8B153BF2D92FDFFC8 /* DTExtendedFileAttributes.h in Headers */, + 246BB0637AF781853BFC822206467634 /* DTFolderMonitor.h in Headers */, + 1D4601F156BBC481DF8CBEA127933339 /* DTFoundation-umbrella.h in Headers */, + 8602D332B12D56DF37C90CA9E8216DEF /* DTFoundationConstants.h in Headers */, + 9186C2A051CD161DD0AD17023C9B8683 /* DTHTMLParser.h in Headers */, + EFD93ED339F0D5CB242D3D1316AACE15 /* DTLog.h in Headers */, + CC6B05241A40971D95985E73574BF325 /* DTPieProgressIndicator.h in Headers */, + BE9C1998CCE5DFB92AAB95691E08AA1F /* DTSmartPagingScrollView.h in Headers */, + 8F695E0579605768E29DDA8C50596D9D /* DTTiledLayerWithoutFade.h in Headers */, + 9BFD528442B295AED7E060DC26BB1065 /* DTVersion.h in Headers */, + EF83C2E1CFBB5E27E20DB1CBED62B356 /* DTWeakSupport.h in Headers */, + 01AC9A3EA5F344CDC16ACBC3A3E45492 /* NSArray+DTError.h in Headers */, + 90DE245714318E23EB6D5A19B8091CC0 /* NSData+DTCrypto.h in Headers */, + 43D97AE7AF25413C3F239057F503CFA7 /* NSDictionary+DTError.h in Headers */, + F36F09BAA9AE57FF3DCBABA061CAC4A0 /* NSFileWrapper+DTCopying.h in Headers */, + 1415381C0EC999E8E0990C293F69164D /* NSMutableArray+DTMoving.h in Headers */, + 6DF4156314ACD722DD64716D3A4304E1 /* NSString+DTFormatNumbers.h in Headers */, + 026BE0E38192F8E2F8A3119AB7E35952 /* NSString+DTPaths.h in Headers */, + 67E1C9F9FA4C02105DC5B388B0B6F117 /* NSString+DTURLEncoding.h in Headers */, + 23EF24FC2D01FCAE8C72AB5C1BEBC719 /* NSString+DTUtilities.h in Headers */, + 06D28593D963E13161146C674594D3C1 /* NSURL+DTAppLinks.h in Headers */, + 56CD331F590F173B69E04D0D0557D74F /* NSURL+DTComparing.h in Headers */, + 4495EAFF6740BE5C8D6C2319D2EBFE23 /* NSURL+DTUnshorten.h in Headers */, + D9198DC4DEF107D39DA38B282418727B /* UIApplication+DTNetworkActivity.h in Headers */, + 3A3EEA702B6881089A65D1CB812C28E4 /* UIImage+DTFoundation.h in Headers */, + EDB22948AD6C7DFB5AF514AAC74CCEB4 /* UIScreen+DTFoundation.h in Headers */, + CAE9C7E8F8BF6322155DB2AA530C905B /* UIView+DTFoundation.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; - C66106671F3C8D870CED80E8EABEC47D /* Headers */ = { + A5BB6B2E06EC42961845E25F0D1D06F6 /* Headers */ = { isa = PBXHeadersBuildPhase; buildActionMask = 2147483647; files = ( - 6CE3DD94BDB5F75D648201EB01DD9986 /* ZIPFoundation-umbrella.h in Headers */, + 56733EB92902794487A13DF03E0026A6 /* RDReaderView-umbrella.h in Headers */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + EC886D5795CB6796D132E47FBF28249F /* Headers */ = { + isa = PBXHeadersBuildPhase; + buildActionMask = 2147483647; + files = ( + 8892F824CF5AE13E7951F21E83A1341F /* ZIPFoundation-umbrella.h in Headers */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2022,11 +2025,11 @@ /* Begin PBXNativeTarget section */ 0C24CB0E87A728A11AA1124CB360D6A1 /* DTCoreText-Resources */ = { isa = PBXNativeTarget; - buildConfigurationList = AB6CC5129229FA51901566E3484E6E29 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */; + buildConfigurationList = C7129EF2434C8874397E54D62D12DED8 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */; buildPhases = ( - E87E209F22953FDB1FA30CBD4C105B70 /* Sources */, - 9CCBD56F874FA596A1696EB08225947F /* Frameworks */, - 39B8AAC24665687D9F36231B26DAD836 /* Resources */, + 472A5E64903370EAB6901860800ED24C /* Sources */, + E59106FD1BF297D3A64453E60776A85B /* Frameworks */, + 3EB4C7E274284DAE9A5BD1585CC1B3CA /* Resources */, ); buildRules = ( ); @@ -2049,10 +2052,10 @@ buildRules = ( ); dependencies = ( - 5BBEE4C1588D98D7C94381D276C62D46 /* PBXTargetDependency */, - 4CFED76A0A1A22C8A8FD651F035A784B /* PBXTargetDependency */, - E63DB2D02A62DA3E6AD23FCE3DB11A0A /* PBXTargetDependency */, - DE39752D3149CB2559D8B208E8202F5F /* PBXTargetDependency */, + 19907CCC257DD9F92B515448B5A2975C /* PBXTargetDependency */, + 92A6DACDBF5DE6549B548C7CBB39DCBD /* PBXTargetDependency */, + 1B4F75AF848B46CF23A6BA22675D6627 /* PBXTargetDependency */, + 3A511A70A083978857166D53697B2DD1 /* PBXTargetDependency */, ); name = "Pods-ReadViewDemo"; productName = Pods_ReadViewDemo; @@ -2061,12 +2064,12 @@ }; 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */ = { isa = PBXNativeTarget; - buildConfigurationList = A87924AD6CFC26096ACAC6E8C270E40C /* Build configuration list for PBXNativeTarget "DTFoundation" */; + buildConfigurationList = 6D990C2C8650568DCA444C68C8A54BD4 /* Build configuration list for PBXNativeTarget "DTFoundation" */; buildPhases = ( - 0B93AEFA1D7B38E961B889A2911C2370 /* Headers */, - 1921A975DCF4677EDFD10C92050EC416 /* Sources */, - FD6D97590348CA8F8FC55FC0BD392B6B /* Frameworks */, - 72BD6600585C4D2C17B65DCA6090D586 /* Resources */, + 648DFED59DCC5D3BE0B81D2B602CD9C0 /* Headers */, + F5F1FC469BD99BD8FE391C7AA7B69D6C /* Sources */, + 675C36B63C7099735ABF05C8415239F4 /* Frameworks */, + 446F6DC518306FABDD2651CF27638B18 /* Resources */, ); buildRules = ( ); @@ -2079,17 +2082,17 @@ }; AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */ = { isa = PBXNativeTarget; - buildConfigurationList = C0974D194616F16177BEDFB3D7C054F0 /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; + buildConfigurationList = D1EC69BAD25E2A3F988B19C5623BB9ED /* Build configuration list for PBXNativeTarget "ZIPFoundation" */; buildPhases = ( - C66106671F3C8D870CED80E8EABEC47D /* Headers */, - 786564399E053D5FC4476109DEBBFEE0 /* Sources */, - 0BC732510CDEB52A7CB28936E746A726 /* Frameworks */, - 2612277909133F912CD2278F37833B49 /* Resources */, + EC886D5795CB6796D132E47FBF28249F /* Headers */, + 53470AA1E22D75D11969ABA65F897C7E /* Sources */, + F0FD7205A630E9BC2296E4014DAD1A46 /* Frameworks */, + 261B987294C9F9BF26E53F632D5681C9 /* Resources */, ); buildRules = ( ); dependencies = ( - 1805BE409736183E0B49DFCC39540C5C /* PBXTargetDependency */, + 323F230337D07BED6644D3793F84BE5F /* PBXTargetDependency */, ); name = ZIPFoundation; productName = ZIPFoundation; @@ -2098,19 +2101,19 @@ }; AA2E57587AA8EECA63C4BE08EA3CB6D2 /* RDReaderView */ = { isa = PBXNativeTarget; - buildConfigurationList = B36E390C233796AF3616DEDF3A8E3702 /* Build configuration list for PBXNativeTarget "RDReaderView" */; + buildConfigurationList = 395E1ADD7C4572E07F9F15529B893917 /* Build configuration list for PBXNativeTarget "RDReaderView" */; buildPhases = ( - BC7A196A9AB65D79B6D2930DE22791ED /* Headers */, - 46B3CD29AF61D782033CCD8AC3F64F9C /* Sources */, - C4547124925694C151155C5C459D5EA1 /* Frameworks */, - 54D50F5E7D2A7E05986FDEECB2DE604F /* Resources */, + A5BB6B2E06EC42961845E25F0D1D06F6 /* Headers */, + AB8B92BE0F0C87AA0022B19A1F25C7AD /* Sources */, + 02FD61DAA6380EBDC9D98B4644F4791F /* Frameworks */, + 09AEAE654B6AD617E854D73003D34086 /* Resources */, ); buildRules = ( ); dependencies = ( - ABD8515E56FA7B271D38BF38721AE20C /* PBXTargetDependency */, - D8D6955B3296868715229C88935F151F /* PBXTargetDependency */, - AE56B2245E723DA83C8905741493BCE4 /* PBXTargetDependency */, + 2502DD303A8608D0713BD3D51E7000A9 /* PBXTargetDependency */, + 24D7C9680789D00DF9C75051814D1BA0 /* PBXTargetDependency */, + FE93D297488A807E698F9F36D740C412 /* PBXTargetDependency */, ); name = RDReaderView; productName = RDReaderView; @@ -2119,11 +2122,11 @@ }; AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */ = { isa = PBXNativeTarget; - buildConfigurationList = E388A68950BE869243115F12D29275E6 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */; + buildConfigurationList = 3B6A47CF0BB2BB255AA059547D63FCE6 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */; buildPhases = ( - 9D7747E4EF4AD08D46E0A0F1EE4FBF71 /* Sources */, - 68BAD03119A3C08F11F48EC53AE50E2A /* Frameworks */, - FC37B8B5D0814BC619325AA8E2521E8F /* Resources */, + 6AAF679C4EE4227FBB3FD78048647B8B /* Sources */, + D6628DA002F520A4D4D4AA1E070A16D6 /* Frameworks */, + 854968C777261C5DD24F0234EEB79219 /* Resources */, ); buildRules = ( ); @@ -2146,8 +2149,8 @@ buildRules = ( ); dependencies = ( - ED3F8BF6E64575FD64AB29CD5E7F325C /* PBXTargetDependency */, - 24052366F14D3992556E6F97AA286A3A /* PBXTargetDependency */, + 773F814832EEF86B603BDB3BEE4BAC30 /* PBXTargetDependency */, + 1FE255033CE2931F14A8B432913B1C07 /* PBXTargetDependency */, ); name = DTCoreText; productName = DTCoreText; @@ -2156,11 +2159,11 @@ }; C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */ = { isa = PBXNativeTarget; - buildConfigurationList = 518A8AFAE744B5C934477065A093DD03 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */; + buildConfigurationList = B67E3207991BCCFC1AE95B4BC8FF8FB5 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */; buildPhases = ( - 69A5EC197D7DEE159385371D2388DE1E /* Sources */, - 69DDADDC67DC51005EC1277552F4DE77 /* Frameworks */, - 410CBB418D3FC8332AD4A585000429D1 /* Resources */, + 5399BA0EDBD025ECAEB298D6CF183356 /* Sources */, + 2A1FC717178B248B6BB29FD676DA5C06 /* Frameworks */, + BA6F338D23A08095E62F2E770A67AA7F /* Resources */, ); buildRules = ( ); @@ -2208,11 +2211,19 @@ /* End PBXProject section */ /* Begin PBXResourcesBuildPhase section */ - 2612277909133F912CD2278F37833B49 /* Resources */ = { + 09AEAE654B6AD617E854D73003D34086 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - B370BAB1B1D7913DAB1C6C186DD058B3 /* ZIPFoundation-ZIPFoundation_Privacy in Resources */, + CB177A8E7BE40959C8C71E15CDBA0688 /* RDReaderView-RDReaderViewAssets in Resources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; + 261B987294C9F9BF26E53F632D5681C9 /* Resources */ = { + isa = PBXResourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 91085F6C691CF5E3B32E3B26BEC3605C /* ZIPFoundation-ZIPFoundation_Privacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2224,34 +2235,35 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - 39B8AAC24665687D9F36231B26DAD836 /* Resources */ = { + 3EB4C7E274284DAE9A5BD1585CC1B3CA /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 300D521B97F66DD5401F6292436339EF /* default.css in Resources */, + 9C0DC170906447654EC656D17AD56645 /* default.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 410CBB418D3FC8332AD4A585000429D1 /* Resources */ = { + 446F6DC518306FABDD2651CF27638B18 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 6B0DCDF171C89921104B03A7C2FBD921 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 54D50F5E7D2A7E05986FDEECB2DE604F /* Resources */ = { - isa = PBXResourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - AF94C02DCB17B49683E8D66372238792 /* RDReaderView-RDReaderViewAssets in Resources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 72BD6600585C4D2C17B65DCA6090D586 /* Resources */ = { + 854968C777261C5DD24F0234EEB79219 /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( + FB2C643CD9553D5BD03E4BA5088E71EB /* cssInjector.js in Resources */, + EE82D71B45FB3F5253C20CED00A83905 /* epub-bridge.js in Resources */, + 050EA0297A5EC0E765F40F075245BDA7 /* epub-fixed-layout.html in Resources */, + C86E362D36C74FE4559A54576F7C04A5 /* rangy-core.js in Resources */, + DACE30D73A9F24E47169758E96D2FB22 /* rangy-serializer.js in Resources */, + C6E901F7E1180BFAD5FFDD7D9D60DBB9 /* WeReadApi.js in Resources */, + 00CB711CB9D36AC4F7C74C396C5EF095 /* wxread-dark.css in Resources */, + 4D452850D8D4B3518722B0399D49C0A4 /* wxread-default.css in Resources */, + 3E1C9314B1519630D8FB24D35EFAF93E /* wxread-replace.css in Resources */, + 1C25FD16E4A629E3F76B8F67BFAB5474 /* wxread-replace-latin.css in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2262,303 +2274,263 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - FC37B8B5D0814BC619325AA8E2521E8F /* Resources */ = { + BA6F338D23A08095E62F2E770A67AA7F /* Resources */ = { isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = ( - 29E12DE24E3817E282979645D80E45C0 /* cssInjector.js in Resources */, - B1C53F2DDF1548C6A9EA0262BD47F6D2 /* epub-bridge.js in Resources */, - 70B2498BF424D327D9F685942E2545FD /* epub-fixed-layout.html in Resources */, - C1BCDDF7EBA55903706A5435C3BD6952 /* rangy-core.js in Resources */, - E197A95013D415FCB22EF52D7F83EDEA /* rangy-serializer.js in Resources */, - 9B1BC6991EADCE68D8C556C23803C70E /* WeReadApi.js in Resources */, - 1D78EA12F3A3AAE27FA5792A07907589 /* wxread-dark.css in Resources */, - 14CE62432CD3EE5D5112BCA53DB4DC87 /* wxread-default.css in Resources */, - 57E1FC6C0C6F1D12E9D1558BF9BA58D0 /* wxread-replace.css in Resources */, - 9F00ED88950CC6FE3294B3484035AAE2 /* wxread-replace-latin.css in Resources */, + CDC518E9F14CC95B4A08177DE9844405 /* PrivacyInfo.xcprivacy in Resources */, ); runOnlyForDeploymentPostprocessing = 0; }; /* End PBXResourcesBuildPhase section */ /* Begin PBXSourcesBuildPhase section */ - 1921A975DCF4677EDFD10C92050EC416 /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 50EF9EE32F5C1FA13D30428F9FF42A44 /* DTActivityTitleView.m in Sources */, - 250D99A44F530B5A9979A09C015D2EEA /* DTAnimatedGIF.m in Sources */, - 1AAE497083E517906F7B5FE3B54261B9 /* DTBase64Coding.m in Sources */, - 9D87AFB2CD371D4C2E4DF923743A3006 /* DTBlockFunctions.m in Sources */, - 00072FE6929FE581D750274713B42926 /* DTCoreGraphicsUtils.m in Sources */, - 7FE9F58EFF876EC8014F334CAA38D30E /* DTCustomColoredAccessory.m in Sources */, - 873DF3287B8B155EDB5F2FEE84DDAF13 /* DTExtendedFileAttributes.m in Sources */, - 3BE0A085BC69652EE763EED221A6F9D9 /* DTFolderMonitor.m in Sources */, - 8B59DB319C18ABA52569DE2683A0BA70 /* DTFoundation-dummy.m in Sources */, - C4ADF74929D282553D9CC6B12132E57A /* DTFoundationConstants.m in Sources */, - A0E447FEA7D1488ADCE2972E526D92D0 /* DTHTMLParser.m in Sources */, - 15AEA1D561EAB9E702FFE2F8595856DE /* DTLog.m in Sources */, - C07672A68F02B0C89233FDB2F58405B4 /* DTPieProgressIndicator.m in Sources */, - 4CE93ED4B7B40D4518A42BB27BE6A338 /* DTSmartPagingScrollView.m in Sources */, - EADAA30B24211C8357659B97D6990479 /* DTTiledLayerWithoutFade.m in Sources */, - DD26AEA60539DED9AD28F2159313A41B /* DTVersion.m in Sources */, - 00311F55CAC7A80476861A9A01A0D9D2 /* NSArray+DTError.m in Sources */, - A237D8BD5695BD412EFBF94B0FECE210 /* NSData+DTCrypto.m in Sources */, - 92429AC50D8D9C9393EC06D275CDC5EE /* NSDictionary+DTError.m in Sources */, - B20767C75E33D940407A73684BBF117D /* NSFileWrapper+DTCopying.m in Sources */, - D31E5EA195C333049DE497301EFD2BA8 /* NSMutableArray+DTMoving.m in Sources */, - D990C9BBC5DEAEE4BA5BFF730C017B94 /* NSString+DTFormatNumbers.m in Sources */, - 8B2918CC0175499F973B3EC6E6CCAD09 /* NSString+DTPaths.m in Sources */, - E4D40CE3F09E656A501BE416D3E75182 /* NSString+DTURLEncoding.m in Sources */, - CEC143DE538A2438B7EE30F733C6F5B1 /* NSString+DTUtilities.m in Sources */, - 1B2F0D344A944A071C0680998A96F14E /* NSURL+DTAppLinks.m in Sources */, - 49843E4719C8DDC61C622560E73ACBC4 /* NSURL+DTComparing.m in Sources */, - 584AE069BDA8C80BAED639DF26754A0B /* NSURL+DTUnshorten.m in Sources */, - E63EF4172239E114561F77A6EDABEA7F /* UIApplication+DTNetworkActivity.m in Sources */, - 36A83636F549A72B823760708496D7B9 /* UIImage+DTFoundation.m in Sources */, - 8823198305D6AF3485BC4DAA84CA08CE /* UIScreen+DTFoundation.m in Sources */, - 22DBEE5DFBD48875EDBA1DB856BA2CFC /* UIView+DTFoundation.m in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 46B3CD29AF61D782033CCD8AC3F64F9C /* Sources */ = { - isa = PBXSourcesBuildPhase; - buildActionMask = 2147483647; - files = ( - 08114BFDC74464E95F7403D745C03597 /* RDEPUBAnnotationModels.swift in Sources */, - 243E7B847D6B869F5B19BEC2007B9290 /* RDEPUBAssetRepository.swift in Sources */, - 3718C3664D054ECFFDAA22DC26A170C7 /* RDEPUBAttachmentNormalizer.swift in Sources */, - 25C0E2CB3040A681F48C60BE0BA6D5F8 /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */, - C5C1EECC76090DF1CB2E7D8E7959CCE2 /* RDEPUBAttachmentTooltipView.swift in Sources */, - 9E94C953488AA36229B1AFBFA32BBED5 /* RDEPUBBackgroundCoverageStore.swift in Sources */, - FBEA39961A7CC41D92A67A52D859FA9B /* RDEPUBBackgroundPriorityPolicy.swift in Sources */, - 11177A56BBD6782F3F92E0E9BAEF677F /* RDEPUBBackgroundTrace.swift in Sources */, - 06382387610043DAA6CD14D7AD182DBF /* RDEPUBBookPageMap.swift in Sources */, - 6C07C95892D6224437E7B6376B08EB23 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */, - 4E857C4A8AF4533FC93D6A5E4B7BB3D4 /* RDEPUBCFI.swift in Sources */, - 8F6093E0D4A2EDA6502FFA163A95EF03 /* RDEPUBCFICompatibility.swift in Sources */, - DA9C5616DC232B156BE657B482DC9F4C /* RDEPUBCFIDOMPathBuilder.swift in Sources */, - 3AA1044D0DBE82EF985629B06BE71A7E /* RDEPUBCFIError.swift in Sources */, - E149D293D49FC1A797C2F7690729E081 /* RDEPUBCFIGenerator.swift in Sources */, - 9D70BB28324C9FF5C0EFC5B4A7FC8D34 /* RDEPUBCFIMap.swift in Sources */, - 759B37F4E343E04EEB2EFA3CF524A47D /* RDEPUBCFIMarkerInjector.swift in Sources */, - C5BB2F613985D1B830839ED1E11CEACA /* RDEPUBCFIParser.swift in Sources */, - FF707D17AED7D66ACAD9953CF67DA3EC /* RDEPUBCFIPath.swift in Sources */, - 519FBE83225E8DD86A6970FB875803D6 /* RDEPUBCFIRange.swift in Sources */, - 356D1732FFEFFCB6EA25A3E5C6F17251 /* RDEPUBCFIRecoveryEngine.swift in Sources */, - 504022F60824B8B6B204AA2100F5D47A /* RDEPUBCFIResolver.swift in Sources */, - B78E0261737C3AB2C16AE5026AC5910E /* RDEPUBCFISerializer.swift in Sources */, - 8DE51BB0432FCA906EE574F54728D7CF /* RDEPUBCFITextAssertion.swift in Sources */, - C51D41D902C067957EBEB531784866C9 /* RDEPUBCFIUtilities.swift in Sources */, - C03DA8BB6EADCF18FDC42EA0996A4A27 /* RDEPUBChapterCacheKey.swift in Sources */, - 6E6B1F175FA7E69A77604DA9FBA74F7A /* RDEPUBChapterData.swift in Sources */, - 399706B52D94F4BB0F6BF7DEE1D7A198 /* RDEPUBChapterDataCache.swift in Sources */, - 561017094AFE9205C1B9FACAE64255AE /* RDEPUBChapterLoader.swift in Sources */, - 8E1761DA4D139D2AFBC9672FB1FB78FB /* RDEPUBChapterLocation.swift in Sources */, - D83430CB424836F9A1B874801AB56F95 /* RDEPUBChapterOffsetMap.swift in Sources */, - 46E70B7A4E1C35BBB88EFBCB9DCE8ADB /* RDEPUBChapterPageCounter.swift in Sources */, - 6F111FA5A549C14B477D6D11A072C865 /* RDEPUBChapterRuntimeStore.swift in Sources */, - ADFF1DCD1BBCDF63976D472155FDE109 /* RDEPUBChapterSummaryDiskCache.swift in Sources */, - 203CB331D8744F1800C59AE8D711EF88 /* RDEPUBChapterTailNormalizer.swift in Sources */, - FC27EB0CB0FF172C74A211248FC42DEA /* RDEPUBChapterWarmupOrchestrator.swift in Sources */, - 05C9B93A3147D32C239D36A568E19FB4 /* RDEPUBCoreTextPageFrameFactory.swift in Sources */, - B5427437A9D88407114E663610C3C014 /* RDEPUBCSSCompatibilityLayer.swift in Sources */, - 67FEDE8824DCBF369F8BC557A54A4B38 /* RDEPUBDarkImageAdjuster.swift in Sources */, - 56F19DA2EC227104B8690133AAD7B622 /* RDEPUBDTCoreTextRenderer.swift in Sources */, - 08579DA9653BBAE41A18A65026C4006A /* RDEPUBFixedLayoutTemplate.swift in Sources */, - 46A2E18E981DE7D7FFAC4BF04E967AE2 /* RDEPUBFontFallbackResolver.swift in Sources */, - 2341F46E32027F16B3EE8F86B75B58A9 /* RDEPUBFontNormalizer.swift in Sources */, - B90885681DDEEB4B8E9A02D42618DED8 /* RDEPUBFragmentMarkerInjector.swift in Sources */, - 97A08769271E83386E538B6CA488A1D7 /* RDEPUBHTMLNormalizer.swift in Sources */, - 18B162A00BDD1E6C09AFECB6B45C031B /* RDEPUBImageViewController.swift in Sources */, - C60C55B121391A5AF467974B11309DD7 /* RDEPUBImageViewerCoordinator.swift in Sources */, - 5F5D2D465B1C6351873BCE1AA7983583 /* RDEPUBJavaScriptBridge.swift in Sources */, - F1436DB556678069EE1DAAA6CD21D6BD /* RDEPUBJumpSession.swift in Sources */, - 70423D7766237808D787F70649D66D2D /* RDEPUBMemoryProbe.swift in Sources */, - 022AC87F90411AB1565BFC34CBD20C77 /* RDEPUBMetadataParseCancellationController.swift in Sources */, - 9400BE65C1A692BC1413843076D6EB03 /* RDEPUBMetadataParseWorker.swift in Sources */, - 86CE7CF558D2DC085C9D6DEC7B2FFA2C /* RDEPUBModels.swift in Sources */, - E35DC3465FF74C36D1877CE677053732 /* RDEPUBNavigatorLayoutContext.swift in Sources */, - 11A4D1ED36F0F2CD8FB62160CE6253A7 /* RDEPUBNoteDetector.swift in Sources */, - 0E654514AD6619948B5E7AB8A68398BB /* RDEPUBNoteModels.swift in Sources */, - D9BDE5ECF4EDB325C935F92526AF3BCC /* RDEPUBNotePopupCoordinator.swift in Sources */, - 6ED8ED03655DAA19AD28AB74929C8D5E /* RDEPUBNotePopupViewController.swift in Sources */, - 9ACDE3CA3FE3A60AC27687C656FB419C /* RDEPUBNoteResolver.swift in Sources */, - 169E3A8D7CF9CD10474613EF0CE0BA58 /* RDEPUBPageBreakPolicy.swift in Sources */, - D52D504561415193B8D8731387406403 /* RDEPUBPageCountCache.swift in Sources */, - 83519082B9AE779AED5292F7BEC3F536 /* RDEPUBPageInteractionController.swift in Sources */, - 6635ACAC44269CA4F029D09B8FA0AB6A /* RDEPUBPageLayoutSnapshot.swift in Sources */, - D4E1BD55CB50FAE3E5F629004180CF45 /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */, - E80114BEF65115368E89B351DF979DDA /* RDEPUBPageResolver.swift in Sources */, - 3BB5E376318200B3769C486789E24289 /* RDEPUBPaginationCacheCoordinator.swift in Sources */, - A1F973FDFDF76DF8D0933605D66EBDA8 /* RDEPUBPaginationModels.swift in Sources */, - 80E64600E4FF6A3D54497AFCEB21A330 /* RDEPUBPaginator.swift in Sources */, - 7F6038D943A16DE9AC6A1C0F7A0402BC /* RDEPUBParser.swift in Sources */, - 542566132B2CE691EA2226BE4CCC313A /* RDEPUBParser+Archive.swift in Sources */, - B0075EE1F2539980DC68350A92C8F464 /* RDEPUBParser+Package.swift in Sources */, - BDED6C43665A64B2F3A487526F317E07 /* RDEPUBParser+ReadingProfile.swift in Sources */, - 66D5B656A033F00ECD29B7CA01120166 /* RDEPUBParser+Resources.swift in Sources */, - 35339CEE078C68227605E3F5DA550ADD /* RDEPUBParser+TOC.swift in Sources */, - A87ECC764B3058BD18F068F5235C0409 /* RDEPUBPreferences.swift in Sources */, - FFE7975D2961B9A306B6BB6831C2C8B4 /* RDEPUBPresentationRuntime.swift in Sources */, - 1C03A62B014AC6A2A890F996F76271C9 /* RDEPUBPublication.swift in Sources */, - A0BF95B1A71DCE42E810D983687BB7F3 /* RDEPUBReaderAnnotationCoordinator.swift in Sources */, - E233331C5792C8C79E1C31F0617F96A0 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */, - B5DDFE1A90163715B0E93714052162F0 /* RDEPUBReaderBottomToolView.swift in Sources */, - A7D06BA48ADC3D9B552018F7571D2E78 /* RDEPUBReaderChapterListController.swift in Sources */, - 745C41558A0E86F1EE7C1C7D15180C06 /* RDEPUBReaderChromeCoordinator.swift in Sources */, - EA2781B628D5C588BD13FF68B8EB4F67 /* RDEPUBReaderConfiguration.swift in Sources */, - A85A3014D81A83761428B0F3A13153DE /* RDEPUBReaderContext.swift in Sources */, - 4D62C2EC64541CC90BDBA431B9099C85 /* RDEPUBReaderController.swift in Sources */, - 34AA42EA526694A33971418DA2B5F8B7 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */, - FD26AB576144C8A2678BBFB213E17E7C /* RDEPUBReaderController+ContentDelegates.swift in Sources */, - C256454C354207C9934BF9D8CEE7DC17 /* RDEPUBReaderController+DataSource.swift in Sources */, - CD07B6D83A3EE35C403CA18660E3DE87 /* RDEPUBReaderController+ExternalLinks.swift in Sources */, - B6E39D7922E559EA9F6C452B0DEFA2ED /* RDEPUBReaderController+LocationResolution.swift in Sources */, - 63A6EA2C3E8FB233F7DCD42AC33F38C5 /* RDEPUBReaderController+PublicAPI.swift in Sources */, - 50A6C85899890D44BBB56FEE3F696D25 /* RDEPUBReaderController+RenderSupport.swift in Sources */, - EB65ABC75FDB00A44AB0A4B8734EEA66 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */, - FB73803F328A3E28764797436C90B0B1 /* RDEPUBReaderController+TableOfContents.swift in Sources */, - 1FA4D34922ED28BE3052D53730D94A37 /* RDEPUBReaderDelegate.swift in Sources */, - 7AB9F2AE594BD802C76BBA4980E19705 /* RDEPUBReaderDependencies.swift in Sources */, - 944B8F27F21C924747CCBCBC74517808 /* RDEPUBReaderEnvironment.swift in Sources */, - DF1C221DC22E91A3950948E08E0202F7 /* RDEPUBReaderHighlightsViewController.swift in Sources */, - 9EDEF94D4426C164FE9A2E2FA36ADC37 /* RDEPUBReaderLoadCoordinator.swift in Sources */, - 967B256ED1342620B974B79ECB14CB02 /* RDEPUBReaderLocationCoordinator.swift in Sources */, - E1030FA1F1FD28A346E9B0CDE79A3C9E /* RDEPUBReaderPaginationCoordinator.swift in Sources */, - B52761359F11726D1B0FA2A132CEC212 /* RDEPUBReaderPersistence.swift in Sources */, - E6C10023AEAEF85E7202D0BCD43E847E /* RDEPUBReaderRuntime.swift in Sources */, - 5E8F2E42C4BE9511BEE24EA17234F30C /* RDEPUBReaderSearchBarView.swift in Sources */, - DB38823D05F9EAA6515ED753C076068E /* RDEPUBReaderSearchCoordinator.swift in Sources */, - F3BF4C42ECB685ABA17AFFF436AA8DD6 /* RDEPUBReaderServices.swift in Sources */, - 2CA6F4C17909548E2D91BF71AEE0BB84 /* RDEPUBReaderSettings.swift in Sources */, - 721100E1D82608E783B22C3E07699E7C /* RDEPUBReaderSettingsViewController.swift in Sources */, - 8C58B34D8DE85D12F107B697D7CBDD33 /* RDEPUBReaderState.swift in Sources */, - 21ACC31FEB25D8E00B1CE1017A180716 /* RDEPUBReaderTableOfContentsItem.swift in Sources */, - 51A4A5B6D8E9B59D8D544015275F3F37 /* RDEPUBReaderTheme.swift in Sources */, - 9FA66A3511705E7CF26F5F37F507875C /* RDEPUBReaderToolView.swift in Sources */, - 0832443C5D3179680E63DE42E41E4A7C /* RDEPUBReaderTopToolView.swift in Sources */, - 840CB4AD602D707E2C2C4FFB41556248 /* RDEPUBReaderUIState.swift in Sources */, - 04C7133BF47F70BF28F6043EB9939B04 /* RDEPUBReaderViewportMonitor.swift in Sources */, - 60EBB36339ECD67F5A6DFC402A44E701 /* RDEPUBReadingLocationModels.swift in Sources */, - D6406B0E25B3462D230EB0498DD20AF3 /* RDEPUBReadingSession.swift in Sources */, - 6873031C87E6AAD6EEBA809E2296896E /* RDEPUBRenderDiagnosticsCollector.swift in Sources */, - 57A35BC904190F50EB5D281C5D033AF3 /* RDEPUBRenderRequest.swift in Sources */, - FA9A0F5DA5D75BA58E5FD351AEBF77C7 /* RDEPUBResourceResolver.swift in Sources */, - EDCD76D407E7BE7D66F1D02E1D5524EE /* RDEPUBResourceURLSchemeHandler.swift in Sources */, - 9B7D4D2064D42DC7649C5A9B0A90DBAD /* RDEPUBRuntimeChapter.swift in Sources */, - 81086388CAAFC08F99A6CFBC54E612FC /* RDEPUBRuntimePageCount.swift in Sources */, - DE2477E7AF48AC9600DCB208D5C8523E /* RDEPUBSafeArea.swift in Sources */, - 6D36BACFE1C53D5E5AF5F89EC910AB57 /* RDEPUBSearchEngine.swift in Sources */, - 020906DE38AFEC75CD6DC1402F8E97BC /* RDEPUBSearchModels.swift in Sources */, - CDBE585CA5FFEE29F992BD700CF11D79 /* RDEPUBSelectionLoupeView.swift in Sources */, - CC5C8A39AEFABC007F0ED9DEECDE7AC1 /* RDEPUBSelectionOverlayView.swift in Sources */, - 522D2B339FE7E19ED927F82150C55BF9 /* RDEPUBSelectionState.swift in Sources */, - FAB5E8C85816C2A4151BA0E6AC853D16 /* RDEPUBSemanticMarkerInjector.swift in Sources */, - 7CDBBCF9CC1552D3AB0B095A1AA6FB5A /* RDEPUBSettingsFlipAutomation.swift in Sources */, - E03787083A7F95A436360351495FCC9F /* RDEPUBStyleCompatibilityModels.swift in Sources */, - 8F4BA91E37DA06CD0BBEDF9D0C5D9150 /* RDEPUBStyleSheetBuilder.swift in Sources */, - E33C2D168A4E6B3DA75FD2BE92D978BF /* RDEPUBStyleSheetComposer.swift in Sources */, - 4D8FF0E0C042C10B4B68DCCFC056ED73 /* RDEPUBTextAnchor.swift in Sources */, - EF8EF713C7DBBC114AF00BB54688B886 /* RDEPUBTextAnnotationOverlay.swift in Sources */, - 2F5394C897D37AED4DC2ED00D180A07D /* RDEPUBTextBookBuilder.swift in Sources */, - 30EA52B5D49A8820D1AE92AFA61F7C63 /* RDEPUBTextBookCache.swift in Sources */, - 0D78DEE22F5E034C9DDC5856C0E4F015 /* RDEPUBTextBookModels.swift in Sources */, - 4A9FBB237C4C47B9D35706FB689791A0 /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */, - 1BCB6744E9F316DA47E1304849DCFDE8 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */, - DA02AE37173CA807657B44A7C20604E7 /* RDEPUBTextContentView.swift in Sources */, - 8A9ECE2E8CD637210EAEACA2930CB20B /* RDEPUBTextIndexTable.swift in Sources */, - D4F073EFF3AB9902816591F4D92CD9FC /* RDEPUBTextLayouter.swift in Sources */, - 6F0024AAF00C39496470ABDA6311FC34 /* RDEPUBTextLayoutFrame.swift in Sources */, - 9C7780A496D623BBD48A87117EE07140 /* RDEPUBTextPageBoundaryValidator.swift in Sources */, - 884C57253DC39B361B9D821059BBCB0B /* RDEPUBTextPageDecorationView.swift in Sources */, - 5A76BA537A8E9769097E716036D5DD9D /* RDEPUBTextPageRenderView.swift in Sources */, - 0E73D6B61A31F648C93F2820F8601D4A /* RDEPUBTextPageVerticalJustifier.swift in Sources */, - 72BDDBEFDA5D6E7FC270C312B1BCC4DE /* RDEPUBTextPaginationInterfaces.swift in Sources */, - C72498A0EFC6C52DAB148D7F89F91A5E /* RDEPUBTextPaginationSupport.swift in Sources */, - AA9ACAE70A4CC306428EDC279545AC17 /* RDEPUBTextPerformanceSampler.swift in Sources */, - 041E5C2F1CCF83406447722A174B6D86 /* RDEPUBTextPositionConverter.swift in Sources */, - 911A30689EEF1FAD44FC96D757920A6E /* RDEPUBTextRenderer.swift in Sources */, - 033A34848F829FA31371E93D1AB4827F /* RDEPUBTextRendererSupport.swift in Sources */, - 8A6DB3C30CAA5C433EB4A6964D59411B /* RDEPUBTextSearchEngine.swift in Sources */, - 8B98912F325274D04D610B3FAE7782B4 /* RDEPUBTextSelectionController.swift in Sources */, - F487E4572BA5F4C757EB6D6C50320BA7 /* RDEPUBTypesettingPipeline.swift in Sources */, - D5CF2E24EF14B57D2168EB7C44C32145 /* RDEPUBViewportTypes.swift in Sources */, - B9A95DEFECB1E89F36E3F43DED119DF8 /* RDEPUBWebContentView.swift in Sources */, - B63625809A957025082B4033C7442289 /* RDEPUBWebDecorationOverlayView.swift in Sources */, - D6735070EA7803B9CD44F3B6319A3044 /* RDEPUBWebView.swift in Sources */, - B7A0FE3182F8FA37D3DADBF317BE7D6F /* RDEPUBWebView+Configuration.swift in Sources */, - 2762C38F0DCA2C6027557ACD3444787E /* RDEPUBWebView+FixedLayout.swift in Sources */, - B4AF90C620D7D151BFE11E949374980B /* RDEPUBWebView+JavaScriptBridge.swift in Sources */, - A15EA1D45DE28B8883D692ED66DC13DD /* RDEPUBWebView+Reflowable.swift in Sources */, - 46F411369949108E7AEEFD1936818F80 /* RDEPUBWebView+Search.swift in Sources */, - B11CE7833B93D2AE5CDD0F71DAFF5012 /* RDEPUBWebViewDebug.swift in Sources */, - 1A328AD562FD39C0FE98473621E7184B /* RDPlainTextBookBuilder.swift in Sources */, - CC7DDA979B2F4CDAE40A3EFF77026910 /* RDReaderContentCell.swift in Sources */, - FFD2CD894C5599DB9D60FEFFAE1F9395 /* RDReaderFlowLayout.swift in Sources */, - 52736993BE6C7C4DD93C81586B3E2461 /* RDReaderGestureController.swift in Sources */, - 66C5B1E7A94EFD608EA77088B598164E /* RDReaderPageChildViewController.swift in Sources */, - 1D2A8818B6C94705205AEDD2CD0F505A /* RDReaderPagingController.swift in Sources */, - CC2144FB1A6B27AC54FC4DAAD06AB050 /* RDReaderPreloadController.swift in Sources */, - ABA19D640CF2E239820BFCC47CF6CBD4 /* RDReaderSpreadResolver.swift in Sources */, - F4C56CA89B50670081B742F4715AC9DD /* RDReaderTapRegionHandler.swift in Sources */, - 9D682703886BFAD8E7BCD0FE2EB1F78E /* RDReaderView.swift in Sources */, - 73D0271B76B6262C2300B3C7DB163DF2 /* RDReaderView+CollectionView.swift in Sources */, - 14A0B98D226AA828CC7598D92B1BA29E /* RDReaderView+ContentAccess.swift in Sources */, - 828F623C86C2A80E235B2134A0CCA664 /* RDReaderView+PageCurl.swift in Sources */, - 9F1B5F23AF8841B11D008BE9356D74C1 /* RDReaderView+ToolView.swift in Sources */, - A87317751C202D7AD8713AC8B31BFE16 /* RDReaderView-dummy.m in Sources */, - 6DB3139A32F959E5660143F92B1B9E02 /* RDReaderViewProtocols.swift in Sources */, - 3A42CEAFF80430B8C60ED7DA64846CB3 /* RDURLReaderController.swift in Sources */, - 276E9AA59EB63396C8378BBC950CE291 /* String+RDEPUB.swift in Sources */, - 3F8F4CE78B1B0B3E8343E7F91ACCE444 /* UIColor+RDEPUB.swift in Sources */, - E4E1ACD032CFBA1EA80A4E5DD8F68848 /* UIColor+RDEPUBHex.swift in Sources */, - ); - runOnlyForDeploymentPostprocessing = 0; - }; - 69A5EC197D7DEE159385371D2388DE1E /* Sources */ = { + 472A5E64903370EAB6901860800ED24C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; - 786564399E053D5FC4476109DEBBFEE0 /* Sources */ = { + 53470AA1E22D75D11969ABA65F897C7E /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( - CE4F884B81F8F1C6E6D283768A102802 /* Archive.swift in Sources */, - F41BEDF611247EC8338D9FE8B7E2BA00 /* Archive+BackingConfiguration.swift in Sources */, - A6082878B9CCD86C68D33404E50F9C69 /* Archive+Deprecated.swift in Sources */, - 42775236B82754FEF09932222F484EB1 /* Archive+Helpers.swift in Sources */, - 777A8C7B4DFA0A72A6E20A1E76D213F3 /* Archive+MemoryFile.swift in Sources */, - 6A1ED4852B10607E6D1A8DB0C78848F5 /* Archive+Progress.swift in Sources */, - E82E865A9535983CF0E322C3A120A106 /* Archive+Reading.swift in Sources */, - 194C90037DA8585AA0251509D2E25C1C /* Archive+ReadingDeprecated.swift in Sources */, - D82B8E3CA04192590999A80AE31A0134 /* Archive+Writing.swift in Sources */, - A6B7BEBBE39A4D2CCA975B69A8FF385D /* Archive+WritingDeprecated.swift in Sources */, - F57FC499CF50E2C66E28E56B28ABCFC1 /* Archive+ZIP64.swift in Sources */, - F859E971794D18B4596AACB619C9FC0E /* Data+Compression.swift in Sources */, - 857E62043F8CC55F9663CFDE0AEC96ED /* Data+CompressionDeprecated.swift in Sources */, - 598067C0EF7A61AC9002DD34CC503031 /* Data+Serialization.swift in Sources */, - FDD70B9210012C399DDEAC1ACEF2B2AA /* Date+ZIP.swift in Sources */, - DC39285E80B6FB62F4F0CF4DAD71DD70 /* Entry.swift in Sources */, - 38E75F23ECF239CE35A5687C44F85244 /* Entry+Serialization.swift in Sources */, - F896051055B1D335F9DCBAF12528D17F /* Entry+ZIP64.swift in Sources */, - 61E0C3F772839BE1391A3EC12052D867 /* FileManager+ZIP.swift in Sources */, - A58C42A9E07E7FE0F012C72C8875BE70 /* FileManager+ZIPDeprecated.swift in Sources */, - 0CD65B52297926BF6B22245BB401FE69 /* URL+ZIP.swift in Sources */, - CA823FD71C0113C96F9BED13E98817A8 /* ZIPFoundation-dummy.m in Sources */, + 15F9DC2A3DBAC3293A93997078E721DE /* Archive.swift in Sources */, + DEF9A0575535DB791E2C22F10A3B0762 /* Archive+BackingConfiguration.swift in Sources */, + A133DADCC4B6BC6D0C037DAC0A930B3F /* Archive+Deprecated.swift in Sources */, + D9605D2EA0DFC00D02A4DF6BDACB3537 /* Archive+Helpers.swift in Sources */, + 6A340ECFF14E109203929637D3A312F9 /* Archive+MemoryFile.swift in Sources */, + F4B3D5E720E9ECEF3813E3F20392725F /* Archive+Progress.swift in Sources */, + E2743CECD77E9F0CBBBBE0208C06A4F5 /* Archive+Reading.swift in Sources */, + FCD556E1A22809B004BBB7722C5F0D8E /* Archive+ReadingDeprecated.swift in Sources */, + C09D441F47DC9EA1B655BFB0E2B4C042 /* Archive+Writing.swift in Sources */, + F01B5B179687BFD9F9926BBDB6ACF96A /* Archive+WritingDeprecated.swift in Sources */, + AFF25E38A6547A1360F0F1C7A13A4E16 /* Archive+ZIP64.swift in Sources */, + E1375BF50702AF2715E3D6B128553DBB /* Data+Compression.swift in Sources */, + 23CD207519C6B07EC5537C7D524A15E0 /* Data+CompressionDeprecated.swift in Sources */, + 3F488BC7AFBBB6998B9E06EB01D3CD8E /* Data+Serialization.swift in Sources */, + EAF13D2953FCD72F195E9570B52E3912 /* Date+ZIP.swift in Sources */, + 6A041B02022A6CE792906DFF30FC65BD /* Entry.swift in Sources */, + A48D92059E665D572F4752713D33D8F7 /* Entry+Serialization.swift in Sources */, + C2F559074FF9F0354C733F8B175B91C8 /* Entry+ZIP64.swift in Sources */, + 2DF99A7F490B72BAF469D0D13048C36B /* FileManager+ZIP.swift in Sources */, + 2C20B4A46EB9E16AE6DDFF6B330E3BDA /* FileManager+ZIPDeprecated.swift in Sources */, + FF459F7B0C40924DB0D1F4AE703C2133 /* URL+ZIP.swift in Sources */, + 4D42C6B8EA5DE066F6BAC45AC8679CE6 /* ZIPFoundation-dummy.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; - 9D7747E4EF4AD08D46E0A0F1EE4FBF71 /* Sources */ = { + 5399BA0EDBD025ECAEB298D6CF183356 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( ); runOnlyForDeploymentPostprocessing = 0; }; + 6AAF679C4EE4227FBB3FD78048647B8B /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + ); + runOnlyForDeploymentPostprocessing = 0; + }; + AB8B92BE0F0C87AA0022B19A1F25C7AD /* Sources */ = { + isa = PBXSourcesBuildPhase; + buildActionMask = 2147483647; + files = ( + 0942EF9F626D8448F7B4BEF9CEB112F1 /* RDEPUBAnnotationModels.swift in Sources */, + CBCADFEE601640B09A1F70DAE191A882 /* RDEPUBAssetRepository.swift in Sources */, + 3E6FCEC88EF3618C15CCFDF85714F46A /* RDEPUBAttachmentNormalizer.swift in Sources */, + D774B677F70DE8690AEE544D300325FC /* RDEPUBAttachmentTooltipOverlayView.swift in Sources */, + 4996BB43278BB26CE542E46CD76C5792 /* RDEPUBAttachmentTooltipView.swift in Sources */, + E4088DFB00F106A3BEA476A1570497B8 /* RDEPUBBackgroundCoverageStore.swift in Sources */, + 37658AA02ED801B0F951BB353FD64478 /* RDEPUBBackgroundPriorityPolicy.swift in Sources */, + 8704620DCD44CD027D5566BB69576C20 /* RDEPUBBackgroundTrace.swift in Sources */, + 2BB4DB83A4971988729C48F6A97D9F7A /* RDEPUBBookPageMap.swift in Sources */, + 0E1CE5455B59D5A5B2E2A05A09CA06B5 /* RDEPUBBuildDiagnosticsReporter.swift in Sources */, + 1F485583C73D3833F600377BD756AB48 /* RDEPUBCFI.swift in Sources */, + 530A22FD0D34843C3A2C842C4012E33C /* RDEPUBCFICompatibility.swift in Sources */, + AF7CACF0474B9FE3D9172AB298CDA425 /* RDEPUBCFIDOMPathBuilder.swift in Sources */, + CE1AD32EC47B914878C96D72C1DF0407 /* RDEPUBCFIError.swift in Sources */, + 4A2BB9012F17EF067B8CFFDF6F6911EA /* RDEPUBCFIGenerator.swift in Sources */, + B226D57B4C6D260E22B067D428F6DCE9 /* RDEPUBCFIMap.swift in Sources */, + FCD460BA901F28C1098FE3E601D67E06 /* RDEPUBCFIMarkerInjector.swift in Sources */, + 8A927D68F7759D6828B7A75ED7A4E313 /* RDEPUBCFIParser.swift in Sources */, + 33A618B45C6B0CE963A1E86B40FB1BC1 /* RDEPUBCFIPath.swift in Sources */, + 0CEE2FF08EBBEDB2F8753C1C754DC5B1 /* RDEPUBCFIRange.swift in Sources */, + 71B76C3166DE0C5DF235A0C22EFEDE59 /* RDEPUBCFIRecoveryEngine.swift in Sources */, + 66F01F1C18E107408429B32EFB9B2A8E /* RDEPUBCFIResolver.swift in Sources */, + 2E179DBB9513ED69284AD20B7E867007 /* RDEPUBCFISerializer.swift in Sources */, + F044036C609628883322321D708E6A8B /* RDEPUBCFITextAssertion.swift in Sources */, + 07F8549C519E0712D1373654C4522D3B /* RDEPUBCFIUtilities.swift in Sources */, + E48E862AD8952D3C1C6873484996A37E /* RDEPUBChapterCacheKey.swift in Sources */, + 7E9E05AD2B6728C1D299F07941522290 /* RDEPUBChapterData.swift in Sources */, + E8401B395AE4914B5EE2D0C09CDCF841 /* RDEPUBChapterDataCache.swift in Sources */, + D5D4C9E7AF6B052B16C49CFE42C3256D /* RDEPUBChapterDisplayContentCache.swift in Sources */, + 2C446ACD6B39988DAE88DB686C41940D /* RDEPUBChapterLoader.swift in Sources */, + 054D18D9951E8B07F33EF4D35BAE26F6 /* RDEPUBChapterLocation.swift in Sources */, + 793A9A3FCA9C44D959556F91F9706CB5 /* RDEPUBChapterOffsetMap.swift in Sources */, + 7A7FF7B976849107A4083C537537FDD9 /* RDEPUBChapterPageCounter.swift in Sources */, + 66F23FCBD9ED7712B6CFA0AE5472B6BA /* RDEPUBChapterRuntimeStore.swift in Sources */, + 43A7FE65277A8D860FEC743C2E7F2627 /* RDEPUBChapterSummaryDiskCache.swift in Sources */, + 28BA0924E7AB999F2E9E7676AE0B176C /* RDEPUBChapterTailNormalizer.swift in Sources */, + FCD2420C80CC980EEED544B1BF12A5E1 /* RDEPUBChapterWarmupOrchestrator.swift in Sources */, + 018DF9B10C77B0F9AB03693CB8E9FA7E /* RDEPUBCoreTextPageFrameFactory.swift in Sources */, + 3F0E1A921788D7E9621DD76499F94BE0 /* RDEPUBCSSCompatibilityLayer.swift in Sources */, + 783581535949175DA2E2C1D2D907E48C /* RDEPUBDarkImageAdjuster.swift in Sources */, + 83336BED035B870BBC5CE6C13A4A5676 /* RDEPUBDTCoreTextRenderer.swift in Sources */, + 1B2004F66EE1D24FEDEB4CF2B82E1E6B /* RDEPUBFixedLayoutTemplate.swift in Sources */, + 9AB60E5308E49D98017B2CF7F9F00CA5 /* RDEPUBFontFallbackResolver.swift in Sources */, + A7C4CDACFC79ED3C0CC24B518CEEB5D5 /* RDEPUBFontNormalizer.swift in Sources */, + 23F5519DAB7AF448277328F67DF8427B /* RDEPUBFragmentMarkerInjector.swift in Sources */, + 47D84DA606F549F8FAF0F034F0815BC2 /* RDEPUBHTMLNormalizer.swift in Sources */, + 3F9BE434EB1085D1F90B83DB60FD00C5 /* RDEPUBImageViewController.swift in Sources */, + E7BBD037775F4E4FC8C5F5B2C1F6DE74 /* RDEPUBImageViewerCoordinator.swift in Sources */, + 7F2BA0E2BCB6D4613A6A0F79CD8A0341 /* RDEPUBJavaScriptBridge.swift in Sources */, + AE3D20CC98B01ED32FF4508114769A82 /* RDEPUBJumpSession.swift in Sources */, + 5E0945043D7BD6A600ECCC3A78A26709 /* RDEPUBMemoryProbe.swift in Sources */, + 344C8C38953CD3ABBB5CEE004D748DBE /* RDEPUBMetadataParseCancellationController.swift in Sources */, + 65D333231372A013B720415537BCFBC9 /* RDEPUBMetadataParseWorker.swift in Sources */, + C5F367B6EC933668EAD90AB7B6394AE6 /* RDEPUBModels.swift in Sources */, + 435BB5138F3187F4BF5ECB65AA61A12F /* RDEPUBNavigatorLayoutContext.swift in Sources */, + 4141E28F9EF7A7626ECEA23E54C1437E /* RDEPUBNoteDetector.swift in Sources */, + 36C829C21BAD67EBA806B013689A8B8A /* RDEPUBNoteModels.swift in Sources */, + CCB0E720D8A29B7877E15196ED3F1712 /* RDEPUBNotePopupCoordinator.swift in Sources */, + B32BBAE5F349A30AB57236C3CC062A81 /* RDEPUBNotePopupViewController.swift in Sources */, + 4BC9532587020653004B491C4651C1B8 /* RDEPUBNoteResolver.swift in Sources */, + D35C453CE2934D63A534C3DF14DB1193 /* RDEPUBPageBreakPolicy.swift in Sources */, + 054178AB372DF8BBB80B17504A4CFF8F /* RDEPUBPageCountCache.swift in Sources */, + 3DD75C9E109518EC17CD1E6374CCAAA5 /* RDEPUBPageInteractionController.swift in Sources */, + 0A0C40F35AA05AB2FA05621AD6620164 /* RDEPUBPageLayoutSnapshot.swift in Sources */, + 5D83C7A8F70D08CDDFD2BC1B716CD3EF /* RDEPUBPageMapReconciliationCoordinator.swift in Sources */, + 11D18376068FF7361548016615E5D26A /* RDEPUBPageResolver.swift in Sources */, + C9E30ED66CBBE352C35305AC6E1A5F2A /* RDEPUBPaginationCacheCoordinator.swift in Sources */, + 7F99F1B51CCF451AE85BA8088FEB4519 /* RDEPUBPaginationModels.swift in Sources */, + 28D5C5DB7C2755A625FDD6446B248312 /* RDEPUBPaginator.swift in Sources */, + FBDD7D73613BCCAE82217DEDC25F3827 /* RDEPUBParser.swift in Sources */, + 14AAB86A7399B98D39121B49EEB90065 /* RDEPUBParser+Archive.swift in Sources */, + 43E89A6EF34E4AB7DA97425018672890 /* RDEPUBParser+Package.swift in Sources */, + D095B75FDCDDCF2603F89B00FE810F29 /* RDEPUBParser+ReadingProfile.swift in Sources */, + 757A101F60F482793C65B07F301FC009 /* RDEPUBParser+Resources.swift in Sources */, + 2585104BFDD35B5513F93B5D4933B620 /* RDEPUBParser+TOC.swift in Sources */, + EB30F253217E1FEF29C352010550227C /* RDEPUBPreferences.swift in Sources */, + 738FAFC22719BC9A70AFBD0D3B05C79A /* RDEPUBPresentationRuntime.swift in Sources */, + 38983B574644AE41804DFFBE96A3F6F3 /* RDEPUBPublication.swift in Sources */, + D4978BF32F70F56DC0336ABA26D5B43B /* RDEPUBReaderAnnotationCoordinator.swift in Sources */, + B73D7A2503F92B5935924A7E3E370901 /* RDEPUBReaderAssemblyCoordinator.swift in Sources */, + E847811FA489F675A69816A24E89C7C0 /* RDEPUBReaderBottomToolView.swift in Sources */, + C3612EECF20AE2BC8C1B84C468A7EF51 /* RDEPUBReaderChapterListController.swift in Sources */, + 2B8CD3733FF7B0369B0D2C1CE69118DC /* RDEPUBReaderChromeCoordinator.swift in Sources */, + 1FA1F998447124DD53EAEA05DCFAFF1C /* RDEPUBReaderConfiguration.swift in Sources */, + 35EC832D6E6042D539F5CE9ACDEAB875 /* RDEPUBReaderContext.swift in Sources */, + 5B38B217D713ACA39F82D2CB1CC38F6F /* RDEPUBReaderController.swift in Sources */, + 80E95C784BB3D4FE6A6C0B71AE11F9B2 /* RDEPUBReaderController+AttachmentTooltip.swift in Sources */, + 7217CE578FE4452B04FDB29E272BAA21 /* RDEPUBReaderController+ContentDelegates.swift in Sources */, + E398FC9914DF2A5088DB753AD361A4AC /* RDEPUBReaderController+DataSource.swift in Sources */, + 3A699A68129DB8D0475C3B426B54903D /* RDEPUBReaderController+ExternalLinks.swift in Sources */, + B94583A5C6CEB6C22B65B1572E3A1B9A /* RDEPUBReaderController+LocationResolution.swift in Sources */, + C2AD0159F00DB585A1684EB0BCBFE610 /* RDEPUBReaderController+PublicAPI.swift in Sources */, + BD1601EB1923096C0D1E60D9BD1BD2DE /* RDEPUBReaderController+RenderSupport.swift in Sources */, + FDE567E1D200A599BDB6090ED4C8E577 /* RDEPUBReaderController+RuntimeBridge.swift in Sources */, + 067FB980EC11563DABA6377BA323F041 /* RDEPUBReaderController+TableOfContents.swift in Sources */, + 73C0E664C70F48D94EB4A95026909708 /* RDEPUBReaderDelegate.swift in Sources */, + 0CAD6415F436E49FB2DEB2CBEC0A3ED8 /* RDEPUBReaderDependencies.swift in Sources */, + D1AD11465484A539562B97EACA5A7294 /* RDEPUBReaderEnvironment.swift in Sources */, + 5E518CA4C1BA58E3B88683FD04722D5D /* RDEPUBReaderHighlightsViewController.swift in Sources */, + 1963E9B2831753783ECAC37942D73D6A /* RDEPUBReaderLoadCoordinator.swift in Sources */, + AD9C79AE20497F6795AD6AB0826DD3A7 /* RDEPUBReaderLocationCoordinator.swift in Sources */, + 2021D5E8FEE83065E27E6D0003A84F34 /* RDEPUBReaderPaginationCoordinator.swift in Sources */, + 2605545B3BDD0B4D316669BD3BC4DA7D /* RDEPUBReaderPersistence.swift in Sources */, + DC24B5B7425A85CAA327121EFC13F7A2 /* RDEPUBReaderRuntime.swift in Sources */, + 6E5FC40818F90D13C4715DC82CAA05D0 /* RDEPUBReaderSearchBarView.swift in Sources */, + 2F0A11C3ED02F7E7C3C4982DE5B6CDA3 /* RDEPUBReaderSearchCoordinator.swift in Sources */, + 182B6A0E130F7AF8D1C8FC02BB985B28 /* RDEPUBReaderServices.swift in Sources */, + BDFDDC4A48A5FACFBC1DC1CDE1350357 /* RDEPUBReaderSettings.swift in Sources */, + F1CDC4F8B2FA28E00CBD282DFA72D49C /* RDEPUBReaderSettingsViewController.swift in Sources */, + FB4199352AAC811E9BC4FEBAEFDBE66C /* RDEPUBReaderState.swift in Sources */, + AAF0A60FD7C1F632134A65AC34A37F93 /* RDEPUBReaderTableOfContentsItem.swift in Sources */, + 6F3D6640A523A3CDAE5042B420839D06 /* RDEPUBReaderTheme.swift in Sources */, + C5DE018B3EBA50BC4F9D87EB03F810A4 /* RDEPUBReaderToolView.swift in Sources */, + 44AB3853424577251B26484683243528 /* RDEPUBReaderTopToolView.swift in Sources */, + 6B4EA5315A9E5381ADB2792C43FEF71C /* RDEPUBReaderUIState.swift in Sources */, + 4DB471E8F49562EBC4E384451DF8657F /* RDEPUBReaderViewportMonitor.swift in Sources */, + E0ACC692A6E030A3BC76B4C463FC5633 /* RDEPUBReadingLocationModels.swift in Sources */, + 369FD67C7489AC14165FDB7096822ECC /* RDEPUBReadingSession.swift in Sources */, + 3E27F00334D3044C4DF18F5F9710EDB8 /* RDEPUBRenderDiagnosticsCollector.swift in Sources */, + 5BFB0AD88ABADB0492E6507292DC48FB /* RDEPUBRenderRequest.swift in Sources */, + C3295FC9C627664107C0D3DD41938EBA /* RDEPUBResourceResolver.swift in Sources */, + 0B94DCFED4A20BC2BC258B0A7AD84EE7 /* RDEPUBResourceURLSchemeHandler.swift in Sources */, + D8C46305AAB14F8F5064D519B029AA67 /* RDEPUBRuntimeChapter.swift in Sources */, + E90D43AA0AD458CB37C055A739FC7F45 /* RDEPUBRuntimePageCount.swift in Sources */, + 9305755E8D8376D85CE959EA84EA38B0 /* RDEPUBSafeArea.swift in Sources */, + 2CB00C61073E96CBC0EB977B756E552B /* RDEPUBSearchEngine.swift in Sources */, + A695F716FD1DFA3CAE43F52135ACDB66 /* RDEPUBSearchModels.swift in Sources */, + C2EAD6705E64932D7957A88F9B85708C /* RDEPUBSelectionLoupeView.swift in Sources */, + 0D90E5A76994C8CD2C68A5728CD7A1CA /* RDEPUBSelectionOverlayView.swift in Sources */, + 087551FB17CA91E8126B443D1BB2DB57 /* RDEPUBSelectionState.swift in Sources */, + 6A9D5B2D485B78E12A14EE0A6543D169 /* RDEPUBSemanticMarkerInjector.swift in Sources */, + C48915AC691D47F3880D347B775C403C /* RDEPUBSettingsFlipAutomation.swift in Sources */, + B8802F744D06EF02E7DBB6151F874688 /* RDEPUBStyleCompatibilityModels.swift in Sources */, + DA79394BEF363C93BA15CBB18882387F /* RDEPUBStyleSheetBuilder.swift in Sources */, + 4AA63EFA61156258C6E631DB9A17741C /* RDEPUBStyleSheetComposer.swift in Sources */, + 22000F5527C48C68944C4F1758E2A069 /* RDEPUBTextAnchor.swift in Sources */, + B6A555BBEB8B42FFCE02D75862378B4E /* RDEPUBTextAnnotationOverlay.swift in Sources */, + 7171BDF42DA8008320D1AC7E7A8FEB05 /* RDEPUBTextBookBuilder.swift in Sources */, + D5B7E7EE50571CDD4CC29DC213B484D1 /* RDEPUBTextBookCache.swift in Sources */, + 763E0AE4634F863DA80C723AE8259806 /* RDEPUBTextBookModels.swift in Sources */, + 1B671F75188F742245480EC8EB6DE72D /* RDEPUBTextBuildPipelineInterfaces.swift in Sources */, + 8CE17D58D28703A2311C974A430F4319 /* RDEPUBTextContentInteractionCoordinator.swift in Sources */, + 41EB29FA06E55DE88B687C1F7AB4E97E /* RDEPUBTextContentView.swift in Sources */, + 85F3D006BBBB3C4B0D15F76801AE6518 /* RDEPUBTextIndexTable.swift in Sources */, + 547BABC3CDBF7072E6A968A37C4F0B35 /* RDEPUBTextLayouter.swift in Sources */, + 5795281D4176B3A8D936E9361B69BC97 /* RDEPUBTextLayoutFrame.swift in Sources */, + BA7C1EC8FF514D08BB64EC4E9BEFFAC0 /* RDEPUBTextPageBoundaryValidator.swift in Sources */, + 45EF68C719B84025A3AF68DD970F30B7 /* RDEPUBTextPageDecorationView.swift in Sources */, + DC5B3968CF64D52B02A9BEC6E775FDD4 /* RDEPUBTextPageRenderView.swift in Sources */, + 910CF6F57206CE880204D4A3F693885C /* RDEPUBTextPageVerticalJustifier.swift in Sources */, + 467AC26DFF3A13AC921D7D396CA9A208 /* RDEPUBTextPaginationInterfaces.swift in Sources */, + 432AAF1617C092D088B43B9AFD409C59 /* RDEPUBTextPaginationSupport.swift in Sources */, + 9B836CB271EDBE823AC19F08BC0EC625 /* RDEPUBTextPerformanceSampler.swift in Sources */, + B634D426705F479A169E41DAC10D1955 /* RDEPUBTextPositionConverter.swift in Sources */, + 971142A48582899957D6A526F2FB2895 /* RDEPUBTextRenderer.swift in Sources */, + A5F4E73D08B78DC9FC63FF9E71AC5326 /* RDEPUBTextRendererSupport.swift in Sources */, + 518050A548F693F8ADC0CBACB9D1255A /* RDEPUBTextSearchEngine.swift in Sources */, + 0E7CC48F667B0921973CCE39B5C99726 /* RDEPUBTextSelectionController.swift in Sources */, + 31DA191069436C02405F0744A4884295 /* RDEPUBTypesettingPipeline.swift in Sources */, + 995F0E20A1745FECE256E5984C281223 /* RDEPUBViewportTypes.swift in Sources */, + 02ABB9C568A16F8795CFEC2D01BBF067 /* RDEPUBWebContentView.swift in Sources */, + ADB0613F7A7821828D71DE9B36F215A8 /* RDEPUBWebDecorationOverlayView.swift in Sources */, + D05A5FC200F6862A31CBCEE97B4EB3A4 /* RDEPUBWebView.swift in Sources */, + 09C14984907EF0E18430483195615CEF /* RDEPUBWebView+Configuration.swift in Sources */, + 9380666C109F9D0A903C936318A1C818 /* RDEPUBWebView+FixedLayout.swift in Sources */, + 20495C7DE93F1281E83BA8970C67C681 /* RDEPUBWebView+JavaScriptBridge.swift in Sources */, + 35CA4D0B6A010869DC047DFF04A5EA9F /* RDEPUBWebView+Reflowable.swift in Sources */, + BAB70BF6EB8A7F22ED7FAFE0B210D9FF /* RDEPUBWebView+Search.swift in Sources */, + C53F4357A355E1BF6695F05E1021A22B /* RDEPUBWebViewDebug.swift in Sources */, + E1C9EA6A9255ED661104908CE5FDD37F /* RDPlainTextBookBuilder.swift in Sources */, + 7E0D7B35BB0767623CC6BA41C219E988 /* RDReaderContentCell.swift in Sources */, + 6A4933033D272D4B250818DA22556834 /* RDReaderFlowLayout.swift in Sources */, + CB26464A5790BA24495D6BEEB5BA4216 /* RDReaderGestureController.swift in Sources */, + E2C8F99C0D397CB91F64EE73021E60AA /* RDReaderPageChildViewController.swift in Sources */, + F28C5B831BFD35396E6F45BF65AD1F28 /* RDReaderPagingController.swift in Sources */, + 9EB0170E3B12D184C78EEF4602A65309 /* RDReaderPreloadController.swift in Sources */, + 3C6422E07A5FD5F61EE7C8E52CD81D9E /* RDReaderSpreadResolver.swift in Sources */, + F4B2FA0C6A5D681F76C6C6F41F06D437 /* RDReaderTapRegionHandler.swift in Sources */, + 669A276238BD2AC9A9CD49A1C4E1359D /* RDReaderView.swift in Sources */, + E1D7C3ECB222249108F6A0C3DC8B71D1 /* RDReaderView+CollectionView.swift in Sources */, + 72F720BE51962FC458B7A77B5635EFCF /* RDReaderView+ContentAccess.swift in Sources */, + 9A2E0E076EA566C56A230AFED489353C /* RDReaderView+PageCurl.swift in Sources */, + 4EFBD030D3E1FAB489E148E673ABEECE /* RDReaderView+ToolView.swift in Sources */, + 218F054EC487B66920A6873618AE3482 /* RDReaderView-dummy.m in Sources */, + C21094B9FCEAF6D8D94B2575C5D0C47D /* RDReaderViewProtocols.swift in Sources */, + E735D9E4200242DD1A20A21BD5DE96E8 /* RDURLReaderController.swift in Sources */, + D0F01595DA430FF422E4444660C65D66 /* String+RDEPUB.swift in Sources */, + A8C4F1A966FA53FF2BBA7A97EA8E3BCF /* UIColor+RDEPUB.swift in Sources */, + D3821C1D1240C48382C3DC9EE086BFC3 /* UIColor+RDEPUBHex.swift in Sources */, + ); + runOnlyForDeploymentPostprocessing = 0; + }; AF09D5A5B57E781D29EB3CD22A1DE186 /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; @@ -2567,10 +2539,42 @@ ); runOnlyForDeploymentPostprocessing = 0; }; - E87E209F22953FDB1FA30CBD4C105B70 /* Sources */ = { + F5F1FC469BD99BD8FE391C7AA7B69D6C /* Sources */ = { isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = ( + 7EF2739F9A5644F0A33A0BB5FBB847F9 /* DTActivityTitleView.m in Sources */, + 678DD680CD8788AB188780999CD2F36C /* DTAnimatedGIF.m in Sources */, + F0CCACFC44ACC09F51A457F95A5079E4 /* DTBase64Coding.m in Sources */, + 5036A0CF9C43310D7BD87E3F27DB1619 /* DTBlockFunctions.m in Sources */, + C108E606A900A4EE495AE04E08BDEA59 /* DTCoreGraphicsUtils.m in Sources */, + 9C9EEE7111F26FD3BECC39E97B674280 /* DTCustomColoredAccessory.m in Sources */, + 1992A77ADA2B85372C51DE67DE656089 /* DTExtendedFileAttributes.m in Sources */, + EC421506FB12180BE48E4066B67176DD /* DTFolderMonitor.m in Sources */, + 4C583F9619384A0DD676E98122883CFA /* DTFoundation-dummy.m in Sources */, + C8C6CE8DEFF63D9D5FDA9DB100A45DD0 /* DTFoundationConstants.m in Sources */, + 8B998D74A270BB941E76E642DF7636C3 /* DTHTMLParser.m in Sources */, + 50529E178616769202F43EDBAE3E96EC /* DTLog.m in Sources */, + 385F62303058B932DE2C5A7AA7DE61FB /* DTPieProgressIndicator.m in Sources */, + B27621CA258E768A16E5E25A89668C6C /* DTSmartPagingScrollView.m in Sources */, + DC1D4FD92F5860C25B1827B2570C79E4 /* DTTiledLayerWithoutFade.m in Sources */, + BC8E238263BDB456890A5BE8EC82FE09 /* DTVersion.m in Sources */, + A736290F32D0ED7B7EC1268AE1D72154 /* NSArray+DTError.m in Sources */, + 445971F9045D5C639BCD4C361A5D99C4 /* NSData+DTCrypto.m in Sources */, + CE407E1A7424F091BD8CA5AF29F11D1D /* NSDictionary+DTError.m in Sources */, + 525377BAC7A4B942FF37A356DE08FC59 /* NSFileWrapper+DTCopying.m in Sources */, + 1B74EC1BBEE68B9E2F86EC4F589E65EB /* NSMutableArray+DTMoving.m in Sources */, + 3A5B7B0C74B75094BD4013076811A195 /* NSString+DTFormatNumbers.m in Sources */, + 0A6A2B85150D31B0DA6C1154EF75544C /* NSString+DTPaths.m in Sources */, + 3E72C32B4BB24CE2F9241C9336D2F026 /* NSString+DTURLEncoding.m in Sources */, + 2E2E05B3915B792EA3E1012A49C0C4D2 /* NSString+DTUtilities.m in Sources */, + 4C054FC76F0EE7FD9312B9CAA083A9F3 /* NSURL+DTAppLinks.m in Sources */, + B2E8E9B9519C8E8190BD47194D788CE9 /* NSURL+DTComparing.m in Sources */, + 543FE9A0CE7B07A39615125194BEB1ED /* NSURL+DTUnshorten.m in Sources */, + 3CE81197AA8330FD15E1B78CB9C6999F /* UIApplication+DTNetworkActivity.m in Sources */, + 51F9E5819381C5AF4A17E26ADC97F144 /* UIImage+DTFoundation.m in Sources */, + AF9028B73D9C5575E3FCA3CEDC377A21 /* UIScreen+DTFoundation.m in Sources */, + 5CC4CD14F333EA81EFE68B04038276E7 /* UIView+DTFoundation.m in Sources */, ); runOnlyForDeploymentPostprocessing = 0; }; @@ -2646,109 +2650,69 @@ /* End PBXSourcesBuildPhase section */ /* Begin PBXTargetDependency section */ - 1805BE409736183E0B49DFCC39540C5C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "ZIPFoundation-ZIPFoundation_Privacy"; - target = C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */; - targetProxy = 4CE1E333EFC7D126BF846EF5DE95196A /* PBXContainerItemProxy */; - }; - 24052366F14D3992556E6F97AA286A3A /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTFoundation; - target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; - targetProxy = 674A6C9D96CA4E77FB1BCC2935DFFB9B /* PBXContainerItemProxy */; - }; - 4CFED76A0A1A22C8A8FD651F035A784B /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTFoundation; - target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; - targetProxy = 6E4C6A0099934171BD974B9C968C0A63 /* PBXContainerItemProxy */; - }; - 5BBEE4C1588D98D7C94381D276C62D46 /* PBXTargetDependency */ = { + 19907CCC257DD9F92B515448B5A2975C /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = DTCoreText; target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; - targetProxy = 3C5DCECE0CCBBBF11E32FCD89FF41FC4 /* PBXContainerItemProxy */; + targetProxy = A4328450FDA153EAB4BD0783C46E485B /* PBXContainerItemProxy */; }; - ABD8515E56FA7B271D38BF38721AE20C /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = DTCoreText; - target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; - targetProxy = C954E4173D45F863B74E03CA5AD6E923 /* PBXContainerItemProxy */; - }; - AE56B2245E723DA83C8905741493BCE4 /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = F909F14D649B5BB80A2737493D561E58 /* PBXContainerItemProxy */; - }; - D8D6955B3296868715229C88935F151F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = "RDReaderView-RDReaderViewAssets"; - target = AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */; - targetProxy = 0FA9693685F9460B99920356EF985291 /* PBXContainerItemProxy */; - }; - DE39752D3149CB2559D8B208E8202F5F /* PBXTargetDependency */ = { - isa = PBXTargetDependency; - name = ZIPFoundation; - target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; - targetProxy = B93E0318F913C2A3AEC5E3871123DE60 /* PBXContainerItemProxy */; - }; - E63DB2D02A62DA3E6AD23FCE3DB11A0A /* PBXTargetDependency */ = { + 1B4F75AF848B46CF23A6BA22675D6627 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = RDReaderView; target = AA2E57587AA8EECA63C4BE08EA3CB6D2 /* RDReaderView */; - targetProxy = B2B3B1D10F4029AF72458869308C4EC4 /* PBXContainerItemProxy */; + targetProxy = 074F879ADE9999797C86C3740B5E32D4 /* PBXContainerItemProxy */; }; - ED3F8BF6E64575FD64AB29CD5E7F325C /* PBXTargetDependency */ = { + 1FE255033CE2931F14A8B432913B1C07 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTFoundation; + target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; + targetProxy = 7A2CCFC5E3869A63E6A282D8684D7A53 /* PBXContainerItemProxy */; + }; + 24D7C9680789D00DF9C75051814D1BA0 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "RDReaderView-RDReaderViewAssets"; + target = AE7F393FB7805DE2664AB4111873F907 /* RDReaderView-RDReaderViewAssets */; + targetProxy = AD4ABAC26C7FD0B1AF7E70325A736A1D /* PBXContainerItemProxy */; + }; + 2502DD303A8608D0713BD3D51E7000A9 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTCoreText; + target = B88F4EA0695B6B3165C64594850D72C7 /* DTCoreText */; + targetProxy = AAFAB68D136C5F2D92DBAB8B29FD0AB5 /* PBXContainerItemProxy */; + }; + 323F230337D07BED6644D3793F84BE5F /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = "ZIPFoundation-ZIPFoundation_Privacy"; + target = C7A8D82E407CD3FDC3BA55CEE519B252 /* ZIPFoundation-ZIPFoundation_Privacy */; + targetProxy = 2ED6C00B62E16EDD0756021F22DF82D0 /* PBXContainerItemProxy */; + }; + 3A511A70A083978857166D53697B2DD1 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ZIPFoundation; + target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; + targetProxy = A67D6F565DADD3E0774013433C994B6E /* PBXContainerItemProxy */; + }; + 773F814832EEF86B603BDB3BEE4BAC30 /* PBXTargetDependency */ = { isa = PBXTargetDependency; name = "DTCoreText-Resources"; target = 0C24CB0E87A728A11AA1124CB360D6A1 /* DTCoreText-Resources */; - targetProxy = F8919A621AEA917EC6FFE71CAB71613A /* PBXContainerItemProxy */; + targetProxy = 97B0BF093C37416184C7A171B080AC06 /* PBXContainerItemProxy */; + }; + 92A6DACDBF5DE6549B548C7CBB39DCBD /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = DTFoundation; + target = 8F6E5A5BF72D62CDFD25F91A7CFA3309 /* DTFoundation */; + targetProxy = 3868F6EA6B9BF861CF7177F46830F1BD /* PBXContainerItemProxy */; + }; + FE93D297488A807E698F9F36D740C412 /* PBXTargetDependency */ = { + isa = PBXTargetDependency; + name = ZIPFoundation; + target = AA15C8469D67684160CC2A7098EB841C /* ZIPFoundation */; + targetProxy = D6606DA782022F182AB83DC44599FC10 /* PBXContainerItemProxy */; }; /* End PBXTargetDependency section */ /* Begin XCBuildConfiguration section */ - 17B4D7D64BBE5CC48D15CDC3448A3E18 /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 7503926237A4785CCB864B2BCD1F4C2B /* DTFoundation.release.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/DTFoundation/DTFoundation-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/DTFoundation/DTFoundation-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/DTFoundation/DTFoundation.modulemap"; - PRODUCT_MODULE_NAME = DTFoundation; - PRODUCT_NAME = DTFoundation; - 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; - }; 1DBA69CFBAB5965CF41704A7A4699A8A /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 306477706BBB1E784F55BCF8EB1AD737 /* Pods-ReadViewDemo.debug.xcconfig */; @@ -2788,7 +2752,7 @@ }; name = Debug; }; - 3BA9B2F5A8D3CBF0B4DF32C1B766D08C /* Debug */ = { + 2B6B5D81EC4916A616D4136067EC6CBA /* Debug */ = { isa = XCBuildConfiguration; baseConfigurationReference = 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */; buildSettings = { @@ -2806,6 +2770,45 @@ }; name = Debug; }; + 43926DAD74F3FB4106D6CAFD2D33C65A /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/RDReaderView/RDReaderView-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/RDReaderView/RDReaderView-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/RDReaderView/RDReaderView.modulemap"; + PRODUCT_MODULE_NAME = RDReaderView; + PRODUCT_NAME = RDReaderView; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.10; + TARGETED_DEVICE_FAMILY = "1,2"; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Debug; + }; 44A4B2FB6211B90C1949A44A381F6D1F /* Release */ = { isa = XCBuildConfiguration; buildSettings = { @@ -2869,82 +2872,7 @@ }; name = Release; }; - 573132E12BF0BBFCADCC31CAEA2B91F3 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */; - buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ZIPFoundation-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/ZIPFoundation/ZIPFoundation.modulemap"; - PRODUCT_MODULE_NAME = ZIPFoundation; - PRODUCT_NAME = ZIPFoundation; - 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; - }; - 5850CB856BC076AE36CA91C91F0C93DC /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = C0DCB00F0B62D7DBE628D2B5FF006E93 /* DTCoreText.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DTCoreText"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = DTCoreText; - INFOPLIST_FILE = "Target Support Files/DTCoreText/ResourceBundle-Resources-DTCoreText-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = Resources; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Debug; - }; - 5E6B92F3338CD3552B67A646DC9310AB /* Release */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ZIPFoundation"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = ZIPFoundation; - INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = ZIPFoundation_Privacy; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 6B8D15C2323C9CEB06683FA2BB7292A3 /* Release */ = { + 6767C5E1DC52A0BE002A0C4E711BCF8F /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */; buildSettings = { @@ -2984,9 +2912,45 @@ }; name = Release; }; - 752CBC115FEF9C360E2D79175E431F2B /* Debug */ = { + 728BBFA17689D3903EA612AB78729477 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */; + baseConfigurationReference = 766227355308600EFC048F797274454A /* ZIPFoundation.release.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/ZIPFoundation"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = ZIPFoundation; + INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ResourceBundle-ZIPFoundation_Privacy-ZIPFoundation-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = ZIPFoundation_Privacy; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Release; + }; + 72BCE8A6E5445D5E4AC3C95653FE2FC2 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = C0DCB00F0B62D7DBE628D2B5FF006E93 /* DTCoreText.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/DTCoreText"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = DTCoreText; + INFOPLIST_FILE = "Target Support Files/DTCoreText/ResourceBundle-Resources-DTCoreText-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = Resources; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + 86CF8109EF9105EBB952A39235F39FE5 /* Release */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 7503926237A4785CCB864B2BCD1F4C2B /* DTFoundation.release.xcconfig */; buildSettings = { CLANG_ENABLE_OBJC_WEAK = NO; "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; @@ -2999,9 +2963,9 @@ DYLIB_INSTALL_NAME_BASE = "@rpath"; ENABLE_MODULE_VERIFIER = NO; ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/RDReaderView/RDReaderView-prefix.pch"; + GCC_PREFIX_HEADER = "Target Support Files/DTFoundation/DTFoundation-prefix.pch"; GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/RDReaderView/RDReaderView-Info.plist"; + INFOPLIST_FILE = "Target Support Files/DTFoundation/DTFoundation-Info.plist"; INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; LD_RUNPATH_SEARCH_PATHS = ( @@ -3009,53 +2973,96 @@ "@executable_path/Frameworks", "@loader_path/Frameworks", ); - MODULEMAP_FILE = "Target Support Files/RDReaderView/RDReaderView.modulemap"; - PRODUCT_MODULE_NAME = RDReaderView; - PRODUCT_NAME = RDReaderView; + MODULEMAP_FILE = "Target Support Files/DTFoundation/DTFoundation.modulemap"; + PRODUCT_MODULE_NAME = DTFoundation; + PRODUCT_NAME = DTFoundation; SDKROOT = iphoneos; SKIP_INSTALL = YES; SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; SWIFT_INSTALL_OBJC_HEADER = YES; - SWIFT_VERSION = 5.10; + SWIFT_VERSION = 5.0; + TARGETED_DEVICE_FAMILY = "1,2"; + VALIDATE_PRODUCT = YES; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; + }; + name = Release; + }; + 8D70C3AB7CF44B384FC6A2ACB0D2C244 /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = 85E8DA9DE1F796F12171763D20CBAF27 /* DTFoundation.debug.xcconfig */; + buildSettings = { + CLANG_ENABLE_OBJC_WEAK = NO; + "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; + "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; + CURRENT_PROJECT_VERSION = 1; + DEFINES_MODULE = YES; + DYLIB_COMPATIBILITY_VERSION = 1; + DYLIB_CURRENT_VERSION = 1; + DYLIB_INSTALL_NAME_BASE = "@rpath"; + ENABLE_MODULE_VERIFIER = NO; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + GCC_PREFIX_HEADER = "Target Support Files/DTFoundation/DTFoundation-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/DTFoundation/DTFoundation-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/DTFoundation/DTFoundation.modulemap"; + PRODUCT_MODULE_NAME = DTFoundation; + PRODUCT_NAME = DTFoundation; + 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; }; - 7DDFE4EA35ABA9FF8E941CB15B67E7A3 /* Release */ = { + 98B0EF1FDF2EF48983C1255D7889235F /* Debug */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */; + baseConfigurationReference = 79D13938A04579CD1E9E042A39CC4D86 /* ZIPFoundation.debug.xcconfig */; buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; + 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; - IBSC_MODULE = RDReaderView; - INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; + GCC_PREFIX_HEADER = "Target Support Files/ZIPFoundation/ZIPFoundation-prefix.pch"; + GENERATE_INFOPLIST_FILE = NO; + INFOPLIST_FILE = "Target Support Files/ZIPFoundation/ZIPFoundation-Info.plist"; + INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = RDReaderViewAssets; + LD_RUNPATH_SEARCH_PATHS = ( + "$(inherited)", + "@executable_path/Frameworks", + "@loader_path/Frameworks", + ); + MODULEMAP_FILE = "Target Support Files/ZIPFoundation/ZIPFoundation.modulemap"; + PRODUCT_MODULE_NAME = ZIPFoundation; + PRODUCT_NAME = ZIPFoundation; SDKROOT = iphoneos; SKIP_INSTALL = YES; + SWIFT_ACTIVE_COMPILATION_CONDITIONS = "$(inherited) "; + SWIFT_INSTALL_OBJC_HEADER = YES; + SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; - }; - name = Release; - }; - 871352A56D590AB22C822711DC9F16B5 /* Debug */ = { - isa = XCBuildConfiguration; - baseConfigurationReference = D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */; - buildSettings = { - CODE_SIGNING_ALLOWED = NO; - CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; - ENABLE_USER_SCRIPT_SANDBOXING = NO; - IBSC_MODULE = RDReaderView; - INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; - IPHONEOS_DEPLOYMENT_TARGET = 15.6; - PRODUCT_NAME = RDReaderViewAssets; - SDKROOT = iphoneos; - SKIP_INSTALL = YES; - TARGETED_DEVICE_FAMILY = "1,2"; - WRAPPER_EXTENSION = bundle; + VERSIONING_SYSTEM = "apple-generic"; + VERSION_INFO_PREFIX = ""; }; name = Debug; }; @@ -3205,44 +3212,23 @@ }; name = Debug; }; - AFA9CB5C91312E658A18BABD92E15253 /* Debug */ = { + B71DB293E6D1DF3D49E94CF7A4C69680 /* Release */ = { isa = XCBuildConfiguration; - baseConfigurationReference = 85E8DA9DE1F796F12171763D20CBAF27 /* DTFoundation.debug.xcconfig */; + baseConfigurationReference = 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */; buildSettings = { - CLANG_ENABLE_OBJC_WEAK = NO; - "CODE_SIGN_IDENTITY[sdk=appletvos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=iphoneos*]" = ""; - "CODE_SIGN_IDENTITY[sdk=watchos*]" = ""; - CURRENT_PROJECT_VERSION = 1; - DEFINES_MODULE = YES; - DYLIB_COMPATIBILITY_VERSION = 1; - DYLIB_CURRENT_VERSION = 1; - DYLIB_INSTALL_NAME_BASE = "@rpath"; - ENABLE_MODULE_VERIFIER = NO; + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; ENABLE_USER_SCRIPT_SANDBOXING = NO; - GCC_PREFIX_HEADER = "Target Support Files/DTFoundation/DTFoundation-prefix.pch"; - GENERATE_INFOPLIST_FILE = NO; - INFOPLIST_FILE = "Target Support Files/DTFoundation/DTFoundation-Info.plist"; - INSTALL_PATH = "$(LOCAL_LIBRARY_DIR)/Frameworks"; + IBSC_MODULE = RDReaderView; + INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; IPHONEOS_DEPLOYMENT_TARGET = 15.6; - LD_RUNPATH_SEARCH_PATHS = ( - "$(inherited)", - "@executable_path/Frameworks", - "@loader_path/Frameworks", - ); - MODULEMAP_FILE = "Target Support Files/DTFoundation/DTFoundation.modulemap"; - PRODUCT_MODULE_NAME = DTFoundation; - PRODUCT_NAME = DTFoundation; + PRODUCT_NAME = RDReaderViewAssets; 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 = ""; + WRAPPER_EXTENSION = bundle; }; - name = Debug; + name = Release; }; C9A3C41671C64664CEDC2482C0D7591C /* Release */ = { isa = XCBuildConfiguration; @@ -3284,7 +3270,25 @@ }; name = Release; }; - DEFF526438A995A382462D8858801F12 /* Release */ = { + CF85D159E3F5E5FB20444807A150AD9D /* Debug */ = { + isa = XCBuildConfiguration; + baseConfigurationReference = D3FE3C2B203F85680560F45459F5B281 /* RDReaderView.debug.xcconfig */; + buildSettings = { + CODE_SIGNING_ALLOWED = NO; + CONFIGURATION_BUILD_DIR = "$(BUILD_DIR)/$(CONFIGURATION)$(EFFECTIVE_PLATFORM_NAME)/RDReaderView"; + ENABLE_USER_SCRIPT_SANDBOXING = NO; + IBSC_MODULE = RDReaderView; + INFOPLIST_FILE = "Target Support Files/RDReaderView/ResourceBundle-RDReaderViewAssets-RDReaderView-Info.plist"; + IPHONEOS_DEPLOYMENT_TARGET = 15.6; + PRODUCT_NAME = RDReaderViewAssets; + SDKROOT = iphoneos; + SKIP_INSTALL = YES; + TARGETED_DEVICE_FAMILY = "1,2"; + WRAPPER_EXTENSION = bundle; + }; + name = Debug; + }; + DE19A2C5E7462906B427FCED351481FD /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 7A13F9221A300A89F9F8D0A2AB1794BF /* DTCoreText.release.xcconfig */; buildSettings = { @@ -3302,7 +3306,7 @@ }; name = Release; }; - FD24A5A68EC5F039D9507978BFE53B5E /* Release */ = { + FADA68181260E5AB0971EDFE840CC75A /* Release */ = { isa = XCBuildConfiguration; baseConfigurationReference = 2B73CF24646475E517B8FDF110972E77 /* RDReaderView.release.xcconfig */; buildSettings = { @@ -3354,6 +3358,24 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; + 395E1ADD7C4572E07F9F15529B893917 /* Build configuration list for PBXNativeTarget "RDReaderView" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + 43926DAD74F3FB4106D6CAFD2D33C65A /* Debug */, + FADA68181260E5AB0971EDFE840CC75A /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; + 3B6A47CF0BB2BB255AA059547D63FCE6 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */ = { + isa = XCConfigurationList; + buildConfigurations = ( + CF85D159E3F5E5FB20444807A150AD9D /* Debug */, + B71DB293E6D1DF3D49E94CF7A4C69680 /* Release */, + ); + defaultConfigurationIsVisible = 0; + defaultConfigurationName = Release; + }; 4821239608C13582E20E6DA73FD5F1F9 /* Build configuration list for PBXProject "Pods" */ = { isa = XCConfigurationList; buildConfigurations = ( @@ -3363,11 +3385,11 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - 518A8AFAE744B5C934477065A093DD03 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */ = { + 6D990C2C8650568DCA444C68C8A54BD4 /* Build configuration list for PBXNativeTarget "DTFoundation" */ = { isa = XCConfigurationList; buildConfigurations = ( - 3BA9B2F5A8D3CBF0B4DF32C1B766D08C /* Debug */, - 5E6B92F3338CD3552B67A646DC9310AB /* Release */, + 8D70C3AB7CF44B384FC6A2ACB0D2C244 /* Debug */, + 86CF8109EF9105EBB952A39235F39FE5 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; @@ -3381,47 +3403,29 @@ defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - A87924AD6CFC26096ACAC6E8C270E40C /* Build configuration list for PBXNativeTarget "DTFoundation" */ = { + B67E3207991BCCFC1AE95B4BC8FF8FB5 /* Build configuration list for PBXNativeTarget "ZIPFoundation-ZIPFoundation_Privacy" */ = { isa = XCConfigurationList; buildConfigurations = ( - AFA9CB5C91312E658A18BABD92E15253 /* Debug */, - 17B4D7D64BBE5CC48D15CDC3448A3E18 /* Release */, + 2B6B5D81EC4916A616D4136067EC6CBA /* Debug */, + 728BBFA17689D3903EA612AB78729477 /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - AB6CC5129229FA51901566E3484E6E29 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */ = { + C7129EF2434C8874397E54D62D12DED8 /* Build configuration list for PBXNativeTarget "DTCoreText-Resources" */ = { isa = XCConfigurationList; buildConfigurations = ( - 5850CB856BC076AE36CA91C91F0C93DC /* Debug */, - DEFF526438A995A382462D8858801F12 /* Release */, + 72BCE8A6E5445D5E4AC3C95653FE2FC2 /* Debug */, + DE19A2C5E7462906B427FCED351481FD /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; }; - B36E390C233796AF3616DEDF3A8E3702 /* Build configuration list for PBXNativeTarget "RDReaderView" */ = { + D1EC69BAD25E2A3F988B19C5623BB9ED /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { isa = XCConfigurationList; buildConfigurations = ( - 752CBC115FEF9C360E2D79175E431F2B /* Debug */, - FD24A5A68EC5F039D9507978BFE53B5E /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - C0974D194616F16177BEDFB3D7C054F0 /* Build configuration list for PBXNativeTarget "ZIPFoundation" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 573132E12BF0BBFCADCC31CAEA2B91F3 /* Debug */, - 6B8D15C2323C9CEB06683FA2BB7292A3 /* Release */, - ); - defaultConfigurationIsVisible = 0; - defaultConfigurationName = Release; - }; - E388A68950BE869243115F12D29275E6 /* Build configuration list for PBXNativeTarget "RDReaderView-RDReaderViewAssets" */ = { - isa = XCConfigurationList; - buildConfigurations = ( - 871352A56D590AB22C822711DC9F16B5 /* Debug */, - 7DDFE4EA35ABA9FF8E941CB15B67E7A3 /* Release */, + 98B0EF1FDF2EF48983C1255D7889235F /* Debug */, + 6767C5E1DC52A0BE002A0C4E711BCF8F /* Release */, ); defaultConfigurationIsVisible = 0; defaultConfigurationName = Release; diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift index f9692c9..c663c07 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController+DataSource.swift @@ -64,7 +64,8 @@ extension RDEPUBReaderController: RDReaderDataSource, RDReaderPageProvider, RDRe chapterCFIMap: resolvedPage.chapter.chapterOffsetMap.cfiMap, chapterFragmentOffsets: resolvedPage.chapter.chapterOffsetMap.fragmentOffsets, highlights: textHighlights(for: resolvedPage.page), - searchState: searchState(for: resolvedPage.page) + searchState: searchState(for: resolvedPage.page), + displayCache: textDisplayCache ) return contentView } @@ -108,7 +109,8 @@ extension RDEPUBReaderController: RDReaderDataSource, RDReaderPageProvider, RDRe chapterCFIMap: textBook.chapterData(for: page.href)?.chapter.cfiMap, chapterFragmentOffsets: textBook.chapterData(for: page.href)?.chapter.fragmentOffsets ?? [:], highlights: textHighlights(for: page), - searchState: searchState(for: page) + searchState: searchState(for: page), + displayCache: textDisplayCache ) return contentView } diff --git a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift index 43b7667..89f5345 100644 --- a/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift +++ b/Sources/RDReaderView/EPUBUI/RDEPUBReaderController.swift @@ -96,6 +96,10 @@ public final class RDEPUBReaderController: UIViewController { let paginationHostView = UIView() + /// Chapter-level shared display content/layouter for text pages + /// (LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md P1-1/P1-3). + let textDisplayCache = RDEPUBChapterDisplayContentCache() + lazy var readerContext = RDEPUBReaderContext(controller: self) var parser: RDEPUBParser? { @@ -292,6 +296,7 @@ public final class RDEPUBReaderController: UIViewController { public override func didReceiveMemoryWarning() { super.didReceiveMemoryWarning() runtime.handleMemoryWarning() + textDisplayCache.removeAll() } public override func viewWillTransition(to size: CGSize, with coordinator: UIViewControllerTransitionCoordinator) { diff --git a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBChapterDisplayContentCache.swift b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBChapterDisplayContentCache.swift new file mode 100644 index 0000000..d4ba110 --- /dev/null +++ b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBChapterDisplayContentCache.swift @@ -0,0 +1,114 @@ +import UIKit + +#if canImport(DTCoreText) +import DTCoreText +#endif + +/// Chapter-level shared display content and layouter +/// (LONG_CHAPTER_MEMORY_OPTIMIZATION_PLAN.md P1-1 / P1-3). +/// +/// One entry holds the chapter-length display string (theme text color and +/// dark-image adjustment injected once over the full chapter at build time) +/// plus the DTCoreTextLayouter wrapping its framesetter. Page views reference +/// the shared string and request per-page layout frames; they must never +/// mutate the shared string — the framesetter and any live layout frame hold +/// it. Page-level decoration (highlights, search, selection) is drawn by the +/// overlay views instead. +/// +/// Main-thread only. +final class RDEPUBChapterDisplayContentCache { + +#if canImport(DTCoreText) + + struct Entry { + let content: NSAttributedString + let layouter: DTCoreTextLayouter? + fileprivate let signature: Signature + } + + fileprivate struct Signature: Equatable { + let chapterContentID: ObjectIdentifier + let contentLength: Int + let textColor: UIColor + let backgroundColor: UIColor + let darkImageAdjustmentEnabled: Bool + let darkImageBlendRatio: CGFloat + + init(page: RDEPUBTextPage, configuration: RDEPUBReaderConfiguration) { + chapterContentID = ObjectIdentifier(page.chapterContent) + contentLength = page.chapterContent.length + textColor = configuration.theme.contentTextColor + backgroundColor = configuration.theme.contentBackgroundColor + darkImageAdjustmentEnabled = configuration.darkImageAdjustmentEnabled + darkImageBlendRatio = configuration.darkImageBlendRatio + } + } + + /// Current chapter plus one adjacent chapter during page-curl/scroll + /// transitions across a chapter boundary. + private static let capacity = 2 + + private var entries: [String: Entry] = [:] + + private var accessOrder: [String] = [] + + func entry(for page: RDEPUBTextPage, configuration: RDEPUBReaderConfiguration) -> Entry { + dispatchPrecondition(condition: .onQueue(.main)) + let signature = Signature(page: page, configuration: configuration) + if let cached = entries[page.href], cached.signature == signature { + touch(page.href) + return cached + } + let entry = Self.buildEntry(page: page, configuration: configuration, signature: signature) + entries[page.href] = entry + touch(page.href) + evictIfNeeded() + RDEPUBMemoryProbe.log("displayContentBuilt href=\(page.href) length=\(entry.content.length)") + return entry + } + + func removeAll() { + entries.removeAll() + accessOrder.removeAll() + } + + private func touch(_ href: String) { + accessOrder.removeAll { $0 == href } + accessOrder.append(href) + } + + private func evictIfNeeded() { + while accessOrder.count > Self.capacity { + let evicted = accessOrder.removeFirst() + entries.removeValue(forKey: evicted) + } + } + + private static func buildEntry( + page: RDEPUBTextPage, + configuration: RDEPUBReaderConfiguration, + signature: Signature + ) -> Entry { + let content = NSMutableAttributedString(attributedString: page.chapterContent) + let fullRange = NSRange(location: 0, length: content.length) + _ = RDEPUBDarkImageAdjuster.adjustIfNeeded( + content, + in: fullRange, + configuration: configuration + ) + content.addAttribute( + .foregroundColor, + value: configuration.theme.contentTextColor, + range: fullRange + ) + let layouter = DTCoreTextLayouter(attributedString: content) + layouter?.shouldCacheLayoutFrames = false + return Entry(content: content, layouter: layouter, signature: signature) + } + +#else + + func removeAll() {} + +#endif +} diff --git a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift index 5af723d..117753b 100644 --- a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift +++ b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextContentView.swift @@ -87,12 +87,16 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader return view }() + /// Chapter-level shared display string owned by the display cache. + /// Read-only from the page's perspective: theme color and dark-image + /// adjustment are baked in at build time; page decoration goes through + /// the overlay views. private var coreTextDisplayContent: NSAttributedString? private var coreTextDisplayRange: NSRange? - /// Framesetter over the full chapter copy, rebuilt when the display - /// content changes; layout frames are recomputed per bounds change. + /// Shared chapter-level layouter (owned by the display cache); layout + /// frames are recomputed per page range and bounds change. private var coreTextLayouter: DTCoreTextLayouter? #endif @@ -397,7 +401,8 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader chapterCFIMap: RDEPUBCFIMap? = nil, chapterFragmentOffsets: [String: Int] = [:], highlights: [RDEPUBHighlight] = [], - searchState: RDEPUBSearchState? = nil + searchState: RDEPUBSearchState? = nil, + displayCache: RDEPUBChapterDisplayContentCache? = nil ) { loadingSpinner.stopAnimating() currentPage = page @@ -437,37 +442,26 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader coverImageView.image = nil #if canImport(DTCoreText) - // In-context display: keep the full chapter string and lay out only the - // page's range. CTTypesetter line breaks are context-sensitive, so + // In-context display: lay out the full chapter string and render only + // the page's range. CTTypesetter line breaks are context-sensitive, so // re-wrapping a page substring can break ±1 character away from the // paginator's line ends (lone characters spilling onto the last line); // laying out the same chapter string the paginator used cannot. // String indices in the layout frame are therefore chapter-absolute. - let displayContent = NSMutableAttributedString(attributedString: page.chapterContent) + // The chapter string and layouter are shared per chapter via the + // display cache; this view must not mutate the shared string. + let display = (displayCache ?? RDEPUBChapterDisplayContentCache()) + .entry(for: page, configuration: configuration) let pageRange = NSIntersectionRange( page.contentRange, - NSRange(location: 0, length: displayContent.length) + NSRange(location: 0, length: display.content.length) ) - _ = RDEPUBDarkImageAdjuster.adjustIfNeeded( - displayContent, - in: pageRange, - configuration: configuration - ) - displayContent.addAttribute( - .foregroundColor, - value: configuration.theme.contentTextColor, - range: pageRange - ) - - applyHighlightsToContent(displayContent, highlights: highlights, page: page) coreTextContentView.isHidden = false coreTextContentView.backgroundColor = .clear coreTextContentView.accessibilityIdentifier = "epub.reader.selection.text" - coreTextDisplayContent = displayContent + coreTextDisplayContent = display.content coreTextDisplayRange = pageRange - coreTextLayouter = DTCoreTextLayouter(attributedString: displayContent) - coreTextLayouter?.shouldCacheLayoutFrames = false - coreTextContentView.attributedDisplayContent = displayContent + coreTextLayouter = display.layouter updateCoreTextLayoutFrameIfNeeded() #else let selectionContent = normalizedPageContent(from: page) @@ -521,7 +515,6 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader #if canImport(DTCoreText) coreTextContentView.isHidden = false coreTextContentView.backgroundColor = .clear - coreTextContentView.attributedDisplayContent = nil coreTextContentView.layoutFrame = nil coreTextDisplayContent = nil coreTextDisplayRange = nil @@ -615,31 +608,6 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader return image(from: attachmentValue) } - /// Marks highlight ranges on the chapter-length display copy. Ranges stay - /// chapter-absolute — the in-context layout frame uses the same indices. - private func applyHighlightsToContent( - _ content: NSMutableAttributedString, - highlights: [RDEPUBHighlight], - page: RDEPUBTextPage - ) { - for highlight in highlights { - guard highlight.location.href == page.href else { continue } - guard let rangeInfo = highlight.rangeInfo, - let info = RDEPUBTextOffsetRangeInfo.decode(from: rangeInfo), - let absoluteRange = info.nsRange else { continue } - let overlap = NSIntersectionRange(absoluteRange, page.contentRange) - guard overlap.length > 0, - overlap.location + overlap.length <= content.length else { continue } - - switch highlight.style { - case .highlight: - content.addAttribute(kRDEPUBHighlightAttributeName, value: highlight.uiColor, range: overlap) - case .underline: - content.addAttribute(kRDEPUBUnderlineAttributeName, value: highlight.uiColor, range: overlap) - } - } - } - private func normalizedPageContent(from page: RDEPUBTextPage) -> NSMutableAttributedString { let content = NSMutableAttributedString(attributedString: page.content) guard content.length > 0 else { return content } @@ -759,12 +727,12 @@ final class RDEPUBTextContentView: UIView, UIGestureRecognizerDelegate, RDReader backgroundOverlayView.updateSnapshot(interactionController.snapshot) if let page = currentPage { + // Highlights/underlines and search are all drawn as overlay + // decorations; the shared chapter display string carries no + // page-level annotation attributes. let (bgDecorations, fgDecorations) = overlayView.buildDecorations( page: page, - // Text-page highlights/underlines are already painted by the - // CoreText render view via display-content attributes. Keep - // overlay decorations for search only to avoid double drawing. - highlights: [], + highlights: currentHighlights, searchState: currentSearchState, interactionController: interactionController ) diff --git a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextPageRenderView.swift b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextPageRenderView.swift index 97ced62..b72036d 100644 --- a/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextPageRenderView.swift +++ b/Sources/RDReaderView/EPUBUI/TextPage/RDEPUBTextPageRenderView.swift @@ -22,12 +22,6 @@ final class RDEPUBTextPageRenderView: UIView { } } - var attributedDisplayContent: NSAttributedString? { - didSet { - invalidateStaticContent() - } - } - var selectionRects: [CGRect] = [] { didSet { setNeedsDisplay() @@ -78,9 +72,6 @@ final class RDEPUBTextPageRenderView: UIView { if let cachedStaticImage { cachedStaticImage.draw(in: bounds) } else { - if let attributedDisplayContent { - drawHighlights(in: context, attributedString: attributedDisplayContent, layoutFrame: layoutFrame) - } layoutFrame.draw(in: context, options: drawOptions) } @@ -96,59 +87,6 @@ final class RDEPUBTextPageRenderView: UIView { } } - private func drawHighlights( - in context: CGContext, - attributedString: NSAttributedString, - layoutFrame: DTCoreTextLayoutFrame - ) { - let fullRange = NSRange(location: 0, length: attributedString.length) - - attributedString.enumerateAttribute(kRDEPUBHighlightAttributeName, in: fullRange) { value, range, _ in - guard let color = value as? UIColor else { return } - let rects = computeHighlightRects(for: range, layoutFrame: layoutFrame) - color.setFill() - for rect in rects { - context.fill(rect) - } - } - - attributedString.enumerateAttribute(kRDEPUBUnderlineAttributeName, in: fullRange) { value, range, _ in - guard let color = value as? UIColor else { return } - let rects = computeHighlightRects(for: range, layoutFrame: layoutFrame) - color.setStroke() - context.setLineWidth(2) - for rect in rects { - let y = rect.maxY - 1 - context.move(to: CGPoint(x: rect.minX, y: y)) - context.addLine(to: CGPoint(x: rect.maxX, y: y)) - context.strokePath() - } - } - } - - private func computeHighlightRects(for range: NSRange, layoutFrame: DTCoreTextLayoutFrame) -> [CGRect] { - var rects: [CGRect] = [] - guard let lines = layoutFrame.lines as? [DTCoreTextLayoutLine] else { return rects } - - for line in lines { - let lineRange = line.stringRange() - let overlap = NSIntersectionRange(range, lineRange) - guard overlap.length > 0 else { continue } - - let startX = line.offset(forStringIndex: overlap.location) - let endX = line.offset(forStringIndex: overlap.location + overlap.length) - let rect = CGRect( - x: line.baselineOrigin.x + startX, - y: line.baselineOrigin.y - line.ascent, - width: endX - startX, - height: line.ascent + line.descent - ) - rects.append(rect) - } - - return rects - } - private func drawSelection(in context: CGContext) { guard !selectionRects.isEmpty else { return } selectionColor.setFill() @@ -261,9 +199,6 @@ final class RDEPUBTextPageRenderView: UIView { let renderer = UIGraphicsImageRenderer(size: bounds.size, format: format) return renderer.image { _ in guard let staticContext = UIGraphicsGetCurrentContext() else { return } - if let attributedDisplayContent { - drawHighlights(in: staticContext, attributedString: attributedDisplayContent, layoutFrame: layoutFrame) - } layoutFrame.draw(in: staticContext, options: drawOptions) } }