Repository: fedefrappi/AePubReader
Branch: master
Commit: 096fe66b256c
Files: 79
Total size: 1.4 MB
Directory structure:
gitextract_pu6ev6n8/
├── AePubReader/
│ ├── .gitignore
│ ├── AePubReader-Info.plist
│ ├── AePubReader.xcodeproj/
│ │ ├── FedeX.mode1v3
│ │ ├── FedeX.pbxuser
│ │ ├── project.pbxproj
│ │ ├── project.xcworkspace/
│ │ │ ├── contents.xcworkspacedata
│ │ │ └── xcuserdata/
│ │ │ └── FedeX.xcuserdatad/
│ │ │ ├── UserInterfaceState.xcuserstate
│ │ │ └── WorkspaceSettings.xcsettings
│ │ └── xcuserdata/
│ │ └── FedeX.xcuserdatad/
│ │ ├── xcdebugger/
│ │ │ └── Breakpoints.xcbkptlist
│ │ └── xcschemes/
│ │ ├── AePubReader.xcscheme
│ │ └── xcschememanagement.plist
│ ├── AePubReader_Prefix.pch
│ ├── Classes/
│ │ ├── AePubReaderAppDelegate.h
│ │ ├── AePubReaderAppDelegate.m
│ │ ├── Chapter.h
│ │ ├── Chapter.m
│ │ ├── ChapterListViewController.h
│ │ ├── ChapterListViewController.m
│ │ ├── ChapterListViewController.xib
│ │ ├── EPub.h
│ │ ├── EPub.m
│ │ ├── EPubView.xib
│ │ ├── EPubViewController.h
│ │ ├── EPubViewController.m
│ │ ├── GTMDefines.h
│ │ ├── GTMNSString+HTML.h
│ │ ├── GTMNSString+HTML.m
│ │ ├── NSString+HTML.h
│ │ ├── NSString+HTML.m
│ │ ├── SearchResult.h
│ │ ├── SearchResult.m
│ │ ├── SearchResultsViewController.h
│ │ ├── SearchResultsViewController.m
│ │ ├── SearchResultsViewController.xib
│ │ ├── UIWebView+SearchWebView.h
│ │ ├── UIWebView+SearchWebView.m
│ │ ├── ZipArchive.h
│ │ ├── ZipArchive.mm
│ │ └── minizip/
│ │ ├── crypt.h
│ │ ├── ioapi.c
│ │ ├── ioapi.h
│ │ ├── mztools.c
│ │ ├── mztools.h
│ │ ├── unzip.c
│ │ ├── unzip.h
│ │ ├── zip.c
│ │ └── zip.h
│ ├── MainWindow.xib
│ ├── SearchWebView.js
│ ├── Source/
│ │ ├── CXHTMLDocument.h
│ │ ├── CXHTMLDocument.m
│ │ ├── CXMLDocument.h
│ │ ├── CXMLDocument.m
│ │ ├── CXMLDocument_PrivateExtensions.h
│ │ ├── CXMLDocument_PrivateExtensions.m
│ │ ├── CXMLElement.h
│ │ ├── CXMLElement.m
│ │ ├── CXMLElement_CreationExtensions.h
│ │ ├── CXMLElement_CreationExtensions.m
│ │ ├── CXMLElement_ElementTreeExtensions.h
│ │ ├── CXMLElement_ElementTreeExtensions.m
│ │ ├── CXMLNamespaceNode.h
│ │ ├── CXMLNamespaceNode.m
│ │ ├── CXMLNode.h
│ │ ├── CXMLNode.m
│ │ ├── CXMLNode_PrivateExtensions.h
│ │ ├── CXMLNode_PrivateExtensions.m
│ │ ├── CXMLNode_XPathExtensions.h
│ │ ├── CXMLNode_XPathExtensions.m
│ │ ├── Creation/
│ │ │ ├── CXMLDocument_CreationExtensions.h
│ │ │ ├── CXMLDocument_CreationExtensions.m
│ │ │ ├── CXMLNode_CreationExtensions.h
│ │ │ └── CXMLNode_CreationExtensions.m
│ │ ├── Tidy/
│ │ │ ├── CTidy.h
│ │ │ └── CTidy.m
│ │ └── TouchXML.h
│ ├── main.m
│ └── vhugo.epub
└── README
================================================
FILE CONTENTS
================================================
================================================
FILE: AePubReader/.gitignore
================================================
/build/
================================================
FILE: AePubReader/AePubReader-Info.plist
================================================
CFBundleDevelopmentRegion
English
CFBundleDisplayName
${PRODUCT_NAME}
CFBundleExecutable
${EXECUTABLE_NAME}
CFBundleIconFile
CFBundleIdentifier
com.yourcompany.${PRODUCT_NAME:rfc1034identifier}
CFBundleInfoDictionaryVersion
6.0
CFBundleName
${PRODUCT_NAME}
CFBundlePackageType
APPL
CFBundleSignature
????
CFBundleVersion
1.0
LSRequiresIPhoneOS
NSMainNibFile
MainWindow
UISupportedInterfaceOrientations
UIInterfaceOrientationPortrait
UIInterfaceOrientationPortraitUpsideDown
UIInterfaceOrientationLandscapeLeft
UIInterfaceOrientationLandscapeRight
================================================
FILE: AePubReader/AePubReader.xcodeproj/FedeX.mode1v3
================================================
ActivePerspectiveName
Project
AllowedModules
BundleLoadPath
MaxInstances
n
Module
PBXSmartGroupTreeModule
Name
Groups and Files Outline View
BundleLoadPath
MaxInstances
n
Module
PBXNavigatorGroup
Name
Editor
BundleLoadPath
MaxInstances
n
Module
XCTaskListModule
Name
Task List
BundleLoadPath
MaxInstances
n
Module
XCDetailModule
Name
File and Smart Group Detail Viewer
BundleLoadPath
MaxInstances
1
Module
PBXBuildResultsModule
Name
Detailed Build Results Viewer
BundleLoadPath
MaxInstances
1
Module
PBXProjectFindModule
Name
Project Batch Find Tool
BundleLoadPath
MaxInstances
n
Module
XCProjectFormatConflictsModule
Name
Project Format Conflicts List
BundleLoadPath
MaxInstances
n
Module
PBXBookmarksModule
Name
Bookmarks Tool
BundleLoadPath
MaxInstances
n
Module
PBXClassBrowserModule
Name
Class Browser
BundleLoadPath
MaxInstances
n
Module
PBXCVSModule
Name
Source Code Control Tool
BundleLoadPath
MaxInstances
n
Module
PBXDebugBreakpointsModule
Name
Debug Breakpoints Tool
BundleLoadPath
MaxInstances
n
Module
XCDockableInspector
Name
Inspector
BundleLoadPath
MaxInstances
n
Module
PBXOpenQuicklyModule
Name
Open Quickly Tool
BundleLoadPath
MaxInstances
1
Module
PBXDebugSessionModule
Name
Debugger
BundleLoadPath
MaxInstances
1
Module
PBXDebugCLIModule
Name
Debug Console
BundleLoadPath
MaxInstances
n
Module
XCSnapshotModule
Name
Snapshots Tool
BundlePath
/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources
Description
DefaultDescriptionKey
DockingSystemVisible
Extension
mode1v3
FavBarConfig
PBXProjectModuleGUID
FAFA8E5A134A0073000291E2
XCBarModuleItemNames
XCBarModuleItems
FirstTimeWindowDisplayed
Identifier
com.apple.perspectives.project.mode1v3
MajorVersion
33
MinorVersion
0
Name
Default
Notifications
OpenEditors
Content
PBXProjectModuleGUID
FA80D45A134CE87800C92189
PBXProjectModuleLabel
DetailViewController.m
PBXSplitModuleInNavigatorKey
Split0
PBXProjectModuleGUID
FA80D461134CEF0E00C92189
PBXProjectModuleLabel
DetailViewController.m
_historyCapacity
0
bookmark
FA80D491134CEFD700C92189
history
FA80D459134CE87800C92189
SplitCount
1
StatusBarVisibility
Geometry
Frame
{{0, 20}, {1315, 702}}
PBXModuleWindowStatusBarHidden2
RubberWindowFrame
61 135 1315 743 0 0 1440 878
PerspectiveWidths
-1
-1
Perspectives
ChosenToolbarItems
active-combo-popup
action
NSToolbarFlexibleSpaceItem
debugger-enable-breakpoints
build-and-go
com.apple.ide.PBXToolbarStopButton
get-info
NSToolbarFlexibleSpaceItem
com.apple.pbx.toolbar.searchfield
ControllerClassBaseName
IconName
WindowOfProjectWithEditor
Identifier
perspective.project
IsVertical
Layout
BecomeActive
ContentConfiguration
PBXBottomSmartGroupGIDs
1C37FBAC04509CD000000102
1C37FAAC04509CD000000102
1C37FABC05509CD000000102
1C37FABC05539CD112110102
E2644B35053B69B200211256
1C37FABC04509CD000100104
1CC0EA4004350EF90044410B
1CC0EA4004350EF90041110B
PBXProjectModuleGUID
1CE0B1FE06471DED0097A5F4
PBXProjectModuleLabel
Files
PBXProjectStructureProvided
yes
PBXSmartGroupTreeModuleColumnData
PBXSmartGroupTreeModuleColumnWidthsKey
186
PBXSmartGroupTreeModuleColumnsKey_v4
MainColumn
PBXSmartGroupTreeModuleOutlineStateKey_v7
PBXSmartGroupTreeModuleOutlineStateExpansionKey
29B97314FDCFA39411CA2CEA
080E96DDFE201D6D7F000001
29B97317FDCFA39411CA2CEA
1C37FBAC04509CD000000102
1C37FABC05509CD000000102
PBXSmartGroupTreeModuleOutlineStateSelectionKey
9
1
0
PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
{{0, 0}, {186, 694}}
PBXTopSmartGroupGIDs
XCIncludePerspectivesSwitch
XCSharingToken
com.apple.Xcode.GFSharingToken
GeometryConfiguration
Frame
{{0, 0}, {203, 712}}
GroupTreeTableConfiguration
MainColumn
186
RubberWindowFrame
0 125 1440 753 0 0 1440 878
Module
PBXSmartGroupTreeModule
Proportion
203pt
Dock
ContentConfiguration
PBXProjectModuleGUID
1CE0B20306471E060097A5F4
PBXProjectModuleLabel
DetailViewController.m
PBXSplitModuleInNavigatorKey
Split0
PBXProjectModuleGUID
1CE0B20406471E060097A5F4
PBXProjectModuleLabel
DetailViewController.m
_historyCapacity
0
bookmark
FA80D490134CEFD700C92189
history
FAFA8E87134A0624000291E2
FAFA8E88134A0624000291E2
FAFA8E8B134A0624000291E2
FAFA8F01134A0D6A000291E2
FAFA8F09134A0D6A000291E2
FAFA8F4E134A0F46000291E2
FAFA8F9D134A168C000291E2
FAFA8F9E134A168C000291E2
FAF45864134B1A6000D4C0F9
FAF45865134B1A6000D4C0F9
FAF45866134B1A6000D4C0F9
FAF45867134B1A6000D4C0F9
FAF45868134B1A6000D4C0F9
FADF8ECA134C745A00D84A87
FA80D3DF134CB93000C92189
FA80D456134CE7CD00C92189
FA80D45D134CEF0E00C92189
FA80D45E134CEF0E00C92189
FA80D45F134CEF0E00C92189
SplitCount
1
StatusBarVisibility
GeometryConfiguration
Frame
{{0, 0}, {1232, 312}}
RubberWindowFrame
0 125 1440 753 0 0 1440 878
Module
PBXNavigatorGroup
Proportion
312pt
ContentConfiguration
PBXProjectModuleGUID
1CE0B20506471E060097A5F4
PBXProjectModuleLabel
Detail
GeometryConfiguration
Frame
{{0, 317}, {1232, 395}}
RubberWindowFrame
0 125 1440 753 0 0 1440 878
Module
XCDetailModule
Proportion
395pt
Proportion
1232pt
Name
Project
ServiceClasses
XCModuleDock
PBXSmartGroupTreeModule
XCModuleDock
PBXNavigatorGroup
XCDetailModule
TableOfContents
FA80D3E2134CB93000C92189
1CE0B1FE06471DED0097A5F4
FA80D3E3134CB93000C92189
1CE0B20306471E060097A5F4
1CE0B20506471E060097A5F4
ToolbarConfigUserDefaultsMinorVersion
2
ToolbarConfiguration
xcode.toolbar.config.defaultV3
ControllerClassBaseName
IconName
WindowOfProject
Identifier
perspective.morph
IsVertical
0
Layout
BecomeActive
1
ContentConfiguration
PBXBottomSmartGroupGIDs
1C37FBAC04509CD000000102
1C37FAAC04509CD000000102
1C08E77C0454961000C914BD
1C37FABC05509CD000000102
1C37FABC05539CD112110102
E2644B35053B69B200211256
1C37FABC04509CD000100104
1CC0EA4004350EF90044410B
1CC0EA4004350EF90041110B
PBXProjectModuleGUID
11E0B1FE06471DED0097A5F4
PBXProjectModuleLabel
Files
PBXProjectStructureProvided
yes
PBXSmartGroupTreeModuleColumnData
PBXSmartGroupTreeModuleColumnWidthsKey
186
PBXSmartGroupTreeModuleColumnsKey_v4
MainColumn
PBXSmartGroupTreeModuleOutlineStateKey_v7
PBXSmartGroupTreeModuleOutlineStateExpansionKey
29B97314FDCFA39411CA2CEA
1C37FABC05509CD000000102
PBXSmartGroupTreeModuleOutlineStateSelectionKey
0
PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
{{0, 0}, {186, 337}}
PBXTopSmartGroupGIDs
XCIncludePerspectivesSwitch
1
XCSharingToken
com.apple.Xcode.GFSharingToken
GeometryConfiguration
Frame
{{0, 0}, {203, 355}}
GroupTreeTableConfiguration
MainColumn
186
RubberWindowFrame
373 269 690 397 0 0 1440 878
Module
PBXSmartGroupTreeModule
Proportion
100%
Name
Morph
PreferredWidth
300
ServiceClasses
XCModuleDock
PBXSmartGroupTreeModule
TableOfContents
11E0B1FE06471DED0097A5F4
ToolbarConfiguration
xcode.toolbar.config.default.shortV3
PerspectivesBarVisible
PinnedNavigatorIdentifier
FA80D45A134CE87800C92189
ShelfIsVisible
SourceDescription
file at '/Developer/Library/PrivateFrameworks/DevToolsInterface.framework/Resources/XCPerspectivesSpecificationMode1.xcperspec'
StatusbarIsVisible
TimeStamp
0.0
ToolbarConfigUserDefaultsMinorVersion
2
ToolbarDisplayMode
1
ToolbarIsVisible
ToolbarSizeMode
1
Type
Perspectives
UpdateMessage
The Default Workspace in this version of Xcode now includes support to hide and show the detail view (what has been referred to as the "Metro-Morph" feature). You must discard your current Default Workspace settings and update to the latest Default Workspace in order to gain this feature. Do you wish to update to the latest Workspace defaults for project '%@'?
WindowJustification
5
WindowOrderList
FA80D45A134CE87800C92189
FAF45AA2134B7BC400D4C0F9
1C78EAAD065D492600B07095
1CD10A99069EF8BA00B06720
FAFA8E5B134A0073000291E2
/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj
WindowString
0 125 1440 753 0 0 1440 878
WindowToolsV3
FirstTimeWindowDisplayed
Identifier
windowTool.build
IsVertical
Layout
Dock
ContentConfiguration
PBXProjectModuleGUID
1CD0528F0623707200166675
PBXProjectModuleLabel
DetailViewController.m
StatusBarVisibility
GeometryConfiguration
Frame
{{0, 0}, {907, 284}}
RubberWindowFrame
328 240 907 566 0 0 1440 878
Module
PBXNavigatorGroup
Proportion
284pt
BecomeActive
ContentConfiguration
PBXProjectModuleGUID
XCMainBuildResultsModuleGUID
PBXProjectModuleLabel
Build Results
XCBuildResultsTrigger_Collapse
1021
XCBuildResultsTrigger_Open
1011
GeometryConfiguration
Frame
{{0, 289}, {907, 236}}
RubberWindowFrame
328 240 907 566 0 0 1440 878
Module
PBXBuildResultsModule
Proportion
236pt
Proportion
525pt
Name
Build Results
ServiceClasses
PBXBuildResultsModule
StatusbarIsVisible
TableOfContents
FAFA8E5B134A0073000291E2
FA80D399134CAD3000C92189
1CD0528F0623707200166675
XCMainBuildResultsModuleGUID
ToolbarConfiguration
xcode.toolbar.config.buildV3
WindowContentMinSize
486 300
WindowString
328 240 907 566 0 0 1440 878
WindowToolGUID
FAFA8E5B134A0073000291E2
WindowToolIsVisible
FirstTimeWindowDisplayed
Identifier
windowTool.debugger
IsVertical
Layout
Dock
ContentConfiguration
Debugger
HorizontalSplitView
_collapsingFrameDimension
0.0
_indexOfCollapsedView
0
_percentageOfCollapsedView
0.0
isCollapsed
yes
sizes
{{0, 0}, {316, 201}}
{{316, 0}, {378, 201}}
VerticalSplitView
_collapsingFrameDimension
0.0
_indexOfCollapsedView
0
_percentageOfCollapsedView
0.0
isCollapsed
yes
sizes
{{0, 0}, {694, 201}}
{{0, 201}, {694, 180}}
LauncherConfigVersion
8
PBXProjectModuleGUID
1C162984064C10D400B95A72
PBXProjectModuleLabel
Debug - GLUTExamples (Underwater)
GeometryConfiguration
DebugConsoleVisible
None
DebugConsoleWindowFrame
{{200, 200}, {500, 300}}
DebugSTDIOWindowFrame
{{200, 200}, {500, 300}}
Frame
{{0, 0}, {694, 381}}
PBXDebugSessionStackFrameViewKey
DebugVariablesTableConfiguration
Name
120
Value
85
Summary
148
Frame
{{316, 0}, {378, 201}}
RubberWindowFrame
347 370 694 422 0 0 1440 878
RubberWindowFrame
347 370 694 422 0 0 1440 878
Module
PBXDebugSessionModule
Proportion
381pt
Proportion
381pt
Name
Debugger
ServiceClasses
PBXDebugSessionModule
StatusbarIsVisible
TableOfContents
1CD10A99069EF8BA00B06720
FA80D39A134CAD3000C92189
1C162984064C10D400B95A72
FA80D39B134CAD3000C92189
FA80D39C134CAD3000C92189
FA80D39D134CAD3000C92189
FA80D39E134CAD3000C92189
FA80D39F134CAD3000C92189
ToolbarConfiguration
xcode.toolbar.config.debugV3
WindowString
347 370 694 422 0 0 1440 878
WindowToolGUID
1CD10A99069EF8BA00B06720
WindowToolIsVisible
Identifier
windowTool.find
Layout
Dock
Dock
ContentConfiguration
PBXProjectModuleGUID
1CDD528C0622207200134675
PBXProjectModuleLabel
<No Editor>
PBXSplitModuleInNavigatorKey
Split0
PBXProjectModuleGUID
1CD0528D0623707200166675
SplitCount
1
StatusBarVisibility
1
GeometryConfiguration
Frame
{{0, 0}, {781, 167}}
RubberWindowFrame
62 385 781 470 0 0 1440 878
Module
PBXNavigatorGroup
Proportion
781pt
Proportion
50%
BecomeActive
1
ContentConfiguration
PBXProjectModuleGUID
1CD0528E0623707200166675
PBXProjectModuleLabel
Project Find
GeometryConfiguration
Frame
{{8, 0}, {773, 254}}
RubberWindowFrame
62 385 781 470 0 0 1440 878
Module
PBXProjectFindModule
Proportion
50%
Proportion
428pt
Name
Project Find
ServiceClasses
PBXProjectFindModule
StatusbarIsVisible
1
TableOfContents
1C530D57069F1CE1000CFCEE
1C530D58069F1CE1000CFCEE
1C530D59069F1CE1000CFCEE
1CDD528C0622207200134675
1C530D5A069F1CE1000CFCEE
1CE0B1FE06471DED0097A5F4
1CD0528E0623707200166675
WindowString
62 385 781 470 0 0 1440 878
WindowToolGUID
1C530D57069F1CE1000CFCEE
WindowToolIsVisible
0
Identifier
MENUSEPARATOR
FirstTimeWindowDisplayed
Identifier
windowTool.debuggerConsole
IsVertical
Layout
Dock
BecomeActive
ContentConfiguration
PBXProjectModuleGUID
1C78EAAC065D492600B07095
PBXProjectModuleLabel
Debugger Console
GeometryConfiguration
Frame
{{0, 0}, {650, 209}}
RubberWindowFrame
219 409 650 250 0 0 1440 878
Module
PBXDebugCLIModule
Proportion
209pt
Proportion
209pt
Name
Debugger Console
ServiceClasses
PBXDebugCLIModule
StatusbarIsVisible
TableOfContents
1C78EAAD065D492600B07095
FA80D3A0134CAD3000C92189
1C78EAAC065D492600B07095
ToolbarConfiguration
xcode.toolbar.config.consoleV3
WindowString
219 409 650 250 0 0 1440 878
WindowToolGUID
1C78EAAD065D492600B07095
WindowToolIsVisible
Identifier
windowTool.snapshots
Layout
Dock
Module
XCSnapshotModule
Proportion
100%
Proportion
100%
Name
Snapshots
ServiceClasses
XCSnapshotModule
StatusbarIsVisible
Yes
ToolbarConfiguration
xcode.toolbar.config.snapshots
WindowString
315 824 300 550 0 0 1440 878
WindowToolIsVisible
Yes
Identifier
windowTool.scm
Layout
Dock
ContentConfiguration
PBXProjectModuleGUID
1C78EAB2065D492600B07095
PBXProjectModuleLabel
<No Editor>
PBXSplitModuleInNavigatorKey
Split0
PBXProjectModuleGUID
1C78EAB3065D492600B07095
SplitCount
1
StatusBarVisibility
1
GeometryConfiguration
Frame
{{0, 0}, {452, 0}}
RubberWindowFrame
743 379 452 308 0 0 1280 1002
Module
PBXNavigatorGroup
Proportion
0pt
BecomeActive
1
ContentConfiguration
PBXProjectModuleGUID
1CD052920623707200166675
PBXProjectModuleLabel
SCM
GeometryConfiguration
ConsoleFrame
{{0, 259}, {452, 0}}
Frame
{{0, 7}, {452, 259}}
RubberWindowFrame
743 379 452 308 0 0 1280 1002
TableConfiguration
Status
30
FileName
199
Path
197.0950012207031
TableFrame
{{0, 0}, {452, 250}}
Module
PBXCVSModule
Proportion
262pt
Proportion
266pt
Name
SCM
ServiceClasses
PBXCVSModule
StatusbarIsVisible
1
TableOfContents
1C78EAB4065D492600B07095
1C78EAB5065D492600B07095
1C78EAB2065D492600B07095
1CD052920623707200166675
ToolbarConfiguration
xcode.toolbar.config.scm
WindowString
743 379 452 308 0 0 1280 1002
Identifier
windowTool.breakpoints
IsVertical
0
Layout
Dock
BecomeActive
1
ContentConfiguration
PBXBottomSmartGroupGIDs
1C77FABC04509CD000000102
PBXProjectModuleGUID
1CE0B1FE06471DED0097A5F4
PBXProjectModuleLabel
Files
PBXProjectStructureProvided
no
PBXSmartGroupTreeModuleColumnData
PBXSmartGroupTreeModuleColumnWidthsKey
168
PBXSmartGroupTreeModuleColumnsKey_v4
MainColumn
PBXSmartGroupTreeModuleOutlineStateKey_v7
PBXSmartGroupTreeModuleOutlineStateExpansionKey
1C77FABC04509CD000000102
PBXSmartGroupTreeModuleOutlineStateSelectionKey
0
PBXSmartGroupTreeModuleOutlineStateVisibleRectKey
{{0, 0}, {168, 350}}
PBXTopSmartGroupGIDs
XCIncludePerspectivesSwitch
0
GeometryConfiguration
Frame
{{0, 0}, {185, 368}}
GroupTreeTableConfiguration
MainColumn
168
RubberWindowFrame
315 424 744 409 0 0 1440 878
Module
PBXSmartGroupTreeModule
Proportion
185pt
ContentConfiguration
PBXProjectModuleGUID
1CA1AED706398EBD00589147
PBXProjectModuleLabel
Detail
GeometryConfiguration
Frame
{{190, 0}, {554, 368}}
RubberWindowFrame
315 424 744 409 0 0 1440 878
Module
XCDetailModule
Proportion
554pt
Proportion
368pt
MajorVersion
3
MinorVersion
0
Name
Breakpoints
ServiceClasses
PBXSmartGroupTreeModule
XCDetailModule
StatusbarIsVisible
1
TableOfContents
1CDDB66807F98D9800BB5817
1CDDB66907F98D9800BB5817
1CE0B1FE06471DED0097A5F4
1CA1AED706398EBD00589147
ToolbarConfiguration
xcode.toolbar.config.breakpointsV3
WindowString
315 424 744 409 0 0 1440 878
WindowToolGUID
1CDDB66807F98D9800BB5817
WindowToolIsVisible
1
Identifier
windowTool.debugAnimator
Layout
Dock
Module
PBXNavigatorGroup
Proportion
100%
Proportion
100%
Name
Debug Visualizer
ServiceClasses
PBXNavigatorGroup
StatusbarIsVisible
1
ToolbarConfiguration
xcode.toolbar.config.debugAnimatorV3
WindowString
100 100 700 500 0 0 1280 1002
Identifier
windowTool.bookmarks
Layout
Dock
Module
PBXBookmarksModule
Proportion
100%
Proportion
100%
Name
Bookmarks
ServiceClasses
PBXBookmarksModule
StatusbarIsVisible
0
WindowString
538 42 401 187 0 0 1280 1002
Identifier
windowTool.projectFormatConflicts
Layout
Dock
Module
XCProjectFormatConflictsModule
Proportion
100%
Proportion
100%
Name
Project Format Conflicts
ServiceClasses
XCProjectFormatConflictsModule
StatusbarIsVisible
0
WindowContentMinSize
450 300
WindowString
50 850 472 307 0 0 1440 877
Identifier
windowTool.classBrowser
Layout
Dock
BecomeActive
1
ContentConfiguration
OptionsSetName
Hierarchy, all classes
PBXProjectModuleGUID
1CA6456E063B45B4001379D8
PBXProjectModuleLabel
Class Browser - NSObject
GeometryConfiguration
ClassesFrame
{{0, 0}, {374, 96}}
ClassesTreeTableConfiguration
PBXClassNameColumnIdentifier
208
PBXClassBookColumnIdentifier
22
Frame
{{0, 0}, {630, 331}}
MembersFrame
{{0, 105}, {374, 395}}
MembersTreeTableConfiguration
PBXMemberTypeIconColumnIdentifier
22
PBXMemberNameColumnIdentifier
216
PBXMemberTypeColumnIdentifier
97
PBXMemberBookColumnIdentifier
22
PBXModuleWindowStatusBarHidden2
1
RubberWindowFrame
385 179 630 352 0 0 1440 878
Module
PBXClassBrowserModule
Proportion
332pt
Proportion
332pt
Name
Class Browser
ServiceClasses
PBXClassBrowserModule
StatusbarIsVisible
0
TableOfContents
1C0AD2AF069F1E9B00FABCE6
1C0AD2B0069F1E9B00FABCE6
1CA6456E063B45B4001379D8
ToolbarConfiguration
xcode.toolbar.config.classbrowser
WindowString
385 179 630 352 0 0 1440 878
WindowToolGUID
1C0AD2AF069F1E9B00FABCE6
WindowToolIsVisible
0
FirstTimeWindowDisplayed
Identifier
windowTool.refactoring
IncludeInToolsMenu
0
IsVertical
Layout
Dock
ContentConfiguration
PBXProjectModuleGUID
FAF45AA1134B7BC400D4C0F9
GeometryConfiguration
Frame
{{0, 0}, {500, 315}}
RubberWindowFrame
426 337 500 356 0 0 1440 878
XCRefactoringSplitViewLowerHeight
112
XCRefactoringSplitViewTotalHeight
232
Module
XCRefactoringModule
Proportion
315pt
Proportion
315pt
Name
Refactoring
ServiceClasses
XCRefactoringModule
StatusbarIsVisible
TableOfContents
FAF45AA2134B7BC400D4C0F9
FA80D3A1134CAD3000C92189
FAF45AA1134B7BC400D4C0F9
WindowString
426 337 500 356 0 0 1440 878
WindowToolGUID
FAF45AA2134B7BC400D4C0F9
WindowToolIsVisible
================================================
FILE: AePubReader/AePubReader.xcodeproj/FedeX.pbxuser
================================================
// !$*UTF8*$!
{
1D3623240D0F684500981E51 /* AePubReaderAppDelegate.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 416}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{158, 637}";
};
};
1D3623250D0F684500981E51 /* AePubReaderAppDelegate.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1965, 1001}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{1527, 499}";
};
};
1D6058900D05DD3D006BFB54 /* AePubReader */ = {
activeExec = 0;
executables = (
FAFA8E4C134A006A000291E2 /* AePubReader */,
);
};
28042007108E984D000629CD /* RootViewController.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 261}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 405}";
sepNavWindowFrame = "{{15, 74}, {1315, 799}}";
};
};
28042008108E984D000629CD /* RootViewController.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1048, 2145}}";
sepNavSelRange = "{3768, 0}";
sepNavVisRange = "{3413, 623}";
};
};
28042009108E984D000629CD /* DetailViewController.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1256, 936}}";
sepNavSelRange = "{1166, 0}";
sepNavVisRange = "{460, 1663}";
sepNavWindowFrame = "{{15, 74}, {1315, 799}}";
};
};
2804200A108E984D000629CD /* DetailViewController.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1104, 4069}}";
sepNavSelRange = "{8878, 0}";
sepNavVisRange = "{8517, 366}";
sepNavWindowFrame = "{{61, 79}, {1315, 799}}";
};
};
28A0AAE50D9B0CCF005BE974 /* AePubReader_Prefix.pch */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {762, 227}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 328}";
};
};
29B97313FDCFA39411CA2CEA /* Project object */ = {
activeBuildConfigurationName = Debug;
activeExecutable = FAFA8E4C134A006A000291E2 /* AePubReader */;
activeTarget = 1D6058900D05DD3D006BFB54 /* AePubReader */;
addToTargets = (
1D6058900D05DD3D006BFB54 /* AePubReader */,
);
codeSenseManager = FAFA8E65134A0073000291E2 /* Code sense */;
executables = (
FAFA8E4C134A006A000291E2 /* AePubReader */,
);
perUserDictionary = {
PBXConfiguration.PBXFileTableDataSource3.PBXBookmarksDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXBookmarksDataSource_NameID;
PBXFileTableDataSourceColumnWidthsKey = (
200,
200,
578,
);
PBXFileTableDataSourceColumnsKey = (
PBXBookmarksDataSource_LocationID,
PBXBookmarksDataSource_NameID,
PBXBookmarksDataSource_CommentsID,
);
};
PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
993,
20,
48,
43,
43,
20,
);
PBXFileTableDataSourceColumnsKey = (
PBXFileDataSource_FiletypeID,
PBXFileDataSource_Filename_ColumnID,
PBXFileDataSource_Built_ColumnID,
PBXFileDataSource_ObjectSize_ColumnID,
PBXFileDataSource_Errors_ColumnID,
PBXFileDataSource_Warnings_ColumnID,
PBXFileDataSource_Target_ColumnID,
);
};
PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
PBXFileTableDataSourceColumnWidthsKey = (
20,
728,
60,
20,
48,
43,
43,
);
PBXFileTableDataSourceColumnsKey = (
PBXFileDataSource_FiletypeID,
PBXFileDataSource_Filename_ColumnID,
PBXTargetDataSource_PrimaryAttribute,
PBXFileDataSource_Built_ColumnID,
PBXFileDataSource_ObjectSize_ColumnID,
PBXFileDataSource_Errors_ColumnID,
PBXFileDataSource_Warnings_ColumnID,
);
};
PBXPerProjectTemplateStateSaveDate = 323790096;
PBXWorkspaceStateSaveDate = 323790096;
};
perUserProjectItems = {
FA80D3DF134CB93000C92189 /* PBXTextBookmark */ = FA80D3DF134CB93000C92189 /* PBXTextBookmark */;
FA80D456134CE7CD00C92189 /* PBXTextBookmark */ = FA80D456134CE7CD00C92189 /* PBXTextBookmark */;
FA80D459134CE87800C92189 /* PBXBookmark */ = FA80D459134CE87800C92189 /* PBXBookmark */;
FA80D45D134CEF0E00C92189 /* PBXTextBookmark */ = FA80D45D134CEF0E00C92189 /* PBXTextBookmark */;
FA80D45E134CEF0E00C92189 /* PBXTextBookmark */ = FA80D45E134CEF0E00C92189 /* PBXTextBookmark */;
FA80D45F134CEF0E00C92189 /* PBXTextBookmark */ = FA80D45F134CEF0E00C92189 /* PBXTextBookmark */;
FA80D490134CEFD700C92189 /* PBXTextBookmark */ = FA80D490134CEFD700C92189 /* PBXTextBookmark */;
FA80D491134CEFD700C92189 /* PBXTextBookmark */ = FA80D491134CEFD700C92189 /* PBXTextBookmark */;
FADF8ECA134C745A00D84A87 /* PBXTextBookmark */ = FADF8ECA134C745A00D84A87 /* PBXTextBookmark */;
FAF45864134B1A6000D4C0F9 /* PBXTextBookmark */ = FAF45864134B1A6000D4C0F9 /* PBXTextBookmark */;
FAF45865134B1A6000D4C0F9 /* PBXTextBookmark */ = FAF45865134B1A6000D4C0F9 /* PBXTextBookmark */;
FAF45866134B1A6000D4C0F9 /* PBXTextBookmark */ = FAF45866134B1A6000D4C0F9 /* PBXTextBookmark */;
FAF45867134B1A6000D4C0F9 /* PBXTextBookmark */ = FAF45867134B1A6000D4C0F9 /* PBXTextBookmark */;
FAF45868134B1A6000D4C0F9 /* PBXTextBookmark */ = FAF45868134B1A6000D4C0F9 /* PBXTextBookmark */;
FAFA8E87134A0624000291E2 /* PlistBookmark */ = FAFA8E87134A0624000291E2 /* PlistBookmark */;
FAFA8E88134A0624000291E2 /* PBXTextBookmark */ = FAFA8E88134A0624000291E2 /* PBXTextBookmark */;
FAFA8E8B134A0624000291E2 /* PBXTextBookmark */ = FAFA8E8B134A0624000291E2 /* PBXTextBookmark */;
FAFA8F01134A0D6A000291E2 /* PBXTextBookmark */ = FAFA8F01134A0D6A000291E2 /* PBXTextBookmark */;
FAFA8F09134A0D6A000291E2 /* PBXTextBookmark */ = FAFA8F09134A0D6A000291E2 /* PBXTextBookmark */;
FAFA8F4E134A0F46000291E2 /* PBXTextBookmark */ = FAFA8F4E134A0F46000291E2 /* PBXTextBookmark */;
FAFA8F9D134A168C000291E2 /* PBXTextBookmark */ = FAFA8F9D134A168C000291E2 /* PBXTextBookmark */;
FAFA8F9E134A168C000291E2 /* PBXTextBookmark */ = FAFA8F9E134A168C000291E2 /* PBXTextBookmark */;
};
sourceControlManager = FAFA8E64134A0073000291E2 /* Source Control */;
userBuildSettings = {
};
};
29B97316FDCFA39411CA2CEA /* main.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 330}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 369}";
};
};
FA80D3DF134CB93000C92189 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = FAF45878134B1B6C00D4C0F9 /* EPub.m */;
name = "EPub.m: 116";
rLen = 0;
rLoc = 4401;
rType = 0;
vrLen = 1001;
vrLoc = 3415;
};
FA80D456134CE7CD00C92189 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 28042009108E984D000629CD /* DetailViewController.h */;
name = "DetailViewController.h: 52";
rLen = 0;
rLoc = 1358;
rType = 0;
vrLen = 481;
vrLoc = 156;
};
FA80D459134CE87800C92189 /* PBXBookmark */ = {
isa = PBXBookmark;
fRef = 2804200A108E984D000629CD /* DetailViewController.m */;
};
FA80D45D134CEF0E00C92189 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 28042007108E984D000629CD /* RootViewController.h */;
name = "RootViewController.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 405;
vrLoc = 0;
};
FA80D45E134CEF0E00C92189 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 28042008108E984D000629CD /* RootViewController.m */;
name = "RootViewController.m: 134";
rLen = 0;
rLoc = 3768;
rType = 0;
vrLen = 623;
vrLoc = 3413;
};
FA80D45F134CEF0E00C92189 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2804200A108E984D000629CD /* DetailViewController.m */;
name = "DetailViewController.m: 295";
rLen = 0;
rLoc = 8878;
rType = 0;
vrLen = 367;
vrLoc = 8459;
};
FA80D490134CEFD700C92189 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2804200A108E984D000629CD /* DetailViewController.m */;
name = "DetailViewController.m: 297";
rLen = 0;
rLoc = 8878;
rType = 0;
vrLen = 652;
vrLoc = 220;
};
FA80D491134CEFD700C92189 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 2804200A108E984D000629CD /* DetailViewController.m */;
name = "DetailViewController.m: 165";
rLen = 0;
rLoc = 5218;
rType = 0;
vrLen = 2026;
vrLoc = 3561;
};
FADF8ECA134C745A00D84A87 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = FAF45877134B1B6C00D4C0F9 /* EPub.h */;
name = "EPub.h: 37";
rLen = 0;
rLoc = 773;
rType = 0;
vrLen = 404;
vrLoc = 180;
};
FAF45847134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 1040}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 898}";
};
};
FAF4584B134B18F400D4C0F9 /* TouchXML.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 494}}";
sepNavSelRange = "{1241, 1}";
sepNavVisRange = "{675, 848}";
};
};
FAF45864134B1A6000D4C0F9 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = FAF45847134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m */;
name = "CXMLNode_XPathExtensions.m: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 898;
vrLoc = 0;
};
FAF45865134B1A6000D4C0F9 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = FAF4584B134B18F400D4C0F9 /* TouchXML.h */;
name = "TouchXML.h: 28";
rLen = 1;
rLoc = 1241;
rType = 0;
vrLen = 848;
vrLoc = 675;
};
FAF45866134B1A6000D4C0F9 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = FAFA8EA6134A06D6000291E2 /* ZipArchive.mm */;
name = "ZipArchive.mm: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 333;
vrLoc = 458;
};
FAF45867134B1A6000D4C0F9 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 1D3623240D0F684500981E51 /* AePubReaderAppDelegate.h */;
name = "AePubReaderAppDelegate.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 637;
vrLoc = 158;
};
FAF45868134B1A6000D4C0F9 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 1D3623250D0F684500981E51 /* AePubReaderAppDelegate.m */;
name = "AePubReaderAppDelegate.m: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 499;
vrLoc = 1527;
};
FAF45877134B1B6C00D4C0F9 /* EPub.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 494}}";
sepNavSelRange = "{773, 0}";
sepNavVisRange = "{180, 404}";
sepNavWindowFrame = "{{114, 79}, {1315, 799}}";
};
};
FAF45878134B1B6C00D4C0F9 /* EPub.m */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {1272, 1300}}";
sepNavSelRange = "{4401, 0}";
sepNavVisRange = "{3415, 1001}";
sepNavWindowFrame = "{{19, 74}, {1315, 799}}";
};
};
FAFA8E4C134A006A000291E2 /* AePubReader */ = {
isa = PBXExecutable;
activeArgIndices = (
);
argumentStrings = (
);
autoAttachOnCrash = 1;
breakpointsEnabled = 0;
configStateDict = {
};
customDataFormattersEnabled = 1;
dataTipCustomDataFormattersEnabled = 1;
dataTipShowTypeColumn = 1;
dataTipSortType = 0;
debuggerPlugin = GDBDebugging;
disassemblyDisplayState = 0;
dylibVariantSuffix = "";
enableDebugStr = 1;
environmentEntries = (
);
executableSystemSymbolLevel = 0;
executableUserSymbolLevel = 0;
libgmallocEnabled = 0;
name = AePubReader;
savedGlobals = {
};
showTypeColumn = 0;
sourceDirectories = (
);
};
FAFA8E64134A0073000291E2 /* Source Control */ = {
isa = PBXSourceControlManager;
fallbackIsa = XCSourceControlManager;
isSCMEnabled = 0;
scmConfiguration = {
repositoryNamesForRoots = {
"" = "";
};
};
};
FAFA8E65134A0073000291E2 /* Code sense */ = {
isa = PBXCodeSenseManager;
indexTemplatePath = "";
};
FAFA8E87134A0624000291E2 /* PlistBookmark */ = {
isa = PlistBookmark;
fRef = 8D1107310486CEB800E47090 /* AePubReader-Info.plist */;
fallbackIsa = PBXBookmark;
isK = 0;
kPath = (
);
name = "/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader-Info.plist";
rLen = 0;
rLoc = 9223372036854775808;
};
FAFA8E88134A0624000291E2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 28A0AAE50D9B0CCF005BE974 /* AePubReader_Prefix.pch */;
name = "AePubReader_Prefix.pch: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 328;
vrLoc = 0;
};
FAFA8E8B134A0624000291E2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = 29B97316FDCFA39411CA2CEA /* main.m */;
name = "main.m: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 369;
vrLoc = 0;
};
FAFA8E9B134A06D6000291E2 /* ZipArchive.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 702}}";
sepNavSelRange = "{409, 0}";
sepNavVisRange = "{20, 496}";
};
};
FAFA8E9D134A06D6000291E2 /* crypt.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 1729}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 952}";
};
};
FAFA8EA2134A06D6000291E2 /* unzip.c */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {846, 20774}}";
sepNavSelRange = "{49247, 0}";
sepNavVisRange = "{48931, 560}";
};
};
FAFA8EA3134A06D6000291E2 /* unzip.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 4550}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 891}";
};
};
FAFA8EA5134A06D6000291E2 /* zip.h */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 3107}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{0, 850}";
};
};
FAFA8EA6134A06D6000291E2 /* ZipArchive.mm */ = {
uiCtxt = {
sepNavIntBoundsRect = "{{0, 0}, {946, 4602}}";
sepNavSelRange = "{0, 0}";
sepNavVisRange = "{458, 333}";
};
};
FAFA8F01134A0D6A000291E2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = FAFA8EA5134A06D6000291E2 /* zip.h */;
name = "zip.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 850;
vrLoc = 0;
};
FAFA8F09134A0D6A000291E2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = FAFA8E9D134A06D6000291E2 /* crypt.h */;
name = "crypt.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 952;
vrLoc = 0;
};
FAFA8F4E134A0F46000291E2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = FAFA8EA2134A06D6000291E2 /* unzip.c */;
name = "unzip.c: 1537";
rLen = 0;
rLoc = 49247;
rType = 0;
vrLen = 568;
vrLoc = 48923;
};
FAFA8F9D134A168C000291E2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = FAFA8EA3134A06D6000291E2 /* unzip.h */;
name = "unzip.h: 1";
rLen = 0;
rLoc = 0;
rType = 0;
vrLen = 891;
vrLoc = 0;
};
FAFA8F9E134A168C000291E2 /* PBXTextBookmark */ = {
isa = PBXTextBookmark;
fRef = FAFA8E9B134A06D6000291E2 /* ZipArchive.h */;
name = "ZipArchive.h: 20";
rLen = 0;
rLoc = 409;
rType = 0;
vrLen = 496;
vrLoc = 20;
};
}
================================================
FILE: AePubReader/AePubReader.xcodeproj/project.pbxproj
================================================
// !$*UTF8*$!
{
archiveVersion = 1;
classes = {
};
objectVersion = 46;
objects = {
/* Begin PBXBuildFile section */
1D3623260D0F684500981E51 /* AePubReaderAppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 1D3623250D0F684500981E51 /* AePubReaderAppDelegate.m */; };
1D60589B0D05DD56006BFB54 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 29B97316FDCFA39411CA2CEA /* main.m */; };
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1D30AB110D05D00D00671497 /* Foundation.framework */; };
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 1DF5F4DF0D08C38300B7A737 /* UIKit.framework */; };
2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */; };
28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */ = {isa = PBXBuildFile; fileRef = 28AD735F0D9D9599002E5188 /* MainWindow.xib */; };
CA7E023515E388F3001F520B /* libz.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = CA7E023415E388F3001F520B /* libz.dylib */; };
FA11955A13BA921100025A2B /* UIWebView+SearchWebView.m in Sources */ = {isa = PBXBuildFile; fileRef = FA11955913BA921100025A2B /* UIWebView+SearchWebView.m */; };
FA11956013BA924400025A2B /* GTMNSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = FA11955E13BA924400025A2B /* GTMNSString+HTML.m */; };
FA11956113BA924400025A2B /* NSString+HTML.m in Sources */ = {isa = PBXBuildFile; fileRef = FA11955F13BA924400025A2B /* NSString+HTML.m */; };
FA11956413BA92CD00025A2B /* EPubViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FA11956313BA92CD00025A2B /* EPubViewController.m */; };
FA11956613BA93F100025A2B /* EPubView.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA11956513BA93F100025A2B /* EPubView.xib */; };
FA307A3C1371E2B000959622 /* ChapterListViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FA307A3A1371E2B000959622 /* ChapterListViewController.m */; };
FA307A3D1371E2B000959622 /* ChapterListViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA307A3B1371E2B000959622 /* ChapterListViewController.xib */; };
FA3B29B7137440380055A954 /* SearchWebView.js in Resources */ = {isa = PBXBuildFile; fileRef = FA3B29B5137434330055A954 /* SearchWebView.js */; };
FA4FBE561372F6A400C4E728 /* SearchResult.m in Sources */ = {isa = PBXBuildFile; fileRef = FA4FBE551372F6A400C4E728 /* SearchResult.m */; };
FA881E4E1372CA9200FBD25F /* orangeslide.png in Resources */ = {isa = PBXBuildFile; fileRef = FA881E4B1372CA9200FBD25F /* orangeslide.png */; };
FA881E4F1372CA9200FBD25F /* slider_ball.png in Resources */ = {isa = PBXBuildFile; fileRef = FA881E4C1372CA9200FBD25F /* slider_ball.png */; };
FA881E501372CA9200FBD25F /* yellowslide.png in Resources */ = {isa = PBXBuildFile; fileRef = FA881E4D1372CA9200FBD25F /* yellowslide.png */; };
FA881E591372E96000FBD25F /* SearchResultsViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = FA881E571372E96000FBD25F /* SearchResultsViewController.m */; };
FA881E5A1372E96000FBD25F /* SearchResultsViewController.xib in Resources */ = {isa = PBXBuildFile; fileRef = FA881E581372E96000FBD25F /* SearchResultsViewController.xib */; };
FAA85387134F422F0035F235 /* Chapter.m in Sources */ = {isa = PBXBuildFile; fileRef = FAA85386134F422F0035F235 /* Chapter.m */; };
FAF4584C134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45831134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.m */; };
FAF4584D134B18F400D4C0F9 /* CXMLNode_CreationExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45833134B18F400D4C0F9 /* CXMLNode_CreationExtensions.m */; };
FAF4584E134B18F400D4C0F9 /* CXHTMLDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45835134B18F400D4C0F9 /* CXHTMLDocument.m */; };
FAF4584F134B18F400D4C0F9 /* CXMLDocument.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45837134B18F400D4C0F9 /* CXMLDocument.m */; };
FAF45850134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45839134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.m */; };
FAF45851134B18F400D4C0F9 /* CXMLElement.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF4583B134B18F400D4C0F9 /* CXMLElement.m */; };
FAF45852134B18F400D4C0F9 /* CXMLElement_CreationExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF4583D134B18F400D4C0F9 /* CXMLElement_CreationExtensions.m */; };
FAF45853134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF4583F134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.m */; };
FAF45854134B18F400D4C0F9 /* CXMLNamespaceNode.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45841134B18F400D4C0F9 /* CXMLNamespaceNode.m */; };
FAF45855134B18F400D4C0F9 /* CXMLNode.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45843134B18F400D4C0F9 /* CXMLNode.m */; };
FAF45856134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45845134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.m */; };
FAF45857134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45847134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m */; };
FAF45858134B18F400D4C0F9 /* CTidy.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF4584A134B18F400D4C0F9 /* CTidy.m */; };
FAF45879134B1B6C00D4C0F9 /* EPub.m in Sources */ = {isa = PBXBuildFile; fileRef = FAF45878134B1B6C00D4C0F9 /* EPub.m */; };
FAFA8E86134A0603000291E2 /* vhugo.epub in Resources */ = {isa = PBXBuildFile; fileRef = FAFA8E85134A0603000291E2 /* vhugo.epub */; };
FAFA8EA7134A06D6000291E2 /* ioapi.c in Sources */ = {isa = PBXBuildFile; fileRef = FAFA8E9E134A06D6000291E2 /* ioapi.c */; };
FAFA8EA8134A06D6000291E2 /* mztools.c in Sources */ = {isa = PBXBuildFile; fileRef = FAFA8EA0134A06D6000291E2 /* mztools.c */; };
FAFA8EA9134A06D6000291E2 /* unzip.c in Sources */ = {isa = PBXBuildFile; fileRef = FAFA8EA2134A06D6000291E2 /* unzip.c */; };
FAFA8EAA134A06D6000291E2 /* zip.c in Sources */ = {isa = PBXBuildFile; fileRef = FAFA8EA4134A06D6000291E2 /* zip.c */; };
FAFA8EAB134A06D6000291E2 /* ZipArchive.mm in Sources */ = {isa = PBXBuildFile; fileRef = FAFA8EA6134A06D6000291E2 /* ZipArchive.mm */; };
/* End PBXBuildFile section */
/* Begin PBXFileReference section */
1D30AB110D05D00D00671497 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = System/Library/Frameworks/Foundation.framework; sourceTree = SDKROOT; };
1D3623240D0F684500981E51 /* AePubReaderAppDelegate.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AePubReaderAppDelegate.h; sourceTree = ""; };
1D3623250D0F684500981E51 /* AePubReaderAppDelegate.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = AePubReaderAppDelegate.m; sourceTree = ""; wrapsLines = 0; };
1D6058910D05DD3D006BFB54 /* AePubReader.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = AePubReader.app; sourceTree = BUILT_PRODUCTS_DIR; };
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = UIKit.framework; path = System/Library/Frameworks/UIKit.framework; sourceTree = SDKROOT; };
2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreGraphics.framework; path = System/Library/Frameworks/CoreGraphics.framework; sourceTree = SDKROOT; };
28A0AAE50D9B0CCF005BE974 /* AePubReader_Prefix.pch */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = AePubReader_Prefix.pch; sourceTree = ""; };
28AD735F0D9D9599002E5188 /* MainWindow.xib */ = {isa = PBXFileReference; lastKnownFileType = file.xib; path = MainWindow.xib; sourceTree = ""; };
29B97316FDCFA39411CA2CEA /* main.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = ""; };
8D1107310486CEB800E47090 /* AePubReader-Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = "AePubReader-Info.plist"; plistStructureDefinitionIdentifier = "com.apple.xcode.plist.structure-definition.iphone.info-plist"; sourceTree = ""; };
CA7E023415E388F3001F520B /* libz.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libz.dylib; path = usr/lib/libz.dylib; sourceTree = SDKROOT; };
FA11955813BA921100025A2B /* UIWebView+SearchWebView.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "UIWebView+SearchWebView.h"; sourceTree = ""; };
FA11955913BA921100025A2B /* UIWebView+SearchWebView.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "UIWebView+SearchWebView.m"; sourceTree = ""; };
FA11955B13BA924400025A2B /* GTMDefines.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = GTMDefines.h; sourceTree = ""; };
FA11955C13BA924400025A2B /* GTMNSString+HTML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "GTMNSString+HTML.h"; sourceTree = ""; };
FA11955D13BA924400025A2B /* NSString+HTML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = "NSString+HTML.h"; sourceTree = ""; };
FA11955E13BA924400025A2B /* GTMNSString+HTML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "GTMNSString+HTML.m"; sourceTree = ""; };
FA11955F13BA924400025A2B /* NSString+HTML.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = "NSString+HTML.m"; sourceTree = ""; };
FA11956213BA92CD00025A2B /* EPubViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EPubViewController.h; sourceTree = ""; };
FA11956313BA92CD00025A2B /* EPubViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EPubViewController.m; sourceTree = ""; };
FA11956513BA93F100025A2B /* EPubView.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = EPubView.xib; path = Classes/EPubView.xib; sourceTree = ""; };
FA307A391371E2B000959622 /* ChapterListViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ChapterListViewController.h; sourceTree = ""; };
FA307A3A1371E2B000959622 /* ChapterListViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = ChapterListViewController.m; sourceTree = ""; };
FA307A3B1371E2B000959622 /* ChapterListViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = ChapterListViewController.xib; path = Classes/ChapterListViewController.xib; sourceTree = ""; };
FA3B29B5137434330055A954 /* SearchWebView.js */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.javascript; path = SearchWebView.js; sourceTree = ""; };
FA4FBE541372F6A400C4E728 /* SearchResult.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchResult.h; sourceTree = ""; };
FA4FBE551372F6A400C4E728 /* SearchResult.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchResult.m; sourceTree = ""; wrapsLines = 0; };
FA881E4B1372CA9200FBD25F /* orangeslide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = orangeslide.png; sourceTree = ""; };
FA881E4C1372CA9200FBD25F /* slider_ball.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = slider_ball.png; sourceTree = ""; };
FA881E4D1372CA9200FBD25F /* yellowslide.png */ = {isa = PBXFileReference; lastKnownFileType = image.png; path = yellowslide.png; sourceTree = ""; };
FA881E561372E96000FBD25F /* SearchResultsViewController.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = SearchResultsViewController.h; sourceTree = ""; wrapsLines = 0; };
FA881E571372E96000FBD25F /* SearchResultsViewController.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = SearchResultsViewController.m; sourceTree = ""; wrapsLines = 0; };
FA881E581372E96000FBD25F /* SearchResultsViewController.xib */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = file.xib; name = SearchResultsViewController.xib; path = Classes/SearchResultsViewController.xib; sourceTree = ""; };
FAA85385134F422F0035F235 /* Chapter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = Chapter.h; sourceTree = ""; };
FAA85386134F422F0035F235 /* Chapter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = Chapter.m; sourceTree = ""; wrapsLines = 0; };
FAF45830134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLDocument_CreationExtensions.h; sourceTree = ""; };
FAF45831134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLDocument_CreationExtensions.m; sourceTree = ""; };
FAF45832134B18F400D4C0F9 /* CXMLNode_CreationExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNode_CreationExtensions.h; sourceTree = ""; };
FAF45833134B18F400D4C0F9 /* CXMLNode_CreationExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLNode_CreationExtensions.m; sourceTree = ""; };
FAF45834134B18F400D4C0F9 /* CXHTMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXHTMLDocument.h; sourceTree = ""; };
FAF45835134B18F400D4C0F9 /* CXHTMLDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXHTMLDocument.m; sourceTree = ""; };
FAF45836134B18F400D4C0F9 /* CXMLDocument.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLDocument.h; sourceTree = ""; };
FAF45837134B18F400D4C0F9 /* CXMLDocument.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLDocument.m; sourceTree = ""; };
FAF45838134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLDocument_PrivateExtensions.h; sourceTree = ""; };
FAF45839134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLDocument_PrivateExtensions.m; sourceTree = ""; };
FAF4583A134B18F400D4C0F9 /* CXMLElement.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLElement.h; sourceTree = ""; };
FAF4583B134B18F400D4C0F9 /* CXMLElement.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLElement.m; sourceTree = ""; };
FAF4583C134B18F400D4C0F9 /* CXMLElement_CreationExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLElement_CreationExtensions.h; sourceTree = ""; };
FAF4583D134B18F400D4C0F9 /* CXMLElement_CreationExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLElement_CreationExtensions.m; sourceTree = ""; };
FAF4583E134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLElement_ElementTreeExtensions.h; sourceTree = ""; };
FAF4583F134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLElement_ElementTreeExtensions.m; sourceTree = ""; };
FAF45840134B18F400D4C0F9 /* CXMLNamespaceNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNamespaceNode.h; sourceTree = ""; };
FAF45841134B18F400D4C0F9 /* CXMLNamespaceNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLNamespaceNode.m; sourceTree = ""; };
FAF45842134B18F400D4C0F9 /* CXMLNode.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNode.h; sourceTree = ""; };
FAF45843134B18F400D4C0F9 /* CXMLNode.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLNode.m; sourceTree = ""; };
FAF45844134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNode_PrivateExtensions.h; sourceTree = ""; };
FAF45845134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLNode_PrivateExtensions.m; sourceTree = ""; };
FAF45846134B18F400D4C0F9 /* CXMLNode_XPathExtensions.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CXMLNode_XPathExtensions.h; sourceTree = ""; };
FAF45847134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CXMLNode_XPathExtensions.m; sourceTree = ""; };
FAF45849134B18F400D4C0F9 /* CTidy.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CTidy.h; sourceTree = ""; };
FAF4584A134B18F400D4C0F9 /* CTidy.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CTidy.m; sourceTree = ""; };
FAF4584B134B18F400D4C0F9 /* TouchXML.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = TouchXML.h; sourceTree = ""; };
FAF45877134B1B6C00D4C0F9 /* EPub.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = EPub.h; sourceTree = ""; };
FAF45878134B1B6C00D4C0F9 /* EPub.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = EPub.m; sourceTree = ""; wrapsLines = 0; };
FAFA8E85134A0603000291E2 /* vhugo.epub */ = {isa = PBXFileReference; lastKnownFileType = file; path = vhugo.epub; sourceTree = ""; };
FAFA8E9B134A06D6000291E2 /* ZipArchive.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ZipArchive.h; sourceTree = ""; };
FAFA8E9D134A06D6000291E2 /* crypt.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = crypt.h; sourceTree = ""; };
FAFA8E9E134A06D6000291E2 /* ioapi.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = ioapi.c; sourceTree = ""; };
FAFA8E9F134A06D6000291E2 /* ioapi.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = ioapi.h; sourceTree = ""; };
FAFA8EA0134A06D6000291E2 /* mztools.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = mztools.c; sourceTree = ""; };
FAFA8EA1134A06D6000291E2 /* mztools.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = mztools.h; sourceTree = ""; };
FAFA8EA2134A06D6000291E2 /* unzip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = unzip.c; sourceTree = ""; };
FAFA8EA3134A06D6000291E2 /* unzip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = unzip.h; sourceTree = ""; };
FAFA8EA4134A06D6000291E2 /* zip.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = zip.c; sourceTree = ""; };
FAFA8EA5134A06D6000291E2 /* zip.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = zip.h; sourceTree = ""; };
FAFA8EA6134A06D6000291E2 /* ZipArchive.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = ZipArchive.mm; sourceTree = ""; };
/* End PBXFileReference section */
/* Begin PBXFrameworksBuildPhase section */
1D60588F0D05DD3D006BFB54 /* Frameworks */ = {
isa = PBXFrameworksBuildPhase;
buildActionMask = 2147483647;
files = (
CA7E023515E388F3001F520B /* libz.dylib in Frameworks */,
1D60589F0D05DD5A006BFB54 /* Foundation.framework in Frameworks */,
1DF5F4E00D08C38300B7A737 /* UIKit.framework in Frameworks */,
2892E4100DC94CBA00A64D0F /* CoreGraphics.framework in Frameworks */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXFrameworksBuildPhase section */
/* Begin PBXGroup section */
080E96DDFE201D6D7F000001 /* Classes */ = {
isa = PBXGroup;
children = (
FAF4582D134B18D600D4C0F9 /* TouchXML */,
FAF4585B134B195500D4C0F9 /* ZipArchive */,
1D3623240D0F684500981E51 /* AePubReaderAppDelegate.h */,
1D3623250D0F684500981E51 /* AePubReaderAppDelegate.m */,
FA307A391371E2B000959622 /* ChapterListViewController.h */,
FA307A3A1371E2B000959622 /* ChapterListViewController.m */,
FAF45877134B1B6C00D4C0F9 /* EPub.h */,
FAF45878134B1B6C00D4C0F9 /* EPub.m */,
FA11956213BA92CD00025A2B /* EPubViewController.h */,
FA11956313BA92CD00025A2B /* EPubViewController.m */,
FAA85385134F422F0035F235 /* Chapter.h */,
FAA85386134F422F0035F235 /* Chapter.m */,
FA881E561372E96000FBD25F /* SearchResultsViewController.h */,
FA881E571372E96000FBD25F /* SearchResultsViewController.m */,
FA4FBE541372F6A400C4E728 /* SearchResult.h */,
FA4FBE551372F6A400C4E728 /* SearchResult.m */,
FA11955813BA921100025A2B /* UIWebView+SearchWebView.h */,
FA11955913BA921100025A2B /* UIWebView+SearchWebView.m */,
FA11955B13BA924400025A2B /* GTMDefines.h */,
FA11955C13BA924400025A2B /* GTMNSString+HTML.h */,
FA11955D13BA924400025A2B /* NSString+HTML.h */,
FA11955E13BA924400025A2B /* GTMNSString+HTML.m */,
FA11955F13BA924400025A2B /* NSString+HTML.m */,
);
path = Classes;
sourceTree = "";
};
19C28FACFE9D520D11CA2CBB /* Products */ = {
isa = PBXGroup;
children = (
1D6058910D05DD3D006BFB54 /* AePubReader.app */,
);
name = Products;
sourceTree = "";
};
29B97314FDCFA39411CA2CEA /* CustomTemplate */ = {
isa = PBXGroup;
children = (
080E96DDFE201D6D7F000001 /* Classes */,
29B97315FDCFA39411CA2CEA /* Other Sources */,
29B97317FDCFA39411CA2CEA /* Resources */,
29B97323FDCFA39411CA2CEA /* Frameworks */,
19C28FACFE9D520D11CA2CBB /* Products */,
);
name = CustomTemplate;
sourceTree = "";
};
29B97315FDCFA39411CA2CEA /* Other Sources */ = {
isa = PBXGroup;
children = (
28A0AAE50D9B0CCF005BE974 /* AePubReader_Prefix.pch */,
29B97316FDCFA39411CA2CEA /* main.m */,
);
name = "Other Sources";
sourceTree = "";
};
29B97317FDCFA39411CA2CEA /* Resources */ = {
isa = PBXGroup;
children = (
FA3B29B5137434330055A954 /* SearchWebView.js */,
FA881E4B1372CA9200FBD25F /* orangeslide.png */,
FA881E4C1372CA9200FBD25F /* slider_ball.png */,
FA881E4D1372CA9200FBD25F /* yellowslide.png */,
FAFA8E85134A0603000291E2 /* vhugo.epub */,
FA11956513BA93F100025A2B /* EPubView.xib */,
FA881E581372E96000FBD25F /* SearchResultsViewController.xib */,
FA307A3B1371E2B000959622 /* ChapterListViewController.xib */,
28AD735F0D9D9599002E5188 /* MainWindow.xib */,
8D1107310486CEB800E47090 /* AePubReader-Info.plist */,
);
name = Resources;
sourceTree = "";
};
29B97323FDCFA39411CA2CEA /* Frameworks */ = {
isa = PBXGroup;
children = (
CA7E023415E388F3001F520B /* libz.dylib */,
1DF5F4DF0D08C38300B7A737 /* UIKit.framework */,
1D30AB110D05D00D00671497 /* Foundation.framework */,
2892E40F0DC94CBA00A64D0F /* CoreGraphics.framework */,
);
name = Frameworks;
sourceTree = "";
};
FAF4582D134B18D600D4C0F9 /* TouchXML */ = {
isa = PBXGroup;
children = (
FAF4582E134B18F400D4C0F9 /* Source */,
);
name = TouchXML;
path = ..;
sourceTree = "";
};
FAF4582E134B18F400D4C0F9 /* Source */ = {
isa = PBXGroup;
children = (
FAF4582F134B18F400D4C0F9 /* Creation */,
FAF45834134B18F400D4C0F9 /* CXHTMLDocument.h */,
FAF45835134B18F400D4C0F9 /* CXHTMLDocument.m */,
FAF45836134B18F400D4C0F9 /* CXMLDocument.h */,
FAF45837134B18F400D4C0F9 /* CXMLDocument.m */,
FAF45838134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.h */,
FAF45839134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.m */,
FAF4583A134B18F400D4C0F9 /* CXMLElement.h */,
FAF4583B134B18F400D4C0F9 /* CXMLElement.m */,
FAF4583C134B18F400D4C0F9 /* CXMLElement_CreationExtensions.h */,
FAF4583D134B18F400D4C0F9 /* CXMLElement_CreationExtensions.m */,
FAF4583E134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.h */,
FAF4583F134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.m */,
FAF45840134B18F400D4C0F9 /* CXMLNamespaceNode.h */,
FAF45841134B18F400D4C0F9 /* CXMLNamespaceNode.m */,
FAF45842134B18F400D4C0F9 /* CXMLNode.h */,
FAF45843134B18F400D4C0F9 /* CXMLNode.m */,
FAF45844134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.h */,
FAF45845134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.m */,
FAF45846134B18F400D4C0F9 /* CXMLNode_XPathExtensions.h */,
FAF45847134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m */,
FAF45848134B18F400D4C0F9 /* Tidy */,
FAF4584B134B18F400D4C0F9 /* TouchXML.h */,
);
path = Source;
sourceTree = "";
};
FAF4582F134B18F400D4C0F9 /* Creation */ = {
isa = PBXGroup;
children = (
FAF45830134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.h */,
FAF45831134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.m */,
FAF45832134B18F400D4C0F9 /* CXMLNode_CreationExtensions.h */,
FAF45833134B18F400D4C0F9 /* CXMLNode_CreationExtensions.m */,
);
path = Creation;
sourceTree = "";
};
FAF45848134B18F400D4C0F9 /* Tidy */ = {
isa = PBXGroup;
children = (
FAF45849134B18F400D4C0F9 /* CTidy.h */,
FAF4584A134B18F400D4C0F9 /* CTidy.m */,
);
path = Tidy;
sourceTree = "";
};
FAF4585B134B195500D4C0F9 /* ZipArchive */ = {
isa = PBXGroup;
children = (
FAFA8E9B134A06D6000291E2 /* ZipArchive.h */,
FAFA8E9C134A06D6000291E2 /* minizip */,
FAFA8EA6134A06D6000291E2 /* ZipArchive.mm */,
);
name = ZipArchive;
sourceTree = "";
};
FAFA8E9C134A06D6000291E2 /* minizip */ = {
isa = PBXGroup;
children = (
FAFA8E9D134A06D6000291E2 /* crypt.h */,
FAFA8E9E134A06D6000291E2 /* ioapi.c */,
FAFA8E9F134A06D6000291E2 /* ioapi.h */,
FAFA8EA0134A06D6000291E2 /* mztools.c */,
FAFA8EA1134A06D6000291E2 /* mztools.h */,
FAFA8EA2134A06D6000291E2 /* unzip.c */,
FAFA8EA3134A06D6000291E2 /* unzip.h */,
FAFA8EA4134A06D6000291E2 /* zip.c */,
FAFA8EA5134A06D6000291E2 /* zip.h */,
);
path = minizip;
sourceTree = "";
};
/* End PBXGroup section */
/* Begin PBXNativeTarget section */
1D6058900D05DD3D006BFB54 /* AePubReader */ = {
isa = PBXNativeTarget;
buildConfigurationList = 1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AePubReader" */;
buildPhases = (
1D60588D0D05DD3D006BFB54 /* Resources */,
1D60588E0D05DD3D006BFB54 /* Sources */,
1D60588F0D05DD3D006BFB54 /* Frameworks */,
);
buildRules = (
);
dependencies = (
);
name = AePubReader;
productName = AePubReader;
productReference = 1D6058910D05DD3D006BFB54 /* AePubReader.app */;
productType = "com.apple.product-type.application";
};
/* End PBXNativeTarget section */
/* Begin PBXProject section */
29B97313FDCFA39411CA2CEA /* Project object */ = {
isa = PBXProject;
buildConfigurationList = C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AePubReader" */;
compatibilityVersion = "Xcode 3.2";
developmentRegion = English;
hasScannedForEncodings = 1;
knownRegions = (
English,
Japanese,
French,
German,
en,
);
mainGroup = 29B97314FDCFA39411CA2CEA /* CustomTemplate */;
projectDirPath = "";
projectRoot = "";
targets = (
1D6058900D05DD3D006BFB54 /* AePubReader */,
);
};
/* End PBXProject section */
/* Begin PBXResourcesBuildPhase section */
1D60588D0D05DD3D006BFB54 /* Resources */ = {
isa = PBXResourcesBuildPhase;
buildActionMask = 2147483647;
files = (
FA3B29B7137440380055A954 /* SearchWebView.js in Resources */,
28AD73600D9D9599002E5188 /* MainWindow.xib in Resources */,
FAFA8E86134A0603000291E2 /* vhugo.epub in Resources */,
FA307A3D1371E2B000959622 /* ChapterListViewController.xib in Resources */,
FA881E4E1372CA9200FBD25F /* orangeslide.png in Resources */,
FA881E4F1372CA9200FBD25F /* slider_ball.png in Resources */,
FA881E501372CA9200FBD25F /* yellowslide.png in Resources */,
FA881E5A1372E96000FBD25F /* SearchResultsViewController.xib in Resources */,
FA11956613BA93F100025A2B /* EPubView.xib in Resources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXResourcesBuildPhase section */
/* Begin PBXSourcesBuildPhase section */
1D60588E0D05DD3D006BFB54 /* Sources */ = {
isa = PBXSourcesBuildPhase;
buildActionMask = 2147483647;
files = (
1D60589B0D05DD56006BFB54 /* main.m in Sources */,
1D3623260D0F684500981E51 /* AePubReaderAppDelegate.m in Sources */,
FAFA8EA7134A06D6000291E2 /* ioapi.c in Sources */,
FAFA8EA8134A06D6000291E2 /* mztools.c in Sources */,
FAFA8EA9134A06D6000291E2 /* unzip.c in Sources */,
FAFA8EAA134A06D6000291E2 /* zip.c in Sources */,
FAFA8EAB134A06D6000291E2 /* ZipArchive.mm in Sources */,
FAF4584C134B18F400D4C0F9 /* CXMLDocument_CreationExtensions.m in Sources */,
FAF4584D134B18F400D4C0F9 /* CXMLNode_CreationExtensions.m in Sources */,
FAF4584E134B18F400D4C0F9 /* CXHTMLDocument.m in Sources */,
FAF4584F134B18F400D4C0F9 /* CXMLDocument.m in Sources */,
FAF45850134B18F400D4C0F9 /* CXMLDocument_PrivateExtensions.m in Sources */,
FAF45851134B18F400D4C0F9 /* CXMLElement.m in Sources */,
FAF45852134B18F400D4C0F9 /* CXMLElement_CreationExtensions.m in Sources */,
FAF45853134B18F400D4C0F9 /* CXMLElement_ElementTreeExtensions.m in Sources */,
FAF45854134B18F400D4C0F9 /* CXMLNamespaceNode.m in Sources */,
FAF45855134B18F400D4C0F9 /* CXMLNode.m in Sources */,
FAF45856134B18F400D4C0F9 /* CXMLNode_PrivateExtensions.m in Sources */,
FAF45857134B18F400D4C0F9 /* CXMLNode_XPathExtensions.m in Sources */,
FAF45858134B18F400D4C0F9 /* CTidy.m in Sources */,
FAF45879134B1B6C00D4C0F9 /* EPub.m in Sources */,
FAA85387134F422F0035F235 /* Chapter.m in Sources */,
FA307A3C1371E2B000959622 /* ChapterListViewController.m in Sources */,
FA881E591372E96000FBD25F /* SearchResultsViewController.m in Sources */,
FA4FBE561372F6A400C4E728 /* SearchResult.m in Sources */,
FA11955A13BA921100025A2B /* UIWebView+SearchWebView.m in Sources */,
FA11956013BA924400025A2B /* GTMNSString+HTML.m in Sources */,
FA11956113BA924400025A2B /* NSString+HTML.m in Sources */,
FA11956413BA92CD00025A2B /* EPubViewController.m in Sources */,
);
runOnlyForDeploymentPostprocessing = 0;
};
/* End PBXSourcesBuildPhase section */
/* Begin XCBuildConfiguration section */
1D6058940D05DD3E006BFB54 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = NO;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)\"",
);
GCC_DYNAMIC_NO_PIC = NO;
GCC_OPTIMIZATION_LEVEL = 0;
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = AePubReader_Prefix.pch;
INFOPLIST_FILE = "AePubReader-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 3.2;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)\"",
);
OTHER_LDFLAGS = (
"-lxml2",
"-ObjC",
"-lstdc++",
);
PRODUCT_NAME = AePubReader;
};
name = Debug;
};
1D6058950D05DD3E006BFB54 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ALWAYS_SEARCH_USER_PATHS = NO;
COPY_PHASE_STRIP = YES;
FRAMEWORK_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)\"",
);
GCC_PRECOMPILE_PREFIX_HEADER = YES;
GCC_PREFIX_HEADER = AePubReader_Prefix.pch;
INFOPLIST_FILE = "AePubReader-Info.plist";
IPHONEOS_DEPLOYMENT_TARGET = 3.2;
LIBRARY_SEARCH_PATHS = (
"$(inherited)",
"\"$(SRCROOT)\"",
);
OTHER_LDFLAGS = (
"-lxml2",
"-ObjC",
"-lstdc++",
);
PRODUCT_NAME = AePubReader;
VALIDATE_PRODUCT = YES;
};
name = Release;
};
C01FCF4F08A954540054247B /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = /usr/include/libxml2;
OTHER_LDFLAGS = "-lxml2";
PREBINDING = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = 2;
};
name = Debug;
};
C01FCF5008A954540054247B /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
ARCHS = "$(ARCHS_UNIVERSAL_IPHONE_OS)";
"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
GCC_C_LANGUAGE_STANDARD = c99;
GCC_WARN_ABOUT_RETURN_TYPE = YES;
GCC_WARN_UNUSED_VARIABLE = YES;
HEADER_SEARCH_PATHS = /usr/include/libxml2;
OTHER_CFLAGS = "-DNS_BLOCK_ASSERTIONS=1";
OTHER_LDFLAGS = "-lxml2";
PREBINDING = NO;
SDKROOT = iphoneos;
TARGETED_DEVICE_FAMILY = 2;
};
name = Release;
};
/* End XCBuildConfiguration section */
/* Begin XCConfigurationList section */
1D6058960D05DD3E006BFB54 /* Build configuration list for PBXNativeTarget "AePubReader" */ = {
isa = XCConfigurationList;
buildConfigurations = (
1D6058940D05DD3E006BFB54 /* Debug */,
1D6058950D05DD3E006BFB54 /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
C01FCF4E08A954540054247B /* Build configuration list for PBXProject "AePubReader" */ = {
isa = XCConfigurationList;
buildConfigurations = (
C01FCF4F08A954540054247B /* Debug */,
C01FCF5008A954540054247B /* Release */,
);
defaultConfigurationIsVisible = 0;
defaultConfigurationName = Release;
};
/* End XCConfigurationList section */
};
rootObject = 29B97313FDCFA39411CA2CEA /* Project object */;
}
================================================
FILE: AePubReader/AePubReader.xcodeproj/project.xcworkspace/contents.xcworkspacedata
================================================
================================================
FILE: AePubReader/AePubReader.xcodeproj/project.xcworkspace/xcuserdata/FedeX.xcuserdatad/UserInterfaceState.xcuserstate
================================================
$archiver
NSKeyedArchiver
$objects
$null
$class
CF$UID
116
NS.keys
CF$UID
2
CF$UID
3
CF$UID
4
CF$UID
5
CF$UID
6
CF$UID
7
CF$UID
8
CF$UID
9
CF$UID
10
CF$UID
11
CF$UID
12
CF$UID
13
CF$UID
14
CF$UID
15
CF$UID
16
CF$UID
17
CF$UID
18
CF$UID
19
CF$UID
20
CF$UID
21
CF$UID
22
CF$UID
23
NS.objects
CF$UID
24
CF$UID
201
CF$UID
287
CF$UID
372
CF$UID
453
CF$UID
532
CF$UID
627
CF$UID
1552
CF$UID
1634
CF$UID
1712
CF$UID
2012
CF$UID
2092
CF$UID
2171
CF$UID
2259
CF$UID
2641
CF$UID
2718
CF$UID
2795
CF$UID
2874
CF$UID
2952
CF$UID
3028
CF$UID
3109
CF$UID
3188
2916DB77-8E56-4922-A079-E74A2AA44706
9136BC6B-CE52-4594-BCD7-DEE2ACC1E915
84A36473-5649-40AE-97D0-3F631E0177AF
2666C229-14F9-4626-8A99-95534E4DACD9
283EACD3-D2D1-4222-99FC-5602696EFD4B
3A800955-F8BD-4BD0-AF2A-7E9152A5CBC4
IDEWorkspaceDocument
2846AA22-629E-4ECE-AC3B-C2ED0AC3B27E
BF8658B1-C27E-4B3F-98E7-7AF34EA0AD0C
36BA9D39-456C-4A37-BDAC-2469D71E2213
1E4F5274-CE8E-49C8-94BB-23815E1760E8
1EC1684E-FBC2-4F16-ACAD-3575A2AE2DAE
92E4610E-DF92-407D-BB13-A1FB8055DD3F
74E795D0-F5B6-4B5B-9C37-5933577E5787
795925F7-E3F8-442F-8A68-0FC2F62AA6AB
0801AC4D-2887-4BC3-9421-FA873663EDEF
864E389C-56F2-4BFC-A034-80B8A5C8A4D0
9D813ED7-B8AA-4808-BAB8-964201EA7F19
BD9A2B18-403D-46CD-9D48-E74BCDE84B1A
D5EB7738-534F-4A95-82B7-F431E2422B0A
AC6BF77F-D59A-4E12-8CC5-C5D1765D4045
02FC5047-DCB0-425A-8F97-A32B4B42F5CD
$class
CF$UID
105
NS.keys
CF$UID
25
CF$UID
26
CF$UID
27
CF$UID
28
CF$UID
29
CF$UID
30
NS.objects
CF$UID
31
CF$UID
33
CF$UID
34
CF$UID
27
CF$UID
200
CF$UID
2
IDEOrderedWorkspaceTabControllers
IDEWindowToolbarIsVisible
IDEWorkspaceTabController_C306670D-703D-4B4E-BF6B-D42AA2D88A94
IDEActiveWorkspaceTabController
IDEWindowFrame
IDEWorkspaceWindowControllerUniqueIdentifier
$class
CF$UID
32
NS.objects
CF$UID
27
$classes
NSArray
NSObject
$classname
NSArray
$class
CF$UID
105
NS.keys
CF$UID
35
CF$UID
36
CF$UID
37
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
42
NS.objects
CF$UID
43
CF$UID
33
CF$UID
58
CF$UID
163
CF$UID
170
CF$UID
191
CF$UID
33
CF$UID
64
IDEEditorArea
IDEShowNavigator
IDETabLabel
IDEWorkspaceTabControllerUtilityAreaSplitView
IDENavigatorArea
IDEWorkspaceTabControllerDesignAreaSplitView
IDEShowUtilities
AssistantEditorsLayout
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
52
CF$UID
74
CF$UID
124
CF$UID
153
CF$UID
64
CF$UID
154
CF$UID
162
CF$UID
33
layoutTree
IDEEditorMode_Standard
IDEEDitorArea_DebugArea
IDEShowEditor
EditorMode
DebuggerSplitView
DefaultPersistentRepresentations
ShowDebuggerArea
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
53
rootLayoutTreeNode
CF$UID
70
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
54
orientation
0
parent
CF$UID
70
$class
CF$UID
69
DocumentLocation
CF$UID
65
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
56
IndexOfDocumentIdentifier
CF$UID
64
Xcode.IDENavigableItemDomain.WorkspaceStructure
$class
CF$UID
32
NS.objects
CF$UID
57
CF$UID
60
CF$UID
62
$class
CF$UID
59
Identifier
CF$UID
58
ChapterListViewController.xib
$classes
IDEArchivableStringIndexPair
NSObject
$classname
IDEArchivableStringIndexPair
$class
CF$UID
59
Identifier
CF$UID
61
Resources
$class
CF$UID
59
Identifier
CF$UID
63
AePubReader
0
$class
CF$UID
68
documentURL
CF$UID
66
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.xib
$classes
NSMutableString
NSString
NSObject
$classname
NSMutableString
$classes
DVTDocumentLocation
NSObject
$classname
DVTDocumentLocation
$classes
IDENavigableItemArchivableRepresentation
NSObject
$classname
IDENavigableItemArchivableRepresentation
$class
CF$UID
72
children
CF$UID
71
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
53
$classes
IDEWorkspaceTabControllerLayoutTreeNode
NSObject
$classname
IDEWorkspaceTabControllerLayoutTreeNode
$classes
IDEWorkspaceTabControllerLayoutTree
NSObject
$classname
IDEWorkspaceTabControllerLayoutTree
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
76
EditorLayout_PersistentRepresentation
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
78
Main
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
82
CF$UID
64
CF$UID
122
EditorLayout_StateSavingStateDictionaries
EditorLayout_Selected
EditorLayout_Geometry
$class
CF$UID
32
NS.objects
CF$UID
83
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
91
CF$UID
92
CF$UID
97
CF$UID
117
CF$UID
58
CF$UID
118
CF$UID
119
FileDataType
ArchivableRepresentation
EditorState
NavigableItemName
DocumentNavigableItemName
DocumentExtensionIdentifier
DocumentURL
com.apple.InterfaceBuilder3.CocoaTouch.XIB
$class
CF$UID
69
DocumentLocation
CF$UID
65
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
93
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
94
CF$UID
95
CF$UID
96
$class
CF$UID
59
Identifier
CF$UID
58
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
102
CF$UID
106
CF$UID
101
CF$UID
109
IBDockViewController
SelectedObjectIDs
SelectionProvider
IBCanvasViewController
$class
CF$UID
105
NS.keys
CF$UID
103
NS.objects
CF$UID
104
LastKnownOutlineViewWidth
270
$classes
NSMutableDictionary
NSDictionary
NSObject
$classname
NSMutableDictionary
$class
CF$UID
108
NS.objects
CF$UID
107
4
$classes
NSMutableArray
NSArray
NSObject
$classname
NSMutableArray
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
112
CF$UID
115
ObjectIDToLastKnownCanvasPositionMap
EditedTopLevelObjectIDs
$class
CF$UID
105
NS.keys
CF$UID
113
NS.objects
CF$UID
114
1
{124, -28}
$class
CF$UID
108
NS.objects
CF$UID
107
$classes
NSDictionary
NSObject
$classname
NSDictionary
Table View
Xcode.IDEKit.CocoaTouchIntegration.EditorDocument.CocoaTouch
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
120
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.xib
$classes
NSURL
NSObject
$classname
NSURL
$class
CF$UID
32
NS.objects
CF$UID
123
{{0, 0}, {600, 600}}
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
129
CF$UID
130
NS.objects
CF$UID
113
CF$UID
131
CF$UID
133
CF$UID
113
CF$UID
136
CF$UID
147
LayoutFocusMode
console
variables
LayoutMode
IDEDebugArea_SplitView
IDEDebuggerAreaSplitView
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
ConsoleFilterMode
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
DBGVariablesViewFilterMode
2
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
138
DVTSplitViewItems
$class
CF$UID
108
NS.objects
CF$UID
139
CF$UID
144
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
143
DVTIdentifier
DVTViewMagnitude
VariablesView
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
146
ConsoleArea
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
148
$class
CF$UID
108
NS.objects
CF$UID
149
CF$UID
151
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
150
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
152
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
155
$class
CF$UID
108
NS.objects
CF$UID
156
CF$UID
159
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
158
IDEEditor
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
161
IDEDebuggerArea
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
164
$class
CF$UID
108
NS.objects
CF$UID
165
CF$UID
168
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
167
376
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
169
224
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
173
SelectedNavigator
Xcode.IDEKit.Navigator.Structure
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
184
CF$UID
186
IDEVisibleRect
IDEUnsavedDocumentFilteringEnabled
IDENavigatorExpandedItemsBeforeFilteringSet
IDERecentDocumentFilteringEnabled
IDESCMStatusFilteringEnabled
IDESelectedObjects
IDEExpandedItemsSet
{{0, 0}, {0, 0}}
$class
CF$UID
183
NS.objects
$classes
NSSet
NSObject
$classname
NSSet
$class
CF$UID
32
NS.objects
CF$UID
185
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
58
$class
CF$UID
183
NS.objects
CF$UID
187
CF$UID
188
CF$UID
189
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
Classes
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
192
$class
CF$UID
108
NS.objects
CF$UID
193
CF$UID
195
CF$UID
197
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
194
224
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
196
916
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
199
IDEUtilitiesArea
260
{{20, 254}, {600, 624}}
$class
CF$UID
105
NS.keys
CF$UID
29
CF$UID
26
CF$UID
202
CF$UID
25
CF$UID
30
CF$UID
28
NS.objects
CF$UID
203
CF$UID
33
CF$UID
204
CF$UID
286
CF$UID
3
CF$UID
202
IDEWorkspaceTabController_EF8D204A-CE21-4F04-97BB-7D8278442720
{{10, 70}, {832, 808}}
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
205
CF$UID
263
CF$UID
269
CF$UID
277
CF$UID
33
CF$UID
285
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
206
CF$UID
218
CF$UID
241
CF$UID
153
CF$UID
64
CF$UID
256
CF$UID
262
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
207
rootLayoutTreeNode
CF$UID
216
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
208
orientation
0
parent
CF$UID
216
$class
CF$UID
69
DocumentLocation
CF$UID
214
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
209
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
210
CF$UID
212
CF$UID
213
$class
CF$UID
59
Identifier
CF$UID
211
DetailView.xib
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
215
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib
$class
CF$UID
72
children
CF$UID
217
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
207
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
219
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
220
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
221
CF$UID
64
CF$UID
239
$class
CF$UID
32
NS.objects
CF$UID
222
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
91
CF$UID
223
CF$UID
228
CF$UID
236
CF$UID
211
CF$UID
118
CF$UID
237
$class
CF$UID
69
DocumentLocation
CF$UID
214
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
224
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
225
CF$UID
226
CF$UID
227
$class
CF$UID
59
Identifier
CF$UID
211
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
229
CF$UID
230
CF$UID
101
CF$UID
232
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
231
93
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
233
CF$UID
234
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
235
8
Horizontal Slider
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
238
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib
$class
CF$UID
32
NS.objects
CF$UID
240
{{0, 0}, {832, 762}}
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
130
CF$UID
129
NS.objects
CF$UID
113
CF$UID
242
CF$UID
243
CF$UID
113
CF$UID
244
CF$UID
250
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
245
$class
CF$UID
108
NS.objects
CF$UID
246
CF$UID
248
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
247
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
249
533
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
251
$class
CF$UID
108
NS.objects
CF$UID
252
CF$UID
254
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
253
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
255
533
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
257
$class
CF$UID
108
NS.objects
CF$UID
258
CF$UID
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
259
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
261
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
264
$class
CF$UID
108
NS.objects
CF$UID
265
CF$UID
267
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
266
560
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
268
224
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
270
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
271
CF$UID
273
$class
CF$UID
32
NS.objects
CF$UID
272
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
211
$class
CF$UID
183
NS.objects
CF$UID
274
CF$UID
275
CF$UID
276
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
278
$class
CF$UID
108
NS.objects
CF$UID
279
CF$UID
281
CF$UID
283
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
280
225
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
282
915
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
284
260
DetailView
$class
CF$UID
32
NS.objects
CF$UID
202
$class
CF$UID
105
NS.keys
CF$UID
26
CF$UID
25
CF$UID
288
CF$UID
28
CF$UID
30
CF$UID
29
NS.objects
CF$UID
33
CF$UID
289
CF$UID
290
CF$UID
288
CF$UID
4
CF$UID
371
IDEWorkspaceTabController_81B4B492-A96C-4963-8EC5-09C7111283D0
$class
CF$UID
32
NS.objects
CF$UID
288
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
291
CF$UID
349
CF$UID
355
CF$UID
363
CF$UID
33
CF$UID
297
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
292
CF$UID
304
CF$UID
327
CF$UID
153
CF$UID
64
CF$UID
342
CF$UID
348
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
293
rootLayoutTreeNode
CF$UID
302
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
294
orientation
0
parent
CF$UID
302
$class
CF$UID
69
DocumentLocation
CF$UID
300
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
295
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
296
CF$UID
298
CF$UID
299
$class
CF$UID
59
Identifier
CF$UID
297
SearchWebView.js
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
301
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js
$class
CF$UID
72
children
CF$UID
303
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
293
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
305
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
306
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
307
CF$UID
64
CF$UID
326
$class
CF$UID
32
NS.objects
CF$UID
308
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
309
CF$UID
310
CF$UID
315
CF$UID
297
CF$UID
297
CF$UID
323
CF$UID
324
com.apple.dashcode.javascript
$class
CF$UID
69
DocumentLocation
CF$UID
300
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
311
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
312
CF$UID
313
CF$UID
314
$class
CF$UID
59
Identifier
CF$UID
297
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
320
CF$UID
321
CF$UID
33
CF$UID
322
PrimaryDocumentTimestamp
PrimaryDocumentVisibleCharacterRange
HideAllIssues
PrimaryDocumentSelectedCharacterRange
326389596.99610698
{0, 1887}
{595, 0}
Xcode.IDEKit.EditorDocument.SourceCode
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
325
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
129
CF$UID
130
NS.objects
CF$UID
113
CF$UID
328
CF$UID
329
CF$UID
113
CF$UID
330
CF$UID
336
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
331
$class
CF$UID
108
NS.objects
CF$UID
332
CF$UID
334
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
333
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
335
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
337
$class
CF$UID
108
NS.objects
CF$UID
338
CF$UID
340
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
339
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
341
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
343
$class
CF$UID
108
NS.objects
CF$UID
344
CF$UID
346
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
345
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
347
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
350
$class
CF$UID
108
NS.objects
CF$UID
351
CF$UID
353
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
352
398
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
354
224
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
356
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
357
CF$UID
359
$class
CF$UID
32
NS.objects
CF$UID
358
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
297
$class
CF$UID
183
NS.objects
CF$UID
360
CF$UID
361
CF$UID
362
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
364
$class
CF$UID
108
NS.objects
CF$UID
365
CF$UID
367
CF$UID
369
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
366
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
368
920
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
370
260
{{20, 232}, {600, 646}}
$class
CF$UID
105
NS.keys
CF$UID
28
CF$UID
25
CF$UID
26
CF$UID
29
CF$UID
30
CF$UID
373
NS.objects
CF$UID
373
CF$UID
374
CF$UID
33
CF$UID
200
CF$UID
5
CF$UID
375
IDEWorkspaceTabController_5EC9B8CD-EA93-4DC4-A085-CC2647AFF2CE
$class
CF$UID
32
NS.objects
CF$UID
373
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
376
CF$UID
431
CF$UID
437
CF$UID
445
CF$UID
33
CF$UID
382
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
377
CF$UID
389
CF$UID
409
CF$UID
153
CF$UID
64
CF$UID
424
CF$UID
430
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
378
rootLayoutTreeNode
CF$UID
387
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
379
orientation
0
parent
CF$UID
387
$class
CF$UID
69
DocumentLocation
CF$UID
385
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
380
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
381
CF$UID
383
CF$UID
384
$class
CF$UID
59
Identifier
CF$UID
382
SearchWebView.h
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
386
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchWebView.h
$class
CF$UID
72
children
CF$UID
388
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
378
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
390
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
391
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
392
CF$UID
64
CF$UID
407
$class
CF$UID
32
NS.objects
CF$UID
393
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
394
CF$UID
395
CF$UID
400
CF$UID
404
CF$UID
382
CF$UID
323
CF$UID
405
public.c-header
$class
CF$UID
69
DocumentLocation
CF$UID
385
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
396
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
397
CF$UID
398
CF$UID
399
$class
CF$UID
59
Identifier
CF$UID
382
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
401
CF$UID
402
CF$UID
33
CF$UID
403
326386089.00041503
{0, 173}
{36, 0}
@interface UIWebView(SearchWebView)
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
406
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchWebView.h
$class
CF$UID
32
NS.objects
CF$UID
408
{{0, 0}, {600, 578}}
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
129
CF$UID
130
NS.objects
CF$UID
113
CF$UID
410
CF$UID
411
CF$UID
113
CF$UID
412
CF$UID
418
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
413
$class
CF$UID
108
NS.objects
CF$UID
414
CF$UID
416
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
415
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
417
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
419
$class
CF$UID
108
NS.objects
CF$UID
420
CF$UID
422
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
421
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
423
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
425
$class
CF$UID
108
NS.objects
CF$UID
426
CF$UID
428
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
427
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
429
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
432
$class
CF$UID
108
NS.objects
CF$UID
433
CF$UID
435
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
434
376
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
436
224
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
438
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
439
CF$UID
441
$class
CF$UID
32
NS.objects
CF$UID
440
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
CF$UID
382
$class
CF$UID
183
NS.objects
CF$UID
442
CF$UID
443
CF$UID
444
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
446
$class
CF$UID
108
NS.objects
CF$UID
447
CF$UID
449
CF$UID
451
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
448
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
450
920
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
452
260
$class
CF$UID
105
NS.keys
CF$UID
454
CF$UID
25
CF$UID
26
CF$UID
28
CF$UID
29
CF$UID
30
NS.objects
CF$UID
455
CF$UID
530
CF$UID
33
CF$UID
454
CF$UID
531
CF$UID
6
IDEWorkspaceTabController_4E44448E-12EB-4E2B-B169-1D9583287B4F
$class
CF$UID
105
NS.keys
CF$UID
35
CF$UID
36
CF$UID
37
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
42
NS.objects
CF$UID
456
CF$UID
33
CF$UID
465
CF$UID
508
CF$UID
514
CF$UID
522
CF$UID
33
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
51
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
44
NS.objects
CF$UID
33
CF$UID
457
CF$UID
477
CF$UID
153
CF$UID
64
CF$UID
492
CF$UID
498
CF$UID
499
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
458
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
459
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
460
CF$UID
64
CF$UID
476
$class
CF$UID
32
NS.objects
CF$UID
461
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
394
CF$UID
462
CF$UID
470
CF$UID
465
CF$UID
465
CF$UID
323
CF$UID
474
$class
CF$UID
69
DocumentLocation
CF$UID
468
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
463
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
464
CF$UID
466
CF$UID
467
$class
CF$UID
59
Identifier
CF$UID
465
AePubReaderAppDelegate.h
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
469
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.h
$class
CF$UID
116
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
471
CF$UID
472
CF$UID
33
CF$UID
473
323910354.96845502
{0, 801}
{0, 0}
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
475
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.h
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
130
CF$UID
128
CF$UID
129
CF$UID
127
NS.objects
CF$UID
113
CF$UID
478
CF$UID
479
CF$UID
113
CF$UID
485
CF$UID
491
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
480
$class
CF$UID
108
NS.objects
CF$UID
481
CF$UID
483
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
482
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
484
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
486
$class
CF$UID
108
NS.objects
CF$UID
487
CF$UID
489
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
488
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
490
301
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
493
$class
CF$UID
108
NS.objects
CF$UID
494
CF$UID
496
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
495
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
497
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
500
rootLayoutTreeNode
CF$UID
506
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
501
orientation
0
parent
CF$UID
506
$class
CF$UID
69
DocumentLocation
CF$UID
468
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
502
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
503
CF$UID
504
CF$UID
505
$class
CF$UID
59
Identifier
CF$UID
465
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
72
children
CF$UID
507
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
500
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
509
$class
CF$UID
108
NS.objects
CF$UID
510
CF$UID
512
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
511
232
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
513
368
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
515
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
516
CF$UID
518
$class
CF$UID
32
NS.objects
CF$UID
517
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
CF$UID
465
$class
CF$UID
183
NS.objects
CF$UID
519
CF$UID
520
CF$UID
521
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
523
$class
CF$UID
108
NS.objects
CF$UID
524
CF$UID
526
CF$UID
528
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
525
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
527
1140
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
529
260
$class
CF$UID
32
NS.objects
CF$UID
454
{{1603, 199}, {600, 624}}
$class
CF$UID
105
NS.keys
CF$UID
533
CF$UID
25
CF$UID
26
CF$UID
28
CF$UID
29
CF$UID
30
NS.objects
CF$UID
534
CF$UID
625
CF$UID
33
CF$UID
533
CF$UID
626
CF$UID
7
IDEWorkspaceTabController_989DA917-CF50-4304-9B6A-73BD74BC6C3E
$class
CF$UID
105
NS.keys
CF$UID
35
CF$UID
36
CF$UID
37
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
42
NS.objects
CF$UID
535
CF$UID
33
CF$UID
602
CF$UID
603
CF$UID
609
CF$UID
617
CF$UID
33
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
51
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
44
NS.objects
CF$UID
33
CF$UID
536
CF$UID
572
CF$UID
153
CF$UID
64
CF$UID
587
CF$UID
593
CF$UID
594
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
537
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
538
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
539
CF$UID
64
CF$UID
571
$class
CF$UID
32
NS.objects
CF$UID
540
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
541
CF$UID
542
CF$UID
548
CF$UID
63
CF$UID
63
CF$UID
569
CF$UID
570
com.apple.xcode.project
$class
CF$UID
69
DocumentLocation
CF$UID
546
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
543
IndexOfDocumentIdentifier
CF$UID
545
$class
CF$UID
32
NS.objects
CF$UID
544
$class
CF$UID
59
Identifier
CF$UID
63
9223372036854775807
$class
CF$UID
68
documentURL
CF$UID
547
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj/
$class
CF$UID
116
NS.keys
CF$UID
549
CF$UID
550
CF$UID
551
CF$UID
552
NS.objects
CF$UID
553
CF$UID
554
CF$UID
560
CF$UID
561
Xcode3ProjectEditorPreviousProjectEditorClass
Xcode3ProjectEditor.sourceList.splitview
Xcode3ProjectEditorPreviousTargetEditorClass
Xcode3ProjectEditorSelectedDocumentLocations
Xcode3ProjectInfoEditor
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
555
$class
CF$UID
108
NS.objects
CF$UID
556
CF$UID
558
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
557
170
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
559
450
Xcode3TargetEditor
$class
CF$UID
32
NS.objects
CF$UID
562
$class
CF$UID
568
documentURL
CF$UID
563
selection
CF$UID
565
timestamp
CF$UID
564
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj/
323910351.61847901
$class
CF$UID
105
NS.keys
CF$UID
566
CF$UID
567
NS.objects
CF$UID
63
CF$UID
553
Project
Editor
$classes
Xcode3ProjectDocumentLocation
DVTDocumentLocation
NSObject
$classname
Xcode3ProjectDocumentLocation
Xcode.Xcode3ProjectSupport.EditorDocument.Xcode3Project
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
563
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
130
CF$UID
128
CF$UID
129
CF$UID
127
NS.objects
CF$UID
113
CF$UID
573
CF$UID
574
CF$UID
113
CF$UID
580
CF$UID
586
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
575
$class
CF$UID
108
NS.objects
CF$UID
576
CF$UID
578
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
577
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
579
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
581
$class
CF$UID
108
NS.objects
CF$UID
582
CF$UID
584
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
583
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
585
301
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
588
$class
CF$UID
108
NS.objects
CF$UID
589
CF$UID
591
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
590
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
592
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
595
rootLayoutTreeNode
CF$UID
600
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
596
orientation
0
parent
CF$UID
600
$class
CF$UID
69
DocumentLocation
CF$UID
546
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
597
IndexOfDocumentIdentifier
CF$UID
599
$class
CF$UID
32
NS.objects
CF$UID
598
$class
CF$UID
59
Identifier
CF$UID
63
9223372036854775807
$class
CF$UID
72
children
CF$UID
601
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
595
AePubReader.xcodeproj
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
604
$class
CF$UID
108
NS.objects
CF$UID
605
CF$UID
607
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
606
232
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
608
368
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
610
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
611
CF$UID
613
$class
CF$UID
32
NS.objects
CF$UID
612
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
183
NS.objects
CF$UID
614
CF$UID
615
CF$UID
616
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
618
$class
CF$UID
108
NS.objects
CF$UID
619
CF$UID
621
CF$UID
623
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
620
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
622
1140
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
624
260
$class
CF$UID
32
NS.objects
CF$UID
533
{{1582, 222}, {600, 624}}
$class
CF$UID
105
NS.keys
CF$UID
628
CF$UID
629
CF$UID
630
CF$UID
631
CF$UID
632
CF$UID
633
CF$UID
634
CF$UID
635
CF$UID
636
CF$UID
637
CF$UID
638
NS.objects
CF$UID
153
CF$UID
639
CF$UID
64
CF$UID
1446
CF$UID
1451
CF$UID
1454
CF$UID
1484
CF$UID
1485
CF$UID
1532
CF$UID
33
CF$UID
33
BreakpointsActivated
DefaultEditorStatesForURLs
DebuggingWindowBehavior
ActiveRunDestination
ActiveScheme
LastCompletedPersistentSchemeBasedActivityReport
DocumentWindows
DefaultEditorFrameSizeForURLs
RecentEditorDocumentURLs
AppFocusInMiniDebugging
MiniDebuggingConsole
$class
CF$UID
105
NS.keys
CF$UID
640
CF$UID
641
CF$UID
642
CF$UID
643
CF$UID
118
CF$UID
644
CF$UID
323
CF$UID
645
CF$UID
569
CF$UID
646
NS.objects
CF$UID
647
CF$UID
664
CF$UID
723
CF$UID
734
CF$UID
739
CF$UID
828
CF$UID
858
CF$UID
1285
CF$UID
1290
CF$UID
1388
Xcode.IDEKit.EditorDocument.DebuggerLogDocument
IDEQuickLookEditor.Editor
Xcode.IDEKit.EditorDocument.PlistEditor
Xcode.IDEKit.EditorDocument.SourceCode-from-Xcode3Project
Xcode.IDEKit.EditorDocument.SourceCodeComparisonEditor
Xcode.IDEKit.EditorDocument.QuickLookComparisonEditor
Xcode.IDEKit.EditorDocument.LogDocument
$class
CF$UID
105
NS.keys
CF$UID
648
CF$UID
650
CF$UID
652
CF$UID
654
NS.objects
CF$UID
656
CF$UID
659
CF$UID
661
CF$UID
663
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
649
x-xcode-log://05358A75-A0B3-4C3B-87C2-9206EF188FF1
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
651
x-xcode-log://C13DE095-D218-44A0-BFFB-272F99A02619
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
653
x-xcode-log://36E3D388-9D1F-477E-93FF-75E535E6D81C
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
655
x-xcode-log://97820E31-22E5-4730-A67B-9825E5B579B6
$class
CF$UID
105
NS.keys
CF$UID
657
NS.objects
CF$UID
658
DBGConsoleLogEditorScrollRange
{0, 3020}
$class
CF$UID
105
NS.keys
CF$UID
657
NS.objects
CF$UID
660
{0, 566}
$class
CF$UID
105
NS.keys
CF$UID
657
NS.objects
CF$UID
662
{0, 2740}
$class
CF$UID
105
NS.keys
CF$UID
657
NS.objects
CF$UID
660
$class
CF$UID
105
NS.keys
CF$UID
665
CF$UID
667
CF$UID
669
CF$UID
671
CF$UID
673
CF$UID
675
CF$UID
677
CF$UID
679
NS.objects
CF$UID
681
CF$UID
688
CF$UID
693
CF$UID
698
CF$UID
703
CF$UID
708
CF$UID
713
CF$UID
718
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
666
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/yellowslide.png
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
668
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/slider_ball.png
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
670
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/mining.epub
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
672
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/orangeslide.png
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
674
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/vhugo.epub
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
676
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/hugo.epub
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
678
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/shak.epub
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
680
$class
CF$UID
67
NS.string
file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/libsqlite3.dylib
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
683
SelectedDocumentLocations
$class
CF$UID
32
NS.objects
CF$UID
684
$class
CF$UID
687
IDEQuickLookPageNumber
CF$UID
64
documentURL
CF$UID
685
timestamp
CF$UID
686
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/yellowslide.png
326306798.90969598
$classes
IDEQuickLookDocumentLocation
DVTDocumentLocation
NSObject
$classname
IDEQuickLookDocumentLocation
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
689
$class
CF$UID
32
NS.objects
CF$UID
690
$class
CF$UID
687
IDEQuickLookPageNumber
CF$UID
64
documentURL
CF$UID
691
timestamp
CF$UID
692
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/slider_ball.png
326385416.62035698
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
694
$class
CF$UID
32
NS.objects
CF$UID
695
$class
CF$UID
687
IDEQuickLookPageNumber
CF$UID
64
documentURL
CF$UID
696
timestamp
CF$UID
697
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/mining.epub
326326809.97582799
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
699
$class
CF$UID
32
NS.objects
CF$UID
700
$class
CF$UID
687
IDEQuickLookPageNumber
CF$UID
64
documentURL
CF$UID
701
timestamp
CF$UID
702
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/orangeslide.png
326649159.31639999
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
704
$class
CF$UID
32
NS.objects
CF$UID
705
$class
CF$UID
687
IDEQuickLookPageNumber
CF$UID
64
documentURL
CF$UID
706
timestamp
CF$UID
707
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/vhugo.epub
326326812.77815598
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
709
$class
CF$UID
32
NS.objects
CF$UID
710
$class
CF$UID
687
IDEQuickLookPageNumber
CF$UID
64
documentURL
CF$UID
711
timestamp
CF$UID
712
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/hugo.epub
325693009.88674802
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
714
$class
CF$UID
32
NS.objects
CF$UID
715
$class
CF$UID
687
IDEQuickLookPageNumber
CF$UID
64
documentURL
CF$UID
716
timestamp
CF$UID
717
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/shak.epub
326649153.96313
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
719
$class
CF$UID
32
NS.objects
CF$UID
720
$class
CF$UID
687
IDEQuickLookPageNumber
CF$UID
64
documentURL
CF$UID
721
timestamp
CF$UID
722
file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/usr/lib/libsqlite3.dylib
326280652.35165799
$class
CF$UID
105
NS.keys
CF$UID
724
NS.objects
CF$UID
726
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
725
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader-Info.plist
$class
CF$UID
105
NS.keys
CF$UID
727
CF$UID
728
CF$UID
729
NS.objects
CF$UID
730
CF$UID
731
CF$UID
732
IDE_PLIST_EDITOR_SELECTION_KEY
IDE_PLIST_EDITOR_VISIBLERECT_KEY
IDE_PLIST_EDITOR_EXPANSION_KEY
$class
CF$UID
32
NS.objects
{{0, 0}, {916, 486}}
$class
CF$UID
733
NS.objects
$classes
NSMutableSet
NSSet
NSObject
$classname
NSMutableSet
$class
CF$UID
105
NS.keys
CF$UID
735
NS.objects
CF$UID
737
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
736
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj/project.pbxproj
$class
CF$UID
105
NS.keys
CF$UID
319
CF$UID
316
CF$UID
317
NS.objects
CF$UID
473
CF$UID
738
CF$UID
473
323910088.77252901
$class
CF$UID
105
NS.keys
CF$UID
740
CF$UID
742
CF$UID
744
CF$UID
746
CF$UID
748
CF$UID
750
CF$UID
752
CF$UID
754
NS.objects
CF$UID
756
CF$UID
763
CF$UID
779
CF$UID
785
CF$UID
791
CF$UID
803
CF$UID
809
CF$UID
819
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
741
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/ChapterListViewController.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
743
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubView.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
745
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
747
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
749
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/MainWindow.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
751
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultViewController.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
753
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchResultCell.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
755
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultsViewController.xib
$class
CF$UID
105
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
757
CF$UID
759
CF$UID
101
CF$UID
760
$class
CF$UID
105
NS.keys
CF$UID
103
NS.objects
CF$UID
758
270
$class
CF$UID
108
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
761
CF$UID
762
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
764
CF$UID
765
CF$UID
766
CF$UID
767
NS.objects
CF$UID
768
CF$UID
771
CF$UID
773
CF$UID
774
IBDockViewController
SelectedObjectIDs
SelectionProvider
IBCanvasViewController
$class
CF$UID
105
NS.keys
CF$UID
769
NS.objects
CF$UID
770
LastKnownOutlineViewWidth
270
$class
CF$UID
108
NS.objects
CF$UID
772
-1
IBStructureViewController
$class
CF$UID
105
NS.keys
CF$UID
775
CF$UID
776
NS.objects
CF$UID
777
CF$UID
778
ObjectIDToLastKnownCanvasPositionMap
EditedTopLevelObjectIDs
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
235
$class
CF$UID
105
NS.keys
CF$UID
764
CF$UID
765
CF$UID
766
CF$UID
767
NS.objects
CF$UID
780
CF$UID
782
CF$UID
767
CF$UID
783
$class
CF$UID
105
NS.keys
CF$UID
769
NS.objects
CF$UID
781
270
$class
CF$UID
108
NS.objects
CF$UID
107
$class
CF$UID
105
NS.keys
CF$UID
775
CF$UID
776
NS.objects
CF$UID
112
CF$UID
784
$class
CF$UID
108
NS.objects
CF$UID
107
$class
CF$UID
105
NS.keys
CF$UID
764
CF$UID
765
CF$UID
766
CF$UID
767
NS.objects
CF$UID
786
CF$UID
788
CF$UID
767
CF$UID
789
$class
CF$UID
105
NS.keys
CF$UID
769
NS.objects
CF$UID
787
270
$class
CF$UID
108
NS.objects
CF$UID
235
$class
CF$UID
105
NS.keys
CF$UID
775
CF$UID
776
NS.objects
CF$UID
233
CF$UID
790
$class
CF$UID
108
NS.objects
CF$UID
235
$class
CF$UID
105
NS.keys
CF$UID
764
CF$UID
765
CF$UID
766
CF$UID
767
NS.objects
CF$UID
792
CF$UID
794
CF$UID
773
CF$UID
796
$class
CF$UID
105
NS.keys
CF$UID
769
NS.objects
CF$UID
793
270
$class
CF$UID
108
NS.objects
CF$UID
795
50
$class
CF$UID
105
NS.keys
CF$UID
775
CF$UID
776
NS.objects
CF$UID
797
CF$UID
801
$class
CF$UID
105
NS.keys
CF$UID
135
CF$UID
798
NS.objects
CF$UID
799
CF$UID
800
50
{-134, -135}
{-60, -210}
$class
CF$UID
108
NS.objects
CF$UID
802
CF$UID
135
50
$class
CF$UID
105
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
804
CF$UID
805
CF$UID
101
CF$UID
806
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
107
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
807
CF$UID
808
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
107
$class
CF$UID
105
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
810
CF$UID
812
CF$UID
814
CF$UID
815
$class
CF$UID
105
NS.keys
CF$UID
103
NS.objects
CF$UID
811
270
$class
CF$UID
108
NS.objects
CF$UID
107
CF$UID
813
5
IBStructureViewController
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
816
CF$UID
817
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
818
3
$class
CF$UID
105
NS.keys
CF$UID
764
CF$UID
765
CF$UID
766
CF$UID
767
NS.objects
CF$UID
820
CF$UID
822
CF$UID
773
CF$UID
823
$class
CF$UID
105
NS.keys
CF$UID
769
NS.objects
CF$UID
821
270
$class
CF$UID
108
NS.objects
CF$UID
113
$class
CF$UID
105
NS.keys
CF$UID
775
CF$UID
776
NS.objects
CF$UID
824
CF$UID
827
$class
CF$UID
105
NS.keys
CF$UID
113
CF$UID
235
NS.objects
CF$UID
825
CF$UID
826
{71, 97}
{501, 369}
$class
CF$UID
108
NS.objects
CF$UID
113
$class
CF$UID
105
NS.keys
CF$UID
829
CF$UID
735
CF$UID
831
CF$UID
833
CF$UID
835
CF$UID
837
NS.objects
CF$UID
839
CF$UID
842
CF$UID
845
CF$UID
848
CF$UID
851
CF$UID
855
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
830
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Chapter.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
832
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
834
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/RootViewController.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
836
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultsViewController.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
838
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.h
$class
CF$UID
105
NS.keys
CF$UID
319
CF$UID
317
CF$UID
316
NS.objects
CF$UID
473
CF$UID
840
CF$UID
841
{0, 1019}
324236254.45765197
$class
CF$UID
105
NS.keys
CF$UID
319
CF$UID
317
CF$UID
316
NS.objects
CF$UID
473
CF$UID
843
CF$UID
844
{224, 2139}
323910150.37661302
$class
CF$UID
105
NS.keys
CF$UID
319
CF$UID
317
CF$UID
316
NS.objects
CF$UID
473
CF$UID
846
CF$UID
847
{0, 513}
326220021.54131103
$class
CF$UID
105
NS.keys
CF$UID
319
CF$UID
317
CF$UID
316
NS.objects
CF$UID
473
CF$UID
849
CF$UID
850
{3298, 979}
323963631.647192
$class
CF$UID
105
NS.keys
CF$UID
319
CF$UID
317
CF$UID
316
NS.objects
CF$UID
852
CF$UID
853
CF$UID
854
{579, 9}
{0, 603}
326298516.906501
$class
CF$UID
105
NS.keys
CF$UID
319
CF$UID
317
CF$UID
316
NS.objects
CF$UID
473
CF$UID
856
CF$UID
857
{786, 1391}
324232431.67370999
$class
CF$UID
105
NS.keys
CF$UID
859
CF$UID
861
CF$UID
863
CF$UID
865
CF$UID
867
CF$UID
869
CF$UID
871
CF$UID
873
CF$UID
875
CF$UID
877
CF$UID
879
CF$UID
881
CF$UID
883
CF$UID
885
CF$UID
887
CF$UID
837
CF$UID
889
CF$UID
891
CF$UID
893
CF$UID
895
CF$UID
897
CF$UID
899
CF$UID
901
CF$UID
903
CF$UID
835
CF$UID
905
CF$UID
907
CF$UID
909
CF$UID
911
CF$UID
913
CF$UID
915
CF$UID
917
CF$UID
919
CF$UID
921
CF$UID
923
CF$UID
925
CF$UID
927
CF$UID
929
CF$UID
931
CF$UID
933
CF$UID
935
CF$UID
937
CF$UID
939
CF$UID
941
CF$UID
943
CF$UID
945
CF$UID
947
CF$UID
949
CF$UID
951
CF$UID
953
CF$UID
955
CF$UID
957
CF$UID
959
CF$UID
961
CF$UID
833
CF$UID
963
CF$UID
965
CF$UID
967
CF$UID
969
CF$UID
971
CF$UID
973
CF$UID
975
CF$UID
829
CF$UID
977
CF$UID
979
CF$UID
981
CF$UID
983
CF$UID
985
CF$UID
987
CF$UID
989
CF$UID
991
CF$UID
993
CF$UID
995
CF$UID
997
CF$UID
999
CF$UID
1001
CF$UID
1003
CF$UID
1005
CF$UID
1007
CF$UID
1009
CF$UID
1011
NS.objects
CF$UID
1013
CF$UID
1016
CF$UID
1019
CF$UID
1022
CF$UID
1025
CF$UID
1029
CF$UID
1033
CF$UID
1037
CF$UID
1043
CF$UID
1046
CF$UID
1049
CF$UID
1052
CF$UID
1055
CF$UID
1063
CF$UID
1066
CF$UID
1070
CF$UID
1074
CF$UID
1077
CF$UID
1080
CF$UID
1084
CF$UID
1087
CF$UID
1090
CF$UID
1094
CF$UID
1096
CF$UID
1100
CF$UID
1104
CF$UID
1107
CF$UID
1110
CF$UID
1113
CF$UID
1117
CF$UID
1119
CF$UID
1123
CF$UID
1126
CF$UID
1130
CF$UID
1133
CF$UID
1137
CF$UID
1141
CF$UID
1144
CF$UID
1148
CF$UID
1152
CF$UID
1155
CF$UID
1158
CF$UID
1161
CF$UID
1164
CF$UID
1167
CF$UID
1171
CF$UID
1174
CF$UID
1176
CF$UID
1180
CF$UID
1184
CF$UID
1188
CF$UID
1191
CF$UID
1194
CF$UID
1199
CF$UID
1202
CF$UID
1206
CF$UID
1209
CF$UID
1212
CF$UID
1215
CF$UID
1218
CF$UID
1221
CF$UID
1223
CF$UID
1226
CF$UID
1230
CF$UID
1233
CF$UID
1236
CF$UID
1239
CF$UID
1242
CF$UID
1245
CF$UID
1248
CF$UID
1252
CF$UID
1256
CF$UID
1258
CF$UID
1261
CF$UID
1264
CF$UID
1267
CF$UID
1270
CF$UID
1273
CF$UID
1276
CF$UID
1279
CF$UID
1282
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
860
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/CDataChunk.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
862
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/oldsqlite3_compat.c
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
864
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Element.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
866
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/objc_msgSend_disassembly_0x01099098.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
868
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
870
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/GTMNSString+HTML.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
872
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/Tidy/CTidy.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
874
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
876
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/ChapterListViewController.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
878
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/Tidy/CTidy.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
880
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLDocument.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
882
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterProtocol.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
884
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
886
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/UIWebView+Highlight.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
888
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResult.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
890
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode_PrivateExtensions.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
892
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXHTMLDocument.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
894
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResult.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
896
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/RRFTS3ExtensionLoader.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
898
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/URLParser.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
900
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchWebView.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
902
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Downloads/sqlite-fts3-extension-2.0/RRFTS3ExtensionLoader.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
904
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultsViewController.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
906
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode_XPathExtensions.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
908
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/read$UNIX2003_disassembly_0x986f93fe.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
910
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode_PrivateExtensions.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
912
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchWebView.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
914
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/UIWebView+Highlight.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
916
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPub.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
918
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXHTMLDocument.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
920
$class
CF$UID
67
NS.string
file://localhost/Developer/Platforms/iPhoneOS.platform/Developer/SDKs/iPhoneOS4.3.sdk/System/Library/Frameworks/Foundation.framework/Headers/NSObjCRuntime.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
922
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/ElementParser/Classes/CSSSelectorMatcher.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
924
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Chapter.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
926
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/minizip/unzip.c
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
928
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/NSString_HTML.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
930
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
932
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubViewController.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
934
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/RootViewController.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
936
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ElementParser.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
938
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/__workq_kernreturn_disassembly_0x987139b2.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
940
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/_NSURLConnectionDidReceiveData_disassembly_0x001b1835.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
942
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
944
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ZipArchive.mm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
946
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/RRFTS3ExtensionLoader.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
948
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Downloads/sqlite-fts3-extension-2.0/RRFTS3ExtensionLoader.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
950
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultCell.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
952
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
954
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/ChapterListViewController.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
956
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/-%5BNSURLCache%20initWithExistingSharedCFURLCache:%5D_disassembly_0x0026a78a.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
958
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/UIApplicationMain_disassembly_0x0041ec93.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
960
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultViewController.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
962
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/ElementParser/Classes/CSSSelector.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
964
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/oldsqlite3_compat.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
966
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/kevent_disassembly_0x98714922.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
968
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/URLParser.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
970
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultViewController.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
972
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ElementParser.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
974
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/UIApplicationMain_disassembly_0x0041fc93.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
976
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader_Prefix.pch
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
978
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/HTMLParser.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
980
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/GTMNSString+HTML.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
982
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode_XPathExtensions.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
984
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
986
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/CSSSelector.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
988
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPub.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
990
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultCell.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
992
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubViewController.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
994
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/objc_msgSend_disassembly_0x0109a09b.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
996
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Element.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
998
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/CFEqual_disassembly_0x00e2cd80.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1000
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/objc_setProperty_non_gc_disassembly_0x01083dba.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1002
$class
CF$UID
67
NS.string
file://localhost/var/folders/VO/VOH3oY0kHL8+QqYKoWedb++++TI/-Tmp-/objc_msgSend_disassembly_0x0109e09b.nasm
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1004
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/CSSSelectorMatcher.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1006
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterProtocol.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1008
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/TouchXML.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1010
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/main.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1012
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Source/CXMLNode.h
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1014
CF$UID
1015
CF$UID
33
CF$UID
473
326908430.71185899
{0, 1061}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1017
CF$UID
1018
CF$UID
33
CF$UID
473
326280902.64561403
{0, 1756}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1020
CF$UID
1021
CF$UID
33
CF$UID
473
326321919.46735501
{0, 2128}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1023
CF$UID
1024
CF$UID
33
CF$UID
473
326321814.80774897
{0, 2004}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1026
CF$UID
1027
CF$UID
33
CF$UID
1028
326647656.03100401
{617, 1805}
{1974, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1030
CF$UID
1031
CF$UID
33
CF$UID
1032
326645357.04611403
{0, 1094}
{688, 10}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1034
CF$UID
1035
CF$UID
33
CF$UID
1036
326306770.57094002
{605, 1285}
{1366, 0}
$class
CF$UID
105
NS.keys
CF$UID
1038
CF$UID
316
CF$UID
318
CF$UID
317
CF$UID
319
NS.objects
CF$UID
1039
CF$UID
1040
CF$UID
33
CF$UID
1041
CF$UID
1042
CodeFolds
$class
CF$UID
67
NS.string
{
c = (
{
l = DetailViewController;
r = "{4445, 24}";
s = 1;
},
{
l = DetailViewController;
r = "{4496, 24}";
s = 1;
},
{
l = "Nib name";
r = "{4546, 12}";
s = 1;
}
);
r = "{0, 4920}";
s = 0;
}
326908435.15870601
{1457, 1025}
{2379, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1044
CF$UID
1045
CF$UID
33
CF$UID
473
326222896.56628501
{0, 768}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1047
CF$UID
1048
CF$UID
33
CF$UID
473
326305497.66323602
{0, 1347}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1050
CF$UID
1051
CF$UID
33
CF$UID
473
326305491.25383902
{0, 1432}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1053
CF$UID
1054
CF$UID
33
CF$UID
473
323968394.720617
{0, 240}
$class
CF$UID
105
NS.keys
CF$UID
1056
CF$UID
1057
CF$UID
1058
CF$UID
1059
NS.objects
CF$UID
1060
CF$UID
1061
CF$UID
33
CF$UID
1062
PrimaryDocumentTimestamp
PrimaryDocumentVisibleCharacterRange
HideAllIssues
PrimaryDocumentSelectedCharacterRange
330994646.07511503
{0, 513}
{483, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1064
CF$UID
1065
CF$UID
33
CF$UID
473
326382617.89477998
{0, 243}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1067
CF$UID
1068
CF$UID
33
CF$UID
1069
326647658.47997802
{0, 827}
{728, 0}
$class
CF$UID
105
NS.keys
CF$UID
1056
CF$UID
1057
CF$UID
1058
CF$UID
1059
NS.objects
CF$UID
1071
CF$UID
1072
CF$UID
33
CF$UID
1073
330994325.99601001
{0, 763}
{299, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1075
CF$UID
1076
CF$UID
33
CF$UID
473
326305772.62737602
{0, 1567}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1078
CF$UID
1079
CF$UID
33
CF$UID
473
326305771.63682598
{0, 1577}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1081
CF$UID
1082
CF$UID
33
CF$UID
1083
326645364.23642403
{0, 671}
{471, 18}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1085
CF$UID
1086
CF$UID
33
CF$UID
473
326280744.45126998
{0, 274}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1088
CF$UID
1089
CF$UID
33
CF$UID
473
326321791.71086401
{1841, 2446}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1091
CF$UID
1092
CF$UID
33
CF$UID
1093
326645455.83700401
{0, 865}
{633, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1095
CF$UID
1086
CF$UID
33
CF$UID
473
326281149.27626199
$class
CF$UID
105
NS.keys
CF$UID
1056
CF$UID
1057
CF$UID
1058
CF$UID
1059
NS.objects
CF$UID
1097
CF$UID
1098
CF$UID
33
CF$UID
1099
330994729.84948498
{5413, 2389}
{7426, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1101
CF$UID
1102
CF$UID
33
CF$UID
1103
326648752.944543
{53, 1268}
{460, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1105
CF$UID
1106
CF$UID
33
CF$UID
473
326305773.11666799
{0, 1532}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1108
CF$UID
1109
CF$UID
33
CF$UID
473
326321680.999327
{0, 387}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1111
CF$UID
1112
CF$UID
33
CF$UID
473
326305772.87428099
{0, 1538}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1114
CF$UID
1115
CF$UID
33
CF$UID
1116
326647659.61284
{0, 176}
{34, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1118
CF$UID
1054
CF$UID
33
CF$UID
473
326382617.85956198
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1120
CF$UID
1121
CF$UID
33
CF$UID
1122
326385433.46156299
{140, 649}
{4426, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1124
CF$UID
1125
CF$UID
33
CF$UID
473
326305770.73017502
{24, 1545}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1127
CF$UID
1128
CF$UID
33
CF$UID
1129
326327684.03656501
{8944, 1937}
{10501, 77}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1131
CF$UID
1132
CF$UID
33
CF$UID
473
326307290.32014
{0, 1289}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1134
CF$UID
1135
CF$UID
33
CF$UID
1136
326627527.34786397
{1969, 1330}
{3141, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1138
CF$UID
1139
CF$UID
33
CF$UID
1140
323910374.69534498
{48667, 1221}
{49247, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1142
CF$UID
1143
CF$UID
33
CF$UID
473
326321821.19554102
{13976, 2277}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1145
CF$UID
1146
CF$UID
33
CF$UID
1147
326648832.82147598
{0, 942}
{606, 0}
$class
CF$UID
105
NS.keys
CF$UID
1056
CF$UID
1057
CF$UID
1058
CF$UID
1059
NS.objects
CF$UID
1149
CF$UID
1150
CF$UID
33
CF$UID
1151
330994641.57964098
{514, 1576}
{1460, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1153
CF$UID
1154
CF$UID
33
CF$UID
473
326219238.643264
{0, 405}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1156
CF$UID
1157
CF$UID
33
CF$UID
473
326320814.702654
{0, 1566}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1159
CF$UID
1160
CF$UID
33
CF$UID
473
326321792.99167502
{0, 456}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1162
CF$UID
1163
CF$UID
33
CF$UID
473
326321814.558393
{0, 2455}
$class
CF$UID
105
NS.keys
CF$UID
1056
CF$UID
1057
CF$UID
1058
CF$UID
1059
NS.objects
CF$UID
1165
CF$UID
1166
CF$UID
33
CF$UID
473
330994788.332901
{0, 796}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1168
CF$UID
1169
CF$UID
33
CF$UID
1170
326381123.00514197
{4039, 1122}
{4940, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1172
CF$UID
1173
CF$UID
33
CF$UID
473
326280744.57300699
{0, 601}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1175
CF$UID
1173
CF$UID
33
CF$UID
473
326281139.08533502
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1177
CF$UID
1178
CF$UID
33
CF$UID
1179
326624215.84716702
{0, 717}
{263, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1181
CF$UID
1182
CF$UID
33
CF$UID
1183
326908677.65724999
{0, 408}
{327, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1185
CF$UID
1186
CF$UID
33
CF$UID
1187
326222982.02420002
{0, 258}
{249, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1189
CF$UID
1190
CF$UID
33
CF$UID
473
326321681.226246
{0, 2493}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1192
CF$UID
1193
CF$UID
33
CF$UID
473
326321797.235322
{774, 2448}
$class
CF$UID
105
NS.keys
CF$UID
1038
CF$UID
316
CF$UID
318
CF$UID
317
CF$UID
319
NS.objects
CF$UID
1195
CF$UID
1196
CF$UID
33
CF$UID
1197
CF$UID
1198
$class
CF$UID
67
NS.string
{
c = (
{
l = DetailViewController;
r = "{4159, 24}";
s = 1;
},
{
l = DetailViewController;
r = "{4210, 24}";
s = 1;
},
{
l = "Nib name";
r = "{4260, 12}";
s = 1;
}
);
r = "{0, 4500}";
s = 0;
}
326296931.097691
{0, 703}
{246, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1200
CF$UID
1201
CF$UID
33
CF$UID
473
326307290.26786101
{0, 1253}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1203
CF$UID
1204
CF$UID
33
CF$UID
1205
326219238.93791503
{3826, 934}
{4094, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1207
CF$UID
1208
CF$UID
33
CF$UID
473
326280744.29490697
{0, 237}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1210
CF$UID
1211
CF$UID
33
CF$UID
473
326321792.77827197
{0, 342}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1213
CF$UID
1214
CF$UID
33
CF$UID
473
326320852.245915
{0, 1754}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1216
CF$UID
1217
CF$UID
33
CF$UID
473
326296930.55030501
{0, 265}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1219
CF$UID
1220
CF$UID
33
CF$UID
473
326321821.57881898
{5532, 2591}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1222
CF$UID
1193
CF$UID
33
CF$UID
473
326325130.38256699
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1224
CF$UID
1225
CF$UID
33
CF$UID
473
326407901.37959498
{0, 328}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1227
CF$UID
1228
CF$UID
33
CF$UID
1229
326624214.78815401
{0, 1136}
{942, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1231
CF$UID
1232
CF$UID
33
CF$UID
473
326305020.94233602
{1504, 937}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1234
CF$UID
1235
CF$UID
33
CF$UID
473
326645357.18054801
{0, 1294}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1237
CF$UID
1238
CF$UID
33
CF$UID
473
326305774.09890598
{1322, 1251}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1240
CF$UID
1241
CF$UID
33
CF$UID
473
326305772.33734101
{0, 1481}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1243
CF$UID
1244
CF$UID
33
CF$UID
473
326322825.22246599
{0, 1643}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1246
CF$UID
1247
CF$UID
33
CF$UID
473
326648217.54613501
{36, 742}
$class
CF$UID
105
NS.keys
CF$UID
1056
CF$UID
1057
CF$UID
1058
CF$UID
1059
NS.objects
CF$UID
1249
CF$UID
1250
CF$UID
33
CF$UID
1251
330994181.13915402
{0, 380}
{373, 0}
$class
CF$UID
105
NS.keys
CF$UID
1056
CF$UID
1057
CF$UID
1058
CF$UID
1059
NS.objects
CF$UID
1253
CF$UID
1254
CF$UID
33
CF$UID
1255
330994645.195669
{0, 1242}
{441, 0}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1257
CF$UID
1024
CF$UID
33
CF$UID
473
326325130.14443702
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1259
CF$UID
1260
CF$UID
33
CF$UID
473
326320810.24024802
{0, 1668}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1262
CF$UID
1263
CF$UID
33
CF$UID
473
325692615.28632402
{1564, 1871}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1265
CF$UID
1266
CF$UID
33
CF$UID
473
326321814.96283001
{0, 2499}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1268
CF$UID
1269
CF$UID
33
CF$UID
473
326645449.25927198
{0, 1390}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1271
CF$UID
1272
CF$UID
33
CF$UID
473
326320790.94390398
{0, 1700}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1274
CF$UID
1275
CF$UID
33
CF$UID
473
323961378.65326899
{0, 219}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1277
CF$UID
1278
CF$UID
33
CF$UID
473
326305783.78507102
{0, 1523}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1280
CF$UID
1281
CF$UID
33
CF$UID
473
326627680.77136397
{0, 369}
$class
CF$UID
105
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1283
CF$UID
1284
CF$UID
33
CF$UID
473
326305772.09035301
{0, 1496}
$class
CF$UID
105
NS.keys
CF$UID
669
NS.objects
CF$UID
1286
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
1287
$class
CF$UID
32
NS.objects
CF$UID
1288
$class
CF$UID
687
IDEQuickLookPageNumber
CF$UID
64
documentURL
CF$UID
696
timestamp
CF$UID
1289
324236355.67969197
$class
CF$UID
105
NS.keys
CF$UID
1291
CF$UID
1293
CF$UID
1295
CF$UID
1297
NS.objects
CF$UID
1299
CF$UID
1327
CF$UID
1341
CF$UID
1373
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1292
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj/
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1294
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/ElementParser/ElementParser.xcodeproj
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1296
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Downloads/sqlite-fts3-extension-2.0/sqlite-fts3-extension.xcodeproj
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1298
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/sqlite-fts3-extension.xcodeproj
$class
CF$UID
105
NS.keys
CF$UID
1300
CF$UID
1301
CF$UID
1302
CF$UID
1303
CF$UID
1304
NS.objects
CF$UID
1305
CF$UID
1306
CF$UID
1316
CF$UID
1317
CF$UID
1326
Xcode3ProjectEditorPreviousProjectEditorClass
Xcode3ProjectEditor.sourceList.splitview
Xcode3ProjectEditorPreviousTargetEditorClass
Xcode3ProjectEditorSelectedDocumentLocations
Xcode3ProjectEditor_Xcode3TargetEditor
Xcode3BuildSettingsEditor
$class
CF$UID
105
NS.keys
CF$UID
1307
NS.objects
CF$UID
1308
DVTSplitViewItems
$class
CF$UID
108
NS.objects
CF$UID
1309
CF$UID
1314
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
1312
CF$UID
1313
DVTIdentifier
DVTViewMagnitude
170
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
1312
CF$UID
1315
750
Xcode3TargetEditor
$class
CF$UID
32
NS.objects
CF$UID
1318
$class
CF$UID
568
documentURL
CF$UID
1319
selection
CF$UID
1321
timestamp
CF$UID
1320
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/AePubReader.xcodeproj/
330994794.29663998
$class
CF$UID
105
NS.keys
CF$UID
1322
CF$UID
1323
NS.objects
CF$UID
1324
CF$UID
1325
Editor
Target
Xcode3TargetEditor
AePubReader
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
549
CF$UID
550
CF$UID
551
CF$UID
552
NS.objects
CF$UID
553
CF$UID
1328
CF$UID
1334
CF$UID
1335
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1329
$class
CF$UID
108
NS.objects
CF$UID
1330
CF$UID
1332
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1331
170
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1333
710
Xcode3BuildSettingsEditor
$class
CF$UID
32
NS.objects
CF$UID
1336
$class
CF$UID
568
documentURL
CF$UID
1337
selection
CF$UID
1339
timestamp
CF$UID
1338
file://localhost/Users/FedeX/ElementParser/ElementParser.xcodeproj/
326307231.60411298
$class
CF$UID
105
NS.keys
CF$UID
566
CF$UID
567
NS.objects
CF$UID
1340
CF$UID
553
ElementParser
$class
CF$UID
105
NS.keys
CF$UID
549
CF$UID
550
CF$UID
551
CF$UID
552
CF$UID
1342
NS.objects
CF$UID
1334
CF$UID
1343
CF$UID
1349
CF$UID
1350
CF$UID
1360
Xcode3ProjectEditor_Xcode3BuildPhasesEditor
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1344
$class
CF$UID
108
NS.objects
CF$UID
1345
CF$UID
1347
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1346
170
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1348
746
Xcode3BuildPhasesEditor
$class
CF$UID
32
NS.objects
CF$UID
1351
$class
CF$UID
568
documentURL
CF$UID
1352
selection
CF$UID
1354
timestamp
CF$UID
1353
file://localhost/Users/FedeX/Downloads/sqlite-fts3-extension-2.0/sqlite-fts3-extension.xcodeproj/
326281144.57011998
$class
CF$UID
105
NS.keys
CF$UID
567
CF$UID
1355
CF$UID
1356
NS.objects
CF$UID
1349
CF$UID
1357
CF$UID
1358
Target
Xcode3BuildPhasesEditorLocations
sqlite-3.6.23.1-fts3-ext
$class
CF$UID
32
NS.objects
CF$UID
1359
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
1361
CF$UID
1362
CF$UID
1363
CF$UID
1364
CF$UID
1365
CF$UID
1366
CF$UID
1367
NS.objects
CF$UID
166
CF$UID
1368
CF$UID
1369
CF$UID
1370
CF$UID
1371
CF$UID
1372
CF$UID
473
Xcode3BuildPhasesEditorFilterKey
342BCD8511D922620069D2C2
342BCD8311D922620069D2C2
Xcode3BuildPhasesEditorDisclosedNamesKey
342BCD8411D922620069D2C2
342BCD8611D922620069D2C2
kXcode3BuildPhasesEditorScrollPointKey
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
549
CF$UID
1374
CF$UID
551
CF$UID
552
CF$UID
550
NS.objects
CF$UID
553
CF$UID
1375
CF$UID
1376
CF$UID
1377
CF$UID
1382
Xcode3ProjectEditor_Xcode3BuildRulesEditor
$class
CF$UID
105
NS.keys
NS.objects
Xcode3BuildRulesEditor
$class
CF$UID
32
NS.objects
CF$UID
1378
$class
CF$UID
568
documentURL
CF$UID
1379
selection
CF$UID
1381
timestamp
CF$UID
1380
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/sqlite-fts3-extension.xcodeproj/
326280818.03611201
$class
CF$UID
105
NS.keys
CF$UID
567
CF$UID
1355
NS.objects
CF$UID
1376
CF$UID
1357
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1383
$class
CF$UID
108
NS.objects
CF$UID
1384
CF$UID
1386
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1385
170
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1387
746
$class
CF$UID
105
NS.keys
CF$UID
1389
CF$UID
1391
CF$UID
1393
CF$UID
1395
CF$UID
1397
CF$UID
1399
CF$UID
1401
CF$UID
1403
CF$UID
1405
CF$UID
1407
CF$UID
1409
CF$UID
1411
NS.objects
CF$UID
1413
CF$UID
1414
CF$UID
1422
CF$UID
1423
CF$UID
1428
CF$UID
1429
CF$UID
1432
CF$UID
1433
CF$UID
1434
CF$UID
1435
CF$UID
1440
CF$UID
1443
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1390
x-xcode-log://DEA7C0C8-7FA8-4325-852B-64B4C1A0637A
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1392
x-xcode-log://D73CB91A-A6D7-4F3F-B10C-87BE4355F136
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1394
x-xcode-log://41753FF8-5E62-4D25-8A9C-B25420DB3E7B
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1396
x-xcode-log://F8DBCA58-BE63-436A-9547-0A439A10465C
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1398
x-xcode-log://5396EC27-7EF5-4A6A-BD74-9ED585324ABC
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1400
x-xcode-log://F2890061-0D3F-4B8B-A371-A5D47D87B5C0
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1402
x-xcode-log://C2107091-1500-4225-ABF0-0408469E7400
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1404
x-xcode-log://114CCE52-13AF-40BC-BA29-AFBABD057264
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1406
x-xcode-log://2080DF2A-44EC-4D54-A346-436BCA9B0166
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1408
x-xcode-log://26C2F4E0-0995-4A9E-BC96-C0F9C48836D2
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1410
x-xcode-log://4A766C2F-9A7E-4848-BAAB-6F1FB6B7C4D1
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1412
x-xcode-log://FE53E7E1-8546-4D71-9871-1623DAD87241
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
730
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
1415
$class
CF$UID
32
NS.objects
CF$UID
1416
$class
CF$UID
1421
documentURL
CF$UID
1392
expandTranscript
indexPath
CF$UID
1417
timestamp
CF$UID
0
$class
CF$UID
1420
NSIndexPathData
CF$UID
1418
NSIndexPathLength
2
$class
CF$UID
1419
NS.data
ADo=
$classes
NSMutableData
NSData
NSObject
$classname
NSMutableData
$classes
NSIndexPath
NSObject
$classname
NSIndexPath
$classes
IDELogDocumentLocation
DVTDocumentLocation
NSObject
$classname
IDELogDocumentLocation
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
730
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
1424
$class
CF$UID
32
NS.objects
CF$UID
1425
$class
CF$UID
1421
documentURL
CF$UID
1396
expandTranscript
indexPath
CF$UID
1426
timestamp
CF$UID
0
$class
CF$UID
1420
NSIndexPathData
CF$UID
1427
NSIndexPathLength
2
$class
CF$UID
1419
NS.data
AAA=
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
730
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
1430
$class
CF$UID
32
NS.objects
CF$UID
1431
$class
CF$UID
1421
documentURL
CF$UID
1400
expandTranscript
indexPath
CF$UID
1426
timestamp
CF$UID
0
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
730
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
730
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
730
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
1436
$class
CF$UID
32
NS.objects
CF$UID
1437
$class
CF$UID
1421
documentURL
CF$UID
1408
expandTranscript
indexPath
CF$UID
1438
timestamp
CF$UID
0
$class
CF$UID
1420
NSIndexPathData
CF$UID
1439
NSIndexPathLength
2
$class
CF$UID
1419
NS.data
AC4=
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
1441
$class
CF$UID
32
NS.objects
CF$UID
1442
$class
CF$UID
1421
documentURL
CF$UID
1410
expandTranscript
indexPath
CF$UID
1417
timestamp
CF$UID
0
$class
CF$UID
105
NS.keys
CF$UID
682
NS.objects
CF$UID
1444
$class
CF$UID
32
NS.objects
CF$UID
1445
$class
CF$UID
1421
documentURL
CF$UID
1412
expandTranscript
indexPath
CF$UID
1438
timestamp
CF$UID
0
$class
CF$UID
105
NS.keys
CF$UID
1447
CF$UID
1448
NS.objects
CF$UID
1449
CF$UID
1450
IDEDeviceLocation
IDEDeviceArchitecture
dvtdevice-iphonesimulator:/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator4.3.sdk-iPad
i386
$class
CF$UID
105
NS.keys
CF$UID
1452
NS.objects
CF$UID
1453
IDENameString
AePubReader
$class
CF$UID
105
NS.keys
CF$UID
1455
CF$UID
1456
CF$UID
1457
NS.objects
CF$UID
1458
CF$UID
1483
CF$UID
1325
IDEActivityReportCompletionSummaryStringSegments
IDEActivityReportOptions
IDEActivityReportTitle
$class
CF$UID
108
NS.objects
CF$UID
1459
CF$UID
1466
CF$UID
1470
CF$UID
1474
$class
CF$UID
105
NS.keys
CF$UID
1460
CF$UID
1461
CF$UID
1462
NS.objects
CF$UID
1463
CF$UID
1464
CF$UID
1465
IDEActivityReportStringSegmentPriority
IDEActivityReportStringSegmentBackSeparator
IDEActivityReportStringSegmentStringValue
2
Build
$class
CF$UID
105
NS.keys
CF$UID
1460
CF$UID
1461
CF$UID
1462
NS.objects
CF$UID
1467
CF$UID
1468
CF$UID
1469
4
:
AePubReader
$class
CF$UID
105
NS.keys
CF$UID
1460
CF$UID
1461
CF$UID
1462
NS.objects
CF$UID
1471
CF$UID
1472
CF$UID
1473
1
│
$class
CF$UID
1419
NS.data
YnBsaXN0MDDUAQIDBAUGOzxYJHZlcnNpb25YJG9iamVjdHNZJGFy
Y2hpdmVyVCR0b3ASAAGGoK0HCA8QGhscJCUrMTQ3VSRudWxs0wkK
CwwNDlxOU0F0dHJpYnV0ZXNWJGNsYXNzWE5TU3RyaW5ngAOADIAC
WVN1Y2NlZWRlZNMKERITFBdXTlMua2V5c1pOUy5vYmplY3RzgAui
FRaABIAFohgZgAaACVZOU0ZvbnRXTlNDb2xvctQKHR4fICEiI1ZO
U05hbWVWTlNTaXplWE5TZkZsYWdzgAiAByNAJgAAAAAAABENEF8Q
EUx1Y2lkYUdyYW5kZS1Cb2xk0iYnKClaJGNsYXNzbmFtZVgkY2xh
c3Nlc1ZOU0ZvbnSiKCpYTlNPYmplY3TTCiwtLi8wXE5TQ29sb3JT
cGFjZVdOU1doaXRlgAoQA0IwANImJzIzV05TQ29sb3KiMirSJic1
NlxOU0RpY3Rpb25hcnmiNSrSJic4OV8QEk5TQXR0cmlidXRlZFN0
cmluZ6I6Kl8QEk5TQXR0cmlidXRlZFN0cmluZ18QD05TS2V5ZWRB
cmNoaXZlctE9PlRyb290gAEACAARABoAIwAtADIANwBFAEsAUgBf
AGYAbwBxAHMAdQB/AIYAjgCZAJsAngCgAKIApQCnAKkAsAC4AMEA
yADPANgA2gDcAOUA6AD8AQEBDAEVARwBHwEoAS8BPAFEAUYBSAFL
AVABWAFbAWABbQFwAXUBigGNAaIBtAG3AbwAAAAAAAACAQAAAAAA
AAA/AAAAAAAAAAAAAAAAAAABvg==
$class
CF$UID
105
NS.keys
CF$UID
1460
CF$UID
1475
CF$UID
1476
CF$UID
1462
CF$UID
1477
CF$UID
1478
NS.objects
CF$UID
1479
CF$UID
113
CF$UID
1480
CF$UID
1482
CF$UID
113
CF$UID
113
IDEActivityReportStringSegmentType
IDEActivityReportStringSegmentDate
IDEActivityReportStringSegmentDateStyle
IDEActivityReportStringSegmentTimeStyle
3
$class
CF$UID
1481
NS.time
330994813.74293
$classes
NSDate
NSObject
$classname
NSDate
Today at 01.00
106
$class
CF$UID
108
NS.objects
CF$UID
15
$class
CF$UID
105
NS.keys
CF$UID
1486
CF$UID
1487
CF$UID
1489
CF$UID
1491
CF$UID
1492
CF$UID
1493
CF$UID
1495
CF$UID
1497
CF$UID
1498
CF$UID
1499
NS.objects
CF$UID
1500
CF$UID
1505
CF$UID
1508
CF$UID
1511
CF$UID
1514
CF$UID
1517
CF$UID
1520
CF$UID
1523
CF$UID
1526
CF$UID
1529
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
120
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1488
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Chapter.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1490
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1379
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
563
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1494
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1496
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/MainWindow.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
406
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
325
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
475
$class
CF$UID
116
NS.keys
CF$UID
1501
CF$UID
1502
NS.objects
CF$UID
1503
CF$UID
1504
width
height
600
600
$class
CF$UID
116
NS.keys
CF$UID
1501
CF$UID
1502
NS.objects
CF$UID
1506
CF$UID
1507
600
600
$class
CF$UID
116
NS.keys
CF$UID
1501
CF$UID
1502
NS.objects
CF$UID
1509
CF$UID
1510
600
600
$class
CF$UID
116
NS.keys
CF$UID
1501
CF$UID
1502
NS.objects
CF$UID
1512
CF$UID
1513
600
600
$class
CF$UID
116
NS.keys
CF$UID
1501
CF$UID
1502
NS.objects
CF$UID
1515
CF$UID
1516
600
600
$class
CF$UID
116
NS.keys
CF$UID
1501
CF$UID
1502
NS.objects
CF$UID
1518
CF$UID
1519
832
784
$class
CF$UID
116
NS.keys
CF$UID
1501
CF$UID
1502
NS.objects
CF$UID
1521
CF$UID
1522
600
600
$class
CF$UID
116
NS.keys
CF$UID
1501
CF$UID
1502
NS.objects
CF$UID
1524
CF$UID
1525
600
578
$class
CF$UID
116
NS.keys
CF$UID
1501
CF$UID
1502
NS.objects
CF$UID
1527
CF$UID
1528
600
600
$class
CF$UID
116
NS.keys
CF$UID
1501
CF$UID
1502
NS.objects
CF$UID
1530
CF$UID
1531
600
600
$class
CF$UID
108
NS.objects
CF$UID
1533
CF$UID
1535
CF$UID
1536
CF$UID
1538
CF$UID
1540
CF$UID
1542
CF$UID
1544
CF$UID
1546
CF$UID
1548
CF$UID
1550
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1534
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/MainWindow.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1319
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1537
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1539
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubView.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1541
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultsViewController.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1543
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/SearchResultsViewController.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1545
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.xib
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1547
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/AePubReaderAppDelegate.h
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1549
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubViewController.m
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1551
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/EPubViewController.h
$class
CF$UID
105
NS.keys
CF$UID
1553
CF$UID
25
CF$UID
26
CF$UID
29
CF$UID
28
CF$UID
30
NS.objects
CF$UID
1554
CF$UID
1632
CF$UID
33
CF$UID
1633
CF$UID
1553
CF$UID
9
IDEWorkspaceTabController_97519CC1-5356-4471-8587-F3F9B91EC839
$class
CF$UID
105
NS.keys
CF$UID
35
CF$UID
36
CF$UID
37
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
42
NS.objects
CF$UID
1555
CF$UID
33
CF$UID
285
CF$UID
1610
CF$UID
1616
CF$UID
1624
CF$UID
33
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
1556
CF$UID
1567
CF$UID
1588
CF$UID
153
CF$UID
64
CF$UID
1603
CF$UID
1609
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
1557
rootLayoutTreeNode
CF$UID
1565
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
1558
orientation
0
parent
CF$UID
1565
$class
CF$UID
69
DocumentLocation
CF$UID
1563
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
1559
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
1560
CF$UID
1561
CF$UID
1562
$class
CF$UID
59
Identifier
CF$UID
211
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
1564
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib
$class
CF$UID
72
children
CF$UID
1566
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
1557
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
1568
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
1569
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
1570
CF$UID
64
CF$UID
1586
$class
CF$UID
32
NS.objects
CF$UID
1571
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
91
CF$UID
1572
CF$UID
1577
CF$UID
1584
CF$UID
211
CF$UID
118
CF$UID
1585
$class
CF$UID
69
DocumentLocation
CF$UID
1563
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
1573
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
1574
CF$UID
1575
CF$UID
1576
$class
CF$UID
59
Identifier
CF$UID
211
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
1578
CF$UID
1580
CF$UID
101
CF$UID
1582
$class
CF$UID
105
NS.keys
CF$UID
103
NS.objects
CF$UID
1579
270
$class
CF$UID
108
NS.objects
CF$UID
1581
124
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
233
CF$UID
1583
$class
CF$UID
108
NS.objects
Search Bar
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
238
$class
CF$UID
32
NS.objects
CF$UID
1587
{{0, 0}, {832, 784}}
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
130
CF$UID
129
NS.objects
CF$UID
113
CF$UID
1589
CF$UID
1590
CF$UID
113
CF$UID
1591
CF$UID
1597
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1592
$class
CF$UID
108
NS.objects
CF$UID
1593
CF$UID
1595
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
1594
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
1596
533
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1598
$class
CF$UID
108
NS.objects
CF$UID
1599
CF$UID
1601
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
1600
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
1602
533
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1604
$class
CF$UID
108
NS.objects
CF$UID
1605
CF$UID
1607
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
1606
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
1608
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1611
$class
CF$UID
108
NS.objects
CF$UID
1612
CF$UID
1614
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1613
560
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1615
224
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
1617
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
1618
CF$UID
1620
$class
CF$UID
32
NS.objects
CF$UID
1619
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
211
$class
CF$UID
183
NS.objects
CF$UID
1621
CF$UID
1622
CF$UID
1623
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1625
$class
CF$UID
108
NS.objects
CF$UID
1626
CF$UID
1628
CF$UID
1630
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
1627
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
1629
1180
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
1631
260
$class
CF$UID
32
NS.objects
CF$UID
1553
{{360, 70}, {832, 808}}
$class
CF$UID
105
NS.keys
CF$UID
29
CF$UID
26
CF$UID
25
CF$UID
1635
CF$UID
28
CF$UID
30
NS.objects
CF$UID
1636
CF$UID
33
CF$UID
1637
CF$UID
1638
CF$UID
1635
CF$UID
10
IDEWorkspaceTabController_9C9ACCB2-683B-44D1-8A2D-26DCFEC51FE5
{{1624, 254}, {600, 624}}
$class
CF$UID
32
NS.objects
CF$UID
1635
$class
CF$UID
105
NS.keys
CF$UID
35
CF$UID
36
CF$UID
37
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
42
NS.objects
CF$UID
1639
CF$UID
33
CF$UID
1649
CF$UID
1691
CF$UID
1697
CF$UID
1704
CF$UID
33
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
51
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
44
NS.objects
CF$UID
33
CF$UID
1640
CF$UID
1660
CF$UID
153
CF$UID
64
CF$UID
1675
CF$UID
1681
CF$UID
1682
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
1641
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
1642
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
1643
CF$UID
64
CF$UID
1659
$class
CF$UID
32
NS.objects
CF$UID
1644
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
1645
CF$UID
1646
CF$UID
1654
CF$UID
1649
CF$UID
1649
CF$UID
323
CF$UID
1658
public.objective-c-source
$class
CF$UID
69
DocumentLocation
CF$UID
1652
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
1647
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
1648
CF$UID
1650
CF$UID
1651
$class
CF$UID
59
Identifier
CF$UID
1649
Chapter.m
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
1653
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Chapter.m
$class
CF$UID
116
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
1655
CF$UID
1656
CF$UID
33
CF$UID
1657
326320583.452537
{0, 1472}
{163, 0}
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1488
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
130
CF$UID
128
CF$UID
129
CF$UID
127
NS.objects
CF$UID
113
CF$UID
1661
CF$UID
1662
CF$UID
113
CF$UID
1668
CF$UID
1674
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1663
$class
CF$UID
108
NS.objects
CF$UID
1664
CF$UID
1666
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
1665
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
1667
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1669
$class
CF$UID
108
NS.objects
CF$UID
1670
CF$UID
1672
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
1671
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
1673
301
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1676
$class
CF$UID
108
NS.objects
CF$UID
1677
CF$UID
1679
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
1678
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
1680
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
1683
rootLayoutTreeNode
CF$UID
1689
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
1684
orientation
0
parent
CF$UID
1689
$class
CF$UID
69
DocumentLocation
CF$UID
1652
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
1685
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
1686
CF$UID
1687
CF$UID
1688
$class
CF$UID
59
Identifier
CF$UID
1649
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
72
children
CF$UID
1690
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
1683
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1692
$class
CF$UID
108
NS.objects
CF$UID
1693
CF$UID
1695
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1694
232
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1696
368
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
1698
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
1699
CF$UID
1701
$class
CF$UID
32
NS.objects
CF$UID
1700
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
CF$UID
1649
$class
CF$UID
183
NS.objects
CF$UID
1702
CF$UID
1703
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1705
$class
CF$UID
108
NS.objects
CF$UID
1706
CF$UID
1708
CF$UID
1710
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
1707
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
1709
880
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
1711
260
$class
CF$UID
105
NS.keys
CF$UID
1713
CF$UID
25
CF$UID
26
CF$UID
28
CF$UID
29
CF$UID
30
NS.objects
CF$UID
1714
CF$UID
2011
CF$UID
33
CF$UID
1713
CF$UID
200
CF$UID
11
IDEWorkspaceTabController_A2BDB5D8-7500-406C-A80D-698B5E86BF8D
$class
CF$UID
105
NS.keys
CF$UID
37
CF$UID
36
CF$UID
42
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
35
NS.objects
CF$UID
1715
CF$UID
33
CF$UID
64
CF$UID
1716
CF$UID
1722
CF$UID
1732
CF$UID
33
CF$UID
1740
sqlite-fts3-extension.xcodeproj
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1717
$class
CF$UID
108
NS.objects
CF$UID
1718
CF$UID
1720
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1719
376
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1721
224
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
1723
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
1724
CF$UID
1727
$class
CF$UID
32
NS.objects
CF$UID
1725
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
1726
CF$UID
1715
sqlite-fts3-extension-2.0
$class
CF$UID
183
NS.objects
CF$UID
1728
CF$UID
1729
CF$UID
1730
CF$UID
1731
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
1726
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1733
$class
CF$UID
108
NS.objects
CF$UID
1734
CF$UID
1736
CF$UID
1738
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
1735
224
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
1737
916
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
1739
260
$class
CF$UID
105
NS.keys
CF$UID
51
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
44
NS.objects
CF$UID
33
CF$UID
1741
CF$UID
1979
CF$UID
153
CF$UID
64
CF$UID
1994
CF$UID
2000
CF$UID
2001
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
1742
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
1743
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
1744
CF$UID
64
CF$UID
1978
$class
CF$UID
32
NS.objects
CF$UID
1745
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
541
CF$UID
1746
CF$UID
1754
CF$UID
1715
CF$UID
1715
CF$UID
569
CF$UID
1977
$class
CF$UID
69
DocumentLocation
CF$UID
1752
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
1747
IndexOfDocumentIdentifier
CF$UID
1751
$class
CF$UID
32
NS.objects
CF$UID
1748
CF$UID
1749
CF$UID
1750
$class
CF$UID
59
Identifier
CF$UID
1715
$class
CF$UID
59
Identifier
CF$UID
1726
$class
CF$UID
59
Identifier
CF$UID
63
9223372036854775807
$class
CF$UID
68
documentURL
CF$UID
1753
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/sqlite-fts3-extension-2.0/sqlite-fts3-extension.xcodeproj/
$class
CF$UID
116
NS.keys
CF$UID
549
CF$UID
1374
CF$UID
551
CF$UID
552
CF$UID
1755
CF$UID
550
NS.objects
CF$UID
553
CF$UID
1756
CF$UID
1334
CF$UID
1757
CF$UID
1970
CF$UID
1971
Xcode3ProjectEditor_Xcode3BuildSettingsEditor
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
32
NS.objects
CF$UID
1758
$class
CF$UID
568
documentURL
CF$UID
1379
selection
CF$UID
1760
timestamp
CF$UID
1759
326280754.58657598
$class
CF$UID
105
NS.keys
CF$UID
567
CF$UID
1355
CF$UID
1761
NS.objects
CF$UID
1334
CF$UID
1357
CF$UID
1762
Xcode3BuildSettingsEditorLocations
$class
CF$UID
32
NS.objects
CF$UID
1763
$class
CF$UID
105
NS.keys
CF$UID
1764
CF$UID
1765
CF$UID
1766
CF$UID
1767
CF$UID
1768
CF$UID
1769
NS.objects
CF$UID
113
CF$UID
1770
CF$UID
64
CF$UID
64
CF$UID
1771
CF$UID
64
Xcode3BuildPropertyNameDisplayMode
Selected Build Properties
Xcode3BuildSettingsEditorDisplayMode
Xcode3BuildPropertyValueDisplayMode
Collapsed Build Property Categories
Xcode3BuildSettingsEditorMode
$class
CF$UID
108
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
1772
CF$UID
1773
CF$UID
1774
CF$UID
1775
CF$UID
1776
CF$UID
1777
CF$UID
1778
CF$UID
1779
CF$UID
1780
CF$UID
1781
CF$UID
1782
CF$UID
1783
CF$UID
1784
CF$UID
1785
CF$UID
1786
CF$UID
1787
CF$UID
1788
CF$UID
1789
CF$UID
1790
CF$UID
1791
CF$UID
1792
CF$UID
1793
CF$UID
1794
CF$UID
1795
CF$UID
1796
CF$UID
1797
CF$UID
1798
CF$UID
1799
CF$UID
1800
CF$UID
1801
CF$UID
1802
CF$UID
1803
CF$UID
1804
CF$UID
1805
CF$UID
1806
CF$UID
1807
CF$UID
1808
CF$UID
1809
CF$UID
1810
CF$UID
1811
CF$UID
1812
CF$UID
1813
CF$UID
1814
CF$UID
1815
CF$UID
1816
CF$UID
1817
CF$UID
1818
CF$UID
1819
CF$UID
1820
CF$UID
1821
CF$UID
1822
CF$UID
1823
CF$UID
1824
CF$UID
1825
CF$UID
1826
CF$UID
1827
CF$UID
1828
CF$UID
1829
CF$UID
1830
CF$UID
1831
CF$UID
1832
CF$UID
1833
CF$UID
1834
CF$UID
1835
CF$UID
1836
CF$UID
1837
CF$UID
1838
CF$UID
1839
CF$UID
1840
CF$UID
1841
CF$UID
1842
CF$UID
1843
CF$UID
1844
CF$UID
1845
CF$UID
1846
CF$UID
1847
CF$UID
1848
CF$UID
1849
CF$UID
1850
CF$UID
1851
CF$UID
1852
CF$UID
1853
CF$UID
1854
CF$UID
1855
CF$UID
1856
CF$UID
1857
CF$UID
1858
CF$UID
1859
CF$UID
1860
CF$UID
1861
CF$UID
1862
CF$UID
1863
CF$UID
1864
CF$UID
1865
CF$UID
1866
CF$UID
1867
CF$UID
1868
CF$UID
1869
CF$UID
1870
CF$UID
1871
CF$UID
1872
CF$UID
1873
CF$UID
1874
CF$UID
1875
CF$UID
1876
CF$UID
1877
CF$UID
1878
CF$UID
1879
CF$UID
1880
CF$UID
1881
CF$UID
1882
CF$UID
1883
CF$UID
1884
CF$UID
1885
CF$UID
1886
CF$UID
1887
CF$UID
1888
CF$UID
1889
CF$UID
1890
CF$UID
1891
CF$UID
1892
CF$UID
1893
CF$UID
1894
CF$UID
1895
CF$UID
1896
CF$UID
1897
CF$UID
1898
CF$UID
1899
CF$UID
1900
CF$UID
1901
CF$UID
1902
CF$UID
1903
CF$UID
1904
CF$UID
1905
CF$UID
1906
CF$UID
1907
CF$UID
1908
CF$UID
1909
CF$UID
1910
CF$UID
1911
CF$UID
1912
CF$UID
1913
CF$UID
1914
CF$UID
1915
CF$UID
1916
CF$UID
1917
CF$UID
1918
CF$UID
1919
CF$UID
1920
CF$UID
1921
CF$UID
1922
CF$UID
1923
CF$UID
1924
CF$UID
1925
CF$UID
1926
CF$UID
1927
CF$UID
1928
CF$UID
1929
CF$UID
1930
CF$UID
1931
CF$UID
1932
CF$UID
1933
CF$UID
1934
CF$UID
1935
CF$UID
1936
CF$UID
1937
CF$UID
1938
CF$UID
1939
CF$UID
1940
CF$UID
1941
CF$UID
1942
CF$UID
1943
CF$UID
1944
CF$UID
1945
CF$UID
1946
CF$UID
1947
CF$UID
1948
CF$UID
1949
CF$UID
1950
CF$UID
1951
CF$UID
1952
CF$UID
1953
CF$UID
1954
CF$UID
1955
CF$UID
1956
CF$UID
1957
CF$UID
1958
CF$UID
1959
CF$UID
1960
CF$UID
1961
CF$UID
1962
CF$UID
1963
CF$UID
1964
CF$UID
1965
CF$UID
1966
CF$UID
1967
CF$UID
1968
CF$UID
1969
$class
CF$UID
67
NS.string
Architectures||ADDITIONAL_SDKS
$class
CF$UID
67
NS.string
Architectures||ARCHS
$class
CF$UID
67
NS.string
Architectures||SDKROOT
$class
CF$UID
67
NS.string
Architectures||ONLY_ACTIVE_ARCH
$class
CF$UID
67
NS.string
Architectures||SUPPORTED_PLATFORMS
$class
CF$UID
67
NS.string
Architectures||VALID_ARCHS
$class
CF$UID
67
NS.string
Build Locations||SYMROOT
$class
CF$UID
67
NS.string
Build Locations||OBJROOT
$class
CF$UID
67
NS.string
Build Locations||SHARED_PRECOMPS_DIR
$class
CF$UID
67
NS.string
Build Options||BUILD_VARIANTS
$class
CF$UID
67
NS.string
Build Options||DEBUG_INFORMATION_FORMAT
$class
CF$UID
67
NS.string
Build Options||ENABLE_OPENMP_SUPPORT
$class
CF$UID
67
NS.string
Build Options||GENERATE_PROFILING_CODE
$class
CF$UID
67
NS.string
Build Options||PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR
$class
CF$UID
67
NS.string
Build Options||RUN_CLANG_STATIC_ANALYZER
$class
CF$UID
67
NS.string
Build Options||SCAN_ALL_SOURCE_FILES_FOR_INCLUDES
$class
CF$UID
67
NS.string
Build Options||VALIDATE_PRODUCT
$class
CF$UID
67
NS.string
Code Signing||CODE_SIGN_ENTITLEMENTS
$class
CF$UID
67
NS.string
Code Signing||CODE_SIGN_IDENTITY
$class
CF$UID
67
NS.string
Code Signing||CODE_SIGN_RESOURCE_RULES_PATH
$class
CF$UID
67
NS.string
Code Signing||OTHER_CODE_SIGN_FLAGS
$class
CF$UID
67
NS.string
Compiler Version||GCC_VERSION
$class
CF$UID
67
NS.string
Deployment||STRIPFLAGS
$class
CF$UID
67
NS.string
Deployment||ALTERNATE_GROUP
$class
CF$UID
67
NS.string
Deployment||ALTERNATE_OWNER
$class
CF$UID
67
NS.string
Deployment||ALTERNATE_MODE
$class
CF$UID
67
NS.string
Deployment||ALTERNATE_PERMISSIONS_FILES
$class
CF$UID
67
NS.string
Deployment||COMBINE_HIDPI_IMAGES
$class
CF$UID
67
NS.string
Deployment||DEPLOYMENT_LOCATION
$class
CF$UID
67
NS.string
Deployment||DEPLOYMENT_POSTPROCESSING
$class
CF$UID
67
NS.string
Deployment||INSTALL_GROUP
$class
CF$UID
67
NS.string
Deployment||INSTALL_OWNER
$class
CF$UID
67
NS.string
Deployment||INSTALL_MODE_FLAG
$class
CF$UID
67
NS.string
Deployment||DSTROOT
$class
CF$UID
67
NS.string
Deployment||INSTALL_PATH
$class
CF$UID
67
NS.string
Deployment||MACOSX_DEPLOYMENT_TARGET
$class
CF$UID
67
NS.string
Deployment||SKIP_INSTALL
$class
CF$UID
67
NS.string
Deployment||STRIP_INSTALLED_PRODUCT
$class
CF$UID
67
NS.string
Deployment||STRIP_STYLE
$class
CF$UID
67
NS.string
Deployment||TARGETED_DEVICE_FAMILY
$class
CF$UID
67
NS.string
Deployment||SEPARATE_STRIP
$class
CF$UID
67
NS.string
Deployment||IPHONEOS_DEPLOYMENT_TARGET
$class
CF$UID
67
NS.string
Kernel Module||MODULE_NAME
$class
CF$UID
67
NS.string
Kernel Module||MODULE_START
$class
CF$UID
67
NS.string
Kernel Module||MODULE_STOP
$class
CF$UID
67
NS.string
Kernel Module||MODULE_VERSION
$class
CF$UID
67
NS.string
Linking||BUNDLE_LOADER
$class
CF$UID
67
NS.string
Linking||STANDARD_C_PLUS_PLUS_LIBRARY_TYPE
$class
CF$UID
67
NS.string
Linking||DYLIB_COMPATIBILITY_VERSION
$class
CF$UID
67
NS.string
Linking||DYLIB_CURRENT_VERSION
$class
CF$UID
67
NS.string
Linking||DEAD_CODE_STRIPPING
$class
CF$UID
67
NS.string
Linking||LINKER_DISPLAYS_MANGLED_NAMES
$class
CF$UID
67
NS.string
Linking||LD_NO_PIE
$class
CF$UID
67
NS.string
Linking||PRESERVE_DEAD_CODE_INITS_AND_TERMS
$class
CF$UID
67
NS.string
Linking||LD_DYLIB_INSTALL_NAME
$class
CF$UID
67
NS.string
Linking||EXPORTED_SYMBOLS_FILE
$class
CF$UID
67
NS.string
Linking||INIT_ROUTINE
$class
CF$UID
67
NS.string
Linking||LINK_WITH_STANDARD_LIBRARIES
$class
CF$UID
67
NS.string
Linking||MACH_O_TYPE
$class
CF$UID
67
NS.string
Linking||LD_OPENMP_FLAGS
$class
CF$UID
67
NS.string
Linking||ORDER_FILE
$class
CF$UID
67
NS.string
Linking||OTHER_LDFLAGS
$class
CF$UID
67
NS.string
Linking||GENERATE_MASTER_OBJECT_FILE
$class
CF$UID
67
NS.string
Linking||PRELINK_LIBS
$class
CF$UID
67
NS.string
Linking||KEEP_PRIVATE_EXTERNS
$class
CF$UID
67
NS.string
Linking||LD_RUNPATH_SEARCH_PATHS
$class
CF$UID
67
NS.string
Linking||SEPARATE_SYMBOL_EDIT
$class
CF$UID
67
NS.string
Linking||PRELINK_FLAGS
$class
CF$UID
67
NS.string
Linking||SECTORDER_FLAGS
$class
CF$UID
67
NS.string
Linking||UNEXPORTED_SYMBOLS_FILE
$class
CF$UID
67
NS.string
Linking||WARNING_LDFLAGS
$class
CF$UID
67
NS.string
Linking||LD_GENERATE_MAP_FILE
$class
CF$UID
67
NS.string
Packaging||COMPRESS_PNG_FILES
$class
CF$UID
67
NS.string
Packaging||APPLY_RULES_IN_COPY_FILES
$class
CF$UID
67
NS.string
Packaging||EXECUTABLE_EXTENSION
$class
CF$UID
67
NS.string
Packaging||EXECUTABLE_PREFIX
$class
CF$UID
67
NS.string
Packaging||INFOPLIST_EXPAND_BUILD_SETTINGS
$class
CF$UID
67
NS.string
Packaging||GENERATE_PKGINFO_FILE
$class
CF$UID
67
NS.string
Packaging||FRAMEWORK_VERSION
$class
CF$UID
67
NS.string
Packaging||INFOPLIST_FILE
$class
CF$UID
67
NS.string
Packaging||INFOPLIST_OTHER_PREPROCESSOR_FLAGS
$class
CF$UID
67
NS.string
Packaging||INFOPLIST_OUTPUT_FORMAT
$class
CF$UID
67
NS.string
Packaging||INFOPLIST_PREPROCESSOR_DEFINITIONS
$class
CF$UID
67
NS.string
Packaging||INFOPLIST_PREFIX_HEADER
$class
CF$UID
67
NS.string
Packaging||INFOPLIST_PREPROCESS
$class
CF$UID
67
NS.string
Packaging||COPYING_PRESERVES_HFS_DATA
$class
CF$UID
67
NS.string
Packaging||PRIVATE_HEADERS_FOLDER_PATH
$class
CF$UID
67
NS.string
Packaging||PRODUCT_NAME
$class
CF$UID
67
NS.string
Packaging||PLIST_FILE_OUTPUT_FORMAT
$class
CF$UID
67
NS.string
Packaging||PUBLIC_HEADERS_FOLDER_PATH
$class
CF$UID
67
NS.string
Packaging||STRINGS_FILE_OUTPUT_ENCODING
$class
CF$UID
67
NS.string
Packaging||WRAPPER_EXTENSION
$class
CF$UID
67
NS.string
Search Paths||ALWAYS_SEARCH_USER_PATHS
$class
CF$UID
67
NS.string
Search Paths||FRAMEWORK_SEARCH_PATHS
$class
CF$UID
67
NS.string
Search Paths||HEADER_SEARCH_PATHS
$class
CF$UID
67
NS.string
Search Paths||LIBRARY_SEARCH_PATHS
$class
CF$UID
67
NS.string
Search Paths||REZ_SEARCH_PATHS
$class
CF$UID
67
NS.string
Search Paths||EXCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES
$class
CF$UID
67
NS.string
Search Paths||INCLUDED_RECURSIVE_SEARCH_PATH_SUBDIRECTORIES
$class
CF$UID
67
NS.string
Search Paths||USER_HEADER_SEARCH_PATHS
$class
CF$UID
67
NS.string
Unit Testing||OTHER_TEST_FLAGS
$class
CF$UID
67
NS.string
Unit Testing||TEST_AFTER_BUILD
$class
CF$UID
67
NS.string
Unit Testing||TEST_HOST
$class
CF$UID
67
NS.string
Unit Testing||TEST_RIG
$class
CF$UID
67
NS.string
Versioning||CURRENT_PROJECT_VERSION
$class
CF$UID
67
NS.string
Versioning||VERSION_INFO_FILE
$class
CF$UID
67
NS.string
Versioning||VERSION_INFO_EXPORT_DECL
$class
CF$UID
67
NS.string
Versioning||VERSION_INFO_PREFIX
$class
CF$UID
67
NS.string
Versioning||VERSION_INFO_SUFFIX
$class
CF$UID
67
NS.string
Versioning||VERSIONING_SYSTEM
$class
CF$UID
67
NS.string
Versioning||VERSION_INFO_BUILDER
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_FAST_OBJC_DISPATCH
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_OBJC_CALL_CXX_CDTORS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_THUMB_SUPPORT
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_ENABLE_SSE3_EXTENSIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_ENABLE_SSE41_EXTENSIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_ENABLE_SSE42_EXTENSIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_ENABLE_SUPPLEMENTAL_SSE3_INSTRUCTIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_STRICT_ALIASING
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_FEEDBACK_DIRECTED_OPTIMIZATION
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_GENERATE_DEBUGGING_SYMBOLS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_DYNAMIC_NO_PIC
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_GENERATE_TEST_COVERAGE_FILES
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_INLINES_ARE_PRIVATE_EXTERN
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_INSTRUMENT_PROGRAM_FLOW_ARCS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_ENABLE_KERNEL_DEVELOPMENT
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_DEBUGGING_SYMBOLS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_REUSE_STRINGS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_NO_COMMON_BLOCKS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_ENABLE_OBJC_GC
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_FAST_MATH
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_ENABLE_SYMBOL_SEPARATION
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_THREADSAFE_STATICS
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_SYMBOLS_PRIVATE_EXTERN
$class
CF$UID
67
NS.string
GCC 4.2 - Code Generation||GCC_UNROLL_LOOPS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_CHAR_IS_UNSIGNED_CHAR
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_ENABLE_ASM_KEYWORD
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_C_LANGUAGE_STANDARD
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_CHECK_RETURN_VALUE_OF_OPERATOR_NEW
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_CW_ASM_SYNTAX
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_INPUT_FILETYPE
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_ENABLE_CPP_EXCEPTIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_ENABLE_CPP_RTTI
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_LINK_WITH_DYNAMIC_LIBRARIES
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_ENABLE_OBJC_EXCEPTIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_ENABLE_TRIGRAPHS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_ENABLE_FLOATING_POINT_LIBRARY_CALLS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_USE_INDIRECT_FUNCTION_CALLS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_USE_REGISTER_FUNCTION_CALLS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_INCREASE_PRECOMPILED_HEADER_SHARING
$class
CF$UID
67
NS.string
GCC 4.2 - Language||OTHER_CFLAGS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||OTHER_CPLUSPLUSFLAGS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_PRECOMPILE_PREFIX_HEADER
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_PREFIX_HEADER
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_ENABLE_BUILTIN_FUNCTIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_ENABLE_PASCAL_STRINGS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_FORCE_CPU_SUBTYPE_ALL
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_SHORT_ENUMS
$class
CF$UID
67
NS.string
GCC 4.2 - Language||GCC_USE_STANDARD_INCLUDE_SEARCHING
$class
CF$UID
67
NS.string
GCC 4.2 - Preprocessing||GCC_PREPROCESSOR_DEFINITIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Preprocessing||GCC_PREPROCESSOR_DEFINITIONS_NOT_USED_IN_PRECOMPS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_CHECK_SWITCH_STATEMENTS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_EFFECTIVE_CPLUSPLUS_VIOLATIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_FOUR_CHARACTER_CONSTANTS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_SHADOW
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_64_TO_32_BIT_CONVERSION
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_ALLOW_INCOMPLETE_PROTOCOL
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_INHIBIT_ALL_WARNINGS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_INITIALIZER_NOT_FULLY_BRACKETED
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_ABOUT_RETURN_TYPE
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_MISSING_PARENTHESES
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_ABOUT_MISSING_FIELD_INITIALIZERS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_ABOUT_MISSING_PROTOTYPES
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_ABOUT_MISSING_NEWLINE
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_MULTIPLE_DEFINITION_TYPES_FOR_SELECTOR
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_NON_VIRTUAL_DESTRUCTOR
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||WARNING_CFLAGS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_HIDDEN_VIRTUAL_FUNCTIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_PEDANTIC
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_ABOUT_POINTER_SIGNEDNESS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_PROTOTYPE_CONVERSION
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_SIGN_COMPARE
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_STRICT_SELECTOR_MATCH
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_TREAT_IMPLICIT_FUNCTION_DECLARATIONS_AS_ERRORS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_TREAT_NONCONFORMANT_CODE_ERRORS_AS_WARNINGS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_TREAT_WARNINGS_AS_ERRORS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_TYPECHECK_CALLS_TO_PRINTF
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_UNDECLARED_SELECTOR
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_UNINITIALIZED_AUTOS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_UNKNOWN_PRAGMAS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_UNUSED_FUNCTION
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_UNUSED_LABEL
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_UNUSED_PARAMETER
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_UNUSED_VALUE
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_UNUSED_VARIABLE
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS
$class
CF$UID
67
NS.string
GCC 4.2 - Warnings||GCC_WARN_ABOUT_INVALID_OFFSETOF_MACRO
$class
CF$UID
67
NS.string
User-Defined||PREBINDING
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1972
$class
CF$UID
108
NS.objects
CF$UID
1973
CF$UID
1975
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1974
170
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
1976
450
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1379
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
130
CF$UID
128
CF$UID
129
CF$UID
127
NS.objects
CF$UID
113
CF$UID
1980
CF$UID
1981
CF$UID
113
CF$UID
1987
CF$UID
1993
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1982
$class
CF$UID
108
NS.objects
CF$UID
1983
CF$UID
1985
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
1984
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
1986
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1988
$class
CF$UID
108
NS.objects
CF$UID
1989
CF$UID
1991
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
1990
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
1992
301
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
1995
$class
CF$UID
108
NS.objects
CF$UID
1996
CF$UID
1998
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
1997
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
1999
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2002
rootLayoutTreeNode
CF$UID
2009
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2003
orientation
0
parent
CF$UID
2009
$class
CF$UID
69
DocumentLocation
CF$UID
1752
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2004
IndexOfDocumentIdentifier
CF$UID
2008
$class
CF$UID
32
NS.objects
CF$UID
2005
CF$UID
2006
CF$UID
2007
$class
CF$UID
59
Identifier
CF$UID
1715
$class
CF$UID
59
Identifier
CF$UID
1726
$class
CF$UID
59
Identifier
CF$UID
63
9223372036854775807
$class
CF$UID
72
children
CF$UID
2010
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2002
$class
CF$UID
32
NS.objects
CF$UID
1713
$class
CF$UID
105
NS.keys
CF$UID
2013
CF$UID
25
CF$UID
26
CF$UID
28
CF$UID
29
CF$UID
30
NS.objects
CF$UID
2014
CF$UID
2090
CF$UID
33
CF$UID
2013
CF$UID
2091
CF$UID
12
IDEWorkspaceTabController_33F789A1-53E8-4028-9690-E4897D217FEE
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
2015
CF$UID
2068
CF$UID
2074
CF$UID
2082
CF$UID
33
CF$UID
285
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
2016
CF$UID
2027
CF$UID
2046
CF$UID
153
CF$UID
64
CF$UID
2061
CF$UID
2067
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2017
rootLayoutTreeNode
CF$UID
2025
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2018
orientation
0
parent
CF$UID
2025
$class
CF$UID
69
DocumentLocation
CF$UID
2023
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2019
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2020
CF$UID
2021
CF$UID
2022
$class
CF$UID
59
Identifier
CF$UID
211
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
2024
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib
$class
CF$UID
72
children
CF$UID
2026
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2017
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
2028
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
2029
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2030
CF$UID
64
CF$UID
2045
$class
CF$UID
32
NS.objects
CF$UID
2031
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
91
CF$UID
2032
CF$UID
2037
CF$UID
2043
CF$UID
211
CF$UID
118
CF$UID
2044
$class
CF$UID
69
DocumentLocation
CF$UID
2023
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2033
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2034
CF$UID
2035
CF$UID
2036
$class
CF$UID
59
Identifier
CF$UID
211
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
2038
CF$UID
2040
CF$UID
101
CF$UID
2041
$class
CF$UID
105
NS.keys
CF$UID
103
NS.objects
CF$UID
2039
270
$class
CF$UID
108
NS.objects
CF$UID
235
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
233
CF$UID
2042
$class
CF$UID
108
NS.objects
CF$UID
235
View
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
238
$class
CF$UID
32
NS.objects
CF$UID
240
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
130
CF$UID
129
NS.objects
CF$UID
113
CF$UID
2047
CF$UID
2048
CF$UID
113
CF$UID
2049
CF$UID
2055
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2050
$class
CF$UID
108
NS.objects
CF$UID
2051
CF$UID
2053
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2052
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2054
533
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2056
$class
CF$UID
108
NS.objects
CF$UID
2057
CF$UID
2059
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2058
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2060
533
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2062
$class
CF$UID
108
NS.objects
CF$UID
2063
CF$UID
2065
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
2064
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
2066
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2069
$class
CF$UID
108
NS.objects
CF$UID
2070
CF$UID
2072
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2071
537
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2073
225
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
2075
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
2076
CF$UID
2078
$class
CF$UID
32
NS.objects
CF$UID
2077
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
211
$class
CF$UID
183
NS.objects
CF$UID
2079
CF$UID
2080
CF$UID
2081
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2083
$class
CF$UID
108
NS.objects
CF$UID
2084
CF$UID
2086
CF$UID
2088
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
2085
224
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
2087
916
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
2089
260
$class
CF$UID
32
NS.objects
CF$UID
2013
{{20, 92}, {832, 786}}
$class
CF$UID
105
NS.keys
CF$UID
2093
CF$UID
25
CF$UID
26
CF$UID
28
CF$UID
29
CF$UID
30
NS.objects
CF$UID
2094
CF$UID
2169
CF$UID
33
CF$UID
2093
CF$UID
2170
CF$UID
13
IDEWorkspaceTabController_5125517E-9AC8-4141-8CF8-1AAE0C39E0E8
$class
CF$UID
105
NS.keys
CF$UID
37
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
42
NS.objects
CF$UID
58
CF$UID
33
CF$UID
2095
CF$UID
2147
CF$UID
2153
CF$UID
2161
CF$UID
33
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
2096
CF$UID
2107
CF$UID
2125
CF$UID
153
CF$UID
64
CF$UID
2140
CF$UID
2146
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2097
rootLayoutTreeNode
CF$UID
2105
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2098
orientation
0
parent
CF$UID
2105
$class
CF$UID
69
DocumentLocation
CF$UID
2103
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2099
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2100
CF$UID
2101
CF$UID
2102
$class
CF$UID
59
Identifier
CF$UID
58
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
2104
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/ChapterListViewController.xib
$class
CF$UID
72
children
CF$UID
2106
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2097
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
2108
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
2109
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2110
CF$UID
64
CF$UID
2124
$class
CF$UID
32
NS.objects
CF$UID
2111
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
91
CF$UID
2112
CF$UID
2117
CF$UID
2043
CF$UID
58
CF$UID
118
CF$UID
2123
$class
CF$UID
69
DocumentLocation
CF$UID
2103
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2113
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2114
CF$UID
2115
CF$UID
2116
$class
CF$UID
59
Identifier
CF$UID
58
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
2118
CF$UID
2120
CF$UID
101
CF$UID
2121
$class
CF$UID
105
NS.keys
CF$UID
103
NS.objects
CF$UID
2119
270
$class
CF$UID
108
NS.objects
CF$UID
113
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
112
CF$UID
2122
$class
CF$UID
108
NS.objects
CF$UID
113
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
120
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
130
CF$UID
129
NS.objects
CF$UID
113
CF$UID
2126
CF$UID
2127
CF$UID
113
CF$UID
2128
CF$UID
2134
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2129
$class
CF$UID
108
NS.objects
CF$UID
2130
CF$UID
2132
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2131
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2133
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2135
$class
CF$UID
108
NS.objects
CF$UID
2136
CF$UID
2138
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2137
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2139
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2141
$class
CF$UID
108
NS.objects
CF$UID
2142
CF$UID
2144
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
2143
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
2145
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2148
$class
CF$UID
108
NS.objects
CF$UID
2149
CF$UID
2151
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2150
375
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2152
225
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
2154
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
2155
CF$UID
2157
$class
CF$UID
32
NS.objects
CF$UID
2156
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
58
$class
CF$UID
183
NS.objects
CF$UID
2158
CF$UID
2159
CF$UID
2160
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2162
$class
CF$UID
108
NS.objects
CF$UID
2163
CF$UID
2165
CF$UID
2167
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
2164
224
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
2166
916
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
2168
260
$class
CF$UID
32
NS.objects
CF$UID
2093
{{40, 254}, {600, 624}}
$class
CF$UID
105
NS.keys
CF$UID
30
CF$UID
25
CF$UID
26
CF$UID
29
CF$UID
2172
CF$UID
28
NS.objects
CF$UID
14
CF$UID
2173
CF$UID
33
CF$UID
200
CF$UID
2174
CF$UID
2172
IDEWorkspaceTabController_1B67AACB-6F28-4F95-B789-8AB8598E75C4
$class
CF$UID
32
NS.objects
CF$UID
2172
$class
CF$UID
105
NS.keys
CF$UID
37
CF$UID
36
CF$UID
42
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
35
NS.objects
CF$UID
1649
CF$UID
33
CF$UID
64
CF$UID
2175
CF$UID
2181
CF$UID
2200
CF$UID
33
CF$UID
2208
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2176
$class
CF$UID
108
NS.objects
CF$UID
2177
CF$UID
2179
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2178
376
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2180
224
$class
CF$UID
105
NS.keys
CF$UID
172
CF$UID
171
CF$UID
2182
NS.objects
CF$UID
2183
CF$UID
2182
CF$UID
2185
Xcode.IDEKit.Navigator.Issues
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
2184
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
730
CF$UID
182
{{0, 0}, {259, 688}}
$class
CF$UID
105
NS.keys
CF$UID
2186
CF$UID
174
CF$UID
2187
CF$UID
2188
CF$UID
2189
CF$UID
2190
CF$UID
2191
CF$UID
2192
CF$UID
2193
CF$UID
2194
NS.objects
CF$UID
33
CF$UID
181
CF$UID
2195
CF$UID
2196
CF$UID
2197
CF$UID
33
CF$UID
33
CF$UID
2198
CF$UID
33
CF$UID
2199
IDEErrorFilteringEnabled
IDECollapsedFiles
IDEExpandedIssues
IDESelectedNavigables
IDEShowsByType
IDESchemeFilteringEnabled
IDECollapsedTypes
IDERecentFilteringEnabled
IDECollapsedGroups
$class
CF$UID
733
NS.objects
$class
CF$UID
733
NS.objects
$class
CF$UID
108
NS.objects
$class
CF$UID
733
NS.objects
$class
CF$UID
733
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2201
$class
CF$UID
108
NS.objects
CF$UID
2202
CF$UID
2204
CF$UID
2206
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
2203
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
2205
880
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
2207
260
$class
CF$UID
105
NS.keys
CF$UID
51
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
44
NS.objects
CF$UID
33
CF$UID
2209
CF$UID
2228
CF$UID
153
CF$UID
64
CF$UID
2243
CF$UID
2249
CF$UID
2250
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
2210
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
2211
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2212
CF$UID
64
CF$UID
2227
$class
CF$UID
32
NS.objects
CF$UID
2213
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
1645
CF$UID
2214
CF$UID
2221
CF$UID
2225
CF$UID
1649
CF$UID
323
CF$UID
2226
$class
CF$UID
69
DocumentLocation
CF$UID
2219
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2215
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2216
CF$UID
2217
CF$UID
2218
$class
CF$UID
59
Identifier
CF$UID
1649
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
2220
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/Chapter.m
$class
CF$UID
116
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
2222
CF$UID
2223
CF$UID
33
CF$UID
2224
323961475.51630199
{0, 221}
{217, 0}
@implementation Chapter
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1488
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
129
CF$UID
128
CF$UID
130
CF$UID
127
NS.objects
CF$UID
113
CF$UID
2229
CF$UID
2230
CF$UID
113
CF$UID
2236
CF$UID
2242
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2231
$class
CF$UID
108
NS.objects
CF$UID
2232
CF$UID
2234
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2233
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2235
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2237
$class
CF$UID
108
NS.objects
CF$UID
2238
CF$UID
2240
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2239
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2241
301
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2244
$class
CF$UID
108
NS.objects
CF$UID
2245
CF$UID
2247
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
2246
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
2248
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2251
rootLayoutTreeNode
CF$UID
2257
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2252
orientation
0
parent
CF$UID
2257
$class
CF$UID
69
DocumentLocation
CF$UID
2219
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2253
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2254
CF$UID
2255
CF$UID
2256
$class
CF$UID
59
Identifier
CF$UID
1649
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
72
children
CF$UID
2258
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2251
$class
CF$UID
105
NS.keys
CF$UID
2260
CF$UID
2261
CF$UID
2262
CF$UID
30
CF$UID
2263
CF$UID
2264
CF$UID
2265
NS.objects
CF$UID
2266
CF$UID
2267
CF$UID
2539
CF$UID
15
CF$UID
2261
CF$UID
2540
CF$UID
153
IDEWindowFrame
IDEWorkspaceTabController_DE52840D-5D59-477E-838E-AA91ED2E3D9A
IDEOrderedWorkspaceTabControllers
IDEActiveWorkspaceTabController
IDEWorkspaceTabController_0AA7FC19-ACC5-4DC2-ACAC-688BB9B64ECE
IDEWindowToolbarIsVisible
{{1536, -19}, {1440, 808}}
$class
CF$UID
105
NS.keys
CF$UID
2268
CF$UID
2269
CF$UID
2270
CF$UID
2271
CF$UID
2272
CF$UID
2273
CF$UID
2274
CF$UID
2275
NS.objects
CF$UID
2276
CF$UID
153
CF$UID
64
CF$UID
2277
CF$UID
2283
CF$UID
2365
CF$UID
153
CF$UID
2374
IDETabLabel
IDEShowNavigator
AssistantEditorsLayout
IDEWorkspaceTabControllerUtilityAreaSplitView
IDENavigatorArea
IDEWorkspaceTabControllerDesignAreaSplitView
IDEShowUtilities
IDEEditorArea
MainWindow
$class
CF$UID
105
NS.keys
CF$UID
1307
NS.objects
CF$UID
2278
$class
CF$UID
108
NS.objects
CF$UID
2279
CF$UID
2281
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
1312
CF$UID
2280
508
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
1312
CF$UID
2282
224
$class
CF$UID
105
NS.keys
CF$UID
2284
CF$UID
2285
CF$UID
2286
CF$UID
2287
CF$UID
2288
CF$UID
2289
CF$UID
2290
CF$UID
2291
NS.objects
CF$UID
2292
CF$UID
2302
CF$UID
2306
CF$UID
2290
CF$UID
2319
CF$UID
2336
CF$UID
2340
CF$UID
2358
Xcode.IDEKit.Navigator.Symbol
Xcode.DebuggerKit.ThreadsStacksNavigator
Xcode.IDEKit.Navigator.BatchFind
SelectedNavigator
Xcode.IDEKit.Navigator.Issues
Xcode.IDEKit.Navigator.Breakpoints
Xcode.IDEKit.Navigator.Structure
Xcode.IDEKit.Navigator.Logs
$class
CF$UID
105
NS.keys
CF$UID
2293
CF$UID
2294
CF$UID
2295
CF$UID
2296
CF$UID
2297
CF$UID
2298
CF$UID
2299
NS.objects
CF$UID
2300
CF$UID
153
CF$UID
153
CF$UID
153
CF$UID
166
CF$UID
2301
CF$UID
33
IDEExpandedItems
IDESymbolNavigatorShowHierarchy
IDESymbolNavigatorShowWorkspaceOnly
IDESymbolNavigatorShowClassesOnly
IDESymbolNamePatternString
IDESymbolNavigatorSelectedSymbols
IDESymbolNavigatorShowContainersOnly
$class
CF$UID
108
NS.objects
$class
CF$UID
108
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
2303
CF$UID
2304
CF$UID
2305
NS.objects
CF$UID
135
CF$UID
64
CF$UID
33
IDEStackCompressionValue
IDEThreadsOrQueuesMode
IDEHideAncestorForNonInterestingFrames
$class
CF$UID
105
NS.keys
CF$UID
2307
CF$UID
2308
CF$UID
2309
CF$UID
2310
CF$UID
2311
CF$UID
2312
CF$UID
2313
NS.objects
CF$UID
64
CF$UID
33
CF$UID
166
CF$UID
2314
CF$UID
2315
CF$UID
64
CF$UID
2317
IDEBatchFindNavigatorScrollPosition
IDEBatchFindNavigatorShowsOptions
IDEBatchFindNavigatorReplaceString
IDEBatchFindNavigatorFindString
IDEBatchFindNavigatorSelectedRowIndexes
IDEBatchFindNavigatorFindMode
IDEBatchFindNavigatorCollapsedGroups
index epub
$class
CF$UID
2316
NSRangeCount
0
$classes
NSIndexSet
NSObject
$classname
NSIndexSet
$class
CF$UID
2318
NSRangeCount
0
$classes
NSMutableIndexSet
NSIndexSet
NSObject
$classname
NSMutableIndexSet
$class
CF$UID
105
NS.keys
CF$UID
2320
CF$UID
2321
CF$UID
2322
CF$UID
2323
CF$UID
2324
CF$UID
2325
CF$UID
2326
CF$UID
2327
CF$UID
2328
CF$UID
2329
NS.objects
CF$UID
33
CF$UID
2330
CF$UID
2331
CF$UID
2332
CF$UID
2333
CF$UID
33
CF$UID
33
CF$UID
2334
CF$UID
33
CF$UID
2335
IDEErrorFilteringEnabled
IDEVisibleRect
IDECollapsedFiles
IDEExpandedIssues
IDESelectedNavigables
IDEShowsByType
IDESchemeFilteringEnabled
IDECollapsedTypes
IDERecentFilteringEnabled
IDECollapsedGroups
{{0, 0}, {259, 666}}
$class
CF$UID
733
NS.objects
$class
CF$UID
733
NS.objects
$class
CF$UID
108
NS.objects
$class
CF$UID
733
NS.objects
$class
CF$UID
733
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
2337
CF$UID
2338
CF$UID
179
CF$UID
174
NS.objects
CF$UID
182
CF$UID
33
CF$UID
730
CF$UID
2339
IDECollapsedtemsSet
IDEBreakpointNavigatorFilterOnEnabled
{{0, 0}, {223, 688}}
$class
CF$UID
105
NS.keys
CF$UID
2341
CF$UID
2342
CF$UID
2343
CF$UID
2344
CF$UID
2345
CF$UID
2346
CF$UID
2347
NS.objects
CF$UID
2348
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
2349
CF$UID
2353
IDEVisibleRect
IDEUnsavedDocumentFilteringEnabled
IDENavigatorExpandedItemsBeforeFilteringSet
IDERecentDocumentFilteringEnabled
IDESCMStatusFilteringEnabled
IDESelectedObjects
IDEExpandedItemsSet
{{0, 0}, {259, 688}}
$class
CF$UID
32
NS.objects
CF$UID
2350
$class
CF$UID
108
NS.objects
CF$UID
2351
CF$UID
61
CF$UID
2352
AePubReader
MainWindow.xib
$class
CF$UID
183
NS.objects
CF$UID
2354
CF$UID
2356
CF$UID
2357
$class
CF$UID
108
NS.objects
CF$UID
2351
CF$UID
2355
Classes
$class
CF$UID
108
NS.objects
CF$UID
2351
$class
CF$UID
108
NS.objects
CF$UID
2351
CF$UID
61
$class
CF$UID
105
NS.keys
CF$UID
2359
CF$UID
2360
CF$UID
2361
CF$UID
2362
NS.objects
CF$UID
2363
CF$UID
2364
CF$UID
33
CF$UID
2184
IDELogNavigatorExpandedItemsStateKey
IDELogNavigatorSelectedObjectsStateKey
IDELogNavigatorRecentFilterStateKey
IDELogNavigatorVisibleRectStateKey
$class
CF$UID
108
NS.objects
$class
CF$UID
108
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
1307
NS.objects
CF$UID
2366
$class
CF$UID
108
NS.objects
CF$UID
2367
CF$UID
2369
CF$UID
2371
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
2272
CF$UID
2368
260
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
2275
CF$UID
2370
920
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
2372
CF$UID
2373
IDEUtilitiesArea
260
$class
CF$UID
105
NS.keys
CF$UID
2375
CF$UID
2376
CF$UID
2377
CF$UID
2378
CF$UID
2379
CF$UID
2380
CF$UID
2381
CF$UID
2382
CF$UID
2383
CF$UID
2384
NS.objects
CF$UID
2385
CF$UID
2396
CF$UID
2433
CF$UID
153
CF$UID
64
CF$UID
2458
CF$UID
2475
CF$UID
2483
CF$UID
2484
CF$UID
153
layoutTree
IDEEditorMode_Standard
IDEEDitorArea_DebugArea
IDEShowEditor
EditorMode
IDEEditorMode_Version
DebuggerSplitView
DefaultPersistentRepresentations
IDEEditorMode_Genius
ShowDebuggerArea
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2386
rootLayoutTreeNode
CF$UID
2394
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2387
orientation
0
parent
CF$UID
2394
$class
CF$UID
69
DocumentLocation
CF$UID
2393
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2388
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2389
CF$UID
2390
CF$UID
2391
$class
CF$UID
59
Identifier
CF$UID
2352
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
2392
AePubReader
$class
CF$UID
68
documentURL
CF$UID
749
timestamp
CF$UID
0
$class
CF$UID
72
children
CF$UID
2395
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2386
$class
CF$UID
105
NS.keys
CF$UID
2397
NS.objects
CF$UID
2398
EditorLayout_PersistentRepresentation
$class
CF$UID
105
NS.keys
CF$UID
2399
NS.objects
CF$UID
2400
Main
$class
CF$UID
116
NS.keys
CF$UID
2401
CF$UID
2402
CF$UID
2403
NS.objects
CF$UID
2404
CF$UID
64
CF$UID
2431
EditorLayout_StateSavingStateDictionaries
EditorLayout_Selected
EditorLayout_Geometry
$class
CF$UID
32
NS.objects
CF$UID
2405
$class
CF$UID
105
NS.keys
CF$UID
2406
CF$UID
2407
CF$UID
2408
CF$UID
2409
CF$UID
2410
CF$UID
2411
CF$UID
2412
NS.objects
CF$UID
2413
CF$UID
2414
CF$UID
2420
CF$UID
2427
CF$UID
2352
CF$UID
2428
CF$UID
2429
FileDataType
ArchivableRepresentation
EditorState
NavigableItemName
DocumentNavigableItemName
DocumentExtensionIdentifier
DocumentURL
com.apple.InterfaceBuilder3.CocoaTouch.XIB
$class
CF$UID
69
DocumentLocation
CF$UID
2393
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2415
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2416
CF$UID
2417
CF$UID
2418
$class
CF$UID
59
Identifier
CF$UID
2352
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
2419
AePubReader
$class
CF$UID
116
NS.keys
CF$UID
764
CF$UID
765
CF$UID
766
CF$UID
767
NS.objects
CF$UID
2421
CF$UID
2422
CF$UID
773
CF$UID
2424
$class
CF$UID
105
NS.keys
CF$UID
769
NS.objects
CF$UID
793
$class
CF$UID
108
NS.objects
CF$UID
2423
50
$class
CF$UID
105
NS.keys
CF$UID
775
CF$UID
776
NS.objects
CF$UID
797
CF$UID
2425
$class
CF$UID
108
NS.objects
CF$UID
2426
CF$UID
135
50
Pub View Controller
Xcode.IDEKit.CocoaTouchIntegration.EditorDocument.CocoaTouch
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
2430
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/MainWindow.xib
$class
CF$UID
32
NS.objects
CF$UID
2432
{{0, 0}, {920, 458}}
$class
CF$UID
105
NS.keys
CF$UID
2434
CF$UID
2435
CF$UID
2436
CF$UID
2437
CF$UID
2438
CF$UID
2439
NS.objects
CF$UID
113
CF$UID
2440
CF$UID
2442
CF$UID
113
CF$UID
2444
CF$UID
2452
LayoutFocusMode
console
variables
LayoutMode
IDEDebuggerAreaSplitView
IDEDebugArea_SplitView
$class
CF$UID
105
NS.keys
CF$UID
2441
NS.objects
CF$UID
64
ConsoleFilterMode
$class
CF$UID
105
NS.keys
CF$UID
2443
NS.objects
CF$UID
135
DBGVariablesViewFilterMode
$class
CF$UID
105
NS.keys
CF$UID
1307
NS.objects
CF$UID
2445
$class
CF$UID
108
NS.objects
CF$UID
2446
CF$UID
2449
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
2447
CF$UID
2448
VariablesView
330
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
2450
CF$UID
2451
ConsoleArea
589
$class
CF$UID
105
NS.keys
CF$UID
1307
NS.objects
CF$UID
2453
$class
CF$UID
108
NS.objects
CF$UID
2454
CF$UID
2456
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
2447
CF$UID
2455
330
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
2450
CF$UID
2457
589
$class
CF$UID
105
NS.keys
CF$UID
2459
CF$UID
75
NS.objects
CF$UID
64
CF$UID
2460
VersionsEditorSubmode
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
2461
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2462
CF$UID
64
CF$UID
2473
$class
CF$UID
32
NS.objects
CF$UID
2463
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
541
CF$UID
2464
CF$UID
2469
CF$UID
63
CF$UID
63
CF$UID
643
CF$UID
2472
$class
CF$UID
69
DocumentLocation
CF$UID
2468
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2465
IndexOfDocumentIdentifier
CF$UID
2467
$class
CF$UID
32
NS.objects
CF$UID
2466
$class
CF$UID
59
Identifier
CF$UID
63
9223372036854775807
$class
CF$UID
68
documentURL
CF$UID
547
timestamp
CF$UID
0
$class
CF$UID
116
NS.keys
CF$UID
319
CF$UID
317
CF$UID
316
NS.objects
CF$UID
473
CF$UID
2470
CF$UID
2471
{0, 1613}
323910136.03779298
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
563
$class
CF$UID
32
NS.objects
CF$UID
2474
{{0, 0}, {1140, 595}}
$class
CF$UID
105
NS.keys
CF$UID
1307
NS.objects
CF$UID
2476
$class
CF$UID
108
NS.objects
CF$UID
2477
CF$UID
2480
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
2478
CF$UID
2479
IDEEditor
480
$class
CF$UID
116
NS.keys
CF$UID
1310
CF$UID
1311
NS.objects
CF$UID
2481
CF$UID
2482
IDEDebuggerArea
252
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
2485
CF$UID
75
NS.objects
CF$UID
2486
CF$UID
2487
SplitPosition
0.5
$class
CF$UID
105
NS.keys
CF$UID
2488
CF$UID
77
NS.objects
CF$UID
2489
CF$UID
2516
Alternate
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2490
CF$UID
64
CF$UID
2514
$class
CF$UID
108
NS.objects
CF$UID
2491
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
541
CF$UID
2492
CF$UID
2502
CF$UID
63
CF$UID
63
CF$UID
569
CF$UID
2513
$class
CF$UID
69
DocumentLocation
CF$UID
2501
DomainIdentifier
CF$UID
0
IdentifierPath
CF$UID
2493
IndexOfDocumentIdentifier
CF$UID
2500
$class
CF$UID
32
NS.objects
CF$UID
2494
CF$UID
2497
$class
CF$UID
105
NS.keys
CF$UID
2495
CF$UID
2496
NS.objects
CF$UID
55
CF$UID
63
manualDomainIdentifier
navigableItem_name
$class
CF$UID
105
NS.keys
CF$UID
2498
NS.objects
CF$UID
2499
identifier
Xcode.IDEKit.GeniusCategory.Manual
9223372036854775807
$class
CF$UID
68
documentURL
CF$UID
547
timestamp
CF$UID
0
$class
CF$UID
116
NS.keys
CF$UID
549
CF$UID
550
CF$UID
551
CF$UID
552
NS.objects
CF$UID
553
CF$UID
2503
CF$UID
560
CF$UID
2509
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2504
$class
CF$UID
108
NS.objects
CF$UID
2505
CF$UID
2507
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2506
170
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2508
450
$class
CF$UID
32
NS.objects
CF$UID
2510
$class
CF$UID
568
documentURL
CF$UID
563
selection
CF$UID
2512
timestamp
CF$UID
2511
323910138.13453901
$class
CF$UID
105
NS.keys
CF$UID
566
CF$UID
567
NS.objects
CF$UID
63
CF$UID
553
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
563
$class
CF$UID
108
NS.objects
CF$UID
2515
{{0, 0}, {569, 595}}
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2517
CF$UID
64
CF$UID
2538
$class
CF$UID
32
NS.objects
CF$UID
2518
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
541
CF$UID
2519
CF$UID
2524
CF$UID
63
CF$UID
63
CF$UID
569
CF$UID
2537
$class
CF$UID
69
DocumentLocation
CF$UID
2523
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2520
IndexOfDocumentIdentifier
CF$UID
2522
$class
CF$UID
32
NS.objects
CF$UID
2521
$class
CF$UID
59
Identifier
CF$UID
63
9223372036854775807
$class
CF$UID
68
documentURL
CF$UID
547
timestamp
CF$UID
0
$class
CF$UID
116
NS.keys
CF$UID
549
CF$UID
550
CF$UID
551
CF$UID
552
CF$UID
2525
NS.objects
CF$UID
553
CF$UID
2526
CF$UID
560
CF$UID
2532
CF$UID
2536
Xcode3ProjectEditor_Xcode3TargetEditor
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2527
$class
CF$UID
108
NS.objects
CF$UID
2528
CF$UID
2530
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2529
112
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2531
508
$class
CF$UID
32
NS.objects
CF$UID
2533
$class
CF$UID
568
documentURL
CF$UID
563
selection
CF$UID
2535
timestamp
CF$UID
2534
323910138.13428801
$class
CF$UID
105
NS.keys
CF$UID
567
CF$UID
1355
NS.objects
CF$UID
560
CF$UID
63
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
563
$class
CF$UID
32
NS.objects
CF$UID
2474
$class
CF$UID
32
NS.objects
CF$UID
2261
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
37
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
35
NS.objects
CF$UID
64
CF$UID
153
CF$UID
2541
CF$UID
2542
CF$UID
2548
CF$UID
2582
CF$UID
153
CF$UID
2590
DetailViewController.m
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2543
$class
CF$UID
108
NS.objects
CF$UID
2544
CF$UID
2546
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2545
486
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2547
224
$class
CF$UID
105
NS.keys
CF$UID
2284
CF$UID
2549
CF$UID
2286
CF$UID
171
CF$UID
2182
CF$UID
2289
CF$UID
172
CF$UID
2291
NS.objects
CF$UID
2550
CF$UID
2553
CF$UID
2557
CF$UID
2549
CF$UID
2561
CF$UID
2568
CF$UID
2570
CF$UID
2577
Xcode.DebuggerKit.ThreadsStacksNavigator
$class
CF$UID
105
NS.keys
CF$UID
2293
CF$UID
2294
CF$UID
2295
CF$UID
2296
CF$UID
2297
CF$UID
2298
CF$UID
2299
NS.objects
CF$UID
2551
CF$UID
153
CF$UID
153
CF$UID
153
CF$UID
166
CF$UID
2552
CF$UID
33
$class
CF$UID
108
NS.objects
$class
CF$UID
108
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
2554
CF$UID
2555
CF$UID
2556
NS.objects
CF$UID
135
CF$UID
64
CF$UID
33
IDEStackCompressionValue
IDEThreadsOrQueuesMode
IDEHideAncestorForNonInterestingFrames
$class
CF$UID
105
NS.keys
CF$UID
2307
CF$UID
2308
CF$UID
2309
CF$UID
2310
CF$UID
2311
CF$UID
2312
CF$UID
2313
NS.objects
CF$UID
64
CF$UID
33
CF$UID
166
CF$UID
2558
CF$UID
2559
CF$UID
64
CF$UID
2560
updatePagination
$class
CF$UID
2316
NSRangeCount
0
$class
CF$UID
2318
NSRangeCount
0
$class
CF$UID
105
NS.keys
CF$UID
2186
CF$UID
174
CF$UID
2187
CF$UID
2188
CF$UID
2189
CF$UID
2190
CF$UID
2191
CF$UID
2192
CF$UID
2193
CF$UID
2194
NS.objects
CF$UID
33
CF$UID
2562
CF$UID
2563
CF$UID
2564
CF$UID
2565
CF$UID
33
CF$UID
33
CF$UID
2566
CF$UID
33
CF$UID
2567
{{0, 0}, {223, 644}}
$class
CF$UID
733
NS.objects
$class
CF$UID
733
NS.objects
$class
CF$UID
108
NS.objects
$class
CF$UID
733
NS.objects
$class
CF$UID
733
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
2337
CF$UID
2338
CF$UID
179
CF$UID
174
NS.objects
CF$UID
182
CF$UID
33
CF$UID
730
CF$UID
2569
{{0, 0}, {223, 666}}
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
2569
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
2571
CF$UID
2573
$class
CF$UID
32
NS.objects
CF$UID
2572
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
CF$UID
465
$class
CF$UID
183
NS.objects
CF$UID
2574
CF$UID
2575
CF$UID
2576
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
105
NS.keys
CF$UID
2359
CF$UID
2360
CF$UID
2361
CF$UID
2362
NS.objects
CF$UID
2578
CF$UID
2579
CF$UID
33
CF$UID
2184
$class
CF$UID
108
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
2580
$class
CF$UID
108
NS.objects
CF$UID
2581
Debug AePubReader : 18.43.13
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2583
$class
CF$UID
108
NS.objects
CF$UID
2584
CF$UID
2586
CF$UID
2588
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
2585
224
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
2587
916
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
2589
260
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
2380
CF$UID
49
CF$UID
50
CF$UID
2383
CF$UID
51
NS.objects
CF$UID
2591
CF$UID
2602
CF$UID
2619
CF$UID
153
CF$UID
64
CF$UID
2458
CF$UID
2634
CF$UID
2640
CF$UID
2484
CF$UID
153
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2592
rootLayoutTreeNode
CF$UID
2600
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2593
orientation
0
parent
CF$UID
2600
$class
CF$UID
69
DocumentLocation
CF$UID
2598
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2594
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2595
CF$UID
2596
CF$UID
2597
$class
CF$UID
59
Identifier
CF$UID
2541
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
2599
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.m
$class
CF$UID
72
children
CF$UID
2601
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2592
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
2603
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
2604
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2605
CF$UID
64
CF$UID
2617
$class
CF$UID
32
NS.objects
CF$UID
2606
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
1645
CF$UID
2607
CF$UID
2612
CF$UID
2541
CF$UID
2541
CF$UID
323
CF$UID
2615
$class
CF$UID
69
DocumentLocation
CF$UID
2598
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2608
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2609
CF$UID
2610
CF$UID
2611
$class
CF$UID
59
Identifier
CF$UID
2541
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
2613
CF$UID
2614
CF$UID
33
CF$UID
473
326220505.31120998
{0, 1224}
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
2616
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.m
$class
CF$UID
32
NS.objects
CF$UID
2618
{{0, 0}, {916, 481}}
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
130
CF$UID
129
NS.objects
CF$UID
113
CF$UID
2620
CF$UID
2621
CF$UID
113
CF$UID
2622
CF$UID
2628
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2623
$class
CF$UID
108
NS.objects
CF$UID
2624
CF$UID
2626
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2625
386
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2627
529
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2629
$class
CF$UID
108
NS.objects
CF$UID
2630
CF$UID
2632
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2631
386
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2633
529
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2635
$class
CF$UID
108
NS.objects
CF$UID
2636
CF$UID
2638
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
2637
503
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
2639
207
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
28
CF$UID
25
CF$UID
26
CF$UID
29
CF$UID
30
CF$UID
2642
NS.objects
CF$UID
2642
CF$UID
2643
CF$UID
33
CF$UID
2644
CF$UID
16
CF$UID
2645
IDEWorkspaceTabController_CCAE46AC-647E-49F6-861B-2F57EA304532
$class
CF$UID
32
NS.objects
CF$UID
2642
{{10, 232}, {600, 646}}
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
2646
CF$UID
2696
CF$UID
2702
CF$UID
2710
CF$UID
33
CF$UID
297
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
2647
CF$UID
2658
CF$UID
2674
CF$UID
153
CF$UID
64
CF$UID
2689
CF$UID
2695
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2648
rootLayoutTreeNode
CF$UID
2656
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2649
orientation
0
parent
CF$UID
2656
$class
CF$UID
69
DocumentLocation
CF$UID
2654
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2650
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2651
CF$UID
2652
CF$UID
2653
$class
CF$UID
59
Identifier
CF$UID
297
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
2655
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js
$class
CF$UID
72
children
CF$UID
2657
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2648
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
2659
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
2660
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2661
CF$UID
64
CF$UID
2673
$class
CF$UID
32
NS.objects
CF$UID
2662
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
309
CF$UID
2663
CF$UID
2668
CF$UID
297
CF$UID
297
CF$UID
323
CF$UID
2672
$class
CF$UID
69
DocumentLocation
CF$UID
2654
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2664
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2665
CF$UID
2666
CF$UID
2667
$class
CF$UID
59
Identifier
CF$UID
297
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
2669
CF$UID
2670
CF$UID
33
CF$UID
2671
326386185.61865801
{0, 1757}
{351, 0}
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
325
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
129
CF$UID
130
NS.objects
CF$UID
113
CF$UID
2675
CF$UID
2676
CF$UID
113
CF$UID
2677
CF$UID
2683
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2678
$class
CF$UID
108
NS.objects
CF$UID
2679
CF$UID
2681
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2680
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2682
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2684
$class
CF$UID
108
NS.objects
CF$UID
2685
CF$UID
2687
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2686
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2688
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2690
$class
CF$UID
108
NS.objects
CF$UID
2691
CF$UID
2693
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
2692
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
2694
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2697
$class
CF$UID
108
NS.objects
CF$UID
2698
CF$UID
2700
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2699
397
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2701
225
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
2703
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
2704
CF$UID
2706
$class
CF$UID
32
NS.objects
CF$UID
2705
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
297
$class
CF$UID
183
NS.objects
CF$UID
2707
CF$UID
2708
CF$UID
2709
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2711
$class
CF$UID
108
NS.objects
CF$UID
2712
CF$UID
2714
CF$UID
2716
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
2713
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
2715
920
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
2717
260
$class
CF$UID
105
NS.keys
CF$UID
26
CF$UID
2719
CF$UID
25
CF$UID
28
CF$UID
30
CF$UID
29
NS.objects
CF$UID
33
CF$UID
2720
CF$UID
2793
CF$UID
2719
CF$UID
17
CF$UID
2794
IDEWorkspaceTabController_36035F7F-D36B-4BCA-AADE-9D9F10D56B67
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
2721
CF$UID
2771
CF$UID
2777
CF$UID
2785
CF$UID
33
CF$UID
297
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
2722
CF$UID
2733
CF$UID
2749
CF$UID
153
CF$UID
64
CF$UID
2764
CF$UID
2770
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2723
rootLayoutTreeNode
CF$UID
2731
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2724
orientation
0
parent
CF$UID
2731
$class
CF$UID
69
DocumentLocation
CF$UID
2729
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2725
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2726
CF$UID
2727
CF$UID
2728
$class
CF$UID
59
Identifier
CF$UID
297
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
2730
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js
$class
CF$UID
72
children
CF$UID
2732
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2723
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
2734
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
2735
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2736
CF$UID
64
CF$UID
2748
$class
CF$UID
32
NS.objects
CF$UID
2737
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
309
CF$UID
2738
CF$UID
2743
CF$UID
297
CF$UID
297
CF$UID
323
CF$UID
2747
$class
CF$UID
69
DocumentLocation
CF$UID
2729
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2739
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2740
CF$UID
2741
CF$UID
2742
$class
CF$UID
59
Identifier
CF$UID
297
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
2744
CF$UID
2745
CF$UID
33
CF$UID
2746
326388529.15704799
{0, 1763}
{543, 0}
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
325
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
129
CF$UID
130
NS.objects
CF$UID
113
CF$UID
2750
CF$UID
2751
CF$UID
113
CF$UID
2752
CF$UID
2758
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2753
$class
CF$UID
108
NS.objects
CF$UID
2754
CF$UID
2756
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2755
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2757
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2759
$class
CF$UID
108
NS.objects
CF$UID
2760
CF$UID
2762
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2761
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2763
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2765
$class
CF$UID
108
NS.objects
CF$UID
2766
CF$UID
2768
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
2767
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
2769
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2772
$class
CF$UID
108
NS.objects
CF$UID
2773
CF$UID
2775
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2774
397
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2776
225
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
2778
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
2779
CF$UID
2781
$class
CF$UID
32
NS.objects
CF$UID
2780
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
297
$class
CF$UID
183
NS.objects
CF$UID
2782
CF$UID
2783
CF$UID
2784
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2786
$class
CF$UID
108
NS.objects
CF$UID
2787
CF$UID
2789
CF$UID
2791
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
2788
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
2790
920
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
2792
260
$class
CF$UID
32
NS.objects
CF$UID
2719
{{31, 232}, {600, 646}}
$class
CF$UID
105
NS.keys
CF$UID
29
CF$UID
26
CF$UID
2796
CF$UID
25
CF$UID
30
CF$UID
28
NS.objects
CF$UID
2794
CF$UID
33
CF$UID
2797
CF$UID
2873
CF$UID
18
CF$UID
2796
IDEWorkspaceTabController_2EF224D6-301A-4FD0-8EBA-372293A8DCAD
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
2798
CF$UID
2851
CF$UID
2857
CF$UID
2865
CF$UID
33
CF$UID
2804
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
2799
CF$UID
2811
CF$UID
2829
CF$UID
153
CF$UID
64
CF$UID
2844
CF$UID
2850
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2800
rootLayoutTreeNode
CF$UID
2809
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2801
orientation
0
parent
CF$UID
2809
$class
CF$UID
69
DocumentLocation
CF$UID
2807
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2802
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2803
CF$UID
2805
CF$UID
2806
$class
CF$UID
59
Identifier
CF$UID
2804
MainWindow.xib
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
2808
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/MainWindow.xib
$class
CF$UID
72
children
CF$UID
2810
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2800
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
2812
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
2813
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2814
CF$UID
64
CF$UID
2828
$class
CF$UID
32
NS.objects
CF$UID
2815
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
91
CF$UID
2816
CF$UID
2821
CF$UID
2826
CF$UID
2804
CF$UID
118
CF$UID
2827
$class
CF$UID
69
DocumentLocation
CF$UID
2807
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2817
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2818
CF$UID
2819
CF$UID
2820
$class
CF$UID
59
Identifier
CF$UID
2804
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
2822
CF$UID
2823
CF$UID
101
CF$UID
2824
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
797
CF$UID
2825
$class
CF$UID
108
NS.objects
CF$UID
135
Window
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1496
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
130
CF$UID
129
NS.objects
CF$UID
113
CF$UID
2830
CF$UID
2831
CF$UID
113
CF$UID
2832
CF$UID
2838
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2833
$class
CF$UID
108
NS.objects
CF$UID
2834
CF$UID
2836
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2835
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2837
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2839
$class
CF$UID
108
NS.objects
CF$UID
2840
CF$UID
2842
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2841
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2843
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2845
$class
CF$UID
108
NS.objects
CF$UID
2846
CF$UID
2848
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
2847
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
2849
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2852
$class
CF$UID
108
NS.objects
CF$UID
2853
CF$UID
2855
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2854
398
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2856
224
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
2858
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
2859
CF$UID
2861
$class
CF$UID
32
NS.objects
CF$UID
2860
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
2804
$class
CF$UID
183
NS.objects
CF$UID
2862
CF$UID
2863
CF$UID
2864
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2866
$class
CF$UID
108
NS.objects
CF$UID
2867
CF$UID
2869
CF$UID
2871
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
2868
224
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
2870
916
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
2872
260
$class
CF$UID
32
NS.objects
CF$UID
2796
$class
CF$UID
105
NS.keys
CF$UID
29
CF$UID
25
CF$UID
26
CF$UID
2875
CF$UID
30
CF$UID
28
NS.objects
CF$UID
2876
CF$UID
2877
CF$UID
33
CF$UID
2878
CF$UID
19
CF$UID
2875
IDEWorkspaceTabController_F55A91BD-2D2D-41F5-A225-35FAE4B82027
{{30, 254}, {600, 624}}
$class
CF$UID
32
NS.objects
CF$UID
2875
$class
CF$UID
105
NS.keys
CF$UID
37
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
42
NS.objects
CF$UID
58
CF$UID
33
CF$UID
2879
CF$UID
2930
CF$UID
2936
CF$UID
2944
CF$UID
33
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
2880
CF$UID
2890
CF$UID
2908
CF$UID
153
CF$UID
64
CF$UID
2923
CF$UID
2929
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2881
rootLayoutTreeNode
CF$UID
2888
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2882
orientation
0
parent
CF$UID
2888
$class
CF$UID
69
DocumentLocation
CF$UID
2887
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2883
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2884
CF$UID
2885
CF$UID
2886
$class
CF$UID
59
Identifier
CF$UID
58
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
2104
timestamp
CF$UID
0
$class
CF$UID
72
children
CF$UID
2889
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2881
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
2891
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
2892
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2893
CF$UID
64
CF$UID
2907
$class
CF$UID
32
NS.objects
CF$UID
2894
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
91
CF$UID
2895
CF$UID
2900
CF$UID
2043
CF$UID
58
CF$UID
118
CF$UID
2906
$class
CF$UID
69
DocumentLocation
CF$UID
2887
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2896
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2897
CF$UID
2898
CF$UID
2899
$class
CF$UID
59
Identifier
CF$UID
58
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
2901
CF$UID
2903
CF$UID
101
CF$UID
2904
$class
CF$UID
105
NS.keys
CF$UID
103
NS.objects
CF$UID
2902
270
$class
CF$UID
108
NS.objects
CF$UID
113
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
112
CF$UID
2905
$class
CF$UID
108
NS.objects
CF$UID
113
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
120
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
130
CF$UID
129
NS.objects
CF$UID
113
CF$UID
2909
CF$UID
2910
CF$UID
113
CF$UID
2911
CF$UID
2917
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2912
$class
CF$UID
108
NS.objects
CF$UID
2913
CF$UID
2915
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2914
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2916
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2918
$class
CF$UID
108
NS.objects
CF$UID
2919
CF$UID
2921
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2920
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2922
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2924
$class
CF$UID
108
NS.objects
CF$UID
2925
CF$UID
2927
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
2926
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
2928
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2931
$class
CF$UID
108
NS.objects
CF$UID
2932
CF$UID
2934
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2933
375
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
2935
225
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
2937
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
2938
CF$UID
2940
$class
CF$UID
32
NS.objects
CF$UID
2939
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
58
$class
CF$UID
183
NS.objects
CF$UID
2941
CF$UID
2942
CF$UID
2943
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2945
$class
CF$UID
108
NS.objects
CF$UID
2946
CF$UID
2948
CF$UID
2950
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
2947
224
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
2949
916
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
2951
260
$class
CF$UID
105
NS.keys
CF$UID
2953
CF$UID
25
CF$UID
26
CF$UID
28
CF$UID
29
CF$UID
30
NS.objects
CF$UID
2954
CF$UID
3027
CF$UID
33
CF$UID
2953
CF$UID
371
CF$UID
20
IDEWorkspaceTabController_F1F630EF-7B76-43F6-85AE-5E66A23AA831
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
2955
CF$UID
3005
CF$UID
3011
CF$UID
3019
CF$UID
33
CF$UID
2804
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
2956
CF$UID
2966
CF$UID
2983
CF$UID
153
CF$UID
64
CF$UID
2998
CF$UID
3004
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
2957
rootLayoutTreeNode
CF$UID
2964
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
2958
orientation
0
parent
CF$UID
2964
$class
CF$UID
69
DocumentLocation
CF$UID
2963
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2959
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2960
CF$UID
2961
CF$UID
2962
$class
CF$UID
59
Identifier
CF$UID
2804
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
2808
timestamp
CF$UID
0
$class
CF$UID
72
children
CF$UID
2965
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
2957
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
2967
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
2968
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
2969
CF$UID
64
CF$UID
2982
$class
CF$UID
32
NS.objects
CF$UID
2970
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
91
CF$UID
2971
CF$UID
2976
CF$UID
2826
CF$UID
2804
CF$UID
118
CF$UID
2981
$class
CF$UID
69
DocumentLocation
CF$UID
2963
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
2972
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
2973
CF$UID
2974
CF$UID
2975
$class
CF$UID
59
Identifier
CF$UID
2804
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
2977
CF$UID
2978
CF$UID
101
CF$UID
2979
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
797
CF$UID
2980
$class
CF$UID
108
NS.objects
CF$UID
135
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1496
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
130
CF$UID
129
NS.objects
CF$UID
113
CF$UID
2984
CF$UID
2985
CF$UID
113
CF$UID
2986
CF$UID
2992
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2987
$class
CF$UID
108
NS.objects
CF$UID
2988
CF$UID
2990
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2989
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2991
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2993
$class
CF$UID
108
NS.objects
CF$UID
2994
CF$UID
2996
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
2995
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
2997
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
2999
$class
CF$UID
108
NS.objects
CF$UID
3000
CF$UID
3002
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
3001
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
3003
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3006
$class
CF$UID
108
NS.objects
CF$UID
3007
CF$UID
3009
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
3008
398
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
3010
224
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
3012
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
3013
CF$UID
3015
$class
CF$UID
32
NS.objects
CF$UID
3014
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
2804
$class
CF$UID
183
NS.objects
CF$UID
3016
CF$UID
3017
CF$UID
3018
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3020
$class
CF$UID
108
NS.objects
CF$UID
3021
CF$UID
3023
CF$UID
3025
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
3022
225
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
3024
915
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
3026
260
$class
CF$UID
32
NS.objects
CF$UID
2953
$class
CF$UID
105
NS.keys
CF$UID
3029
CF$UID
25
CF$UID
26
CF$UID
28
CF$UID
29
CF$UID
30
NS.objects
CF$UID
3030
CF$UID
3107
CF$UID
33
CF$UID
3029
CF$UID
3108
CF$UID
21
IDEWorkspaceTabController_F6C7896F-541B-4A6F-841A-6B61449611E5
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
3031
CF$UID
3085
CF$UID
3091
CF$UID
3099
CF$UID
33
CF$UID
285
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
3032
CF$UID
3043
CF$UID
3063
CF$UID
153
CF$UID
64
CF$UID
3078
CF$UID
3084
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
3033
rootLayoutTreeNode
CF$UID
3041
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
3034
orientation
0
parent
CF$UID
3041
$class
CF$UID
69
DocumentLocation
CF$UID
3039
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
3035
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
3036
CF$UID
3037
CF$UID
3038
$class
CF$UID
59
Identifier
CF$UID
211
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
3040
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/DetailView.xib
$class
CF$UID
72
children
CF$UID
3042
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
3033
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
3044
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
3045
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
3046
CF$UID
64
CF$UID
3061
$class
CF$UID
32
NS.objects
CF$UID
3047
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
91
CF$UID
3048
CF$UID
3053
CF$UID
3059
CF$UID
211
CF$UID
118
CF$UID
3060
$class
CF$UID
69
DocumentLocation
CF$UID
3039
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
3049
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
3050
CF$UID
3051
CF$UID
3052
$class
CF$UID
59
Identifier
CF$UID
211
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
98
CF$UID
99
CF$UID
100
CF$UID
101
NS.objects
CF$UID
3054
CF$UID
3055
CF$UID
101
CF$UID
3057
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
108
NS.objects
CF$UID
3056
69
$class
CF$UID
105
NS.keys
CF$UID
110
CF$UID
111
NS.objects
CF$UID
233
CF$UID
3058
$class
CF$UID
108
NS.objects
CF$UID
235
Web View
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
238
$class
CF$UID
32
NS.objects
CF$UID
3062
{{0, 0}, {832, 768}}
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
129
CF$UID
130
NS.objects
CF$UID
113
CF$UID
3064
CF$UID
3065
CF$UID
113
CF$UID
3066
CF$UID
3072
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3067
$class
CF$UID
108
NS.objects
CF$UID
3068
CF$UID
3070
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
3069
413
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
3071
418
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3073
$class
CF$UID
108
NS.objects
CF$UID
3074
CF$UID
3076
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
3075
413
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
3077
418
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3079
$class
CF$UID
108
NS.objects
CF$UID
3080
CF$UID
3082
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
3081
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
3083
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3086
$class
CF$UID
108
NS.objects
CF$UID
3087
CF$UID
3089
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
3088
544
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
3090
224
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
3092
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
3093
CF$UID
3095
$class
CF$UID
32
NS.objects
CF$UID
3094
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
211
$class
CF$UID
183
NS.objects
CF$UID
3096
CF$UID
3097
CF$UID
3098
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3100
$class
CF$UID
108
NS.objects
CF$UID
3101
CF$UID
3103
CF$UID
3105
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
3102
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
3104
880
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
3106
260
$class
CF$UID
32
NS.objects
CF$UID
3029
{{20, 86}, {832, 792}}
$class
CF$UID
105
NS.keys
CF$UID
29
CF$UID
25
CF$UID
26
CF$UID
3110
CF$UID
30
CF$UID
28
NS.objects
CF$UID
3111
CF$UID
3112
CF$UID
33
CF$UID
3113
CF$UID
22
CF$UID
3110
IDEWorkspaceTabController_DACBA8D1-6CFA-43C3-8DDD-6596F570F63D
{{0, 232}, {600, 646}}
$class
CF$UID
32
NS.objects
CF$UID
3110
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
3114
CF$UID
3166
CF$UID
3172
CF$UID
3180
CF$UID
33
CF$UID
3120
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
3115
CF$UID
3127
CF$UID
3144
CF$UID
153
CF$UID
64
CF$UID
3159
CF$UID
3165
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
3116
rootLayoutTreeNode
CF$UID
3125
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
3117
orientation
0
parent
CF$UID
3125
$class
CF$UID
69
DocumentLocation
CF$UID
3123
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
3118
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
3119
CF$UID
3121
CF$UID
3122
$class
CF$UID
59
Identifier
CF$UID
3120
DetailViewController.h
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
3124
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/Classes/DetailViewController.h
$class
CF$UID
72
children
CF$UID
3126
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
3116
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
3128
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
3129
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
3130
CF$UID
64
CF$UID
3143
$class
CF$UID
32
NS.objects
CF$UID
3131
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
394
CF$UID
3132
CF$UID
3137
CF$UID
3141
CF$UID
3120
CF$UID
323
CF$UID
3142
$class
CF$UID
69
DocumentLocation
CF$UID
3123
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
3133
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
3134
CF$UID
3135
CF$UID
3136
$class
CF$UID
59
Identifier
CF$UID
3120
$class
CF$UID
59
Identifier
CF$UID
190
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
3138
CF$UID
3139
CF$UID
33
CF$UID
3140
326234243.58982199
{888, 1525}
{1503, 0}
-webViewDidFinishLoad:
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
1490
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
130
CF$UID
129
NS.objects
CF$UID
113
CF$UID
3145
CF$UID
3146
CF$UID
113
CF$UID
3147
CF$UID
3153
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3148
$class
CF$UID
108
NS.objects
CF$UID
3149
CF$UID
3151
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
3150
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
3152
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3154
$class
CF$UID
108
NS.objects
CF$UID
3155
CF$UID
3157
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
3156
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
3158
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3160
$class
CF$UID
108
NS.objects
CF$UID
3161
CF$UID
3163
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
3162
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
3164
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3167
$class
CF$UID
108
NS.objects
CF$UID
3168
CF$UID
3170
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
3169
396
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
3171
226
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
3173
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
3174
CF$UID
3176
$class
CF$UID
32
NS.objects
CF$UID
3175
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
CF$UID
3120
$class
CF$UID
183
NS.objects
CF$UID
3177
CF$UID
3178
CF$UID
3179
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3181
$class
CF$UID
108
NS.objects
CF$UID
3182
CF$UID
3184
CF$UID
3186
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
3183
224
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
3185
916
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
3187
260
$class
CF$UID
105
NS.keys
CF$UID
3189
CF$UID
25
CF$UID
26
CF$UID
28
CF$UID
29
CF$UID
30
NS.objects
CF$UID
3190
CF$UID
3263
CF$UID
33
CF$UID
3189
CF$UID
3264
CF$UID
23
IDEWorkspaceTabController_1703B649-D902-458A-A650-6A5F37CF9024
$class
CF$UID
105
NS.keys
CF$UID
42
CF$UID
36
CF$UID
35
CF$UID
38
CF$UID
39
CF$UID
40
CF$UID
41
CF$UID
37
NS.objects
CF$UID
64
CF$UID
33
CF$UID
3191
CF$UID
3241
CF$UID
3247
CF$UID
3255
CF$UID
33
CF$UID
297
$class
CF$UID
105
NS.keys
CF$UID
44
CF$UID
45
CF$UID
46
CF$UID
47
CF$UID
48
CF$UID
49
CF$UID
50
CF$UID
51
NS.objects
CF$UID
3192
CF$UID
3203
CF$UID
3219
CF$UID
153
CF$UID
64
CF$UID
3234
CF$UID
3240
CF$UID
33
$class
CF$UID
73
geniusEditorContextNode
CF$UID
0
primaryEditorContextNode
CF$UID
3193
rootLayoutTreeNode
CF$UID
3201
$class
CF$UID
72
children
CF$UID
0
contentType
1
documentArchivableRepresentation
CF$UID
3194
orientation
0
parent
CF$UID
3201
$class
CF$UID
69
DocumentLocation
CF$UID
3199
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
3195
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
3196
CF$UID
3197
CF$UID
3198
$class
CF$UID
59
Identifier
CF$UID
297
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
68
documentURL
CF$UID
3200
timestamp
CF$UID
0
$class
CF$UID
67
NS.string
file://localhost/Users/FedeX/Documents/AePubReader/AePubReader/SearchWebView.js
$class
CF$UID
72
children
CF$UID
3202
contentType
0
documentArchivableRepresentation
CF$UID
0
orientation
0
parent
CF$UID
0
$class
CF$UID
32
NS.objects
CF$UID
3193
$class
CF$UID
105
NS.keys
CF$UID
75
NS.objects
CF$UID
3204
$class
CF$UID
105
NS.keys
CF$UID
77
NS.objects
CF$UID
3205
$class
CF$UID
116
NS.keys
CF$UID
79
CF$UID
80
CF$UID
81
NS.objects
CF$UID
3206
CF$UID
64
CF$UID
3218
$class
CF$UID
32
NS.objects
CF$UID
3207
$class
CF$UID
105
NS.keys
CF$UID
84
CF$UID
85
CF$UID
86
CF$UID
87
CF$UID
88
CF$UID
89
CF$UID
90
NS.objects
CF$UID
309
CF$UID
3208
CF$UID
3213
CF$UID
297
CF$UID
297
CF$UID
323
CF$UID
3217
$class
CF$UID
69
DocumentLocation
CF$UID
3199
DomainIdentifier
CF$UID
55
IdentifierPath
CF$UID
3209
IndexOfDocumentIdentifier
CF$UID
64
$class
CF$UID
32
NS.objects
CF$UID
3210
CF$UID
3211
CF$UID
3212
$class
CF$UID
59
Identifier
CF$UID
297
$class
CF$UID
59
Identifier
CF$UID
61
$class
CF$UID
59
Identifier
CF$UID
63
$class
CF$UID
116
NS.keys
CF$UID
316
CF$UID
317
CF$UID
318
CF$UID
319
NS.objects
CF$UID
3214
CF$UID
3215
CF$UID
33
CF$UID
3216
326390327.80046099
{136, 1921}
{729, 0}
$class
CF$UID
121
NS.base
CF$UID
0
NS.relative
CF$UID
325
$class
CF$UID
32
NS.objects
CF$UID
123
$class
CF$UID
105
NS.keys
CF$UID
125
CF$UID
126
CF$UID
127
CF$UID
128
CF$UID
129
CF$UID
130
NS.objects
CF$UID
113
CF$UID
3220
CF$UID
3221
CF$UID
113
CF$UID
3222
CF$UID
3228
$class
CF$UID
105
NS.keys
CF$UID
132
NS.objects
CF$UID
64
$class
CF$UID
105
NS.keys
CF$UID
134
NS.objects
CF$UID
135
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3223
$class
CF$UID
108
NS.objects
CF$UID
3224
CF$UID
3226
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
3225
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
3227
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3229
$class
CF$UID
108
NS.objects
CF$UID
3230
CF$UID
3232
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
142
CF$UID
3231
298
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
145
CF$UID
3233
301
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3235
$class
CF$UID
108
NS.objects
CF$UID
3236
CF$UID
3238
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
157
CF$UID
3237
203
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
160
CF$UID
3239
115
$class
CF$UID
105
NS.keys
NS.objects
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3242
$class
CF$UID
108
NS.objects
CF$UID
3243
CF$UID
3245
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
3244
398
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
166
CF$UID
3246
224
$class
CF$UID
105
NS.keys
CF$UID
171
CF$UID
172
NS.objects
CF$UID
172
CF$UID
3248
$class
CF$UID
105
NS.keys
CF$UID
174
CF$UID
175
CF$UID
176
CF$UID
177
CF$UID
178
CF$UID
179
CF$UID
180
NS.objects
CF$UID
181
CF$UID
33
CF$UID
182
CF$UID
33
CF$UID
33
CF$UID
3249
CF$UID
3251
$class
CF$UID
32
NS.objects
CF$UID
3250
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
CF$UID
297
$class
CF$UID
183
NS.objects
CF$UID
3252
CF$UID
3253
CF$UID
3254
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
61
$class
CF$UID
108
NS.objects
CF$UID
63
$class
CF$UID
108
NS.objects
CF$UID
63
CF$UID
190
$class
CF$UID
105
NS.keys
CF$UID
137
NS.objects
CF$UID
3256
$class
CF$UID
108
NS.objects
CF$UID
3257
CF$UID
3259
CF$UID
3261
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
39
CF$UID
3258
260
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
35
CF$UID
3260
1180
$class
CF$UID
116
NS.keys
CF$UID
140
CF$UID
141
NS.objects
CF$UID
198
CF$UID
3262
260
$class
CF$UID
32
NS.objects
CF$UID
3189
{{30, 232}, {600, 646}}
$top
State
CF$UID
1
$version
100000
================================================
FILE: AePubReader/AePubReader.xcodeproj/project.xcworkspace/xcuserdata/FedeX.xcuserdatad/WorkspaceSettings.xcsettings
================================================
IDEWorkspaceUserSettings_HasAskedToTakeAutomaticSnapshotBeforeSignificantChanges
IDEWorkspaceUserSettings_SnapshotAutomaticallyBeforeSignificantChanges
================================================
FILE: AePubReader/AePubReader.xcodeproj/xcuserdata/FedeX.xcuserdatad/xcdebugger/Breakpoints.xcbkptlist
================================================
================================================
FILE: AePubReader/AePubReader.xcodeproj/xcuserdata/FedeX.xcuserdatad/xcschemes/AePubReader.xcscheme
================================================
================================================
FILE: AePubReader/AePubReader.xcodeproj/xcuserdata/FedeX.xcuserdatad/xcschemes/xcschememanagement.plist
================================================
SchemeUserState
AePubReader.xcscheme
orderHint
0
SuppressBuildableAutocreation
1D6058900D05DD3D006BFB54
primary
================================================
FILE: AePubReader/AePubReader_Prefix.pch
================================================
//
// Prefix header for all source files of the 'AePubReader' target in the 'AePubReader' project
//
#import
#ifndef __IPHONE_3_2
#warning "This project uses features only available in iPhone SDK 3.2 and later."
#endif
#ifdef __OBJC__
#import
#import
#endif
================================================
FILE: AePubReader/Classes/AePubReaderAppDelegate.h
================================================
//
// AePubReaderAppDelegate.h
// AePubReader
//
// Created by Federico Frappi on 04/04/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import
@class EPubViewController;
@interface AePubReaderAppDelegate : NSObject {
UIWindow *window;
EPubViewController *detailViewController;
}
@property (nonatomic, retain) IBOutlet UIWindow *window;
@property (nonatomic, retain) IBOutlet EPubViewController *detailViewController;
@end
================================================
FILE: AePubReader/Classes/AePubReaderAppDelegate.m
================================================
//
// AePubReaderAppDelegate.m
// AePubReader
//
// Created by Federico Frappi on 04/04/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "AePubReaderAppDelegate.h"
#import "EPubViewController.h"
@implementation AePubReaderAppDelegate
@synthesize window, detailViewController;
#pragma mark -
#pragma mark Application lifecycle
- (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions {
// Override point for customization after app launch.
self.window.rootViewController = self.detailViewController;
[self.window makeKeyAndVisible];
[detailViewController loadEpub:[NSURL fileURLWithPath:[[NSBundle mainBundle] pathForResource:@"vhugo" ofType:@"epub"]]];
return YES;
}
- (void)applicationWillResignActive:(UIApplication *)application {
/*
Sent when the application is about to move from active to inactive state. This can occur for certain types of temporary interruptions (such as an incoming phone call or SMS message) or when the user quits the application and it begins the transition to the background state.
Use this method to pause ongoing tasks, disable timers, and throttle down OpenGL ES frame rates. Games should use this method to pause the game.
*/
}
- (void)applicationDidBecomeActive:(UIApplication *)application {
/*
Restart any tasks that were paused (or not yet started) while the application was inactive.
*/
}
- (void)applicationWillTerminate:(UIApplication *)application {
/*
Called when the application is about to terminate.
*/
}
#pragma mark -
#pragma mark Memory management
- (void)applicationDidReceiveMemoryWarning:(UIApplication *)application {
/*
Free up as much memory as possible by purging cached data objects that can be recreated (or reloaded from disk) later.
*/
}
- (void)dealloc {
[window release];
[super dealloc];
}
@end
================================================
FILE: AePubReader/Classes/Chapter.h
================================================
//
// Chapter.h
// AePubReader
//
// Created by Federico Frappi on 08/04/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import
@class Chapter;
@protocol ChapterDelegate
@required
- (void) chapterDidFinishLoad:(Chapter*)chapter;
@end
@interface Chapter : NSObject {
NSString* spinePath;
NSString* title;
NSString* text;
id delegate;
int pageCount;
int chapterIndex;
CGRect windowSize;
int fontPercentSize;
}
@property (nonatomic, assign) id delegate;
@property (nonatomic, readonly) int pageCount, chapterIndex, fontPercentSize;
@property (nonatomic, readonly) NSString *spinePath, *title, *text;
@property (nonatomic, readonly) CGRect windowSize;
- (id) initWithPath:(NSString*)theSpinePath title:(NSString*)theTitle chapterIndex:(int) theIndex;
- (void) loadChapterWithWindowSize:(CGRect)theWindowSize fontPercentSize:(int) theFontPercentSize;
@end
================================================
FILE: AePubReader/Classes/Chapter.m
================================================
//
// Chapter.m
// AePubReader
//
// Created by Federico Frappi on 08/04/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "Chapter.h"
#import "NSString+HTML.h"
@implementation Chapter
@synthesize delegate, chapterIndex, title, pageCount, spinePath, text, windowSize, fontPercentSize;
- (id) initWithPath:(NSString*)theSpinePath title:(NSString*)theTitle chapterIndex:(int) theIndex{
if((self=[super init])){
spinePath = [theSpinePath retain];
title = [theTitle retain];
chapterIndex = theIndex;
NSString* html = [[NSString alloc] initWithData:[NSData dataWithContentsOfURL:[NSURL fileURLWithPath:theSpinePath]] encoding:NSUTF8StringEncoding];
text = [[html stringByConvertingHTMLToPlainText] retain];
[html release];
}
return self;
}
- (void) loadChapterWithWindowSize:(CGRect)theWindowSize fontPercentSize:(int) theFontPercentSize{
fontPercentSize = theFontPercentSize;
windowSize = theWindowSize;
// NSLog(@"webviewSize: %f * %f, fontPercentSize: %d", theWindowSize.size.width, theWindowSize.size.height,theFontPercentSize);
UIWebView* webView = [[UIWebView alloc] initWithFrame:windowSize];
[webView setDelegate:self];
NSURLRequest* urlRequest = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:spinePath]];
[webView loadRequest:urlRequest];
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
NSLog(@"%@", error);
[webView dealloc];
}
- (void) webViewDidFinishLoad:(UIWebView*)webView{
NSString *varMySheet = @"var mySheet = document.styleSheets[0];";
NSString *addCSSRule = @"function addCSSRule(selector, newRule) {"
"if (mySheet.addRule) {"
"mySheet.addRule(selector, newRule);" // For Internet Explorer
"} else {"
"ruleIndex = mySheet.cssRules.length;"
"mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);" // For Firefox, Chrome, etc.
"}"
"}";
// NSLog(@"w:%f h:%f", webView.bounds.size.width, webView.bounds.size.height);
NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", webView.frame.size.height, webView.frame.size.width];
NSString *insertRule2 = [NSString stringWithFormat:@"addCSSRule('p', 'text-align: justify;')"];
NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",fontPercentSize];
[webView stringByEvaluatingJavaScriptFromString:varMySheet];
[webView stringByEvaluatingJavaScriptFromString:addCSSRule];
[webView stringByEvaluatingJavaScriptFromString:insertRule1];
[webView stringByEvaluatingJavaScriptFromString:insertRule2];
[webView stringByEvaluatingJavaScriptFromString:setTextSizeRule];
int totalWidth = [[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollWidth"] intValue];
pageCount = (int)((float)totalWidth/webView.bounds.size.width);
// NSLog(@"Chapter %d: %@ -> %d pages", chapterIndex, title, pageCount);
[webView dealloc];
[delegate chapterDidFinishLoad:self];
}
- (void)dealloc {
[title release];
[spinePath release];
[text release];
[super dealloc];
}
@end
================================================
FILE: AePubReader/Classes/ChapterListViewController.h
================================================
//
// ChapterListViewController.h
// AePubReader
//
// Created by Federico Frappi on 04/05/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import
#import "EPubViewController.h"
@interface ChapterListViewController : UITableViewController {
EPubViewController* epubViewController;
}
@property(nonatomic, assign) EPubViewController* epubViewController;
@end
================================================
FILE: AePubReader/Classes/ChapterListViewController.m
================================================
//
// ChapterListViewController.m
// AePubReader
//
// Created by Federico Frappi on 04/05/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "ChapterListViewController.h"
@implementation ChapterListViewController
@synthesize epubViewController;
- (id)initWithStyle:(UITableViewStyle)style
{
self = [super initWithStyle:style];
return self;
}
- (void)dealloc
{
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Uncomment the following line to preserve selection between presentations.
// self.clearsSelectionOnViewWillAppear = NO;
// Uncomment the following line to display an Edit button in the navigation bar for this view controller.
// self.navigationItem.rightBarButtonItem = self.editButtonItem;
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
// e.g. self.myOutlet = nil;
}
- (void)viewWillAppear:(BOOL)animated
{
[super viewWillAppear:animated];
}
- (void)viewDidAppear:(BOOL)animated
{
[super viewDidAppear:animated];
}
- (void)viewWillDisappear:(BOOL)animated
{
[super viewWillDisappear:animated];
}
- (void)viewDidDisappear:(BOOL)animated
{
[super viewDidDisappear:animated];
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
#pragma mark - Table view data source
- (NSInteger)numberOfSectionsInTableView:(UITableView *)tableView
{
return 1;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section
{
// Return the number of rows in the section.
return [epubViewController.loadedEpub.spineArray count];
}
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath
{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleDefault reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.numberOfLines = 2;
cell.textLabel.lineBreakMode = UILineBreakModeMiddleTruncation;
cell.textLabel.adjustsFontSizeToFitWidth = YES;
cell.textLabel.text = [[epubViewController.loadedEpub.spineArray objectAtIndex:[indexPath row]] title];
return cell;
}
#pragma mark - Table view delegate
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath
{
[tableView deselectRowAtIndexPath:indexPath animated:YES];
[epubViewController loadSpine:[indexPath row] atPageIndex:0 highlightSearchResult:nil];
}
@end
================================================
FILE: AePubReader/Classes/ChapterListViewController.xib
================================================
1056
10J869
1306
1038.35
461.00
YES
IBFilesOwner
IBCocoaTouchFramework
IBFirstResponder
IBCocoaTouchFramework
274
{{0, 20}, {320, 460}}
3
MQA
NO
YES
NO
IBCocoaTouchFramework
NO
1
0
YES
60
22
22
YES
view
5
dataSource
6
delegate
7
YES
0
-1
File's Owner
-2
4
YES
YES
-1.CustomClassName
-2.CustomClassName
4.IBEditorWindowLastContentRect
4.IBPluginDependency
YES
ChapterListViewController
UIResponder
{{329, 504}, {320, 480}}
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
YES
YES
7
0
IBCocoaTouchFramework
com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
YES
3
301
================================================
FILE: AePubReader/Classes/EPub.h
================================================
//
// EPubParser.h
// AePubReader
//
// Created by Federico Frappi on 05/04/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import
#import "TouchXML.h"
@interface EPub : NSObject {
NSArray* spineArray;
NSString* epubFilePath;
}
@property(nonatomic, retain) NSArray* spineArray;
- (id) initWithEPubPath:(NSString*)path;
@end
================================================
FILE: AePubReader/Classes/EPub.m
================================================
//
// EPub.m
// AePubReader
//
// Created by Federico Frappi on 05/04/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "EPub.h"
#import "ZipArchive.h"
#import "Chapter.h"
@interface EPub()
- (void) parseEpub;
- (void) unzipAndSaveFileNamed:(NSString*)fileName;
- (NSString*) applicationDocumentsDirectory;
- (NSString*) parseManifestFile;
- (void) parseOPF:(NSString*)opfPath;
@end
@implementation EPub
@synthesize spineArray;
- (id) initWithEPubPath:(NSString *)path{
if((self=[super init])){
epubFilePath = [path retain];
spineArray = [[NSMutableArray alloc] init];
[self parseEpub];
}
return self;
}
- (void) parseEpub{
[self unzipAndSaveFileNamed:epubFilePath];
NSString* opfPath = [self parseManifestFile];
[self parseOPF:opfPath];
}
- (void)unzipAndSaveFileNamed:(NSString*)fileName{
ZipArchive* za = [[ZipArchive alloc] init];
// NSLog(@"%@", fileName);
// NSLog(@"unzipping %@", epubFilePath);
if( [za UnzipOpenFile:epubFilePath]){
NSString *strPath=[NSString stringWithFormat:@"%@/UnzippedEpub",[self applicationDocumentsDirectory]];
// NSLog(@"%@", strPath);
//Delete all the previous files
NSFileManager *filemanager=[[NSFileManager alloc] init];
if ([filemanager fileExistsAtPath:strPath]) {
NSError *error;
[filemanager removeItemAtPath:strPath error:&error];
}
[filemanager release];
filemanager=nil;
//start unzip
BOOL ret = [za UnzipFileTo:[NSString stringWithFormat:@"%@/",strPath] overWrite:YES];
if( NO==ret ){
// error handler here
UIAlertView *alert=[[UIAlertView alloc] initWithTitle:@"Error"
message:@"Error while unzipping the epub"
delegate:self
cancelButtonTitle:@"OK"
otherButtonTitles:nil];
[alert show];
[alert release];
alert=nil;
}
[za UnzipCloseFile];
}
[za release];
}
- (NSString *)applicationDocumentsDirectory {
NSArray *paths = NSSearchPathForDirectoriesInDomains(NSDocumentDirectory, NSUserDomainMask, YES);
NSString *basePath = ([paths count] > 0) ? [paths objectAtIndex:0] : nil;
return basePath;
}
- (NSString*) parseManifestFile{
NSString* manifestFilePath = [NSString stringWithFormat:@"%@/UnzippedEpub/META-INF/container.xml", [self applicationDocumentsDirectory]];
// NSLog(@"%@", manifestFilePath);
NSFileManager *fileManager = [[NSFileManager alloc] init];
if ([fileManager fileExistsAtPath:manifestFilePath]) {
// NSLog(@"Valid epub");
CXMLDocument* manifestFile = [[[CXMLDocument alloc] initWithContentsOfURL:[NSURL fileURLWithPath:manifestFilePath] options:0 error:nil] autorelease];
CXMLNode* opfPath = [manifestFile nodeForXPath:@"//@full-path[1]" error:nil];
// NSLog(@"%@", [NSString stringWithFormat:@"%@/UnzippedEpub/%@", [self applicationDocumentsDirectory], [opfPath stringValue]]);
return [NSString stringWithFormat:@"%@/UnzippedEpub/%@", [self applicationDocumentsDirectory], [opfPath stringValue]];
} else {
NSLog(@"ERROR: ePub not Valid");
return nil;
}
[fileManager release];
}
- (void) parseOPF:(NSString*)opfPath{
CXMLDocument* opfFile = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL fileURLWithPath:opfPath] options:0 error:nil];
NSArray* itemsArray = [opfFile nodesForXPath:@"//opf:item" namespaceMappings:[NSDictionary dictionaryWithObject:@"http://www.idpf.org/2007/opf" forKey:@"opf"] error:nil];
// NSLog(@"itemsArray size: %d", [itemsArray count]);
NSString* ncxFileName;
NSMutableDictionary* itemDictionary = [[NSMutableDictionary alloc] init];
for (CXMLElement* element in itemsArray) {
[itemDictionary setValue:[[element attributeForName:@"href"] stringValue] forKey:[[element attributeForName:@"id"] stringValue]];
if([[[element attributeForName:@"media-type"] stringValue] isEqualToString:@"application/x-dtbncx+xml"]){
ncxFileName = [[element attributeForName:@"href"] stringValue];
// NSLog(@"%@ : %@", [[element attributeForName:@"id"] stringValue], [[element attributeForName:@"href"] stringValue]);
}
if([[[element attributeForName:@"media-type"] stringValue] isEqualToString:@"application/xhtml+xml"]){
ncxFileName = [[element attributeForName:@"href"] stringValue];
// NSLog(@"%@ : %@", [[element attributeForName:@"id"] stringValue], [[element attributeForName:@"href"] stringValue]);
}
}
int lastSlash = [opfPath rangeOfString:@"/" options:NSBackwardsSearch].location;
NSString* ebookBasePath = [opfPath substringToIndex:(lastSlash +1)];
CXMLDocument* ncxToc = [[CXMLDocument alloc] initWithContentsOfURL:[NSURL fileURLWithPath:[NSString stringWithFormat:@"%@%@", ebookBasePath, ncxFileName]] options:0 error:nil];
NSMutableDictionary* titleDictionary = [[NSMutableDictionary alloc] init];
for (CXMLElement* element in itemsArray) {
NSString* href = [[element attributeForName:@"href"] stringValue];
NSString* xpath = [NSString stringWithFormat:@"//ncx:content[@src='%@']/../ncx:navLabel/ncx:text", href];
NSArray* navPoints = [ncxToc nodesForXPath:xpath namespaceMappings:[NSDictionary dictionaryWithObject:@"http://www.daisy.org/z3986/2005/ncx/" forKey:@"ncx"] error:nil];
if([navPoints count]!=0){
CXMLElement* titleElement = [navPoints objectAtIndex:0];
[titleDictionary setValue:[titleElement stringValue] forKey:href];
}
}
NSArray* itemRefsArray = [opfFile nodesForXPath:@"//opf:itemref" namespaceMappings:[NSDictionary dictionaryWithObject:@"http://www.idpf.org/2007/opf" forKey:@"opf"] error:nil];
// NSLog(@"itemRefsArray size: %d", [itemRefsArray count]);
NSMutableArray* tmpArray = [[NSMutableArray alloc] init];
int count = 0;
for (CXMLElement* element in itemRefsArray) {
NSString* chapHref = [itemDictionary valueForKey:[[element attributeForName:@"idref"] stringValue]];
Chapter* tmpChapter = [[Chapter alloc] initWithPath:[NSString stringWithFormat:@"%@%@", ebookBasePath, chapHref]
title:[titleDictionary valueForKey:chapHref]
chapterIndex:count++];
[tmpArray addObject:tmpChapter];
[tmpChapter release];
}
self.spineArray = [NSArray arrayWithArray:tmpArray];
[opfFile release];
[tmpArray release];
[ncxToc release];
[itemDictionary release];
[titleDictionary release];
}
- (void)dealloc {
[spineArray release];
[epubFilePath release];
[super dealloc];
}
@end
================================================
FILE: AePubReader/Classes/EPubView.xib
================================================
1056
10K540
1306
1038.36
461.00
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
301
YES
IBProxyObject
IBUIBarButtonItem
IBUILabel
IBUIToolbar
IBUISearchBar
IBUIWebView
IBUISlider
IBUIView
YES
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
YES
YES
YES
IBFilesOwner
IBIPadFramework
IBFirstResponder
IBIPadFramework
274
YES
290
YES
290
{{464, 0}, {237, 44}}
3
IBIPadFramework
1
IBCocoaTouchFramework
YES
{768, 44}
NO
NO
IBIPadFramework
1
YES
Chapters
IBIPadFramework
1
IBIPadFramework
5
a
IBIPadFramework
1
A
IBIPadFramework
1
IBIPadFramework
5
IBIPadFramework
IBIPadFramework
2
0
266
{{18, 962}, {732, 23}}
NO
IBIPadFramework
0
0
0.0099999997764825821
100
271
{{334, 933}, {100, 21}}
NO
YES
7
NO
IBIPadFramework
0/0
Helvetica
17
16
3
MC42NjY2NjY2NjY3AA
1
10
1
274
{{20, 63}, {728, 862}}
1
MSAxIDEAA
YES
IBIPadFramework
{{0, 20}, {768, 1004}}
3
MQA
NO
2
IBIPadFramework
YES
view
12
toolbar
65
webView
71
decreaseTextSizeClicked:
89
increaseTextSizeClicked:
90
decTextSizeButton
91
incTextSizeButton
92
currentPageLabel
95
pageSlider
96
slidingStarted:
13
97
slidingEnded:
7
101
slidingEnded:
8
102
chapterListButton
112
showChapterIndex:
113
delegate
126
doneClicked:
128
YES
0
-1
File's Owner
-2
8
YES
63
YES
73
86
87
88
93
94
103
125
YES
124
127
69
Web View
YES
YES
-1.CustomClassName
-2.CustomClassName
103.IBPluginDependency
124.IBPluginDependency
127.IBPluginDependency
63.IBPluginDependency
63.IBViewBoundsToFrameTransform
69.IBPluginDependency
69.IBViewBoundsToFrameTransform
73.IBPluginDependency
8.IBEditorWindowLastContentRect
8.IBPluginDependency
86.IBPluginDependency
87.IBPluginDependency
88.IBPluginDependency
93.IBPluginDependency
94.IBPluginDependency
YES
EPubViewController
UIResponder
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
P4AAAL+AAAAAAAAAwigAAA
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
P4AAAL+AAABCigAAw3AAAA
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
{{318, 70}, {783, 786}}
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
YES
YES
131
YES
EPubViewController
UIViewController
YES
YES
decreaseTextSizeClicked:
doneClicked:
increaseTextSizeClicked:
nextButtonClicked:
nextPageClicked:
prevButtonClicked:
prevPageClicked:
showChapterIndex:
slidingEnded:
slidingStarted:
YES
id
id
id
id
id
id
id
id
id
id
YES
YES
decreaseTextSizeClicked:
doneClicked:
increaseTextSizeClicked:
nextButtonClicked:
nextPageClicked:
prevButtonClicked:
prevPageClicked:
showChapterIndex:
slidingEnded:
slidingStarted:
YES
decreaseTextSizeClicked:
id
doneClicked:
id
increaseTextSizeClicked:
id
nextButtonClicked:
id
nextPageClicked:
id
prevButtonClicked:
id
prevPageClicked:
id
showChapterIndex:
id
slidingEnded:
id
slidingStarted:
id
YES
YES
chapterListButton
currentPageLabel
decTextSizeButton
incTextSizeButton
pageSlider
toolbar
webView
YES
UIBarButtonItem
UILabel
UIBarButtonItem
UIBarButtonItem
UISlider
UIToolbar
UIWebView
YES
YES
chapterListButton
currentPageLabel
decTextSizeButton
incTextSizeButton
pageSlider
toolbar
webView
YES
chapterListButton
UIBarButtonItem
currentPageLabel
UILabel
decTextSizeButton
UIBarButtonItem
incTextSizeButton
UIBarButtonItem
pageSlider
UISlider
toolbar
UIToolbar
webView
UIWebView
IBProjectSource
./Classes/EPubViewController.h
0
IBIPadFramework
com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
YES
3
301
================================================
FILE: AePubReader/Classes/EPubViewController.h
================================================
//
// DetailViewController.h
// AePubReader
//
// Created by Federico Frappi on 04/04/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import
#import "ZipArchive.h"
#import "EPub.h"
#import "Chapter.h"
@class SearchResultsViewController;
@class SearchResult;
@interface EPubViewController : UIViewController {
UIToolbar *toolbar;
UIWebView *webView;
UIBarButtonItem* chapterListButton;
UIBarButtonItem* decTextSizeButton;
UIBarButtonItem* incTextSizeButton;
UISlider* pageSlider;
UILabel* currentPageLabel;
EPub* loadedEpub;
int currentSpineIndex;
int currentPageInSpineIndex;
int pagesInCurrentSpineCount;
int currentTextSize;
int totalPagesCount;
BOOL epubLoaded;
BOOL paginating;
BOOL searching;
UIPopoverController* chaptersPopover;
UIPopoverController* searchResultsPopover;
SearchResultsViewController* searchResViewController;
SearchResult* currentSearchResult;
}
- (IBAction) showChapterIndex:(id)sender;
- (IBAction) increaseTextSizeClicked:(id)sender;
- (IBAction) decreaseTextSizeClicked:(id)sender;
- (IBAction) slidingStarted:(id)sender;
- (IBAction) slidingEnded:(id)sender;
- (IBAction) doneClicked:(id)sender;
- (void) loadSpine:(int)spineIndex atPageIndex:(int)pageIndex highlightSearchResult:(SearchResult*)theResult;
- (void) loadEpub:(NSURL*) epubURL;
@property (nonatomic, retain) EPub* loadedEpub;
@property (nonatomic, retain) SearchResult* currentSearchResult;
@property (nonatomic, retain) IBOutlet UIToolbar *toolbar;
@property (nonatomic, retain) IBOutlet UIWebView *webView;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *chapterListButton;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *decTextSizeButton;
@property (nonatomic, retain) IBOutlet UIBarButtonItem *incTextSizeButton;
@property (nonatomic, retain) IBOutlet UISlider *pageSlider;
@property (nonatomic, retain) IBOutlet UILabel *currentPageLabel;
@property BOOL searching;
@end
================================================
FILE: AePubReader/Classes/EPubViewController.m
================================================
//
// DetailViewController.m
// AePubReader
//
// Created by Federico Frappi on 04/04/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "EPubViewController.h"
#import "ChapterListViewController.h"
#import "SearchResultsViewController.h"
#import "SearchResult.h"
#import "UIWebView+SearchWebView.h"
#import "Chapter.h"
@interface EPubViewController()
- (void) gotoNextSpine;
- (void) gotoPrevSpine;
- (void) gotoNextPage;
- (void) gotoPrevPage;
- (int) getGlobalPageCount;
- (void) gotoPageInCurrentSpine: (int)pageIndex;
- (void) updatePagination;
- (void) loadSpine:(int)spineIndex atPageIndex:(int)pageIndex;
@end
@implementation EPubViewController
@synthesize loadedEpub, toolbar, webView;
@synthesize chapterListButton, decTextSizeButton, incTextSizeButton;
@synthesize currentPageLabel, pageSlider, searching;
@synthesize currentSearchResult;
#pragma mark -
- (void) loadEpub:(NSURL*) epubURL{
currentSpineIndex = 0;
currentPageInSpineIndex = 0;
pagesInCurrentSpineCount = 0;
totalPagesCount = 0;
searching = NO;
epubLoaded = NO;
self.loadedEpub = [[EPub alloc] initWithEPubPath:[epubURL path]];
epubLoaded = YES;
NSLog(@"loadEpub");
[self updatePagination];
}
- (void) chapterDidFinishLoad:(Chapter *)chapter{
totalPagesCount+=chapter.pageCount;
if(chapter.chapterIndex + 1 < [loadedEpub.spineArray count]){
[[loadedEpub.spineArray objectAtIndex:chapter.chapterIndex+1] setDelegate:self];
[[loadedEpub.spineArray objectAtIndex:chapter.chapterIndex+1] loadChapterWithWindowSize:webView.bounds fontPercentSize:currentTextSize];
[currentPageLabel setText:[NSString stringWithFormat:@"?/%d", totalPagesCount]];
} else {
[currentPageLabel setText:[NSString stringWithFormat:@"%d/%d",[self getGlobalPageCount], totalPagesCount]];
[pageSlider setValue:(float)100*(float)[self getGlobalPageCount]/(float)totalPagesCount animated:YES];
paginating = NO;
NSLog(@"Pagination Ended!");
}
}
- (int) getGlobalPageCount{
int pageCount = 0;
for(int i=0; i=pagesInCurrentSpineCount){
pageIndex = pagesInCurrentSpineCount - 1;
currentPageInSpineIndex = pagesInCurrentSpineCount - 1;
}
float pageOffset = pageIndex*webView.bounds.size.width;
NSString* goToOffsetFunc = [NSString stringWithFormat:@" function pageScroll(xOffset){ window.scroll(xOffset,0); } "];
NSString* goTo =[NSString stringWithFormat:@"pageScroll(%f)", pageOffset];
[webView stringByEvaluatingJavaScriptFromString:goToOffsetFunc];
[webView stringByEvaluatingJavaScriptFromString:goTo];
if(!paginating){
[currentPageLabel setText:[NSString stringWithFormat:@"%d/%d",[self getGlobalPageCount], totalPagesCount]];
[pageSlider setValue:(float)100*(float)[self getGlobalPageCount]/(float)totalPagesCount animated:YES];
}
webView.hidden = NO;
}
- (void) gotoNextSpine {
if(!paginating){
if(currentSpineIndex+1<[loadedEpub.spineArray count]){
[self loadSpine:++currentSpineIndex atPageIndex:0];
}
}
}
- (void) gotoPrevSpine {
if(!paginating){
if(currentSpineIndex-1>=0){
[self loadSpine:--currentSpineIndex atPageIndex:0];
}
}
}
- (void) gotoNextPage {
if(!paginating){
if(currentPageInSpineIndex+1=0){
[self gotoPageInCurrentSpine:--currentPageInSpineIndex];
} else {
if(currentSpineIndex!=0){
int targetPage = [[loadedEpub.spineArray objectAtIndex:(currentSpineIndex-1)] pageCount];
[self loadSpine:--currentSpineIndex atPageIndex:targetPage-1];
}
}
}
}
- (IBAction) increaseTextSizeClicked:(id)sender{
if(!paginating){
if(currentTextSize+25<=200){
currentTextSize+=25;
[self updatePagination];
if(currentTextSize == 200){
[incTextSizeButton setEnabled:NO];
}
[decTextSizeButton setEnabled:YES];
}
}
}
- (IBAction) decreaseTextSizeClicked:(id)sender{
if(!paginating){
if(currentTextSize-25>=50){
currentTextSize-=25;
[self updatePagination];
if(currentTextSize==50){
[decTextSizeButton setEnabled:NO];
}
[incTextSizeButton setEnabled:YES];
}
}
}
- (IBAction) doneClicked:(id)sender{
[self dismissModalViewControllerAnimated:YES];
}
- (IBAction) slidingStarted:(id)sender{
int targetPage = ((pageSlider.value/(float)100)*(float)totalPagesCount);
if (targetPage==0) {
targetPage++;
}
[currentPageLabel setText:[NSString stringWithFormat:@"%d/%d", targetPage, totalPagesCount]];
}
- (IBAction) slidingEnded:(id)sender{
int targetPage = (int)((pageSlider.value/(float)100)*(float)totalPagesCount);
if (targetPage==0) {
targetPage++;
}
int pageSum = 0;
int chapterIndex = 0;
int pageIndex = 0;
for(chapterIndex=0; chapterIndex<[loadedEpub.spineArray count]; chapterIndex++){
pageSum+=[[loadedEpub.spineArray objectAtIndex:chapterIndex] pageCount];
// NSLog(@"Chapter %d, targetPage: %d, pageSum: %d, pageIndex: %d", chapterIndex, targetPage, pageSum, (pageSum-targetPage));
if(pageSum>=targetPage){
pageIndex = [[loadedEpub.spineArray objectAtIndex:chapterIndex] pageCount] - 1 - pageSum + targetPage;
break;
}
}
[self loadSpine:chapterIndex atPageIndex:pageIndex];
}
- (IBAction) showChapterIndex:(id)sender{
if(chaptersPopover==nil){
ChapterListViewController* chapterListView = [[ChapterListViewController alloc] initWithNibName:@"ChapterListViewController" bundle:[NSBundle mainBundle]];
[chapterListView setEpubViewController:self];
chaptersPopover = [[UIPopoverController alloc] initWithContentViewController:chapterListView];
[chaptersPopover setPopoverContentSize:CGSizeMake(400, 600)];
[chapterListView release];
}
if ([chaptersPopover isPopoverVisible]) {
[chaptersPopover dismissPopoverAnimated:YES];
}else{
[chaptersPopover presentPopoverFromBarButtonItem:chapterListButton permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
}
- (void)webViewDidFinishLoad:(UIWebView *)theWebView{
NSString *varMySheet = @"var mySheet = document.styleSheets[0];";
NSString *addCSSRule = @"function addCSSRule(selector, newRule) {"
"if (mySheet.addRule) {"
"mySheet.addRule(selector, newRule);" // For Internet Explorer
"} else {"
"ruleIndex = mySheet.cssRules.length;"
"mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);" // For Firefox, Chrome, etc.
"}"
"}";
NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", webView.frame.size.height, webView.frame.size.width];
NSString *insertRule2 = [NSString stringWithFormat:@"addCSSRule('p', 'text-align: justify;')"];
NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')", currentTextSize];
NSString *setHighlightColorRule = [NSString stringWithFormat:@"addCSSRule('highlight', 'background-color: yellow;')"];
[webView stringByEvaluatingJavaScriptFromString:varMySheet];
[webView stringByEvaluatingJavaScriptFromString:addCSSRule];
[webView stringByEvaluatingJavaScriptFromString:insertRule1];
[webView stringByEvaluatingJavaScriptFromString:insertRule2];
[webView stringByEvaluatingJavaScriptFromString:setTextSizeRule];
[webView stringByEvaluatingJavaScriptFromString:setHighlightColorRule];
if(currentSearchResult!=nil){
// NSLog(@"Highlighting %@", currentSearchResult.originatingQuery);
[webView highlightAllOccurencesOfString:currentSearchResult.originatingQuery];
}
int totalWidth = [[webView stringByEvaluatingJavaScriptFromString:@"document.documentElement.scrollWidth"] intValue];
pagesInCurrentSpineCount = (int)((float)totalWidth/webView.bounds.size.width);
[self gotoPageInCurrentSpine:currentPageInSpineIndex];
}
- (void) updatePagination{
if(epubLoaded){
if(!paginating){
NSLog(@"Pagination Started!");
paginating = YES;
totalPagesCount=0;
[self loadSpine:currentSpineIndex atPageIndex:currentPageInSpineIndex];
[[loadedEpub.spineArray objectAtIndex:0] setDelegate:self];
[[loadedEpub.spineArray objectAtIndex:0] loadChapterWithWindowSize:webView.bounds fontPercentSize:currentTextSize];
[currentPageLabel setText:@"?/?"];
}
}
}
- (void)searchBarSearchButtonClicked:(UISearchBar *)searchBar{
if(searchResultsPopover==nil){
searchResultsPopover = [[UIPopoverController alloc] initWithContentViewController:searchResViewController];
[searchResultsPopover setPopoverContentSize:CGSizeMake(400, 600)];
}
if (![searchResultsPopover isPopoverVisible]) {
[searchResultsPopover presentPopoverFromRect:searchBar.bounds inView:searchBar permittedArrowDirections:UIPopoverArrowDirectionAny animated:YES];
}
// NSLog(@"Searching for %@", [searchBar text]);
if(!searching){
searching = YES;
[searchResViewController searchString:[searchBar text]];
[searchBar resignFirstResponder];
}
}
#pragma mark -
#pragma mark Rotation support
// Ensure that the view controller supports rotation and that the split view can therefore show in both portrait and landscape.
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation {
NSLog(@"shouldAutorotate");
[self updatePagination];
return YES;
}
#pragma mark -
#pragma mark View lifecycle
// Implement viewDidLoad to do additional setup after loading the view, typically from a nib.
- (void)viewDidLoad {
[super viewDidLoad];
[webView setDelegate:self];
UIScrollView* sv = nil;
for (UIView* v in webView.subviews) {
if([v isKindOfClass:[UIScrollView class]]){
sv = (UIScrollView*) v;
sv.scrollEnabled = NO;
sv.bounces = NO;
}
}
currentTextSize = 100;
UISwipeGestureRecognizer* rightSwipeRecognizer = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(gotoNextPage)] autorelease];
[rightSwipeRecognizer setDirection:UISwipeGestureRecognizerDirectionLeft];
UISwipeGestureRecognizer* leftSwipeRecognizer = [[[UISwipeGestureRecognizer alloc] initWithTarget:self action:@selector(gotoPrevPage)] autorelease];
[leftSwipeRecognizer setDirection:UISwipeGestureRecognizerDirectionRight];
[webView addGestureRecognizer:rightSwipeRecognizer];
[webView addGestureRecognizer:leftSwipeRecognizer];
[pageSlider setThumbImage:[UIImage imageNamed:@"slider_ball.png"] forState:UIControlStateNormal];
[pageSlider setMinimumTrackImage:[[UIImage imageNamed:@"orangeSlide.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0] forState:UIControlStateNormal];
[pageSlider setMaximumTrackImage:[[UIImage imageNamed:@"yellowSlide.png"] stretchableImageWithLeftCapWidth:10 topCapHeight:0] forState:UIControlStateNormal];
searchResViewController = [[SearchResultsViewController alloc] initWithNibName:@"SearchResultsViewController" bundle:[NSBundle mainBundle]];
searchResViewController.epubViewController = self;
}
- (void)viewDidUnload {
self.toolbar = nil;
self.webView = nil;
self.chapterListButton = nil;
self.decTextSizeButton = nil;
self.incTextSizeButton = nil;
self.pageSlider = nil;
self.currentPageLabel = nil;
}
#pragma mark -
#pragma mark Memory management
/*
- (void)didReceiveMemoryWarning {
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
*/
- (void)dealloc {
self.toolbar = nil;
self.webView = nil;
self.chapterListButton = nil;
self.decTextSizeButton = nil;
self.incTextSizeButton = nil;
self.pageSlider = nil;
self.currentPageLabel = nil;
[loadedEpub release];
[chaptersPopover release];
[searchResultsPopover release];
[searchResViewController release];
[currentSearchResult release];
[super dealloc];
}
@end
================================================
FILE: AePubReader/Classes/GTMDefines.h
================================================
//
// GTMDefines.h
//
// Copyright 2008 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
//
// ============================================================================
#include
#include
#if TARGET_OS_IPHONE
#include
#endif // TARGET_OS_IPHONE
// Not all MAC_OS_X_VERSION_10_X macros defined in past SDKs
#ifndef MAC_OS_X_VERSION_10_5
#define MAC_OS_X_VERSION_10_5 1050
#endif
#ifndef MAC_OS_X_VERSION_10_6
#define MAC_OS_X_VERSION_10_6 1060
#endif
// Not all __IPHONE_X macros defined in past SDKs
#ifndef __IPHONE_2_1
#define __IPHONE_2_1 20100
#endif
#ifndef __IPHONE_2_2
#define __IPHONE_2_2 20200
#endif
#ifndef __IPHONE_3_0
#define __IPHONE_3_0 30000
#endif
#ifndef __IPHONE_3_1
#define __IPHONE_3_1 30100
#endif
#ifndef __IPHONE_3_2
#define __IPHONE_3_2 30200
#endif
#ifndef __IPHONE_4_0
#define __IPHONE_4_0 40000
#endif
// ----------------------------------------------------------------------------
// CPP symbols that can be overridden in a prefix to control how the toolbox
// is compiled.
// ----------------------------------------------------------------------------
// By setting the GTM_CONTAINERS_VALIDATION_FAILED_LOG and
// GTM_CONTAINERS_VALIDATION_FAILED_ASSERT macros you can control what happens
// when a validation fails. If you implement your own validators, you may want
// to control their internals using the same macros for consistency.
#ifndef GTM_CONTAINERS_VALIDATION_FAILED_ASSERT
#define GTM_CONTAINERS_VALIDATION_FAILED_ASSERT 0
#endif
// Give ourselves a consistent way to do inlines. Apple's macros even use
// a few different actual definitions, so we're based off of the foundation
// one.
#if !defined(GTM_INLINE)
#if defined (__GNUC__) && (__GNUC__ == 4)
#define GTM_INLINE static __inline__ __attribute__((always_inline))
#else
#define GTM_INLINE static __inline__
#endif
#endif
// Give ourselves a consistent way of doing externs that links up nicely
// when mixing objc and objc++
#if !defined (GTM_EXTERN)
#if defined __cplusplus
#define GTM_EXTERN extern "C"
#else
#define GTM_EXTERN extern
#endif
#endif
// Give ourselves a consistent way of exporting things if we have visibility
// set to hidden.
#if !defined (GTM_EXPORT)
#define GTM_EXPORT __attribute__((visibility("default")))
#endif
// _GTMDevLog & _GTMDevAssert
//
// _GTMDevLog & _GTMDevAssert are meant to be a very lightweight shell for
// developer level errors. This implementation simply macros to NSLog/NSAssert.
// It is not intended to be a general logging/reporting system.
//
// Please see http://code.google.com/p/google-toolbox-for-mac/wiki/DevLogNAssert
// for a little more background on the usage of these macros.
//
// _GTMDevLog log some error/problem in debug builds
// _GTMDevAssert assert if conditon isn't met w/in a method/function
// in all builds.
//
// To replace this system, just provide different macro definitions in your
// prefix header. Remember, any implementation you provide *must* be thread
// safe since this could be called by anything in what ever situtation it has
// been placed in.
//
// We only define the simple macros if nothing else has defined this.
#ifndef _GTMDevLog
#ifdef DEBUG
#define _GTMDevLog(...) NSLog(__VA_ARGS__)
#else
#define _GTMDevLog(...) do { } while (0)
#endif
#endif // _GTMDevLog
// Declared here so that it can easily be used for logging tracking if
// necessary. See GTMUnitTestDevLog.h for details.
@class NSString;
GTM_EXTERN void _GTMUnitTestDevLog(NSString *format, ...);
#ifndef _GTMDevAssert
// we directly invoke the NSAssert handler so we can pass on the varargs
// (NSAssert doesn't have a macro we can use that takes varargs)
#if !defined(NS_BLOCK_ASSERTIONS)
#define _GTMDevAssert(condition, ...) \
do { \
if (!(condition)) { \
[[NSAssertionHandler currentHandler] \
handleFailureInFunction:[NSString stringWithUTF8String:__PRETTY_FUNCTION__] \
file:[NSString stringWithUTF8String:__FILE__] \
lineNumber:__LINE__ \
description:__VA_ARGS__]; \
} \
} while(0)
#else // !defined(NS_BLOCK_ASSERTIONS)
#define _GTMDevAssert(condition, ...) do { } while (0)
#endif // !defined(NS_BLOCK_ASSERTIONS)
#endif // _GTMDevAssert
// _GTMCompileAssert
// _GTMCompileAssert is an assert that is meant to fire at compile time if you
// want to check things at compile instead of runtime. For example if you
// want to check that a wchar is 4 bytes instead of 2 you would use
// _GTMCompileAssert(sizeof(wchar_t) == 4, wchar_t_is_4_bytes_on_OS_X)
// Note that the second "arg" is not in quotes, and must be a valid processor
// symbol in it's own right (no spaces, punctuation etc).
// Wrapping this in an #ifndef allows external groups to define their own
// compile time assert scheme.
#ifndef _GTMCompileAssert
// We got this technique from here:
// http://unixjunkie.blogspot.com/2007/10/better-compile-time-asserts_29.html
#define _GTMCompileAssertSymbolInner(line, msg) _GTMCOMPILEASSERT ## line ## __ ## msg
#define _GTMCompileAssertSymbol(line, msg) _GTMCompileAssertSymbolInner(line, msg)
#define _GTMCompileAssert(test, msg) \
typedef char _GTMCompileAssertSymbol(__LINE__, msg) [ ((test) ? 1 : -1) ]
#endif // _GTMCompileAssert
// Macro to allow you to create NSStrings out of other macros.
// #define FOO foo
// NSString *fooString = GTM_NSSTRINGIFY(FOO);
#if !defined (GTM_NSSTRINGIFY)
#define GTM_NSSTRINGIFY_INNER(x) @#x
#define GTM_NSSTRINGIFY(x) GTM_NSSTRINGIFY_INNER(x)
#endif
// Macro to allow fast enumeration when building for 10.5 or later, and
// reliance on NSEnumerator for 10.4. Remember, NSDictionary w/ FastEnumeration
// does keys, so pick the right thing, nothing is done on the FastEnumeration
// side to be sure you're getting what you wanted.
#ifndef GTM_FOREACH_OBJECT
#if TARGET_OS_IPHONE || !(MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5)
#define GTM_FOREACH_ENUMEREE(element, enumeration) \
for (element in enumeration)
#define GTM_FOREACH_OBJECT(element, collection) \
for (element in collection)
#define GTM_FOREACH_KEY(element, collection) \
for (element in collection)
#else
#define GTM_FOREACH_ENUMEREE(element, enumeration) \
for (NSEnumerator *_ ## element ## _enum = enumeration; \
(element = [_ ## element ## _enum nextObject]) != nil; )
#define GTM_FOREACH_OBJECT(element, collection) \
GTM_FOREACH_ENUMEREE(element, [collection objectEnumerator])
#define GTM_FOREACH_KEY(element, collection) \
GTM_FOREACH_ENUMEREE(element, [collection keyEnumerator])
#endif
#endif
// ============================================================================
// ----------------------------------------------------------------------------
// CPP symbols defined based on the project settings so the GTM code has
// simple things to test against w/o scattering the knowledge of project
// setting through all the code.
// ----------------------------------------------------------------------------
// Provide a single constant CPP symbol that all of GTM uses for ifdefing
// iPhone code.
#if TARGET_OS_IPHONE // iPhone SDK
// For iPhone specific stuff
#define GTM_IPHONE_SDK 1
#if TARGET_IPHONE_SIMULATOR
#define GTM_IPHONE_SIMULATOR 1
#else
#define GTM_IPHONE_DEVICE 1
#endif // TARGET_IPHONE_SIMULATOR
#else
// For MacOS specific stuff
#define GTM_MACOS_SDK 1
#endif
// Some of our own availability macros
#if GTM_MACOS_SDK
#define GTM_AVAILABLE_ONLY_ON_IPHONE UNAVAILABLE_ATTRIBUTE
#define GTM_AVAILABLE_ONLY_ON_MACOS
#else
#define GTM_AVAILABLE_ONLY_ON_IPHONE
#define GTM_AVAILABLE_ONLY_ON_MACOS UNAVAILABLE_ATTRIBUTE
#endif
// Provide a symbol to include/exclude extra code for GC support. (This mainly
// just controls the inclusion of finalize methods).
#ifndef GTM_SUPPORT_GC
#if GTM_IPHONE_SDK
// iPhone never needs GC
#define GTM_SUPPORT_GC 0
#else
// We can't find a symbol to tell if GC is supported/required, so best we
// do on Mac targets is include it if we're on 10.5 or later.
#if MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
#define GTM_SUPPORT_GC 0
#else
#define GTM_SUPPORT_GC 1
#endif
#endif
#endif
// To simplify support for 64bit (and Leopard in general), we provide the type
// defines for non Leopard SDKs
#if !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_5)
// NSInteger/NSUInteger and Max/Mins
#ifndef NSINTEGER_DEFINED
#if __LP64__ || NS_BUILD_32_LIKE_64
typedef long NSInteger;
typedef unsigned long NSUInteger;
#else
typedef int NSInteger;
typedef unsigned int NSUInteger;
#endif
#define NSIntegerMax LONG_MAX
#define NSIntegerMin LONG_MIN
#define NSUIntegerMax ULONG_MAX
#define NSINTEGER_DEFINED 1
#endif // NSINTEGER_DEFINED
// CGFloat
#ifndef CGFLOAT_DEFINED
#if defined(__LP64__) && __LP64__
// This really is an untested path (64bit on Tiger?)
typedef double CGFloat;
#define CGFLOAT_MIN DBL_MIN
#define CGFLOAT_MAX DBL_MAX
#define CGFLOAT_IS_DOUBLE 1
#else /* !defined(__LP64__) || !__LP64__ */
typedef float CGFloat;
#define CGFLOAT_MIN FLT_MIN
#define CGFLOAT_MAX FLT_MAX
#define CGFLOAT_IS_DOUBLE 0
#endif /* !defined(__LP64__) || !__LP64__ */
#define CGFLOAT_DEFINED 1
#endif // CGFLOAT_DEFINED
#endif // MAC_OS_X_VERSION_MIN_REQUIRED < MAC_OS_X_VERSION_10_5
// Some support for advanced clang static analysis functionality
// See http://clang-analyzer.llvm.org/annotations.html
#ifndef __has_feature // Optional.
#define __has_feature(x) 0 // Compatibility with non-clang compilers.
#endif
#ifndef NS_RETURNS_RETAINED
#if __has_feature(attribute_ns_returns_retained)
#define NS_RETURNS_RETAINED __attribute__((ns_returns_retained))
#else
#define NS_RETURNS_RETAINED
#endif
#endif
#ifndef NS_RETURNS_NOT_RETAINED
#if __has_feature(attribute_ns_returns_not_retained)
#define NS_RETURNS_NOT_RETAINED __attribute__((ns_returns_not_retained))
#else
#define NS_RETURNS_NOT_RETAINED
#endif
#endif
#ifndef CF_RETURNS_RETAINED
#if __has_feature(attribute_cf_returns_retained)
#define CF_RETURNS_RETAINED __attribute__((cf_returns_retained))
#else
#define CF_RETURNS_RETAINED
#endif
#endif
#ifndef CF_RETURNS_NOT_RETAINED
#if __has_feature(attribute_cf_returns_not_retained)
#define CF_RETURNS_NOT_RETAINED __attribute__((cf_returns_not_retained))
#else
#define CF_RETURNS_NOT_RETAINED
#endif
#endif
// Defined on 10.6 and above.
#ifndef NS_FORMAT_ARGUMENT
#define NS_FORMAT_ARGUMENT(A)
#endif
// Defined on 10.6 and above.
#ifndef NS_FORMAT_FUNCTION
#define NS_FORMAT_FUNCTION(F,A)
#endif
#ifndef GTM_NONNULL
#define GTM_NONNULL(x) __attribute__((nonnull(x)))
#endif
// To simplify support for both Leopard and Snow Leopard we declare
// the Snow Leopard protocols that we need here.
#if !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
#define GTM_10_6_PROTOCOLS_DEFINED 1
@protocol NSConnectionDelegate
@end
@protocol NSAnimationDelegate
@end
@protocol NSImageDelegate
@end
@protocol NSTabViewDelegate
@end
#endif // !defined(GTM_10_6_PROTOCOLS_DEFINED) && !(MAC_OS_X_VERSION_MAX_ALLOWED >= MAC_OS_X_VERSION_10_6)
================================================
FILE: AePubReader/Classes/GTMNSString+HTML.h
================================================
//
// GTMNSString+HTML.h
// Dealing with NSStrings that contain HTML
//
// Copyright 2006-2008 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
//
#import
/// Utilities for NSStrings containing HTML
@interface NSString (GTMNSStringHTMLAdditions)
/// Get a string where internal characters that need escaping for HTML are escaped
//
/// For example, '&' become '&'. This will only cover characters from table
/// A.2.2 of http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters
/// which is what you want for a unicode encoded webpage. If you have a ascii
/// or non-encoded webpage, please use stringByEscapingAsciiHTML which will
/// encode all characters.
///
/// For obvious reasons this call is only safe once.
//
// Returns:
// Autoreleased NSString
//
- (NSString *)gtm_stringByEscapingForHTML;
/// Get a string where internal characters that need escaping for HTML are escaped
//
/// For example, '&' become '&'
/// All non-mapped characters (unicode that don't have a &keyword; mapping)
/// will be converted to the appropriate xx; value. If your webpage is
/// unicode encoded (UTF16 or UTF8) use stringByEscapingHTML instead as it is
/// faster, and produces less bloated and more readable HTML (as long as you
/// are using a unicode compliant HTML reader).
///
/// For obvious reasons this call is only safe once.
//
// Returns:
// Autoreleased NSString
//
- (NSString *)gtm_stringByEscapingForAsciiHTML;
/// Get a string where internal characters that are escaped for HTML are unescaped
//
/// For example, '&' becomes '&'
/// Handles and 2 cases as well
///
// Returns:
// Autoreleased NSString
//
- (NSString *)gtm_stringByUnescapingFromHTML;
@end
================================================
FILE: AePubReader/Classes/GTMNSString+HTML.m
================================================
//
// GTMNSString+HTML.m
// Dealing with NSStrings that contain HTML
//
// Copyright 2006-2008 Google Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License"); you may not
// use this file except in compliance with the License. You may obtain a copy
// of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS, WITHOUT
// WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the
// License for the specific language governing permissions and limitations under
// the License.
//
#import "GTMDefines.h"
#import "GTMNSString+HTML.h"
typedef struct {
NSString *escapeSequence;
unichar uchar;
} HTMLEscapeMap;
// Taken from http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters
// Ordered by uchar lowest to highest for bsearching
static HTMLEscapeMap gAsciiHTMLEscapeMap[] = {
// A.2.2. Special characters
{ @""", 34 },
{ @"&", 38 },
{ @"'", 39 },
{ @"<", 60 },
{ @">", 62 },
// A.2.1. Latin-1 characters
{ @" ", 160 },
{ @"¡", 161 },
{ @"¢", 162 },
{ @"£", 163 },
{ @"¤", 164 },
{ @"¥", 165 },
{ @"¦", 166 },
{ @"§", 167 },
{ @"¨", 168 },
{ @"©", 169 },
{ @"ª", 170 },
{ @"«", 171 },
{ @"¬", 172 },
{ @"", 173 },
{ @"®", 174 },
{ @"¯", 175 },
{ @"°", 176 },
{ @"±", 177 },
{ @"²", 178 },
{ @"³", 179 },
{ @"´", 180 },
{ @"µ", 181 },
{ @"¶", 182 },
{ @"·", 183 },
{ @"¸", 184 },
{ @"¹", 185 },
{ @"º", 186 },
{ @"»", 187 },
{ @"¼", 188 },
{ @"½", 189 },
{ @"¾", 190 },
{ @"¿", 191 },
{ @"À", 192 },
{ @"Á", 193 },
{ @"Â", 194 },
{ @"Ã", 195 },
{ @"Ä", 196 },
{ @"Å", 197 },
{ @"Æ", 198 },
{ @"Ç", 199 },
{ @"È", 200 },
{ @"É", 201 },
{ @"Ê", 202 },
{ @"Ë", 203 },
{ @"Ì", 204 },
{ @"Í", 205 },
{ @"Î", 206 },
{ @"Ï", 207 },
{ @"Ð", 208 },
{ @"Ñ", 209 },
{ @"Ò", 210 },
{ @"Ó", 211 },
{ @"Ô", 212 },
{ @"Õ", 213 },
{ @"Ö", 214 },
{ @"×", 215 },
{ @"Ø", 216 },
{ @"Ù", 217 },
{ @"Ú", 218 },
{ @"Û", 219 },
{ @"Ü", 220 },
{ @"Ý", 221 },
{ @"Þ", 222 },
{ @"ß", 223 },
{ @"à", 224 },
{ @"á", 225 },
{ @"â", 226 },
{ @"ã", 227 },
{ @"ä", 228 },
{ @"å", 229 },
{ @"æ", 230 },
{ @"ç", 231 },
{ @"è", 232 },
{ @"é", 233 },
{ @"ê", 234 },
{ @"ë", 235 },
{ @"ì", 236 },
{ @"í", 237 },
{ @"î", 238 },
{ @"ï", 239 },
{ @"ð", 240 },
{ @"ñ", 241 },
{ @"ò", 242 },
{ @"ó", 243 },
{ @"ô", 244 },
{ @"õ", 245 },
{ @"ö", 246 },
{ @"÷", 247 },
{ @"ø", 248 },
{ @"ù", 249 },
{ @"ú", 250 },
{ @"û", 251 },
{ @"ü", 252 },
{ @"ý", 253 },
{ @"þ", 254 },
{ @"ÿ", 255 },
// A.2.2. Special characters cont'd
{ @"Œ", 338 },
{ @"œ", 339 },
{ @"Š", 352 },
{ @"š", 353 },
{ @"Ÿ", 376 },
// A.2.3. Symbols
{ @"ƒ", 402 },
// A.2.2. Special characters cont'd
{ @"ˆ", 710 },
{ @"˜", 732 },
// A.2.3. Symbols cont'd
{ @"Α", 913 },
{ @"Β", 914 },
{ @"Γ", 915 },
{ @"Δ", 916 },
{ @"Ε", 917 },
{ @"Ζ", 918 },
{ @"Η", 919 },
{ @"Θ", 920 },
{ @"Ι", 921 },
{ @"Κ", 922 },
{ @"Λ", 923 },
{ @"Μ", 924 },
{ @"Ν", 925 },
{ @"Ξ", 926 },
{ @"Ο", 927 },
{ @"Π", 928 },
{ @"Ρ", 929 },
{ @"Σ", 931 },
{ @"Τ", 932 },
{ @"Υ", 933 },
{ @"Φ", 934 },
{ @"Χ", 935 },
{ @"Ψ", 936 },
{ @"Ω", 937 },
{ @"α", 945 },
{ @"β", 946 },
{ @"γ", 947 },
{ @"δ", 948 },
{ @"ε", 949 },
{ @"ζ", 950 },
{ @"η", 951 },
{ @"θ", 952 },
{ @"ι", 953 },
{ @"κ", 954 },
{ @"λ", 955 },
{ @"μ", 956 },
{ @"ν", 957 },
{ @"ξ", 958 },
{ @"ο", 959 },
{ @"π", 960 },
{ @"ρ", 961 },
{ @"ς", 962 },
{ @"σ", 963 },
{ @"τ", 964 },
{ @"υ", 965 },
{ @"φ", 966 },
{ @"χ", 967 },
{ @"ψ", 968 },
{ @"ω", 969 },
{ @"ϑ", 977 },
{ @"ϒ", 978 },
{ @"ϖ", 982 },
// A.2.2. Special characters cont'd
{ @" ", 8194 },
{ @" ", 8195 },
{ @" ", 8201 },
{ @"", 8204 },
{ @"", 8205 },
{ @"", 8206 },
{ @"", 8207 },
{ @"–", 8211 },
{ @"—", 8212 },
{ @"‘", 8216 },
{ @"’", 8217 },
{ @"‚", 8218 },
{ @"“", 8220 },
{ @"”", 8221 },
{ @"„", 8222 },
{ @"†", 8224 },
{ @"‡", 8225 },
// A.2.3. Symbols cont'd
{ @"•", 8226 },
{ @"…", 8230 },
// A.2.2. Special characters cont'd
{ @"‰", 8240 },
// A.2.3. Symbols cont'd
{ @"′", 8242 },
{ @"″", 8243 },
// A.2.2. Special characters cont'd
{ @"‹", 8249 },
{ @"›", 8250 },
// A.2.3. Symbols cont'd
{ @"‾", 8254 },
{ @"⁄", 8260 },
// A.2.2. Special characters cont'd
{ @"€", 8364 },
// A.2.3. Symbols cont'd
{ @"ℑ", 8465 },
{ @"℘", 8472 },
{ @"ℜ", 8476 },
{ @"™", 8482 },
{ @"ℵ", 8501 },
{ @"←", 8592 },
{ @"↑", 8593 },
{ @"→", 8594 },
{ @"↓", 8595 },
{ @"↔", 8596 },
{ @"↵", 8629 },
{ @"⇐", 8656 },
{ @"⇑", 8657 },
{ @"⇒", 8658 },
{ @"⇓", 8659 },
{ @"⇔", 8660 },
{ @"∀", 8704 },
{ @"∂", 8706 },
{ @"∃", 8707 },
{ @"∅", 8709 },
{ @"∇", 8711 },
{ @"∈", 8712 },
{ @"∉", 8713 },
{ @"∋", 8715 },
{ @"∏", 8719 },
{ @"∑", 8721 },
{ @"−", 8722 },
{ @"∗", 8727 },
{ @"√", 8730 },
{ @"∝", 8733 },
{ @"∞", 8734 },
{ @"∠", 8736 },
{ @"∧", 8743 },
{ @"∨", 8744 },
{ @"∩", 8745 },
{ @"∪", 8746 },
{ @"∫", 8747 },
{ @"∴", 8756 },
{ @"∼", 8764 },
{ @"≅", 8773 },
{ @"≈", 8776 },
{ @"≠", 8800 },
{ @"≡", 8801 },
{ @"≤", 8804 },
{ @"≥", 8805 },
{ @"⊂", 8834 },
{ @"⊃", 8835 },
{ @"⊄", 8836 },
{ @"⊆", 8838 },
{ @"⊇", 8839 },
{ @"⊕", 8853 },
{ @"⊗", 8855 },
{ @"⊥", 8869 },
{ @"⋅", 8901 },
{ @"⌈", 8968 },
{ @"⌉", 8969 },
{ @"⌊", 8970 },
{ @"⌋", 8971 },
{ @"〈", 9001 },
{ @"〉", 9002 },
{ @"◊", 9674 },
{ @"♠", 9824 },
{ @"♣", 9827 },
{ @"♥", 9829 },
{ @"♦", 9830 }
};
// Taken from http://www.w3.org/TR/xhtml1/dtds.html#a_dtd_Special_characters
// This is table A.2.2 Special Characters
static HTMLEscapeMap gUnicodeHTMLEscapeMap[] = {
// C0 Controls and Basic Latin
{ @""", 34 },
{ @"&", 38 },
{ @"'", 39 },
{ @"<", 60 },
{ @">", 62 },
// Latin Extended-A
{ @"Œ", 338 },
{ @"œ", 339 },
{ @"Š", 352 },
{ @"š", 353 },
{ @"Ÿ", 376 },
// Spacing Modifier Letters
{ @"ˆ", 710 },
{ @"˜", 732 },
// General Punctuation
{ @" ", 8194 },
{ @" ", 8195 },
{ @" ", 8201 },
{ @"", 8204 },
{ @"", 8205 },
{ @"", 8206 },
{ @"", 8207 },
{ @"–", 8211 },
{ @"—", 8212 },
{ @"‘", 8216 },
{ @"’", 8217 },
{ @"‚", 8218 },
{ @"“", 8220 },
{ @"”", 8221 },
{ @"„", 8222 },
{ @"†", 8224 },
{ @"‡", 8225 },
{ @"‰", 8240 },
{ @"‹", 8249 },
{ @"›", 8250 },
{ @"€", 8364 },
};
// Utility function for Bsearching table above
static int EscapeMapCompare(const void *ucharVoid, const void *mapVoid) {
const unichar *uchar = (const unichar*)ucharVoid;
const HTMLEscapeMap *map = (const HTMLEscapeMap*)mapVoid;
int val;
if (*uchar > map->uchar) {
val = 1;
} else if (*uchar < map->uchar) {
val = -1;
} else {
val = 0;
}
return val;
}
@implementation NSString (GTMNSStringHTMLAdditions)
- (NSString *)gtm_stringByEscapingHTMLUsingTable:(HTMLEscapeMap*)table
ofSize:(NSUInteger)size
escapingUnicode:(BOOL)escapeUnicode {
NSUInteger length = [self length];
if (!length) {
return self;
}
NSMutableString *finalString = [NSMutableString string];
NSMutableData *data2 = [NSMutableData dataWithCapacity:sizeof(unichar) * length];
// this block is common between GTMNSString+HTML and GTMNSString+XML but
// it's so short that it isn't really worth trying to share.
const unichar *buffer = CFStringGetCharactersPtr((CFStringRef)self);
if (!buffer) {
// We want this buffer to be autoreleased.
NSMutableData *data = [NSMutableData dataWithLength:length * sizeof(UniChar)];
if (!data) {
// COV_NF_START - Memory fail case
_GTMDevLog(@"couldn't alloc buffer");
return nil;
// COV_NF_END
}
[self getCharacters:[data mutableBytes]];
buffer = [data bytes];
}
if (!buffer || !data2) {
// COV_NF_START
_GTMDevLog(@"Unable to allocate buffer or data2");
return nil;
// COV_NF_END
}
unichar *buffer2 = (unichar *)[data2 mutableBytes];
NSUInteger buffer2Length = 0;
for (NSUInteger i = 0; i < length; ++i) {
HTMLEscapeMap *val = bsearch(&buffer[i], table,
size / sizeof(HTMLEscapeMap),
sizeof(HTMLEscapeMap), EscapeMapCompare);
if (val || (escapeUnicode && buffer[i] > 127)) {
if (buffer2Length) {
CFStringAppendCharacters((CFMutableStringRef)finalString,
buffer2,
buffer2Length);
buffer2Length = 0;
}
if (val) {
[finalString appendString:val->escapeSequence];
}
else {
_GTMDevAssert(escapeUnicode && buffer[i] > 127, @"Illegal Character");
[finalString appendFormat:@"%d;", buffer[i]];
}
} else {
buffer2[buffer2Length] = buffer[i];
buffer2Length += 1;
}
}
if (buffer2Length) {
CFStringAppendCharacters((CFMutableStringRef)finalString,
buffer2,
buffer2Length);
}
return finalString;
}
- (NSString *)gtm_stringByEscapingForHTML {
return [self gtm_stringByEscapingHTMLUsingTable:gUnicodeHTMLEscapeMap
ofSize:sizeof(gUnicodeHTMLEscapeMap)
escapingUnicode:NO];
} // gtm_stringByEscapingHTML
- (NSString *)gtm_stringByEscapingForAsciiHTML {
return [self gtm_stringByEscapingHTMLUsingTable:gAsciiHTMLEscapeMap
ofSize:sizeof(gAsciiHTMLEscapeMap)
escapingUnicode:YES];
} // gtm_stringByEscapingAsciiHTML
- (NSString *)gtm_stringByUnescapingFromHTML {
NSRange range = NSMakeRange(0, [self length]);
NSRange subrange = [self rangeOfString:@"&" options:NSBackwardsSearch range:range];
// if no ampersands, we've got a quick way out
if (subrange.length == 0) return self;
NSMutableString *finalString = [NSMutableString stringWithString:self];
do {
NSRange semiColonRange = NSMakeRange(subrange.location, NSMaxRange(range) - subrange.location);
semiColonRange = [self rangeOfString:@";" options:0 range:semiColonRange];
range = NSMakeRange(0, subrange.location);
// if we don't find a semicolon in the range, we don't have a sequence
if (semiColonRange.location == NSNotFound) {
continue;
}
NSRange escapeRange = NSMakeRange(subrange.location, semiColonRange.location - subrange.location + 1);
NSString *escapeString = [self substringWithRange:escapeRange];
NSUInteger length = [escapeString length];
// a squence must be longer than 3 (<) and less than 11 (ϑ)
if (length > 3 && length < 11) {
if ([escapeString characterAtIndex:1] == '#') {
unichar char2 = [escapeString characterAtIndex:2];
if (char2 == 'x' || char2 == 'X') {
// Hex escape squences £
NSString *hexSequence = [escapeString substringWithRange:NSMakeRange(3, length - 4)];
NSScanner *scanner = [NSScanner scannerWithString:hexSequence];
unsigned value;
if ([scanner scanHexInt:&value] &&
value < USHRT_MAX &&
value > 0
&& [scanner scanLocation] == length - 4) {
unichar uchar = value;
NSString *charString = [NSString stringWithCharacters:&uchar length:1];
[finalString replaceCharactersInRange:escapeRange withString:charString];
}
} else {
// Decimal Sequences {
NSString *numberSequence = [escapeString substringWithRange:NSMakeRange(2, length - 3)];
NSScanner *scanner = [NSScanner scannerWithString:numberSequence];
int value;
if ([scanner scanInt:&value] &&
value < USHRT_MAX &&
value > 0
&& [scanner scanLocation] == length - 3) {
unichar uchar = value;
NSString *charString = [NSString stringWithCharacters:&uchar length:1];
[finalString replaceCharactersInRange:escapeRange withString:charString];
}
}
} else {
// "standard" sequences
for (unsigned i = 0; i < sizeof(gAsciiHTMLEscapeMap) / sizeof(HTMLEscapeMap); ++i) {
if ([escapeString isEqualToString:gAsciiHTMLEscapeMap[i].escapeSequence]) {
[finalString replaceCharactersInRange:escapeRange withString:[NSString stringWithCharacters:&gAsciiHTMLEscapeMap[i].uchar length:1]];
break;
}
}
}
}
} while ((subrange = [self rangeOfString:@"&" options:NSBackwardsSearch range:range]).length != 0);
return finalString;
} // gtm_stringByUnescapingHTML
@end
================================================
FILE: AePubReader/Classes/NSString+HTML.h
================================================
//
// NSString+HTML.h
// MWFeedParser
//
// Copyright (c) 2010 Michael Waterfall
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// 1. The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// 2. This Software cannot be used to archive or collect data such as (but not
// limited to) that of events, news, experiences and activities, for the
// purpose of any concept relating to diary/journal keeping.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#import
// Dependant upon GTMNSString+HTML
@interface NSString (HTML)
// Instance Methods
- (NSString *)stringByConvertingHTMLToPlainText;
- (NSString *)stringByDecodingHTMLEntities;
- (NSString *)stringByEncodingHTMLEntities;
- (NSString *)stringWithNewLinesAsBRs;
- (NSString *)stringByRemovingNewLinesAndWhitespace;
// DEPRECIATED - Please use NSString stringByConvertingHTMLToPlainText
- (NSString *)stringByStrippingTags;
@end
================================================
FILE: AePubReader/Classes/NSString+HTML.m
================================================
//
// NSString+HTML.m
// MWFeedParser
//
// Copyright (c) 2010 Michael Waterfall
//
// Permission is hereby granted, free of charge, to any person obtaining a copy
// of this software and associated documentation files (the "Software"), to deal
// in the Software without restriction, including without limitation the rights
// to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the Software is
// furnished to do so, subject to the following conditions:
//
// 1. The above copyright notice and this permission notice shall be included
// in all copies or substantial portions of the Software.
//
// 2. This Software cannot be used to archive or collect data such as (but not
// limited to) that of events, news, experiences and activities, for the
// purpose of any concept relating to diary/journal keeping.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
// IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
// FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
// AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
// LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
// OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
// THE SOFTWARE.
//
#import "NSString+HTML.h"
#import "GTMNSString+HTML.h"
@implementation NSString (HTML)
#pragma mark -
#pragma mark Class Methods
#pragma mark -
#pragma mark Instance Methods
// Strip HTML tags
- (NSString *)stringByConvertingHTMLToPlainText {
// Pool
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// Character sets
NSCharacterSet *stopCharacters = [NSCharacterSet characterSetWithCharactersInString:[NSString stringWithFormat:@"< \t\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]];
NSCharacterSet *newLineAndWhitespaceCharacters = [NSCharacterSet characterSetWithCharactersInString:[NSString stringWithFormat:@" \t\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]];
NSCharacterSet *tagNameCharacters = [NSCharacterSet characterSetWithCharactersInString:@"abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"]; /**/
// Scan and find all tags
NSMutableString *result = [[NSMutableString alloc] initWithCapacity:self.length];
NSScanner *scanner = [[NSScanner alloc] initWithString:self];
[scanner setCharactersToBeSkipped:nil];
[scanner setCaseSensitive:YES];
NSString *str = nil, *tagName = nil;
BOOL dontReplaceTagWithSpace = NO;
do {
// Scan up to the start of a tag or whitespace
if ([scanner scanUpToCharactersFromSet:stopCharacters intoString:&str]) {
[result appendString:str];
str = nil; // reset
}
// Check if we've stopped at a tag/comment or whitespace
if ([scanner scanString:@"<" intoString:NULL]) {
// Stopped at a comment or tag
if ([scanner scanString:@"!--" intoString:NULL]) {
// Comment
[scanner scanUpToString:@"-->" intoString:NULL];
[scanner scanString:@"-->" intoString:NULL];
} else {
// Tag - remove and replace with space unless it's
// a closing inline tag then dont replace with a space
if ([scanner scanString:@"/" intoString:NULL]) {
// Closing tag - replace with space unless it's inline
tagName = nil; dontReplaceTagWithSpace = NO;
if ([scanner scanCharactersFromSet:tagNameCharacters intoString:&tagName]) {
tagName = [tagName lowercaseString];
dontReplaceTagWithSpace = ([tagName isEqualToString:@"a"] ||
[tagName isEqualToString:@"b"] ||
[tagName isEqualToString:@"i"] ||
[tagName isEqualToString:@"q"] ||
[tagName isEqualToString:@"span"] ||
[tagName isEqualToString:@"em"] ||
[tagName isEqualToString:@"strong"] ||
[tagName isEqualToString:@"cite"] ||
[tagName isEqualToString:@"abbr"] ||
[tagName isEqualToString:@"acronym"] ||
[tagName isEqualToString:@"label"]);
}
// Replace tag with string unless it was an inline
if (!dontReplaceTagWithSpace && result.length > 0 && ![scanner isAtEnd]) [result appendString:@" "];
}
// Scan past tag
[scanner scanUpToString:@">" intoString:NULL];
[scanner scanString:@">" intoString:NULL];
}
} else {
// Stopped at whitespace - replace all whitespace and newlines with a space
if ([scanner scanCharactersFromSet:newLineAndWhitespaceCharacters intoString:NULL]) {
if (result.length > 0 && ![scanner isAtEnd]) [result appendString:@" "]; // Dont append space to beginning or end of result
}
}
} while (![scanner isAtEnd]);
// Cleanup
[scanner release];
// Decode HTML entities and return
NSString *retString = [[result stringByDecodingHTMLEntities] retain];
[result release];
// Drain
[pool drain];
// Return
return [retString autorelease];
}
// Decode all HTML entities using GTM
- (NSString *)stringByDecodingHTMLEntities {
// gtm_stringByUnescapingFromHTML can return self so create new string ;)
return [NSString stringWithString:[self gtm_stringByUnescapingFromHTML]];
}
// Encode all HTML entities using GTM
- (NSString *)stringByEncodingHTMLEntities {
// gtm_stringByUnescapingFromHTML can return self so create new string ;)
return [NSString stringWithString:[self gtm_stringByEscapingForAsciiHTML]];
}
// Replace newlines with
tags
- (NSString *)stringWithNewLinesAsBRs {
// Pool
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// Strange New lines:
// Next Line, U+0085
// Form Feed, U+000C
// Line Separator, U+2028
// Paragraph Separator, U+2029
// Scanner
NSScanner *scanner = [[NSScanner alloc] initWithString:self];
[scanner setCharactersToBeSkipped:nil];
NSMutableString *result = [[NSMutableString alloc] init];
NSString *temp;
NSCharacterSet *newLineCharacters = [NSCharacterSet characterSetWithCharactersInString:
[NSString stringWithFormat:@"\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]];
// Scan
do {
// Get non new line characters
temp = nil;
[scanner scanUpToCharactersFromSet:newLineCharacters intoString:&temp];
if (temp) [result appendString:temp];
temp = nil;
// Add
s
if ([scanner scanString:@"\r\n" intoString:nil]) {
// Combine \r\n into just 1
[result appendString:@"
"];
} else if ([scanner scanCharactersFromSet:newLineCharacters intoString:&temp]) {
// Scan other new line characters and add
s
if (temp) {
for (int i = 0; i < temp.length; i++) {
[result appendString:@"
"];
}
}
}
} while (![scanner isAtEnd]);
// Cleanup & return
[scanner release];
NSString *retString = [[NSString stringWithString:result] retain];
[result release];
// Drain
[pool drain];
// Return
return [retString autorelease];
}
// Remove newlines and white space from strong
- (NSString *)stringByRemovingNewLinesAndWhitespace {
// Pool
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// Strange New lines:
// Next Line, U+0085
// Form Feed, U+000C
// Line Separator, U+2028
// Paragraph Separator, U+2029
// Scanner
NSScanner *scanner = [[NSScanner alloc] initWithString:self];
[scanner setCharactersToBeSkipped:nil];
NSMutableString *result = [[NSMutableString alloc] init];
NSString *temp;
NSCharacterSet *newLineAndWhitespaceCharacters = [NSCharacterSet characterSetWithCharactersInString:
[NSString stringWithFormat:@" \t\n\r%C%C%C%C", 0x0085, 0x000C, 0x2028, 0x2029]];
// Scan
while (![scanner isAtEnd]) {
// Get non new line or whitespace characters
temp = nil;
[scanner scanUpToCharactersFromSet:newLineAndWhitespaceCharacters intoString:&temp];
if (temp) [result appendString:temp];
// Replace with a space
if ([scanner scanCharactersFromSet:newLineAndWhitespaceCharacters intoString:NULL]) {
if (result.length > 0 && ![scanner isAtEnd]) // Dont append space to beginning or end of result
[result appendString:@" "];
}
}
// Cleanup
[scanner release];
// Return
NSString *retString = [[NSString stringWithString:result] retain];
[result release];
// Drain
[pool drain];
// Return
return [retString autorelease];
}
// Strip HTML tags
// DEPRECIATED - Please use NSString stringByConvertingHTMLToPlainText
- (NSString *)stringByStrippingTags {
// Pool
NSAutoreleasePool *pool = [[NSAutoreleasePool alloc] init];
// Find first & and short-cut if we can
NSUInteger ampIndex = [self rangeOfString:@"<" options:NSLiteralSearch].location;
if (ampIndex == NSNotFound) {
return [NSString stringWithString:self]; // return copy of string as no tags found
}
// Scan and find all tags
NSScanner *scanner = [NSScanner scannerWithString:self];
[scanner setCharactersToBeSkipped:nil];
NSMutableSet *tags = [[NSMutableSet alloc] init];
NSString *tag;
do {
// Scan up to <
tag = nil;
[scanner scanUpToString:@"<" intoString:NULL];
[scanner scanUpToString:@">" intoString:&tag];
// Add to set
if (tag) {
NSString *t = [[NSString alloc] initWithFormat:@"%@>", tag];
[tags addObject:t];
[t release];
}
} while (![scanner isAtEnd]);
// Strings
NSMutableString *result = [[NSMutableString alloc] initWithString:self];
NSString *finalString;
// Replace tags
NSString *replacement;
for (NSString *t in tags) {
// Replace tag with space unless it's an inline element
replacement = @" ";
if ([t isEqualToString:@""] ||
[t isEqualToString:@""] ||
[t isEqualToString:@""] ||
[t isEqualToString:@""] ||
[t isEqualToString:@""] ||
[t isEqualToString:@""] ||
[t isEqualToString:@""] ||
[t isEqualToString:@""]) {
replacement = @"";
}
// Replace
[result replaceOccurrencesOfString:t
withString:replacement
options:NSLiteralSearch
range:NSMakeRange(0, result.length)];
}
// Remove multi-spaces and line breaks
finalString = [[result stringByRemovingNewLinesAndWhitespace] retain];
// Cleanup
[result release];
[tags release];
// Drain
[pool drain];
// Return
return [finalString autorelease];
}
@end
================================================
FILE: AePubReader/Classes/SearchResult.h
================================================
//
// SearchResult.h
// AePubReader
//
// Created by Federico Frappi on 05/05/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import
@interface SearchResult : NSObject {
int chapterIndex;
int hitIndex;
int pageIndex;
NSString* neighboringText;
NSString* originatingQuery;
}
@property int chapterIndex, pageIndex, hitIndex;
@property (nonatomic, retain) NSString *neighboringText, *originatingQuery;
- initWithChapterIndex:(int)theChapterIndex pageIndex:(int)thePageIndex hitIndex:(int)theHitIndex neighboringText:(NSString*)theNeighboringText originatingQuery:(NSString*)theOriginatingQuery;
@end
================================================
FILE: AePubReader/Classes/SearchResult.m
================================================
//
// SearchResult.m
// AePubReader
//
// Created by Federico Frappi on 05/05/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "SearchResult.h"
@implementation SearchResult
@synthesize pageIndex, chapterIndex, neighboringText, hitIndex, originatingQuery;
- initWithChapterIndex:(int)theChapterIndex pageIndex:(int)thePageIndex hitIndex:(int)theHitIndex neighboringText:(NSString*)theNeighboringText originatingQuery:(NSString*)theOriginatingQuery{
if((self=[super init])){
chapterIndex = theChapterIndex;
pageIndex = thePageIndex;
hitIndex = theHitIndex;
self.neighboringText = [theNeighboringText stringByReplacingPercentEscapesUsingEncoding:NSUTF8StringEncoding];
self.originatingQuery = theOriginatingQuery;
}
return self;
}
- (void)dealloc {
[neighboringText release];
[originatingQuery release];
[super dealloc];
}
@end
================================================
FILE: AePubReader/Classes/SearchResultsViewController.h
================================================
//
// SearchResultsViewController.h
// AePubReader
//
// Created by Federico Frappi on 05/05/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import
#import "EPubViewController.h"
@interface SearchResultsViewController : UIViewController {
UITableView* resultsTableView;
NSMutableArray* results;
EPubViewController* epubViewController;
int currentChapterIndex;
NSString* currentQuery;
}
@property (nonatomic, retain) IBOutlet UITableView* resultsTableView;
@property (nonatomic, assign) EPubViewController* epubViewController;
@property (nonatomic, retain) NSMutableArray* results;
@property (nonatomic, retain) NSString* currentQuery;
- (void) searchString:(NSString*)query;
@end
================================================
FILE: AePubReader/Classes/SearchResultsViewController.m
================================================
//
// SearchResultsViewController.m
// AePubReader
//
// Created by Federico Frappi on 05/05/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import "SearchResultsViewController.h"
#import "SearchResult.h"
#import "UIWebView+SearchWebView.h"
@interface SearchResultsViewController()
- (void) searchString:(NSString *)query inChapterAtIndex:(int)index;
@end
@implementation SearchResultsViewController
@synthesize resultsTableView, epubViewController, currentQuery, results;
- (UITableViewCell *)tableView:(UITableView *)tableView cellForRowAtIndexPath:(NSIndexPath *)indexPath{
static NSString *CellIdentifier = @"Cell";
UITableViewCell *cell = [tableView dequeueReusableCellWithIdentifier:CellIdentifier];
if (cell == nil) {
cell = [[[UITableViewCell alloc] initWithStyle:UITableViewCellStyleSubtitle reuseIdentifier:CellIdentifier] autorelease];
}
cell.textLabel.adjustsFontSizeToFitWidth = YES;
SearchResult* hit = (SearchResult*)[results objectAtIndex:[indexPath row]];
cell.textLabel.text = [NSString stringWithFormat:@"...%@...", hit.neighboringText];
cell.detailTextLabel.text = [NSString stringWithFormat:@"Chapter %d - page %d", hit.chapterIndex, hit.pageIndex+1];
return cell;
}
- (NSInteger)tableView:(UITableView *)tableView numberOfRowsInSection:(NSInteger)section{
return [results count];
}
- (void)tableView:(UITableView *)tableView didSelectRowAtIndexPath:(NSIndexPath *)indexPath{
SearchResult* hit = (SearchResult*)[results objectAtIndex:[indexPath row]];
[epubViewController loadSpine:hit.chapterIndex atPageIndex:hit.pageIndex highlightSearchResult:hit];
}
- (void) searchString:(NSString*)query{
self.results = [[NSMutableArray alloc] init];
[resultsTableView reloadData];
self.currentQuery=query;
[self searchString:query inChapterAtIndex:0];
}
- (void) searchString:(NSString *)query inChapterAtIndex:(int)index{
currentChapterIndex = index;
Chapter* chapter = [epubViewController.loadedEpub.spineArray objectAtIndex:index];
NSRange range = NSMakeRange(0, chapter.text.length);
range = [chapter.text rangeOfString:query options:NSCaseInsensitiveSearch range:range locale:nil];
int hitCount=0;
while (range.location != NSNotFound) {
range = NSMakeRange(range.location+range.length, chapter.text.length-(range.location+range.length));
range = [chapter.text rangeOfString:query options:NSCaseInsensitiveSearch range:range locale:nil];
hitCount++;
}
if(hitCount!=0){
UIWebView* webView = [[UIWebView alloc] initWithFrame:chapter.windowSize];
[webView setDelegate:self];
NSURLRequest* urlRequest = [NSURLRequest requestWithURL:[NSURL fileURLWithPath:chapter.spinePath]];
[webView loadRequest:urlRequest];
} else {
if((currentChapterIndex+1)<[epubViewController.loadedEpub.spineArray count]){
[self searchString:currentQuery inChapterAtIndex:(currentChapterIndex+1)];
} else {
epubViewController.searching = NO;
}
}
}
- (void)webView:(UIWebView *)webView didFailLoadWithError:(NSError *)error{
NSLog(@"%@", error);
[webView release];
}
- (void) webViewDidFinishLoad:(UIWebView*)webView{
NSString *varMySheet = @"var mySheet = document.styleSheets[0];";
NSString *addCSSRule = @"function addCSSRule(selector, newRule) {"
"if (mySheet.addRule) {"
"mySheet.addRule(selector, newRule);" // For Internet Explorer
"} else {"
"ruleIndex = mySheet.cssRules.length;"
"mySheet.insertRule(selector + '{' + newRule + ';}', ruleIndex);" // For Firefox, Chrome, etc.
"}"
"}";
// NSLog(@"w:%f h:%f", webView.bounds.size.width, webView.bounds.size.height);
NSString *insertRule1 = [NSString stringWithFormat:@"addCSSRule('html', 'padding: 0px; height: %fpx; -webkit-column-gap: 0px; -webkit-column-width: %fpx;')", webView.frame.size.height, webView.frame.size.width];
NSString *insertRule2 = [NSString stringWithFormat:@"addCSSRule('p', 'text-align: justify;')"];
NSString *setTextSizeRule = [NSString stringWithFormat:@"addCSSRule('body', '-webkit-text-size-adjust: %d%%;')",[[epubViewController.loadedEpub.spineArray objectAtIndex:currentChapterIndex] fontPercentSize]];
[webView stringByEvaluatingJavaScriptFromString:varMySheet];
[webView stringByEvaluatingJavaScriptFromString:addCSSRule];
[webView stringByEvaluatingJavaScriptFromString:insertRule1];
[webView stringByEvaluatingJavaScriptFromString:insertRule2];
[webView stringByEvaluatingJavaScriptFromString:setTextSizeRule];
[webView highlightAllOccurencesOfString:currentQuery];
NSString* foundHits = [webView stringByEvaluatingJavaScriptFromString:@"results"];
// NSLog(@"%@", foundHits);
NSMutableArray* objects = [[NSMutableArray alloc] init];
NSArray* stringObjects = [foundHits componentsSeparatedByString:@";"];
for(int i=0; i<[stringObjects count]; i++){
NSArray* strObj = [[stringObjects objectAtIndex:i] componentsSeparatedByString:@","];
if([strObj count]==3){
[objects addObject:strObj];
}
}
NSArray* orderedRes = [objects sortedArrayUsingComparator:^(id obj1, id obj2){
int x1 = [[obj1 objectAtIndex:0] intValue];
int x2 = [[obj2 objectAtIndex:0] intValue];
int y1 = [[obj1 objectAtIndex:1] intValue];
int y2 = [[obj2 objectAtIndex:1] intValue];
if(y1y2){
return NSOrderedDescending;
} else {
if(x1x2){
return NSOrderedDescending;
} else {
return NSOrderedSame;
}
}
}];
[objects release];
for(int i=0; i<[orderedRes count]; i++){
NSArray* currObj = [orderedRes objectAtIndex:i];
SearchResult* searchRes = [[SearchResult alloc] initWithChapterIndex:currentChapterIndex pageIndex:([[currObj objectAtIndex:1] intValue]/webView.bounds.size.height) hitIndex:0 neighboringText:[webView stringByEvaluatingJavaScriptFromString:[NSString stringWithFormat:@"unescape('%@')", [currObj objectAtIndex:2]]] originatingQuery:currentQuery];
[results addObject:searchRes];
[searchRes release];
}
[webView dealloc];
[resultsTableView performSelectorOnMainThread:@selector(reloadData) withObject:nil waitUntilDone:NO];
if((currentChapterIndex+1)<[epubViewController.loadedEpub.spineArray count]){
[self searchString:currentQuery inChapterAtIndex:(currentChapterIndex+1)];
} else {
epubViewController.searching = NO;
}
}
- (id)initWithNibName:(NSString *)nibNameOrNil bundle:(NSBundle *)nibBundleOrNil
{
self = [super initWithNibName:nibNameOrNil bundle:nibBundleOrNil];
if (self) {
// Custom initialization
}
return self;
}
- (void)dealloc
{
self.resultsTableView = nil;
[results release];
[currentQuery release];
[super dealloc];
}
- (void)didReceiveMemoryWarning
{
// Releases the view if it doesn't have a superview.
[super didReceiveMemoryWarning];
// Release any cached data, images, etc that aren't in use.
}
#pragma mark - View lifecycle
- (void)viewDidLoad
{
[super viewDidLoad];
// Do any additional setup after loading the view from its nib.
}
- (void)viewDidUnload
{
[super viewDidUnload];
// Release any retained subviews of the main view.
self.resultsTableView = nil;
}
- (BOOL)shouldAutorotateToInterfaceOrientation:(UIInterfaceOrientation)interfaceOrientation
{
// Return YES for supported orientations
return (interfaceOrientation == UIInterfaceOrientationPortrait);
}
@end
================================================
FILE: AePubReader/Classes/SearchResultsViewController.xib
================================================
1056
10J869
1306
1038.35
461.00
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
301
YES
IBProxyObject
IBUIView
IBUITableView
YES
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
YES
YES
YES
IBFilesOwner
IBCocoaTouchFramework
IBFirstResponder
IBCocoaTouchFramework
274
YES
274
{407, 446}
3
MQA
YES
IBCocoaTouchFramework
YES
1
0
YES
60
22
22
{407, 446}
3
MQA
2
IBCocoaTouchFramework
YES
view
3
dataSource
5
delegate
6
resultsTableView
7
YES
0
1
YES
-1
File's Owner
-2
4
YES
YES
-1.CustomClassName
-2.CustomClassName
1.IBEditorWindowLastContentRect
1.IBPluginDependency
4.IBPluginDependency
YES
SearchResultsViewController
UIResponder
{{556, 412}, {320, 480}}
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
YES
YES
13
YES
SearchResultCell
UITableViewCell
YES
YES
foundTextLabel
positionInfoLabel
YES
UILabel
UILabel
YES
YES
foundTextLabel
positionInfoLabel
YES
foundTextLabel
UILabel
positionInfoLabel
UILabel
IBProjectSource
./Classes/SearchResultCell.h
SearchResultsViewController
UIViewController
YES
YES
resultsTableView
tblCell
YES
UITableView
SearchResultCell
YES
YES
resultsTableView
tblCell
YES
resultsTableView
UITableView
tblCell
SearchResultCell
IBProjectSource
./Classes/SearchResultsViewController.h
0
IBCocoaTouchFramework
com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
YES
3
301
================================================
FILE: AePubReader/Classes/UIWebView+SearchWebView.h
================================================
#import
@interface UIWebView (SearchWebView)
- (NSInteger)highlightAllOccurencesOfString:(NSString*)str;
- (void)removeAllHighlights;
@end
================================================
FILE: AePubReader/Classes/UIWebView+SearchWebView.m
================================================
@implementation UIWebView (SearchWebView)
- (NSInteger)highlightAllOccurencesOfString:(NSString*)str {
NSString *path = [[NSBundle mainBundle] pathForResource:@"SearchWebView" ofType:@"js"];
NSString *jsCode = [NSString stringWithContentsOfFile:path encoding:NSUTF8StringEncoding error:nil];
[self stringByEvaluatingJavaScriptFromString:jsCode];
NSString *startSearch = [NSString stringWithFormat:@"MyApp_HighlightAllOccurencesOfString('%@');",str];
[self stringByEvaluatingJavaScriptFromString:startSearch];
// NSLog(@"%@", [self stringByEvaluatingJavaScriptFromString:@"console"]);
return [[self stringByEvaluatingJavaScriptFromString:@"MyApp_SearchResultCount;"] intValue];
}
- (void)removeAllHighlights {
[self stringByEvaluatingJavaScriptFromString:@"MyApp_RemoveAllHighlights()"];
}
@end
================================================
FILE: AePubReader/Classes/ZipArchive.h
================================================
//
// ZipArchive.h
//
//
// Created by aish on 08-9-11.
// acsolu@gmail.com
// Copyright 2008 Inc. All rights reserved.
//
// History:
// 09-11-2008 version 1.0 release
// 10-18-2009 version 1.1 support password protected zip files
// 10-21-2009 version 1.2 fix date bug
#import
#include "minizip/zip.h"
#include "minizip/unzip.h"
@protocol ZipArchiveDelegate
@optional
-(void) ErrorMessage:(NSString*) msg;
-(BOOL) OverWriteOperation:(NSString*) file;
@end
@interface ZipArchive : NSObject {
@private
zipFile _zipFile;
unzFile _unzFile;
NSString* _password;
id _delegate;
}
@property (nonatomic, retain) id delegate;
-(BOOL) CreateZipFile2:(NSString*) zipFile;
-(BOOL) CreateZipFile2:(NSString*) zipFile Password:(NSString*) password;
-(BOOL) addFileToZip:(NSString*) file newname:(NSString*) newname;
-(BOOL) CloseZipFile2;
-(BOOL) UnzipOpenFile:(NSString*) zipFile;
-(BOOL) UnzipOpenFile:(NSString*) zipFile Password:(NSString*) password;
-(BOOL) UnzipFileTo:(NSString*) path overWrite:(BOOL) overwrite;
-(BOOL) UnzipCloseFile;
@end
================================================
FILE: AePubReader/Classes/ZipArchive.mm
================================================
//
// ZipArchive.mm
//
//
// Created by aish on 08-9-11.
// acsolu@gmail.com
// Copyright 2008 Inc. All rights reserved.
//
#import "ZipArchive.h"
#import "zlib.h"
#import "zconf.h"
@interface ZipArchive (Private)
-(void) OutputErrorMessage:(NSString*) msg;
-(BOOL) OverWrite:(NSString*) file;
-(NSDate*) Date1980;
@end
@implementation ZipArchive
@synthesize delegate = _delegate;
-(id) init
{
if( self=[super init] )
{
_zipFile = NULL ;
}
return self;
}
-(void) dealloc
{
[self CloseZipFile2];
[super dealloc];
}
-(BOOL) CreateZipFile2:(NSString*) zipFile
{
_zipFile = zipOpen( (const char*)[zipFile UTF8String], 0 );
if( !_zipFile )
return NO;
return YES;
}
-(BOOL) CreateZipFile2:(NSString*) zipFile Password:(NSString*) password
{
_password = password;
return [self CreateZipFile2:zipFile];
}
-(BOOL) addFileToZip:(NSString*) file newname:(NSString*) newname;
{
if( !_zipFile )
return NO;
// tm_zip filetime;
time_t current;
time( ¤t );
zip_fileinfo zipInfo = {0};
// zipInfo.dosDate = (unsigned long) current;
NSDictionary* attr = [[NSFileManager defaultManager] fileAttributesAtPath:file traverseLink:YES];
if( attr )
{
NSDate* fileDate = (NSDate*)[attr objectForKey:NSFileModificationDate];
if( fileDate )
{
// some application does use dosDate, but tmz_date instead
// zipInfo.dosDate = [fileDate timeIntervalSinceDate:[self Date1980] ];
NSCalendar* currCalendar = [NSCalendar currentCalendar];
uint flags = NSYearCalendarUnit | NSMonthCalendarUnit | NSDayCalendarUnit |
NSHourCalendarUnit | NSMinuteCalendarUnit | NSSecondCalendarUnit ;
NSDateComponents* dc = [currCalendar components:flags fromDate:fileDate];
zipInfo.tmz_date.tm_sec = [dc second];
zipInfo.tmz_date.tm_min = [dc minute];
zipInfo.tmz_date.tm_hour = [dc hour];
zipInfo.tmz_date.tm_mday = [dc day];
zipInfo.tmz_date.tm_mon = [dc month] - 1;
zipInfo.tmz_date.tm_year = [dc year];
}
}
int ret ;
NSData* data = nil;
if( [_password length] == 0 )
{
ret = zipOpenNewFileInZip( _zipFile,
(const char*) [newname UTF8String],
&zipInfo,
NULL,0,
NULL,0,
NULL,//comment
Z_DEFLATED,
Z_DEFAULT_COMPRESSION );
}
else
{
data = [ NSData dataWithContentsOfFile:file];
uLong crcValue = crc32( 0L,NULL, 0L );
crcValue = crc32( crcValue, (const Bytef*)[data bytes], [data length] );
ret = zipOpenNewFileInZip3( _zipFile,
(const char*) [newname UTF8String],
&zipInfo,
NULL,0,
NULL,0,
NULL,//comment
Z_DEFLATED,
Z_DEFAULT_COMPRESSION,
0,
15,
8,
Z_DEFAULT_STRATEGY,
[_password cStringUsingEncoding:NSASCIIStringEncoding],
crcValue );
}
if( ret!=Z_OK )
{
return NO;
}
if( data==nil )
{
data = [ NSData dataWithContentsOfFile:file];
}
unsigned int dataLen = [data length];
ret = zipWriteInFileInZip( _zipFile, (const void*)[data bytes], dataLen);
if( ret!=Z_OK )
{
return NO;
}
ret = zipCloseFileInZip( _zipFile );
if( ret!=Z_OK )
return NO;
return YES;
}
-(BOOL) CloseZipFile2
{
_password = nil;
if( _zipFile==NULL )
return NO;
BOOL ret = zipClose( _zipFile,NULL )==Z_OK?YES:NO;
_zipFile = NULL;
return ret;
}
-(BOOL) UnzipOpenFile:(NSString*) zipFile
{
_unzFile = unzOpen( (const char*)[zipFile UTF8String] );
if( _unzFile )
{
unz_global_info globalInfo = {0};
if( unzGetGlobalInfo(_unzFile, &globalInfo )==UNZ_OK )
{
NSLog([NSString stringWithFormat:@"%d entries in the zip file",globalInfo.number_entry] );
}
}
return _unzFile!=NULL;
}
-(BOOL) UnzipOpenFile:(NSString*) zipFile Password:(NSString*) password
{
_password = password;
return [self UnzipOpenFile:zipFile];
}
-(BOOL) UnzipFileTo:(NSString*) path overWrite:(BOOL) overwrite
{
BOOL success = YES;
int ret = unzGoToFirstFile( _unzFile );
unsigned char buffer[4096] = {0};
NSFileManager* fman = [NSFileManager defaultManager];
if( ret!=UNZ_OK )
{
[self OutputErrorMessage:@"Failed"];
}
do{
if( [_password length]==0 )
ret = unzOpenCurrentFile( _unzFile );
else
ret = unzOpenCurrentFilePassword( _unzFile, [_password cStringUsingEncoding:NSASCIIStringEncoding] );
if( ret!=UNZ_OK )
{
[self OutputErrorMessage:@"Error occurs"];
success = NO;
break;
}
// reading data and write to file
int read ;
unz_file_info fileInfo ={0};
ret = unzGetCurrentFileInfo(_unzFile, &fileInfo, NULL, 0, NULL, 0, NULL, 0);
if( ret!=UNZ_OK )
{
[self OutputErrorMessage:@"Error occurs while getting file info"];
success = NO;
unzCloseCurrentFile( _unzFile );
break;
}
char* filename = (char*) malloc( fileInfo.size_filename +1 );
unzGetCurrentFileInfo(_unzFile, &fileInfo, filename, fileInfo.size_filename + 1, NULL, 0, NULL, 0);
filename[fileInfo.size_filename] = '\0';
// check if it contains directory
NSString * strPath = [NSString stringWithCString:filename];
BOOL isDirectory = NO;
if( filename[fileInfo.size_filename-1]=='/' || filename[fileInfo.size_filename-1]=='\\')
isDirectory = YES;
free( filename );
if( [strPath rangeOfCharacterFromSet:[NSCharacterSet characterSetWithCharactersInString:@"/\\"]].location!=NSNotFound )
{// contains a path
strPath = [strPath stringByReplacingOccurrencesOfString:@"\\" withString:@"/"];
}
NSString* fullPath = [path stringByAppendingPathComponent:strPath];
if( isDirectory )
[fman createDirectoryAtPath:fullPath withIntermediateDirectories:YES attributes:nil error:nil];
else
[fman createDirectoryAtPath:[fullPath stringByDeletingLastPathComponent] withIntermediateDirectories:YES attributes:nil error:nil];
if( [fman fileExistsAtPath:fullPath] && !isDirectory && !overwrite )
{
if( ![self OverWrite:fullPath] )
{
unzCloseCurrentFile( _unzFile );
ret = unzGoToNextFile( _unzFile );
continue;
}
}
FILE* fp = fopen( (const char*)[fullPath UTF8String], "wb");
while( fp )
{
read=unzReadCurrentFile(_unzFile, buffer, 4096);
if( read > 0 )
{
fwrite(buffer, read, 1, fp );
}
else if( read<0 )
{
[self OutputErrorMessage:@"Failed to reading zip file"];
break;
}
else
break;
}
if( fp )
{
fclose( fp );
// set the orignal datetime property
NSDate* orgDate = nil;
//{{ thanks to brad.eaton for the solution
NSDateComponents *dc = [[NSDateComponents alloc] init];
dc.second = fileInfo.tmu_date.tm_sec;
dc.minute = fileInfo.tmu_date.tm_min;
dc.hour = fileInfo.tmu_date.tm_hour;
dc.day = fileInfo.tmu_date.tm_mday;
dc.month = fileInfo.tmu_date.tm_mon+1;
dc.year = fileInfo.tmu_date.tm_year;
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
orgDate = [gregorian dateFromComponents:dc] ;
[dc release];
[gregorian release];
//}}
NSDictionary* attr = [NSDictionary dictionaryWithObject:orgDate forKey:NSFileModificationDate]; //[[NSFileManager defaultManager] fileAttributesAtPath:fullPath traverseLink:YES];
if( attr )
{
// [attr setValue:orgDate forKey:NSFileCreationDate];
if( ![[NSFileManager defaultManager] setAttributes:attr ofItemAtPath:fullPath error:nil] )
{
// cann't set attributes
NSLog(@"Failed to set attributes");
}
}
}
unzCloseCurrentFile( _unzFile );
ret = unzGoToNextFile( _unzFile );
}while( ret==UNZ_OK && UNZ_OK!=UNZ_END_OF_LIST_OF_FILE );
return success;
}
-(BOOL) UnzipCloseFile
{
_password = nil;
if( _unzFile )
return unzClose( _unzFile )==UNZ_OK;
return YES;
}
#pragma mark wrapper for delegate
-(void) OutputErrorMessage:(NSString*) msg
{
if( _delegate && [_delegate respondsToSelector:@selector(ErrorMessage)] )
[_delegate ErrorMessage:msg];
}
-(BOOL) OverWrite:(NSString*) file
{
if( _delegate && [_delegate respondsToSelector:@selector(OverWriteOperation)] )
return [_delegate OverWriteOperation:file];
return YES;
}
#pragma mark get NSDate object for 1980-01-01
-(NSDate*) Date1980
{
NSDateComponents *comps = [[NSDateComponents alloc] init];
[comps setDay:1];
[comps setMonth:1];
[comps setYear:1980];
NSCalendar *gregorian = [[NSCalendar alloc]
initWithCalendarIdentifier:NSGregorianCalendar];
NSDate *date = [gregorian dateFromComponents:comps];
[comps release];
[gregorian release];
return date;
}
@end
================================================
FILE: AePubReader/Classes/minizip/crypt.h
================================================
/* crypt.h -- base code for crypt/uncrypt ZIPfile
Version 1.01e, February 12th, 2005
Copyright (C) 1998-2005 Gilles Vollant
This code is a modified version of crypting code in Infozip distribution
The encryption/decryption parts of this source code (as opposed to the
non-echoing password parts) were originally written in Europe. The
whole source package can be freely distributed, including from the USA.
(Prior to January 2000, re-export from the US was a violation of US law.)
This encryption code is a direct transcription of the algorithm from
Roger Schlafly, described by Phil Katz in the file appnote.txt. This
file (appnote.txt) is distributed with the PKZIP program (even in the
version without encryption capabilities).
If you don't need crypting in your application, just define symbols
NOCRYPT and NOUNCRYPT.
This code support the "Traditional PKWARE Encryption".
The new AES encryption added on Zip format by Winzip (see the page
http://www.winzip.com/aes_info.htm ) and PKWare PKZip 5.x Strong
Encryption is not supported.
*/
#define CRC32(c, b) ((*(pcrc_32_tab+(((int)(c) ^ (b)) & 0xff))) ^ ((c) >> 8))
/***********************************************************************
* Return the next byte in the pseudo-random sequence
*/
static int decrypt_byte(unsigned long* pkeys, const unsigned long* pcrc_32_tab)
{
unsigned temp; /* POTENTIAL BUG: temp*(temp^1) may overflow in an
* unpredictable manner on 16-bit systems; not a problem
* with any known compiler so far, though */
temp = ((unsigned)(*(pkeys+2)) & 0xffff) | 2;
return (int)(((temp * (temp ^ 1)) >> 8) & 0xff);
}
/***********************************************************************
* Update the encryption keys with the next byte of plain text
*/
static int update_keys(unsigned long* pkeys,const unsigned long* pcrc_32_tab,int c)
{
(*(pkeys+0)) = CRC32((*(pkeys+0)), c);
(*(pkeys+1)) += (*(pkeys+0)) & 0xff;
(*(pkeys+1)) = (*(pkeys+1)) * 134775813L + 1;
{
register int keyshift = (int)((*(pkeys+1)) >> 24);
(*(pkeys+2)) = CRC32((*(pkeys+2)), keyshift);
}
return c;
}
/***********************************************************************
* Initialize the encryption keys and the random header according to
* the given password.
*/
static void init_keys(const char* passwd,unsigned long* pkeys,const unsigned long* pcrc_32_tab)
{
*(pkeys+0) = 305419896L;
*(pkeys+1) = 591751049L;
*(pkeys+2) = 878082192L;
while (*passwd != '\0') {
update_keys(pkeys,pcrc_32_tab,(int)*passwd);
passwd++;
}
}
#define zdecode(pkeys,pcrc_32_tab,c) \
(update_keys(pkeys,pcrc_32_tab,c ^= decrypt_byte(pkeys,pcrc_32_tab)))
#define zencode(pkeys,pcrc_32_tab,c,t) \
(t=decrypt_byte(pkeys,pcrc_32_tab), update_keys(pkeys,pcrc_32_tab,c), t^(c))
#ifdef INCLUDECRYPTINGCODE_IFCRYPTALLOWED
#define RAND_HEAD_LEN 12
/* "last resort" source for second part of crypt seed pattern */
# ifndef ZCR_SEED2
# define ZCR_SEED2 3141592654UL /* use PI as default pattern */
# endif
static int crypthead(passwd, buf, bufSize, pkeys, pcrc_32_tab, crcForCrypting)
const char *passwd; /* password string */
unsigned char *buf; /* where to write header */
int bufSize;
unsigned long* pkeys;
const unsigned long* pcrc_32_tab;
unsigned long crcForCrypting;
{
int n; /* index in random header */
int t; /* temporary */
int c; /* random byte */
unsigned char header[RAND_HEAD_LEN-2]; /* random header */
static unsigned calls = 0; /* ensure different random header each time */
if (bufSize> 7) & 0xff;
header[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, c, t);
}
/* Encrypt random header (last two bytes is high word of crc) */
init_keys(passwd, pkeys, pcrc_32_tab);
for (n = 0; n < RAND_HEAD_LEN-2; n++)
{
buf[n] = (unsigned char)zencode(pkeys, pcrc_32_tab, header[n], t);
}
buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 16) & 0xff, t);
buf[n++] = zencode(pkeys, pcrc_32_tab, (int)(crcForCrypting >> 24) & 0xff, t);
return n;
}
#endif
================================================
FILE: AePubReader/Classes/minizip/ioapi.c
================================================
/* ioapi.c -- IO base function header for compress/uncompress .zip
files using zlib + zip or unzip API
Version 1.01e, February 12th, 2005
Copyright (C) 1998-2005 Gilles Vollant
*/
#include
#include
#include
#include "zlib.h"
#include "ioapi.h"
/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */
#ifndef SEEK_CUR
#define SEEK_CUR 1
#endif
#ifndef SEEK_END
#define SEEK_END 2
#endif
#ifndef SEEK_SET
#define SEEK_SET 0
#endif
voidpf ZCALLBACK fopen_file_func OF((
voidpf opaque,
const char* filename,
int mode));
uLong ZCALLBACK fread_file_func OF((
voidpf opaque,
voidpf stream,
void* buf,
uLong size));
uLong ZCALLBACK fwrite_file_func OF((
voidpf opaque,
voidpf stream,
const void* buf,
uLong size));
long ZCALLBACK ftell_file_func OF((
voidpf opaque,
voidpf stream));
long ZCALLBACK fseek_file_func OF((
voidpf opaque,
voidpf stream,
uLong offset,
int origin));
int ZCALLBACK fclose_file_func OF((
voidpf opaque,
voidpf stream));
int ZCALLBACK ferror_file_func OF((
voidpf opaque,
voidpf stream));
voidpf ZCALLBACK fopen_file_func (opaque, filename, mode)
voidpf opaque;
const char* filename;
int mode;
{
FILE* file = NULL;
const char* mode_fopen = NULL;
if ((mode & ZLIB_FILEFUNC_MODE_READWRITEFILTER)==ZLIB_FILEFUNC_MODE_READ)
mode_fopen = "rb";
else
if (mode & ZLIB_FILEFUNC_MODE_EXISTING)
mode_fopen = "r+b";
else
if (mode & ZLIB_FILEFUNC_MODE_CREATE)
mode_fopen = "wb";
if ((filename!=NULL) && (mode_fopen != NULL))
file = fopen(filename, mode_fopen);
return file;
}
uLong ZCALLBACK fread_file_func (opaque, stream, buf, size)
voidpf opaque;
voidpf stream;
void* buf;
uLong size;
{
uLong ret;
ret = (uLong)fread(buf, 1, (size_t)size, (FILE *)stream);
return ret;
}
uLong ZCALLBACK fwrite_file_func (opaque, stream, buf, size)
voidpf opaque;
voidpf stream;
const void* buf;
uLong size;
{
uLong ret;
ret = (uLong)fwrite(buf, 1, (size_t)size, (FILE *)stream);
return ret;
}
long ZCALLBACK ftell_file_func (opaque, stream)
voidpf opaque;
voidpf stream;
{
long ret;
ret = ftell((FILE *)stream);
return ret;
}
long ZCALLBACK fseek_file_func (opaque, stream, offset, origin)
voidpf opaque;
voidpf stream;
uLong offset;
int origin;
{
int fseek_origin=0;
long ret;
switch (origin)
{
case ZLIB_FILEFUNC_SEEK_CUR :
fseek_origin = SEEK_CUR;
break;
case ZLIB_FILEFUNC_SEEK_END :
fseek_origin = SEEK_END;
break;
case ZLIB_FILEFUNC_SEEK_SET :
fseek_origin = SEEK_SET;
break;
default: return -1;
}
ret = 0;
fseek((FILE *)stream, offset, fseek_origin);
return ret;
}
int ZCALLBACK fclose_file_func (opaque, stream)
voidpf opaque;
voidpf stream;
{
int ret;
ret = fclose((FILE *)stream);
return ret;
}
int ZCALLBACK ferror_file_func (opaque, stream)
voidpf opaque;
voidpf stream;
{
int ret;
ret = ferror((FILE *)stream);
return ret;
}
void fill_fopen_filefunc (pzlib_filefunc_def)
zlib_filefunc_def* pzlib_filefunc_def;
{
pzlib_filefunc_def->zopen_file = fopen_file_func;
pzlib_filefunc_def->zread_file = fread_file_func;
pzlib_filefunc_def->zwrite_file = fwrite_file_func;
pzlib_filefunc_def->ztell_file = ftell_file_func;
pzlib_filefunc_def->zseek_file = fseek_file_func;
pzlib_filefunc_def->zclose_file = fclose_file_func;
pzlib_filefunc_def->zerror_file = ferror_file_func;
pzlib_filefunc_def->opaque = NULL;
}
================================================
FILE: AePubReader/Classes/minizip/ioapi.h
================================================
/* ioapi.h -- IO base function header for compress/uncompress .zip
files using zlib + zip or unzip API
Version 1.01e, February 12th, 2005
Copyright (C) 1998-2005 Gilles Vollant
*/
#ifndef _ZLIBIOAPI_H
#define _ZLIBIOAPI_H
#define ZLIB_FILEFUNC_SEEK_CUR (1)
#define ZLIB_FILEFUNC_SEEK_END (2)
#define ZLIB_FILEFUNC_SEEK_SET (0)
#define ZLIB_FILEFUNC_MODE_READ (1)
#define ZLIB_FILEFUNC_MODE_WRITE (2)
#define ZLIB_FILEFUNC_MODE_READWRITEFILTER (3)
#define ZLIB_FILEFUNC_MODE_EXISTING (4)
#define ZLIB_FILEFUNC_MODE_CREATE (8)
#ifndef ZCALLBACK
#if (defined(WIN32) || defined (WINDOWS) || defined (_WINDOWS)) && defined(CALLBACK) && defined (USEWINDOWS_CALLBACK)
#define ZCALLBACK CALLBACK
#else
#define ZCALLBACK
#endif
#endif
#ifdef __cplusplus
extern "C" {
#endif
typedef voidpf (ZCALLBACK *open_file_func) OF((voidpf opaque, const char* filename, int mode));
typedef uLong (ZCALLBACK *read_file_func) OF((voidpf opaque, voidpf stream, void* buf, uLong size));
typedef uLong (ZCALLBACK *write_file_func) OF((voidpf opaque, voidpf stream, const void* buf, uLong size));
typedef long (ZCALLBACK *tell_file_func) OF((voidpf opaque, voidpf stream));
typedef long (ZCALLBACK *seek_file_func) OF((voidpf opaque, voidpf stream, uLong offset, int origin));
typedef int (ZCALLBACK *close_file_func) OF((voidpf opaque, voidpf stream));
typedef int (ZCALLBACK *testerror_file_func) OF((voidpf opaque, voidpf stream));
typedef struct zlib_filefunc_def_s
{
open_file_func zopen_file;
read_file_func zread_file;
write_file_func zwrite_file;
tell_file_func ztell_file;
seek_file_func zseek_file;
close_file_func zclose_file;
testerror_file_func zerror_file;
voidpf opaque;
} zlib_filefunc_def;
void fill_fopen_filefunc OF((zlib_filefunc_def* pzlib_filefunc_def));
#define ZREAD(filefunc,filestream,buf,size) ((*((filefunc).zread_file))((filefunc).opaque,filestream,buf,size))
#define ZWRITE(filefunc,filestream,buf,size) ((*((filefunc).zwrite_file))((filefunc).opaque,filestream,buf,size))
#define ZTELL(filefunc,filestream) ((*((filefunc).ztell_file))((filefunc).opaque,filestream))
#define ZSEEK(filefunc,filestream,pos,mode) ((*((filefunc).zseek_file))((filefunc).opaque,filestream,pos,mode))
#define ZCLOSE(filefunc,filestream) ((*((filefunc).zclose_file))((filefunc).opaque,filestream))
#define ZERROR(filefunc,filestream) ((*((filefunc).zerror_file))((filefunc).opaque,filestream))
#ifdef __cplusplus
}
#endif
#endif
================================================
FILE: AePubReader/Classes/minizip/mztools.c
================================================
/*
Additional tools for Minizip
Code: Xavier Roche '2004
License: Same as ZLIB (www.gzip.org)
*/
/* Code */
#include
#include
#include
#include "zlib.h"
#include "unzip.h"
#define READ_8(adr) ((unsigned char)*(adr))
#define READ_16(adr) ( READ_8(adr) | (READ_8(adr+1) << 8) )
#define READ_32(adr) ( READ_16(adr) | (READ_16((adr)+2) << 16) )
#define WRITE_8(buff, n) do { \
*((unsigned char*)(buff)) = (unsigned char) ((n) & 0xff); \
} while(0)
#define WRITE_16(buff, n) do { \
WRITE_8((unsigned char*)(buff), n); \
WRITE_8(((unsigned char*)(buff)) + 1, (n) >> 8); \
} while(0)
#define WRITE_32(buff, n) do { \
WRITE_16((unsigned char*)(buff), (n) & 0xffff); \
WRITE_16((unsigned char*)(buff) + 2, (n) >> 16); \
} while(0)
extern int ZEXPORT unzRepair(file, fileOut, fileOutTmp, nRecovered, bytesRecovered)
const char* file;
const char* fileOut;
const char* fileOutTmp;
uLong* nRecovered;
uLong* bytesRecovered;
{
int err = Z_OK;
FILE* fpZip = fopen(file, "rb");
FILE* fpOut = fopen(fileOut, "wb");
FILE* fpOutCD = fopen(fileOutTmp, "wb");
if (fpZip != NULL && fpOut != NULL) {
int entries = 0;
uLong totalBytes = 0;
char header[30];
char filename[256];
char extra[1024];
int offset = 0;
int offsetCD = 0;
while ( fread(header, 1, 30, fpZip) == 30 ) {
int currentOffset = offset;
/* File entry */
if (READ_32(header) == 0x04034b50) {
unsigned int version = READ_16(header + 4);
unsigned int gpflag = READ_16(header + 6);
unsigned int method = READ_16(header + 8);
unsigned int filetime = READ_16(header + 10);
unsigned int filedate = READ_16(header + 12);
unsigned int crc = READ_32(header + 14); /* crc */
unsigned int cpsize = READ_32(header + 18); /* compressed size */
unsigned int uncpsize = READ_32(header + 22); /* uncompressed sz */
unsigned int fnsize = READ_16(header + 26); /* file name length */
unsigned int extsize = READ_16(header + 28); /* extra field length */
filename[0] = extra[0] = '\0';
/* Header */
if (fwrite(header, 1, 30, fpOut) == 30) {
offset += 30;
} else {
err = Z_ERRNO;
break;
}
/* Filename */
if (fnsize > 0) {
if (fread(filename, 1, fnsize, fpZip) == fnsize) {
if (fwrite(filename, 1, fnsize, fpOut) == fnsize) {
offset += fnsize;
} else {
err = Z_ERRNO;
break;
}
} else {
err = Z_ERRNO;
break;
}
} else {
err = Z_STREAM_ERROR;
break;
}
/* Extra field */
if (extsize > 0) {
if (fread(extra, 1, extsize, fpZip) == extsize) {
if (fwrite(extra, 1, extsize, fpOut) == extsize) {
offset += extsize;
} else {
err = Z_ERRNO;
break;
}
} else {
err = Z_ERRNO;
break;
}
}
/* Data */
{
int dataSize = cpsize;
if (dataSize == 0) {
dataSize = uncpsize;
}
if (dataSize > 0) {
char* data = malloc(dataSize);
if (data != NULL) {
if ((int)fread(data, 1, dataSize, fpZip) == dataSize) {
if ((int)fwrite(data, 1, dataSize, fpOut) == dataSize) {
offset += dataSize;
totalBytes += dataSize;
} else {
err = Z_ERRNO;
}
} else {
err = Z_ERRNO;
}
free(data);
if (err != Z_OK) {
break;
}
} else {
err = Z_MEM_ERROR;
break;
}
}
}
/* Central directory entry */
{
char header[46];
char* comment = "";
int comsize = (int) strlen(comment);
WRITE_32(header, 0x02014b50);
WRITE_16(header + 4, version);
WRITE_16(header + 6, version);
WRITE_16(header + 8, gpflag);
WRITE_16(header + 10, method);
WRITE_16(header + 12, filetime);
WRITE_16(header + 14, filedate);
WRITE_32(header + 16, crc);
WRITE_32(header + 20, cpsize);
WRITE_32(header + 24, uncpsize);
WRITE_16(header + 28, fnsize);
WRITE_16(header + 30, extsize);
WRITE_16(header + 32, comsize);
WRITE_16(header + 34, 0); /* disk # */
WRITE_16(header + 36, 0); /* int attrb */
WRITE_32(header + 38, 0); /* ext attrb */
WRITE_32(header + 42, currentOffset);
/* Header */
if (fwrite(header, 1, 46, fpOutCD) == 46) {
offsetCD += 46;
/* Filename */
if (fnsize > 0) {
if (fwrite(filename, 1, fnsize, fpOutCD) == fnsize) {
offsetCD += fnsize;
} else {
err = Z_ERRNO;
break;
}
} else {
err = Z_STREAM_ERROR;
break;
}
/* Extra field */
if (extsize > 0) {
if (fwrite(extra, 1, extsize, fpOutCD) == extsize) {
offsetCD += extsize;
} else {
err = Z_ERRNO;
break;
}
}
/* Comment field */
if (comsize > 0) {
if ((int)fwrite(comment, 1, comsize, fpOutCD) == comsize) {
offsetCD += comsize;
} else {
err = Z_ERRNO;
break;
}
}
} else {
err = Z_ERRNO;
break;
}
}
/* Success */
entries++;
} else {
break;
}
}
/* Final central directory */
{
int entriesZip = entries;
char header[22];
char* comment = ""; // "ZIP File recovered by zlib/minizip/mztools";
int comsize = (int) strlen(comment);
if (entriesZip > 0xffff) {
entriesZip = 0xffff;
}
WRITE_32(header, 0x06054b50);
WRITE_16(header + 4, 0); /* disk # */
WRITE_16(header + 6, 0); /* disk # */
WRITE_16(header + 8, entriesZip); /* hack */
WRITE_16(header + 10, entriesZip); /* hack */
WRITE_32(header + 12, offsetCD); /* size of CD */
WRITE_32(header + 16, offset); /* offset to CD */
WRITE_16(header + 20, comsize); /* comment */
/* Header */
if (fwrite(header, 1, 22, fpOutCD) == 22) {
/* Comment field */
if (comsize > 0) {
if ((int)fwrite(comment, 1, comsize, fpOutCD) != comsize) {
err = Z_ERRNO;
}
}
} else {
err = Z_ERRNO;
}
}
/* Final merge (file + central directory) */
fclose(fpOutCD);
if (err == Z_OK) {
fpOutCD = fopen(fileOutTmp, "rb");
if (fpOutCD != NULL) {
int nRead;
char buffer[8192];
while ( (nRead = (int)fread(buffer, 1, sizeof(buffer), fpOutCD)) > 0) {
if ((int)fwrite(buffer, 1, nRead, fpOut) != nRead) {
err = Z_ERRNO;
break;
}
}
fclose(fpOutCD);
}
}
/* Close */
fclose(fpZip);
fclose(fpOut);
/* Wipe temporary file */
(void)remove(fileOutTmp);
/* Number of recovered entries */
if (err == Z_OK) {
if (nRecovered != NULL) {
*nRecovered = entries;
}
if (bytesRecovered != NULL) {
*bytesRecovered = totalBytes;
}
}
} else {
err = Z_STREAM_ERROR;
}
return err;
}
================================================
FILE: AePubReader/Classes/minizip/mztools.h
================================================
/*
Additional tools for Minizip
Code: Xavier Roche '2004
License: Same as ZLIB (www.gzip.org)
*/
#ifndef _zip_tools_H
#define _zip_tools_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _ZLIB_H
#include "zlib.h"
#endif
#include "unzip.h"
/* Repair a ZIP file (missing central directory)
file: file to recover
fileOut: output file after recovery
fileOutTmp: temporary file name used for recovery
*/
extern int ZEXPORT unzRepair(const char* file,
const char* fileOut,
const char* fileOutTmp,
uLong* nRecovered,
uLong* bytesRecovered);
#endif
================================================
FILE: AePubReader/Classes/minizip/unzip.c
================================================
/* unzip.c -- IO for uncompress .zip files using zlib
Version 1.01e, February 12th, 2005
Copyright (C) 1998-2005 Gilles Vollant
Read unzip.h for more info
*/
/* Decryption code comes from crypt.c by Info-ZIP but has been greatly reduced in terms of
compatibility with older software. The following is from the original crypt.c. Code
woven in by Terry Thorsen 1/2003.
*/
/*
Copyright (c) 1990-2000 Info-ZIP. All rights reserved.
See the accompanying file LICENSE, version 2000-Apr-09 or later
(the contents of which are also included in zip.h) for terms of use.
If, for some reason, all these files are missing, the Info-ZIP license
also may be found at: ftp://ftp.info-zip.org/pub/infozip/license.html
*/
/*
crypt.c (full version) by Info-ZIP. Last revised: [see crypt.h]
The encryption/decryption parts of this source code (as opposed to the
non-echoing password parts) were originally written in Europe. The
whole source package can be freely distributed, including from the USA.
(Prior to January 2000, re-export from the US was a violation of US law.)
*/
/*
This encryption code is a direct transcription of the algorithm from
Roger Schlafly, described by Phil Katz in the file appnote.txt. This
file (appnote.txt) is distributed with the PKZIP program (even in the
version without encryption capabilities).
*/
#include
#include
#include
#include "zlib.h"
#include "unzip.h"
#ifdef STDC
# include
# include
# include
#endif
#ifdef NO_ERRNO_H
extern int errno;
#else
# include
#endif
#ifndef local
# define local static
#endif
/* compile with -Dlocal if your debugger can't find static symbols */
#ifndef CASESENSITIVITYDEFAULT_NO
# if !defined(unix) && !defined(CASESENSITIVITYDEFAULT_YES)
# define CASESENSITIVITYDEFAULT_NO
# endif
#endif
#ifndef UNZ_BUFSIZE
#define UNZ_BUFSIZE (16384)
#endif
#ifndef UNZ_MAXFILENAMEINZIP
#define UNZ_MAXFILENAMEINZIP (256)
#endif
#ifndef ALLOC
# define ALLOC(size) (malloc(size))
#endif
#ifndef TRYFREE
# define TRYFREE(p) {if (p) free(p);}
#endif
#define SIZECENTRALDIRITEM (0x2e)
#define SIZEZIPLOCALHEADER (0x1e)
const char unz_copyright[] =
" unzip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll";
/* unz_file_info_interntal contain internal info about a file in zipfile*/
typedef struct unz_file_info_internal_s
{
uLong offset_curfile;/* relative offset of local header 4 bytes */
} unz_file_info_internal;
/* file_in_zip_read_info_s contain internal information about a file in zipfile,
when reading and decompress it */
typedef struct
{
char *read_buffer; /* internal buffer for compressed data */
z_stream stream; /* zLib stream structure for inflate */
uLong pos_in_zipfile; /* position in byte on the zipfile, for fseek*/
uLong stream_initialised; /* flag set if stream structure is initialised*/
uLong offset_local_extrafield;/* offset of the local extra field */
uInt size_local_extrafield;/* size of the local extra field */
uLong pos_local_extrafield; /* position in the local extra field in read*/
uLong crc32; /* crc32 of all data uncompressed */
uLong crc32_wait; /* crc32 we must obtain after decompress all */
uLong rest_read_compressed; /* number of byte to be decompressed */
uLong rest_read_uncompressed;/*number of byte to be obtained after decomp*/
zlib_filefunc_def z_filefunc;
voidpf filestream; /* io structore of the zipfile */
uLong compression_method; /* compression method (0==store) */
uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
int raw;
} file_in_zip_read_info_s;
/* unz_s contain internal information about the zipfile
*/
typedef struct
{
zlib_filefunc_def z_filefunc;
voidpf filestream; /* io structore of the zipfile */
unz_global_info gi; /* public global information */
uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
uLong num_file; /* number of the current file in the zipfile*/
uLong pos_in_central_dir; /* pos of the current file in the central dir*/
uLong current_file_ok; /* flag about the usability of the current file*/
uLong central_pos; /* position of the beginning of the central dir*/
uLong size_central_dir; /* size of the central directory */
uLong offset_central_dir; /* offset of start of central directory with
respect to the starting disk number */
unz_file_info cur_file_info; /* public info about the current file in zip*/
unz_file_info_internal cur_file_info_internal; /* private info about it*/
file_in_zip_read_info_s* pfile_in_zip_read; /* structure about the current
file if we are decompressing it */
int encrypted;
# ifndef NOUNCRYPT
unsigned long keys[3]; /* keys defining the pseudo-random sequence */
const unsigned long* pcrc_32_tab;
# endif
} unz_s;
#ifndef NOUNCRYPT
#include "crypt.h"
#endif
/* ===========================================================================
Read a byte from a gz_stream; update next_in and avail_in. Return EOF
for end of file.
IN assertion: the stream s has been sucessfully opened for reading.
*/
local int unzlocal_getByte OF((
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream,
int *pi));
local int unzlocal_getByte(pzlib_filefunc_def,filestream,pi)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
int *pi;
{
unsigned char c;
int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
if (err==1)
{
*pi = (int)c;
return UNZ_OK;
}
else
{
if (ZERROR(*pzlib_filefunc_def,filestream))
return UNZ_ERRNO;
else
return UNZ_EOF;
}
}
/* ===========================================================================
Reads a long in LSB order from the given gz_stream. Sets
*/
local int unzlocal_getShort OF((
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream,
uLong *pX));
local int unzlocal_getShort (pzlib_filefunc_def,filestream,pX)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong *pX;
{
uLong x ;
int i;
int err;
err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
x = (uLong)i;
if (err==UNZ_OK)
err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
x += ((uLong)i)<<8;
if (err==UNZ_OK)
*pX = x;
else
*pX = 0;
return err;
}
local int unzlocal_getLong OF((
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream,
uLong *pX));
local int unzlocal_getLong (pzlib_filefunc_def,filestream,pX)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong *pX;
{
uLong x ;
int i;
int err;
err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
x = (uLong)i;
if (err==UNZ_OK)
err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
x += ((uLong)i)<<8;
if (err==UNZ_OK)
err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
x += ((uLong)i)<<16;
if (err==UNZ_OK)
err = unzlocal_getByte(pzlib_filefunc_def,filestream,&i);
x += ((uLong)i)<<24;
if (err==UNZ_OK)
*pX = x;
else
*pX = 0;
return err;
}
/* My own strcmpi / strcasecmp */
local int strcmpcasenosensitive_internal (fileName1,fileName2)
const char* fileName1;
const char* fileName2;
{
for (;;)
{
char c1=*(fileName1++);
char c2=*(fileName2++);
if ((c1>='a') && (c1<='z'))
c1 -= 0x20;
if ((c2>='a') && (c2<='z'))
c2 -= 0x20;
if (c1=='\0')
return ((c2=='\0') ? 0 : -1);
if (c2=='\0')
return 1;
if (c1c2)
return 1;
}
}
#ifdef CASESENSITIVITYDEFAULT_NO
#define CASESENSITIVITYDEFAULTVALUE 2
#else
#define CASESENSITIVITYDEFAULTVALUE 1
#endif
#ifndef STRCMPCASENOSENTIVEFUNCTION
#define STRCMPCASENOSENTIVEFUNCTION strcmpcasenosensitive_internal
#endif
/*
Compare two filename (fileName1,fileName2).
If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
or strcasecmp)
If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
(like 1 on Unix, 2 on Windows)
*/
extern int ZEXPORT unzStringFileNameCompare (fileName1,fileName2,iCaseSensitivity)
const char* fileName1;
const char* fileName2;
int iCaseSensitivity;
{
if (iCaseSensitivity==0)
iCaseSensitivity=CASESENSITIVITYDEFAULTVALUE;
if (iCaseSensitivity==1)
return strcmp(fileName1,fileName2);
return STRCMPCASENOSENTIVEFUNCTION(fileName1,fileName2);
}
#ifndef BUFREADCOMMENT
#define BUFREADCOMMENT (0x400)
#endif
/*
Locate the Central directory of a zipfile (at the end, just before
the global comment)
*/
local uLong unzlocal_SearchCentralDir OF((
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream));
local uLong unzlocal_SearchCentralDir(pzlib_filefunc_def,filestream)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
{
unsigned char* buf;
uLong uSizeFile;
uLong uBackRead;
uLong uMaxBack=0xffff; /* maximum size of global comment */
uLong uPosFound=0;
if (ZSEEK(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0)
return 0;
uSizeFile = ZTELL(*pzlib_filefunc_def,filestream);
if (uMaxBack>uSizeFile)
uMaxBack = uSizeFile;
buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4);
if (buf==NULL)
return 0;
uBackRead = 4;
while (uBackReaduMaxBack)
uBackRead = uMaxBack;
else
uBackRead+=BUFREADCOMMENT;
uReadPos = uSizeFile-uBackRead ;
uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ?
(BUFREADCOMMENT+4) : (uSizeFile-uReadPos);
if (ZSEEK(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0)
break;
if (ZREAD(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize)
break;
for (i=(int)uReadSize-3; (i--)>0;)
if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06))
{
uPosFound = uReadPos+i;
break;
}
if (uPosFound!=0)
break;
}
TRYFREE(buf);
return uPosFound;
}
/*
Open a Zip file. path contain the full pathname (by example,
on a Windows NT computer "c:\\test\\zlib114.zip" or on an Unix computer
"zlib/zlib114.zip".
If the zipfile cannot be opened (file doesn't exist or in not valid), the
return value is NULL.
Else, the return value is a unzFile Handle, usable with other function
of this unzip package.
*/
extern unzFile ZEXPORT unzOpen2 (path, pzlib_filefunc_def)
const char *path;
zlib_filefunc_def* pzlib_filefunc_def;
{
unz_s us;
unz_s *s;
uLong central_pos,uL;
uLong number_disk; /* number of the current dist, used for
spaning ZIP, unsupported, always 0*/
uLong number_disk_with_CD; /* number the the disk with central dir, used
for spaning ZIP, unsupported, always 0*/
uLong number_entry_CD; /* total number of entries in
the central dir
(same than number_entry on nospan) */
int err=UNZ_OK;
if (unz_copyright[0]!=' ')
return NULL;
if (pzlib_filefunc_def==NULL)
fill_fopen_filefunc(&us.z_filefunc);
else
us.z_filefunc = *pzlib_filefunc_def;
us.filestream= (*(us.z_filefunc.zopen_file))(us.z_filefunc.opaque,
path,
ZLIB_FILEFUNC_MODE_READ |
ZLIB_FILEFUNC_MODE_EXISTING);
if (us.filestream==NULL)
return NULL;
central_pos = unzlocal_SearchCentralDir(&us.z_filefunc,us.filestream);
if (central_pos==0)
err=UNZ_ERRNO;
if (ZSEEK(us.z_filefunc, us.filestream,
central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0)
err=UNZ_ERRNO;
/* the signature, already checked */
if (unzlocal_getLong(&us.z_filefunc, us.filestream,&uL)!=UNZ_OK)
err=UNZ_ERRNO;
/* number of this disk */
if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk)!=UNZ_OK)
err=UNZ_ERRNO;
/* number of the disk with the start of the central directory */
if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_disk_with_CD)!=UNZ_OK)
err=UNZ_ERRNO;
/* total number of entries in the central dir on this disk */
if (unzlocal_getShort(&us.z_filefunc, us.filestream,&us.gi.number_entry)!=UNZ_OK)
err=UNZ_ERRNO;
/* total number of entries in the central dir */
if (unzlocal_getShort(&us.z_filefunc, us.filestream,&number_entry_CD)!=UNZ_OK)
err=UNZ_ERRNO;
if ((number_entry_CD!=us.gi.number_entry) ||
(number_disk_with_CD!=0) ||
(number_disk!=0))
err=UNZ_BADZIPFILE;
/* size of the central directory */
if (unzlocal_getLong(&us.z_filefunc, us.filestream,&us.size_central_dir)!=UNZ_OK)
err=UNZ_ERRNO;
/* offset of start of central directory with respect to the
starting disk number */
if (unzlocal_getLong(&us.z_filefunc, us.filestream,&us.offset_central_dir)!=UNZ_OK)
err=UNZ_ERRNO;
/* zipfile comment length */
if (unzlocal_getShort(&us.z_filefunc, us.filestream,&us.gi.size_comment)!=UNZ_OK)
err=UNZ_ERRNO;
if ((central_pospfile_in_zip_read!=NULL)
unzCloseCurrentFile(file);
ZCLOSE(s->z_filefunc, s->filestream);
TRYFREE(s);
return UNZ_OK;
}
/*
Write info about the ZipFile in the *pglobal_info structure.
No preparation of the structure is needed
return UNZ_OK if there is no problem. */
extern int ZEXPORT unzGetGlobalInfo (file,pglobal_info)
unzFile file;
unz_global_info *pglobal_info;
{
unz_s* s;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
*pglobal_info=s->gi;
return UNZ_OK;
}
/*
Translate date/time from Dos format to tm_unz (readable more easilty)
*/
local void unzlocal_DosDateToTmuDate (ulDosDate, ptm)
uLong ulDosDate;
tm_unz* ptm;
{
uLong uDate;
uDate = (uLong)(ulDosDate>>16);
ptm->tm_mday = (uInt)(uDate&0x1f) ;
ptm->tm_mon = (uInt)((((uDate)&0x1E0)/0x20)-1) ;
ptm->tm_year = (uInt)(((uDate&0x0FE00)/0x0200)+1980) ;
ptm->tm_hour = (uInt) ((ulDosDate &0xF800)/0x800);
ptm->tm_min = (uInt) ((ulDosDate&0x7E0)/0x20) ;
ptm->tm_sec = (uInt) (2*(ulDosDate&0x1f)) ;
}
/*
Get Info about the current file in the zipfile, with internal only info
*/
local int unzlocal_GetCurrentFileInfoInternal OF((unzFile file,
unz_file_info *pfile_info,
unz_file_info_internal
*pfile_info_internal,
char *szFileName,
uLong fileNameBufferSize,
void *extraField,
uLong extraFieldBufferSize,
char *szComment,
uLong commentBufferSize));
local int unzlocal_GetCurrentFileInfoInternal (file,
pfile_info,
pfile_info_internal,
szFileName, fileNameBufferSize,
extraField, extraFieldBufferSize,
szComment, commentBufferSize)
unzFile file;
unz_file_info *pfile_info;
unz_file_info_internal *pfile_info_internal;
char *szFileName;
uLong fileNameBufferSize;
void *extraField;
uLong extraFieldBufferSize;
char *szComment;
uLong commentBufferSize;
{
unz_s* s;
unz_file_info file_info;
unz_file_info_internal file_info_internal;
int err=UNZ_OK;
uLong uMagic;
long lSeek=0;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
if (ZSEEK(s->z_filefunc, s->filestream,
s->pos_in_central_dir+s->byte_before_the_zipfile,
ZLIB_FILEFUNC_SEEK_SET)!=0)
err=UNZ_ERRNO;
/* we check the magic */
if (err==UNZ_OK)
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK)
err=UNZ_ERRNO;
else if (uMagic!=0x02014b50)
err=UNZ_BADZIPFILE;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.version_needed) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.flag) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.compression_method) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.dosDate) != UNZ_OK)
err=UNZ_ERRNO;
unzlocal_DosDateToTmuDate(file_info.dosDate,&file_info.tmu_date);
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.crc) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.compressed_size) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.uncompressed_size) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_filename) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_extra) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.size_file_comment) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.disk_num_start) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&file_info.internal_fa) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info.external_fa) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&file_info_internal.offset_curfile) != UNZ_OK)
err=UNZ_ERRNO;
lSeek+=file_info.size_filename;
if ((err==UNZ_OK) && (szFileName!=NULL))
{
uLong uSizeRead ;
if (file_info.size_filename0) && (fileNameBufferSize>0))
if (ZREAD(s->z_filefunc, s->filestream,szFileName,uSizeRead)!=uSizeRead)
err=UNZ_ERRNO;
lSeek -= uSizeRead;
}
if ((err==UNZ_OK) && (extraField!=NULL))
{
uLong uSizeRead ;
if (file_info.size_file_extraz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
lSeek=0;
else
err=UNZ_ERRNO;
if ((file_info.size_file_extra>0) && (extraFieldBufferSize>0))
if (ZREAD(s->z_filefunc, s->filestream,extraField,uSizeRead)!=uSizeRead)
err=UNZ_ERRNO;
lSeek += file_info.size_file_extra - uSizeRead;
}
else
lSeek+=file_info.size_file_extra;
if ((err==UNZ_OK) && (szComment!=NULL))
{
uLong uSizeRead ;
if (file_info.size_file_commentz_filefunc, s->filestream,lSeek,ZLIB_FILEFUNC_SEEK_CUR)==0)
lSeek=0;
else
err=UNZ_ERRNO;
if ((file_info.size_file_comment>0) && (commentBufferSize>0))
if (ZREAD(s->z_filefunc, s->filestream,szComment,uSizeRead)!=uSizeRead)
err=UNZ_ERRNO;
lSeek+=file_info.size_file_comment - uSizeRead;
}
else
lSeek+=file_info.size_file_comment;
if ((err==UNZ_OK) && (pfile_info!=NULL))
*pfile_info=file_info;
if ((err==UNZ_OK) && (pfile_info_internal!=NULL))
*pfile_info_internal=file_info_internal;
return err;
}
/*
Write info about the ZipFile in the *pglobal_info structure.
No preparation of the structure is needed
return UNZ_OK if there is no problem.
*/
extern int ZEXPORT unzGetCurrentFileInfo (file,
pfile_info,
szFileName, fileNameBufferSize,
extraField, extraFieldBufferSize,
szComment, commentBufferSize)
unzFile file;
unz_file_info *pfile_info;
char *szFileName;
uLong fileNameBufferSize;
void *extraField;
uLong extraFieldBufferSize;
char *szComment;
uLong commentBufferSize;
{
return unzlocal_GetCurrentFileInfoInternal(file,pfile_info,NULL,
szFileName,fileNameBufferSize,
extraField,extraFieldBufferSize,
szComment,commentBufferSize);
}
/*
Set the current file of the zipfile to the first file.
return UNZ_OK if there is no problem
*/
extern int ZEXPORT unzGoToFirstFile (file)
unzFile file;
{
int err=UNZ_OK;
unz_s* s;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
s->pos_in_central_dir=s->offset_central_dir;
s->num_file=0;
err=unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info,
&s->cur_file_info_internal,
NULL,0,NULL,0,NULL,0);
s->current_file_ok = (err == UNZ_OK);
return err;
}
/*
Set the current file of the zipfile to the next file.
return UNZ_OK if there is no problem
return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
*/
extern int ZEXPORT unzGoToNextFile (file)
unzFile file;
{
unz_s* s;
int err;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
if (!s->current_file_ok)
return UNZ_END_OF_LIST_OF_FILE;
if (s->gi.number_entry != 0xffff) /* 2^16 files overflow hack */
if (s->num_file+1==s->gi.number_entry)
return UNZ_END_OF_LIST_OF_FILE;
s->pos_in_central_dir += SIZECENTRALDIRITEM + s->cur_file_info.size_filename +
s->cur_file_info.size_file_extra + s->cur_file_info.size_file_comment ;
s->num_file++;
err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info,
&s->cur_file_info_internal,
NULL,0,NULL,0,NULL,0);
s->current_file_ok = (err == UNZ_OK);
return err;
}
/*
Try locate the file szFileName in the zipfile.
For the iCaseSensitivity signification, see unzipStringFileNameCompare
return value :
UNZ_OK if the file is found. It becomes the current file.
UNZ_END_OF_LIST_OF_FILE if the file is not found
*/
extern int ZEXPORT unzLocateFile (file, szFileName, iCaseSensitivity)
unzFile file;
const char *szFileName;
int iCaseSensitivity;
{
unz_s* s;
int err;
/* We remember the 'current' position in the file so that we can jump
* back there if we fail.
*/
unz_file_info cur_file_infoSaved;
unz_file_info_internal cur_file_info_internalSaved;
uLong num_fileSaved;
uLong pos_in_central_dirSaved;
if (file==NULL)
return UNZ_PARAMERROR;
if (strlen(szFileName)>=UNZ_MAXFILENAMEINZIP)
return UNZ_PARAMERROR;
s=(unz_s*)file;
if (!s->current_file_ok)
return UNZ_END_OF_LIST_OF_FILE;
/* Save the current state */
num_fileSaved = s->num_file;
pos_in_central_dirSaved = s->pos_in_central_dir;
cur_file_infoSaved = s->cur_file_info;
cur_file_info_internalSaved = s->cur_file_info_internal;
err = unzGoToFirstFile(file);
while (err == UNZ_OK)
{
char szCurrentFileName[UNZ_MAXFILENAMEINZIP+1];
err = unzGetCurrentFileInfo(file,NULL,
szCurrentFileName,sizeof(szCurrentFileName)-1,
NULL,0,NULL,0);
if (err == UNZ_OK)
{
if (unzStringFileNameCompare(szCurrentFileName,
szFileName,iCaseSensitivity)==0)
return UNZ_OK;
err = unzGoToNextFile(file);
}
}
/* We failed, so restore the state of the 'current file' to where we
* were.
*/
s->num_file = num_fileSaved ;
s->pos_in_central_dir = pos_in_central_dirSaved ;
s->cur_file_info = cur_file_infoSaved;
s->cur_file_info_internal = cur_file_info_internalSaved;
return err;
}
/*
///////////////////////////////////////////
// Contributed by Ryan Haksi (mailto://cryogen@infoserve.net)
// I need random access
//
// Further optimization could be realized by adding an ability
// to cache the directory in memory. The goal being a single
// comprehensive file read to put the file I need in a memory.
*/
/*
typedef struct unz_file_pos_s
{
uLong pos_in_zip_directory; // offset in file
uLong num_of_file; // # of file
} unz_file_pos;
*/
extern int ZEXPORT unzGetFilePos(file, file_pos)
unzFile file;
unz_file_pos* file_pos;
{
unz_s* s;
if (file==NULL || file_pos==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
if (!s->current_file_ok)
return UNZ_END_OF_LIST_OF_FILE;
file_pos->pos_in_zip_directory = s->pos_in_central_dir;
file_pos->num_of_file = s->num_file;
return UNZ_OK;
}
extern int ZEXPORT unzGoToFilePos(file, file_pos)
unzFile file;
unz_file_pos* file_pos;
{
unz_s* s;
int err;
if (file==NULL || file_pos==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
/* jump to the right spot */
s->pos_in_central_dir = file_pos->pos_in_zip_directory;
s->num_file = file_pos->num_of_file;
/* set the current file */
err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info,
&s->cur_file_info_internal,
NULL,0,NULL,0,NULL,0);
/* return results */
s->current_file_ok = (err == UNZ_OK);
return err;
}
/*
// Unzip Helper Functions - should be here?
///////////////////////////////////////////
*/
/*
Read the local header of the current zipfile
Check the coherency of the local header and info in the end of central
directory about this file
store in *piSizeVar the size of extra info in local header
(filename and size of extra field data)
*/
local int unzlocal_CheckCurrentFileCoherencyHeader (s,piSizeVar,
poffset_local_extrafield,
psize_local_extrafield)
unz_s* s;
uInt* piSizeVar;
uLong *poffset_local_extrafield;
uInt *psize_local_extrafield;
{
uLong uMagic,uData,uFlags;
uLong size_filename;
uLong size_extra_field;
int err=UNZ_OK;
*piSizeVar = 0;
*poffset_local_extrafield = 0;
*psize_local_extrafield = 0;
if (ZSEEK(s->z_filefunc, s->filestream,s->cur_file_info_internal.offset_curfile +
s->byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0)
return UNZ_ERRNO;
if (err==UNZ_OK)
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uMagic) != UNZ_OK)
err=UNZ_ERRNO;
else if (uMagic!=0x04034b50)
err=UNZ_BADZIPFILE;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK)
err=UNZ_ERRNO;
/*
else if ((err==UNZ_OK) && (uData!=s->cur_file_info.wVersion))
err=UNZ_BADZIPFILE;
*/
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uFlags) != UNZ_OK)
err=UNZ_ERRNO;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&uData) != UNZ_OK)
err=UNZ_ERRNO;
else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compression_method))
err=UNZ_BADZIPFILE;
if ((err==UNZ_OK) && (s->cur_file_info.compression_method!=0) &&
(s->cur_file_info.compression_method!=Z_DEFLATED))
err=UNZ_BADZIPFILE;
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* date/time */
err=UNZ_ERRNO;
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* crc */
err=UNZ_ERRNO;
else if ((err==UNZ_OK) && (uData!=s->cur_file_info.crc) &&
((uFlags & 8)==0))
err=UNZ_BADZIPFILE;
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size compr */
err=UNZ_ERRNO;
else if ((err==UNZ_OK) && (uData!=s->cur_file_info.compressed_size) &&
((uFlags & 8)==0))
err=UNZ_BADZIPFILE;
if (unzlocal_getLong(&s->z_filefunc, s->filestream,&uData) != UNZ_OK) /* size uncompr */
err=UNZ_ERRNO;
else if ((err==UNZ_OK) && (uData!=s->cur_file_info.uncompressed_size) &&
((uFlags & 8)==0))
err=UNZ_BADZIPFILE;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_filename) != UNZ_OK)
err=UNZ_ERRNO;
else if ((err==UNZ_OK) && (size_filename!=s->cur_file_info.size_filename))
err=UNZ_BADZIPFILE;
*piSizeVar += (uInt)size_filename;
if (unzlocal_getShort(&s->z_filefunc, s->filestream,&size_extra_field) != UNZ_OK)
err=UNZ_ERRNO;
*poffset_local_extrafield= s->cur_file_info_internal.offset_curfile +
SIZEZIPLOCALHEADER + size_filename;
*psize_local_extrafield = (uInt)size_extra_field;
*piSizeVar += (uInt)size_extra_field;
return err;
}
/*
Open for reading data the current file in the zipfile.
If there is no error and the file is opened, the return value is UNZ_OK.
*/
extern int ZEXPORT unzOpenCurrentFile3 (file, method, level, raw, password)
unzFile file;
int* method;
int* level;
int raw;
const char* password;
{
int err=UNZ_OK;
uInt iSizeVar;
unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info;
uLong offset_local_extrafield; /* offset of the local extra field */
uInt size_local_extrafield; /* size of the local extra field */
# ifndef NOUNCRYPT
char source[12];
# else
if (password != NULL)
return UNZ_PARAMERROR;
# endif
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
if (!s->current_file_ok)
return UNZ_PARAMERROR;
if (s->pfile_in_zip_read != NULL)
unzCloseCurrentFile(file);
if (unzlocal_CheckCurrentFileCoherencyHeader(s,&iSizeVar,
&offset_local_extrafield,&size_local_extrafield)!=UNZ_OK)
return UNZ_BADZIPFILE;
pfile_in_zip_read_info = (file_in_zip_read_info_s*)
ALLOC(sizeof(file_in_zip_read_info_s));
if (pfile_in_zip_read_info==NULL)
return UNZ_INTERNALERROR;
pfile_in_zip_read_info->read_buffer=(char*)ALLOC(UNZ_BUFSIZE);
pfile_in_zip_read_info->offset_local_extrafield = offset_local_extrafield;
pfile_in_zip_read_info->size_local_extrafield = size_local_extrafield;
pfile_in_zip_read_info->pos_local_extrafield=0;
pfile_in_zip_read_info->raw=raw;
if (pfile_in_zip_read_info->read_buffer==NULL)
{
TRYFREE(pfile_in_zip_read_info);
return UNZ_INTERNALERROR;
}
pfile_in_zip_read_info->stream_initialised=0;
if (method!=NULL)
*method = (int)s->cur_file_info.compression_method;
if (level!=NULL)
{
*level = 6;
switch (s->cur_file_info.flag & 0x06)
{
case 6 : *level = 1; break;
case 4 : *level = 2; break;
case 2 : *level = 9; break;
}
}
if ((s->cur_file_info.compression_method!=0) &&
(s->cur_file_info.compression_method!=Z_DEFLATED))
err=UNZ_BADZIPFILE;
pfile_in_zip_read_info->crc32_wait=s->cur_file_info.crc;
pfile_in_zip_read_info->crc32=0;
pfile_in_zip_read_info->compression_method =
s->cur_file_info.compression_method;
pfile_in_zip_read_info->filestream=s->filestream;
pfile_in_zip_read_info->z_filefunc=s->z_filefunc;
pfile_in_zip_read_info->byte_before_the_zipfile=s->byte_before_the_zipfile;
pfile_in_zip_read_info->stream.total_out = 0;
if ((s->cur_file_info.compression_method==Z_DEFLATED) &&
(!raw))
{
pfile_in_zip_read_info->stream.zalloc = (alloc_func)0;
pfile_in_zip_read_info->stream.zfree = (free_func)0;
pfile_in_zip_read_info->stream.opaque = (voidpf)0;
pfile_in_zip_read_info->stream.next_in = (voidpf)0;
pfile_in_zip_read_info->stream.avail_in = 0;
err=inflateInit2(&pfile_in_zip_read_info->stream, -MAX_WBITS);
if (err == Z_OK)
pfile_in_zip_read_info->stream_initialised=1;
else
{
TRYFREE(pfile_in_zip_read_info);
return err;
}
/* windowBits is passed < 0 to tell that there is no zlib header.
* Note that in this case inflate *requires* an extra "dummy" byte
* after the compressed stream in order to complete decompression and
* return Z_STREAM_END.
* In unzip, i don't wait absolutely Z_STREAM_END because I known the
* size of both compressed and uncompressed data
*/
}
pfile_in_zip_read_info->rest_read_compressed =
s->cur_file_info.compressed_size ;
pfile_in_zip_read_info->rest_read_uncompressed =
s->cur_file_info.uncompressed_size ;
pfile_in_zip_read_info->pos_in_zipfile =
s->cur_file_info_internal.offset_curfile + SIZEZIPLOCALHEADER +
iSizeVar;
pfile_in_zip_read_info->stream.avail_in = (uInt)0;
s->pfile_in_zip_read = pfile_in_zip_read_info;
# ifndef NOUNCRYPT
if (password != NULL)
{
int i;
s->pcrc_32_tab = get_crc_table();
init_keys(password,s->keys,s->pcrc_32_tab);
if (ZSEEK(s->z_filefunc, s->filestream,
s->pfile_in_zip_read->pos_in_zipfile +
s->pfile_in_zip_read->byte_before_the_zipfile,
SEEK_SET)!=0)
return UNZ_INTERNALERROR;
if(ZREAD(s->z_filefunc, s->filestream,source, 12)<12)
return UNZ_INTERNALERROR;
for (i = 0; i<12; i++)
zdecode(s->keys,s->pcrc_32_tab,source[i]);
s->pfile_in_zip_read->pos_in_zipfile+=12;
s->encrypted=1;
}
# endif
return UNZ_OK;
}
extern int ZEXPORT unzOpenCurrentFile (file)
unzFile file;
{
return unzOpenCurrentFile3(file, NULL, NULL, 0, NULL);
}
extern int ZEXPORT unzOpenCurrentFilePassword (file, password)
unzFile file;
const char* password;
{
return unzOpenCurrentFile3(file, NULL, NULL, 0, password);
}
extern int ZEXPORT unzOpenCurrentFile2 (file,method,level,raw)
unzFile file;
int* method;
int* level;
int raw;
{
return unzOpenCurrentFile3(file, method, level, raw, NULL);
}
/*
Read bytes from the current file.
buf contain buffer where data must be copied
len the size of buf.
return the number of byte copied if somes bytes are copied
return 0 if the end of file was reached
return <0 with error code if there is an error
(UNZ_ERRNO for IO error, or zLib error for uncompress error)
*/
extern int ZEXPORT unzReadCurrentFile (file, buf, len)
unzFile file;
voidp buf;
unsigned len;
{
int err=UNZ_OK;
uInt iRead = 0;
unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
pfile_in_zip_read_info=s->pfile_in_zip_read;
if (pfile_in_zip_read_info==NULL)
return UNZ_PARAMERROR;
if ((pfile_in_zip_read_info->read_buffer == NULL))
return UNZ_END_OF_LIST_OF_FILE;
if (len==0)
return 0;
pfile_in_zip_read_info->stream.next_out = (Bytef*)buf;
pfile_in_zip_read_info->stream.avail_out = (uInt)len;
if ((len>pfile_in_zip_read_info->rest_read_uncompressed) &&
(!(pfile_in_zip_read_info->raw)))
pfile_in_zip_read_info->stream.avail_out =
(uInt)pfile_in_zip_read_info->rest_read_uncompressed;
if ((len>pfile_in_zip_read_info->rest_read_compressed+
pfile_in_zip_read_info->stream.avail_in) &&
(pfile_in_zip_read_info->raw))
pfile_in_zip_read_info->stream.avail_out =
(uInt)pfile_in_zip_read_info->rest_read_compressed+
pfile_in_zip_read_info->stream.avail_in;
while (pfile_in_zip_read_info->stream.avail_out>0)
{
if ((pfile_in_zip_read_info->stream.avail_in==0) &&
(pfile_in_zip_read_info->rest_read_compressed>0))
{
uInt uReadThis = UNZ_BUFSIZE;
if (pfile_in_zip_read_info->rest_read_compressedrest_read_compressed;
if (uReadThis == 0)
return UNZ_EOF;
if (ZSEEK(pfile_in_zip_read_info->z_filefunc,
pfile_in_zip_read_info->filestream,
pfile_in_zip_read_info->pos_in_zipfile +
pfile_in_zip_read_info->byte_before_the_zipfile,
ZLIB_FILEFUNC_SEEK_SET)!=0)
return UNZ_ERRNO;
if (ZREAD(pfile_in_zip_read_info->z_filefunc,
pfile_in_zip_read_info->filestream,
pfile_in_zip_read_info->read_buffer,
uReadThis)!=uReadThis)
return UNZ_ERRNO;
# ifndef NOUNCRYPT
if(s->encrypted)
{
uInt i;
for(i=0;iread_buffer[i] =
zdecode(s->keys,s->pcrc_32_tab,
pfile_in_zip_read_info->read_buffer[i]);
}
# endif
pfile_in_zip_read_info->pos_in_zipfile += uReadThis;
pfile_in_zip_read_info->rest_read_compressed-=uReadThis;
pfile_in_zip_read_info->stream.next_in =
(Bytef*)pfile_in_zip_read_info->read_buffer;
pfile_in_zip_read_info->stream.avail_in = (uInt)uReadThis;
}
if ((pfile_in_zip_read_info->compression_method==0) || (pfile_in_zip_read_info->raw))
{
uInt uDoCopy,i ;
if ((pfile_in_zip_read_info->stream.avail_in == 0) &&
(pfile_in_zip_read_info->rest_read_compressed == 0))
return (iRead==0) ? UNZ_EOF : iRead;
if (pfile_in_zip_read_info->stream.avail_out <
pfile_in_zip_read_info->stream.avail_in)
uDoCopy = pfile_in_zip_read_info->stream.avail_out ;
else
uDoCopy = pfile_in_zip_read_info->stream.avail_in ;
for (i=0;istream.next_out+i) =
*(pfile_in_zip_read_info->stream.next_in+i);
pfile_in_zip_read_info->crc32 = crc32(pfile_in_zip_read_info->crc32,
pfile_in_zip_read_info->stream.next_out,
uDoCopy);
pfile_in_zip_read_info->rest_read_uncompressed-=uDoCopy;
pfile_in_zip_read_info->stream.avail_in -= uDoCopy;
pfile_in_zip_read_info->stream.avail_out -= uDoCopy;
pfile_in_zip_read_info->stream.next_out += uDoCopy;
pfile_in_zip_read_info->stream.next_in += uDoCopy;
pfile_in_zip_read_info->stream.total_out += uDoCopy;
iRead += uDoCopy;
}
else
{
uLong uTotalOutBefore,uTotalOutAfter;
const Bytef *bufBefore;
uLong uOutThis;
int flush=Z_SYNC_FLUSH;
uTotalOutBefore = pfile_in_zip_read_info->stream.total_out;
bufBefore = pfile_in_zip_read_info->stream.next_out;
/*
if ((pfile_in_zip_read_info->rest_read_uncompressed ==
pfile_in_zip_read_info->stream.avail_out) &&
(pfile_in_zip_read_info->rest_read_compressed == 0))
flush = Z_FINISH;
*/
err=inflate(&pfile_in_zip_read_info->stream,flush);
if ((err>=0) && (pfile_in_zip_read_info->stream.msg!=NULL))
err = Z_DATA_ERROR;
uTotalOutAfter = pfile_in_zip_read_info->stream.total_out;
uOutThis = uTotalOutAfter-uTotalOutBefore;
pfile_in_zip_read_info->crc32 =
crc32(pfile_in_zip_read_info->crc32,bufBefore,
(uInt)(uOutThis));
pfile_in_zip_read_info->rest_read_uncompressed -=
uOutThis;
iRead += (uInt)(uTotalOutAfter - uTotalOutBefore);
if (err==Z_STREAM_END)
return (iRead==0) ? UNZ_EOF : iRead;
if (err!=Z_OK)
break;
}
}
if (err==Z_OK)
return iRead;
return err;
}
/*
Give the current position in uncompressed data
*/
extern z_off_t ZEXPORT unztell (file)
unzFile file;
{
unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
pfile_in_zip_read_info=s->pfile_in_zip_read;
if (pfile_in_zip_read_info==NULL)
return UNZ_PARAMERROR;
return (z_off_t)pfile_in_zip_read_info->stream.total_out;
}
/*
return 1 if the end of file was reached, 0 elsewhere
*/
extern int ZEXPORT unzeof (file)
unzFile file;
{
unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
pfile_in_zip_read_info=s->pfile_in_zip_read;
if (pfile_in_zip_read_info==NULL)
return UNZ_PARAMERROR;
if (pfile_in_zip_read_info->rest_read_uncompressed == 0)
return 1;
else
return 0;
}
/*
Read extra field from the current file (opened by unzOpenCurrentFile)
This is the local-header version of the extra field (sometimes, there is
more info in the local-header version than in the central-header)
if buf==NULL, it return the size of the local extra field that can be read
if buf!=NULL, len is the size of the buffer, the extra header is copied in
buf.
the return value is the number of bytes copied in buf, or (if <0)
the error code
*/
extern int ZEXPORT unzGetLocalExtrafield (file,buf,len)
unzFile file;
voidp buf;
unsigned len;
{
unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info;
uInt read_now;
uLong size_to_read;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
pfile_in_zip_read_info=s->pfile_in_zip_read;
if (pfile_in_zip_read_info==NULL)
return UNZ_PARAMERROR;
size_to_read = (pfile_in_zip_read_info->size_local_extrafield -
pfile_in_zip_read_info->pos_local_extrafield);
if (buf==NULL)
return (int)size_to_read;
if (len>size_to_read)
read_now = (uInt)size_to_read;
else
read_now = (uInt)len ;
if (read_now==0)
return 0;
if (ZSEEK(pfile_in_zip_read_info->z_filefunc,
pfile_in_zip_read_info->filestream,
pfile_in_zip_read_info->offset_local_extrafield +
pfile_in_zip_read_info->pos_local_extrafield,
ZLIB_FILEFUNC_SEEK_SET)!=0)
return UNZ_ERRNO;
if (ZREAD(pfile_in_zip_read_info->z_filefunc,
pfile_in_zip_read_info->filestream,
buf,read_now)!=read_now)
return UNZ_ERRNO;
return (int)read_now;
}
/*
Close the file in zip opened with unzipOpenCurrentFile
Return UNZ_CRCERROR if all the file was read but the CRC is not good
*/
extern int ZEXPORT unzCloseCurrentFile (file)
unzFile file;
{
int err=UNZ_OK;
unz_s* s;
file_in_zip_read_info_s* pfile_in_zip_read_info;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
pfile_in_zip_read_info=s->pfile_in_zip_read;
if (pfile_in_zip_read_info==NULL)
return UNZ_PARAMERROR;
if ((pfile_in_zip_read_info->rest_read_uncompressed == 0) &&
(!pfile_in_zip_read_info->raw))
{
if (pfile_in_zip_read_info->crc32 != pfile_in_zip_read_info->crc32_wait)
err=UNZ_CRCERROR;
}
TRYFREE(pfile_in_zip_read_info->read_buffer);
pfile_in_zip_read_info->read_buffer = NULL;
if (pfile_in_zip_read_info->stream_initialised)
inflateEnd(&pfile_in_zip_read_info->stream);
pfile_in_zip_read_info->stream_initialised = 0;
TRYFREE(pfile_in_zip_read_info);
s->pfile_in_zip_read=NULL;
return err;
}
/*
Get the global comment string of the ZipFile, in the szComment buffer.
uSizeBuf is the size of the szComment buffer.
return the number of byte copied or an error code <0
*/
extern int ZEXPORT unzGetGlobalComment (file, szComment, uSizeBuf)
unzFile file;
char *szComment;
uLong uSizeBuf;
{
int err=UNZ_OK;
unz_s* s;
uLong uReadThis ;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
uReadThis = uSizeBuf;
if (uReadThis>s->gi.size_comment)
uReadThis = s->gi.size_comment;
if (ZSEEK(s->z_filefunc,s->filestream,s->central_pos+22,ZLIB_FILEFUNC_SEEK_SET)!=0)
return UNZ_ERRNO;
if (uReadThis>0)
{
*szComment='\0';
if (ZREAD(s->z_filefunc,s->filestream,szComment,uReadThis)!=uReadThis)
return UNZ_ERRNO;
}
if ((szComment != NULL) && (uSizeBuf > s->gi.size_comment))
*(szComment+s->gi.size_comment)='\0';
return (int)uReadThis;
}
/* Additions by RX '2004 */
extern uLong ZEXPORT unzGetOffset (file)
unzFile file;
{
unz_s* s;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
if (!s->current_file_ok)
return 0;
if (s->gi.number_entry != 0 && s->gi.number_entry != 0xffff)
if (s->num_file==s->gi.number_entry)
return 0;
return s->pos_in_central_dir;
}
extern int ZEXPORT unzSetOffset (file, pos)
unzFile file;
uLong pos;
{
unz_s* s;
int err;
if (file==NULL)
return UNZ_PARAMERROR;
s=(unz_s*)file;
s->pos_in_central_dir = pos;
s->num_file = s->gi.number_entry; /* hack */
err = unzlocal_GetCurrentFileInfoInternal(file,&s->cur_file_info,
&s->cur_file_info_internal,
NULL,0,NULL,0,NULL,0);
s->current_file_ok = (err == UNZ_OK);
return err;
}
================================================
FILE: AePubReader/Classes/minizip/unzip.h
================================================
/* unzip.h -- IO for uncompress .zip files using zlib
Version 1.01e, February 12th, 2005
Copyright (C) 1998-2005 Gilles Vollant
This unzip package allow extract file from .ZIP file, compatible with PKZip 2.04g
WinZip, InfoZip tools and compatible.
Multi volume ZipFile (span) are not supported.
Encryption compatible with pkzip 2.04g only supported
Old compressions used by old PKZip 1.x are not supported
I WAIT FEEDBACK at mail info@winimage.com
Visit also http://www.winimage.com/zLibDll/unzip.htm for evolution
Condition of use and distribution are the same than zlib :
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
/* for more info about .ZIP format, see
http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip
http://www.info-zip.org/pub/infozip/doc/
PkWare has also a specification at :
ftp://ftp.pkware.com/probdesc.zip
*/
#ifndef _unz_H
#define _unz_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _ZLIB_H
#include "zlib.h"
#endif
#ifndef _ZLIBIOAPI_H
#include "ioapi.h"
#endif
#if defined(STRICTUNZIP) || defined(STRICTZIPUNZIP)
/* like the STRICT of WIN32, we define a pointer that cannot be converted
from (void*) without cast */
typedef struct TagunzFile__ { int unused; } unzFile__;
typedef unzFile__ *unzFile;
#else
typedef voidp unzFile;
#endif
#define UNZ_OK (0)
#define UNZ_END_OF_LIST_OF_FILE (-100)
#define UNZ_ERRNO (Z_ERRNO)
#define UNZ_EOF (0)
#define UNZ_PARAMERROR (-102)
#define UNZ_BADZIPFILE (-103)
#define UNZ_INTERNALERROR (-104)
#define UNZ_CRCERROR (-105)
/* tm_unz contain date/time info */
typedef struct tm_unz_s
{
uInt tm_sec; /* seconds after the minute - [0,59] */
uInt tm_min; /* minutes after the hour - [0,59] */
uInt tm_hour; /* hours since midnight - [0,23] */
uInt tm_mday; /* day of the month - [1,31] */
uInt tm_mon; /* months since January - [0,11] */
uInt tm_year; /* years - [1980..2044] */
} tm_unz;
/* unz_global_info structure contain global data about the ZIPfile
These data comes from the end of central dir */
typedef struct unz_global_info_s
{
uLong number_entry; /* total number of entries in
the central dir on this disk */
uLong size_comment; /* size of the global comment of the zipfile */
} unz_global_info;
/* unz_file_info contain information about a file in the zipfile */
typedef struct unz_file_info_s
{
uLong version; /* version made by 2 bytes */
uLong version_needed; /* version needed to extract 2 bytes */
uLong flag; /* general purpose bit flag 2 bytes */
uLong compression_method; /* compression method 2 bytes */
uLong dosDate; /* last mod file date in Dos fmt 4 bytes */
uLong crc; /* crc-32 4 bytes */
uLong compressed_size; /* compressed size 4 bytes */
uLong uncompressed_size; /* uncompressed size 4 bytes */
uLong size_filename; /* filename length 2 bytes */
uLong size_file_extra; /* extra field length 2 bytes */
uLong size_file_comment; /* file comment length 2 bytes */
uLong disk_num_start; /* disk number start 2 bytes */
uLong internal_fa; /* internal file attributes 2 bytes */
uLong external_fa; /* external file attributes 4 bytes */
tm_unz tmu_date;
} unz_file_info;
extern int ZEXPORT unzStringFileNameCompare OF ((const char* fileName1,
const char* fileName2,
int iCaseSensitivity));
/*
Compare two filename (fileName1,fileName2).
If iCaseSenisivity = 1, comparision is case sensitivity (like strcmp)
If iCaseSenisivity = 2, comparision is not case sensitivity (like strcmpi
or strcasecmp)
If iCaseSenisivity = 0, case sensitivity is defaut of your operating system
(like 1 on Unix, 2 on Windows)
*/
extern unzFile ZEXPORT unzOpen OF((const char *path));
/*
Open a Zip file. path contain the full pathname (by example,
on a Windows XP computer "c:\\zlib\\zlib113.zip" or on an Unix computer
"zlib/zlib113.zip".
If the zipfile cannot be opened (file don't exist or in not valid), the
return value is NULL.
Else, the return value is a unzFile Handle, usable with other function
of this unzip package.
*/
extern unzFile ZEXPORT unzOpen2 OF((const char *path,
zlib_filefunc_def* pzlib_filefunc_def));
/*
Open a Zip file, like unzOpen, but provide a set of file low level API
for read/write the zip file (see ioapi.h)
*/
extern int ZEXPORT unzClose OF((unzFile file));
/*
Close a ZipFile opened with unzipOpen.
If there is files inside the .Zip opened with unzOpenCurrentFile (see later),
these files MUST be closed with unzipCloseCurrentFile before call unzipClose.
return UNZ_OK if there is no problem. */
extern int ZEXPORT unzGetGlobalInfo OF((unzFile file,
unz_global_info *pglobal_info));
/*
Write info about the ZipFile in the *pglobal_info structure.
No preparation of the structure is needed
return UNZ_OK if there is no problem. */
extern int ZEXPORT unzGetGlobalComment OF((unzFile file,
char *szComment,
uLong uSizeBuf));
/*
Get the global comment string of the ZipFile, in the szComment buffer.
uSizeBuf is the size of the szComment buffer.
return the number of byte copied or an error code <0
*/
/***************************************************************************/
/* Unzip package allow you browse the directory of the zipfile */
extern int ZEXPORT unzGoToFirstFile OF((unzFile file));
/*
Set the current file of the zipfile to the first file.
return UNZ_OK if there is no problem
*/
extern int ZEXPORT unzGoToNextFile OF((unzFile file));
/*
Set the current file of the zipfile to the next file.
return UNZ_OK if there is no problem
return UNZ_END_OF_LIST_OF_FILE if the actual file was the latest.
*/
extern int ZEXPORT unzLocateFile OF((unzFile file,
const char *szFileName,
int iCaseSensitivity));
/*
Try locate the file szFileName in the zipfile.
For the iCaseSensitivity signification, see unzStringFileNameCompare
return value :
UNZ_OK if the file is found. It becomes the current file.
UNZ_END_OF_LIST_OF_FILE if the file is not found
*/
/* ****************************************** */
/* Ryan supplied functions */
/* unz_file_info contain information about a file in the zipfile */
typedef struct unz_file_pos_s
{
uLong pos_in_zip_directory; /* offset in zip file directory */
uLong num_of_file; /* # of file */
} unz_file_pos;
extern int ZEXPORT unzGetFilePos(
unzFile file,
unz_file_pos* file_pos);
extern int ZEXPORT unzGoToFilePos(
unzFile file,
unz_file_pos* file_pos);
/* ****************************************** */
extern int ZEXPORT unzGetCurrentFileInfo OF((unzFile file,
unz_file_info *pfile_info,
char *szFileName,
uLong fileNameBufferSize,
void *extraField,
uLong extraFieldBufferSize,
char *szComment,
uLong commentBufferSize));
/*
Get Info about the current file
if pfile_info!=NULL, the *pfile_info structure will contain somes info about
the current file
if szFileName!=NULL, the filemane string will be copied in szFileName
(fileNameBufferSize is the size of the buffer)
if extraField!=NULL, the extra field information will be copied in extraField
(extraFieldBufferSize is the size of the buffer).
This is the Central-header version of the extra field
if szComment!=NULL, the comment string of the file will be copied in szComment
(commentBufferSize is the size of the buffer)
*/
/***************************************************************************/
/* for reading the content of the current zipfile, you can open it, read data
from it, and close it (you can close it before reading all the file)
*/
extern int ZEXPORT unzOpenCurrentFile OF((unzFile file));
/*
Open for reading data the current file in the zipfile.
If there is no error, the return value is UNZ_OK.
*/
extern int ZEXPORT unzOpenCurrentFilePassword OF((unzFile file,
const char* password));
/*
Open for reading data the current file in the zipfile.
password is a crypting password
If there is no error, the return value is UNZ_OK.
*/
extern int ZEXPORT unzOpenCurrentFile2 OF((unzFile file,
int* method,
int* level,
int raw));
/*
Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
if raw==1
*method will receive method of compression, *level will receive level of
compression
note : you can set level parameter as NULL (if you did not want known level,
but you CANNOT set method parameter as NULL
*/
extern int ZEXPORT unzOpenCurrentFile3 OF((unzFile file,
int* method,
int* level,
int raw,
const char* password));
/*
Same than unzOpenCurrentFile, but open for read raw the file (not uncompress)
if raw==1
*method will receive method of compression, *level will receive level of
compression
note : you can set level parameter as NULL (if you did not want known level,
but you CANNOT set method parameter as NULL
*/
extern int ZEXPORT unzCloseCurrentFile OF((unzFile file));
/*
Close the file in zip opened with unzOpenCurrentFile
Return UNZ_CRCERROR if all the file was read but the CRC is not good
*/
extern int ZEXPORT unzReadCurrentFile OF((unzFile file,
voidp buf,
unsigned len));
/*
Read bytes from the current file (opened by unzOpenCurrentFile)
buf contain buffer where data must be copied
len the size of buf.
return the number of byte copied if somes bytes are copied
return 0 if the end of file was reached
return <0 with error code if there is an error
(UNZ_ERRNO for IO error, or zLib error for uncompress error)
*/
extern z_off_t ZEXPORT unztell OF((unzFile file));
/*
Give the current position in uncompressed data
*/
extern int ZEXPORT unzeof OF((unzFile file));
/*
return 1 if the end of file was reached, 0 elsewhere
*/
extern int ZEXPORT unzGetLocalExtrafield OF((unzFile file,
voidp buf,
unsigned len));
/*
Read extra field from the current file (opened by unzOpenCurrentFile)
This is the local-header version of the extra field (sometimes, there is
more info in the local-header version than in the central-header)
if buf==NULL, it return the size of the local extra field
if buf!=NULL, len is the size of the buffer, the extra header is copied in
buf.
the return value is the number of bytes copied in buf, or (if <0)
the error code
*/
/***************************************************************************/
/* Get the current file offset */
extern uLong ZEXPORT unzGetOffset (unzFile file);
/* Set the current file offset */
extern int ZEXPORT unzSetOffset (unzFile file, uLong pos);
#ifdef __cplusplus
}
#endif
#endif /* _unz_H */
================================================
FILE: AePubReader/Classes/minizip/zip.c
================================================
/* zip.c -- IO on .zip files using zlib
Version 1.01e, February 12th, 2005
27 Dec 2004 Rolf Kalbermatter
Modification to zipOpen2 to support globalComment retrieval.
Copyright (C) 1998-2005 Gilles Vollant
Read zip.h for more info
*/
#include
#include
#include
#include
#include "zlib.h"
#include "zip.h"
#ifdef STDC
# include
# include
# include
#endif
#ifdef NO_ERRNO_H
extern int errno;
#else
# include
#endif
#ifndef local
# define local static
#endif
/* compile with -Dlocal if your debugger can't find static symbols */
#ifndef VERSIONMADEBY
# define VERSIONMADEBY (0x0) /* platform depedent */
#endif
#ifndef Z_BUFSIZE
#define Z_BUFSIZE (16384)
#endif
#ifndef Z_MAXFILENAMEINZIP
#define Z_MAXFILENAMEINZIP (256)
#endif
#ifndef ALLOC
# define ALLOC(size) (malloc(size))
#endif
#ifndef TRYFREE
# define TRYFREE(p) {if (p) free(p);}
#endif
/*
#define SIZECENTRALDIRITEM (0x2e)
#define SIZEZIPLOCALHEADER (0x1e)
*/
/* I've found an old Unix (a SunOS 4.1.3_U1) without all SEEK_* defined.... */
#ifndef SEEK_CUR
#define SEEK_CUR 1
#endif
#ifndef SEEK_END
#define SEEK_END 2
#endif
#ifndef SEEK_SET
#define SEEK_SET 0
#endif
#ifndef DEF_MEM_LEVEL
#if MAX_MEM_LEVEL >= 8
# define DEF_MEM_LEVEL 8
#else
# define DEF_MEM_LEVEL MAX_MEM_LEVEL
#endif
#endif
const char zip_copyright[] =
" zip 1.01 Copyright 1998-2004 Gilles Vollant - http://www.winimage.com/zLibDll";
#define SIZEDATA_INDATABLOCK (4096-(4*4))
#define LOCALHEADERMAGIC (0x04034b50)
#define CENTRALHEADERMAGIC (0x02014b50)
#define ENDHEADERMAGIC (0x06054b50)
#define FLAG_LOCALHEADER_OFFSET (0x06)
#define CRC_LOCALHEADER_OFFSET (0x0e)
#define SIZECENTRALHEADER (0x2e) /* 46 */
typedef struct linkedlist_datablock_internal_s
{
struct linkedlist_datablock_internal_s* next_datablock;
uLong avail_in_this_block;
uLong filled_in_this_block;
uLong unused; /* for future use and alignement */
unsigned char data[SIZEDATA_INDATABLOCK];
} linkedlist_datablock_internal;
typedef struct linkedlist_data_s
{
linkedlist_datablock_internal* first_block;
linkedlist_datablock_internal* last_block;
} linkedlist_data;
typedef struct
{
z_stream stream; /* zLib stream structure for inflate */
int stream_initialised; /* 1 is stream is initialised */
uInt pos_in_buffered_data; /* last written byte in buffered_data */
uLong pos_local_header; /* offset of the local header of the file
currenty writing */
char* central_header; /* central header data for the current file */
uLong size_centralheader; /* size of the central header for cur file */
uLong flag; /* flag of the file currently writing */
int method; /* compression method of file currenty wr.*/
int raw; /* 1 for directly writing raw data */
Byte buffered_data[Z_BUFSIZE];/* buffer contain compressed data to be writ*/
uLong dosDate;
uLong crc32;
int encrypt;
#ifndef NOCRYPT
unsigned long keys[3]; /* keys defining the pseudo-random sequence */
const unsigned long* pcrc_32_tab;
int crypt_header_size;
#endif
} curfile_info;
typedef struct
{
zlib_filefunc_def z_filefunc;
voidpf filestream; /* io structore of the zipfile */
linkedlist_data central_dir;/* datablock with central dir in construction*/
int in_opened_file_inzip; /* 1 if a file in the zip is currently writ.*/
curfile_info ci; /* info on the file curretly writing */
uLong begin_pos; /* position of the beginning of the zipfile */
uLong add_position_when_writting_offset;
uLong number_entry;
#ifndef NO_ADDFILEINEXISTINGZIP
char *globalcomment;
#endif
} zip_internal;
#ifndef NOCRYPT
#define INCLUDECRYPTINGCODE_IFCRYPTALLOWED
#include "crypt.h"
#endif
local linkedlist_datablock_internal* allocate_new_datablock()
{
linkedlist_datablock_internal* ldi;
ldi = (linkedlist_datablock_internal*)
ALLOC(sizeof(linkedlist_datablock_internal));
if (ldi!=NULL)
{
ldi->next_datablock = NULL ;
ldi->filled_in_this_block = 0 ;
ldi->avail_in_this_block = SIZEDATA_INDATABLOCK ;
}
return ldi;
}
local void free_datablock(ldi)
linkedlist_datablock_internal* ldi;
{
while (ldi!=NULL)
{
linkedlist_datablock_internal* ldinext = ldi->next_datablock;
TRYFREE(ldi);
ldi = ldinext;
}
}
local void init_linkedlist(ll)
linkedlist_data* ll;
{
ll->first_block = ll->last_block = NULL;
}
local void free_linkedlist(ll)
linkedlist_data* ll;
{
free_datablock(ll->first_block);
ll->first_block = ll->last_block = NULL;
}
local int add_data_in_datablock(ll,buf,len)
linkedlist_data* ll;
const void* buf;
uLong len;
{
linkedlist_datablock_internal* ldi;
const unsigned char* from_copy;
if (ll==NULL)
return ZIP_INTERNALERROR;
if (ll->last_block == NULL)
{
ll->first_block = ll->last_block = allocate_new_datablock();
if (ll->first_block == NULL)
return ZIP_INTERNALERROR;
}
ldi = ll->last_block;
from_copy = (unsigned char*)buf;
while (len>0)
{
uInt copy_this;
uInt i;
unsigned char* to_copy;
if (ldi->avail_in_this_block==0)
{
ldi->next_datablock = allocate_new_datablock();
if (ldi->next_datablock == NULL)
return ZIP_INTERNALERROR;
ldi = ldi->next_datablock ;
ll->last_block = ldi;
}
if (ldi->avail_in_this_block < len)
copy_this = (uInt)ldi->avail_in_this_block;
else
copy_this = (uInt)len;
to_copy = &(ldi->data[ldi->filled_in_this_block]);
for (i=0;ifilled_in_this_block += copy_this;
ldi->avail_in_this_block -= copy_this;
from_copy += copy_this ;
len -= copy_this;
}
return ZIP_OK;
}
/****************************************************************************/
#ifndef NO_ADDFILEINEXISTINGZIP
/* ===========================================================================
Inputs a long in LSB order to the given file
nbByte == 1, 2 or 4 (byte, short or long)
*/
local int ziplocal_putValue OF((const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream, uLong x, int nbByte));
local int ziplocal_putValue (pzlib_filefunc_def, filestream, x, nbByte)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong x;
int nbByte;
{
unsigned char buf[4];
int n;
for (n = 0; n < nbByte; n++)
{
buf[n] = (unsigned char)(x & 0xff);
x >>= 8;
}
if (x != 0)
{ /* data overflow - hack for ZIP64 (X Roche) */
for (n = 0; n < nbByte; n++)
{
buf[n] = 0xff;
}
}
if (ZWRITE(*pzlib_filefunc_def,filestream,buf,nbByte)!=(uLong)nbByte)
return ZIP_ERRNO;
else
return ZIP_OK;
}
local void ziplocal_putValue_inmemory OF((void* dest, uLong x, int nbByte));
local void ziplocal_putValue_inmemory (dest, x, nbByte)
void* dest;
uLong x;
int nbByte;
{
unsigned char* buf=(unsigned char*)dest;
int n;
for (n = 0; n < nbByte; n++) {
buf[n] = (unsigned char)(x & 0xff);
x >>= 8;
}
if (x != 0)
{ /* data overflow - hack for ZIP64 */
for (n = 0; n < nbByte; n++)
{
buf[n] = 0xff;
}
}
}
/****************************************************************************/
local uLong ziplocal_TmzDateToDosDate(ptm,dosDate)
const tm_zip* ptm;
uLong dosDate;
{
uLong year = (uLong)ptm->tm_year;
if (year>1980)
year-=1980;
else if (year>80)
year-=80;
return
(uLong) (((ptm->tm_mday) + (32 * (ptm->tm_mon+1)) + (512 * year)) << 16) |
((ptm->tm_sec/2) + (32* ptm->tm_min) + (2048 * (uLong)ptm->tm_hour));
}
/****************************************************************************/
local int ziplocal_getByte OF((
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream,
int *pi));
local int ziplocal_getByte(pzlib_filefunc_def,filestream,pi)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
int *pi;
{
unsigned char c;
int err = (int)ZREAD(*pzlib_filefunc_def,filestream,&c,1);
if (err==1)
{
*pi = (int)c;
return ZIP_OK;
}
else
{
if (ZERROR(*pzlib_filefunc_def,filestream))
return ZIP_ERRNO;
else
return ZIP_EOF;
}
}
/* ===========================================================================
Reads a long in LSB order from the given gz_stream. Sets
*/
local int ziplocal_getShort OF((
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream,
uLong *pX));
local int ziplocal_getShort (pzlib_filefunc_def,filestream,pX)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong *pX;
{
uLong x ;
int i;
int err;
err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i);
x = (uLong)i;
if (err==ZIP_OK)
err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i);
x += ((uLong)i)<<8;
if (err==ZIP_OK)
*pX = x;
else
*pX = 0;
return err;
}
local int ziplocal_getLong OF((
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream,
uLong *pX));
local int ziplocal_getLong (pzlib_filefunc_def,filestream,pX)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
uLong *pX;
{
uLong x ;
int i;
int err;
err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i);
x = (uLong)i;
if (err==ZIP_OK)
err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i);
x += ((uLong)i)<<8;
if (err==ZIP_OK)
err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i);
x += ((uLong)i)<<16;
if (err==ZIP_OK)
err = ziplocal_getByte(pzlib_filefunc_def,filestream,&i);
x += ((uLong)i)<<24;
if (err==ZIP_OK)
*pX = x;
else
*pX = 0;
return err;
}
#ifndef BUFREADCOMMENT
#define BUFREADCOMMENT (0x400)
#endif
/*
Locate the Central directory of a zipfile (at the end, just before
the global comment)
*/
local uLong ziplocal_SearchCentralDir OF((
const zlib_filefunc_def* pzlib_filefunc_def,
voidpf filestream));
local uLong ziplocal_SearchCentralDir(pzlib_filefunc_def,filestream)
const zlib_filefunc_def* pzlib_filefunc_def;
voidpf filestream;
{
unsigned char* buf;
uLong uSizeFile;
uLong uBackRead;
uLong uMaxBack=0xffff; /* maximum size of global comment */
uLong uPosFound=0;
if (ZSEEK(*pzlib_filefunc_def,filestream,0,ZLIB_FILEFUNC_SEEK_END) != 0)
return 0;
uSizeFile = ZTELL(*pzlib_filefunc_def,filestream);
if (uMaxBack>uSizeFile)
uMaxBack = uSizeFile;
buf = (unsigned char*)ALLOC(BUFREADCOMMENT+4);
if (buf==NULL)
return 0;
uBackRead = 4;
while (uBackReaduMaxBack)
uBackRead = uMaxBack;
else
uBackRead+=BUFREADCOMMENT;
uReadPos = uSizeFile-uBackRead ;
uReadSize = ((BUFREADCOMMENT+4) < (uSizeFile-uReadPos)) ?
(BUFREADCOMMENT+4) : (uSizeFile-uReadPos);
if (ZSEEK(*pzlib_filefunc_def,filestream,uReadPos,ZLIB_FILEFUNC_SEEK_SET)!=0)
break;
if (ZREAD(*pzlib_filefunc_def,filestream,buf,uReadSize)!=uReadSize)
break;
for (i=(int)uReadSize-3; (i--)>0;)
if (((*(buf+i))==0x50) && ((*(buf+i+1))==0x4b) &&
((*(buf+i+2))==0x05) && ((*(buf+i+3))==0x06))
{
uPosFound = uReadPos+i;
break;
}
if (uPosFound!=0)
break;
}
TRYFREE(buf);
return uPosFound;
}
#endif /* !NO_ADDFILEINEXISTINGZIP*/
/************************************************************/
extern zipFile ZEXPORT zipOpen2 (pathname, append, globalcomment, pzlib_filefunc_def)
const char *pathname;
int append;
zipcharpc* globalcomment;
zlib_filefunc_def* pzlib_filefunc_def;
{
zip_internal ziinit;
zip_internal* zi;
int err=ZIP_OK;
if (pzlib_filefunc_def==NULL)
fill_fopen_filefunc(&ziinit.z_filefunc);
else
ziinit.z_filefunc = *pzlib_filefunc_def;
ziinit.filestream = (*(ziinit.z_filefunc.zopen_file))
(ziinit.z_filefunc.opaque,
pathname,
(append == APPEND_STATUS_CREATE) ?
(ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_CREATE) :
(ZLIB_FILEFUNC_MODE_READ | ZLIB_FILEFUNC_MODE_WRITE | ZLIB_FILEFUNC_MODE_EXISTING));
if (ziinit.filestream == NULL)
return NULL;
ziinit.begin_pos = ZTELL(ziinit.z_filefunc,ziinit.filestream);
ziinit.in_opened_file_inzip = 0;
ziinit.ci.stream_initialised = 0;
ziinit.number_entry = 0;
ziinit.add_position_when_writting_offset = 0;
init_linkedlist(&(ziinit.central_dir));
zi = (zip_internal*)ALLOC(sizeof(zip_internal));
if (zi==NULL)
{
ZCLOSE(ziinit.z_filefunc,ziinit.filestream);
return NULL;
}
/* now we add file in a zipfile */
# ifndef NO_ADDFILEINEXISTINGZIP
ziinit.globalcomment = NULL;
if (append == APPEND_STATUS_ADDINZIP)
{
uLong byte_before_the_zipfile;/* byte before the zipfile, (>0 for sfx)*/
uLong size_central_dir; /* size of the central directory */
uLong offset_central_dir; /* offset of start of central directory */
uLong central_pos,uL;
uLong number_disk; /* number of the current dist, used for
spaning ZIP, unsupported, always 0*/
uLong number_disk_with_CD; /* number the the disk with central dir, used
for spaning ZIP, unsupported, always 0*/
uLong number_entry;
uLong number_entry_CD; /* total number of entries in
the central dir
(same than number_entry on nospan) */
uLong size_comment;
central_pos = ziplocal_SearchCentralDir(&ziinit.z_filefunc,ziinit.filestream);
if (central_pos==0)
err=ZIP_ERRNO;
if (ZSEEK(ziinit.z_filefunc, ziinit.filestream,
central_pos,ZLIB_FILEFUNC_SEEK_SET)!=0)
err=ZIP_ERRNO;
/* the signature, already checked */
if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&uL)!=ZIP_OK)
err=ZIP_ERRNO;
/* number of this disk */
if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_disk)!=ZIP_OK)
err=ZIP_ERRNO;
/* number of the disk with the start of the central directory */
if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_disk_with_CD)!=ZIP_OK)
err=ZIP_ERRNO;
/* total number of entries in the central dir on this disk */
if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_entry)!=ZIP_OK)
err=ZIP_ERRNO;
/* total number of entries in the central dir */
if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&number_entry_CD)!=ZIP_OK)
err=ZIP_ERRNO;
if ((number_entry_CD!=number_entry) ||
(number_disk_with_CD!=0) ||
(number_disk!=0))
err=ZIP_BADZIPFILE;
/* size of the central directory */
if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&size_central_dir)!=ZIP_OK)
err=ZIP_ERRNO;
/* offset of start of central directory with respect to the
starting disk number */
if (ziplocal_getLong(&ziinit.z_filefunc, ziinit.filestream,&offset_central_dir)!=ZIP_OK)
err=ZIP_ERRNO;
/* zipfile global comment length */
if (ziplocal_getShort(&ziinit.z_filefunc, ziinit.filestream,&size_comment)!=ZIP_OK)
err=ZIP_ERRNO;
if ((central_pos0)
{
ziinit.globalcomment = ALLOC(size_comment+1);
if (ziinit.globalcomment)
{
size_comment = ZREAD(ziinit.z_filefunc, ziinit.filestream,ziinit.globalcomment,size_comment);
ziinit.globalcomment[size_comment]=0;
}
}
byte_before_the_zipfile = central_pos -
(offset_central_dir+size_central_dir);
ziinit.add_position_when_writting_offset = byte_before_the_zipfile;
{
uLong size_central_dir_to_read = size_central_dir;
size_t buf_size = SIZEDATA_INDATABLOCK;
void* buf_read = (void*)ALLOC(buf_size);
if (ZSEEK(ziinit.z_filefunc, ziinit.filestream,
offset_central_dir + byte_before_the_zipfile,
ZLIB_FILEFUNC_SEEK_SET) != 0)
err=ZIP_ERRNO;
while ((size_central_dir_to_read>0) && (err==ZIP_OK))
{
uLong read_this = SIZEDATA_INDATABLOCK;
if (read_this > size_central_dir_to_read)
read_this = size_central_dir_to_read;
if (ZREAD(ziinit.z_filefunc, ziinit.filestream,buf_read,read_this) != read_this)
err=ZIP_ERRNO;
if (err==ZIP_OK)
err = add_data_in_datablock(&ziinit.central_dir,buf_read,
(uLong)read_this);
size_central_dir_to_read-=read_this;
}
TRYFREE(buf_read);
}
ziinit.begin_pos = byte_before_the_zipfile;
ziinit.number_entry = number_entry_CD;
if (ZSEEK(ziinit.z_filefunc, ziinit.filestream,
offset_central_dir+byte_before_the_zipfile,ZLIB_FILEFUNC_SEEK_SET)!=0)
err=ZIP_ERRNO;
}
if (globalcomment)
{
*globalcomment = ziinit.globalcomment;
}
# endif /* !NO_ADDFILEINEXISTINGZIP*/
if (err != ZIP_OK)
{
# ifndef NO_ADDFILEINEXISTINGZIP
TRYFREE(ziinit.globalcomment);
# endif /* !NO_ADDFILEINEXISTINGZIP*/
TRYFREE(zi);
return NULL;
}
else
{
*zi = ziinit;
return (zipFile)zi;
}
}
extern zipFile ZEXPORT zipOpen (pathname, append)
const char *pathname;
int append;
{
return zipOpen2(pathname,append,NULL,NULL);
}
extern int ZEXPORT zipOpenNewFileInZip3 (file, filename, zipfi,
extrafield_local, size_extrafield_local,
extrafield_global, size_extrafield_global,
comment, method, level, raw,
windowBits, memLevel, strategy,
password, crcForCrypting)
zipFile file;
const char* filename;
const zip_fileinfo* zipfi;
const void* extrafield_local;
uInt size_extrafield_local;
const void* extrafield_global;
uInt size_extrafield_global;
const char* comment;
int method;
int level;
int raw;
int windowBits;
int memLevel;
int strategy;
const char* password;
uLong crcForCrypting;
{
zip_internal* zi;
uInt size_filename;
uInt size_comment;
uInt i;
int err = ZIP_OK;
# ifdef NOCRYPT
if (password != NULL)
return ZIP_PARAMERROR;
# endif
if (file == NULL)
return ZIP_PARAMERROR;
if ((method!=0) && (method!=Z_DEFLATED))
return ZIP_PARAMERROR;
zi = (zip_internal*)file;
if (zi->in_opened_file_inzip == 1)
{
err = zipCloseFileInZip (file);
if (err != ZIP_OK)
return err;
}
if (filename==NULL)
filename="-";
if (comment==NULL)
size_comment = 0;
else
size_comment = (uInt)strlen(comment);
size_filename = (uInt)strlen(filename);
if (zipfi == NULL)
zi->ci.dosDate = 0;
else
{
if (zipfi->dosDate != 0)
zi->ci.dosDate = zipfi->dosDate;
else zi->ci.dosDate = ziplocal_TmzDateToDosDate(&zipfi->tmz_date,zipfi->dosDate);
}
zi->ci.flag = 0;
if ((level==8) || (level==9))
zi->ci.flag |= 2;
if ((level==2))
zi->ci.flag |= 4;
if ((level==1))
zi->ci.flag |= 6;
if (password != NULL)
zi->ci.flag |= 1;
zi->ci.crc32 = 0;
zi->ci.method = method;
zi->ci.encrypt = 0;
zi->ci.stream_initialised = 0;
zi->ci.pos_in_buffered_data = 0;
zi->ci.raw = raw;
zi->ci.pos_local_header = ZTELL(zi->z_filefunc,zi->filestream) ;
zi->ci.size_centralheader = SIZECENTRALHEADER + size_filename +
size_extrafield_global + size_comment;
zi->ci.central_header = (char*)ALLOC((uInt)zi->ci.size_centralheader);
ziplocal_putValue_inmemory(zi->ci.central_header,(uLong)CENTRALHEADERMAGIC,4);
/* version info */
ziplocal_putValue_inmemory(zi->ci.central_header+4,(uLong)VERSIONMADEBY,2);
ziplocal_putValue_inmemory(zi->ci.central_header+6,(uLong)20,2);
ziplocal_putValue_inmemory(zi->ci.central_header+8,(uLong)zi->ci.flag,2);
ziplocal_putValue_inmemory(zi->ci.central_header+10,(uLong)zi->ci.method,2);
ziplocal_putValue_inmemory(zi->ci.central_header+12,(uLong)zi->ci.dosDate,4);
ziplocal_putValue_inmemory(zi->ci.central_header+16,(uLong)0,4); /*crc*/
ziplocal_putValue_inmemory(zi->ci.central_header+20,(uLong)0,4); /*compr size*/
ziplocal_putValue_inmemory(zi->ci.central_header+24,(uLong)0,4); /*uncompr size*/
ziplocal_putValue_inmemory(zi->ci.central_header+28,(uLong)size_filename,2);
ziplocal_putValue_inmemory(zi->ci.central_header+30,(uLong)size_extrafield_global,2);
ziplocal_putValue_inmemory(zi->ci.central_header+32,(uLong)size_comment,2);
ziplocal_putValue_inmemory(zi->ci.central_header+34,(uLong)0,2); /*disk nm start*/
if (zipfi==NULL)
ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)0,2);
else
ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)zipfi->internal_fa,2);
if (zipfi==NULL)
ziplocal_putValue_inmemory(zi->ci.central_header+38,(uLong)0,4);
else
ziplocal_putValue_inmemory(zi->ci.central_header+38,(uLong)zipfi->external_fa,4);
ziplocal_putValue_inmemory(zi->ci.central_header+42,(uLong)zi->ci.pos_local_header- zi->add_position_when_writting_offset,4);
for (i=0;ici.central_header+SIZECENTRALHEADER+i) = *(filename+i);
for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+i) =
*(((const char*)extrafield_global)+i);
for (i=0;ici.central_header+SIZECENTRALHEADER+size_filename+
size_extrafield_global+i) = *(comment+i);
if (zi->ci.central_header == NULL)
return ZIP_INTERNALERROR;
/* write the local header */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)LOCALHEADERMAGIC,4);
if (err==ZIP_OK)
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)20,2);/* version needed to extract */
if (err==ZIP_OK)
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.flag,2);
if (err==ZIP_OK)
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.method,2);
if (err==ZIP_OK)
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->ci.dosDate,4);
if (err==ZIP_OK)
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* crc 32, unknown */
if (err==ZIP_OK)
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* compressed size, unknown */
if (err==ZIP_OK)
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,4); /* uncompressed size, unknown */
if (err==ZIP_OK)
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_filename,2);
if (err==ZIP_OK)
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_extrafield_local,2);
if ((err==ZIP_OK) && (size_filename>0))
if (ZWRITE(zi->z_filefunc,zi->filestream,filename,size_filename)!=size_filename)
err = ZIP_ERRNO;
if ((err==ZIP_OK) && (size_extrafield_local>0))
if (ZWRITE(zi->z_filefunc,zi->filestream,extrafield_local,size_extrafield_local)
!=size_extrafield_local)
err = ZIP_ERRNO;
zi->ci.stream.avail_in = (uInt)0;
zi->ci.stream.avail_out = (uInt)Z_BUFSIZE;
zi->ci.stream.next_out = zi->ci.buffered_data;
zi->ci.stream.total_in = 0;
zi->ci.stream.total_out = 0;
if ((err==ZIP_OK) && (zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
{
zi->ci.stream.zalloc = (alloc_func)0;
zi->ci.stream.zfree = (free_func)0;
zi->ci.stream.opaque = (voidpf)0;
if (windowBits>0)
windowBits = -windowBits;
err = deflateInit2(&zi->ci.stream, level,
Z_DEFLATED, windowBits, memLevel, strategy);
if (err==Z_OK)
zi->ci.stream_initialised = 1;
}
# ifndef NOCRYPT
zi->ci.crypt_header_size = 0;
if ((err==Z_OK) && (password != NULL))
{
unsigned char bufHead[RAND_HEAD_LEN];
unsigned int sizeHead;
zi->ci.encrypt = 1;
zi->ci.pcrc_32_tab = get_crc_table();
/*init_keys(password,zi->ci.keys,zi->ci.pcrc_32_tab);*/
sizeHead=crypthead(password,bufHead,RAND_HEAD_LEN,zi->ci.keys,zi->ci.pcrc_32_tab,crcForCrypting);
zi->ci.crypt_header_size = sizeHead;
if (ZWRITE(zi->z_filefunc,zi->filestream,bufHead,sizeHead) != sizeHead)
err = ZIP_ERRNO;
}
# endif
if (err==Z_OK)
zi->in_opened_file_inzip = 1;
return err;
}
extern int ZEXPORT zipOpenNewFileInZip2(file, filename, zipfi,
extrafield_local, size_extrafield_local,
extrafield_global, size_extrafield_global,
comment, method, level, raw)
zipFile file;
const char* filename;
const zip_fileinfo* zipfi;
const void* extrafield_local;
uInt size_extrafield_local;
const void* extrafield_global;
uInt size_extrafield_global;
const char* comment;
int method;
int level;
int raw;
{
return zipOpenNewFileInZip3 (file, filename, zipfi,
extrafield_local, size_extrafield_local,
extrafield_global, size_extrafield_global,
comment, method, level, raw,
-MAX_WBITS, DEF_MEM_LEVEL, Z_DEFAULT_STRATEGY,
NULL, 0);
}
extern int ZEXPORT zipOpenNewFileInZip (file, filename, zipfi,
extrafield_local, size_extrafield_local,
extrafield_global, size_extrafield_global,
comment, method, level)
zipFile file;
const char* filename;
const zip_fileinfo* zipfi;
const void* extrafield_local;
uInt size_extrafield_local;
const void* extrafield_global;
uInt size_extrafield_global;
const char* comment;
int method;
int level;
{
return zipOpenNewFileInZip2 (file, filename, zipfi,
extrafield_local, size_extrafield_local,
extrafield_global, size_extrafield_global,
comment, method, level, 0);
}
local int zipFlushWriteBuffer(zi)
zip_internal* zi;
{
int err=ZIP_OK;
if (zi->ci.encrypt != 0)
{
#ifndef NOCRYPT
uInt i;
int t;
for (i=0;ici.pos_in_buffered_data;i++)
zi->ci.buffered_data[i] = zencode(zi->ci.keys, zi->ci.pcrc_32_tab,
zi->ci.buffered_data[i],t);
#endif
}
if (ZWRITE(zi->z_filefunc,zi->filestream,zi->ci.buffered_data,zi->ci.pos_in_buffered_data)
!=zi->ci.pos_in_buffered_data)
err = ZIP_ERRNO;
zi->ci.pos_in_buffered_data = 0;
return err;
}
extern int ZEXPORT zipWriteInFileInZip (file, buf, len)
zipFile file;
const void* buf;
unsigned len;
{
zip_internal* zi;
int err=ZIP_OK;
if (file == NULL)
return ZIP_PARAMERROR;
zi = (zip_internal*)file;
if (zi->in_opened_file_inzip == 0)
return ZIP_PARAMERROR;
zi->ci.stream.next_in = (void*)buf;
zi->ci.stream.avail_in = len;
zi->ci.crc32 = crc32(zi->ci.crc32,buf,len);
while ((err==ZIP_OK) && (zi->ci.stream.avail_in>0))
{
if (zi->ci.stream.avail_out == 0)
{
if (zipFlushWriteBuffer(zi) == ZIP_ERRNO)
err = ZIP_ERRNO;
zi->ci.stream.avail_out = (uInt)Z_BUFSIZE;
zi->ci.stream.next_out = zi->ci.buffered_data;
}
if(err != ZIP_OK)
break;
if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
{
uLong uTotalOutBefore = zi->ci.stream.total_out;
err=deflate(&zi->ci.stream, Z_NO_FLUSH);
zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ;
}
else
{
uInt copy_this,i;
if (zi->ci.stream.avail_in < zi->ci.stream.avail_out)
copy_this = zi->ci.stream.avail_in;
else
copy_this = zi->ci.stream.avail_out;
for (i=0;ici.stream.next_out)+i) =
*(((const char*)zi->ci.stream.next_in)+i);
{
zi->ci.stream.avail_in -= copy_this;
zi->ci.stream.avail_out-= copy_this;
zi->ci.stream.next_in+= copy_this;
zi->ci.stream.next_out+= copy_this;
zi->ci.stream.total_in+= copy_this;
zi->ci.stream.total_out+= copy_this;
zi->ci.pos_in_buffered_data += copy_this;
}
}
}
return err;
}
extern int ZEXPORT zipCloseFileInZipRaw (file, uncompressed_size, crc32)
zipFile file;
uLong uncompressed_size;
uLong crc32;
{
zip_internal* zi;
uLong compressed_size;
int err=ZIP_OK;
if (file == NULL)
return ZIP_PARAMERROR;
zi = (zip_internal*)file;
if (zi->in_opened_file_inzip == 0)
return ZIP_PARAMERROR;
zi->ci.stream.avail_in = 0;
if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
while (err==ZIP_OK)
{
uLong uTotalOutBefore;
if (zi->ci.stream.avail_out == 0)
{
if (zipFlushWriteBuffer(zi) == ZIP_ERRNO)
err = ZIP_ERRNO;
zi->ci.stream.avail_out = (uInt)Z_BUFSIZE;
zi->ci.stream.next_out = zi->ci.buffered_data;
}
uTotalOutBefore = zi->ci.stream.total_out;
err=deflate(&zi->ci.stream, Z_FINISH);
zi->ci.pos_in_buffered_data += (uInt)(zi->ci.stream.total_out - uTotalOutBefore) ;
}
if (err==Z_STREAM_END)
err=ZIP_OK; /* this is normal */
if ((zi->ci.pos_in_buffered_data>0) && (err==ZIP_OK))
if (zipFlushWriteBuffer(zi)==ZIP_ERRNO)
err = ZIP_ERRNO;
if ((zi->ci.method == Z_DEFLATED) && (!zi->ci.raw))
{
err=deflateEnd(&zi->ci.stream);
zi->ci.stream_initialised = 0;
}
if (!zi->ci.raw)
{
crc32 = (uLong)zi->ci.crc32;
uncompressed_size = (uLong)zi->ci.stream.total_in;
}
compressed_size = (uLong)zi->ci.stream.total_out;
# ifndef NOCRYPT
compressed_size += zi->ci.crypt_header_size;
# endif
ziplocal_putValue_inmemory(zi->ci.central_header+16,crc32,4); /*crc*/
ziplocal_putValue_inmemory(zi->ci.central_header+20,
compressed_size,4); /*compr size*/
if (zi->ci.stream.data_type == Z_ASCII)
ziplocal_putValue_inmemory(zi->ci.central_header+36,(uLong)Z_ASCII,2);
ziplocal_putValue_inmemory(zi->ci.central_header+24,
uncompressed_size,4); /*uncompr size*/
if (err==ZIP_OK)
err = add_data_in_datablock(&zi->central_dir,zi->ci.central_header,
(uLong)zi->ci.size_centralheader);
free(zi->ci.central_header);
if (err==ZIP_OK)
{
long cur_pos_inzip = ZTELL(zi->z_filefunc,zi->filestream);
if (ZSEEK(zi->z_filefunc,zi->filestream,
zi->ci.pos_local_header + 14,ZLIB_FILEFUNC_SEEK_SET)!=0)
err = ZIP_ERRNO;
if (err==ZIP_OK)
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,crc32,4); /* crc 32, unknown */
if (err==ZIP_OK) /* compressed size, unknown */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,compressed_size,4);
if (err==ZIP_OK) /* uncompressed size, unknown */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,uncompressed_size,4);
if (ZSEEK(zi->z_filefunc,zi->filestream,
cur_pos_inzip,ZLIB_FILEFUNC_SEEK_SET)!=0)
err = ZIP_ERRNO;
}
zi->number_entry ++;
zi->in_opened_file_inzip = 0;
return err;
}
extern int ZEXPORT zipCloseFileInZip (file)
zipFile file;
{
return zipCloseFileInZipRaw (file,0,0);
}
extern int ZEXPORT zipClose (file, global_comment)
zipFile file;
const char* global_comment;
{
zip_internal* zi;
int err = 0;
uLong size_centraldir = 0;
uLong centraldir_pos_inzip;
uInt size_global_comment;
if (file == NULL)
return ZIP_PARAMERROR;
zi = (zip_internal*)file;
if (zi->in_opened_file_inzip == 1)
{
err = zipCloseFileInZip (file);
}
#ifndef NO_ADDFILEINEXISTINGZIP
if (global_comment==NULL)
global_comment = zi->globalcomment;
#endif
if (global_comment==NULL)
size_global_comment = 0;
else
size_global_comment = (uInt)strlen(global_comment);
centraldir_pos_inzip = ZTELL(zi->z_filefunc,zi->filestream);
if (err==ZIP_OK)
{
linkedlist_datablock_internal* ldi = zi->central_dir.first_block ;
while (ldi!=NULL)
{
if ((err==ZIP_OK) && (ldi->filled_in_this_block>0))
if (ZWRITE(zi->z_filefunc,zi->filestream,
ldi->data,ldi->filled_in_this_block)
!=ldi->filled_in_this_block )
err = ZIP_ERRNO;
size_centraldir += ldi->filled_in_this_block;
ldi = ldi->next_datablock;
}
}
free_datablock(zi->central_dir.first_block);
if (err==ZIP_OK) /* Magic End */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)ENDHEADERMAGIC,4);
if (err==ZIP_OK) /* number of this disk */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2);
if (err==ZIP_OK) /* number of the disk with the start of the central directory */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)0,2);
if (err==ZIP_OK) /* total number of entries in the central dir on this disk */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2);
if (err==ZIP_OK) /* total number of entries in the central dir */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)zi->number_entry,2);
if (err==ZIP_OK) /* size of the central directory */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_centraldir,4);
if (err==ZIP_OK) /* offset of start of central directory with respect to the
starting disk number */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,
(uLong)(centraldir_pos_inzip - zi->add_position_when_writting_offset),4);
if (err==ZIP_OK) /* zipfile comment length */
err = ziplocal_putValue(&zi->z_filefunc,zi->filestream,(uLong)size_global_comment,2);
if ((err==ZIP_OK) && (size_global_comment>0))
if (ZWRITE(zi->z_filefunc,zi->filestream,
global_comment,size_global_comment) != size_global_comment)
err = ZIP_ERRNO;
if (ZCLOSE(zi->z_filefunc,zi->filestream) != 0)
if (err == ZIP_OK)
err = ZIP_ERRNO;
#ifndef NO_ADDFILEINEXISTINGZIP
TRYFREE(zi->globalcomment);
#endif
TRYFREE(zi);
return err;
}
================================================
FILE: AePubReader/Classes/minizip/zip.h
================================================
/* zip.h -- IO for compress .zip files using zlib
Version 1.01e, February 12th, 2005
Copyright (C) 1998-2005 Gilles Vollant
This unzip package allow creates .ZIP file, compatible with PKZip 2.04g
WinZip, InfoZip tools and compatible.
Multi volume ZipFile (span) are not supported.
Encryption compatible with pkzip 2.04g only supported
Old compressions used by old PKZip 1.x are not supported
For uncompress .zip file, look at unzip.h
I WAIT FEEDBACK at mail info@winimage.com
Visit also http://www.winimage.com/zLibDll/unzip.html for evolution
Condition of use and distribution are the same than zlib :
This software is provided 'as-is', without any express or implied
warranty. In no event will the authors be held liable for any damages
arising from the use of this software.
Permission is granted to anyone to use this software for any purpose,
including commercial applications, and to alter it and redistribute it
freely, subject to the following restrictions:
1. The origin of this software must not be misrepresented; you must not
claim that you wrote the original software. If you use this software
in a product, an acknowledgment in the product documentation would be
appreciated but is not required.
2. Altered source versions must be plainly marked as such, and must not be
misrepresented as being the original software.
3. This notice may not be removed or altered from any source distribution.
*/
/* for more info about .ZIP format, see
http://www.info-zip.org/pub/infozip/doc/appnote-981119-iz.zip
http://www.info-zip.org/pub/infozip/doc/
PkWare has also a specification at :
ftp://ftp.pkware.com/probdesc.zip
*/
#ifndef _zip_H
#define _zip_H
#ifdef __cplusplus
extern "C" {
#endif
#ifndef _ZLIB_H
#include "zlib.h"
#endif
#ifndef _ZLIBIOAPI_H
#include "ioapi.h"
#endif
#if defined(STRICTZIP) || defined(STRICTZIPUNZIP)
/* like the STRICT of WIN32, we define a pointer that cannot be converted
from (void*) without cast */
typedef struct TagzipFile__ { int unused; } zipFile__;
typedef zipFile__ *zipFile;
#else
typedef voidp zipFile;
#endif
#define ZIP_OK (0)
#define ZIP_EOF (0)
#define ZIP_ERRNO (Z_ERRNO)
#define ZIP_PARAMERROR (-102)
#define ZIP_BADZIPFILE (-103)
#define ZIP_INTERNALERROR (-104)
#ifndef DEF_MEM_LEVEL
# if MAX_MEM_LEVEL >= 8
# define DEF_MEM_LEVEL 8
# else
# define DEF_MEM_LEVEL MAX_MEM_LEVEL
# endif
#endif
/* default memLevel */
/* tm_zip contain date/time info */
typedef struct tm_zip_s
{
uInt tm_sec; /* seconds after the minute - [0,59] */
uInt tm_min; /* minutes after the hour - [0,59] */
uInt tm_hour; /* hours since midnight - [0,23] */
uInt tm_mday; /* day of the month - [1,31] */
uInt tm_mon; /* months since January - [0,11] */
uInt tm_year; /* years - [1980..2044] */
} tm_zip;
typedef struct
{
tm_zip tmz_date; /* date in understandable format */
uLong dosDate; /* if dos_date == 0, tmu_date is used */
/* uLong flag; */ /* general purpose bit flag 2 bytes */
uLong internal_fa; /* internal file attributes 2 bytes */
uLong external_fa; /* external file attributes 4 bytes */
} zip_fileinfo;
typedef const char* zipcharpc;
#define APPEND_STATUS_CREATE (0)
#define APPEND_STATUS_CREATEAFTER (1)
#define APPEND_STATUS_ADDINZIP (2)
extern zipFile ZEXPORT zipOpen OF((const char *pathname, int append));
/*
Create a zipfile.
pathname contain on Windows XP a filename like "c:\\zlib\\zlib113.zip" or on
an Unix computer "zlib/zlib113.zip".
if the file pathname exist and append==APPEND_STATUS_CREATEAFTER, the zip
will be created at the end of the file.
(useful if the file contain a self extractor code)
if the file pathname exist and append==APPEND_STATUS_ADDINZIP, we will
add files in existing zip (be sure you don't add file that doesn't exist)
If the zipfile cannot be opened, the return value is NULL.
Else, the return value is a zipFile Handle, usable with other function
of this zip package.
*/
/* Note : there is no delete function into a zipfile.
If you want delete file into a zipfile, you must open a zipfile, and create another
Of couse, you can use RAW reading and writing to copy the file you did not want delte
*/
extern zipFile ZEXPORT zipOpen2 OF((const char *pathname,
int append,
zipcharpc* globalcomment,
zlib_filefunc_def* pzlib_filefunc_def));
extern int ZEXPORT zipOpenNewFileInZip OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
uInt size_extrafield_local,
const void* extrafield_global,
uInt size_extrafield_global,
const char* comment,
int method,
int level));
/*
Open a file in the ZIP for writing.
filename : the filename in zip (if NULL, '-' without quote will be used
*zipfi contain supplemental information
if extrafield_local!=NULL and size_extrafield_local>0, extrafield_local
contains the extrafield data the the local header
if extrafield_global!=NULL and size_extrafield_global>0, extrafield_global
contains the extrafield data the the local header
if comment != NULL, comment contain the comment string
method contain the compression method (0 for store, Z_DEFLATED for deflate)
level contain the level of compression (can be Z_DEFAULT_COMPRESSION)
*/
extern int ZEXPORT zipOpenNewFileInZip2 OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
uInt size_extrafield_local,
const void* extrafield_global,
uInt size_extrafield_global,
const char* comment,
int method,
int level,
int raw));
/*
Same than zipOpenNewFileInZip, except if raw=1, we write raw file
*/
extern int ZEXPORT zipOpenNewFileInZip3 OF((zipFile file,
const char* filename,
const zip_fileinfo* zipfi,
const void* extrafield_local,
uInt size_extrafield_local,
const void* extrafield_global,
uInt size_extrafield_global,
const char* comment,
int method,
int level,
int raw,
int windowBits,
int memLevel,
int strategy,
const char* password,
uLong crcForCtypting));
/*
Same than zipOpenNewFileInZip2, except
windowBits,memLevel,,strategy : see parameter strategy in deflateInit2
password : crypting password (NULL for no crypting)
crcForCtypting : crc of file to compress (needed for crypting)
*/
extern int ZEXPORT zipWriteInFileInZip OF((zipFile file,
const void* buf,
unsigned len));
/*
Write data in the zipfile
*/
extern int ZEXPORT zipCloseFileInZip OF((zipFile file));
/*
Close the current file in the zipfile
*/
extern int ZEXPORT zipCloseFileInZipRaw OF((zipFile file,
uLong uncompressed_size,
uLong crc32));
/*
Close the current file in the zipfile, for fiel opened with
parameter raw=1 in zipOpenNewFileInZip2
uncompressed_size and crc32 are value for the uncompressed size
*/
extern int ZEXPORT zipClose OF((zipFile file,
const char* global_comment));
/*
Close the zipfile
*/
#ifdef __cplusplus
}
#endif
#endif /* _zip_H */
================================================
FILE: AePubReader/MainWindow.xib
================================================
800
10K540
1306
1038.36
461.00
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
301
IBUIWindow
IBUICustomObject
IBUIViewController
IBProxyObject
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
IBFilesOwner
IBIPadFramework
IBFirstResponder
IBIPadFramework
292
{768, 1024}
1
MSAxIDEAA
NO
NO
2
IBIPadFramework
YES
IBIPadFramework
2
1
1
IBIPadFramework
NO
window
4
delegate
17
rootViewController
51
detailViewController
53
0
-1
File's Owner
-2
2
3
50
UIApplication
UIResponder
{{190, 57}, {783, 799}}
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
AePubReaderAppDelegate
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
EPubViewController
com.apple.InterfaceBuilder.IBCocoaTouchPlugin
54
AePubReaderAppDelegate
NSObject
EPubViewController
UIWindow
detailViewController
EPubViewController
window
UIWindow
IBProjectSource
./Classes/AePubReaderAppDelegate.h
EPubViewController
UIViewController
id
id
id
id
id
id
decreaseTextSizeClicked:
id
doneClicked:
id
increaseTextSizeClicked:
id
showChapterIndex:
id
slidingEnded:
id
slidingStarted:
id
UIBarButtonItem
UILabel
UIBarButtonItem
UIBarButtonItem
UISlider
UIToolbar
UIWebView
chapterListButton
UIBarButtonItem
currentPageLabel
UILabel
decTextSizeButton
UIBarButtonItem
incTextSizeButton
UIBarButtonItem
pageSlider
UISlider
toolbar
UIToolbar
webView
UIWebView
IBProjectSource
./Classes/EPubViewController.h
0
IBIPadFramework
com.apple.InterfaceBuilder.CocoaTouchPlugin.iPhoneOS
com.apple.InterfaceBuilder.CocoaTouchPlugin.InterfaceBuilder3
YES
3
301
================================================
FILE: AePubReader/SearchWebView.js
================================================
// We're using a global variable to store the number of occurrences
var MyApp_SearchResultCount = 0;
var console = "\n";
var results = "";
var neighSize = 20;
// helper function, recursively searches in elements and their child nodes
function MyApp_HighlightAllOccurencesOfStringForElement(element,keyword) {
if (element) {
if (element.nodeType == 3) {// Text node
while (true) {
var value = element.nodeValue; // Search for keyword in text node
var idx = value.toLowerCase().indexOf(keyword);
if (idx < 0) break; // not found, abort
var span = document.createElement("highlight");
span.className = "MyAppHighlight";
var text = document.createTextNode(value.substr(idx,keyword.length));
span.appendChild(text);
var rightText = document.createTextNode(value.substr(idx+keyword.length));
element.deleteData(idx, value.length - idx);
var next = element.nextSibling;
element.parentNode.insertBefore(rightText, next);
element.parentNode.insertBefore(span, rightText);
var leftNeighText = element.nodeValue.substr(element.length - neighSize, neighSize);
var rightNeighText = rightText.nodeValue.substr(0, neighSize);
element = rightText;
MyApp_SearchResultCount++; // update the counter
console += "Span className: " + span.className + "\n";
console += "Span position: (" + getPos(span).x + ", " + getPos(span).y + ")\n";
results += getPos(span).x + "," + getPos(span).y + "," + escape(leftNeighText + text.nodeValue + rightNeighText) + ";";
results;
}
} else if (element.nodeType == 1) { // Element node
if (element.style.display != "none" && element.nodeName.toLowerCase() != 'select') {
for (var i=element.childNodes.length-1; i>=0; i--) {
MyApp_HighlightAllOccurencesOfStringForElement(element.childNodes[i],keyword);
}
}
}
}
}
function getPos(el) {
// yay readability
for (var lx=0, ly=0; el != null; lx += el.offsetLeft, ly += el.offsetTop, el = el.offsetParent);
return {x: lx,y: ly};
}
// the main entry point to start the search
function MyApp_HighlightAllOccurencesOfString(keyword) {
MyApp_RemoveAllHighlights();
MyApp_HighlightAllOccurencesOfStringForElement(document.body, keyword.toLowerCase());
}
// helper function, recursively removes the highlights in elements and their childs
function MyApp_RemoveAllHighlightsForElement(element) {
if (element) {
if (element.nodeType == 1) {
if (element.getAttribute("class") == "MyAppHighlight") {
var text = element.removeChild(element.firstChild);
element.parentNode.insertBefore(text,element);
element.parentNode.removeChild(element);
return true;
} else {
var normalize = false;
for (var i=element.childNodes.length-1; i>=0; i--) {
if (MyApp_RemoveAllHighlightsForElement(element.childNodes[i])) {
normalize = true;
}
}
if (normalize) {
element.normalize();
}
}
}
}
return false;
}
// the main entry point to remove the highlights
function MyApp_RemoveAllHighlights() {
MyApp_SearchResultCount = 0;
MyApp_RemoveAllHighlightsForElement(document.body);
}
================================================
FILE: AePubReader/Source/CXHTMLDocument.h
================================================
//
// CXHTMLDocument.h
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLDocument.h"
@interface CXHTMLDocument : CXMLDocument {
}
- (id)initWithXHTMLData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError;
- (id)initWithXHTMLString:(NSString *)inString options:(NSUInteger)inOptions error:(NSError **)outError;
@end
================================================
FILE: AePubReader/Source/CXHTMLDocument.m
================================================
//
// CXHTMLDocument.m
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
// This is an experiment to see if we can utilize the HTMLParser functionality
// of libXML to serve as a XHTML parser, I question if this is a good idea or not
// need to test some of the following
// [-] How are xml namespaces handled
// [-] Can we support DTD
// [-]
#import "CXHTMLDocument.h"
#include
#include
#include
#include
#import "CXMLNode_PrivateExtensions.h"
#import "CXMLElement.h"
#if TOUCHXMLUSETIDY
#import "CTidy.h"
#endif /* TOUCHXMLUSETIDY */
@implementation CXHTMLDocument
// Differs from initWithXMLString by using libXML's HTML parser, which automatically decodes XHTML/HTML entities found within the document
// which eliminates the need to resanitize strings extracted from the document
// libXML treats a htmlDocPtr the same as xmlDocPtr
- (id)initWithXHTMLString:(NSString *)inString options:(NSUInteger)inOptions error:(NSError **)outError
{
#pragma unused (inOptions)
if ((self = [super init]) != NULL)
{
NSError *theError = NULL;
htmlDocPtr theDoc = htmlParseDoc(BAD_CAST[inString UTF8String], xmlGetCharEncodingName(XML_CHAR_ENCODING_UTF8));
if (theDoc != NULL)
{
// TODO: change code to not depend on XPATH, should be a task simple enough to do
// alternatively see if we can prevent the HTML parser from adding implied tags
xmlXPathContextPtr xpathContext = xmlXPathNewContext (theDoc);
xmlXPathObjectPtr xpathObject = NULL;
if (xpathContext)
xpathObject = xmlXPathEvalExpression (BAD_CAST("/html/body"), xpathContext);
xmlNodePtr bodyNode = NULL;
if (xpathObject && xpathObject->nodesetval->nodeMax)
bodyNode = xpathObject->nodesetval->nodeTab[0];
// TODO: Determine if this is sufficient to handle memory in libXML, is the old root removed / deleted, etc
if (bodyNode)
xmlDocSetRootElement(theDoc, bodyNode->children);
_node = (xmlNodePtr)theDoc;
NSAssert(_node->_private == NULL, @"TODO");
_node->_private = self; // Note. NOT retained (TODO think more about _private usage)
if (xpathObject)
xmlXPathFreeObject (xpathObject);
if (xpathContext)
xmlXPathFreeContext (xpathContext);
}
else
{
xmlErrorPtr theLastErrorPtr = xmlGetLastError();
NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys:
theLastErrorPtr ? [NSString stringWithUTF8String:theLastErrorPtr->message] : @"unknown", NSLocalizedDescriptionKey,
NULL];
theError = [NSError errorWithDomain:@"CXMLErrorDomain" code:1 userInfo:theUserInfo];
xmlResetLastError();
}
if (outError)
*outError = theError;
if (theError != NULL)
{
[self release];
self = NULL;
}
}
return(self);
}
- (id)initWithXHTMLData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError
{
#pragma unused (inOptions)
if ((self = [super init]) != NULL)
{
NSError *theError = NULL;
if (theError == NULL)
{
xmlDocPtr theDoc = NULL;
if (inData && inData.length > 0)
{
CFStringEncoding cfenc = CFStringConvertNSStringEncodingToEncoding(encoding);
CFStringRef cfencstr = CFStringConvertEncodingToIANACharSetName(cfenc);
const char *enc = CFStringGetCStringPtr(cfencstr, 0);
theDoc = htmlReadMemory([inData bytes], [inData length], NULL, enc, HTML_PARSE_NONET | HTML_PARSE_NOBLANKS | HTML_PARSE_NOWARNING);
}
if (theDoc != NULL)
{
_node = (xmlNodePtr)theDoc;
_node->_private = self; // Note. NOT retained (TODO think more about _private usage)
}
else
{
theError = [NSError errorWithDomain:@"CXMLErrorDomain" code:-1 userInfo:NULL];
}
}
if (outError)
*outError = theError;
if (theError != NULL)
{
[self release];
self = NULL;
}
}
return(self);
}
@end
================================================
FILE: AePubReader/Source/CXMLDocument.h
================================================
//
// CXMLDocument.h
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLNode.h"
enum {
CXMLDocumentTidyHTML = 1 << 9, // Based on NSXMLDocumentTidyHTML
CXMLDocumentTidyXML = 1 << 10, // Based on NSXMLDocumentTidyXML
};
@class CXMLElement;
@interface CXMLDocument : CXMLNode {
NSMutableSet *nodePool;
}
- (id)initWithData:(NSData *)inData options:(NSUInteger)inOptions error:(NSError **)outError;
- (id)initWithData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError;
- (id)initWithXMLString:(NSString *)inString options:(NSUInteger)inOptions error:(NSError **)outError;
- (id)initWithContentsOfURL:(NSURL *)inURL options:(NSUInteger)inOptions error:(NSError **)outError;
- (id)initWithContentsOfURL:(NSURL *)inURL encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError;
//- (NSString *)characterEncoding;
//- (NSString *)version;
//- (BOOL)isStandalone;
//- (CXMLDocumentContentKind)documentContentKind;
//- (NSString *)MIMEType;
//- (CXMLDTD *)DTD;
- (CXMLElement *)rootElement;
- (NSData *)XMLData;
- (NSData *)XMLDataWithOptions:(NSUInteger)options;
//- (id)objectByApplyingXSLT:(NSData *)xslt arguments:(NSDictionary *)arguments error:(NSError **)error;
//- (id)objectByApplyingXSLTString:(NSString *)xslt arguments:(NSDictionary *)arguments error:(NSError **)error;
//- (id)objectByApplyingXSLTAtURL:(NSURL *)xsltURL arguments:(NSDictionary *)argument error:(NSError **)error;
- (id)XMLStringWithOptions:(NSUInteger)options;
@end
================================================
FILE: AePubReader/Source/CXMLDocument.m
================================================
//
// CXMLDocument.m
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLDocument.h"
#include
#import "CXMLNode_PrivateExtensions.h"
#import "CXMLElement.h"
#if TOUCHXMLUSETIDY
#import "CTidy.h"
#endif /* TOUCHXMLUSETIDY */
@implementation CXMLDocument
- (id)initWithXMLString:(NSString *)inString options:(NSUInteger)inOptions error:(NSError **)outError
{
#pragma unused (inOptions)
if ((self = [super init]) != NULL)
{
NSError *theError = NULL;
#if TOUCHXMLUSETIDY
if (inOptions & CXMLDocumentTidyHTML)
{
inString = [[CTidy tidy] tidyString:inString inputFormat:TidyFormat_HTML outputFormat:TidyFormat_XHTML diagnostics:NULL error:&theError];
}
else if (inOptions & CXMLDocumentTidyXML)
{
inString = [[CTidy tidy] tidyString:inString inputFormat:TidyFormat_XML outputFormat:TidyFormat_XML diagnostics:NULL error:&theError];
}
#endif
xmlDocPtr theDoc = xmlParseDoc((xmlChar *)[inString UTF8String]);
if (theDoc != NULL)
{
_node = (xmlNodePtr)theDoc;
NSAssert(_node->_private == NULL, @"TODO");
_node->_private = self; // Note. NOT retained (TODO think more about _private usage)
}
else
{
xmlErrorPtr theLastErrorPtr = xmlGetLastError();
NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys:
[NSString stringWithUTF8String:theLastErrorPtr->message], NSLocalizedDescriptionKey,
NULL];
theError = [NSError errorWithDomain:@"CXMLErrorDomain" code:1 userInfo:theUserInfo];
xmlResetLastError();
}
if (outError)
*outError = theError;
if (theError != NULL)
{
[self release];
self = NULL;
}
}
return(self);
}
- (id)initWithData:(NSData *)inData options:(NSUInteger)inOptions error:(NSError **)outError
{
return [self initWithData:inData encoding:NSUTF8StringEncoding options:inOptions error:outError];
}
- (id)initWithData:(NSData *)inData encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError
{
#pragma unused (inOptions)
if ((self = [super init]) != NULL)
{
NSError *theError = NULL;
#if TOUCHXMLUSETIDY
if (inOptions & CXMLDocumentTidyHTML)
{
inData = [[CTidy tidy] tidyData:inData inputFormat:TidyFormat_HTML outputFormat:TidyFormat_XHTML diagnostics:NULL error:&theError];
}
else if (inOptions & CXMLDocumentTidyXML)
{
inData = [[CTidy tidy] tidyData:inData inputFormat:TidyFormat_XML outputFormat:TidyFormat_XML diagnostics:NULL error:&theError];
}
#endif
if (theError == NULL)
{
xmlDocPtr theDoc = NULL;
if (inData && inData.length > 0)
{
CFStringEncoding cfenc = CFStringConvertNSStringEncodingToEncoding(encoding);
CFStringRef cfencstr = CFStringConvertEncodingToIANACharSetName(cfenc);
const char *enc = CFStringGetCStringPtr(cfencstr, 0);
theDoc = xmlReadMemory([inData bytes], [inData length], NULL, enc, XML_PARSE_RECOVER | XML_PARSE_NOWARNING);
}
if (theDoc != NULL && xmlDocGetRootElement(theDoc) != NULL)
{
_node = (xmlNodePtr)theDoc;
_node->_private = self; // Note. NOT retained (TODO think more about _private usage)
}
else
{
xmlErrorPtr theLastErrorPtr = xmlGetLastError();
NSString* message = [NSString stringWithUTF8String:
(theLastErrorPtr ? theLastErrorPtr->message : "Unknown error")];
NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys:
message, NSLocalizedDescriptionKey, NULL];
theError = [NSError errorWithDomain:@"CXMLErrorDomain" code:1 userInfo:theUserInfo];
xmlResetLastError();
}
}
if (outError)
*outError = theError;
if (theError != NULL)
{
[self release];
self = NULL;
}
}
return(self);
}
- (id)initWithContentsOfURL:(NSURL *)inURL options:(NSUInteger)inOptions error:(NSError **)outError
{
return [self initWithContentsOfURL:inURL encoding:NSUTF8StringEncoding options:inOptions error:outError];
}
- (id)initWithContentsOfURL:(NSURL *)inURL encoding:(NSStringEncoding)encoding options:(NSUInteger)inOptions error:(NSError **)outError
{
if (outError)
*outError = NULL;
NSData *theData = [NSData dataWithContentsOfURL:inURL options:NSUncachedRead error:outError];
if (theData)
{
self = [self initWithData:theData encoding:encoding options:inOptions error:outError];
}
else
{
self = NULL;
}
return(self);
}
- (void)dealloc
{
// Fix for #35 http://code.google.com/p/touchcode/issues/detail?id=35 -- clear up the node objects first (inside a pool so I _know_ they're cleared) and then freeing the document
NSAutoreleasePool *thePool = [[NSAutoreleasePool alloc] init];
[nodePool release];
nodePool = NULL;
[thePool release];
//
xmlFreeDoc((xmlDocPtr)_node);
_node = NULL;
//
[super dealloc];
}
//- (NSString *)characterEncoding;
//- (NSString *)version;
//- (BOOL)isStandalone;
//- (CXMLDocumentContentKind)documentContentKind;
//- (NSString *)MIMEType;
//- (CXMLDTD *)DTD;
- (CXMLElement *)rootElement
{
xmlNodePtr theLibXMLNode = xmlDocGetRootElement((xmlDocPtr)_node);
return([CXMLNode nodeWithLibXMLNode:theLibXMLNode freeOnDealloc:NO]);
}
- (NSData *)XMLData
{
return([self XMLDataWithOptions:0]);
}
- (NSData *)XMLDataWithOptions:(NSUInteger)options
{
#pragma unused (options)
xmlChar *theBuffer = NULL;
int theBufferSize = 0;
xmlDocDumpMemory((xmlDocPtr)self->_node, &theBuffer, &theBufferSize);
NSData *theData = [NSData dataWithBytes:theBuffer length:theBufferSize];
xmlFree(theBuffer);
return(theData);
}
//- (id)objectByApplyingXSLT:(NSData *)xslt arguments:(NSDictionary *)arguments error:(NSError **)error;
//- (id)objectByApplyingXSLTString:(NSString *)xslt arguments:(NSDictionary *)arguments error:(NSError **)error;
//- (id)objectByApplyingXSLTAtURL:(NSURL *)xsltURL arguments:(NSDictionary *)argument error:(NSError **)error;
- (id)XMLStringWithOptions:(NSUInteger)options
{
id root = [self rootElement];
NSMutableString* xmlString = [NSMutableString string];
[xmlString appendString:[root XMLStringWithOptions:options]];
return xmlString;
}
- (NSString *)description
{
NSAssert(_node != NULL, @"TODO");
NSMutableString *result = [NSMutableString stringWithFormat:@"<%@ %p [%p]> ", NSStringFromClass([self class]), self, self->_node];
xmlChar *xmlbuff;
int buffersize;
xmlDocDumpFormatMemory((xmlDocPtr)(self->_node), &xmlbuff, &buffersize, 1);
NSString *dump = [[[NSString alloc] initWithBytes:xmlbuff length:buffersize encoding:NSUTF8StringEncoding] autorelease];
xmlFree(xmlbuff);
[result appendString:dump];
return result;
}
@end
================================================
FILE: AePubReader/Source/CXMLDocument_PrivateExtensions.h
================================================
//
// CXMLDocument_PrivateExtensions.h
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLDocument.h"
#include
@interface CXMLDocument (CXMLDocument_PrivateExtensions)
//- (id)initWithLibXmlParserContext:(xmlParserCtxtPtr)inContext options:(NSUInteger)inOptions error:(NSError **)outError;
- (NSMutableSet *)nodePool;
@end
================================================
FILE: AePubReader/Source/CXMLDocument_PrivateExtensions.m
================================================
//
// CXMLDocument_PrivateExtensions.m
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLDocument_PrivateExtensions.h"
@implementation CXMLDocument (CXMLDocument_PrivateExtensions)
/*
- (id)initWithLibXmlParserContext:(xmlParserCtxtPtr)inContext options:(NSUInteger)inOptions error:(NSError **)outError
{
xmlParseDocument(inContext);
}
*/
- (NSMutableSet *)nodePool
{
if (nodePool == NULL)
{
nodePool = [[NSMutableSet alloc] init];
}
return(nodePool);
}
@end
================================================
FILE: AePubReader/Source/CXMLElement.h
================================================
//
// CXMLElement.h
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLNode.h"
// NSXMLElement
@interface CXMLElement : CXMLNode {
}
- (NSArray *)elementsForName:(NSString *)name;
- (NSArray *)elementsForLocalName:(NSString *)localName URI:(NSString *)URI;
- (NSArray *)attributes;
- (CXMLNode *)attributeForName:(NSString *)name;
- (CXMLNode *)attributeForLocalName:(NSString *)localName URI:(NSString *)URI;
- (NSArray *)namespaces;
- (CXMLNode *)namespaceForPrefix:(NSString *)name;
- (CXMLNode *)resolveNamespaceForName:(NSString *)name;
- (NSString *)resolvePrefixForNamespaceURI:(NSString *)namespaceURI;
//- (NSString*)_XMLStringWithOptions:(NSUInteger)options appendingToString:(NSMutableString*)str;
@end
================================================
FILE: AePubReader/Source/CXMLElement.m
================================================
//
// CXMLElement.m
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLElement.h"
#import "CXMLNode_PrivateExtensions.h"
#import "CXMLNode_CreationExtensions.h"
#import "CXMLNamespaceNode.h"
@implementation CXMLElement
- (NSArray *)elementsForName:(NSString *)name
{
NSMutableArray *theElements = [NSMutableArray array];
// TODO -- native xml api?
const xmlChar *theName = (const xmlChar *)[name UTF8String];
xmlNodePtr theCurrentNode = _node->children;
while (theCurrentNode != NULL)
{
if (theCurrentNode->type == XML_ELEMENT_NODE && xmlStrcmp(theName, theCurrentNode->name) == 0)
{
CXMLNode *theNode = [CXMLNode nodeWithLibXMLNode:(xmlNodePtr)theCurrentNode freeOnDealloc:NO];
[theElements addObject:theNode];
}
theCurrentNode = theCurrentNode->next;
}
return(theElements);
}
- (NSArray *)elementsForLocalName:(NSString *)localName URI:(NSString *)URI
{
if (URI == nil || [URI length] == 0)
return [self elementsForName:localName];
NSMutableArray *theElements = [NSMutableArray array];
const xmlChar *theLocalName = (const xmlChar *)[localName UTF8String];
const xmlChar *theNamespaceName = (const xmlChar *)[URI UTF8String];
xmlNodePtr theCurrentNode = _node->children;
while (theCurrentNode != NULL)
{
if (theCurrentNode->type == XML_ELEMENT_NODE
&& xmlStrcmp(theLocalName, theCurrentNode->name) == 0
&& theCurrentNode->ns
&& xmlStrcmp(theNamespaceName, theCurrentNode->ns->href) == 0)
{
CXMLNode *theNode = [CXMLNode nodeWithLibXMLNode:(xmlNodePtr)theCurrentNode freeOnDealloc:NO];
[theElements addObject:theNode];
}
theCurrentNode = theCurrentNode->next;
}
return theElements;
}
- (NSArray *)attributes
{
NSMutableArray *theAttributes = [NSMutableArray array];
xmlAttrPtr theCurrentNode = _node->properties;
while (theCurrentNode != NULL)
{
CXMLNode *theAttribute = [CXMLNode nodeWithLibXMLNode:(xmlNodePtr)theCurrentNode freeOnDealloc:NO];
[theAttributes addObject:theAttribute];
theCurrentNode = theCurrentNode->next;
}
return(theAttributes);
}
- (CXMLNode *)attributeForName:(NSString *)name
{
// TODO -- look for native libxml2 function for finding a named attribute (like xmlGetProp)
NSRange split = [name rangeOfString:@":"];
xmlChar *theLocalName = NULL;
xmlChar *thePrefix = NULL;
if (split.length > 0)
{
theLocalName = (xmlChar *)[[name substringFromIndex:split.location + 1] UTF8String];
thePrefix = (xmlChar *)[[name substringToIndex:split.location] UTF8String];
}
else
{
theLocalName = (xmlChar *)[name UTF8String];
}
xmlAttrPtr theCurrentNode = _node->properties;
while (theCurrentNode != NULL)
{
if (xmlStrcmp(theLocalName, theCurrentNode->name) == 0)
{
if (thePrefix == NULL || (theCurrentNode->ns
&& theCurrentNode->ns->prefix
&& xmlStrcmp(thePrefix, theCurrentNode->ns->prefix) == 0))
{
CXMLNode *theAttribute = [CXMLNode nodeWithLibXMLNode:(xmlNodePtr)theCurrentNode freeOnDealloc:NO];
return(theAttribute);
}
}
theCurrentNode = theCurrentNode->next;
}
return(NULL);
}
- (CXMLNode *)attributeForLocalName:(NSString *)localName URI:(NSString *)URI
{
if (URI == nil)
return [self attributeForName:localName];
// TODO -- look for native libxml2 function for finding a named attribute (like xmlGetProp)
const xmlChar *theLocalName = (const xmlChar *)[localName UTF8String];
const xmlChar *theNamespaceName = (const xmlChar *)[URI UTF8String];
xmlAttrPtr theCurrentNode = _node->properties;
while (theCurrentNode != NULL)
{
if (theCurrentNode->ns && theCurrentNode->ns->href &&
xmlStrcmp(theLocalName, theCurrentNode->name) == 0 &&
xmlStrcmp(theNamespaceName, theCurrentNode->ns->href) == 0)
{
CXMLNode *theAttribute = [CXMLNode nodeWithLibXMLNode:(xmlNodePtr)theCurrentNode freeOnDealloc:NO];
return(theAttribute);
}
theCurrentNode = theCurrentNode->next;
}
return(NULL);
}
- (NSArray *)namespaces
{
NSMutableArray *theNamespaces = [[[NSMutableArray alloc] init] autorelease];
xmlNsPtr theCurrentNamespace = _node->nsDef;
while (theCurrentNamespace != NULL)
{
NSString *thePrefix = theCurrentNamespace->prefix ? [NSString stringWithUTF8String:(const char *)theCurrentNamespace->prefix] : @"";
NSString *theURI = [NSString stringWithUTF8String:(const char *)theCurrentNamespace->href];
CXMLNamespaceNode *theNode = [[CXMLNamespaceNode alloc] initWithPrefix:thePrefix URI:theURI parentElement:self];
[theNamespaces addObject:theNode];
[theNode release];
theCurrentNamespace = theCurrentNamespace->next;
}
return theNamespaces;
}
- (CXMLNode *)namespaceForPrefix:(NSString *)name
{
const xmlChar *thePrefix = (const xmlChar *)[name UTF8String];
xmlNsPtr theCurrentNamespace = _node->nsDef;
while (theCurrentNamespace != NULL)
{
if (xmlStrcmp(theCurrentNamespace->prefix, thePrefix) == 0)
{
NSString *thePrefix = theCurrentNamespace->prefix ? [NSString stringWithUTF8String:(const char *)theCurrentNamespace->prefix] : @"";
NSString *theURI = [NSString stringWithUTF8String:(const char *)theCurrentNamespace->href];
return [[[CXMLNamespaceNode alloc] initWithPrefix:thePrefix URI:theURI parentElement:self] autorelease];
}
theCurrentNamespace = theCurrentNamespace->next;
}
return nil;
}
- (CXMLNode *)resolveNamespaceForName:(NSString *)name
{
NSRange split = [name rangeOfString:@":"];
if (split.length > 0)
return [self namespaceForPrefix:[name substringToIndex:split.location]];
xmlNsPtr theCurrentNamespace = _node->nsDef;
while (theCurrentNamespace != NULL)
{
if (theCurrentNamespace->prefix == 0
|| (theCurrentNamespace->prefix)[0] == 0)
{
NSString *thePrefix = theCurrentNamespace->prefix ? [NSString stringWithUTF8String:(const char *)theCurrentNamespace->prefix] : @"";
NSString *theURI = [NSString stringWithUTF8String:(const char *)theCurrentNamespace->href];
return [[[CXMLNamespaceNode alloc] initWithPrefix:thePrefix URI:theURI parentElement:self] autorelease];
}
theCurrentNamespace = theCurrentNamespace->next;
}
return nil;
}
- (NSString *)resolvePrefixForNamespaceURI:(NSString *)namespaceURI
{
const xmlChar *theXMLURI = (const xmlChar *)[namespaceURI UTF8String];
xmlNsPtr theCurrentNamespace = _node->nsDef;
while (theCurrentNamespace != NULL)
{
if (xmlStrcmp(theCurrentNamespace->href, theXMLURI) == 0)
{
if(theCurrentNamespace->prefix)
return [NSString stringWithUTF8String:(const char *)theCurrentNamespace->prefix];
return @"";
}
theCurrentNamespace = theCurrentNamespace->next;
}
return nil;
}
//- (NSString*)_XMLStringWithOptions:(NSUInteger)options appendingToString:(NSMutableString*)str
//{
//NSString* name = [self name];
//[str appendString:[NSString stringWithFormat:@"<%@", name]];
//
//for (id attribute in [self attributes] )
// {
// [attribute _XMLStringWithOptions:options appendingToString:str];
// }
//
//if ( ! _node->children )
// {
// bool isEmpty = NO;
// NSArray *emptyTags = [NSArray arrayWithObjects: @"br", @"area", @"link", @"img", @"param", @"hr", @"input", @"col", @"base", @"meta", nil ];
// for (id s in emptyTags)
// {
// if ( [s isEqualToString:@"base"] )
// {
// isEmpty = YES;
// break;
// }
// }
// if ( isEmpty )
// {
// [str appendString:@"/>"];
// return str;
// }
// }
//
//[str appendString:@">"];
//
//if ( _node->children )
// {
// for (id child in [self children])
// [child _XMLStringWithOptions:options appendingToString:str];
// }
//[str appendString:[NSString stringWithFormat:@"%@>", name]];
//return str;
//}
- (NSString *)description
{
NSAssert(_node != NULL, @"TODO");
return([NSString stringWithFormat:@"<%@ %p [%p] %@ %@>", NSStringFromClass([self class]), self, self->_node, [self name], [self XMLStringWithOptions:0]]);
}
@end
================================================
FILE: AePubReader/Source/CXMLElement_CreationExtensions.h
================================================
//
// CXMLElement_CreationExtensions.h
// TouchCode
//
// Created by Jonathan Wight on 04/01/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLElement.h"
@interface CXMLElement (CXMLElement_CreationExtensions)
- (void)addChild:(CXMLNode *)inNode;
- (void)addNamespace:(CXMLNode *)inNamespace;
@end
================================================
FILE: AePubReader/Source/CXMLElement_CreationExtensions.m
================================================
//
// CXMLElement_CreationExtensions.m
// TouchCode
//
// Created by Jonathan Wight on 04/01/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLElement_CreationExtensions.h"
@implementation CXMLElement (CXMLElement_CreationExtensions)
- (void)addChild:(CXMLNode *)inNode
{
NSAssert(inNode->_node->doc == NULL, @"Cannot addChild with a node that already is part of a document. Copy it first!");
NSAssert(self->_node != NULL, @"_node should not be null");
NSAssert(inNode->_node != NULL, @"_node should not be null");
xmlAddChild(self->_node, inNode->_node);
}
- (void)addNamespace:(CXMLNode *)inNamespace
{
xmlSetNs(self->_node, (xmlNsPtr)inNamespace->_node);
}
- (void)setStringValue:(NSString *)inStringValue
{
NSAssert(inStringValue != NULL, @"CXMLElement setStringValue should not be null");
xmlNodePtr theContentNode = xmlNewText((const xmlChar *)[inStringValue UTF8String]);
NSAssert(self->_node != NULL, @"_node should not be null");
xmlAddChild(self->_node, theContentNode);
}
@end
================================================
FILE: AePubReader/Source/CXMLElement_ElementTreeExtensions.h
================================================
//
// CXMLElement_ElementTreeExtensions.h
// TouchCode
//
// Created by Jonathan Wight on 11/14/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLElement.h"
@interface CXMLElement (CXMLElement_ElementTreeExtensions)
- (CXMLElement *)subelement:(NSString *)inName;
@end
================================================
FILE: AePubReader/Source/CXMLElement_ElementTreeExtensions.m
================================================
//
// CXMLElement_ElementTreeExtensions.m
// TouchCode
//
// Created by Jonathan Wight on 11/14/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLElement_ElementTreeExtensions.h"
#import "CXMLElement_CreationExtensions.h"
#import "CXMLNode_CreationExtensions.h"
@implementation CXMLElement (CXMLElement_ElementTreeExtensions)
- (CXMLElement *)subelement:(NSString *)inName;
{
CXMLElement *theSubelement = [CXMLNode elementWithName:inName];
[self addChild:theSubelement];
return(theSubelement);
}
@end
================================================
FILE: AePubReader/Source/CXMLNamespaceNode.h
================================================
//
// CXMLNamespaceNode.h
// TouchXML
//
#import
#import "CXMLNode.h"
#import "CXMLElement.h"
@interface CXMLNamespaceNode : CXMLNode {
NSString *_prefix;
NSString *_uri;
CXMLElement *_parent;
}
- (id) initWithPrefix:(NSString *)prefix URI:(NSString *)uri parentElement:(CXMLElement *)parent;
@end
================================================
FILE: AePubReader/Source/CXMLNamespaceNode.m
================================================
//
// CXMLNamespaceNode.m
// TouchXML
//
#import "CXMLNamespaceNode.h"
@implementation CXMLNamespaceNode
#pragma mark -
#pragma mark Init and dealloc
- (id) initWithPrefix:(NSString *)prefix URI:(NSString *)uri parentElement:(CXMLElement *)parent
{
if ((self = [super init]) != NULL)
{
_prefix = [prefix copy];
_uri = [uri copy];
_parent = parent; // Don't retain parent
}
return self;
}
- (void) dealloc
{
[_prefix release], _prefix = nil;
[_uri release], _uri = nil;
_parent = nil; // Parent not retained
[super dealloc];
}
#pragma mark -
#pragma mark Overidden methods
// NB: We need to override every method that relies on _node as namespaces in libXML don't have a xmlNode
- (CXMLNodeKind)kind
{
return CXMLNamespaceKind;
}
- (NSString *)name
{
return _prefix ? [[_prefix copy] autorelease] : @"";
}
- (NSString *)stringValue
{
return _uri ? [[_uri copy] autorelease] : @"";
}
- (NSUInteger)index
{
return 0; // TODO: Write tets, Fix
}
- (NSUInteger)level
{
return _parent ? [_parent level] + 1 : 2;
}
- (CXMLDocument *)rootDocument
{
return [_parent rootDocument];
}
- (CXMLNode *)parent
{
return _parent;
}
- (NSUInteger)childCount
{
return 0;
}
- (NSArray *)children
{
return nil;
}
- (CXMLNode *)childAtIndex:(NSUInteger)index
{
return nil;
}
- (CXMLNode *)previousSibling
{
return nil; // TODO: Write tets, Fix
}
- (CXMLNode *)nextSibling
{
return nil; // TODO: Write tets, Fix
}
//- (CXMLNode *)previousNode;
//- (CXMLNode *)nextNode;
//- (NSString *)XPath;
- (NSString *)localName
{
return [self name];
}
- (NSString *)prefix
{
return @"";
}
- (NSString *)URI
{
return nil;
}
//+ (NSString *)localNameForName:(NSString *)name;
//+ (NSString *)prefixForName:(NSString *)name;
//+ (CXMLNode *)predefinedNamespaceForPrefix:(NSString *)name;
- (NSString *)description
{
if (_prefix && [_prefix length] > 0)
return [NSString stringWithFormat:@"xmlns:%@=\"%@\"", _prefix, _uri];
return [NSString stringWithFormat:@"xmlns=\"%@\"", _uri];
}
- (NSString *)XMLString
{
return [self description];
}
- (NSString *)XMLStringWithOptions:(NSUInteger)options
{
return [self description];
}
//- (NSString *)canonicalXMLStringPreservingComments:(BOOL)comments;
- (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error
{
return nil;
}
@end
================================================
FILE: AePubReader/Source/CXMLNode.h
================================================
//
// CXMLNode.h
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import
#include
typedef enum {
CXMLInvalidKind = 0,
CXMLElementKind = XML_ELEMENT_NODE,
CXMLAttributeKind = XML_ATTRIBUTE_NODE,
CXMLTextKind = XML_TEXT_NODE,
CXMLProcessingInstructionKind = XML_PI_NODE,
CXMLCommentKind = XML_COMMENT_NODE,
CXMLNotationDeclarationKind = XML_NOTATION_NODE,
CXMLDTDKind = XML_DTD_NODE,
CXMLElementDeclarationKind = XML_ELEMENT_DECL,
CXMLAttributeDeclarationKind = XML_ATTRIBUTE_DECL,
CXMLEntityDeclarationKind = XML_ENTITY_DECL,
CXMLNamespaceKind = XML_NAMESPACE_DECL,
} CXMLNodeKind;
@class CXMLDocument;
// NSXMLNode
@interface CXMLNode : NSObject {
xmlNodePtr _node;
BOOL _freeNodeOnRelease;
}
- (CXMLNodeKind)kind;
- (NSString *)name;
- (NSString *)stringValue;
- (NSUInteger)index;
- (NSUInteger)level;
- (CXMLDocument *)rootDocument;
- (CXMLNode *)parent;
- (NSUInteger)childCount;
- (NSArray *)children;
- (CXMLNode *)childAtIndex:(NSUInteger)index;
- (CXMLNode *)previousSibling;
- (CXMLNode *)nextSibling;
//- (CXMLNode *)previousNode;
//- (CXMLNode *)nextNode;
//- (NSString *)XPath;
- (NSString *)localName;
- (NSString *)prefix;
- (NSString *)URI;
+ (NSString *)localNameForName:(NSString *)name;
+ (NSString *)prefixForName:(NSString *)name;
+ (CXMLNode *)predefinedNamespaceForPrefix:(NSString *)name;
- (NSString *)description;
- (NSString *)XMLString;
- (NSString *)XMLStringWithOptions:(NSUInteger)options;
//- (NSString *)canonicalXMLStringPreservingComments:(BOOL)comments;
- (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error;
@end
================================================
FILE: AePubReader/Source/CXMLNode.m
================================================
//
// CXMLNode.m
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLNode.h"
#import "CXMLNode_PrivateExtensions.h"
#import "CXMLDocument.h"
#import "CXMLElement.h"
#import "CXMLNode_CreationExtensions.h"
#include
#include
#include
static int MyXmlOutputWriteCallback(void * context, const char * buffer, int len);
static int MyXmlOutputCloseCallback(void * context);
@implementation CXMLNode
- (void)dealloc
{
if (_node)
{
if (_node->_private == self)
_node->_private = NULL;
if (_freeNodeOnRelease)
{
xmlFreeNode(_node);
}
_node = NULL;
}
//
[super dealloc];
}
- (id)copyWithZone:(NSZone *)zone;
{
#pragma unused (zone)
xmlNodePtr theNewNode = xmlCopyNode(_node, 1);
CXMLNode *theNode = [[[self class] alloc] initWithLibXMLNode:theNewNode freeOnDealloc:YES];
theNewNode->_private = theNode;
return(theNode);
}
#pragma mark -
- (CXMLNodeKind)kind
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
return(_node->type); // TODO this isn't 100% accurate!
}
- (NSString *)name
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
// TODO use xmlCheckUTF8 to check name
if (_node->name == NULL)
return(NULL);
NSString *localName = [NSString stringWithUTF8String:(const char *)_node->name];
if (_node->ns == NULL || _node->ns->prefix == NULL)
return localName;
return [NSString stringWithFormat:@"%@:%@", [NSString stringWithUTF8String:(const char *)_node->ns->prefix], localName];
}
- (NSString *)stringValue
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
if (_node->type == XML_TEXT_NODE || _node->type == XML_CDATA_SECTION_NODE)
return [NSString stringWithUTF8String:(const char *)_node->content];
if (_node->type == XML_ATTRIBUTE_NODE)
return [NSString stringWithUTF8String:(const char *)_node->children->content];
NSMutableString *theStringValue = [[[NSMutableString alloc] init] autorelease];
for (CXMLNode *child in [self children])
{
[theStringValue appendString:[child stringValue]];
}
return theStringValue;
}
- (NSUInteger)index
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
xmlNodePtr theCurrentNode = _node->prev;
NSUInteger N;
for (N = 0; theCurrentNode != NULL; ++N, theCurrentNode = theCurrentNode->prev)
;
return(N);
}
- (NSUInteger)level
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
xmlNodePtr theCurrentNode = _node->parent;
NSUInteger N;
for (N = 0; theCurrentNode != NULL; ++N, theCurrentNode = theCurrentNode->parent)
;
return(N);
}
- (CXMLDocument *)rootDocument
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
return(_node->doc->_private);
}
- (CXMLNode *)parent
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
if (_node->parent == NULL)
return(NULL);
else
return (_node->parent->_private);
}
- (NSUInteger)childCount
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
if (_node->type == CXMLAttributeKind)
return 0; // NSXMLNodes of type NSXMLAttributeKind can't have children
xmlNodePtr theCurrentNode = _node->children;
NSUInteger N;
for (N = 0; theCurrentNode != NULL; ++N, theCurrentNode = theCurrentNode->next)
;
return(N);
}
- (NSArray *)children
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
NSMutableArray *theChildren = [NSMutableArray array];
if (_node->type != CXMLAttributeKind) // NSXML Attribs don't have children.
{
xmlNodePtr theCurrentNode = _node->children;
while (theCurrentNode != NULL)
{
CXMLNode *theNode = [CXMLNode nodeWithLibXMLNode:theCurrentNode freeOnDealloc:NO];
[theChildren addObject:theNode];
theCurrentNode = theCurrentNode->next;
}
}
return(theChildren);
}
- (CXMLNode *)childAtIndex:(NSUInteger)index
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
xmlNodePtr theCurrentNode = _node->children;
NSUInteger N;
for (N = 0; theCurrentNode != NULL && N != index; ++N, theCurrentNode = theCurrentNode->next)
;
if (theCurrentNode)
return([CXMLNode nodeWithLibXMLNode:theCurrentNode freeOnDealloc:NO]);
return(NULL);
}
- (CXMLNode *)previousSibling
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
if (_node->prev == NULL)
return(NULL);
else
return([CXMLNode nodeWithLibXMLNode:_node->prev freeOnDealloc:NO]);
}
- (CXMLNode *)nextSibling
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
if (_node->next == NULL)
return(NULL);
else
return([CXMLNode nodeWithLibXMLNode:_node->next freeOnDealloc:NO]);
}
//- (CXMLNode *)previousNode;
//- (CXMLNode *)nextNode;
//- (NSString *)XPath;
- (NSString *)localName
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
// TODO use xmlCheckUTF8 to check name
if (_node->name == NULL)
return(NULL);
else
return([NSString stringWithUTF8String:(const char *)_node->name]);
}
- (NSString *)prefix
{
if (_node->ns && _node->ns->prefix)
return([NSString stringWithUTF8String:(const char *)_node->ns->prefix]);
else
return(@"");
}
- (NSString *)URI
{
if (_node->ns)
return([NSString stringWithUTF8String:(const char *)_node->ns->href]);
else
return(NULL);
}
+ (NSString *)localNameForName:(NSString *)name
{
NSRange split = [name rangeOfString:@":"];
if (split.length > 0)
return [name substringFromIndex:split.location + 1];
return name;
}
+ (NSString *)prefixForName:(NSString *)name
{
NSRange split = [name rangeOfString:@":"];
if (split.length > 0)
return [name substringToIndex:split.location];
return @"";
}
+ (CXMLNode *)predefinedNamespaceForPrefix:(NSString *)name
{
if ([name isEqualToString:@"xml"])
return [CXMLNode namespaceWithName:@"xml" stringValue:@"http://www.w3.org/XML/1998/namespace"];
if ([name isEqualToString:@"xs"])
return [CXMLNode namespaceWithName:@"xs" stringValue:@"http://www.w3.org/2001/XMLSchema"];
if ([name isEqualToString:@"xsi"])
return [CXMLNode namespaceWithName:@"xsi" stringValue:@"http://www.w3.org/2001/XMLSchema-instance"];
if ([name isEqualToString:@"xmlns"]) // Not in Cocoa, but should be as it's reserved by W3C
return [CXMLNode namespaceWithName:@"xmlns" stringValue:@"http://www.w3.org/2000/xmlns/"];
return nil;
}
- (NSString *)description
{
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
return([NSString stringWithFormat:@"<%@ %p [%p] %@ %@>", NSStringFromClass([self class]), self, self->_node, [self name], [self XMLStringWithOptions:0]]);
}
- (NSString *)XMLString
{
return([self XMLStringWithOptions:0]);
}
- (NSString *)XMLStringWithOptions:(NSUInteger)options
{
#pragma unused (options)
NSMutableData *theData = [[[NSMutableData alloc] init] autorelease];
xmlOutputBufferPtr theOutputBuffer = xmlOutputBufferCreateIO(MyXmlOutputWriteCallback, MyXmlOutputCloseCallback, theData, NULL);
xmlNodeDumpOutput(theOutputBuffer, _node->doc, _node, 0, 0, "utf-8");
xmlOutputBufferFlush(theOutputBuffer);
NSString *theString = [[[NSString alloc] initWithData:theData encoding:NSUTF8StringEncoding] autorelease];
xmlOutputBufferClose(theOutputBuffer);
return(theString);
}
//- (NSString *)canonicalXMLStringPreservingComments:(BOOL)comments;
- (NSArray *)nodesForXPath:(NSString *)xpath error:(NSError **)error
{
#pragma unused (error)
NSAssert(_node != NULL, @"CXMLNode does not have attached libxml2 _node.");
NSArray *theResult = NULL;
xmlXPathContextPtr theXPathContext = xmlXPathNewContext(_node->doc);
theXPathContext->node = _node;
// TODO considering putting xmlChar <-> UTF8 into a NSString category
xmlXPathObjectPtr theXPathObject = xmlXPathEvalExpression((const xmlChar *)[xpath UTF8String], theXPathContext);
if (theXPathObject == NULL)
{
if (error)
*error = [NSError errorWithDomain:@"TODO_DOMAIN" code:-1 userInfo:NULL];
return(NULL);
}
if (xmlXPathNodeSetIsEmpty(theXPathObject->nodesetval))
theResult = [NSArray array]; // TODO better to return NULL?
else
{
NSMutableArray *theArray = [NSMutableArray array];
int N;
for (N = 0; N < theXPathObject->nodesetval->nodeNr; N++)
{
xmlNodePtr theNode = theXPathObject->nodesetval->nodeTab[N];
[theArray addObject:[CXMLNode nodeWithLibXMLNode:theNode freeOnDealloc:NO]];
}
theResult = theArray;
}
xmlXPathFreeObject(theXPathObject);
xmlXPathFreeContext(theXPathContext);
return(theResult);
}
//- (NSArray *)objectsForXQuery:(NSString *)xquery constants:(NSDictionary *)constants error:(NSError **)error;
//- (NSArray *)objectsForXQuery:(NSString *)xquery error:(NSError **)error;
@end
static int MyXmlOutputWriteCallback(void * context, const char * buffer, int len)
{
NSMutableData *theData = context;
[theData appendBytes:buffer length:len];
return(len);
}
static int MyXmlOutputCloseCallback(void * context)
{
return(0);
}
================================================
FILE: AePubReader/Source/CXMLNode_PrivateExtensions.h
================================================
//
// CXMLNode_PrivateExtensions.h
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLNode.h"
@interface CXMLNode (CXMLNode_PrivateExtensions)
@property (readonly, nonatomic, assign) xmlNodePtr node;
- (id)initWithLibXMLNode:(xmlNodePtr)inLibXMLNode freeOnDealloc:(BOOL)infreeOnDealloc;
+ (id)nodeWithLibXMLNode:(xmlNodePtr)inLibXMLNode freeOnDealloc:(BOOL)infreeOnDealloc;
@end
================================================
FILE: AePubReader/Source/CXMLNode_PrivateExtensions.m
================================================
//
// CXMLNode_PrivateExtensions.m
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLNode_PrivateExtensions.h"
#import "CXMLElement.h"
#import "CXMLDocument_PrivateExtensions.h"
@implementation CXMLNode (CXMLNode_PrivateExtensions)
- (id)initWithLibXMLNode:(xmlNodePtr)inLibXMLNode freeOnDealloc:(BOOL)infreeOnDealloc
{
if (inLibXMLNode == NULL)
return nil;
if ((self = [super init]) != NULL)
{
_node = inLibXMLNode;
_freeNodeOnRelease = infreeOnDealloc;
}
return(self);
}
+ (id)nodeWithLibXMLNode:(xmlNodePtr)inLibXMLNode freeOnDealloc:(BOOL)infreeOnDealloc
{
// TODO more checking.
if (inLibXMLNode == NULL)
return nil;
if (inLibXMLNode->_private)
return(inLibXMLNode->_private);
Class theClass = [CXMLNode class];
switch (inLibXMLNode->type)
{
case XML_ELEMENT_NODE:
theClass = [CXMLElement class];
break;
case XML_DOCUMENT_NODE:
theClass = [CXMLDocument class];
break;
case XML_ATTRIBUTE_NODE:
case XML_TEXT_NODE:
case XML_CDATA_SECTION_NODE:
case XML_COMMENT_NODE:
break;
default:
NSAssert1(NO, @"TODO Unhandled type (%d).", inLibXMLNode->type);
return(NULL);
}
CXMLNode *theNode = [[[theClass alloc] initWithLibXMLNode:inLibXMLNode freeOnDealloc:infreeOnDealloc] autorelease];
if (inLibXMLNode->doc != NULL)
{
CXMLDocument *theXMLDocument = inLibXMLNode->doc->_private;
if (theXMLDocument != NULL)
{
NSAssert([theXMLDocument isKindOfClass:[CXMLDocument class]] == YES, @"TODO");
[[theXMLDocument nodePool] addObject:theNode];
theNode->_node->_private = theNode;
}
}
return(theNode);
}
- (xmlNodePtr)node
{
return(_node);
}
@end
================================================
FILE: AePubReader/Source/CXMLNode_XPathExtensions.h
================================================
//
// CXMLNode_XPathExtensions.h
// TouchCode
//
// Created by Jonathan Wight on 04/01/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLNode.h"
@interface CXMLNode (CXMLNode_XPathExtensions)
- (NSArray *)nodesForXPath:(NSString *)xpath namespaceMappings:(NSDictionary *)inNamespaceMappings error:(NSError **)error;
- (CXMLNode *)nodeForXPath:(NSString *)xpath error:(NSError **)outError;
@end
================================================
FILE: AePubReader/Source/CXMLNode_XPathExtensions.m
================================================
//
// CXMLNode_XPathExtensions.m
// TouchCode
//
// Created by Jonathan Wight on 04/01/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLNode_XPathExtensions.h"
#import "CXMLDocument.h"
#import "CXMLNode_PrivateExtensions.h"
#include
#include
@implementation CXMLNode (CXMLNode_NamespaceExtensions)
- (NSArray *)nodesForXPath:(NSString *)xpath namespaceMappings:(NSDictionary *)inNamespaceMappings error:(NSError **)error;
{
#pragma unused (error)
NSAssert(_node != NULL, @"TODO");
NSArray *theResult = NULL;
xmlXPathContextPtr theXPathContext = xmlXPathNewContext(_node->doc);
theXPathContext->node = _node;
for (NSString *thePrefix in inNamespaceMappings)
{
xmlXPathRegisterNs(theXPathContext, (xmlChar *)[thePrefix UTF8String], (xmlChar *)[[inNamespaceMappings objectForKey:thePrefix] UTF8String]);
}
// TODO considering putting xmlChar <-> UTF8 into a NSString category
xmlXPathObjectPtr theXPathObject = xmlXPathEvalExpression((const xmlChar *)[xpath UTF8String], theXPathContext);
if (xmlXPathNodeSetIsEmpty(theXPathObject->nodesetval))
theResult = [NSArray array]; // TODO better to return NULL?
else
{
NSMutableArray *theArray = [NSMutableArray array];
int N;
for (N = 0; N < theXPathObject->nodesetval->nodeNr; N++)
{
xmlNodePtr theNode = theXPathObject->nodesetval->nodeTab[N];
[theArray addObject:[CXMLNode nodeWithLibXMLNode:theNode freeOnDealloc:NO]];
}
theResult = theArray;
}
xmlXPathFreeObject(theXPathObject);
xmlXPathFreeContext(theXPathContext);
return(theResult);
}
- (CXMLNode *)nodeForXPath:(NSString *)xpath error:(NSError **)outError
{
return([[self nodesForXPath:xpath error:outError] lastObject]);
}
@end
================================================
FILE: AePubReader/Source/Creation/CXMLDocument_CreationExtensions.h
================================================
//
// CXMLDocument_CreationExtensions.h
// TouchCode
//
// Created by Jonathan Wight on 11/11/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLDocument.h"
@interface CXMLDocument (CXMLDocument_CreationExtensions)
//- (void)setVersion:(NSString *)version; //primitive
//- (void)setStandalone:(BOOL)standalone; //primitive
//- (void)setDocumentContentKind:(CXMLDocumentContentKind)kind; //primitive
//- (void)setMIMEType:(NSString *)MIMEType; //primitive
//- (void)setDTD:(CXMLDTD *)documentTypeDeclaration; //primitive
//- (void)setRootElement:(CXMLNode *)root;
- (void)insertChild:(CXMLNode *)child atIndex:(NSUInteger)index;
//- (void)insertChildren:(NSArray *)children atIndex:(NSUInteger)index;
//- (void)removeChildAtIndex:(NSUInteger)index; //primitive
//- (void)setChildren:(NSArray *)children; //primitive
- (void)addChild:(CXMLNode *)child;
//- (void)replaceChildAtIndex:(NSUInteger)index withNode:(CXMLNode *)node;
@end
================================================
FILE: AePubReader/Source/Creation/CXMLDocument_CreationExtensions.m
================================================
//
// CXMLDocument_CreationExtensions.m
// TouchCode
//
// Created by Jonathan Wight on 11/11/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLDocument_CreationExtensions.h"
#import "CXMLElement.h"
#import "CXMLNode_PrivateExtensions.h"
#import "CXMLDocument_PrivateExtensions.h"
@implementation CXMLDocument (CXMLDocument_CreationExtensions)
- (void)insertChild:(CXMLNode *)child atIndex:(NSUInteger)index
{
[self.nodePool addObject:child];
CXMLNode *theCurrentNode = [self.children objectAtIndex:index];
xmlAddPrevSibling(theCurrentNode->_node, child->_node);
}
- (void)addChild:(CXMLNode *)child
{
[self.nodePool addObject:child];
xmlAddChild(self->_node, child->_node);
}
@end
================================================
FILE: AePubReader/Source/Creation/CXMLNode_CreationExtensions.h
================================================
//
// CXMLNode_CreationExtensions.h
// TouchCode
//
// Created by Jonathan Wight on 04/01/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLNode.h"
@class CXMLElement;
@interface CXMLNode (CXMLNode_CreationExtensions)
//- (id)initWithKind:(NSXMLNodeKind)kind;
//- (id)initWithKind:(NSXMLNodeKind)kind options:(NSUInteger)options; //primitive
+ (id)document;
+ (id)documentWithRootElement:(CXMLElement *)element;
+ (id)elementWithName:(NSString *)name;
+ (id)elementWithName:(NSString *)name URI:(NSString *)URI;
+ (id)elementWithName:(NSString *)name stringValue:(NSString *)string;
//+ (id)elementWithName:(NSString *)name children:(NSArray *)children attributes:(NSArray *)attributes;
//+ (id)attributeWithName:(NSString *)name stringValue:(NSString *)stringValue;
//+ (id)attributeWithName:(NSString *)name URI:(NSString *)URI stringValue:(NSString *)stringValue;
+ (id)namespaceWithName:(NSString *)name stringValue:(NSString *)stringValue;
+ (id)processingInstructionWithName:(NSString *)name stringValue:(NSString *)stringValue;
//+ (id)commentWithStringValue:(NSString *)stringValue;
//+ (id)textWithStringValue:(NSString *)stringValue;
//+ (id)DTDNodeWithXMLString:(NSString *)string;
- (void)setStringValue:(NSString *)inStringValue;
@end
================================================
FILE: AePubReader/Source/Creation/CXMLNode_CreationExtensions.m
================================================
//
// CXMLNode_CreationExtensions.m
// TouchCode
//
// Created by Jonathan Wight on 04/01/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLNode_CreationExtensions.h"
#import "CXMLDocument.h"
#import "CXMLElement.h"
#import "CXMLNode_PrivateExtensions.h"
#import "CXMLDocument_PrivateExtensions.h"
#import "CXMLNamespaceNode.h"
@implementation CXMLNode (CXMLNode_CreationExtensions)
+ (id)document;
{
xmlDocPtr theDocumentNode = xmlNewDoc((const xmlChar *)"1.0");
NSAssert(theDocumentNode != NULL, @"xmlNewDoc failed");
CXMLDocument *theDocument = [[[CXMLDocument alloc] initWithLibXMLNode:(xmlNodePtr)theDocumentNode freeOnDealloc:NO] autorelease];
return(theDocument);
}
+ (id)documentWithRootElement:(CXMLElement *)element;
{
xmlDocPtr theDocumentNode = xmlNewDoc((const xmlChar *)"1.0");
NSAssert(theDocumentNode != NULL, @"xmlNewDoc failed");
xmlDocSetRootElement(theDocumentNode, element.node);
CXMLDocument *theDocument = [[[CXMLDocument alloc] initWithLibXMLNode:(xmlNodePtr)theDocumentNode freeOnDealloc:NO] autorelease];
[theDocument.nodePool addObject:element];
return(theDocument);
}
+ (id)elementWithName:(NSString *)name
{
xmlNodePtr theElementNode = xmlNewNode(NULL, (const xmlChar *)[name UTF8String]);
CXMLElement *theElement = [[[CXMLElement alloc] initWithLibXMLNode:(xmlNodePtr)theElementNode freeOnDealloc:NO] autorelease];
return(theElement);
}
+ (id)elementWithName:(NSString *)name URI:(NSString *)URI
{
xmlNodePtr theElementNode = xmlNewNode(NULL, (const xmlChar *)[name UTF8String]);
xmlNsPtr theNSNode = xmlNewNs(theElementNode, (const xmlChar *)[URI UTF8String], NULL);
theElementNode->ns = theNSNode;
CXMLElement *theElement = [[[CXMLElement alloc] initWithLibXMLNode:(xmlNodePtr)theElementNode freeOnDealloc:NO] autorelease];
return(theElement);
}
+ (id)elementWithName:(NSString *)name stringValue:(NSString *)string
{
xmlNodePtr theElementNode = xmlNewNode(NULL, (const xmlChar *)[name UTF8String]);
CXMLElement *theElement = [[[CXMLElement alloc] initWithLibXMLNode:(xmlNodePtr)theElementNode freeOnDealloc:NO] autorelease];
theElement.stringValue = string;
return(theElement);
}
+ (id)namespaceWithName:(NSString *)name stringValue:(NSString *)stringValue
{
return [[[CXMLNamespaceNode alloc] initWithPrefix:name URI:stringValue parentElement:nil] autorelease];
}
+ (id)processingInstructionWithName:(NSString *)name stringValue:(NSString *)stringValue;
{
xmlNodePtr theNode = xmlNewPI((const xmlChar *)[name UTF8String], (const xmlChar *)[stringValue UTF8String]);
NSAssert(theNode != NULL, @"xmlNewPI failed");
CXMLNode *theNodeObject = [[[CXMLNode alloc] initWithLibXMLNode:theNode freeOnDealloc:NO] autorelease];
return(theNodeObject);
}
- (void)setStringValue:(NSString *)inStringValue
{
NSAssert(_node->type == XML_TEXT_NODE, @"CNode setStringValue only implemented for text nodes");
xmlNodeSetContent(_node, (const xmlChar *)[inStringValue UTF8String]);
}
@end
================================================
FILE: AePubReader/Source/Tidy/CTidy.h
================================================
//
// CTidy.h
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#ifdef TOUCHXMLUSETIDY
#import
#include "tidy.h"
#include "buffio.h"
typedef enum {
TidyFormat_HTML,
TidyFormat_XML,
TidyFormat_XHTML,
} CTidyFormat;
@interface CTidy : NSObject {
}
+ (CTidy *)tidy;
- (NSData *)tidyData:(NSData *)inData inputFormat:(CTidyFormat)inInputFormat outputFormat:(CTidyFormat)inOutputFormat diagnostics:(NSString **)outDiagnostics error:(NSError **)outError;
- (NSString *)tidyString:(NSString *)inString inputFormat:(CTidyFormat)inInputFormat outputFormat:(CTidyFormat)inOutputFormat diagnostics:(NSString **)outDiagnostics error:(NSError **)outError;
@end
#endif /* TOUCHXMLUSETIDY */
================================================
FILE: AePubReader/Source/Tidy/CTidy.m
================================================
//
// CTidy.m
// TouchCode
//
// Created by Jonathan Wight on 03/07/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#ifdef TOUCHXMLUSETIDY
#import "CTidy.h"
@interface CTidy ()
@end
#pragma mark -
@implementation CTidy
+ (CTidy *)tidy
{
return([[[self alloc] init] autorelease]);
}
- (NSData *)tidyData:(NSData *)inData inputFormat:(CTidyFormat)inInputFormat outputFormat:(CTidyFormat)inOutputFormat diagnostics:(NSString **)outDiagnostics error:(NSError **)outError
{
TidyDoc theTidyDocument = tidyCreate();
int theResultCode = 0;
// Set input format if input is XML (xhtml & html are the tidy 'default')
if (inInputFormat == TidyFormat_XML)
{
theResultCode = tidyOptSetBool(theTidyDocument, TidyXmlTags, YES);
NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0");
}
// Set output format
TidyOptionId theOutputValue = TidyXmlOut;
if (inOutputFormat == TidyFormat_HTML)
theOutputValue = TidyHtmlOut;
else if (inOutputFormat == TidyFormat_XHTML)
theOutputValue = TidyXhtmlOut;
theResultCode = tidyOptSetBool(theTidyDocument, theOutputValue, YES);
NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0");
// Force output even if errors found
theResultCode = tidyOptSetBool(theTidyDocument, TidyForceOutput, YES);
NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0");
theResultCode = tidySetOutCharEncoding(theTidyDocument, "utf8");
NSAssert(theResultCode >= 0, @"tidySetOutCharEncoding() should return 0");
// Create an error buffer
TidyBuffer theErrorBuffer;
tidyBufInit(&theErrorBuffer);
theResultCode = tidySetErrorBuffer(theTidyDocument, &theErrorBuffer);
NSAssert(theResultCode >= 0, @"tidySetErrorBuffer() should return 0");
// #############################################################################
// Create an input buffer and copy input to it (TODO uses 2X memory == bad!)
TidyBuffer theInputBuffer;
tidyBufAlloc(&theInputBuffer, [inData length]);
memcpy(theInputBuffer.bp, [inData bytes], [inData length]);
theInputBuffer.size = [inData length];
// Parse the data.
theResultCode = tidyParseBuffer(theTidyDocument, &theInputBuffer);
if (theResultCode < 0)
{
if (outError)
{
NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys:
[NSString stringWithUTF8String:(char *)theErrorBuffer.bp], NSLocalizedDescriptionKey,
NULL];
*outError = [NSError errorWithDomain:@"TODO_DOMAIN" code:theResultCode userInfo:theUserInfo];
}
return(NO);
}
// Clean up input buffer.
tidyBufFree(&theInputBuffer);
// Repair the data
theResultCode = tidyCleanAndRepair(theTidyDocument);
if (theResultCode < 0)
{
return(NULL);
}
//theResultCode = tidyRunDiagnostics(theTidyDocument);
//
TidyBuffer theOutputBuffer;
tidyBufInit(&theOutputBuffer);
theResultCode = tidySaveBuffer(theTidyDocument, &theOutputBuffer);
if (theResultCode < 0)
return(NULL);
NSAssert(theOutputBuffer.bp != NULL, @"The buffer should not be null.");
NSData *theOutput = [NSData dataWithBytes:theOutputBuffer.bp length:theOutputBuffer.size];
tidyBufFree(&theOutputBuffer);
//
if (outDiagnostics && theErrorBuffer.bp != NULL)
{
NSData *theErrorData = [NSData dataWithBytes:theErrorBuffer.bp length:theErrorBuffer.size];
*outDiagnostics = [[[NSString alloc] initWithData:theErrorData encoding:NSUTF8StringEncoding] autorelease];
}
tidyBufFree(&theErrorBuffer);
// #############################################################################
tidyRelease(theTidyDocument);
return(theOutput);
}
- (NSString *)tidyString:(NSString *)inString inputFormat:(CTidyFormat)inInputFormat outputFormat:(CTidyFormat)inOutputFormat diagnostics:(NSString **)outDiagnostics error:(NSError **)outError
{
TidyDoc theTidyDocument = tidyCreate();
int theResultCode = 0;
// Set input format if input is XML (xhtml & html are the tidy 'default')
if (inInputFormat == TidyFormat_XML)
{
theResultCode = tidyOptSetBool(theTidyDocument, TidyXmlTags, YES);
NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0");
}
// Set output format
TidyOptionId theOutputValue = TidyXmlOut;
if (inOutputFormat == TidyFormat_HTML)
theOutputValue = TidyHtmlOut;
else if (inOutputFormat == TidyFormat_XHTML)
theOutputValue = TidyXhtmlOut;
theResultCode = tidyOptSetBool(theTidyDocument, theOutputValue, YES);
NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0");
// Force output even if errors found
theResultCode = tidyOptSetBool(theTidyDocument, TidyForceOutput, YES);
NSAssert(theResultCode >= 0, @"tidyOptSetBool() should return 0");
theResultCode = tidySetCharEncoding(theTidyDocument, "utf8");
NSAssert(theResultCode >= 0, @"tidySetOutCharEncoding() should return 0");
// Create an error buffer
TidyBuffer theErrorBuffer;
tidyBufInit(&theErrorBuffer);
theResultCode = tidySetErrorBuffer(theTidyDocument, &theErrorBuffer);
NSAssert(theResultCode >= 0, @"tidySetErrorBuffer() should return 0");
// #############################################################################
// Parse the data.
theResultCode = tidyParseString(theTidyDocument, [inString UTF8String]);
if (theResultCode < 0)
{
if (outError)
{
NSDictionary *theUserInfo = [NSDictionary dictionaryWithObjectsAndKeys:
[NSString stringWithUTF8String:(char *)theErrorBuffer.bp], NSLocalizedDescriptionKey,
NULL];
*outError = [NSError errorWithDomain:@"TODO_DOMAIN" code:theResultCode userInfo:theUserInfo];
}
return(NO);
}
// Repair the data
theResultCode = tidyCleanAndRepair(theTidyDocument);
if (theResultCode < 0)
{
return(NULL);
}
//theResultCode = tidyRunDiagnostics(theTidyDocument);
//
uint theBufferLength = 0;
theResultCode = tidySaveString(theTidyDocument, NULL, &theBufferLength);
NSMutableData *theOutputBuffer = [NSMutableData dataWithLength:theBufferLength];
theResultCode = tidySaveString(theTidyDocument, [theOutputBuffer mutableBytes], &theBufferLength);
NSString *theString = [[[NSString alloc] initWithData:theOutputBuffer encoding:NSUTF8StringEncoding] autorelease];
//
if (outDiagnostics && theErrorBuffer.bp != NULL)
{
NSData *theErrorData = [NSData dataWithBytes:theErrorBuffer.bp length:theErrorBuffer.size];
*outDiagnostics = [[[NSString alloc] initWithData:theErrorData encoding:NSUTF8StringEncoding] autorelease];
}
tidyBufFree(&theErrorBuffer);
// #############################################################################
tidyRelease(theTidyDocument);
return(theString);
}
@end
#endif /* TOUCHXMLUSETIDY */
================================================
FILE: AePubReader/Source/TouchXML.h
================================================
//
// TouchXML.h
// TouchCode
//
// Created by Jonathan Wight on 07/11/08.
// Copyright 2008 toxicsoftware.com. All rights reserved.
//
// Permission is hereby granted, free of charge, to any person
// obtaining a copy of this software and associated documentation
// files (the "Software"), to deal in the Software without
// restriction, including without limitation the rights to use,
// copy, modify, merge, publish, distribute, sublicense, and/or sell
// copies of the Software, and to permit persons to whom the
// Software is furnished to do so, subject to the following
// conditions:
//
// The above copyright notice and this permission notice shall be
// included in all copies or substantial portions of the Software.
//
// THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
// EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES
// OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
// NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT
// HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
// WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
// FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR
// OTHER DEALINGS IN THE SOFTWARE.
//
#import "CXMLDocument.h"
#import "CXMLDocument_CreationExtensions.h"
#import "CXMLElement.h"
#import "CXMLElement_CreationExtensions.h"
#import "CXMLElement_ElementTreeExtensions.h"
#import "CXMLNode.h"
#import "CXMLNode_CreationExtensions.h"
#import "CXMLNode_XPathExtensions.h"
================================================
FILE: AePubReader/main.m
================================================
//
// main.m
// AePubReader
//
// Created by Federico Frappi on 04/04/11.
// Copyright 2011 __MyCompanyName__. All rights reserved.
//
#import
int main(int argc, char *argv[]) {
NSAutoreleasePool * pool = [[NSAutoreleasePool alloc] init];
int retVal = UIApplicationMain(argc, argv, nil, nil);
[pool release];
return retVal;
}
================================================
FILE: README
================================================