git.fiddlerwoaroof.com
Browse code

(init)

Ed Langley authored on 04/02/2020 05:52:26
Showing 65 changed files
1 1
new file mode 100644
... ...
@@ -0,0 +1 @@
1
+*~
0 2
new file mode 100644
... ...
@@ -0,0 +1,2 @@
1
+This is a Subversion working copy administrative directory.
2
+Visit http://subversion.tigris.org/ for more information.
0 3
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+K 10
2
+svn:ignore
3
+V 18
4
+*.mode1
5
+*.pbxuser
6
+
7
+END
0 8
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+K 10
2
+svn:ignore
3
+V 18
4
+*.mode1
5
+*.pbxuser
6
+
7
+END
1 9
new file mode 100644
... ...
@@ -0,0 +1,42 @@
1
+<?xml version="1.0" encoding="utf-8"?>
2
+<wc-entries
3
+   xmlns="svn:">
4
+<entry
5
+   committed-rev="47"
6
+   name=""
7
+   committed-date="2005-09-08T21:42:03.137090Z"
8
+   url="svn+ssh://heavymeta.org/usr/local/svn-repos/lisp-spotlight-indexer/trunk/lisp-spotlight-indexer/Lisp%20Metadata%20Importer/Lisp%20Metadata%20Importer.xcodeproj"
9
+   last-author="wiseman"
10
+   kind="dir"
11
+   uuid="be04b032-bdff-0310-9f9d-c0bd38ff17cf"
12
+   prop-time="2005-09-06T00:00:00.000000Z"
13
+   revision="49"/>
14
+<entry
15
+   committed-rev="54"
16
+   name="project.pbxproj"
17
+   text-time="2005-09-14T18:41:25.000000Z"
18
+   committed-date="2005-09-13T06:50:08.459559Z"
19
+   checksum="d290e8dd22bcb3cb8eece49f01501456"
20
+   last-author="wiseman"
21
+   kind="file"
22
+   prop-time="2005-09-06T00:00:00.000000Z"
23
+   revision="54"/>
24
+<entry
25
+   committed-rev="1"
26
+   name="schwa.pbxuser"
27
+   text-time="2005-09-06T00:00:00.000000Z"
28
+   committed-date="2005-09-01T22:24:26.351721Z"
29
+   checksum="eefa88d3114aa5427018c852776b2e9c"
30
+   last-author="wiseman"
31
+   kind="file"
32
+   prop-time="2005-09-06T00:00:00.000000Z"/>
33
+<entry
34
+   committed-rev="1"
35
+   name="schwa.perspective"
36
+   text-time="2005-09-06T00:00:00.000000Z"
37
+   committed-date="2005-09-01T22:24:26.351721Z"
38
+   checksum="9444b40607942a9a6fd964019e1bcd65"
39
+   last-author="wiseman"
40
+   kind="file"
41
+   prop-time="2005-09-06T00:00:00.000000Z"/>
42
+</wc-entries>
0 2
new file mode 100644
... ...
@@ -0,0 +1,721 @@
1
+// !$*UTF8*$!
2
+{
3
+	archiveVersion = 1;
4
+	classes = {
5
+	};
6
+	objectVersion = 42;
7
+	objects = {
8
+
9
+/* Begin PBXBuildFile section */
10
+		45796127083162D100A923A6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45796126083162D100A923A6 /* Foundation.framework */; };
11
+		457F54E70832F2830043FBA6 /* CMetadataImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 45967FEE0832BF890009C12F /* CMetadataImporter.m */; };
12
+		459680030832BF890009C12F /* CMetadataImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 45967FED0832BF890009C12F /* CMetadataImporter.h */; };
13
+		459680070832BF890009C12F /* GetMetadataForFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 45967FF30832BF890009C12F /* GetMetadataForFile.m */; };
14
+		459680090832BF890009C12F /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 45967FF50832BF890009C12F /* main.c */; };
15
+		459680310832BFC50009C12F /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4596802B0832BFC50009C12F /* InfoPlist.strings */; };
16
+		459680320832BFC50009C12F /* schema.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4596802D0832BFC50009C12F /* schema.strings */; };
17
+		459680340832BFC50009C12F /* schema.xml in Resources */ = {isa = PBXBuildFile; fileRef = 459680300832BFC50009C12F /* schema.xml */; };
18
+		8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */; };
19
+		C86B05270671AA6E00DD9006 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C86B05260671AA6E00DD9006 /* CoreServices.framework */; };
20
+		DE4C707608CE1588001A80F8 /* NSString_HMext.m in Sources */ = {isa = PBXBuildFile; fileRef = DE4C707508CE1588001A80F8 /* NSString_HMext.m */; };
21
+		DE4C70DB08CE2E1D001A80F8 /* NSString_HMext.m in Sources */ = {isa = PBXBuildFile; fileRef = DE4C707508CE1588001A80F8 /* NSString_HMext.m */; };
22
+		DE75AD0108CD14BB008AC2B5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DE75AD0008CD14BB008AC2B5 /* main.m */; };
23
+		DE75AD0208CD14E6008AC2B5 /* CMetadataImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 45967FEE0832BF890009C12F /* CMetadataImporter.m */; };
24
+		DE75AD0308CD14F3008AC2B5 /* AGRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = DEAC936C08C7FEA8006901D9 /* AGRegex.m */; };
25
+		DE75AD0408CD1523008AC2B5 /* chartables.c in Sources */ = {isa = PBXBuildFile; fileRef = DEAC937008C7FEDE006901D9 /* chartables.c */; };
26
+		DE75AD0508CD1527008AC2B5 /* get.c in Sources */ = {isa = PBXBuildFile; fileRef = DEAC937208C7FEDE006901D9 /* get.c */; };
27
+		DE75AD0608CD152A008AC2B5 /* maketables.c in Sources */ = {isa = PBXBuildFile; fileRef = DEAC937408C7FEDE006901D9 /* maketables.c */; };
28
+		DE75AD0708CD152D008AC2B5 /* pcre.c in Sources */ = {isa = PBXBuildFile; fileRef = DEAC937508C7FEDE006901D9 /* pcre.c */; };
29
+		DE75AD0808CD1530008AC2B5 /* study.c in Sources */ = {isa = PBXBuildFile; fileRef = DEAC937708C7FEDE006901D9 /* study.c */; };
30
+		DEAC936D08C7FEA8006901D9 /* AGRegex.h in Headers */ = {isa = PBXBuildFile; fileRef = DEAC936B08C7FEA8006901D9 /* AGRegex.h */; };
31
+		DEAC936E08C7FEA8006901D9 /* AGRegex.m in Sources */ = {isa = PBXBuildFile; fileRef = DEAC936C08C7FEA8006901D9 /* AGRegex.m */; };
32
+		DEAC937808C7FEDE006901D9 /* chartables.c in Sources */ = {isa = PBXBuildFile; fileRef = DEAC937008C7FEDE006901D9 /* chartables.c */; };
33
+		DEAC937908C7FEDE006901D9 /* config.h in Headers */ = {isa = PBXBuildFile; fileRef = DEAC937108C7FEDE006901D9 /* config.h */; };
34
+		DEAC937A08C7FEDE006901D9 /* get.c in Sources */ = {isa = PBXBuildFile; fileRef = DEAC937208C7FEDE006901D9 /* get.c */; };
35
+		DEAC937B08C7FEDE006901D9 /* internal.h in Headers */ = {isa = PBXBuildFile; fileRef = DEAC937308C7FEDE006901D9 /* internal.h */; };
36
+		DEAC937C08C7FEDE006901D9 /* maketables.c in Sources */ = {isa = PBXBuildFile; fileRef = DEAC937408C7FEDE006901D9 /* maketables.c */; };
37
+		DEAC937D08C7FEDE006901D9 /* pcre.c in Sources */ = {isa = PBXBuildFile; fileRef = DEAC937508C7FEDE006901D9 /* pcre.c */; };
38
+		DEAC937E08C7FEDE006901D9 /* pcre.h in Headers */ = {isa = PBXBuildFile; fileRef = DEAC937608C7FEDE006901D9 /* pcre.h */; };
39
+		DEAC937F08C7FEDE006901D9 /* study.c in Sources */ = {isa = PBXBuildFile; fileRef = DEAC937708C7FEDE006901D9 /* study.c */; };
40
+		DEC2DF1408D0E75100E64CA6 /* DebugLog.m in Sources */ = {isa = PBXBuildFile; fileRef = DEC2DF1308D0E75100E64CA6 /* DebugLog.m */; };
41
+		DEC2DF1508D0E75100E64CA6 /* DebugLog.h in Headers */ = {isa = PBXBuildFile; fileRef = DEC2DF1208D0E75100E64CA6 /* DebugLog.h */; };
42
+		DEC2DF1608D0E75100E64CA6 /* DebugLog.m in Sources */ = {isa = PBXBuildFile; fileRef = DEC2DF1308D0E75100E64CA6 /* DebugLog.m */; };
43
+		DEE41B6D08CFD33700F96F3E /* NSData_HMext.m in Sources */ = {isa = PBXBuildFile; fileRef = DEE41B6C08CFD33700F96F3E /* NSData_HMext.m */; };
44
+		DEE41B6E08CFD33700F96F3E /* NSData_HMext.h in Headers */ = {isa = PBXBuildFile; fileRef = DEE41B6B08CFD33700F96F3E /* NSData_HMext.h */; };
45
+		DEE41B6F08CFD33700F96F3E /* NSData_HMext.m in Sources */ = {isa = PBXBuildFile; fileRef = DEE41B6C08CFD33700F96F3E /* NSData_HMext.m */; };
46
+/* End PBXBuildFile section */
47
+
48
+/* Begin PBXBuildStyle section */
49
+		014CEA3F0018CDD111CA2923 /* Development */ = {
50
+			isa = PBXBuildStyle;
51
+			buildSettings = {
52
+				COPY_PHASE_STRIP = NO;
53
+				DEBUGGING_SYMBOLS = YES;
54
+				GCC_DYNAMIC_NO_PIC = NO;
55
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
56
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
57
+				GCC_OPTIMIZATION_LEVEL = 0;
58
+				OPTIMIZATION_CFLAGS = "-O0";
59
+			};
60
+			name = Development;
61
+		};
62
+		014CEA400018CDD111CA2923 /* Deployment */ = {
63
+			isa = PBXBuildStyle;
64
+			buildSettings = {
65
+				COPY_PHASE_STRIP = YES;
66
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
67
+			};
68
+			name = Deployment;
69
+		};
70
+/* End PBXBuildStyle section */
71
+
72
+/* Begin PBXCopyFilesBuildPhase section */
73
+		459334B40832C4CD00FF1A15 /* CopyFiles */ = {
74
+			isa = PBXCopyFilesBuildPhase;
75
+			buildActionMask = 2147483647;
76
+			dstPath = "";
77
+			dstSubfolderSpec = 12;
78
+			files = (
79
+			);
80
+			runOnlyForDeploymentPostprocessing = 0;
81
+		};
82
+/* End PBXCopyFilesBuildPhase section */
83
+
84
+/* Begin PBXFileReference section */
85
+		0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
86
+		45796126083162D100A923A6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
87
+		45967FED0832BF890009C12F /* CMetadataImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMetadataImporter.h; sourceTree = "<group>"; };
88
+		45967FEE0832BF890009C12F /* CMetadataImporter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMetadataImporter.m; sourceTree = "<group>"; wrapsLines = 1; };
89
+		45967FF30832BF890009C12F /* GetMetadataForFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GetMetadataForFile.m; sourceTree = "<group>"; };
90
+		45967FF50832BF890009C12F /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
91
+		4596802C0832BFC50009C12F /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
92
+		4596802E0832BFC50009C12F /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/schema.strings; sourceTree = "<group>"; };
93
+		4596802F0832BFC50009C12F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = Info.plist; sourceTree = "<group>"; };
94
+		459680300832BFC50009C12F /* schema.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = schema.xml; sourceTree = "<group>"; };
95
+		8D576316048677EA00EA77CD /* Lisp Metadata Importer.mdimporter */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Lisp Metadata Importer.mdimporter"; sourceTree = BUILT_PRODUCTS_DIR; };
96
+		C86B05260671AA6E00DD9006 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
97
+		DE4C707408CE1588001A80F8 /* NSString_HMext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSString_HMext.h; sourceTree = "<group>"; };
98
+		DE4C707508CE1588001A80F8 /* NSString_HMext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSString_HMext.m; sourceTree = "<group>"; };
99
+		DE75ACF508CD1449008AC2B5 /* LispMetadataImporterTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = LispMetadataImporterTest; sourceTree = BUILT_PRODUCTS_DIR; };
100
+		DE75AD0008CD14BB008AC2B5 /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Source/main.m; sourceTree = "<group>"; };
101
+		DEAC936B08C7FEA8006901D9 /* AGRegex.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = AGRegex.h; sourceTree = "<group>"; };
102
+		DEAC936C08C7FEA8006901D9 /* AGRegex.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = AGRegex.m; sourceTree = "<group>"; };
103
+		DEAC937008C7FEDE006901D9 /* chartables.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = chartables.c; sourceTree = "<group>"; };
104
+		DEAC937108C7FEDE006901D9 /* config.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = config.h; sourceTree = "<group>"; };
105
+		DEAC937208C7FEDE006901D9 /* get.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = get.c; sourceTree = "<group>"; };
106
+		DEAC937308C7FEDE006901D9 /* internal.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = internal.h; sourceTree = "<group>"; };
107
+		DEAC937408C7FEDE006901D9 /* maketables.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = maketables.c; sourceTree = "<group>"; };
108
+		DEAC937508C7FEDE006901D9 /* pcre.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = pcre.c; sourceTree = "<group>"; };
109
+		DEAC937608C7FEDE006901D9 /* pcre.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = pcre.h; sourceTree = "<group>"; };
110
+		DEAC937708C7FEDE006901D9 /* study.c */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.c; path = study.c; sourceTree = "<group>"; };
111
+		DEC2DF1208D0E75100E64CA6 /* DebugLog.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DebugLog.h; sourceTree = "<group>"; };
112
+		DEC2DF1308D0E75100E64CA6 /* DebugLog.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DebugLog.m; sourceTree = "<group>"; };
113
+		DEE41B6B08CFD33700F96F3E /* NSData_HMext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSData_HMext.h; sourceTree = "<group>"; };
114
+		DEE41B6C08CFD33700F96F3E /* NSData_HMext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSData_HMext.m; sourceTree = "<group>"; };
115
+/* End PBXFileReference section */
116
+
117
+/* Begin PBXFrameworksBuildPhase section */
118
+		8D576313048677EA00EA77CD /* Frameworks */ = {
119
+			isa = PBXFrameworksBuildPhase;
120
+			buildActionMask = 2147483647;
121
+			files = (
122
+				8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */,
123
+				C86B05270671AA6E00DD9006 /* CoreServices.framework in Frameworks */,
124
+				45796127083162D100A923A6 /* Foundation.framework in Frameworks */,
125
+			);
126
+			runOnlyForDeploymentPostprocessing = 0;
127
+		};
128
+		DE75ACF308CD1449008AC2B5 /* Frameworks */ = {
129
+			isa = PBXFrameworksBuildPhase;
130
+			buildActionMask = 2147483647;
131
+			files = (
132
+			);
133
+			runOnlyForDeploymentPostprocessing = 0;
134
+		};
135
+/* End PBXFrameworksBuildPhase section */
136
+
137
+/* Begin PBXGroup section */
138
+		089C166AFE841209C02AAC07 /* Python Metadata Importer */ = {
139
+			isa = PBXGroup;
140
+			children = (
141
+				DE75ACFD08CD1494008AC2B5 /* LispMetadataImporterTest */,
142
+				45967FEC0832BF890009C12F /* Source */,
143
+				4596802A0832BFC50009C12F /* Resources */,
144
+				089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
145
+				19C28FB6FE9D52B211CA2CBB /* Products */,
146
+			);
147
+			name = "Python Metadata Importer";
148
+			sourceTree = "<group>";
149
+		};
150
+		089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
151
+			isa = PBXGroup;
152
+			children = (
153
+				45796126083162D100A923A6 /* Foundation.framework */,
154
+				C86B05260671AA6E00DD9006 /* CoreServices.framework */,
155
+				0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */,
156
+			);
157
+			name = "External Frameworks and Libraries";
158
+			sourceTree = "<group>";
159
+		};
160
+		19C28FB6FE9D52B211CA2CBB /* Products */ = {
161
+			isa = PBXGroup;
162
+			children = (
163
+				8D576316048677EA00EA77CD /* Lisp Metadata Importer.mdimporter */,
164
+				DE75ACF508CD1449008AC2B5 /* LispMetadataImporterTest */,
165
+			);
166
+			name = Products;
167
+			sourceTree = "<group>";
168
+		};
169
+		45967FEC0832BF890009C12F /* Source */ = {
170
+			isa = PBXGroup;
171
+			children = (
172
+				DEE41B6B08CFD33700F96F3E /* NSData_HMext.h */,
173
+				DEE41B6C08CFD33700F96F3E /* NSData_HMext.m */,
174
+				DE4C707408CE1588001A80F8 /* NSString_HMext.h */,
175
+				DE4C707508CE1588001A80F8 /* NSString_HMext.m */,
176
+				DEC2DF1208D0E75100E64CA6 /* DebugLog.h */,
177
+				DEC2DF1308D0E75100E64CA6 /* DebugLog.m */,
178
+				45967FF50832BF890009C12F /* main.c */,
179
+				45967FF30832BF890009C12F /* GetMetadataForFile.m */,
180
+				45967FED0832BF890009C12F /* CMetadataImporter.h */,
181
+				45967FEE0832BF890009C12F /* CMetadataImporter.m */,
182
+				DEAC936708C7FE6C006901D9 /* AGRegex */,
183
+			);
184
+			path = Source;
185
+			sourceTree = "<group>";
186
+		};
187
+		4596802A0832BFC50009C12F /* Resources */ = {
188
+			isa = PBXGroup;
189
+			children = (
190
+				4596802B0832BFC50009C12F /* InfoPlist.strings */,
191
+				4596802D0832BFC50009C12F /* schema.strings */,
192
+				4596802F0832BFC50009C12F /* Info.plist */,
193
+				459680300832BFC50009C12F /* schema.xml */,
194
+			);
195
+			path = Resources;
196
+			sourceTree = "<group>";
197
+		};
198
+		DE75ACFD08CD1494008AC2B5 /* LispMetadataImporterTest */ = {
199
+			isa = PBXGroup;
200
+			children = (
201
+				DE75AD0008CD14BB008AC2B5 /* main.m */,
202
+			);
203
+			name = LispMetadataImporterTest;
204
+			sourceTree = "<group>";
205
+		};
206
+		DEAC936708C7FE6C006901D9 /* AGRegex */ = {
207
+			isa = PBXGroup;
208
+			children = (
209
+				DEAC936F08C7FEDE006901D9 /* pcre-4.3 */,
210
+				DEAC936B08C7FEA8006901D9 /* AGRegex.h */,
211
+				DEAC936C08C7FEA8006901D9 /* AGRegex.m */,
212
+			);
213
+			name = AGRegex;
214
+			path = Source/AGRegex;
215
+			sourceTree = SOURCE_ROOT;
216
+		};
217
+		DEAC936F08C7FEDE006901D9 /* pcre-4.3 */ = {
218
+			isa = PBXGroup;
219
+			children = (
220
+				DEAC937008C7FEDE006901D9 /* chartables.c */,
221
+				DEAC937108C7FEDE006901D9 /* config.h */,
222
+				DEAC937208C7FEDE006901D9 /* get.c */,
223
+				DEAC937308C7FEDE006901D9 /* internal.h */,
224
+				DEAC937408C7FEDE006901D9 /* maketables.c */,
225
+				DEAC937508C7FEDE006901D9 /* pcre.c */,
226
+				DEAC937608C7FEDE006901D9 /* pcre.h */,
227
+				DEAC937708C7FEDE006901D9 /* study.c */,
228
+			);
229
+			path = "pcre-4.3";
230
+			sourceTree = "<group>";
231
+		};
232
+/* End PBXGroup section */
233
+
234
+/* Begin PBXHeadersBuildPhase section */
235
+		8D57630E048677EA00EA77CD /* Headers */ = {
236
+			isa = PBXHeadersBuildPhase;
237
+			buildActionMask = 2147483647;
238
+			files = (
239
+				459680030832BF890009C12F /* CMetadataImporter.h in Headers */,
240
+				DEAC936D08C7FEA8006901D9 /* AGRegex.h in Headers */,
241
+				DEAC937908C7FEDE006901D9 /* config.h in Headers */,
242
+				DEAC937B08C7FEDE006901D9 /* internal.h in Headers */,
243
+				DEAC937E08C7FEDE006901D9 /* pcre.h in Headers */,
244
+				DEE41B6E08CFD33700F96F3E /* NSData_HMext.h in Headers */,
245
+				DEC2DF1508D0E75100E64CA6 /* DebugLog.h in Headers */,
246
+			);
247
+			runOnlyForDeploymentPostprocessing = 0;
248
+		};
249
+/* End PBXHeadersBuildPhase section */
250
+
251
+/* Begin PBXNativeTarget section */
252
+		8D57630D048677EA00EA77CD /* Lisp Metadata Importer */ = {
253
+			isa = PBXNativeTarget;
254
+			buildConfigurationList = 45E30AB108566B62009FA00C /* Build configuration list for PBXNativeTarget "Lisp Metadata Importer" */;
255
+			buildPhases = (
256
+				8D57630E048677EA00EA77CD /* Headers */,
257
+				8D57630F048677EA00EA77CD /* Resources */,
258
+				8D576311048677EA00EA77CD /* Sources */,
259
+				8D576313048677EA00EA77CD /* Frameworks */,
260
+				8D576315048677EA00EA77CD /* Rez */,
261
+				459334B40832C4CD00FF1A15 /* CopyFiles */,
262
+			);
263
+			buildRules = (
264
+			);
265
+			buildSettings = {
266
+				FRAMEWORK_SEARCH_PATHS = /System/Library/Frameworks;
267
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
268
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
269
+				GCC_PRECOMPILE_PREFIX_HEADER = NO;
270
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
271
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
272
+				GCC_WARN_UNKNOWN_PRAGMAS = NO;
273
+				GCC_WARN_UNUSED_VARIABLE = YES;
274
+				HEADER_SEARCH_PATHS = "";
275
+				INFOPLIST_FILE = Resources/Info.plist;
276
+				INSTALL_PATH = /Library/Spotlight;
277
+				LIBRARY_SEARCH_PATHS = "";
278
+				LIBRARY_STYLE = Bundle;
279
+				OTHER_CFLAGS = "";
280
+				OTHER_LDFLAGS = "";
281
+				OTHER_REZFLAGS = "";
282
+				PREBINDING = NO;
283
+				PRODUCT_NAME = "Python Metadata Importer";
284
+				SECTORDER_FLAGS = "";
285
+				WARNING_CFLAGS = (
286
+					"-Wmost",
287
+					"-Wno-four-char-constants",
288
+					"-Wno-unknown-pragmas",
289
+				);
290
+				WRAPPER_EXTENSION = mdimporter;
291
+				ZERO_LINK = NO;
292
+			};
293
+			dependencies = (
294
+			);
295
+			name = "Lisp Metadata Importer";
296
+			productInstallPath = /Library/Spotlight;
297
+			productName = "Python Metadata Importer";
298
+			productReference = 8D576316048677EA00EA77CD /* Lisp Metadata Importer.mdimporter */;
299
+			productType = "com.apple.product-type.bundle";
300
+		};
301
+		DE75ACF408CD1449008AC2B5 /* LispMetadataImporterTest */ = {
302
+			isa = PBXNativeTarget;
303
+			buildConfigurationList = DE75ACF708CD1473008AC2B5 /* Build configuration list for PBXNativeTarget "LispMetadataImporterTest" */;
304
+			buildPhases = (
305
+				DE75ACF208CD1449008AC2B5 /* Sources */,
306
+				DE75ACF308CD1449008AC2B5 /* Frameworks */,
307
+			);
308
+			buildRules = (
309
+			);
310
+			buildSettings = {
311
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
312
+				GCC_MODEL_TUNING = G5;
313
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
314
+				GCC_PREFIX_HEADER = "$(SYSTEM_LIBRARY_DIR)/Frameworks/AppKit.framework/Headers/AppKit.h";
315
+				INSTALL_PATH = /usr/local/bin;
316
+				OPTIMIZATION_CFLAGS = "";
317
+				OTHER_CFLAGS = "";
318
+				OTHER_LDFLAGS = (
319
+					"-framework",
320
+					Foundation,
321
+					"-framework",
322
+					AppKit,
323
+				);
324
+				OTHER_REZFLAGS = "";
325
+				PREBINDING = NO;
326
+				PRODUCT_NAME = LispMetadataImporterTest;
327
+				SECTORDER_FLAGS = "";
328
+				WARNING_CFLAGS = (
329
+					"-Wmost",
330
+					"-Wno-four-char-constants",
331
+					"-Wno-unknown-pragmas",
332
+				);
333
+			};
334
+			dependencies = (
335
+			);
336
+			name = LispMetadataImporterTest;
337
+			productName = LispMetadataImporterTest;
338
+			productReference = DE75ACF508CD1449008AC2B5 /* LispMetadataImporterTest */;
339
+			productType = "com.apple.product-type.tool";
340
+		};
341
+/* End PBXNativeTarget section */
342
+
343
+/* Begin PBXProject section */
344
+		089C1669FE841209C02AAC07 /* Project object */ = {
345
+			isa = PBXProject;
346
+			buildConfigurationList = 45E30AB508566B62009FA00C /* Build configuration list for PBXProject "Lisp Metadata Importer" */;
347
+			buildSettings = {
348
+				MACOSX_DEPLOYMENT_TARGET = 10.4;
349
+				SDKROOT = /Developer/SDKs/MacOSX10.4.0.sdk;
350
+			};
351
+			buildStyles = (
352
+				014CEA3F0018CDD111CA2923 /* Development */,
353
+				014CEA400018CDD111CA2923 /* Deployment */,
354
+			);
355
+			hasScannedForEncodings = 1;
356
+			mainGroup = 089C166AFE841209C02AAC07 /* Python Metadata Importer */;
357
+			projectDirPath = "";
358
+			targets = (
359
+				8D57630D048677EA00EA77CD /* Lisp Metadata Importer */,
360
+				DE75ACF408CD1449008AC2B5 /* LispMetadataImporterTest */,
361
+			);
362
+		};
363
+/* End PBXProject section */
364
+
365
+/* Begin PBXResourcesBuildPhase section */
366
+		8D57630F048677EA00EA77CD /* Resources */ = {
367
+			isa = PBXResourcesBuildPhase;
368
+			buildActionMask = 2147483647;
369
+			files = (
370
+				459680310832BFC50009C12F /* InfoPlist.strings in Resources */,
371
+				459680320832BFC50009C12F /* schema.strings in Resources */,
372
+				459680340832BFC50009C12F /* schema.xml in Resources */,
373
+			);
374
+			runOnlyForDeploymentPostprocessing = 0;
375
+		};
376
+/* End PBXResourcesBuildPhase section */
377
+
378
+/* Begin PBXRezBuildPhase section */
379
+		8D576315048677EA00EA77CD /* Rez */ = {
380
+			isa = PBXRezBuildPhase;
381
+			buildActionMask = 2147483647;
382
+			files = (
383
+			);
384
+			runOnlyForDeploymentPostprocessing = 0;
385
+		};
386
+/* End PBXRezBuildPhase section */
387
+
388
+/* Begin PBXSourcesBuildPhase section */
389
+		8D576311048677EA00EA77CD /* Sources */ = {
390
+			isa = PBXSourcesBuildPhase;
391
+			buildActionMask = 2147483647;
392
+			files = (
393
+				459680070832BF890009C12F /* GetMetadataForFile.m in Sources */,
394
+				459680090832BF890009C12F /* main.c in Sources */,
395
+				457F54E70832F2830043FBA6 /* CMetadataImporter.m in Sources */,
396
+				DEAC936E08C7FEA8006901D9 /* AGRegex.m in Sources */,
397
+				DEAC937808C7FEDE006901D9 /* chartables.c in Sources */,
398
+				DEAC937A08C7FEDE006901D9 /* get.c in Sources */,
399
+				DEAC937C08C7FEDE006901D9 /* maketables.c in Sources */,
400
+				DEAC937D08C7FEDE006901D9 /* pcre.c in Sources */,
401
+				DEAC937F08C7FEDE006901D9 /* study.c in Sources */,
402
+				DE4C70DB08CE2E1D001A80F8 /* NSString_HMext.m in Sources */,
403
+				DEE41B6F08CFD33700F96F3E /* NSData_HMext.m in Sources */,
404
+				DEC2DF1608D0E75100E64CA6 /* DebugLog.m in Sources */,
405
+			);
406
+			runOnlyForDeploymentPostprocessing = 0;
407
+		};
408
+		DE75ACF208CD1449008AC2B5 /* Sources */ = {
409
+			isa = PBXSourcesBuildPhase;
410
+			buildActionMask = 2147483647;
411
+			files = (
412
+				DE75AD0108CD14BB008AC2B5 /* main.m in Sources */,
413
+				DE75AD0208CD14E6008AC2B5 /* CMetadataImporter.m in Sources */,
414
+				DE75AD0308CD14F3008AC2B5 /* AGRegex.m in Sources */,
415
+				DE75AD0408CD1523008AC2B5 /* chartables.c in Sources */,
416
+				DE75AD0508CD1527008AC2B5 /* get.c in Sources */,
417
+				DE75AD0608CD152A008AC2B5 /* maketables.c in Sources */,
418
+				DE75AD0708CD152D008AC2B5 /* pcre.c in Sources */,
419
+				DE75AD0808CD1530008AC2B5 /* study.c in Sources */,
420
+				DE4C707608CE1588001A80F8 /* NSString_HMext.m in Sources */,
421
+				DEE41B6D08CFD33700F96F3E /* NSData_HMext.m in Sources */,
422
+				DEC2DF1408D0E75100E64CA6 /* DebugLog.m in Sources */,
423
+			);
424
+			runOnlyForDeploymentPostprocessing = 0;
425
+		};
426
+/* End PBXSourcesBuildPhase section */
427
+
428
+/* Begin PBXVariantGroup section */
429
+		4596802B0832BFC50009C12F /* InfoPlist.strings */ = {
430
+			isa = PBXVariantGroup;
431
+			children = (
432
+				4596802C0832BFC50009C12F /* English */,
433
+			);
434
+			name = InfoPlist.strings;
435
+			sourceTree = "<group>";
436
+		};
437
+		4596802D0832BFC50009C12F /* schema.strings */ = {
438
+			isa = PBXVariantGroup;
439
+			children = (
440
+				4596802E0832BFC50009C12F /* English */,
441
+			);
442
+			name = schema.strings;
443
+			sourceTree = "<group>";
444
+		};
445
+/* End PBXVariantGroup section */
446
+
447
+/* Begin XCBuildConfiguration section */
448
+		45E30AB208566B62009FA00C /* Debug */ = {
449
+			isa = XCBuildConfiguration;
450
+			buildSettings = {
451
+				COPY_PHASE_STRIP = NO;
452
+				DEBUGGING_SYMBOLS = YES;
453
+				FRAMEWORK_SEARCH_PATHS = /System/Library/Frameworks;
454
+				GCC_DYNAMIC_NO_PIC = NO;
455
+				GCC_ENABLE_FIX_AND_CONTINUE = YES;
456
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
457
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
458
+				GCC_OPTIMIZATION_LEVEL = 0;
459
+				GCC_PRECOMPILE_PREFIX_HEADER = NO;
460
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
461
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
462
+				GCC_WARN_UNKNOWN_PRAGMAS = NO;
463
+				GCC_WARN_UNUSED_VARIABLE = YES;
464
+				HEADER_SEARCH_PATHS = "";
465
+				INFOPLIST_FILE = Resources/Info.plist;
466
+				INSTALL_PATH = /Library/Spotlight;
467
+				LIBRARY_SEARCH_PATHS = "";
468
+				LIBRARY_STYLE = Bundle;
469
+				OPTIMIZATION_CFLAGS = "-O0";
470
+				OTHER_CFLAGS = (
471
+					"-DSUPPORT_UTF8",
472
+					"-DPOSIX_MALLOC_THRESHOLD=10",
473
+				);
474
+				OTHER_LDFLAGS = "";
475
+				OTHER_REZFLAGS = "";
476
+				PREBINDING = NO;
477
+				PRODUCT_NAME = "Lisp Metadata Importer";
478
+				SECTORDER_FLAGS = "";
479
+				WARNING_CFLAGS = (
480
+					"-Wmost",
481
+					"-Wno-four-char-constants",
482
+					"-Wno-unknown-pragmas",
483
+				);
484
+				WRAPPER_EXTENSION = mdimporter;
485
+				ZERO_LINK = NO;
486
+			};
487
+			name = Debug;
488
+		};
489
+		45E30AB308566B62009FA00C /* Release */ = {
490
+			isa = XCBuildConfiguration;
491
+			buildSettings = {
492
+				COPY_PHASE_STRIP = YES;
493
+				FRAMEWORK_SEARCH_PATHS = /System/Library/Frameworks;
494
+				GCC_ENABLE_FIX_AND_CONTINUE = NO;
495
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
496
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
497
+				GCC_PRECOMPILE_PREFIX_HEADER = NO;
498
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
499
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
500
+				GCC_WARN_UNKNOWN_PRAGMAS = NO;
501
+				GCC_WARN_UNUSED_VARIABLE = YES;
502
+				HEADER_SEARCH_PATHS = "";
503
+				INFOPLIST_FILE = Resources/Info.plist;
504
+				INSTALL_PATH = /Library/Spotlight;
505
+				LIBRARY_SEARCH_PATHS = "";
506
+				LIBRARY_STYLE = Bundle;
507
+				OTHER_CFLAGS = (
508
+					"-DSUPPORT_UTF8",
509
+					"-DPOSIX_MALLOC_THRESHOLD=10",
510
+				);
511
+				OTHER_LDFLAGS = "";
512
+				OTHER_REZFLAGS = "";
513
+				PREBINDING = NO;
514
+				PRODUCT_NAME = "Lisp Metadata Importer";
515
+				SECTORDER_FLAGS = "";
516
+				WARNING_CFLAGS = (
517
+					"-Wmost",
518
+					"-Wno-four-char-constants",
519
+					"-Wno-unknown-pragmas",
520
+				);
521
+				WRAPPER_EXTENSION = mdimporter;
522
+				ZERO_LINK = NO;
523
+			};
524
+			name = Release;
525
+		};
526
+		45E30AB408566B62009FA00C /* Default */ = {
527
+			isa = XCBuildConfiguration;
528
+			buildSettings = {
529
+				FRAMEWORK_SEARCH_PATHS = /System/Library/Frameworks;
530
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
531
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
532
+				GCC_PRECOMPILE_PREFIX_HEADER = NO;
533
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
534
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
535
+				GCC_WARN_UNKNOWN_PRAGMAS = NO;
536
+				GCC_WARN_UNUSED_VARIABLE = YES;
537
+				HEADER_SEARCH_PATHS = "";
538
+				INFOPLIST_FILE = Resources/Info.plist;
539
+				INSTALL_PATH = /Library/Spotlight;
540
+				LIBRARY_SEARCH_PATHS = "";
541
+				LIBRARY_STYLE = Bundle;
542
+				OTHER_CFLAGS = (
543
+					"-DSUPPORT_UTF8",
544
+					"-DPOSIX_MALLOC_THRESHOLD=10",
545
+				);
546
+				OTHER_LDFLAGS = "";
547
+				OTHER_REZFLAGS = "";
548
+				PREBINDING = NO;
549
+				PRODUCT_NAME = "Lisp Metadata Importer";
550
+				SECTORDER_FLAGS = "";
551
+				WARNING_CFLAGS = (
552
+					"-Wmost",
553
+					"-Wno-four-char-constants",
554
+					"-Wno-unknown-pragmas",
555
+				);
556
+				WRAPPER_EXTENSION = mdimporter;
557
+				ZERO_LINK = NO;
558
+			};
559
+			name = Default;
560
+		};
561
+		45E30AB608566B62009FA00C /* Debug */ = {
562
+			isa = XCBuildConfiguration;
563
+			buildSettings = {
564
+				MACOSX_DEPLOYMENT_TARGET = 10.4;
565
+			};
566
+			name = Debug;
567
+		};
568
+		45E30AB708566B62009FA00C /* Release */ = {
569
+			isa = XCBuildConfiguration;
570
+			buildSettings = {
571
+				MACOSX_DEPLOYMENT_TARGET = 10.4;
572
+			};
573
+			name = Release;
574
+		};
575
+		45E30AB808566B62009FA00C /* Default */ = {
576
+			isa = XCBuildConfiguration;
577
+			buildSettings = {
578
+				MACOSX_DEPLOYMENT_TARGET = 10.4;
579
+			};
580
+			name = Default;
581
+		};
582
+		DE75ACF808CD1473008AC2B5 /* Debug */ = {
583
+			isa = XCBuildConfiguration;
584
+			buildSettings = {
585
+				COPY_PHASE_STRIP = NO;
586
+				GCC_ENABLE_CPP_EXCEPTIONS = YES;
587
+				GCC_ENABLE_CPP_RTTI = YES;
588
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
589
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
590
+				GCC_MODEL_TUNING = G5;
591
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
592
+				GCC_PREFIX_HEADER = "";
593
+				INSTALL_PATH = /usr/local/bin;
594
+				OPTIMIZATION_CFLAGS = "-O0";
595
+				OTHER_CFLAGS = (
596
+					"-DSUPPORT_UTF8",
597
+					"-DPOSIX_MALLOC_THRESHOLD=10",
598
+				);
599
+				OTHER_LDFLAGS = (
600
+					"-framework",
601
+					Foundation,
602
+					"-framework",
603
+					AppKit,
604
+				);
605
+				OTHER_REZFLAGS = "";
606
+				PREBINDING = NO;
607
+				PRODUCT_NAME = LispMetadataImporterTest;
608
+				SECTORDER_FLAGS = "";
609
+				WARNING_CFLAGS = (
610
+					"-Wmost",
611
+					"-Wno-four-char-constants",
612
+					"-Wno-unknown-pragmas",
613
+				);
614
+			};
615
+			name = Debug;
616
+		};
617
+		DE75ACF908CD1473008AC2B5 /* Release */ = {
618
+			isa = XCBuildConfiguration;
619
+			buildSettings = {
620
+				COPY_PHASE_STRIP = YES;
621
+				GCC_ENABLE_CPP_EXCEPTIONS = YES;
622
+				GCC_ENABLE_CPP_RTTI = YES;
623
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
624
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
625
+				GCC_MODEL_TUNING = G5;
626
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
627
+				GCC_PREFIX_HEADER = "";
628
+				INSTALL_PATH = /usr/local/bin;
629
+				OPTIMIZATION_CFLAGS = "-O0";
630
+				OTHER_CFLAGS = (
631
+					"-DSUPPORT_UTF8",
632
+					"-DPOSIX_MALLOC_THRESHOLD=10",
633
+				);
634
+				OTHER_LDFLAGS = (
635
+					"-framework",
636
+					Foundation,
637
+					"-framework",
638
+					AppKit,
639
+				);
640
+				OTHER_REZFLAGS = "";
641
+				PREBINDING = NO;
642
+				PRODUCT_NAME = LispMetadataImporterTest;
643
+				SECTORDER_FLAGS = "";
644
+				WARNING_CFLAGS = (
645
+					"-Wmost",
646
+					"-Wno-four-char-constants",
647
+					"-Wno-unknown-pragmas",
648
+				);
649
+			};
650
+			name = Release;
651
+		};
652
+		DE75ACFA08CD1473008AC2B5 /* Default */ = {
653
+			isa = XCBuildConfiguration;
654
+			buildSettings = {
655
+				GCC_ENABLE_CPP_EXCEPTIONS = YES;
656
+				GCC_ENABLE_CPP_RTTI = YES;
657
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
658
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
659
+				GCC_MODEL_TUNING = G5;
660
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
661
+				GCC_PREFIX_HEADER = "";
662
+				INSTALL_PATH = /usr/local/bin;
663
+				OPTIMIZATION_CFLAGS = "-O0";
664
+				OTHER_CFLAGS = (
665
+					"-DSUPPORT_UTF8",
666
+					"-DPOSIX_MALLOC_THRESHOLD=10",
667
+				);
668
+				OTHER_LDFLAGS = (
669
+					"-framework",
670
+					Foundation,
671
+					"-framework",
672
+					AppKit,
673
+				);
674
+				OTHER_REZFLAGS = "";
675
+				PREBINDING = NO;
676
+				PRODUCT_NAME = LispMetadataImporterTest;
677
+				SECTORDER_FLAGS = "";
678
+				WARNING_CFLAGS = (
679
+					"-Wmost",
680
+					"-Wno-four-char-constants",
681
+					"-Wno-unknown-pragmas",
682
+				);
683
+			};
684
+			name = Default;
685
+		};
686
+/* End XCBuildConfiguration section */
687
+
688
+/* Begin XCConfigurationList section */
689
+		45E30AB108566B62009FA00C /* Build configuration list for PBXNativeTarget "Lisp Metadata Importer" */ = {
690
+			isa = XCConfigurationList;
691
+			buildConfigurations = (
692
+				45E30AB208566B62009FA00C /* Debug */,
693
+				45E30AB308566B62009FA00C /* Release */,
694
+				45E30AB408566B62009FA00C /* Default */,
695
+			);
696
+			defaultConfigurationIsVisible = 0;
697
+			defaultConfigurationName = Default;
698
+		};
699
+		45E30AB508566B62009FA00C /* Build configuration list for PBXProject "Lisp Metadata Importer" */ = {
700
+			isa = XCConfigurationList;
701
+			buildConfigurations = (
702
+				45E30AB608566B62009FA00C /* Debug */,
703
+				45E30AB708566B62009FA00C /* Release */,
704
+				45E30AB808566B62009FA00C /* Default */,
705
+			);
706
+			defaultConfigurationIsVisible = 0;
707
+			defaultConfigurationName = Default;
708
+		};
709
+		DE75ACF708CD1473008AC2B5 /* Build configuration list for PBXNativeTarget "LispMetadataImporterTest" */ = {
710
+			isa = XCConfigurationList;
711
+			buildConfigurations = (
712
+				DE75ACF808CD1473008AC2B5 /* Debug */,
713
+				DE75ACF908CD1473008AC2B5 /* Release */,
714
+				DE75ACFA08CD1473008AC2B5 /* Default */,
715
+			);
716
+			defaultConfigurationIsVisible = 0;
717
+		};
718
+/* End XCConfigurationList section */
719
+	};
720
+	rootObject = 089C1669FE841209C02AAC07 /* Project object */;
721
+}
0 722
new file mode 100644
... ...
@@ -0,0 +1,771 @@
1
+// !$*UTF8*$!
2
+{
3
+	089C1669FE841209C02AAC07 /* Project object */ = {
4
+		activeBuildConfigurationName = Debug;
5
+		activeBuildStyle = 014CEA3F0018CDD111CA2923 /* Development */;
6
+		activeExecutable = 45F9531B08319C400073B07B /* Executable */;
7
+		activeTarget = 8D57630D048677EA00EA77CD /* Python Metadata Importer */;
8
+		addToTargets = (
9
+			8D57630D048677EA00EA77CD /* Python Metadata Importer */,
10
+		);
11
+		breakpoints = (
12
+		);
13
+		codeSenseManager = 45796102083160E500A923A6 /* Code sense */;
14
+		executables = (
15
+			45F9531B08319C400073B07B /* Executable */,
16
+		);
17
+		perUserDictionary = {
18
+			PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = {
19
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
20
+				PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID;
21
+				PBXFileTableDataSourceColumnWidthsKey = (
22
+					20,
23
+					574,
24
+					300,
25
+				);
26
+				PBXFileTableDataSourceColumnsKey = (
27
+					PBXErrorsWarningsDataSource_TypeID,
28
+					PBXErrorsWarningsDataSource_MessageID,
29
+					PBXErrorsWarningsDataSource_LocationID,
30
+				);
31
+			};
32
+			PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
33
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
34
+				PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
35
+				PBXFileTableDataSourceColumnWidthsKey = (
36
+					22,
37
+					300,
38
+					571,
39
+				);
40
+				PBXFileTableDataSourceColumnsKey = (
41
+					PBXExecutablesDataSource_ActiveFlagID,
42
+					PBXExecutablesDataSource_NameID,
43
+					PBXExecutablesDataSource_CommentsID,
44
+				);
45
+			};
46
+			PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
47
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
48
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
49
+				PBXFileTableDataSourceColumnWidthsKey = (
50
+					20,
51
+					684,
52
+					20,
53
+					48,
54
+					43,
55
+					43,
56
+					20,
57
+				);
58
+				PBXFileTableDataSourceColumnsKey = (
59
+					PBXFileDataSource_FiletypeID,
60
+					PBXFileDataSource_Filename_ColumnID,
61
+					PBXFileDataSource_Built_ColumnID,
62
+					PBXFileDataSource_ObjectSize_ColumnID,
63
+					PBXFileDataSource_Errors_ColumnID,
64
+					PBXFileDataSource_Warnings_ColumnID,
65
+					PBXFileDataSource_Target_ColumnID,
66
+				);
67
+			};
68
+			PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = {
69
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
70
+				PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID;
71
+				PBXFileTableDataSourceColumnWidthsKey = (
72
+					200,
73
+					120,
74
+				);
75
+				PBXFileTableDataSourceColumnsKey = (
76
+					PBXFindDataSource_MessageID,
77
+					PBXFindDataSource_LocationID,
78
+				);
79
+			};
80
+			PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = {
81
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
82
+				PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID;
83
+				PBXFileTableDataSourceColumnWidthsKey = (
84
+					16,
85
+					200,
86
+					50,
87
+					624.2085,
88
+				);
89
+				PBXFileTableDataSourceColumnsKey = (
90
+					PBXSymbolsDataSource_SymbolTypeIconID,
91
+					PBXSymbolsDataSource_SymbolNameID,
92
+					PBXSymbolsDataSource_SymbolTypeID,
93
+					PBXSymbolsDataSource_ReferenceNameID,
94
+				);
95
+			};
96
+			PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
97
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
98
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
99
+				PBXFileTableDataSourceColumnWidthsKey = (
100
+					20,
101
+					200,
102
+					504,
103
+					20,
104
+					48,
105
+					43,
106
+					43,
107
+				);
108
+				PBXFileTableDataSourceColumnsKey = (
109
+					PBXFileDataSource_FiletypeID,
110
+					PBXFileDataSource_Filename_ColumnID,
111
+					PBXTargetDataSource_PrimaryAttribute,
112
+					PBXFileDataSource_Built_ColumnID,
113
+					PBXFileDataSource_ObjectSize_ColumnID,
114
+					PBXFileDataSource_Errors_ColumnID,
115
+					PBXFileDataSource_Warnings_ColumnID,
116
+				);
117
+			};
118
+			PBXPerProjectTemplateStateSaveDate = 140385254;
119
+			PBXWorkspaceStateSaveDate = 140385254;
120
+		};
121
+		perUserProjectItems = {
122
+			45234A0E0859386A007977F8 /* PBXTextBookmark */ = 45234A0E0859386A007977F8 /* PBXTextBookmark */;
123
+			457A2F5D085E1BF100480ED0 /* PBXTextBookmark */ = 457A2F5D085E1BF100480ED0 /* PBXTextBookmark */;
124
+			458F2CD60833E82700CB6B11 /* PBXTextBookmark */ = 458F2CD60833E82700CB6B11 /* PBXTextBookmark */;
125
+			458F2CDC0833E82700CB6B11 /* PBXTextBookmark */ = 458F2CDC0833E82700CB6B11 /* PBXTextBookmark */;
126
+			458F2E380833F04C00CB6B11 /* PBXTextBookmark */ = 458F2E380833F04C00CB6B11 /* PBXTextBookmark */;
127
+			458F2E970833F66B00CB6B11 /* PBXTextBookmark */ = 458F2E970833F66B00CB6B11 /* PBXTextBookmark */;
128
+			458F2E9F0833F66B00CB6B11 /* PBXTextBookmark */ = 458F2E9F0833F66B00CB6B11 /* PBXTextBookmark */;
129
+			458F2EA20833F66B00CB6B11 /* PBXTextBookmark */ = 458F2EA20833F66B00CB6B11 /* PBXTextBookmark */;
130
+			458F2ED20833F7B800CB6B11 /* PBXTextBookmark */ = 458F2ED20833F7B800CB6B11 /* PBXTextBookmark */;
131
+			458F2EFD0833F92A00CB6B11 /* PBXTextBookmark */ = 458F2EFD0833F92A00CB6B11 /* PBXTextBookmark */;
132
+			458F2F1F0833FA0200CB6B11 /* PBXTextBookmark */ = 458F2F1F0833FA0200CB6B11 /* PBXTextBookmark */;
133
+			458F2FD00833FE3D00CB6B11 /* PBXTextBookmark */ = 458F2FD00833FE3D00CB6B11 /* PBXTextBookmark */;
134
+			458F2FD20833FE3D00CB6B11 /* PBXTextBookmark */ = 458F2FD20833FE3D00CB6B11 /* PBXTextBookmark */;
135
+			458F2FF50834001500CB6B11 /* PBXTextBookmark */ = 458F2FF50834001500CB6B11 /* PBXTextBookmark */;
136
+			458F30430834051C00CB6B11 /* PBXTextBookmark */ = 458F30430834051C00CB6B11 /* PBXTextBookmark */;
137
+			458F3064083406A800CB6B11 /* PBXTextBookmark */ = 458F3064083406A800CB6B11 /* PBXTextBookmark */;
138
+			458F314C0834233D00CB6B11 /* PBXTextBookmark */ = 458F314C0834233D00CB6B11 /* PBXTextBookmark */;
139
+			458F314D0834233D00CB6B11 /* PBXTextBookmark */ = 458F314D0834233D00CB6B11 /* PBXTextBookmark */;
140
+			459279A308478862005D51F9 /* PBXTextBookmark */ = 459279A308478862005D51F9 /* PBXTextBookmark */;
141
+			459279A408478862005D51F9 /* PBXTextBookmark */ = 459279A408478862005D51F9 /* PBXTextBookmark */;
142
+			45BC8E4608357EF500333919 /* PBXTextBookmark */ = 45BC8E4608357EF500333919 /* PBXTextBookmark */;
143
+			45C999EE084615DA00A9055D /* PBXTextBookmark */ = 45C999EE084615DA00A9055D /* PBXTextBookmark */;
144
+			45C999F3084615DA00A9055D /* PBXTextBookmark */ = 45C999F3084615DA00A9055D /* PBXTextBookmark */;
145
+			45C99B33084615F300A9055D /* PBXTextBookmark */ = 45C99B33084615F300A9055D /* PBXTextBookmark */;
146
+			45C99B470846166300A9055D /* PBXTextBookmark */ = 45C99B470846166300A9055D /* PBXTextBookmark */;
147
+			45C99B55084616CC00A9055D /* PBXTextBookmark */ = 45C99B55084616CC00A9055D /* PBXTextBookmark */;
148
+			45D534BC083532990039C245 /* PBXTextBookmark */ = 45D534BC083532990039C245 /* PBXTextBookmark */;
149
+			45D534BD083532990039C245 /* PBXTextBookmark */ = 45D534BD083532990039C245 /* PBXTextBookmark */;
150
+			45D7EFCF0847D39D0081FAA9 /* PBXTextBookmark */ = 45D7EFCF0847D39D0081FAA9 /* PBXTextBookmark */;
151
+			45E30ABB08566C9E009FA00C /* PBXTextBookmark */ = 45E30ABB08566C9E009FA00C /* PBXTextBookmark */;
152
+			45EB68AD08456F72003CD158 /* PBXTextBookmark */ = 45EB68AD08456F72003CD158 /* PBXTextBookmark */;
153
+			45EC556A0857C7B9008973A3 /* PBXTextBookmark */ = 45EC556A0857C7B9008973A3 /* PBXTextBookmark */;
154
+			45F03AD20833D0C400CF8BA6 /* PBXTextBookmark */ = 45F03AD20833D0C400CF8BA6 /* PBXTextBookmark */;
155
+			45F03B1D0833D2F300CF8BA6 /* PBXTextBookmark */ = 45F03B1D0833D2F300CF8BA6 /* PBXTextBookmark */;
156
+			45F03B4D0833D4A400CF8BA6 /* PBXTextBookmark */ = 45F03B4D0833D4A400CF8BA6 /* PBXTextBookmark */;
157
+			45F03B6E0833D54800CF8BA6 /* PBXTextBookmark */ = 45F03B6E0833D54800CF8BA6 /* PBXTextBookmark */;
158
+			45F03B8C0833D9A800CF8BA6 /* PBXTextBookmark */ = 45F03B8C0833D9A800CF8BA6 /* PBXTextBookmark */;
159
+			45F03B8D0833D9A800CF8BA6 /* PBXTextBookmark */ = 45F03B8D0833D9A800CF8BA6 /* PBXTextBookmark */;
160
+		};
161
+		sourceControlManager = 45796101083160E500A923A6 /* Source Control */;
162
+		userBuildSettings = {
163
+		};
164
+	};
165
+	45234A0E0859386A007977F8 /* PBXTextBookmark */ = {
166
+		isa = PBXTextBookmark;
167
+		fRef = 45967FEE0832BF890009C12F /* CMetadataImporter.m */;
168
+		name = "CMetadataImporter.m: 69";
169
+		rLen = 0;
170
+		rLoc = 2792;
171
+		rType = 0;
172
+		vrLen = 1416;
173
+		vrLoc = 2431;
174
+	};
175
+	45796101083160E500A923A6 /* Source Control */ = {
176
+		isa = PBXSourceControlManager;
177
+		fallbackIsa = XCSourceControlManager;
178
+		isSCMEnabled = 1;
179
+		scmConfiguration = {
180
+		};
181
+		scmType = scm.subversion;
182
+	};
183
+	45796102083160E500A923A6 /* Code sense */ = {
184
+		isa = PBXCodeSenseManager;
185
+		indexTemplatePath = "";
186
+	};
187
+	457A2F5D085E1BF100480ED0 /* PBXTextBookmark */ = {
188
+		isa = PBXTextBookmark;
189
+		fRef = 45967FEE0832BF890009C12F /* CMetadataImporter.m */;
190
+		name = "CMetadataImporter.m: 69";
191
+		rLen = 0;
192
+		rLoc = 2792;
193
+		rType = 0;
194
+		vrLen = 1416;
195
+		vrLoc = 2431;
196
+	};
197
+	458F2CC20833E6AB00CB6B11 /* pythonrun.h */ = {
198
+		isa = PBXFileReference;
199
+		lastKnownFileType = sourcecode.c.h;
200
+		name = pythonrun.h;
201
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/pythonrun.h;
202
+		sourceTree = "<absolute>";
203
+	};
204
+	458F2CD60833E82700CB6B11 /* PBXTextBookmark */ = {
205
+		isa = PBXTextBookmark;
206
+		fRef = 458F2CC20833E6AB00CB6B11 /* pythonrun.h */;
207
+		name = "PyAPI_FUNC(void) Py_SetPythonHome(char *);";
208
+		rLen = 43;
209
+		rLoc = 515;
210
+		rType = 0;
211
+		vrLen = 937;
212
+		vrLoc = 0;
213
+	};
214
+	458F2CDC0833E82700CB6B11 /* PBXTextBookmark */ = {
215
+		isa = PBXTextBookmark;
216
+		fRef = 458F2CC20833E6AB00CB6B11 /* pythonrun.h */;
217
+		name = "PyAPI_FUNC(void) Py_SetPythonHome(char *);";
218
+		rLen = 43;
219
+		rLoc = 515;
220
+		rType = 0;
221
+		vrLen = 937;
222
+		vrLoc = 0;
223
+	};
224
+	458F2E110833EEF600CB6B11 /* object.h */ = {
225
+		isa = PBXFileReference;
226
+		lastKnownFileType = sourcecode.c.h;
227
+		name = object.h;
228
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/object.h;
229
+		sourceTree = "<absolute>";
230
+	};
231
+	458F2E380833F04C00CB6B11 /* PBXTextBookmark */ = {
232
+		isa = PBXTextBookmark;
233
+		fRef = 458F2E110833EEF600CB6B11 /* object.h */;
234
+		name = "PyAPI_DATA(PyObject) _Py_NoneStruct; /* Don't use this directly */";
235
+		rLen = 67;
236
+		rLoc = 22892;
237
+		rType = 0;
238
+		vrLen = 952;
239
+		vrLoc = 22421;
240
+	};
241
+	458F2E970833F66B00CB6B11 /* PBXTextBookmark */ = {
242
+		isa = PBXTextBookmark;
243
+		fRef = 45967FF50832BF890009C12F /* main.c */;
244
+		name = "main.c: 10";
245
+		rLen = 0;
246
+		rLoc = 1014;
247
+		rType = 0;
248
+		vrLen = 653;
249
+		vrLoc = 0;
250
+	};
251
+	458F2E9F0833F66B00CB6B11 /* PBXTextBookmark */ = {
252
+		isa = PBXTextBookmark;
253
+		fRef = 45967FF50832BF890009C12F /* main.c */;
254
+		name = "main.c: 10";
255
+		rLen = 0;
256
+		rLoc = 1014;
257
+		rType = 0;
258
+		vrLen = 653;
259
+		vrLoc = 0;
260
+	};
261
+	458F2EA20833F66B00CB6B11 /* PBXTextBookmark */ = {
262
+		isa = PBXTextBookmark;
263
+		fRef = 45967FED0832BF890009C12F /* CMetadataImporter.h */;
264
+		name = "CMetadataImporter.h: 21";
265
+		rLen = 0;
266
+		rLoc = 859;
267
+		rType = 0;
268
+		vrLen = 399;
269
+		vrLoc = 0;
270
+	};
271
+	458F2ECB0833F75C00CB6B11 /* ceval.h */ = {
272
+		isa = PBXFileReference;
273
+		lastKnownFileType = sourcecode.c.h;
274
+		name = ceval.h;
275
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/ceval.h;
276
+		sourceTree = "<absolute>";
277
+	};
278
+	458F2ED20833F7B800CB6B11 /* PBXTextBookmark */ = {
279
+		isa = PBXTextBookmark;
280
+		fRef = 45967FEE0832BF890009C12F /* CMetadataImporter.m */;
281
+		name = "CMetadataImporter.m: 86";
282
+		rLen = 0;
283
+		rLoc = 3059;
284
+		rType = 0;
285
+		vrLen = 59;
286
+		vrLoc = 2147;
287
+	};
288
+	458F2EF30833F8D600CB6B11 /* objimpl.h */ = {
289
+		isa = PBXFileReference;
290
+		lastKnownFileType = sourcecode.c.h;
291
+		name = objimpl.h;
292
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/objimpl.h;
293
+		sourceTree = "<absolute>";
294
+	};
295
+	458F2EFD0833F92A00CB6B11 /* PBXTextBookmark */ = {
296
+		isa = PBXTextBookmark;
297
+		fRef = 458F2ECB0833F75C00CB6B11 /* ceval.h */;
298
+		name = "ceval.h: 14";
299
+		rLen = 0;
300
+		rLoc = 281;
301
+		rType = 0;
302
+		vrLen = 910;
303
+		vrLoc = 0;
304
+	};
305
+	458F2F190833F99C00CB6B11 /* NSDate.h */ = {
306
+		isa = PBXFileReference;
307
+		lastKnownFileType = sourcecode.c.h;
308
+		name = NSDate.h;
309
+		path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSDate.h;
310
+		sourceTree = "<absolute>";
311
+	};
312
+	458F2F1A0833F9B100CB6B11 /* NSCalendarDate.h */ = {
313
+		isa = PBXFileReference;
314
+		lastKnownFileType = sourcecode.c.h;
315
+		name = NSCalendarDate.h;
316
+		path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSCalendarDate.h;
317
+		sourceTree = "<absolute>";
318
+	};
319
+	458F2F1F0833FA0200CB6B11 /* PBXTextBookmark */ = {
320
+		isa = PBXTextBookmark;
321
+		fRef = 458F2F190833F99C00CB6B11 /* NSDate.h */;
322
+		name = timeIntervalSince1970;
323
+		rLen = 21;
324
+		rLoc = 470;
325
+		rType = 0;
326
+		vrLen = 798;
327
+		vrLoc = 256;
328
+	};
329
+	458F2FB40833FCE300CB6B11 /* dictobject.h */ = {
330
+		isa = PBXFileReference;
331
+		lastKnownFileType = sourcecode.c.h;
332
+		name = dictobject.h;
333
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/dictobject.h;
334
+		sourceTree = "<absolute>";
335
+	};
336
+	458F2FC80833FD8F00CB6B11 /* floatobject.h */ = {
337
+		isa = PBXFileReference;
338
+		lastKnownFileType = sourcecode.c.h;
339
+		name = floatobject.h;
340
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/floatobject.h;
341
+		sourceTree = "<absolute>";
342
+	};
343
+	458F2FCD0833FDDF00CB6B11 /* NSTimeZone.h */ = {
344
+		isa = PBXFileReference;
345
+		lastKnownFileType = sourcecode.c.h;
346
+		name = NSTimeZone.h;
347
+		path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSTimeZone.h;
348
+		sourceTree = "<absolute>";
349
+	};
350
+	458F2FD00833FE3D00CB6B11 /* PBXTextBookmark */ = {
351
+		isa = PBXTextBookmark;
352
+		fRef = 458F2E110833EEF600CB6B11 /* object.h */;
353
+		name = PyObject;
354
+		rLen = 8;
355
+		rLoc = 13108;
356
+		rType = 0;
357
+		vrLen = 1586;
358
+		vrLoc = 12411;
359
+	};
360
+	458F2FD20833FE3D00CB6B11 /* PBXTextBookmark */ = {
361
+		isa = PBXTextBookmark;
362
+		fRef = 458F2FC80833FD8F00CB6B11 /* floatobject.h */;
363
+		name = PyFloat_AsDouble;
364
+		rLen = 16;
365
+		rLoc = 917;
366
+		rType = 0;
367
+		vrLen = 1331;
368
+		vrLoc = 214;
369
+	};
370
+	458F2FF50834001500CB6B11 /* PBXTextBookmark */ = {
371
+		isa = PBXTextBookmark;
372
+		fRef = 458F2F1A0833F9B100CB6B11 /* NSCalendarDate.h */;
373
+		name = monthOfYear;
374
+		rLen = 11;
375
+		rLoc = 1349;
376
+		rType = 0;
377
+		vrLen = 1180;
378
+		vrLoc = 757;
379
+	};
380
+	458F303D083404ED00CB6B11 /* import.h */ = {
381
+		isa = PBXFileReference;
382
+		lastKnownFileType = sourcecode.c.h;
383
+		name = import.h;
384
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/import.h;
385
+		sourceTree = "<absolute>";
386
+	};
387
+	458F30430834051C00CB6B11 /* PBXTextBookmark */ = {
388
+		isa = PBXTextBookmark;
389
+		fRef = 458F303D083404ED00CB6B11 /* import.h */;
390
+		name = "PyAPI_FUNC(PyObject *) PyImport_Import(PyObject *name);";
391
+		rLen = 56;
392
+		rLoc = 628;
393
+		rType = 0;
394
+		vrLen = 1031;
395
+		vrLoc = 0;
396
+	};
397
+	458F3064083406A800CB6B11 /* PBXTextBookmark */ = {
398
+		isa = PBXTextBookmark;
399
+		fRef = 458F2FB40833FCE300CB6B11 /* dictobject.h */;
400
+		name = PyDict_GetItem;
401
+		rLen = 14;
402
+		rLoc = 3428;
403
+		rType = 0;
404
+		vrLen = 1305;
405
+		vrLoc = 2895;
406
+	};
407
+	458F314C0834233D00CB6B11 /* PBXTextBookmark */ = {
408
+		isa = PBXTextBookmark;
409
+		fRef = 458F2F1A0833F9B100CB6B11 /* NSCalendarDate.h */;
410
+		name = "@interface NSCalendarDate : NSDate {";
411
+		rLen = 37;
412
+		rLoc = 167;
413
+		rType = 0;
414
+		vrLen = 1171;
415
+		vrLoc = 1060;
416
+	};
417
+	458F314D0834233D00CB6B11 /* PBXTextBookmark */ = {
418
+		isa = PBXTextBookmark;
419
+		fRef = 458F2FCD0833FDDF00CB6B11 /* NSTimeZone.h */;
420
+		name = "NSTimeZone.h: 24";
421
+		rLen = 0;
422
+		rLoc = 526;
423
+		rType = 0;
424
+		vrLen = 773;
425
+		vrLoc = 0;
426
+	};
427
+	459279A308478862005D51F9 /* PBXTextBookmark */ = {
428
+		isa = PBXTextBookmark;
429
+		fRef = 4596802C0832BFC50009C12F /* English */;
430
+		name = "English: 2";
431
+		rLen = 0;
432
+		rLoc = 44;
433
+		rType = 0;
434
+		vrLen = 293;
435
+		vrLoc = 0;
436
+	};
437
+	459279A408478862005D51F9 /* PBXTextBookmark */ = {
438
+		isa = PBXTextBookmark;
439
+		fRef = 4596802E0832BFC50009C12F /* English */;
440
+		name = "English: 5";
441
+		rLen = 0;
442
+		rLoc = 197;
443
+		rType = 0;
444
+		vrLen = 236;
445
+		vrLoc = 0;
446
+	};
447
+	459334CE0832C57700FF1A15 /* importer.py */ = {
448
+		uiCtxt = {
449
+			sepNavIntBoundsRect = "{{0, 0}, {876, 1792}}";
450
+			sepNavSelRange = "{486, 0}";
451
+			sepNavVisRect = "{{0, 0}, {876, 581}}";
452
+			sepNavWindowFrame = "{{15, 42}, {1281, 785}}";
453
+		};
454
+	};
455
+	45967FED0832BF890009C12F /* CMetadataImporter.h */ = {
456
+		uiCtxt = {
457
+			sepNavIntBoundsRect = "{{0, 0}, {1240, 714}}";
458
+			sepNavSelRange = "{859, 0}";
459
+			sepNavVisRect = "{{0, 0}, {1240, 714}}";
460
+			sepNavWindowFrame = "{{15, 448}, {750, 549}}";
461
+		};
462
+	};
463
+	45967FEE0832BF890009C12F /* CMetadataImporter.m */ = {
464
+		uiCtxt = {
465
+			sepNavIntBoundsRect = "{{0, 0}, {876, 1414}}";
466
+			sepNavSelRange = "{2792, 0}";
467
+			sepNavVisRect = "{{0, 812}, {876, 581}}";
468
+			sepNavWindowFrame = "{{15, 42}, {1281, 785}}";
469
+		};
470
+	};
471
+	45967FF30832BF890009C12F /* GetMetadataForFile.m */ = {
472
+		uiCtxt = {
473
+			sepNavIntBoundsRect = "{{0, 0}, {876, 896}}";
474
+			sepNavSelRange = "{2046, 17}";
475
+			sepNavVisRect = "{{0, 315}, {876, 581}}";
476
+		};
477
+	};
478
+	45967FF50832BF890009C12F /* main.c */ = {
479
+		uiCtxt = {
480
+			sepNavIntBoundsRect = "{{0, 0}, {1240, 3136}}";
481
+			sepNavSelRange = "{859, 0}";
482
+			sepNavVisRect = "{{0, 0}, {1240, 714}}";
483
+		};
484
+	};
485
+	4596802C0832BFC50009C12F /* English */ = {
486
+		uiCtxt = {
487
+			sepNavIntBoundsRect = "{{0, 0}, {920, 597}}";
488
+			sepNavSelRange = "{44, 0}";
489
+			sepNavVisRect = "{{0, 0}, {920, 597}}";
490
+			sepNavWindowFrame = "{{15, 42}, {1281, 785}}";
491
+		};
492
+	};
493
+	4596802E0832BFC50009C12F /* English */ = {
494
+		uiCtxt = {
495
+			sepNavIntBoundsRect = "{{0, 0}, {920, 597}}";
496
+			sepNavSelRange = "{197, 0}";
497
+			sepNavVisRect = "{{0, 0}, {920, 597}}";
498
+		};
499
+	};
500
+	4596802F0832BFC50009C12F /* Info.plist */ = {
501
+		uiCtxt = {
502
+			sepNavIntBoundsRect = "{{0, 0}, {1240, 1008}}";
503
+			sepNavSelRange = "{0, 0}";
504
+			sepNavVisRect = "{{0, 0}, {1240, 536}}";
505
+		};
506
+	};
507
+	459680300832BFC50009C12F /* schema.xml */ = {
508
+		uiCtxt = {
509
+			sepNavIntBoundsRect = "{{0, 0}, {876, 365}}";
510
+			sepNavSelRange = "{325, 183}";
511
+			sepNavVisRect = "{{0, 0}, {876, 365}}";
512
+		};
513
+	};
514
+	45BC8E4608357EF500333919 /* PBXTextBookmark */ = {
515
+		isa = PBXTextBookmark;
516
+		fRef = 459680300832BFC50009C12F /* schema.xml */;
517
+		name = "schema.xml: 17";
518
+		rLen = 0;
519
+		rLoc = 838;
520
+		rType = 0;
521
+		vrLen = 722;
522
+		vrLoc = 0;
523
+	};
524
+	45C999EE084615DA00A9055D /* PBXTextBookmark */ = {
525
+		isa = PBXTextBookmark;
526
+		fRef = 45C999EF084615DA00A9055D /* py_curses.h */;
527
+		name = "(null): 1";
528
+		rLen = 0;
529
+		rLoc = 0;
530
+		rType = 0;
531
+		vrLen = 632;
532
+		vrLoc = 0;
533
+	};
534
+	45C999EF084615DA00A9055D /* py_curses.h */ = {
535
+		isa = PBXFileReference;
536
+		lastKnownFileType = sourcecode.c.h;
537
+		name = py_curses.h;
538
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/py_curses.h;
539
+		sourceTree = "<absolute>";
540
+	};
541
+	45C999F3084615DA00A9055D /* PBXTextBookmark */ = {
542
+		isa = PBXTextBookmark;
543
+		fRef = 45C999F4084615DA00A9055D /* py_curses.h */;
544
+		name = "(null): 1";
545
+		rLen = 0;
546
+		rLoc = 0;
547
+		rType = 0;
548
+		vrLen = 632;
549
+		vrLoc = 0;
550
+	};
551
+	45C999F4084615DA00A9055D /* py_curses.h */ = {
552
+		isa = PBXFileReference;
553
+		lastKnownFileType = sourcecode.c.h;
554
+		name = py_curses.h;
555
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/py_curses.h;
556
+		sourceTree = "<absolute>";
557
+	};
558
+	45C99B33084615F300A9055D /* PBXTextBookmark */ = {
559
+		isa = PBXTextBookmark;
560
+		fRef = 458F2EF30833F8D600CB6B11 /* objimpl.h */;
561
+		name = "#define PyObject_New(type, typeobj) \\";
562
+		rLen = 38;
563
+		rLoc = 6141;
564
+		rType = 0;
565
+		vrLen = 1070;
566
+		vrLoc = 5726;
567
+	};
568
+	45C99B470846166300A9055D /* PBXTextBookmark */ = {
569
+		isa = PBXTextBookmark;
570
+		fRef = 458F2EF30833F8D600CB6B11 /* objimpl.h */;
571
+		name = "#define PyObject_New(type, typeobj) \\";
572
+		rLen = 38;
573
+		rLoc = 6141;
574
+		rType = 0;
575
+		vrLen = 1342;
576
+		vrLoc = 5611;
577
+	};
578
+	45C99B55084616CC00A9055D /* PBXTextBookmark */ = {
579
+		isa = PBXTextBookmark;
580
+		fRef = 45967FED0832BF890009C12F /* CMetadataImporter.h */;
581
+		name = "CMetadataImporter.h: 10";
582
+		rLen = 0;
583
+		rLoc = 383;
584
+		rType = 0;
585
+		vrLen = 1683;
586
+		vrLoc = 0;
587
+	};
588
+	45D534BC083532990039C245 /* PBXTextBookmark */ = {
589
+		isa = PBXTextBookmark;
590
+		fRef = 4596802F0832BFC50009C12F /* Info.plist */;
591
+		name = "Info.plist: 1";
592
+		rLen = 0;
593
+		rLoc = 0;
594
+		rType = 0;
595
+		vrLen = 1169;
596
+		vrLoc = 0;
597
+	};
598
+	45D534BD083532990039C245 /* PBXTextBookmark */ = {
599
+		isa = PBXTextBookmark;
600
+		fRef = 4596802E0832BFC50009C12F /* English */;
601
+		name = "English: 5";
602
+		rLen = 0;
603
+		rLoc = 236;
604
+		rType = 0;
605
+		vrLen = 236;
606
+		vrLoc = 0;
607
+	};
608
+	45D7EFCF0847D39D0081FAA9 /* PBXTextBookmark */ = {
609
+		isa = PBXTextBookmark;
610
+		fRef = 459680300832BFC50009C12F /* schema.xml */;
611
+		name = "schema.xml: 7";
612
+		rLen = 183;
613
+		rLoc = 325;
614
+		rType = 0;
615
+		vrLen = 850;
616
+		vrLoc = 0;
617
+	};
618
+	45E30ABB08566C9E009FA00C /* PBXTextBookmark */ = {
619
+		isa = PBXTextBookmark;
620
+		fRef = 45967FF30832BF890009C12F /* GetMetadataForFile.m */;
621
+		name = CMetadataImporter;
622
+		rLen = 17;
623
+		rLoc = 2046;
624
+		rType = 0;
625
+		vrLen = 1287;
626
+		vrLoc = 1127;
627
+	};
628
+	45EB68AD08456F72003CD158 /* PBXTextBookmark */ = {
629
+		isa = PBXTextBookmark;
630
+		fRef = 4596802F0832BFC50009C12F /* Info.plist */;
631
+		name = "Info.plist: 1";
632
+		rLen = 0;
633
+		rLoc = 0;
634
+		rType = 0;
635
+		vrLen = 1169;
636
+		vrLoc = 0;
637
+	};
638
+	45EC556A0857C7B9008973A3 /* PBXTextBookmark */ = {
639
+		isa = PBXTextBookmark;
640
+		fRef = 459334CE0832C57700FF1A15 /* importer.py */;
641
+		name = "importer.py: 33";
642
+		rLen = 0;
643
+		rLoc = 1622;
644
+		rType = 0;
645
+		vrLen = 1854;
646
+		vrLoc = 0;
647
+	};
648
+	45F03AB40833CF6700CF8BA6 /* NSString.h */ = {
649
+		isa = PBXFileReference;
650
+		lastKnownFileType = sourcecode.c.h;
651
+		name = NSString.h;
652
+		path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSString.h;
653
+		sourceTree = "<absolute>";
654
+	};
655
+	45F03ABF0833CFE400CF8BA6 /* unicodeobject.h */ = {
656
+		isa = PBXFileReference;
657
+		lastKnownFileType = sourcecode.c.h;
658
+		name = unicodeobject.h;
659
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/unicodeobject.h;
660
+		sourceTree = "<absolute>";
661
+	};
662
+	45F03AD20833D0C400CF8BA6 /* PBXTextBookmark */ = {
663
+		isa = PBXTextBookmark;
664
+		fRef = 4596802C0832BFC50009C12F /* English */;
665
+		name = "English: 7";
666
+		rLen = 0;
667
+		rLoc = 293;
668
+		rType = 0;
669
+		vrLen = 289;
670
+		vrLoc = 0;
671
+	};
672
+	45F03B1D0833D2F300CF8BA6 /* PBXTextBookmark */ = {
673
+		isa = PBXTextBookmark;
674
+		fRef = 459334CE0832C57700FF1A15 /* importer.py */;
675
+		name = "importer.py: 39";
676
+		rLen = 0;
677
+		rLoc = 3511;
678
+		rType = 0;
679
+		vrLen = 552;
680
+		vrLoc = 561;
681
+	};
682
+	45F03B4D0833D4A400CF8BA6 /* PBXTextBookmark */ = {
683
+		isa = PBXTextBookmark;
684
+		fRef = 45F03ABF0833CFE400CF8BA6 /* unicodeobject.h */;
685
+		name = PyUnicodeUCS2_FromUnicode;
686
+		rLen = 25;
687
+		rLoc = 6672;
688
+		rType = 0;
689
+		vrLen = 1785;
690
+		vrLoc = 5748;
691
+	};
692
+	45F03B6E0833D54800CF8BA6 /* PBXTextBookmark */ = {
693
+		isa = PBXTextBookmark;
694
+		fRef = 45967FF30832BF890009C12F /* GetMetadataForFile.m */;
695
+		name = "GetMetadataForFile.m: 8";
696
+		rLen = 0;
697
+		rLoc = 1258;
698
+		rType = 0;
699
+		vrLen = 671;
700
+		vrLoc = 0;
701
+	};
702
+	45F03B770833D5B700CF8BA6 /* CFString.h */ = {
703
+		isa = PBXFileReference;
704
+		lastKnownFileType = sourcecode.c.h;
705
+		name = CFString.h;
706
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFString.h;
707
+		sourceTree = "<absolute>";
708
+	};
709
+	45F03B8C0833D9A800CF8BA6 /* PBXTextBookmark */ = {
710
+		isa = PBXTextBookmark;
711
+		fRef = 45F03B770833D5B700CF8BA6 /* CFString.h */;
712
+		name = CFData;
713
+		rLen = 6;
714
+		rLoc = 15547;
715
+		rType = 0;
716
+		vrLen = 1494;
717
+		vrLoc = 14520;
718
+	};
719
+	45F03B8D0833D9A800CF8BA6 /* PBXTextBookmark */ = {
720
+		isa = PBXTextBookmark;
721
+		fRef = 45F03AB40833CF6700CF8BA6 /* NSString.h */;
722
+		name = CFStringEncoding;
723
+		rLen = 16;
724
+		rLoc = 1249;
725
+		rType = 0;
726
+		vrLen = 1221;
727
+		vrLoc = 1120;
728
+	};
729
+	45F9531B08319C400073B07B /* Executable */ = {
730
+		isa = PBXExecutable;
731
+		activeArgIndex = 1;
732
+		activeArgIndices = (
733
+			NO,
734
+			YES,
735
+		);
736
+		argumentStrings = (
737
+			"-d 2 \"/Users/schwa/Documents/WorkingDirectories/toxic/externals/public/Freeware/Python\\ Metadata\\ Importer/TestData/Test.py\"",
738
+			"-d 2 \"/Volumes/Home/Users/Shared/Stuff/Stuff/eBooks/diveintopython-5.4/py/openanything.py\"",
739
+		);
740
+		configStateDict = {
741
+		};
742
+		cppStopOnCatchEnabled = 0;
743
+		cppStopOnThrowEnabled = 0;
744
+		customDataFormattersEnabled = 1;
745
+		debuggerPlugin = GDBDebugging;
746
+		disassemblyDisplayState = 0;
747
+		dylibVariantSuffix = "";
748
+		enableDebugStr = 1;
749
+		environmentEntries = (
750
+		);
751
+		executableSystemSymbolLevel = 0;
752
+		executableUserSymbolLevel = 0;
753
+		launchableReference = 45F9531C08319C400073B07B /* mdimport */;
754
+		libgmallocEnabled = 0;
755
+		name = Executable;
756
+		savedGlobals = {
757
+		};
758
+		sourceDirectories = (
759
+		);
760
+	};
761
+	45F9531C08319C400073B07B /* mdimport */ = {
762
+		isa = PBXFileReference;
763
+		lastKnownFileType = "compiled.mach-o.executable";
764
+		name = mdimport;
765
+		path = /usr/bin/mdimport;
766
+		sourceTree = "<absolute>";
767
+	};
768
+	8D57630D048677EA00EA77CD /* Python Metadata Importer */ = {
769
+		activeExec = 0;
770
+	};
771
+}
0 772
new file mode 100644
... ...
@@ -0,0 +1,1587 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>ActivePerspectiveName</key>
6
+	<string>Project</string>
7
+	<key>AllowedModules</key>
8
+	<array>
9
+		<dict>
10
+			<key>BundleLoadPath</key>
11
+			<string></string>
12
+			<key>MaxInstances</key>
13
+			<string>n</string>
14
+			<key>Module</key>
15
+			<string>PBXSmartGroupTreeModule</string>
16
+			<key>Name</key>
17
+			<string>Groups and Files Outline View</string>
18
+		</dict>
19
+		<dict>
20
+			<key>BundleLoadPath</key>
21
+			<string></string>
22
+			<key>MaxInstances</key>
23
+			<string>n</string>
24
+			<key>Module</key>
25
+			<string>PBXNavigatorGroup</string>
26
+			<key>Name</key>
27
+			<string>Editor</string>
28
+		</dict>
29
+		<dict>
30
+			<key>BundleLoadPath</key>
31
+			<string></string>
32
+			<key>MaxInstances</key>
33
+			<string>n</string>
34
+			<key>Module</key>
35
+			<string>XCTaskListModule</string>
36
+			<key>Name</key>
37
+			<string>Task List</string>
38
+		</dict>
39
+		<dict>
40
+			<key>BundleLoadPath</key>
41
+			<string></string>
42
+			<key>MaxInstances</key>
43
+			<string>n</string>
44
+			<key>Module</key>
45
+			<string>XCDetailModule</string>
46
+			<key>Name</key>
47
+			<string>File and Smart Group Detail Viewer</string>
48
+		</dict>
49
+		<dict>
50
+			<key>BundleLoadPath</key>
51
+			<string></string>
52
+			<key>MaxInstances</key>
53
+			<string>1</string>
54
+			<key>Module</key>
55
+			<string>PBXBuildResultsModule</string>
56
+			<key>Name</key>
57
+			<string>Detailed Build Results Viewer</string>
58
+		</dict>
59
+		<dict>
60
+			<key>BundleLoadPath</key>
61
+			<string></string>
62
+			<key>MaxInstances</key>
63
+			<string>1</string>
64
+			<key>Module</key>
65
+			<string>PBXProjectFindModule</string>
66
+			<key>Name</key>
67
+			<string>Project Batch Find Tool</string>
68
+		</dict>
69
+		<dict>
70
+			<key>BundleLoadPath</key>
71
+			<string></string>
72
+			<key>MaxInstances</key>
73
+			<string>n</string>
74
+			<key>Module</key>
75
+			<string>PBXRunSessionModule</string>
76
+			<key>Name</key>
77
+			<string>Run Log</string>
78
+		</dict>
79
+		<dict>
80
+			<key>BundleLoadPath</key>
81
+			<string></string>
82
+			<key>MaxInstances</key>
83
+			<string>n</string>
84
+			<key>Module</key>
85
+			<string>PBXBookmarksModule</string>
86
+			<key>Name</key>
87
+			<string>Bookmarks Tool</string>
88
+		</dict>
89
+		<dict>
90
+			<key>BundleLoadPath</key>
91
+			<string></string>
92
+			<key>MaxInstances</key>
93
+			<string>n</string>
94
+			<key>Module</key>
95
+			<string>PBXClassBrowserModule</string>
96
+			<key>Name</key>
97
+			<string>Class Browser</string>
98
+		</dict>
99
+		<dict>
100
+			<key>BundleLoadPath</key>
101
+			<string></string>
102
+			<key>MaxInstances</key>
103
+			<string>n</string>
104
+			<key>Module</key>
105
+			<string>PBXCVSModule</string>
106
+			<key>Name</key>
107
+			<string>Source Code Control Tool</string>
108
+		</dict>
109
+		<dict>
110
+			<key>BundleLoadPath</key>
111
+			<string></string>
112
+			<key>MaxInstances</key>
113
+			<string>n</string>
114
+			<key>Module</key>
115
+			<string>PBXDebugBreakpointsModule</string>
116
+			<key>Name</key>
117
+			<string>Debug Breakpoints Tool</string>
118
+		</dict>
119
+		<dict>
120
+			<key>BundleLoadPath</key>
121
+			<string></string>
122
+			<key>MaxInstances</key>
123
+			<string>n</string>
124
+			<key>Module</key>
125
+			<string>XCDockableInspector</string>
126
+			<key>Name</key>
127
+			<string>Inspector</string>
128
+		</dict>
129
+		<dict>
130
+			<key>BundleLoadPath</key>
131
+			<string></string>
132
+			<key>MaxInstances</key>
133
+			<string>n</string>
134
+			<key>Module</key>
135
+			<string>PBXOpenQuicklyModule</string>
136
+			<key>Name</key>
137
+			<string>Open Quickly Tool</string>
138
+		</dict>
139
+		<dict>
140
+			<key>BundleLoadPath</key>
141
+			<string></string>
142
+			<key>MaxInstances</key>
143
+			<string>1</string>
144
+			<key>Module</key>
145
+			<string>PBXDebugSessionModule</string>
146
+			<key>Name</key>
147
+			<string>Debugger</string>
148
+		</dict>
149
+		<dict>
150
+			<key>BundleLoadPath</key>
151
+			<string></string>
152
+			<key>MaxInstances</key>
153
+			<string>1</string>
154
+			<key>Module</key>
155
+			<string>PBXDebugCLIModule</string>
156
+			<key>Name</key>
157
+			<string>Debug Console</string>
158
+		</dict>
159
+	</array>
160
+	<key>Description</key>
161
+	<string>AIODescriptionKey</string>
162
+	<key>DockingSystemVisible</key>
163
+	<false/>
164
+	<key>Extension</key>
165
+	<string>perspective</string>
166
+	<key>FavBarConfig</key>
167
+	<dict>
168
+		<key>PBXProjectModuleGUID</key>
169
+		<string>45796100083160E500A923A6</string>
170
+		<key>XCBarModuleItemNames</key>
171
+		<dict/>
172
+		<key>XCBarModuleItems</key>
173
+		<array/>
174
+	</dict>
175
+	<key>FirstTimeWindowDisplayed</key>
176
+	<false/>
177
+	<key>Identifier</key>
178
+	<string>com.apple.perspectives.project.default</string>
179
+	<key>MajorVersion</key>
180
+	<integer>33</integer>
181
+	<key>MinorVersion</key>
182
+	<integer>0</integer>
183
+	<key>Name</key>
184
+	<string>All-In-One</string>
185
+	<key>Notifications</key>
186
+	<array>
187
+		<dict>
188
+			<key>XCObserverAutoDisconnectKey</key>
189
+			<true/>
190
+			<key>XCObserverDefintionKey</key>
191
+			<dict>
192
+				<key>PBXStatusErrorsKey</key>
193
+				<integer>0</integer>
194
+			</dict>
195
+			<key>XCObserverFactoryKey</key>
196
+			<string>XCPerspectivesSpecificationIdentifier</string>
197
+			<key>XCObserverGUIDKey</key>
198
+			<string>XCObserverProjectIdentifier</string>
199
+			<key>XCObserverNotificationKey</key>
200
+			<string>PBXStatusBuildStateMessageNotification</string>
201
+			<key>XCObserverTargetKey</key>
202
+			<string>XCMainBuildResultsModuleGUID</string>
203
+			<key>XCObserverTriggerKey</key>
204
+			<string>awakenModuleWithObserver:</string>
205
+			<key>XCObserverValidationKey</key>
206
+			<dict>
207
+				<key>PBXStatusErrorsKey</key>
208
+				<integer>2</integer>
209
+			</dict>
210
+		</dict>
211
+		<dict>
212
+			<key>XCObserverAutoDisconnectKey</key>
213
+			<true/>
214
+			<key>XCObserverDefintionKey</key>
215
+			<dict>
216
+				<key>PBXStatusWarningsKey</key>
217
+				<integer>0</integer>
218
+			</dict>
219
+			<key>XCObserverFactoryKey</key>
220
+			<string>XCPerspectivesSpecificationIdentifier</string>
221
+			<key>XCObserverGUIDKey</key>
222
+			<string>XCObserverProjectIdentifier</string>
223
+			<key>XCObserverNotificationKey</key>
224
+			<string>PBXStatusBuildStateMessageNotification</string>
225
+			<key>XCObserverTargetKey</key>
226
+			<string>XCMainBuildResultsModuleGUID</string>
227
+			<key>XCObserverTriggerKey</key>
228
+			<string>awakenModuleWithObserver:</string>
229
+			<key>XCObserverValidationKey</key>
230
+			<dict>
231
+				<key>PBXStatusWarningsKey</key>
232
+				<integer>2</integer>
233
+			</dict>
234
+		</dict>
235
+	</array>
236
+	<key>OpenEditors</key>
237
+	<array/>
238
+	<key>PerspectiveWidths</key>
239
+	<array>
240
+		<integer>1280</integer>
241
+		<integer>1280</integer>
242
+		<integer>1280</integer>
243
+	</array>
244
+	<key>Perspectives</key>
245
+	<array>
246
+		<dict>
247
+			<key>ChosenToolbarItems</key>
248
+			<array>
249
+				<string>XCToolbarPerspectiveControl</string>
250
+				<string>NSToolbarSeparatorItem</string>
251
+				<string>buildOrClean</string>
252
+				<string>run</string>
253
+				<string>debug</string>
254
+				<string>com.apple.ide.PBXToolbarStopButton</string>
255
+				<string>NSToolbarFlexibleSpaceItem</string>
256
+				<string>active-target-popup</string>
257
+				<string>active-buildstyle-popup</string>
258
+				<string>com.apple.pbx.toolbar.searchfield</string>
259
+			</array>
260
+			<key>ControllerClassBaseName</key>
261
+			<string></string>
262
+			<key>IconName</key>
263
+			<string>WindowOfProject</string>
264
+			<key>Identifier</key>
265
+			<string>perspective.project</string>
266
+			<key>IsVertical</key>
267
+			<false/>
268
+			<key>Layout</key>
269
+			<array>
270
+				<dict>
271
+					<key>BecomeActive</key>
272
+					<true/>
273
+					<key>ContentConfiguration</key>
274
+					<dict>
275
+						<key>PBXBottomSmartGroupGIDs</key>
276
+						<array>
277
+							<string>1C37FBAC04509CD000000102</string>
278
+							<string>1C37FAAC04509CD000000102</string>
279
+							<string>1C08E77C0454961000C914BD</string>
280
+							<string>1C37FABC05509CD000000102</string>
281
+							<string>1C37FABC05539CD112110102</string>
282
+							<string>E2644B35053B69B200211256</string>
283
+							<string>1C37FABC04509CD000100104</string>
284
+							<string>1CC0EA4004350EF90044410B</string>
285
+							<string>1CC0EA4004350EF90041110B</string>
286
+						</array>
287
+						<key>PBXProjectModuleGUID</key>
288
+						<string>1CA23ED40692098700951B8B</string>
289
+						<key>PBXProjectModuleLabel</key>
290
+						<string>Files</string>
291
+						<key>PBXProjectStructureProvided</key>
292
+						<string>yes</string>
293
+						<key>PBXSmartGroupTreeModuleColumnData</key>
294
+						<dict>
295
+							<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
296
+							<array>
297
+								<real>22</real>
298
+								<real>22</real>
299
+								<real>291</real>
300
+							</array>
301
+							<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
302
+							<array>
303
+								<string>TargetStatusColumn</string>
304
+								<string>SCMStatusColumn</string>
305
+								<string>MainColumn</string>
306
+							</array>
307
+						</dict>
308
+						<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
309
+						<dict>
310
+							<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
311
+							<array>
312
+								<string>089C166AFE841209C02AAC07</string>
313
+								<string>45967FEC0832BF890009C12F</string>
314
+								<string>459334CD0832C57700FF1A15</string>
315
+								<string>1C37FBAC04509CD000000102</string>
316
+								<string>1C37FAAC04509CD000000102</string>
317
+							</array>
318
+							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
319
+							<array>
320
+								<array>
321
+									<integer>6</integer>
322
+									<integer>1</integer>
323
+									<integer>0</integer>
324
+								</array>
325
+							</array>
326
+							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
327
+							<string>{{0, 0}, {335, 676}}</string>
328
+						</dict>
329
+						<key>PBXTopSmartGroupGIDs</key>
330
+						<array/>
331
+						<key>XCIncludePerspectivesSwitch</key>
332
+						<false/>
333
+					</dict>
334
+					<key>GeometryConfiguration</key>
335
+					<dict>
336
+						<key>Frame</key>
337
+						<string>{{0, 0}, {352, 694}}</string>
338
+						<key>GroupTreeTableConfiguration</key>
339
+						<array>
340
+							<string>TargetStatusColumn</string>
341
+							<real>22</real>
342
+							<string>SCMStatusColumn</string>
343
+							<real>22</real>
344
+							<string>MainColumn</string>
345
+							<real>291</real>
346
+						</array>
347
+						<key>RubberWindowFrame</key>
348
+						<string>0 97 1280 735 0 0 1280 832 </string>
349
+					</dict>
350
+					<key>Module</key>
351
+					<string>PBXSmartGroupTreeModule</string>
352
+					<key>Proportion</key>
353
+					<string>352pt</string>
354
+				</dict>
355
+				<dict>
356
+					<key>Dock</key>
357
+					<array>
358
+						<dict>
359
+							<key>ContentConfiguration</key>
360
+							<dict>
361
+								<key>PBXProjectModuleGUID</key>
362
+								<string>457960F9083160E500A923A6</string>
363
+								<key>PBXProjectModuleLabel</key>
364
+								<string>CMetadataImporter.m</string>
365
+								<key>PBXSplitModuleInNavigatorKey</key>
366
+								<dict>
367
+									<key>Split0</key>
368
+									<dict>
369
+										<key>PBXProjectModuleGUID</key>
370
+										<string>457960FA083160E500A923A6</string>
371
+										<key>PBXProjectModuleLabel</key>
372
+										<string>CMetadataImporter.m</string>
373
+										<key>_historyCapacity</key>
374
+										<integer>0</integer>
375
+										<key>bookmark</key>
376
+										<string>457A2F5D085E1BF100480ED0</string>
377
+										<key>history</key>
378
+										<array>
379
+											<string>45F03B8C0833D9A800CF8BA6</string>
380
+											<string>458F2CD60833E82700CB6B11</string>
381
+											<string>458F2E970833F66B00CB6B11</string>
382
+											<string>458F2F1F0833FA0200CB6B11</string>
383
+											<string>458F2FD20833FE3D00CB6B11</string>
384
+											<string>458F30430834051C00CB6B11</string>
385
+											<string>45F03B4D0833D4A400CF8BA6</string>
386
+											<string>45F03B8D0833D9A800CF8BA6</string>
387
+											<string>458F2EFD0833F92A00CB6B11</string>
388
+											<string>458F3064083406A800CB6B11</string>
389
+											<string>458F314C0834233D00CB6B11</string>
390
+											<string>458F314D0834233D00CB6B11</string>
391
+											<string>45C999EE084615DA00A9055D</string>
392
+											<string>458F2FD00833FE3D00CB6B11</string>
393
+											<string>45EB68AD08456F72003CD158</string>
394
+											<string>45C99B470846166300A9055D</string>
395
+											<string>45C99B55084616CC00A9055D</string>
396
+											<string>459279A308478862005D51F9</string>
397
+											<string>459279A408478862005D51F9</string>
398
+											<string>45D7EFCF0847D39D0081FAA9</string>
399
+											<string>45E30ABB08566C9E009FA00C</string>
400
+											<string>45EC556A0857C7B9008973A3</string>
401
+											<string>45234A0E0859386A007977F8</string>
402
+										</array>
403
+										<key>prevStack</key>
404
+										<array>
405
+											<string>45F03AD20833D0C400CF8BA6</string>
406
+											<string>45F03B1D0833D2F300CF8BA6</string>
407
+											<string>45F03B6E0833D54800CF8BA6</string>
408
+											<string>458F2CDC0833E82700CB6B11</string>
409
+											<string>458F2E380833F04C00CB6B11</string>
410
+											<string>458F2E9F0833F66B00CB6B11</string>
411
+											<string>458F2EA20833F66B00CB6B11</string>
412
+											<string>458F2FF50834001500CB6B11</string>
413
+											<string>458F2ED20833F7B800CB6B11</string>
414
+											<string>45D534BC083532990039C245</string>
415
+											<string>45D534BD083532990039C245</string>
416
+											<string>45BC8E4608357EF500333919</string>
417
+											<string>45C999F3084615DA00A9055D</string>
418
+											<string>45C99B33084615F300A9055D</string>
419
+										</array>
420
+									</dict>
421
+									<key>SplitCount</key>
422
+									<string>1</string>
423
+								</dict>
424
+								<key>StatusBarVisibility</key>
425
+								<true/>
426
+								<key>XCSharingToken</key>
427
+								<string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string>
428
+							</dict>
429
+							<key>GeometryConfiguration</key>
430
+							<dict>
431
+								<key>Frame</key>
432
+								<string>{{0, 0}, {923, 598}}</string>
433
+								<key>RubberWindowFrame</key>
434
+								<string>0 97 1280 735 0 0 1280 832 </string>
435
+							</dict>
436
+							<key>Module</key>
437
+							<string>PBXNavigatorGroup</string>
438
+							<key>Proportion</key>
439
+							<string>598pt</string>
440
+						</dict>
441
+						<dict>
442
+							<key>Proportion</key>
443
+							<string>91pt</string>
444
+							<key>Tabs</key>
445
+							<array>
446
+								<dict>
447
+									<key>ContentConfiguration</key>
448
+									<dict>
449
+										<key>PBXProjectModuleGUID</key>
450
+										<string>1CA23EDF0692099D00951B8B</string>
451
+										<key>PBXProjectModuleLabel</key>
452
+										<string>Detail</string>
453
+									</dict>
454
+									<key>GeometryConfiguration</key>
455
+									<dict>
456
+										<key>Frame</key>
457
+										<string>{{10, 27}, {923, 64}}</string>
458
+										<key>RubberWindowFrame</key>
459
+										<string>0 97 1280 735 0 0 1280 832 </string>
460
+									</dict>
461
+									<key>Module</key>
462
+									<string>XCDetailModule</string>
463
+								</dict>
464
+								<dict>
465
+									<key>ContentConfiguration</key>
466
+									<dict>
467
+										<key>PBXProjectModuleGUID</key>
468
+										<string>1CA23EE00692099D00951B8B</string>
469
+										<key>PBXProjectModuleLabel</key>
470
+										<string>Project Find</string>
471
+									</dict>
472
+									<key>GeometryConfiguration</key>
473
+									<dict>
474
+										<key>Frame</key>
475
+										<string>{{10, 27}, {923, 284}}</string>
476
+									</dict>
477
+									<key>Module</key>
478
+									<string>PBXProjectFindModule</string>
479
+								</dict>
480
+								<dict>
481
+									<key>ContentConfiguration</key>
482
+									<dict>
483
+										<key>PBXProjectModuleGUID</key>
484
+										<string>1CA23EE10692099D00951B8B</string>
485
+										<key>PBXProjectModuleLabel</key>
486
+										<string>SCM Results</string>
487
+									</dict>
488
+									<key>GeometryConfiguration</key>
489
+									<dict>
490
+										<key>Frame</key>
491
+										<string>{{10, 27}, {1243, 232}}</string>
492
+									</dict>
493
+									<key>Module</key>
494
+									<string>PBXCVSModule</string>
495
+								</dict>
496
+							</array>
497
+						</dict>
498
+					</array>
499
+					<key>Proportion</key>
500
+					<string>923pt</string>
501
+				</dict>
502
+			</array>
503
+			<key>Name</key>
504
+			<string>Project</string>
505
+			<key>ServiceClasses</key>
506
+			<array>
507
+				<string>XCModuleDock</string>
508
+				<string>PBXSmartGroupTreeModule</string>
509
+				<string>XCModuleDock</string>
510
+				<string>PBXNavigatorGroup</string>
511
+				<string>XCDockableTabModule</string>
512
+				<string>XCDetailModule</string>
513
+				<string>PBXProjectFindModule</string>
514
+				<string>PBXCVSModule</string>
515
+			</array>
516
+			<key>TableOfContents</key>
517
+			<array>
518
+				<string>457A2F5E085E1BF100480ED0</string>
519
+				<string>1CA23ED40692098700951B8B</string>
520
+				<string>457A2F5F085E1BF100480ED0</string>
521
+				<string>457960F9083160E500A923A6</string>
522
+				<string>457A2F60085E1BF100480ED0</string>
523
+				<string>1CA23EDF0692099D00951B8B</string>
524
+				<string>1CA23EE00692099D00951B8B</string>
525
+				<string>1CA23EE10692099D00951B8B</string>
526
+			</array>
527
+			<key>ToolbarConfiguration</key>
528
+			<string>xcode.toolbar.config.default</string>
529
+		</dict>
530
+		<dict>
531
+			<key>ChosenToolbarItems</key>
532
+			<array>
533
+				<string>XCToolbarPerspectiveControl</string>
534
+				<string>NSToolbarSeparatorItem</string>
535
+				<string>buildOrClean</string>
536
+				<string>run</string>
537
+				<string>debug</string>
538
+				<string>com.apple.ide.PBXToolbarStopButton</string>
539
+				<string>NSToolbarFlexibleSpaceItem</string>
540
+				<string>servicesModulebuild</string>
541
+				<string>servicesModulerun</string>
542
+				<string>active-target-popup</string>
543
+				<string>active-buildstyle-popup</string>
544
+				<string>active-executable-popup</string>
545
+			</array>
546
+			<key>ControllerClassBaseName</key>
547
+			<string></string>
548
+			<key>IconName</key>
549
+			<string>BuildTabIcon</string>
550
+			<key>Identifier</key>
551
+			<string>perspective.build</string>
552
+			<key>IsVertical</key>
553
+			<false/>
554
+			<key>Layout</key>
555
+			<array>
556
+				<dict>
557
+					<key>ContentConfiguration</key>
558
+					<dict>
559
+						<key>PBXBottomSmartGroupGIDs</key>
560
+						<array/>
561
+						<key>PBXProjectModuleGUID</key>
562
+						<string>1CA23EE50692099D00951B8B</string>
563
+						<key>PBXProjectModuleLabel</key>
564
+						<string>Files</string>
565
+						<key>PBXProjectStructureProvided</key>
566
+						<string>yes</string>
567
+						<key>PBXSmartGroupTreeModuleColumnData</key>
568
+						<dict>
569
+							<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
570
+							<array>
571
+								<real>291</real>
572
+							</array>
573
+							<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
574
+							<array>
575
+								<string>MainColumn</string>
576
+							</array>
577
+						</dict>
578
+						<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
579
+						<dict>
580
+							<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
581
+							<array>
582
+								<string>089C166AFE841209C02AAC07</string>
583
+								<string>45967FEC0832BF890009C12F</string>
584
+								<string>459334CD0832C57700FF1A15</string>
585
+								<string>4596802A0832BFC50009C12F</string>
586
+								<string>089C1671FE841209C02AAC07</string>
587
+							</array>
588
+							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
589
+							<array>
590
+								<array>
591
+									<integer>8</integer>
592
+									<integer>7</integer>
593
+									<integer>0</integer>
594
+								</array>
595
+							</array>
596
+							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
597
+							<string>{{0, 0}, {291, 680}}</string>
598
+						</dict>
599
+						<key>PBXTopSmartGroupGIDs</key>
600
+						<array/>
601
+						<key>XCIncludePerspectivesSwitch</key>
602
+						<false/>
603
+					</dict>
604
+					<key>GeometryConfiguration</key>
605
+					<dict>
606
+						<key>Frame</key>
607
+						<string>{{0, 0}, {308, 698}}</string>
608
+						<key>GroupTreeTableConfiguration</key>
609
+						<array>
610
+							<string>MainColumn</string>
611
+							<real>291</real>
612
+						</array>
613
+					</dict>
614
+					<key>Module</key>
615
+					<string>PBXSmartGroupTreeModule</string>
616
+					<key>Proportion</key>
617
+					<string>308pt</string>
618
+				</dict>
619
+				<dict>
620
+					<key>Dock</key>
621
+					<array>
622
+						<dict>
623
+							<key>ContentConfiguration</key>
624
+							<dict>
625
+								<key>PBXProjectModuleGUID</key>
626
+								<string>457960F9083160E500A923A6</string>
627
+								<key>PBXProjectModuleLabel</key>
628
+								<string>importer.py</string>
629
+								<key>PBXSplitModuleInNavigatorKey</key>
630
+								<dict>
631
+									<key>Split0</key>
632
+									<dict>
633
+										<key>PBXProjectModuleGUID</key>
634
+										<string>457960FA083160E500A923A6</string>
635
+										<key>PBXProjectModuleLabel</key>
636
+										<string>importer.py</string>
637
+										<key>_historyCapacity</key>
638
+										<integer>0</integer>
639
+										<key>bookmark</key>
640
+										<string>45D7EFF10847D4640081FAA9</string>
641
+										<key>history</key>
642
+										<array>
643
+											<string>45F03B4D0833D4A400CF8BA6</string>
644
+											<string>45F03B8C0833D9A800CF8BA6</string>
645
+											<string>45F03B8D0833D9A800CF8BA6</string>
646
+											<string>458F2CD60833E82700CB6B11</string>
647
+											<string>458F2EFD0833F92A00CB6B11</string>
648
+											<string>458F2F1F0833FA0200CB6B11</string>
649
+											<string>458F2FD00833FE3D00CB6B11</string>
650
+											<string>458F2FD20833FE3D00CB6B11</string>
651
+											<string>458F30430834051C00CB6B11</string>
652
+											<string>458F3064083406A800CB6B11</string>
653
+											<string>458F314C0834233D00CB6B11</string>
654
+											<string>458F314D0834233D00CB6B11</string>
655
+											<string>45BC8E1608357EF500333919</string>
656
+											<string>45BC8E1A08357EF500333919</string>
657
+											<string>45BC8E1B08357EF500333919</string>
658
+											<string>45BC8E1C08357EF500333919</string>
659
+											<string>45BC8E1D08357EF500333919</string>
660
+											<string>45BC8E1F08357EF500333919</string>
661
+											<string>45BC8E2008357EF500333919</string>
662
+											<string>45BC8E2108357EF500333919</string>
663
+											<string>45BC8E2208357EF500333919</string>
664
+											<string>45BC8E2308357EF500333919</string>
665
+											<string>45BC8E2508357EF500333919</string>
666
+											<string>45BC8E2608357EF500333919</string>
667
+											<string>458F2CC60833E6AD00CB6B11</string>
668
+											<string>458F2E970833F66B00CB6B11</string>
669
+											<string>458F2F1E0833FA0200CB6B11</string>
670
+											<string>45DD4D550838FDCF00DFF6AF</string>
671
+											<string>45119FAB084404F000D34CC6</string>
672
+											<string>45EB68AD08456F72003CD158</string>
673
+											<string>45C9991D0846099800A9055D</string>
674
+											<string>45C999EC084615DA00A9055D</string>
675
+											<string>45C999EE084615DA00A9055D</string>
676
+											<string>45C99B470846166300A9055D</string>
677
+											<string>45C99B54084616CC00A9055D</string>
678
+											<string>45C99B55084616CC00A9055D</string>
679
+											<string>4534590108469ED7008D3E94</string>
680
+											<string>459279A308478862005D51F9</string>
681
+											<string>459279A408478862005D51F9</string>
682
+											<string>45D7EFC90847D3890081FAA9</string>
683
+											<string>45D7EFE10847D4120081FAA9</string>
684
+										</array>
685
+										<key>prevStack</key>
686
+										<array>
687
+											<string>45F03AD20833D0C400CF8BA6</string>
688
+											<string>45F03AD40833D0C400CF8BA6</string>
689
+											<string>45F03B1D0833D2F300CF8BA6</string>
690
+											<string>45F03B510833D4A400CF8BA6</string>
691
+											<string>45F03B6E0833D54800CF8BA6</string>
692
+											<string>45F03B930833D9A800CF8BA6</string>
693
+											<string>45F03B940833D9A800CF8BA6</string>
694
+											<string>458F2CCB0833E6AD00CB6B11</string>
695
+											<string>458F2CDC0833E82700CB6B11</string>
696
+											<string>458F2CFC0833E90600CB6B11</string>
697
+											<string>458F2D3E0833EC0300CB6B11</string>
698
+											<string>458F2D420833EC0300CB6B11</string>
699
+											<string>458F2DC20833EDB400CB6B11</string>
700
+											<string>458F2DC40833EDB400CB6B11</string>
701
+											<string>458F2E320833F04C00CB6B11</string>
702
+											<string>458F2E380833F04C00CB6B11</string>
703
+											<string>458F2E9F0833F66B00CB6B11</string>
704
+											<string>458F2EA20833F66B00CB6B11</string>
705
+											<string>458F2ED20833F7B800CB6B11</string>
706
+											<string>458F2F220833FA0200CB6B11</string>
707
+											<string>458F2F6B0833FBE700CB6B11</string>
708
+											<string>458F2FF50834001500CB6B11</string>
709
+											<string>458F3066083406A800CB6B11</string>
710
+											<string>458F2D430833EC0300CB6B11</string>
711
+											<string>458F31500834233D00CB6B11</string>
712
+											<string>45D534BC083532990039C245</string>
713
+											<string>45D534BD083532990039C245</string>
714
+											<string>45BC8E3808357EF500333919</string>
715
+											<string>45BC8E3A08357EF500333919</string>
716
+											<string>45BC8E4608357EF500333919</string>
717
+											<string>45C999F3084615DA00A9055D</string>
718
+											<string>45C99B33084615F300A9055D</string>
719
+											<string>45D7EFCB0847D3890081FAA9</string>
720
+										</array>
721
+									</dict>
722
+									<key>SplitCount</key>
723
+									<string>1</string>
724
+								</dict>
725
+								<key>StatusBarVisibility</key>
726
+								<true/>
727
+								<key>XCSharingToken</key>
728
+								<string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string>
729
+							</dict>
730
+							<key>GeometryConfiguration</key>
731
+							<dict>
732
+								<key>Frame</key>
733
+								<string>{{0, 0}, {967, 321}}</string>
734
+							</dict>
735
+							<key>Module</key>
736
+							<string>PBXNavigatorGroup</string>
737
+							<key>Proportion</key>
738
+							<string>321pt</string>
739
+						</dict>
740
+						<dict>
741
+							<key>Proportion</key>
742
+							<string>372pt</string>
743
+							<key>Tabs</key>
744
+							<array>
745
+								<dict>
746
+									<key>ContentConfiguration</key>
747
+									<dict>
748
+										<key>PBXBuildLogShowsTranscriptDefaultKey</key>
749
+										<string>{{0, 5}, {967, 340}}</string>
750
+										<key>PBXProjectModuleGUID</key>
751
+										<string>XCMainBuildResultsModuleGUID</string>
752
+										<key>PBXProjectModuleLabel</key>
753
+										<string>Build</string>
754
+										<key>XCBuildResultsTrigger_Collapse</key>
755
+										<integer>1021</integer>
756
+										<key>XCBuildResultsTrigger_Open</key>
757
+										<integer>1013</integer>
758
+									</dict>
759
+									<key>GeometryConfiguration</key>
760
+									<dict>
761
+										<key>Frame</key>
762
+										<string>{{10, 27}, {967, 345}}</string>
763
+									</dict>
764
+									<key>Module</key>
765
+									<string>PBXBuildResultsModule</string>
766
+								</dict>
767
+								<dict>
768
+									<key>ContentConfiguration</key>
769
+									<dict>
770
+										<key>LauncherConfigVersion</key>
771
+										<string>3</string>
772
+										<key>PBXProjectModuleGUID</key>
773
+										<string>1CA23EE80692099D00951B8B</string>
774
+										<key>PBXProjectModuleLabel</key>
775
+										<string>Run</string>
776
+										<key>Runner</key>
777
+										<dict>
778
+											<key>HorizontalSplitView</key>
779
+											<dict>
780
+												<key>_collapsingFrameDimension</key>
781
+												<real>0.0</real>
782
+												<key>_indexOfCollapsedView</key>
783
+												<integer>0</integer>
784
+												<key>_percentageOfCollapsedView</key>
785
+												<real>0.0</real>
786
+												<key>isCollapsed</key>
787
+												<string>yes</string>
788
+												<key>sizes</key>
789
+												<array>
790
+													<string>{{0, 0}, {491, 168}}</string>
791
+													<string>{{0, 173}, {491, 270}}</string>
792
+												</array>
793
+											</dict>
794
+											<key>VerticalSplitView</key>
795
+											<dict>
796
+												<key>_collapsingFrameDimension</key>
797
+												<real>0.0</real>
798
+												<key>_indexOfCollapsedView</key>
799
+												<integer>0</integer>
800
+												<key>_percentageOfCollapsedView</key>
801
+												<real>0.0</real>
802
+												<key>isCollapsed</key>
803
+												<string>yes</string>
804
+												<key>sizes</key>
805
+												<array>
806
+													<string>{{0, 0}, {406, 443}}</string>
807
+													<string>{{411, 0}, {517, 443}}</string>
808
+												</array>
809
+											</dict>
810
+										</dict>
811
+									</dict>
812
+									<key>GeometryConfiguration</key>
813
+									<dict>
814
+										<key>Frame</key>
815
+										<string>{{10, 27}, {967, 52}}</string>
816
+									</dict>
817
+									<key>Module</key>
818
+									<string>PBXRunSessionModule</string>
819
+								</dict>
820
+							</array>
821
+						</dict>
822
+					</array>
823
+					<key>Proportion</key>
824
+					<string>967pt</string>
825
+				</dict>
826
+			</array>
827
+			<key>Name</key>
828
+			<string>Build</string>
829
+			<key>ServiceClasses</key>
830
+			<array>
831
+				<string>XCModuleDock</string>
832
+				<string>PBXSmartGroupTreeModule</string>
833
+				<string>XCModuleDock</string>
834
+				<string>PBXNavigatorGroup</string>
835
+				<string>XCDockableTabModule</string>
836
+				<string>PBXBuildResultsModule</string>
837
+				<string>PBXRunSessionModule</string>
838
+				<string>XCConsole</string>
839
+			</array>
840
+			<key>TableOfContents</key>
841
+			<array>
842
+				<string>45D7EFEC0847D4640081FAA9</string>
843
+				<string>1CA23EE50692099D00951B8B</string>
844
+				<string>45D7EFED0847D4640081FAA9</string>
845
+				<string>457960F9083160E500A923A6</string>
846
+				<string>45D7EFEE0847D4640081FAA9</string>
847
+				<string>XCMainBuildResultsModuleGUID</string>
848
+				<string>1CA23EE80692099D00951B8B</string>
849
+				<string>45D7EFEF0847D4640081FAA9</string>
850
+			</array>
851
+			<key>ToolbarConfiguration</key>
852
+			<string>xcode.toolbar.config.buildAndRun</string>
853
+		</dict>
854
+		<dict>
855
+			<key>ChosenToolbarItems</key>
856
+			<array>
857
+				<string>XCToolbarPerspectiveControl</string>
858
+				<string>NSToolbarSeparatorItem</string>
859
+				<string>build-and-debug</string>
860
+				<string>debug</string>
861
+				<string>NSToolbarSeparatorItem</string>
862
+				<string>debugger-fix-and-continue</string>
863
+				<string>debugger-restart-executable</string>
864
+				<string>debugger-pause</string>
865
+				<string>debugger-continue</string>
866
+				<string>debugger-step-over</string>
867
+				<string>debugger-step-into</string>
868
+				<string>debugger-step-out</string>
869
+				<string>debugger-step-instruction</string>
870
+				<string>debugger-next-instruction</string>
871
+				<string>NSToolbarSeparatorItem</string>
872
+				<string>debugger-show-console-window</string>
873
+				<string>servicesModulebreakpoints</string>
874
+			</array>
875
+			<key>ControllerClassBaseName</key>
876
+			<string>PBXDebugSessionModule</string>
877
+			<key>IconName</key>
878
+			<string>DebugTabIcon</string>
879
+			<key>Identifier</key>
880
+			<string>perspective.debug</string>
881
+			<key>IsVertical</key>
882
+			<true/>
883
+			<key>Layout</key>
884
+			<array>
885
+				<dict>
886
+					<key>ContentConfiguration</key>
887
+					<dict>
888
+						<key>PBXProjectModuleGUID</key>
889
+						<string>1CCC7628064C1048000F2A68</string>
890
+						<key>PBXProjectModuleLabel</key>
891
+						<string>Debugger Console</string>
892
+					</dict>
893
+					<key>GeometryConfiguration</key>
894
+					<dict>
895
+						<key>Frame</key>
896
+						<string>{{0, 0}, {1280, 250}}</string>
897
+					</dict>
898
+					<key>Module</key>
899
+					<string>PBXDebugCLIModule</string>
900
+					<key>Proportion</key>
901
+					<string>250pt</string>
902
+				</dict>
903
+				<dict>
904
+					<key>ContentConfiguration</key>
905
+					<dict>
906
+						<key>Debugger</key>
907
+						<dict>
908
+							<key>HorizontalSplitView</key>
909
+							<dict>
910
+								<key>_collapsingFrameDimension</key>
911
+								<real>0.0</real>
912
+								<key>_indexOfCollapsedView</key>
913
+								<integer>0</integer>
914
+								<key>_percentageOfCollapsedView</key>
915
+								<real>0.0</real>
916
+								<key>isCollapsed</key>
917
+								<string>yes</string>
918
+								<key>sizes</key>
919
+								<array>
920
+									<string>{{0, 0}, {609, 122}}</string>
921
+									<string>{{609, 0}, {671, 122}}</string>
922
+								</array>
923
+							</dict>
924
+							<key>VerticalSplitView</key>
925
+							<dict>
926
+								<key>_collapsingFrameDimension</key>
927
+								<real>0.0</real>
928
+								<key>_indexOfCollapsedView</key>
929
+								<integer>0</integer>
930
+								<key>_percentageOfCollapsedView</key>
931
+								<real>0.0</real>
932
+								<key>isCollapsed</key>
933
+								<string>yes</string>
934
+								<key>sizes</key>
935
+								<array>
936
+									<string>{{0, 0}, {1280, 122}}</string>
937
+									<string>{{0, 122}, {1280, 321}}</string>
938
+								</array>
939
+							</dict>
940
+						</dict>
941
+						<key>LauncherConfigVersion</key>
942
+						<string>8</string>
943
+						<key>PBXProjectModuleGUID</key>
944
+						<string>1CCC7629064C1048000F2A68</string>
945
+						<key>PBXProjectModuleLabel</key>
946
+						<string>Debug</string>
947
+					</dict>
948
+					<key>GeometryConfiguration</key>
949
+					<dict>
950
+						<key>DebugConsoleDrawerSize</key>
951
+						<string>{100, 120}</string>
952
+						<key>DebugConsoleVisible</key>
953
+						<string>None</string>
954
+						<key>DebugConsoleWindowFrame</key>
955
+						<string>{{200, 200}, {500, 300}}</string>
956
+						<key>DebugSTDIOWindowFrame</key>
957
+						<string>{{200, 200}, {500, 300}}</string>
958
+						<key>Frame</key>
959
+						<string>{{0, 255}, {1280, 443}}</string>
960
+					</dict>
961
+					<key>Module</key>
962
+					<string>PBXDebugSessionModule</string>
963
+					<key>Proportion</key>
964
+					<string>443pt</string>
965
+				</dict>
966
+			</array>
967
+			<key>Name</key>
968
+			<string>Debug</string>
969
+			<key>ServiceClasses</key>
970
+			<array>
971
+				<string>XCModuleDock</string>
972
+				<string>PBXDebugCLIModule</string>
973
+				<string>PBXDebugSessionModule</string>
974
+				<string>PBXDebugProcessAndThreadModule</string>
975
+				<string>PBXDebugProcessViewModule</string>
976
+				<string>PBXDebugThreadViewModule</string>
977
+				<string>PBXDebugStackFrameViewModule</string>
978
+				<string>PBXNavigatorGroup</string>
979
+				<string>XCConsole</string>
980
+			</array>
981
+			<key>TableOfContents</key>
982
+			<array>
983
+				<string>45C9992D084609AF00A9055D</string>
984
+				<string>1CCC7628064C1048000F2A68</string>
985
+				<string>1CCC7629064C1048000F2A68</string>
986
+				<string>45C9992E084609AF00A9055D</string>
987
+				<string>45C9992F084609AF00A9055D</string>
988
+				<string>45C99930084609AF00A9055D</string>
989
+				<string>45C99931084609AF00A9055D</string>
990
+				<string>457960F9083160E500A923A6</string>
991
+				<string>45C99932084609AF00A9055D</string>
992
+			</array>
993
+			<key>ToolbarConfiguration</key>
994
+			<string>xcode.toolbar.config.debug</string>
995
+		</dict>
996
+	</array>
997
+	<key>PerspectivesBarVisible</key>
998
+	<true/>
999
+	<key>ShelfIsVisible</key>
1000
+	<false/>
1001
+	<key>SourceDescription</key>
1002
+	<string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecification.xcperspec'</string>
1003
+	<key>StatusbarIsVisible</key>
1004
+	<true/>
1005
+	<key>TimeStamp</key>
1006
+	<real>140385254.649726</real>
1007
+	<key>ToolbarDisplayMode</key>
1008
+	<integer>1</integer>
1009
+	<key>ToolbarIsVisible</key>
1010
+	<true/>
1011
+	<key>ToolbarSizeMode</key>
1012
+	<integer>2</integer>
1013
+	<key>Type</key>
1014
+	<string>Perspectives</string>
1015
+	<key>UpdateMessage</key>
1016
+	<string></string>
1017
+	<key>WindowJustification</key>
1018
+	<integer>5</integer>
1019
+	<key>WindowOrderList</key>
1020
+	<array>
1021
+		<string>/Volumes/Home/Users/schwa/Documents/WorkingDirectories/toxic/externals/public/Freeware/Python Metadata Importer/Python Metadata Importer.xcodeproj</string>
1022
+	</array>
1023
+	<key>WindowString</key>
1024
+	<string>0 97 1280 735 0 0 1280 832 </string>
1025
+	<key>WindowTools</key>
1026
+	<array>
1027
+		<dict>
1028
+			<key>Identifier</key>
1029
+			<string>windowTool.find</string>
1030
+			<key>Layout</key>
1031
+			<array>
1032
+				<dict>
1033
+					<key>Dock</key>
1034
+					<array>
1035
+						<dict>
1036
+							<key>Dock</key>
1037
+							<array>
1038
+								<dict>
1039
+									<key>ContentConfiguration</key>
1040
+									<dict>
1041
+										<key>PBXProjectModuleGUID</key>
1042
+										<string>1CDD528C0622207200134675</string>
1043
+										<key>PBXProjectModuleLabel</key>
1044
+										<string>&lt;No Editor&gt;</string>
1045
+										<key>PBXSplitModuleInNavigatorKey</key>
1046
+										<dict>
1047
+											<key>Split0</key>
1048
+											<dict>
1049
+												<key>PBXProjectModuleGUID</key>
1050
+												<string>1CD0528D0623707200166675</string>
1051
+											</dict>
1052
+											<key>SplitCount</key>
1053
+											<string>1</string>
1054
+										</dict>
1055
+										<key>StatusBarVisibility</key>
1056
+										<integer>1</integer>
1057
+									</dict>
1058
+									<key>GeometryConfiguration</key>
1059
+									<dict>
1060
+										<key>Frame</key>
1061
+										<string>{{0, 0}, {781, 167}}</string>
1062
+										<key>RubberWindowFrame</key>
1063
+										<string>62 385 781 470 0 0 1440 878 </string>
1064
+									</dict>
1065
+									<key>Module</key>
1066
+									<string>PBXNavigatorGroup</string>
1067
+									<key>Proportion</key>
1068
+									<string>781pt</string>
1069
+								</dict>
1070
+							</array>
1071
+							<key>Proportion</key>
1072
+							<string>50%</string>
1073
+						</dict>
1074
+						<dict>
1075
+							<key>BecomeActive</key>
1076
+							<integer>1</integer>
1077
+							<key>ContentConfiguration</key>
1078
+							<dict>
1079
+								<key>PBXProjectModuleGUID</key>
1080
+								<string>1CD0528E0623707200166675</string>
1081
+								<key>PBXProjectModuleLabel</key>
1082
+								<string>Project Find</string>
1083
+							</dict>
1084
+							<key>GeometryConfiguration</key>
1085
+							<dict>
1086
+								<key>Frame</key>
1087
+								<string>{{8, 0}, {773, 254}}</string>
1088
+								<key>RubberWindowFrame</key>
1089
+								<string>62 385 781 470 0 0 1440 878 </string>
1090
+							</dict>
1091
+							<key>Module</key>
1092
+							<string>PBXProjectFindModule</string>
1093
+							<key>Proportion</key>
1094
+							<string>50%</string>
1095
+						</dict>
1096
+					</array>
1097
+					<key>Proportion</key>
1098
+					<string>428pt</string>
1099
+				</dict>
1100
+			</array>
1101
+			<key>Name</key>
1102
+			<string>Project Find</string>
1103
+			<key>ServiceClasses</key>
1104
+			<array>
1105
+				<string>PBXProjectFindModule</string>
1106
+			</array>
1107
+			<key>StatusbarIsVisible</key>
1108
+			<integer>1</integer>
1109
+			<key>TableOfContents</key>
1110
+			<array>
1111
+				<string>1C530D57069F1CE1000CFCEE</string>
1112
+				<string>1C530D58069F1CE1000CFCEE</string>
1113
+				<string>1C530D59069F1CE1000CFCEE</string>
1114
+				<string>1CDD528C0622207200134675</string>
1115
+				<string>1C530D5A069F1CE1000CFCEE</string>
1116
+				<string>1CE0B1FE06471DED0097A5F4</string>
1117
+				<string>1CD0528E0623707200166675</string>
1118
+			</array>
1119
+			<key>WindowString</key>
1120
+			<string>62 385 781 470 0 0 1440 878 </string>
1121
+			<key>WindowToolGUID</key>
1122
+			<string>1C530D57069F1CE1000CFCEE</string>
1123
+			<key>WindowToolIsVisible</key>
1124
+			<integer>0</integer>
1125
+		</dict>
1126
+		<dict>
1127
+			<key>Identifier</key>
1128
+			<string>windowTool.run</string>
1129
+			<key>Layout</key>
1130
+			<array>
1131
+				<dict>
1132
+					<key>Dock</key>
1133
+					<array>
1134
+						<dict>
1135
+							<key>ContentConfiguration</key>
1136
+							<dict>
1137
+								<key>LauncherConfigVersion</key>
1138
+								<string>3</string>
1139
+								<key>PBXProjectModuleGUID</key>
1140
+								<string>1CD0528B0623707200166675</string>
1141
+								<key>PBXProjectModuleLabel</key>
1142
+								<string>Run - cocoapp112 - cocoapp112</string>
1143
+								<key>Runner</key>
1144
+								<dict>
1145
+									<key>HorizontalSplitView</key>
1146
+									<dict>
1147
+										<key>_collapsingFrameDimension</key>
1148
+										<real>0.0</real>
1149
+										<key>_indexOfCollapsedView</key>
1150
+										<integer>0</integer>
1151
+										<key>_percentageOfCollapsedView</key>
1152
+										<real>0.0</real>
1153
+										<key>isCollapsed</key>
1154
+										<string>yes</string>
1155
+										<key>sizes</key>
1156
+										<array>
1157
+											<string>{{0, 0}, {365, 167}}</string>
1158
+											<string>{{0, 176}, {365, 267}}</string>
1159
+										</array>
1160
+									</dict>
1161
+									<key>VerticalSplitView</key>
1162
+									<dict>
1163
+										<key>_collapsingFrameDimension</key>
1164
+										<real>0.0</real>
1165
+										<key>_indexOfCollapsedView</key>
1166
+										<integer>0</integer>
1167
+										<key>_percentageOfCollapsedView</key>
1168
+										<real>0.0</real>
1169
+										<key>isCollapsed</key>
1170
+										<string>yes</string>
1171
+										<key>sizes</key>
1172
+										<array>
1173
+											<string>{{0, 0}, {405, 443}}</string>
1174
+											<string>{{414, 0}, {514, 443}}</string>
1175
+										</array>
1176
+									</dict>
1177
+								</dict>
1178
+							</dict>
1179
+							<key>GeometryConfiguration</key>
1180
+							<dict>
1181
+								<key>Frame</key>
1182
+								<string>{{0, 0}, {456, 192}}</string>
1183
+								<key>RubberWindowFrame</key>
1184
+								<string>741 130 456 234 0 0 1280 1002 </string>
1185
+							</dict>
1186
+							<key>Module</key>
1187
+							<string>PBXRunSessionModule</string>
1188
+							<key>Proportion</key>
1189
+							<string>192pt</string>
1190
+						</dict>
1191
+					</array>
1192
+					<key>Proportion</key>
1193
+					<string>192pt</string>
1194
+				</dict>
1195
+			</array>
1196
+			<key>Name</key>
1197
+			<string>Run Log</string>
1198
+			<key>ServiceClasses</key>
1199
+			<array>
1200
+				<string>PBXRunSessionModule</string>
1201
+			</array>
1202
+			<key>StatusbarIsVisible</key>
1203
+			<integer>1</integer>
1204
+			<key>TableOfContents</key>
1205
+			<array>
1206
+				<string>1C78EAAF065D492600B07095</string>
1207
+				<string>1C78EAB0065D492600B07095</string>
1208
+				<string>1CD0528B0623707200166675</string>
1209
+				<string>1C78EAB1065D492600B07095</string>
1210
+			</array>
1211
+			<key>ToolbarConfiguration</key>
1212
+			<string>xcode.toolbar.config.run</string>
1213
+			<key>WindowString</key>
1214
+			<string>741 130 456 234 0 0 1280 1002 </string>
1215
+		</dict>
1216
+		<dict>
1217
+			<key>Identifier</key>
1218
+			<string>windowTool.scm</string>
1219
+			<key>Layout</key>
1220
+			<array>
1221
+				<dict>
1222
+					<key>Dock</key>
1223
+					<array>
1224
+						<dict>
1225
+							<key>ContentConfiguration</key>
1226
+							<dict>
1227
+								<key>PBXProjectModuleGUID</key>
1228
+								<string>1C78EAB2065D492600B07095</string>
1229
+								<key>PBXProjectModuleLabel</key>
1230
+								<string>&lt;No Editor&gt;</string>
1231
+								<key>PBXSplitModuleInNavigatorKey</key>
1232
+								<dict>
1233
+									<key>Split0</key>
1234
+									<dict>
1235
+										<key>PBXProjectModuleGUID</key>
1236
+										<string>1C78EAB3065D492600B07095</string>
1237
+									</dict>
1238
+									<key>SplitCount</key>
1239
+									<string>1</string>
1240
+								</dict>
1241
+								<key>StatusBarVisibility</key>
1242
+								<integer>1</integer>
1243
+							</dict>
1244
+							<key>GeometryConfiguration</key>
1245
+							<dict>
1246
+								<key>Frame</key>
1247
+								<string>{{0, 0}, {452, 0}}</string>
1248
+								<key>RubberWindowFrame</key>
1249
+								<string>743 379 452 308 0 0 1280 1002 </string>
1250
+							</dict>
1251
+							<key>Module</key>
1252
+							<string>PBXNavigatorGroup</string>
1253
+							<key>Proportion</key>
1254
+							<string>0pt</string>
1255
+						</dict>
1256
+						<dict>
1257
+							<key>BecomeActive</key>
1258
+							<integer>1</integer>
1259
+							<key>ContentConfiguration</key>
1260
+							<dict>
1261
+								<key>PBXProjectModuleGUID</key>
1262
+								<string>1CD052920623707200166675</string>
1263
+								<key>PBXProjectModuleLabel</key>
1264
+								<string>SCM</string>
1265
+							</dict>
1266
+							<key>GeometryConfiguration</key>
1267
+							<dict>
1268
+								<key>ConsoleFrame</key>
1269
+								<string>{{0, 259}, {452, 0}}</string>
1270
+								<key>Frame</key>
1271
+								<string>{{0, 7}, {452, 259}}</string>
1272
+								<key>RubberWindowFrame</key>
1273
+								<string>743 379 452 308 0 0 1280 1002 </string>
1274
+								<key>TableConfiguration</key>
1275
+								<array>
1276
+									<string>Status</string>
1277
+									<real>30</real>
1278
+									<string>FileName</string>
1279
+									<real>199</real>
1280
+									<string>Path</string>
1281
+									<real>197.09500122070312</real>
1282
+								</array>
1283
+								<key>TableFrame</key>
1284
+								<string>{{0, 0}, {452, 250}}</string>
1285
+							</dict>
1286
+							<key>Module</key>
1287
+							<string>PBXCVSModule</string>
1288
+							<key>Proportion</key>
1289
+							<string>262pt</string>
1290
+						</dict>
1291
+					</array>
1292
+					<key>Proportion</key>
1293
+					<string>266pt</string>
1294
+				</dict>
1295
+			</array>
1296
+			<key>Name</key>
1297
+			<string>SCM</string>
1298
+			<key>ServiceClasses</key>
1299
+			<array>
1300
+				<string>PBXCVSModule</string>
1301
+			</array>
1302
+			<key>StatusbarIsVisible</key>
1303
+			<integer>1</integer>
1304
+			<key>TableOfContents</key>
1305
+			<array>
1306
+				<string>1C78EAB4065D492600B07095</string>
1307
+				<string>1C78EAB5065D492600B07095</string>
1308
+				<string>1C78EAB2065D492600B07095</string>
1309
+				<string>1CD052920623707200166675</string>
1310
+			</array>
1311
+			<key>ToolbarConfiguration</key>
1312
+			<string>xcode.toolbar.config.scm</string>
1313
+			<key>WindowString</key>
1314
+			<string>743 379 452 308 0 0 1280 1002 </string>
1315
+		</dict>
1316
+		<dict>
1317
+			<key>Identifier</key>
1318
+			<string>windowTool.breakpoints</string>
1319
+			<key>IsVertical</key>
1320
+			<false/>
1321
+			<key>Layout</key>
1322
+			<array>
1323
+				<dict>
1324
+					<key>Dock</key>
1325
+					<array>
1326
+						<dict>
1327
+							<key>BecomeActive</key>
1328
+							<true/>
1329
+							<key>ContentConfiguration</key>
1330
+							<dict>
1331
+								<key>PBXBottomSmartGroupGIDs</key>
1332
+								<array>
1333
+									<string>1C77FABC04509CD000000102</string>
1334
+								</array>
1335
+								<key>PBXProjectModuleGUID</key>
1336
+								<string>1CE0B1FE06471DED0097A5F4</string>
1337
+								<key>PBXProjectModuleLabel</key>
1338
+								<string>Files</string>
1339
+								<key>PBXProjectStructureProvided</key>
1340
+								<string>no</string>
1341
+								<key>PBXSmartGroupTreeModuleColumnData</key>
1342
+								<dict>
1343
+									<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
1344
+									<array>
1345
+										<real>168</real>
1346
+									</array>
1347
+									<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
1348
+									<array>
1349
+										<string>MainColumn</string>
1350
+									</array>
1351
+								</dict>
1352
+								<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
1353
+								<dict>
1354
+									<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
1355
+									<array>
1356
+										<string>1C77FABC04509CD000000102</string>
1357
+									</array>
1358
+									<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
1359
+									<array>
1360
+										<array>
1361
+											<integer>0</integer>
1362
+										</array>
1363
+									</array>
1364
+									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
1365
+									<string>{{0, 0}, {168, 350}}</string>
1366
+								</dict>
1367
+								<key>PBXTopSmartGroupGIDs</key>
1368
+								<array/>
1369
+								<key>XCIncludePerspectivesSwitch</key>
1370
+								<false/>
1371
+							</dict>
1372
+							<key>GeometryConfiguration</key>
1373
+							<dict>
1374
+								<key>Frame</key>
1375
+								<string>{{0, 0}, {185, 368}}</string>
1376
+								<key>GroupTreeTableConfiguration</key>
1377
+								<array>
1378
+									<string>MainColumn</string>
1379
+									<real>168</real>
1380
+								</array>
1381
+								<key>RubberWindowFrame</key>
1382
+								<string>315 424 744 409 0 0 1440 878 </string>
1383
+							</dict>
1384
+							<key>Module</key>
1385
+							<string>PBXSmartGroupTreeModule</string>
1386
+							<key>Proportion</key>
1387
+							<string>185pt</string>
1388
+						</dict>
1389
+						<dict>
1390
+							<key>ContentConfiguration</key>
1391
+							<dict>
1392
+								<key>PBXProjectModuleGUID</key>
1393
+								<string>1CA1AED706398EBD00589147</string>
1394
+								<key>PBXProjectModuleLabel</key>
1395
+								<string>Detail</string>
1396
+							</dict>
1397
+							<key>GeometryConfiguration</key>
1398
+							<dict>
1399
+								<key>Frame</key>
1400
+								<string>{{190, 0}, {554, 368}}</string>
1401
+								<key>RubberWindowFrame</key>
1402
+								<string>315 424 744 409 0 0 1440 878 </string>
1403
+							</dict>
1404
+							<key>Module</key>
1405
+							<string>XCDetailModule</string>
1406
+							<key>Proportion</key>
1407
+							<string>554pt</string>
1408
+						</dict>
1409
+					</array>
1410
+					<key>Proportion</key>
1411
+					<string>368pt</string>
1412
+				</dict>
1413
+			</array>
1414
+			<key>MajorVersion</key>
1415
+			<integer>2</integer>
1416
+			<key>MinorVersion</key>
1417
+			<integer>0</integer>
1418
+			<key>Name</key>
1419
+			<string>Breakpoints</string>
1420
+			<key>ServiceClasses</key>
1421
+			<array>
1422
+				<string>PBXSmartGroupTreeModule</string>
1423
+				<string>XCDetailModule</string>
1424
+			</array>
1425
+			<key>StatusbarIsVisible</key>
1426
+			<true/>
1427
+			<key>TableOfContents</key>
1428
+			<array>
1429
+				<string>1CDDB66807F98D9800BB5817</string>
1430
+				<string>1CDDB66907F98D9800BB5817</string>
1431
+				<string>1CE0B1FE06471DED0097A5F4</string>
1432
+				<string>1CA1AED706398EBD00589147</string>
1433
+			</array>
1434
+			<key>ToolbarConfiguration</key>
1435
+			<string>xcode.toolbar.config.breakpoints</string>
1436
+			<key>WindowString</key>
1437
+			<string>315 424 744 409 0 0 1440 878 </string>
1438
+			<key>WindowToolGUID</key>
1439
+			<string>1CDDB66807F98D9800BB5817</string>
1440
+			<key>WindowToolIsVisible</key>
1441
+			<true/>
1442
+		</dict>
1443
+		<dict>
1444
+			<key>Identifier</key>
1445
+			<string>windowTool.debugAnimator</string>
1446
+			<key>Layout</key>
1447
+			<array>
1448
+				<dict>
1449
+					<key>Dock</key>
1450
+					<array>
1451
+						<dict>
1452
+							<key>Module</key>
1453
+							<string>PBXNavigatorGroup</string>
1454
+							<key>Proportion</key>
1455
+							<string>100%</string>
1456
+						</dict>
1457
+					</array>
1458
+					<key>Proportion</key>
1459
+					<string>100%</string>
1460
+				</dict>
1461
+			</array>
1462
+			<key>Name</key>
1463
+			<string>Debug Visualizer</string>
1464
+			<key>ServiceClasses</key>
1465
+			<array>
1466
+				<string>PBXNavigatorGroup</string>
1467
+			</array>
1468
+			<key>StatusbarIsVisible</key>
1469
+			<true/>
1470
+			<key>ToolbarConfiguration</key>
1471
+			<string>xcode.toolbar.config.debugAnimator</string>
1472
+			<key>WindowString</key>
1473
+			<string>100 100 700 500 0 0 1280 1002 </string>
1474
+		</dict>
1475
+		<dict>
1476
+			<key>Identifier</key>
1477
+			<string>windowTool.bookmarks</string>
1478
+			<key>Layout</key>
1479
+			<array>
1480
+				<dict>
1481
+					<key>Dock</key>
1482
+					<array>
1483
+						<dict>
1484
+							<key>Module</key>
1485
+							<string>PBXBookmarksModule</string>
1486
+							<key>Proportion</key>
1487
+							<string>166pt</string>
1488
+						</dict>
1489
+					</array>
1490
+					<key>Proportion</key>
1491
+					<string>166pt</string>
1492
+				</dict>
1493
+			</array>
1494
+			<key>Name</key>
1495
+			<string>Bookmarks</string>
1496
+			<key>ServiceClasses</key>
1497
+			<array>
1498
+				<string>PBXBookmarksModule</string>
1499
+			</array>
1500
+			<key>StatusbarIsVisible</key>
1501
+			<integer>0</integer>
1502
+			<key>WindowString</key>
1503
+			<string>538 42 401 187 0 0 1280 1002 </string>
1504
+		</dict>
1505
+		<dict>
1506
+			<key>Identifier</key>
1507
+			<string>windowTool.classBrowser</string>
1508
+			<key>Layout</key>
1509
+			<array>
1510
+				<dict>
1511
+					<key>Dock</key>
1512
+					<array>
1513
+						<dict>
1514
+							<key>BecomeActive</key>
1515
+							<integer>1</integer>
1516
+							<key>ContentConfiguration</key>
1517
+							<dict>
1518
+								<key>OptionsSetName</key>
1519
+								<string>Hierarchy, all classes</string>
1520
+								<key>PBXProjectModuleGUID</key>
1521
+								<string>1CA6456E063B45B4001379D8</string>
1522
+								<key>PBXProjectModuleLabel</key>
1523
+								<string>Class Browser - NSObject</string>
1524
+							</dict>
1525
+							<key>GeometryConfiguration</key>
1526
+							<dict>
1527
+								<key>ClassesFrame</key>
1528
+								<string>{{0, 0}, {369, 96}}</string>
1529
+								<key>ClassesTreeTableConfiguration</key>
1530
+								<array>
1531
+									<string>PBXClassNameColumnIdentifier</string>
1532
+									<real>208</real>
1533
+									<string>PBXClassBookColumnIdentifier</string>
1534
+									<real>22</real>
1535
+								</array>
1536
+								<key>Frame</key>
1537
+								<string>{{0, 0}, {616, 353}}</string>
1538
+								<key>MembersFrame</key>
1539
+								<string>{{0, 105}, {369, 395}}</string>
1540
+								<key>MembersTreeTableConfiguration</key>
1541
+								<array>
1542
+									<string>PBXMemberTypeIconColumnIdentifier</string>
1543
+									<real>22</real>
1544
+									<string>PBXMemberNameColumnIdentifier</string>
1545
+									<real>216</real>
1546
+									<string>PBXMemberTypeColumnIdentifier</string>
1547
+									<real>94</real>
1548
+									<string>PBXMemberBookColumnIdentifier</string>
1549
+									<real>22</real>
1550
+								</array>
1551
+								<key>PBXModuleWindowStatusBarHidden2</key>
1552
+								<integer>1</integer>
1553
+								<key>RubberWindowFrame</key>
1554
+								<string>597 125 616 374 0 0 1280 1002 </string>
1555
+							</dict>
1556
+							<key>Module</key>
1557
+							<string>PBXClassBrowserModule</string>
1558
+							<key>Proportion</key>
1559
+							<string>354pt</string>
1560
+						</dict>
1561
+					</array>
1562
+					<key>Proportion</key>
1563
+					<string>354pt</string>
1564
+				</dict>
1565
+			</array>
1566
+			<key>Name</key>
1567
+			<string>Class Browser</string>
1568
+			<key>ServiceClasses</key>
1569
+			<array>
1570
+				<string>PBXClassBrowserModule</string>
1571
+			</array>
1572
+			<key>StatusbarIsVisible</key>
1573
+			<integer>0</integer>
1574
+			<key>TableOfContents</key>
1575
+			<array>
1576
+				<string>1C78EABA065D492600B07095</string>
1577
+				<string>1C78EABB065D492600B07095</string>
1578
+				<string>1CA6456E063B45B4001379D8</string>
1579
+			</array>
1580
+			<key>ToolbarConfiguration</key>
1581
+			<string>xcode.toolbar.config.classbrowser</string>
1582
+			<key>WindowString</key>
1583
+			<string>597 125 616 374 0 0 1280 1002 </string>
1584
+		</dict>
1585
+	</array>
1586
+</dict>
1587
+</plist>
0 1588
new file mode 100644
... ...
@@ -0,0 +1,664 @@
1
+// !$*UTF8*$!
2
+{
3
+	archiveVersion = 1;
4
+	classes = {
5
+	};
6
+	objectVersion = 42;
7
+	objects = {
8
+
9
+/* Begin PBXBuildFile section */
10
+		45796127083162D100A923A6 /* Foundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 45796126083162D100A923A6 /* Foundation.framework */; };
11
+		457F54E70832F2830043FBA6 /* CMetadataImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 45967FEE0832BF890009C12F /* CMetadataImporter.m */; };
12
+		459680030832BF890009C12F /* CMetadataImporter.h in Headers */ = {isa = PBXBuildFile; fileRef = 45967FED0832BF890009C12F /* CMetadataImporter.h */; };
13
+		459680070832BF890009C12F /* GetMetadataForFile.m in Sources */ = {isa = PBXBuildFile; fileRef = 45967FF30832BF890009C12F /* GetMetadataForFile.m */; };
14
+		459680090832BF890009C12F /* main.c in Sources */ = {isa = PBXBuildFile; fileRef = 45967FF50832BF890009C12F /* main.c */; };
15
+		459680310832BFC50009C12F /* InfoPlist.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4596802B0832BFC50009C12F /* InfoPlist.strings */; };
16
+		459680320832BFC50009C12F /* schema.strings in Resources */ = {isa = PBXBuildFile; fileRef = 4596802D0832BFC50009C12F /* schema.strings */; };
17
+		459680340832BFC50009C12F /* schema.xml in Resources */ = {isa = PBXBuildFile; fileRef = 459680300832BFC50009C12F /* schema.xml */; };
18
+		8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = 0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */; };
19
+		C86B05270671AA6E00DD9006 /* CoreServices.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = C86B05260671AA6E00DD9006 /* CoreServices.framework */; };
20
+		DE4C707608CE1588001A80F8 /* NSString_HMext.m in Sources */ = {isa = PBXBuildFile; fileRef = DE4C707508CE1588001A80F8 /* NSString_HMext.m */; };
21
+		DE4C70DB08CE2E1D001A80F8 /* NSString_HMext.m in Sources */ = {isa = PBXBuildFile; fileRef = DE4C707508CE1588001A80F8 /* NSString_HMext.m */; };
22
+		DE75AD0108CD14BB008AC2B5 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = DE75AD0008CD14BB008AC2B5 /* main.m */; };
23
+		DE75AD0208CD14E6008AC2B5 /* CMetadataImporter.m in Sources */ = {isa = PBXBuildFile; fileRef = 45967FEE0832BF890009C12F /* CMetadataImporter.m */; };
24
+		DEC2DF1408D0E75100E64CA6 /* DebugLog.m in Sources */ = {isa = PBXBuildFile; fileRef = DEC2DF1308D0E75100E64CA6 /* DebugLog.m */; };
25
+		DEC2DF1508D0E75100E64CA6 /* DebugLog.h in Headers */ = {isa = PBXBuildFile; fileRef = DEC2DF1208D0E75100E64CA6 /* DebugLog.h */; };
26
+		DEC2DF1608D0E75100E64CA6 /* DebugLog.m in Sources */ = {isa = PBXBuildFile; fileRef = DEC2DF1308D0E75100E64CA6 /* DebugLog.m */; };
27
+		DEE41B6D08CFD33700F96F3E /* NSData_HMext.m in Sources */ = {isa = PBXBuildFile; fileRef = DEE41B6C08CFD33700F96F3E /* NSData_HMext.m */; };
28
+		DEE41B6E08CFD33700F96F3E /* NSData_HMext.h in Headers */ = {isa = PBXBuildFile; fileRef = DEE41B6B08CFD33700F96F3E /* NSData_HMext.h */; };
29
+		DEE41B6F08CFD33700F96F3E /* NSData_HMext.m in Sources */ = {isa = PBXBuildFile; fileRef = DEE41B6C08CFD33700F96F3E /* NSData_HMext.m */; };
30
+/* End PBXBuildFile section */
31
+
32
+/* Begin PBXCopyFilesBuildPhase section */
33
+		459334B40832C4CD00FF1A15 /* CopyFiles */ = {
34
+			isa = PBXCopyFilesBuildPhase;
35
+			buildActionMask = 2147483647;
36
+			dstPath = "";
37
+			dstSubfolderSpec = 12;
38
+			files = (
39
+			);
40
+			runOnlyForDeploymentPostprocessing = 0;
41
+		};
42
+/* End PBXCopyFilesBuildPhase section */
43
+
44
+/* Begin PBXFileReference section */
45
+		0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreFoundation.framework; path = /System/Library/Frameworks/CoreFoundation.framework; sourceTree = "<absolute>"; };
46
+		45796126083162D100A923A6 /* Foundation.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Foundation.framework; path = /System/Library/Frameworks/Foundation.framework; sourceTree = "<absolute>"; };
47
+		45967FED0832BF890009C12F /* CMetadataImporter.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = CMetadataImporter.h; sourceTree = "<group>"; };
48
+		45967FEE0832BF890009C12F /* CMetadataImporter.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = CMetadataImporter.m; sourceTree = "<group>"; wrapsLines = 1; };
49
+		45967FF30832BF890009C12F /* GetMetadataForFile.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = GetMetadataForFile.m; sourceTree = "<group>"; };
50
+		45967FF50832BF890009C12F /* main.c */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.c; path = main.c; sourceTree = "<group>"; };
51
+		4596802C0832BFC50009C12F /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/InfoPlist.strings; sourceTree = "<group>"; };
52
+		4596802E0832BFC50009C12F /* English */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.strings; name = English; path = English.lproj/schema.strings; sourceTree = "<group>"; };
53
+		4596802F0832BFC50009C12F /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
54
+		459680300832BFC50009C12F /* schema.xml */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.xml; path = schema.xml; sourceTree = "<group>"; };
55
+		8D576316048677EA00EA77CD /* Lisp Metadata Importer.mdimporter */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = "Lisp Metadata Importer.mdimporter"; sourceTree = BUILT_PRODUCTS_DIR; };
56
+		C86B05260671AA6E00DD9006 /* CoreServices.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = CoreServices.framework; path = /System/Library/Frameworks/CoreServices.framework; sourceTree = "<absolute>"; };
57
+		DE4C707408CE1588001A80F8 /* NSString_HMext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSString_HMext.h; sourceTree = "<group>"; };
58
+		DE4C707508CE1588001A80F8 /* NSString_HMext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSString_HMext.m; sourceTree = "<group>"; };
59
+		DE75ACF508CD1449008AC2B5 /* LispMetadataImporterTest */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = LispMetadataImporterTest; sourceTree = BUILT_PRODUCTS_DIR; };
60
+		DE75AD0008CD14BB008AC2B5 /* main.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; name = main.m; path = Source/main.m; sourceTree = "<group>"; };
61
+		DEC2DF1208D0E75100E64CA6 /* DebugLog.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = DebugLog.h; sourceTree = "<group>"; };
62
+		DEC2DF1308D0E75100E64CA6 /* DebugLog.m */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.objc; path = DebugLog.m; sourceTree = "<group>"; };
63
+		DEE41B6B08CFD33700F96F3E /* NSData_HMext.h */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.h; path = NSData_HMext.h; sourceTree = "<group>"; };
64
+		DEE41B6C08CFD33700F96F3E /* NSData_HMext.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = NSData_HMext.m; sourceTree = "<group>"; };
65
+/* End PBXFileReference section */
66
+
67
+/* Begin PBXFrameworksBuildPhase section */
68
+		8D576313048677EA00EA77CD /* Frameworks */ = {
69
+			isa = PBXFrameworksBuildPhase;
70
+			buildActionMask = 2147483647;
71
+			files = (
72
+				8D576314048677EA00EA77CD /* CoreFoundation.framework in Frameworks */,
73
+				C86B05270671AA6E00DD9006 /* CoreServices.framework in Frameworks */,
74
+				45796127083162D100A923A6 /* Foundation.framework in Frameworks */,
75
+			);
76
+			runOnlyForDeploymentPostprocessing = 0;
77
+		};
78
+		DE75ACF308CD1449008AC2B5 /* Frameworks */ = {
79
+			isa = PBXFrameworksBuildPhase;
80
+			buildActionMask = 2147483647;
81
+			files = (
82
+			);
83
+			runOnlyForDeploymentPostprocessing = 0;
84
+		};
85
+/* End PBXFrameworksBuildPhase section */
86
+
87
+/* Begin PBXGroup section */
88
+		089C166AFE841209C02AAC07 /* Python Metadata Importer */ = {
89
+			isa = PBXGroup;
90
+			children = (
91
+				DE75ACFD08CD1494008AC2B5 /* LispMetadataImporterTest */,
92
+				45967FEC0832BF890009C12F /* Source */,
93
+				4596802A0832BFC50009C12F /* Resources */,
94
+				089C1671FE841209C02AAC07 /* External Frameworks and Libraries */,
95
+				19C28FB6FE9D52B211CA2CBB /* Products */,
96
+			);
97
+			name = "Python Metadata Importer";
98
+			sourceTree = "<group>";
99
+		};
100
+		089C1671FE841209C02AAC07 /* External Frameworks and Libraries */ = {
101
+			isa = PBXGroup;
102
+			children = (
103
+				45796126083162D100A923A6 /* Foundation.framework */,
104
+				C86B05260671AA6E00DD9006 /* CoreServices.framework */,
105
+				0AA1909FFE8422F4C02AAC07 /* CoreFoundation.framework */,
106
+			);
107
+			name = "External Frameworks and Libraries";
108
+			sourceTree = "<group>";
109
+		};
110
+		19C28FB6FE9D52B211CA2CBB /* Products */ = {
111
+			isa = PBXGroup;
112
+			children = (
113
+				8D576316048677EA00EA77CD /* Lisp Metadata Importer.mdimporter */,
114
+				DE75ACF508CD1449008AC2B5 /* LispMetadataImporterTest */,
115
+			);
116
+			name = Products;
117
+			sourceTree = "<group>";
118
+		};
119
+		45967FEC0832BF890009C12F /* Source */ = {
120
+			isa = PBXGroup;
121
+			children = (
122
+				DEE41B6B08CFD33700F96F3E /* NSData_HMext.h */,
123
+				DEE41B6C08CFD33700F96F3E /* NSData_HMext.m */,
124
+				DE4C707408CE1588001A80F8 /* NSString_HMext.h */,
125
+				DE4C707508CE1588001A80F8 /* NSString_HMext.m */,
126
+				DEC2DF1208D0E75100E64CA6 /* DebugLog.h */,
127
+				DEC2DF1308D0E75100E64CA6 /* DebugLog.m */,
128
+				45967FF50832BF890009C12F /* main.c */,
129
+				45967FF30832BF890009C12F /* GetMetadataForFile.m */,
130
+				45967FED0832BF890009C12F /* CMetadataImporter.h */,
131
+				45967FEE0832BF890009C12F /* CMetadataImporter.m */,
132
+			);
133
+			path = Source;
134
+			sourceTree = "<group>";
135
+		};
136
+		4596802A0832BFC50009C12F /* Resources */ = {
137
+			isa = PBXGroup;
138
+			children = (
139
+				4596802B0832BFC50009C12F /* InfoPlist.strings */,
140
+				4596802D0832BFC50009C12F /* schema.strings */,
141
+				4596802F0832BFC50009C12F /* Info.plist */,
142
+				459680300832BFC50009C12F /* schema.xml */,
143
+			);
144
+			path = Resources;
145
+			sourceTree = "<group>";
146
+		};
147
+		DE75ACFD08CD1494008AC2B5 /* LispMetadataImporterTest */ = {
148
+			isa = PBXGroup;
149
+			children = (
150
+				DE75AD0008CD14BB008AC2B5 /* main.m */,
151
+			);
152
+			name = LispMetadataImporterTest;
153
+			sourceTree = "<group>";
154
+		};
155
+/* End PBXGroup section */
156
+
157
+/* Begin PBXHeadersBuildPhase section */
158
+		8D57630E048677EA00EA77CD /* Headers */ = {
159
+			isa = PBXHeadersBuildPhase;
160
+			buildActionMask = 2147483647;
161
+			files = (
162
+				459680030832BF890009C12F /* CMetadataImporter.h in Headers */,
163
+				DEE41B6E08CFD33700F96F3E /* NSData_HMext.h in Headers */,
164
+				DEC2DF1508D0E75100E64CA6 /* DebugLog.h in Headers */,
165
+			);
166
+			runOnlyForDeploymentPostprocessing = 0;
167
+		};
168
+/* End PBXHeadersBuildPhase section */
169
+
170
+/* Begin PBXNativeTarget section */
171
+		8D57630D048677EA00EA77CD /* Lisp Metadata Importer */ = {
172
+			isa = PBXNativeTarget;
173
+			buildConfigurationList = 45E30AB108566B62009FA00C /* Build configuration list for PBXNativeTarget "Lisp Metadata Importer" */;
174
+			buildPhases = (
175
+				8D57630E048677EA00EA77CD /* Headers */,
176
+				8D57630F048677EA00EA77CD /* Resources */,
177
+				8D576311048677EA00EA77CD /* Sources */,
178
+				8D576313048677EA00EA77CD /* Frameworks */,
179
+				8D576315048677EA00EA77CD /* Rez */,
180
+				459334B40832C4CD00FF1A15 /* CopyFiles */,
181
+			);
182
+			buildRules = (
183
+			);
184
+			dependencies = (
185
+			);
186
+			name = "Lisp Metadata Importer";
187
+			productInstallPath = /Library/Spotlight;
188
+			productName = "Python Metadata Importer";
189
+			productReference = 8D576316048677EA00EA77CD /* Lisp Metadata Importer.mdimporter */;
190
+			productType = "com.apple.product-type.bundle";
191
+		};
192
+		DE75ACF408CD1449008AC2B5 /* LispMetadataImporterTest */ = {
193
+			isa = PBXNativeTarget;
194
+			buildConfigurationList = DE75ACF708CD1473008AC2B5 /* Build configuration list for PBXNativeTarget "LispMetadataImporterTest" */;
195
+			buildPhases = (
196
+				DE75ACF208CD1449008AC2B5 /* Sources */,
197
+				DE75ACF308CD1449008AC2B5 /* Frameworks */,
198
+			);
199
+			buildRules = (
200
+			);
201
+			dependencies = (
202
+			);
203
+			name = LispMetadataImporterTest;
204
+			productName = LispMetadataImporterTest;
205
+			productReference = DE75ACF508CD1449008AC2B5 /* LispMetadataImporterTest */;
206
+			productType = "com.apple.product-type.tool";
207
+		};
208
+/* End PBXNativeTarget section */
209
+
210
+/* Begin PBXProject section */
211
+		089C1669FE841209C02AAC07 /* Project object */ = {
212
+			isa = PBXProject;
213
+			attributes = {
214
+				LastUpgradeCheck = 1010;
215
+			};
216
+			buildConfigurationList = 45E30AB508566B62009FA00C /* Build configuration list for PBXProject "Lisp Metadata Importer" */;
217
+			compatibilityVersion = "Xcode 2.4";
218
+			developmentRegion = en;
219
+			hasScannedForEncodings = 1;
220
+			knownRegions = (
221
+				en,
222
+			);
223
+			mainGroup = 089C166AFE841209C02AAC07 /* Python Metadata Importer */;
224
+			projectDirPath = "";
225
+			projectRoot = "";
226
+			targets = (
227
+				8D57630D048677EA00EA77CD /* Lisp Metadata Importer */,
228
+				DE75ACF408CD1449008AC2B5 /* LispMetadataImporterTest */,
229
+			);
230
+		};
231
+/* End PBXProject section */
232
+
233
+/* Begin PBXResourcesBuildPhase section */
234
+		8D57630F048677EA00EA77CD /* Resources */ = {
235
+			isa = PBXResourcesBuildPhase;
236
+			buildActionMask = 2147483647;
237
+			files = (
238
+				459680310832BFC50009C12F /* InfoPlist.strings in Resources */,
239
+				459680320832BFC50009C12F /* schema.strings in Resources */,
240
+				459680340832BFC50009C12F /* schema.xml in Resources */,
241
+			);
242
+			runOnlyForDeploymentPostprocessing = 0;
243
+		};
244
+/* End PBXResourcesBuildPhase section */
245
+
246
+/* Begin PBXRezBuildPhase section */
247
+		8D576315048677EA00EA77CD /* Rez */ = {
248
+			isa = PBXRezBuildPhase;
249
+			buildActionMask = 2147483647;
250
+			files = (
251
+			);
252
+			runOnlyForDeploymentPostprocessing = 0;
253
+		};
254
+/* End PBXRezBuildPhase section */
255
+
256
+/* Begin PBXSourcesBuildPhase section */
257
+		8D576311048677EA00EA77CD /* Sources */ = {
258
+			isa = PBXSourcesBuildPhase;
259
+			buildActionMask = 2147483647;
260
+			files = (
261
+				459680070832BF890009C12F /* GetMetadataForFile.m in Sources */,
262
+				459680090832BF890009C12F /* main.c in Sources */,
263
+				457F54E70832F2830043FBA6 /* CMetadataImporter.m in Sources */,
264
+				DE4C70DB08CE2E1D001A80F8 /* NSString_HMext.m in Sources */,
265
+				DEE41B6F08CFD33700F96F3E /* NSData_HMext.m in Sources */,
266
+				DEC2DF1608D0E75100E64CA6 /* DebugLog.m in Sources */,
267
+			);
268
+			runOnlyForDeploymentPostprocessing = 0;
269
+		};
270
+		DE75ACF208CD1449008AC2B5 /* Sources */ = {
271
+			isa = PBXSourcesBuildPhase;
272
+			buildActionMask = 2147483647;
273
+			files = (
274
+				DE75AD0108CD14BB008AC2B5 /* main.m in Sources */,
275
+				DE75AD0208CD14E6008AC2B5 /* CMetadataImporter.m in Sources */,
276
+				DE4C707608CE1588001A80F8 /* NSString_HMext.m in Sources */,
277
+				DEE41B6D08CFD33700F96F3E /* NSData_HMext.m in Sources */,
278
+				DEC2DF1408D0E75100E64CA6 /* DebugLog.m in Sources */,
279
+			);
280
+			runOnlyForDeploymentPostprocessing = 0;
281
+		};
282
+/* End PBXSourcesBuildPhase section */
283
+
284
+/* Begin PBXVariantGroup section */
285
+		4596802B0832BFC50009C12F /* InfoPlist.strings */ = {
286
+			isa = PBXVariantGroup;
287
+			children = (
288
+				4596802C0832BFC50009C12F /* English */,
289
+			);
290
+			name = InfoPlist.strings;
291
+			sourceTree = "<group>";
292
+		};
293
+		4596802D0832BFC50009C12F /* schema.strings */ = {
294
+			isa = PBXVariantGroup;
295
+			children = (
296
+				4596802E0832BFC50009C12F /* English */,
297
+			);
298
+			name = schema.strings;
299
+			sourceTree = "<group>";
300
+		};
301
+/* End PBXVariantGroup section */
302
+
303
+/* Begin XCBuildConfiguration section */
304
+		45E30AB208566B62009FA00C /* Debug */ = {
305
+			isa = XCBuildConfiguration;
306
+			buildSettings = {
307
+				CLANG_ENABLE_OBJC_WEAK = YES;
308
+				COPY_PHASE_STRIP = NO;
309
+				DEBUGGING_SYMBOLS = YES;
310
+				FRAMEWORK_SEARCH_PATHS = /System/Library/Frameworks;
311
+				GCC_DYNAMIC_NO_PIC = NO;
312
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
313
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
314
+				GCC_OPTIMIZATION_LEVEL = 0;
315
+				GCC_PRECOMPILE_PREFIX_HEADER = NO;
316
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
317
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
318
+				GCC_WARN_UNKNOWN_PRAGMAS = NO;
319
+				GCC_WARN_UNUSED_VARIABLE = YES;
320
+				HEADER_SEARCH_PATHS = "";
321
+				INFOPLIST_FILE = Resources/Info.plist;
322
+				INSTALL_PATH = /Library/Spotlight;
323
+				LIBRARY_SEARCH_PATHS = "";
324
+				LIBRARY_STYLE = Bundle;
325
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
326
+				OPTIMIZATION_CFLAGS = "-O0";
327
+				OTHER_CFLAGS = (
328
+					"-DSUPPORT_UTF8",
329
+					"-DPOSIX_MALLOC_THRESHOLD=10",
330
+				);
331
+				OTHER_LDFLAGS = "";
332
+				OTHER_REZFLAGS = "";
333
+				PRODUCT_BUNDLE_IDENTIFIER = "com.lemonodor.lisp-metadata-importer.mdimporter";
334
+				PRODUCT_NAME = "Lisp Metadata Importer";
335
+				SECTORDER_FLAGS = "";
336
+				WARNING_CFLAGS = (
337
+					"-Wmost",
338
+					"-Wno-four-char-constants",
339
+					"-Wno-unknown-pragmas",
340
+				);
341
+				WRAPPER_EXTENSION = mdimporter;
342
+				ZERO_LINK = NO;
343
+			};
344
+			name = Debug;
345
+		};
346
+		45E30AB308566B62009FA00C /* Release */ = {
347
+			isa = XCBuildConfiguration;
348
+			buildSettings = {
349
+				CLANG_ENABLE_OBJC_WEAK = YES;
350
+				COPY_PHASE_STRIP = YES;
351
+				FRAMEWORK_SEARCH_PATHS = /System/Library/Frameworks;
352
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
353
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
354
+				GCC_PRECOMPILE_PREFIX_HEADER = NO;
355
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
356
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
357
+				GCC_WARN_UNKNOWN_PRAGMAS = NO;
358
+				GCC_WARN_UNUSED_VARIABLE = YES;
359
+				HEADER_SEARCH_PATHS = "";
360
+				INFOPLIST_FILE = Resources/Info.plist;
361
+				INSTALL_PATH = /Library/Spotlight;
362
+				LIBRARY_SEARCH_PATHS = "";
363
+				LIBRARY_STYLE = Bundle;
364
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
365
+				OTHER_CFLAGS = (
366
+					"-DSUPPORT_UTF8",
367
+					"-DPOSIX_MALLOC_THRESHOLD=10",
368
+				);
369
+				OTHER_LDFLAGS = "";
370
+				OTHER_REZFLAGS = "";
371
+				PRODUCT_BUNDLE_IDENTIFIER = "com.lemonodor.lisp-metadata-importer.mdimporter";
372
+				PRODUCT_NAME = "Lisp Metadata Importer";
373
+				SECTORDER_FLAGS = "";
374
+				WARNING_CFLAGS = (
375
+					"-Wmost",
376
+					"-Wno-four-char-constants",
377
+					"-Wno-unknown-pragmas",
378
+				);
379
+				WRAPPER_EXTENSION = mdimporter;
380
+				ZERO_LINK = NO;
381
+			};
382
+			name = Release;
383
+		};
384
+		45E30AB408566B62009FA00C /* Default */ = {
385
+			isa = XCBuildConfiguration;
386
+			buildSettings = {
387
+				CLANG_ENABLE_OBJC_WEAK = YES;
388
+				FRAMEWORK_SEARCH_PATHS = /System/Library/Frameworks;
389
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
390
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
391
+				GCC_PRECOMPILE_PREFIX_HEADER = NO;
392
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
393
+				GCC_WARN_FOUR_CHARACTER_CONSTANTS = NO;
394
+				GCC_WARN_UNKNOWN_PRAGMAS = NO;
395
+				GCC_WARN_UNUSED_VARIABLE = YES;
396
+				HEADER_SEARCH_PATHS = "";
397
+				INFOPLIST_FILE = Resources/Info.plist;
398
+				INSTALL_PATH = /Library/Spotlight;
399
+				LIBRARY_SEARCH_PATHS = "";
400
+				LIBRARY_STYLE = Bundle;
401
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
402
+				OTHER_CFLAGS = (
403
+					"-DSUPPORT_UTF8",
404
+					"-DPOSIX_MALLOC_THRESHOLD=10",
405
+				);
406
+				OTHER_LDFLAGS = "";
407
+				OTHER_REZFLAGS = "";
408
+				PRODUCT_BUNDLE_IDENTIFIER = "com.lemonodor.lisp-metadata-importer.mdimporter";
409
+				PRODUCT_NAME = "Lisp Metadata Importer";
410
+				SECTORDER_FLAGS = "";
411
+				WARNING_CFLAGS = (
412
+					"-Wmost",
413
+					"-Wno-four-char-constants",
414
+					"-Wno-unknown-pragmas",
415
+				);
416
+				WRAPPER_EXTENSION = mdimporter;
417
+				ZERO_LINK = NO;
418
+			};
419
+			name = Default;
420
+		};
421
+		45E30AB608566B62009FA00C /* Debug */ = {
422
+			isa = XCBuildConfiguration;
423
+			buildSettings = {
424
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
425
+				CLANG_WARN_BOOL_CONVERSION = YES;
426
+				CLANG_WARN_COMMA = YES;
427
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
428
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
429
+				CLANG_WARN_EMPTY_BODY = YES;
430
+				CLANG_WARN_ENUM_CONVERSION = YES;
431
+				CLANG_WARN_INFINITE_RECURSION = YES;
432
+				CLANG_WARN_INT_CONVERSION = YES;
433
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
434
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
435
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
436
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
437
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
438
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
439
+				CLANG_WARN_UNREACHABLE_CODE = YES;
440
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
441
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
442
+				ENABLE_TESTABILITY = YES;
443
+				GCC_NO_COMMON_BLOCKS = YES;
444
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
445
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
446
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
447
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
448
+				GCC_WARN_UNUSED_FUNCTION = YES;
449
+				GCC_WARN_UNUSED_VARIABLE = YES;
450
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
451
+				ONLY_ACTIVE_ARCH = YES;
452
+				STRIP_INSTALLED_PRODUCT = NO;
453
+			};
454
+			name = Debug;
455
+		};
456
+		45E30AB708566B62009FA00C /* Release */ = {
457
+			isa = XCBuildConfiguration;
458
+			buildSettings = {
459
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
460
+				CLANG_WARN_BOOL_CONVERSION = YES;
461
+				CLANG_WARN_COMMA = YES;
462
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
463
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
464
+				CLANG_WARN_EMPTY_BODY = YES;
465
+				CLANG_WARN_ENUM_CONVERSION = YES;
466
+				CLANG_WARN_INFINITE_RECURSION = YES;
467
+				CLANG_WARN_INT_CONVERSION = YES;
468
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
469
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
470
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
471
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
472
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
473
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
474
+				CLANG_WARN_UNREACHABLE_CODE = YES;
475
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
476
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
477
+				GCC_NO_COMMON_BLOCKS = YES;
478
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
479
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
480
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
481
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
482
+				GCC_WARN_UNUSED_FUNCTION = YES;
483
+				GCC_WARN_UNUSED_VARIABLE = YES;
484
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
485
+				ONLY_ACTIVE_ARCH = YES;
486
+				STRIP_INSTALLED_PRODUCT = NO;
487
+			};
488
+			name = Release;
489
+		};
490
+		45E30AB808566B62009FA00C /* Default */ = {
491
+			isa = XCBuildConfiguration;
492
+			buildSettings = {
493
+				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
494
+				CLANG_WARN_BOOL_CONVERSION = YES;
495
+				CLANG_WARN_COMMA = YES;
496
+				CLANG_WARN_CONSTANT_CONVERSION = YES;
497
+				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
498
+				CLANG_WARN_EMPTY_BODY = YES;
499
+				CLANG_WARN_ENUM_CONVERSION = YES;
500
+				CLANG_WARN_INFINITE_RECURSION = YES;
501
+				CLANG_WARN_INT_CONVERSION = YES;
502
+				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
503
+				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
504
+				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
505
+				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
506
+				CLANG_WARN_STRICT_PROTOTYPES = YES;
507
+				CLANG_WARN_SUSPICIOUS_MOVE = YES;
508
+				CLANG_WARN_UNREACHABLE_CODE = YES;
509
+				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
510
+				ENABLE_STRICT_OBJC_MSGSEND = YES;
511
+				GCC_NO_COMMON_BLOCKS = YES;
512
+				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
513
+				GCC_WARN_ABOUT_RETURN_TYPE = YES;
514
+				GCC_WARN_UNDECLARED_SELECTOR = YES;
515
+				GCC_WARN_UNINITIALIZED_AUTOS = YES;
516
+				GCC_WARN_UNUSED_FUNCTION = YES;
517
+				GCC_WARN_UNUSED_VARIABLE = YES;
518
+				MACOSX_DEPLOYMENT_TARGET = 10.13;
519
+				ONLY_ACTIVE_ARCH = YES;
520
+				STRIP_INSTALLED_PRODUCT = NO;
521
+			};
522
+			name = Default;
523
+		};
524
+		DE75ACF808CD1473008AC2B5 /* Debug */ = {
525
+			isa = XCBuildConfiguration;
526
+			buildSettings = {
527
+				CLANG_ENABLE_OBJC_WEAK = YES;
528
+				COPY_PHASE_STRIP = NO;
529
+				GCC_ENABLE_CPP_EXCEPTIONS = YES;
530
+				GCC_ENABLE_CPP_RTTI = YES;
531
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
532
+				GCC_GENERATE_DEBUGGING_SYMBOLS = YES;
533
+				GCC_MODEL_TUNING = G5;
534
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
535
+				GCC_PREFIX_HEADER = "";
536
+				INSTALL_PATH = /usr/local/bin;
537
+				OPTIMIZATION_CFLAGS = "-O0";
538
+				OTHER_CFLAGS = (
539
+					"-DSUPPORT_UTF8",
540
+					"-DPOSIX_MALLOC_THRESHOLD=10",
541
+				);
542
+				OTHER_LDFLAGS = (
543
+					"-framework",
544
+					Foundation,
545
+					"-framework",
546
+					AppKit,
547
+				);
548
+				OTHER_REZFLAGS = "";
549
+				PRODUCT_NAME = LispMetadataImporterTest;
550
+				SECTORDER_FLAGS = "";
551
+				WARNING_CFLAGS = (
552
+					"-Wmost",
553
+					"-Wno-four-char-constants",
554
+					"-Wno-unknown-pragmas",
555
+				);
556
+			};
557
+			name = Debug;
558
+		};
559
+		DE75ACF908CD1473008AC2B5 /* Release */ = {
560
+			isa = XCBuildConfiguration;
561
+			buildSettings = {
562
+				CLANG_ENABLE_OBJC_WEAK = YES;
563
+				COPY_PHASE_STRIP = YES;
564
+				GCC_ENABLE_CPP_EXCEPTIONS = YES;
565
+				GCC_ENABLE_CPP_RTTI = YES;
566
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
567
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
568
+				GCC_MODEL_TUNING = G5;
569
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
570
+				GCC_PREFIX_HEADER = "";
571
+				INSTALL_PATH = /usr/local/bin;
572
+				OPTIMIZATION_CFLAGS = "-O0";
573
+				OTHER_CFLAGS = (
574
+					"-DSUPPORT_UTF8",
575
+					"-DPOSIX_MALLOC_THRESHOLD=10",
576
+				);
577
+				OTHER_LDFLAGS = (
578
+					"-framework",
579
+					Foundation,
580
+					"-framework",
581
+					AppKit,
582
+				);
583
+				OTHER_REZFLAGS = "";
584
+				PRODUCT_NAME = LispMetadataImporterTest;
585
+				SECTORDER_FLAGS = "";
586
+				WARNING_CFLAGS = (
587
+					"-Wmost",
588
+					"-Wno-four-char-constants",
589
+					"-Wno-unknown-pragmas",
590
+				);
591
+			};
592
+			name = Release;
593
+		};
594
+		DE75ACFA08CD1473008AC2B5 /* Default */ = {
595
+			isa = XCBuildConfiguration;
596
+			buildSettings = {
597
+				CLANG_ENABLE_OBJC_WEAK = YES;
598
+				GCC_ENABLE_CPP_EXCEPTIONS = YES;
599
+				GCC_ENABLE_CPP_RTTI = YES;
600
+				GCC_ENABLE_OBJC_EXCEPTIONS = YES;
601
+				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
602
+				GCC_MODEL_TUNING = G5;
603
+				GCC_PRECOMPILE_PREFIX_HEADER = YES;
604
+				GCC_PREFIX_HEADER = "";
605
+				INSTALL_PATH = /usr/local/bin;
606
+				OPTIMIZATION_CFLAGS = "-O0";
607
+				OTHER_CFLAGS = (
608
+					"-DSUPPORT_UTF8",
609
+					"-DPOSIX_MALLOC_THRESHOLD=10",
610
+				);
611
+				OTHER_LDFLAGS = (
612
+					"-framework",
613
+					Foundation,
614
+					"-framework",
615
+					AppKit,
616
+				);
617
+				OTHER_REZFLAGS = "";
618
+				PRODUCT_NAME = LispMetadataImporterTest;
619
+				SECTORDER_FLAGS = "";
620
+				WARNING_CFLAGS = (
621
+					"-Wmost",
622
+					"-Wno-four-char-constants",
623
+					"-Wno-unknown-pragmas",
624
+				);
625
+			};
626
+			name = Default;
627
+		};
628
+/* End XCBuildConfiguration section */
629
+
630
+/* Begin XCConfigurationList section */
631
+		45E30AB108566B62009FA00C /* Build configuration list for PBXNativeTarget "Lisp Metadata Importer" */ = {
632
+			isa = XCConfigurationList;
633
+			buildConfigurations = (
634
+				45E30AB208566B62009FA00C /* Debug */,
635
+				45E30AB308566B62009FA00C /* Release */,
636
+				45E30AB408566B62009FA00C /* Default */,
637
+			);
638
+			defaultConfigurationIsVisible = 0;
639
+			defaultConfigurationName = Default;
640
+		};
641
+		45E30AB508566B62009FA00C /* Build configuration list for PBXProject "Lisp Metadata Importer" */ = {
642
+			isa = XCConfigurationList;
643
+			buildConfigurations = (
644
+				45E30AB608566B62009FA00C /* Debug */,
645
+				45E30AB708566B62009FA00C /* Release */,
646
+				45E30AB808566B62009FA00C /* Default */,
647
+			);
648
+			defaultConfigurationIsVisible = 0;
649
+			defaultConfigurationName = Default;
650
+		};
651
+		DE75ACF708CD1473008AC2B5 /* Build configuration list for PBXNativeTarget "LispMetadataImporterTest" */ = {
652
+			isa = XCConfigurationList;
653
+			buildConfigurations = (
654
+				DE75ACF808CD1473008AC2B5 /* Debug */,
655
+				DE75ACF908CD1473008AC2B5 /* Release */,
656
+				DE75ACFA08CD1473008AC2B5 /* Default */,
657
+			);
658
+			defaultConfigurationIsVisible = 0;
659
+			defaultConfigurationName = Default;
660
+		};
661
+/* End XCConfigurationList section */
662
+	};
663
+	rootObject = 089C1669FE841209C02AAC07 /* Project object */;
664
+}
0 665
new file mode 100644
... ...
@@ -0,0 +1,7 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Workspace
3
+   version = "1.0">
4
+   <FileRef
5
+      location = "self:">
6
+   </FileRef>
7
+</Workspace>
0 8
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>IDEDidComputeMac32BitWarning</key>
6
+	<true/>
7
+</dict>
8
+</plist>
0 9
new file mode 100644
... ...
@@ -0,0 +1,771 @@
1
+// !$*UTF8*$!
2
+{
3
+	089C1669FE841209C02AAC07 /* Project object */ = {
4
+		activeBuildConfigurationName = Debug;
5
+		activeBuildStyle = 014CEA3F0018CDD111CA2923 /* Development */;
6
+		activeExecutable = 45F9531B08319C400073B07B /* Executable */;
7
+		activeTarget = 8D57630D048677EA00EA77CD /* Python Metadata Importer */;
8
+		addToTargets = (
9
+			8D57630D048677EA00EA77CD /* Python Metadata Importer */,
10
+		);
11
+		breakpoints = (
12
+		);
13
+		codeSenseManager = 45796102083160E500A923A6 /* Code sense */;
14
+		executables = (
15
+			45F9531B08319C400073B07B /* Executable */,
16
+		);
17
+		perUserDictionary = {
18
+			PBXConfiguration.PBXFileTableDataSource3.PBXErrorsWarningsDataSource = {
19
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
20
+				PBXFileTableDataSourceColumnSortingKey = PBXErrorsWarningsDataSource_LocationID;
21
+				PBXFileTableDataSourceColumnWidthsKey = (
22
+					20,
23
+					574,
24
+					300,
25
+				);
26
+				PBXFileTableDataSourceColumnsKey = (
27
+					PBXErrorsWarningsDataSource_TypeID,
28
+					PBXErrorsWarningsDataSource_MessageID,
29
+					PBXErrorsWarningsDataSource_LocationID,
30
+				);
31
+			};
32
+			PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
33
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
34
+				PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
35
+				PBXFileTableDataSourceColumnWidthsKey = (
36
+					22,
37
+					300,
38
+					571,
39
+				);
40
+				PBXFileTableDataSourceColumnsKey = (
41
+					PBXExecutablesDataSource_ActiveFlagID,
42
+					PBXExecutablesDataSource_NameID,
43
+					PBXExecutablesDataSource_CommentsID,
44
+				);
45
+			};
46
+			PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
47
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
48
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
49
+				PBXFileTableDataSourceColumnWidthsKey = (
50
+					20,
51
+					684,
52
+					20,
53
+					48,
54
+					43,
55
+					43,
56
+					20,
57
+				);
58
+				PBXFileTableDataSourceColumnsKey = (
59
+					PBXFileDataSource_FiletypeID,
60
+					PBXFileDataSource_Filename_ColumnID,
61
+					PBXFileDataSource_Built_ColumnID,
62
+					PBXFileDataSource_ObjectSize_ColumnID,
63
+					PBXFileDataSource_Errors_ColumnID,
64
+					PBXFileDataSource_Warnings_ColumnID,
65
+					PBXFileDataSource_Target_ColumnID,
66
+				);
67
+			};
68
+			PBXConfiguration.PBXFileTableDataSource3.PBXFindDataSource = {
69
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
70
+				PBXFileTableDataSourceColumnSortingKey = PBXFindDataSource_LocationID;
71
+				PBXFileTableDataSourceColumnWidthsKey = (
72
+					200,
73
+					120,
74
+				);
75
+				PBXFileTableDataSourceColumnsKey = (
76
+					PBXFindDataSource_MessageID,
77
+					PBXFindDataSource_LocationID,
78
+				);
79
+			};
80
+			PBXConfiguration.PBXFileTableDataSource3.PBXSymbolsDataSource = {
81
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
82
+				PBXFileTableDataSourceColumnSortingKey = PBXSymbolsDataSource_SymbolNameID;
83
+				PBXFileTableDataSourceColumnWidthsKey = (
84
+					16,
85
+					200,
86
+					50,
87
+					624.2085,
88
+				);
89
+				PBXFileTableDataSourceColumnsKey = (
90
+					PBXSymbolsDataSource_SymbolTypeIconID,
91
+					PBXSymbolsDataSource_SymbolNameID,
92
+					PBXSymbolsDataSource_SymbolTypeID,
93
+					PBXSymbolsDataSource_ReferenceNameID,
94
+				);
95
+			};
96
+			PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
97
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
98
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
99
+				PBXFileTableDataSourceColumnWidthsKey = (
100
+					20,
101
+					200,
102
+					504,
103
+					20,
104
+					48,
105
+					43,
106
+					43,
107
+				);
108
+				PBXFileTableDataSourceColumnsKey = (
109
+					PBXFileDataSource_FiletypeID,
110
+					PBXFileDataSource_Filename_ColumnID,
111
+					PBXTargetDataSource_PrimaryAttribute,
112
+					PBXFileDataSource_Built_ColumnID,
113
+					PBXFileDataSource_ObjectSize_ColumnID,
114
+					PBXFileDataSource_Errors_ColumnID,
115
+					PBXFileDataSource_Warnings_ColumnID,
116
+				);
117
+			};
118
+			PBXPerProjectTemplateStateSaveDate = 140385254;
119
+			PBXWorkspaceStateSaveDate = 140385254;
120
+		};
121
+		perUserProjectItems = {
122
+			45234A0E0859386A007977F8 /* PBXTextBookmark */ = 45234A0E0859386A007977F8 /* PBXTextBookmark */;
123
+			457A2F5D085E1BF100480ED0 /* PBXTextBookmark */ = 457A2F5D085E1BF100480ED0 /* PBXTextBookmark */;
124
+			458F2CD60833E82700CB6B11 /* PBXTextBookmark */ = 458F2CD60833E82700CB6B11 /* PBXTextBookmark */;
125
+			458F2CDC0833E82700CB6B11 /* PBXTextBookmark */ = 458F2CDC0833E82700CB6B11 /* PBXTextBookmark */;
126
+			458F2E380833F04C00CB6B11 /* PBXTextBookmark */ = 458F2E380833F04C00CB6B11 /* PBXTextBookmark */;
127
+			458F2E970833F66B00CB6B11 /* PBXTextBookmark */ = 458F2E970833F66B00CB6B11 /* PBXTextBookmark */;
128
+			458F2E9F0833F66B00CB6B11 /* PBXTextBookmark */ = 458F2E9F0833F66B00CB6B11 /* PBXTextBookmark */;
129
+			458F2EA20833F66B00CB6B11 /* PBXTextBookmark */ = 458F2EA20833F66B00CB6B11 /* PBXTextBookmark */;
130
+			458F2ED20833F7B800CB6B11 /* PBXTextBookmark */ = 458F2ED20833F7B800CB6B11 /* PBXTextBookmark */;
131
+			458F2EFD0833F92A00CB6B11 /* PBXTextBookmark */ = 458F2EFD0833F92A00CB6B11 /* PBXTextBookmark */;
132
+			458F2F1F0833FA0200CB6B11 /* PBXTextBookmark */ = 458F2F1F0833FA0200CB6B11 /* PBXTextBookmark */;
133
+			458F2FD00833FE3D00CB6B11 /* PBXTextBookmark */ = 458F2FD00833FE3D00CB6B11 /* PBXTextBookmark */;
134
+			458F2FD20833FE3D00CB6B11 /* PBXTextBookmark */ = 458F2FD20833FE3D00CB6B11 /* PBXTextBookmark */;
135
+			458F2FF50834001500CB6B11 /* PBXTextBookmark */ = 458F2FF50834001500CB6B11 /* PBXTextBookmark */;
136
+			458F30430834051C00CB6B11 /* PBXTextBookmark */ = 458F30430834051C00CB6B11 /* PBXTextBookmark */;
137
+			458F3064083406A800CB6B11 /* PBXTextBookmark */ = 458F3064083406A800CB6B11 /* PBXTextBookmark */;
138
+			458F314C0834233D00CB6B11 /* PBXTextBookmark */ = 458F314C0834233D00CB6B11 /* PBXTextBookmark */;
139
+			458F314D0834233D00CB6B11 /* PBXTextBookmark */ = 458F314D0834233D00CB6B11 /* PBXTextBookmark */;
140
+			459279A308478862005D51F9 /* PBXTextBookmark */ = 459279A308478862005D51F9 /* PBXTextBookmark */;
141
+			459279A408478862005D51F9 /* PBXTextBookmark */ = 459279A408478862005D51F9 /* PBXTextBookmark */;
142
+			45BC8E4608357EF500333919 /* PBXTextBookmark */ = 45BC8E4608357EF500333919 /* PBXTextBookmark */;
143
+			45C999EE084615DA00A9055D /* PBXTextBookmark */ = 45C999EE084615DA00A9055D /* PBXTextBookmark */;
144
+			45C999F3084615DA00A9055D /* PBXTextBookmark */ = 45C999F3084615DA00A9055D /* PBXTextBookmark */;
145
+			45C99B33084615F300A9055D /* PBXTextBookmark */ = 45C99B33084615F300A9055D /* PBXTextBookmark */;
146
+			45C99B470846166300A9055D /* PBXTextBookmark */ = 45C99B470846166300A9055D /* PBXTextBookmark */;
147
+			45C99B55084616CC00A9055D /* PBXTextBookmark */ = 45C99B55084616CC00A9055D /* PBXTextBookmark */;
148
+			45D534BC083532990039C245 /* PBXTextBookmark */ = 45D534BC083532990039C245 /* PBXTextBookmark */;
149
+			45D534BD083532990039C245 /* PBXTextBookmark */ = 45D534BD083532990039C245 /* PBXTextBookmark */;
150
+			45D7EFCF0847D39D0081FAA9 /* PBXTextBookmark */ = 45D7EFCF0847D39D0081FAA9 /* PBXTextBookmark */;
151
+			45E30ABB08566C9E009FA00C /* PBXTextBookmark */ = 45E30ABB08566C9E009FA00C /* PBXTextBookmark */;
152
+			45EB68AD08456F72003CD158 /* PBXTextBookmark */ = 45EB68AD08456F72003CD158 /* PBXTextBookmark */;
153
+			45EC556A0857C7B9008973A3 /* PBXTextBookmark */ = 45EC556A0857C7B9008973A3 /* PBXTextBookmark */;
154
+			45F03AD20833D0C400CF8BA6 /* PBXTextBookmark */ = 45F03AD20833D0C400CF8BA6 /* PBXTextBookmark */;
155
+			45F03B1D0833D2F300CF8BA6 /* PBXTextBookmark */ = 45F03B1D0833D2F300CF8BA6 /* PBXTextBookmark */;
156
+			45F03B4D0833D4A400CF8BA6 /* PBXTextBookmark */ = 45F03B4D0833D4A400CF8BA6 /* PBXTextBookmark */;
157
+			45F03B6E0833D54800CF8BA6 /* PBXTextBookmark */ = 45F03B6E0833D54800CF8BA6 /* PBXTextBookmark */;
158
+			45F03B8C0833D9A800CF8BA6 /* PBXTextBookmark */ = 45F03B8C0833D9A800CF8BA6 /* PBXTextBookmark */;
159
+			45F03B8D0833D9A800CF8BA6 /* PBXTextBookmark */ = 45F03B8D0833D9A800CF8BA6 /* PBXTextBookmark */;
160
+		};
161
+		sourceControlManager = 45796101083160E500A923A6 /* Source Control */;
162
+		userBuildSettings = {
163
+		};
164
+	};
165
+	45234A0E0859386A007977F8 /* PBXTextBookmark */ = {
166
+		isa = PBXTextBookmark;
167
+		fRef = 45967FEE0832BF890009C12F /* CMetadataImporter.m */;
168
+		name = "CMetadataImporter.m: 69";
169
+		rLen = 0;
170
+		rLoc = 2792;
171
+		rType = 0;
172
+		vrLen = 1416;
173
+		vrLoc = 2431;
174
+	};
175
+	45796101083160E500A923A6 /* Source Control */ = {
176
+		isa = PBXSourceControlManager;
177
+		fallbackIsa = XCSourceControlManager;
178
+		isSCMEnabled = 1;
179
+		scmConfiguration = {
180
+		};
181
+		scmType = scm.subversion;
182
+	};
183
+	45796102083160E500A923A6 /* Code sense */ = {
184
+		isa = PBXCodeSenseManager;
185
+		indexTemplatePath = "";
186
+	};
187
+	457A2F5D085E1BF100480ED0 /* PBXTextBookmark */ = {
188
+		isa = PBXTextBookmark;
189
+		fRef = 45967FEE0832BF890009C12F /* CMetadataImporter.m */;
190
+		name = "CMetadataImporter.m: 69";
191
+		rLen = 0;
192
+		rLoc = 2792;
193
+		rType = 0;
194
+		vrLen = 1416;
195
+		vrLoc = 2431;
196
+	};
197
+	458F2CC20833E6AB00CB6B11 /* pythonrun.h */ = {
198
+		isa = PBXFileReference;
199
+		lastKnownFileType = sourcecode.c.h;
200
+		name = pythonrun.h;
201
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/pythonrun.h;
202
+		sourceTree = "<absolute>";
203
+	};
204
+	458F2CD60833E82700CB6B11 /* PBXTextBookmark */ = {
205
+		isa = PBXTextBookmark;
206
+		fRef = 458F2CC20833E6AB00CB6B11 /* pythonrun.h */;
207
+		name = "PyAPI_FUNC(void) Py_SetPythonHome(char *);";
208
+		rLen = 43;
209
+		rLoc = 515;
210
+		rType = 0;
211
+		vrLen = 937;
212
+		vrLoc = 0;
213
+	};
214
+	458F2CDC0833E82700CB6B11 /* PBXTextBookmark */ = {
215
+		isa = PBXTextBookmark;
216
+		fRef = 458F2CC20833E6AB00CB6B11 /* pythonrun.h */;
217
+		name = "PyAPI_FUNC(void) Py_SetPythonHome(char *);";
218
+		rLen = 43;
219
+		rLoc = 515;
220
+		rType = 0;
221
+		vrLen = 937;
222
+		vrLoc = 0;
223
+	};
224
+	458F2E110833EEF600CB6B11 /* object.h */ = {
225
+		isa = PBXFileReference;
226
+		lastKnownFileType = sourcecode.c.h;
227
+		name = object.h;
228
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/object.h;
229
+		sourceTree = "<absolute>";
230
+	};
231
+	458F2E380833F04C00CB6B11 /* PBXTextBookmark */ = {
232
+		isa = PBXTextBookmark;
233
+		fRef = 458F2E110833EEF600CB6B11 /* object.h */;
234
+		name = "PyAPI_DATA(PyObject) _Py_NoneStruct; /* Don't use this directly */";
235
+		rLen = 67;
236
+		rLoc = 22892;
237
+		rType = 0;
238
+		vrLen = 952;
239
+		vrLoc = 22421;
240
+	};
241
+	458F2E970833F66B00CB6B11 /* PBXTextBookmark */ = {
242
+		isa = PBXTextBookmark;
243
+		fRef = 45967FF50832BF890009C12F /* main.c */;
244
+		name = "main.c: 10";
245
+		rLen = 0;
246
+		rLoc = 1014;
247
+		rType = 0;
248
+		vrLen = 653;
249
+		vrLoc = 0;
250
+	};
251
+	458F2E9F0833F66B00CB6B11 /* PBXTextBookmark */ = {
252
+		isa = PBXTextBookmark;
253
+		fRef = 45967FF50832BF890009C12F /* main.c */;
254
+		name = "main.c: 10";
255
+		rLen = 0;
256
+		rLoc = 1014;
257
+		rType = 0;
258
+		vrLen = 653;
259
+		vrLoc = 0;
260
+	};
261
+	458F2EA20833F66B00CB6B11 /* PBXTextBookmark */ = {
262
+		isa = PBXTextBookmark;
263
+		fRef = 45967FED0832BF890009C12F /* CMetadataImporter.h */;
264
+		name = "CMetadataImporter.h: 21";
265
+		rLen = 0;
266
+		rLoc = 859;
267
+		rType = 0;
268
+		vrLen = 399;
269
+		vrLoc = 0;
270
+	};
271
+	458F2ECB0833F75C00CB6B11 /* ceval.h */ = {
272
+		isa = PBXFileReference;
273
+		lastKnownFileType = sourcecode.c.h;
274
+		name = ceval.h;
275
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/ceval.h;
276
+		sourceTree = "<absolute>";
277
+	};
278
+	458F2ED20833F7B800CB6B11 /* PBXTextBookmark */ = {
279
+		isa = PBXTextBookmark;
280
+		fRef = 45967FEE0832BF890009C12F /* CMetadataImporter.m */;
281
+		name = "CMetadataImporter.m: 86";
282
+		rLen = 0;
283
+		rLoc = 3059;
284
+		rType = 0;
285
+		vrLen = 59;
286
+		vrLoc = 2147;
287
+	};
288
+	458F2EF30833F8D600CB6B11 /* objimpl.h */ = {
289
+		isa = PBXFileReference;
290
+		lastKnownFileType = sourcecode.c.h;
291
+		name = objimpl.h;
292
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/objimpl.h;
293
+		sourceTree = "<absolute>";
294
+	};
295
+	458F2EFD0833F92A00CB6B11 /* PBXTextBookmark */ = {
296
+		isa = PBXTextBookmark;
297
+		fRef = 458F2ECB0833F75C00CB6B11 /* ceval.h */;
298
+		name = "ceval.h: 14";
299
+		rLen = 0;
300
+		rLoc = 281;
301
+		rType = 0;
302
+		vrLen = 910;
303
+		vrLoc = 0;
304
+	};
305
+	458F2F190833F99C00CB6B11 /* NSDate.h */ = {
306
+		isa = PBXFileReference;
307
+		lastKnownFileType = sourcecode.c.h;
308
+		name = NSDate.h;
309
+		path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSDate.h;
310
+		sourceTree = "<absolute>";
311
+	};
312
+	458F2F1A0833F9B100CB6B11 /* NSCalendarDate.h */ = {
313
+		isa = PBXFileReference;
314
+		lastKnownFileType = sourcecode.c.h;
315
+		name = NSCalendarDate.h;
316
+		path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSCalendarDate.h;
317
+		sourceTree = "<absolute>";
318
+	};
319
+	458F2F1F0833FA0200CB6B11 /* PBXTextBookmark */ = {
320
+		isa = PBXTextBookmark;
321
+		fRef = 458F2F190833F99C00CB6B11 /* NSDate.h */;
322
+		name = timeIntervalSince1970;
323
+		rLen = 21;
324
+		rLoc = 470;
325
+		rType = 0;
326
+		vrLen = 798;
327
+		vrLoc = 256;
328
+	};
329
+	458F2FB40833FCE300CB6B11 /* dictobject.h */ = {
330
+		isa = PBXFileReference;
331
+		lastKnownFileType = sourcecode.c.h;
332
+		name = dictobject.h;
333
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/dictobject.h;
334
+		sourceTree = "<absolute>";
335
+	};
336
+	458F2FC80833FD8F00CB6B11 /* floatobject.h */ = {
337
+		isa = PBXFileReference;
338
+		lastKnownFileType = sourcecode.c.h;
339
+		name = floatobject.h;
340
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/floatobject.h;
341
+		sourceTree = "<absolute>";
342
+	};
343
+	458F2FCD0833FDDF00CB6B11 /* NSTimeZone.h */ = {
344
+		isa = PBXFileReference;
345
+		lastKnownFileType = sourcecode.c.h;
346
+		name = NSTimeZone.h;
347
+		path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSTimeZone.h;
348
+		sourceTree = "<absolute>";
349
+	};
350
+	458F2FD00833FE3D00CB6B11 /* PBXTextBookmark */ = {
351
+		isa = PBXTextBookmark;
352
+		fRef = 458F2E110833EEF600CB6B11 /* object.h */;
353
+		name = PyObject;
354
+		rLen = 8;
355
+		rLoc = 13108;
356
+		rType = 0;
357
+		vrLen = 1586;
358
+		vrLoc = 12411;
359
+	};
360
+	458F2FD20833FE3D00CB6B11 /* PBXTextBookmark */ = {
361
+		isa = PBXTextBookmark;
362
+		fRef = 458F2FC80833FD8F00CB6B11 /* floatobject.h */;
363
+		name = PyFloat_AsDouble;
364
+		rLen = 16;
365
+		rLoc = 917;
366
+		rType = 0;
367
+		vrLen = 1331;
368
+		vrLoc = 214;
369
+	};
370
+	458F2FF50834001500CB6B11 /* PBXTextBookmark */ = {
371
+		isa = PBXTextBookmark;
372
+		fRef = 458F2F1A0833F9B100CB6B11 /* NSCalendarDate.h */;
373
+		name = monthOfYear;
374
+		rLen = 11;
375
+		rLoc = 1349;
376
+		rType = 0;
377
+		vrLen = 1180;
378
+		vrLoc = 757;
379
+	};
380
+	458F303D083404ED00CB6B11 /* import.h */ = {
381
+		isa = PBXFileReference;
382
+		lastKnownFileType = sourcecode.c.h;
383
+		name = import.h;
384
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/import.h;
385
+		sourceTree = "<absolute>";
386
+	};
387
+	458F30430834051C00CB6B11 /* PBXTextBookmark */ = {
388
+		isa = PBXTextBookmark;
389
+		fRef = 458F303D083404ED00CB6B11 /* import.h */;
390
+		name = "PyAPI_FUNC(PyObject *) PyImport_Import(PyObject *name);";
391
+		rLen = 56;
392
+		rLoc = 628;
393
+		rType = 0;
394
+		vrLen = 1031;
395
+		vrLoc = 0;
396
+	};
397
+	458F3064083406A800CB6B11 /* PBXTextBookmark */ = {
398
+		isa = PBXTextBookmark;
399
+		fRef = 458F2FB40833FCE300CB6B11 /* dictobject.h */;
400
+		name = PyDict_GetItem;
401
+		rLen = 14;
402
+		rLoc = 3428;
403
+		rType = 0;
404
+		vrLen = 1305;
405
+		vrLoc = 2895;
406
+	};
407
+	458F314C0834233D00CB6B11 /* PBXTextBookmark */ = {
408
+		isa = PBXTextBookmark;
409
+		fRef = 458F2F1A0833F9B100CB6B11 /* NSCalendarDate.h */;
410
+		name = "@interface NSCalendarDate : NSDate {";
411
+		rLen = 37;
412
+		rLoc = 167;
413
+		rType = 0;
414
+		vrLen = 1171;
415
+		vrLoc = 1060;
416
+	};
417
+	458F314D0834233D00CB6B11 /* PBXTextBookmark */ = {
418
+		isa = PBXTextBookmark;
419
+		fRef = 458F2FCD0833FDDF00CB6B11 /* NSTimeZone.h */;
420
+		name = "NSTimeZone.h: 24";
421
+		rLen = 0;
422
+		rLoc = 526;
423
+		rType = 0;
424
+		vrLen = 773;
425
+		vrLoc = 0;
426
+	};
427
+	459279A308478862005D51F9 /* PBXTextBookmark */ = {
428
+		isa = PBXTextBookmark;
429
+		fRef = 4596802C0832BFC50009C12F /* English */;
430
+		name = "English: 2";
431
+		rLen = 0;
432
+		rLoc = 44;
433
+		rType = 0;
434
+		vrLen = 293;
435
+		vrLoc = 0;
436
+	};
437
+	459279A408478862005D51F9 /* PBXTextBookmark */ = {
438
+		isa = PBXTextBookmark;
439
+		fRef = 4596802E0832BFC50009C12F /* English */;
440
+		name = "English: 5";
441
+		rLen = 0;
442
+		rLoc = 197;
443
+		rType = 0;
444
+		vrLen = 236;
445
+		vrLoc = 0;
446
+	};
447
+	459334CE0832C57700FF1A15 /* importer.py */ = {
448
+		uiCtxt = {
449
+			sepNavIntBoundsRect = "{{0, 0}, {876, 1792}}";
450
+			sepNavSelRange = "{486, 0}";
451
+			sepNavVisRect = "{{0, 0}, {876, 581}}";
452
+			sepNavWindowFrame = "{{15, 42}, {1281, 785}}";
453
+		};
454
+	};
455
+	45967FED0832BF890009C12F /* CMetadataImporter.h */ = {
456
+		uiCtxt = {
457
+			sepNavIntBoundsRect = "{{0, 0}, {1240, 714}}";
458
+			sepNavSelRange = "{859, 0}";
459
+			sepNavVisRect = "{{0, 0}, {1240, 714}}";
460
+			sepNavWindowFrame = "{{15, 448}, {750, 549}}";
461
+		};
462
+	};
463
+	45967FEE0832BF890009C12F /* CMetadataImporter.m */ = {
464
+		uiCtxt = {
465
+			sepNavIntBoundsRect = "{{0, 0}, {876, 1414}}";
466
+			sepNavSelRange = "{2792, 0}";
467
+			sepNavVisRect = "{{0, 812}, {876, 581}}";
468
+			sepNavWindowFrame = "{{15, 42}, {1281, 785}}";
469
+		};
470
+	};
471
+	45967FF30832BF890009C12F /* GetMetadataForFile.m */ = {
472
+		uiCtxt = {
473
+			sepNavIntBoundsRect = "{{0, 0}, {876, 896}}";
474
+			sepNavSelRange = "{2046, 17}";
475
+			sepNavVisRect = "{{0, 315}, {876, 581}}";
476
+		};
477
+	};
478
+	45967FF50832BF890009C12F /* main.c */ = {
479
+		uiCtxt = {
480
+			sepNavIntBoundsRect = "{{0, 0}, {1240, 3136}}";
481
+			sepNavSelRange = "{859, 0}";
482
+			sepNavVisRect = "{{0, 0}, {1240, 714}}";
483
+		};
484
+	};
485
+	4596802C0832BFC50009C12F /* English */ = {
486
+		uiCtxt = {
487
+			sepNavIntBoundsRect = "{{0, 0}, {920, 597}}";
488
+			sepNavSelRange = "{44, 0}";
489
+			sepNavVisRect = "{{0, 0}, {920, 597}}";
490
+			sepNavWindowFrame = "{{15, 42}, {1281, 785}}";
491
+		};
492
+	};
493
+	4596802E0832BFC50009C12F /* English */ = {
494
+		uiCtxt = {
495
+			sepNavIntBoundsRect = "{{0, 0}, {920, 597}}";
496
+			sepNavSelRange = "{197, 0}";
497
+			sepNavVisRect = "{{0, 0}, {920, 597}}";
498
+		};
499
+	};
500
+	4596802F0832BFC50009C12F /* Info.plist */ = {
501
+		uiCtxt = {
502
+			sepNavIntBoundsRect = "{{0, 0}, {1240, 1008}}";
503
+			sepNavSelRange = "{0, 0}";
504
+			sepNavVisRect = "{{0, 0}, {1240, 536}}";
505
+		};
506
+	};
507
+	459680300832BFC50009C12F /* schema.xml */ = {
508
+		uiCtxt = {
509
+			sepNavIntBoundsRect = "{{0, 0}, {876, 365}}";
510
+			sepNavSelRange = "{325, 183}";
511
+			sepNavVisRect = "{{0, 0}, {876, 365}}";
512
+		};
513
+	};
514
+	45BC8E4608357EF500333919 /* PBXTextBookmark */ = {
515
+		isa = PBXTextBookmark;
516
+		fRef = 459680300832BFC50009C12F /* schema.xml */;
517
+		name = "schema.xml: 17";
518
+		rLen = 0;
519
+		rLoc = 838;
520
+		rType = 0;
521
+		vrLen = 722;
522
+		vrLoc = 0;
523
+	};
524
+	45C999EE084615DA00A9055D /* PBXTextBookmark */ = {
525
+		isa = PBXTextBookmark;
526
+		fRef = 45C999EF084615DA00A9055D /* py_curses.h */;
527
+		name = "(null): 1";
528
+		rLen = 0;
529
+		rLoc = 0;
530
+		rType = 0;
531
+		vrLen = 632;
532
+		vrLoc = 0;
533
+	};
534
+	45C999EF084615DA00A9055D /* py_curses.h */ = {
535
+		isa = PBXFileReference;
536
+		lastKnownFileType = sourcecode.c.h;
537
+		name = py_curses.h;
538
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/py_curses.h;
539
+		sourceTree = "<absolute>";
540
+	};
541
+	45C999F3084615DA00A9055D /* PBXTextBookmark */ = {
542
+		isa = PBXTextBookmark;
543
+		fRef = 45C999F4084615DA00A9055D /* py_curses.h */;
544
+		name = "(null): 1";
545
+		rLen = 0;
546
+		rLoc = 0;
547
+		rType = 0;
548
+		vrLen = 632;
549
+		vrLoc = 0;
550
+	};
551
+	45C999F4084615DA00A9055D /* py_curses.h */ = {
552
+		isa = PBXFileReference;
553
+		lastKnownFileType = sourcecode.c.h;
554
+		name = py_curses.h;
555
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/py_curses.h;
556
+		sourceTree = "<absolute>";
557
+	};
558
+	45C99B33084615F300A9055D /* PBXTextBookmark */ = {
559
+		isa = PBXTextBookmark;
560
+		fRef = 458F2EF30833F8D600CB6B11 /* objimpl.h */;
561
+		name = "#define PyObject_New(type, typeobj) \\";
562
+		rLen = 38;
563
+		rLoc = 6141;
564
+		rType = 0;
565
+		vrLen = 1070;
566
+		vrLoc = 5726;
567
+	};
568
+	45C99B470846166300A9055D /* PBXTextBookmark */ = {
569
+		isa = PBXTextBookmark;
570
+		fRef = 458F2EF30833F8D600CB6B11 /* objimpl.h */;
571
+		name = "#define PyObject_New(type, typeobj) \\";
572
+		rLen = 38;
573
+		rLoc = 6141;
574
+		rType = 0;
575
+		vrLen = 1342;
576
+		vrLoc = 5611;
577
+	};
578
+	45C99B55084616CC00A9055D /* PBXTextBookmark */ = {
579
+		isa = PBXTextBookmark;
580
+		fRef = 45967FED0832BF890009C12F /* CMetadataImporter.h */;
581
+		name = "CMetadataImporter.h: 10";
582
+		rLen = 0;
583
+		rLoc = 383;
584
+		rType = 0;
585
+		vrLen = 1683;
586
+		vrLoc = 0;
587
+	};
588
+	45D534BC083532990039C245 /* PBXTextBookmark */ = {
589
+		isa = PBXTextBookmark;
590
+		fRef = 4596802F0832BFC50009C12F /* Info.plist */;
591
+		name = "Info.plist: 1";
592
+		rLen = 0;
593
+		rLoc = 0;
594
+		rType = 0;
595
+		vrLen = 1169;
596
+		vrLoc = 0;
597
+	};
598
+	45D534BD083532990039C245 /* PBXTextBookmark */ = {
599
+		isa = PBXTextBookmark;
600
+		fRef = 4596802E0832BFC50009C12F /* English */;
601
+		name = "English: 5";
602
+		rLen = 0;
603
+		rLoc = 236;
604
+		rType = 0;
605
+		vrLen = 236;
606
+		vrLoc = 0;
607
+	};
608
+	45D7EFCF0847D39D0081FAA9 /* PBXTextBookmark */ = {
609
+		isa = PBXTextBookmark;
610
+		fRef = 459680300832BFC50009C12F /* schema.xml */;
611
+		name = "schema.xml: 7";
612
+		rLen = 183;
613
+		rLoc = 325;
614
+		rType = 0;
615
+		vrLen = 850;
616
+		vrLoc = 0;
617
+	};
618
+	45E30ABB08566C9E009FA00C /* PBXTextBookmark */ = {
619
+		isa = PBXTextBookmark;
620
+		fRef = 45967FF30832BF890009C12F /* GetMetadataForFile.m */;
621
+		name = CMetadataImporter;
622
+		rLen = 17;
623
+		rLoc = 2046;
624
+		rType = 0;
625
+		vrLen = 1287;
626
+		vrLoc = 1127;
627
+	};
628
+	45EB68AD08456F72003CD158 /* PBXTextBookmark */ = {
629
+		isa = PBXTextBookmark;
630
+		fRef = 4596802F0832BFC50009C12F /* Info.plist */;
631
+		name = "Info.plist: 1";
632
+		rLen = 0;
633
+		rLoc = 0;
634
+		rType = 0;
635
+		vrLen = 1169;
636
+		vrLoc = 0;
637
+	};
638
+	45EC556A0857C7B9008973A3 /* PBXTextBookmark */ = {
639
+		isa = PBXTextBookmark;
640
+		fRef = 459334CE0832C57700FF1A15 /* importer.py */;
641
+		name = "importer.py: 33";
642
+		rLen = 0;
643
+		rLoc = 1622;
644
+		rType = 0;
645
+		vrLen = 1854;
646
+		vrLoc = 0;
647
+	};
648
+	45F03AB40833CF6700CF8BA6 /* NSString.h */ = {
649
+		isa = PBXFileReference;
650
+		lastKnownFileType = sourcecode.c.h;
651
+		name = NSString.h;
652
+		path = /System/Library/Frameworks/Foundation.framework/Versions/C/Headers/NSString.h;
653
+		sourceTree = "<absolute>";
654
+	};
655
+	45F03ABF0833CFE400CF8BA6 /* unicodeobject.h */ = {
656
+		isa = PBXFileReference;
657
+		lastKnownFileType = sourcecode.c.h;
658
+		name = unicodeobject.h;
659
+		path = /System/Library/Frameworks/Python.framework/Versions/2.3/include/python2.3/unicodeobject.h;
660
+		sourceTree = "<absolute>";
661
+	};
662
+	45F03AD20833D0C400CF8BA6 /* PBXTextBookmark */ = {
663
+		isa = PBXTextBookmark;
664
+		fRef = 4596802C0832BFC50009C12F /* English */;
665
+		name = "English: 7";
666
+		rLen = 0;
667
+		rLoc = 293;
668
+		rType = 0;
669
+		vrLen = 289;
670
+		vrLoc = 0;
671
+	};
672
+	45F03B1D0833D2F300CF8BA6 /* PBXTextBookmark */ = {
673
+		isa = PBXTextBookmark;
674
+		fRef = 459334CE0832C57700FF1A15 /* importer.py */;
675
+		name = "importer.py: 39";
676
+		rLen = 0;
677
+		rLoc = 3511;
678
+		rType = 0;
679
+		vrLen = 552;
680
+		vrLoc = 561;
681
+	};
682
+	45F03B4D0833D4A400CF8BA6 /* PBXTextBookmark */ = {
683
+		isa = PBXTextBookmark;
684
+		fRef = 45F03ABF0833CFE400CF8BA6 /* unicodeobject.h */;
685
+		name = PyUnicodeUCS2_FromUnicode;
686
+		rLen = 25;
687
+		rLoc = 6672;
688
+		rType = 0;
689
+		vrLen = 1785;
690
+		vrLoc = 5748;
691
+	};
692
+	45F03B6E0833D54800CF8BA6 /* PBXTextBookmark */ = {
693
+		isa = PBXTextBookmark;
694
+		fRef = 45967FF30832BF890009C12F /* GetMetadataForFile.m */;
695
+		name = "GetMetadataForFile.m: 8";
696
+		rLen = 0;
697
+		rLoc = 1258;
698
+		rType = 0;
699
+		vrLen = 671;
700
+		vrLoc = 0;
701
+	};
702
+	45F03B770833D5B700CF8BA6 /* CFString.h */ = {
703
+		isa = PBXFileReference;
704
+		lastKnownFileType = sourcecode.c.h;
705
+		name = CFString.h;
706
+		path = /System/Library/Frameworks/CoreFoundation.framework/Versions/A/Headers/CFString.h;
707
+		sourceTree = "<absolute>";
708
+	};
709
+	45F03B8C0833D9A800CF8BA6 /* PBXTextBookmark */ = {
710
+		isa = PBXTextBookmark;
711
+		fRef = 45F03B770833D5B700CF8BA6 /* CFString.h */;
712
+		name = CFData;
713
+		rLen = 6;
714
+		rLoc = 15547;
715
+		rType = 0;
716
+		vrLen = 1494;
717
+		vrLoc = 14520;
718
+	};
719
+	45F03B8D0833D9A800CF8BA6 /* PBXTextBookmark */ = {
720
+		isa = PBXTextBookmark;
721
+		fRef = 45F03AB40833CF6700CF8BA6 /* NSString.h */;
722
+		name = CFStringEncoding;
723
+		rLen = 16;
724
+		rLoc = 1249;
725
+		rType = 0;
726
+		vrLen = 1221;
727
+		vrLoc = 1120;
728
+	};
729
+	45F9531B08319C400073B07B /* Executable */ = {
730
+		isa = PBXExecutable;
731
+		activeArgIndex = 1;
732
+		activeArgIndices = (
733
+			NO,
734
+			YES,
735
+		);
736
+		argumentStrings = (
737
+			"-d 2 \"/Users/schwa/Documents/WorkingDirectories/toxic/externals/public/Freeware/Python\\ Metadata\\ Importer/TestData/Test.py\"",
738
+			"-d 2 \"/Volumes/Home/Users/Shared/Stuff/Stuff/eBooks/diveintopython-5.4/py/openanything.py\"",
739
+		);
740
+		configStateDict = {
741
+		};
742
+		cppStopOnCatchEnabled = 0;
743
+		cppStopOnThrowEnabled = 0;
744
+		customDataFormattersEnabled = 1;
745
+		debuggerPlugin = GDBDebugging;
746
+		disassemblyDisplayState = 0;
747
+		dylibVariantSuffix = "";
748
+		enableDebugStr = 1;
749
+		environmentEntries = (
750
+		);
751
+		executableSystemSymbolLevel = 0;
752
+		executableUserSymbolLevel = 0;
753
+		launchableReference = 45F9531C08319C400073B07B /* mdimport */;
754
+		libgmallocEnabled = 0;
755
+		name = Executable;
756
+		savedGlobals = {
757
+		};
758
+		sourceDirectories = (
759
+		);
760
+	};
761
+	45F9531C08319C400073B07B /* mdimport */ = {
762
+		isa = PBXFileReference;
763
+		lastKnownFileType = "compiled.mach-o.executable";
764
+		name = mdimport;
765
+		path = /usr/bin/mdimport;
766
+		sourceTree = "<absolute>";
767
+	};
768
+	8D57630D048677EA00EA77CD /* Python Metadata Importer */ = {
769
+		activeExec = 0;
770
+	};
771
+}
0 772
new file mode 100644
... ...
@@ -0,0 +1,1587 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>ActivePerspectiveName</key>
6
+	<string>Project</string>
7
+	<key>AllowedModules</key>
8
+	<array>
9
+		<dict>
10
+			<key>BundleLoadPath</key>
11
+			<string></string>
12
+			<key>MaxInstances</key>
13
+			<string>n</string>
14
+			<key>Module</key>
15
+			<string>PBXSmartGroupTreeModule</string>
16
+			<key>Name</key>
17
+			<string>Groups and Files Outline View</string>
18
+		</dict>
19
+		<dict>
20
+			<key>BundleLoadPath</key>
21
+			<string></string>
22
+			<key>MaxInstances</key>
23
+			<string>n</string>
24
+			<key>Module</key>
25
+			<string>PBXNavigatorGroup</string>
26
+			<key>Name</key>
27
+			<string>Editor</string>
28
+		</dict>
29
+		<dict>
30
+			<key>BundleLoadPath</key>
31
+			<string></string>
32
+			<key>MaxInstances</key>
33
+			<string>n</string>
34
+			<key>Module</key>
35
+			<string>XCTaskListModule</string>
36
+			<key>Name</key>
37
+			<string>Task List</string>
38
+		</dict>
39
+		<dict>
40
+			<key>BundleLoadPath</key>
41
+			<string></string>
42
+			<key>MaxInstances</key>
43
+			<string>n</string>
44
+			<key>Module</key>
45
+			<string>XCDetailModule</string>
46
+			<key>Name</key>
47
+			<string>File and Smart Group Detail Viewer</string>
48
+		</dict>
49
+		<dict>
50
+			<key>BundleLoadPath</key>
51
+			<string></string>
52
+			<key>MaxInstances</key>
53
+			<string>1</string>
54
+			<key>Module</key>
55
+			<string>PBXBuildResultsModule</string>
56
+			<key>Name</key>
57
+			<string>Detailed Build Results Viewer</string>
58
+		</dict>
59
+		<dict>
60
+			<key>BundleLoadPath</key>
61
+			<string></string>
62
+			<key>MaxInstances</key>
63
+			<string>1</string>
64
+			<key>Module</key>
65
+			<string>PBXProjectFindModule</string>
66
+			<key>Name</key>
67
+			<string>Project Batch Find Tool</string>
68
+		</dict>
69
+		<dict>
70
+			<key>BundleLoadPath</key>
71
+			<string></string>
72
+			<key>MaxInstances</key>
73
+			<string>n</string>
74
+			<key>Module</key>
75
+			<string>PBXRunSessionModule</string>
76
+			<key>Name</key>
77
+			<string>Run Log</string>
78
+		</dict>
79
+		<dict>
80
+			<key>BundleLoadPath</key>
81
+			<string></string>
82
+			<key>MaxInstances</key>
83
+			<string>n</string>
84
+			<key>Module</key>
85
+			<string>PBXBookmarksModule</string>
86
+			<key>Name</key>
87
+			<string>Bookmarks Tool</string>
88
+		</dict>
89
+		<dict>
90
+			<key>BundleLoadPath</key>
91
+			<string></string>
92
+			<key>MaxInstances</key>
93
+			<string>n</string>
94
+			<key>Module</key>
95
+			<string>PBXClassBrowserModule</string>
96
+			<key>Name</key>
97
+			<string>Class Browser</string>
98
+		</dict>
99
+		<dict>
100
+			<key>BundleLoadPath</key>
101
+			<string></string>
102
+			<key>MaxInstances</key>
103
+			<string>n</string>
104
+			<key>Module</key>
105
+			<string>PBXCVSModule</string>
106
+			<key>Name</key>
107
+			<string>Source Code Control Tool</string>
108
+		</dict>
109
+		<dict>
110
+			<key>BundleLoadPath</key>
111
+			<string></string>
112
+			<key>MaxInstances</key>
113
+			<string>n</string>
114
+			<key>Module</key>
115
+			<string>PBXDebugBreakpointsModule</string>
116
+			<key>Name</key>
117
+			<string>Debug Breakpoints Tool</string>
118
+		</dict>
119
+		<dict>
120
+			<key>BundleLoadPath</key>
121
+			<string></string>
122
+			<key>MaxInstances</key>
123
+			<string>n</string>
124
+			<key>Module</key>
125
+			<string>XCDockableInspector</string>
126
+			<key>Name</key>
127
+			<string>Inspector</string>
128
+		</dict>
129
+		<dict>
130
+			<key>BundleLoadPath</key>
131
+			<string></string>
132
+			<key>MaxInstances</key>
133
+			<string>n</string>
134
+			<key>Module</key>
135
+			<string>PBXOpenQuicklyModule</string>
136
+			<key>Name</key>
137
+			<string>Open Quickly Tool</string>
138
+		</dict>
139
+		<dict>
140
+			<key>BundleLoadPath</key>
141
+			<string></string>
142
+			<key>MaxInstances</key>
143
+			<string>1</string>
144
+			<key>Module</key>
145
+			<string>PBXDebugSessionModule</string>
146
+			<key>Name</key>
147
+			<string>Debugger</string>
148
+		</dict>
149
+		<dict>
150
+			<key>BundleLoadPath</key>
151
+			<string></string>
152
+			<key>MaxInstances</key>
153
+			<string>1</string>
154
+			<key>Module</key>
155
+			<string>PBXDebugCLIModule</string>
156
+			<key>Name</key>
157
+			<string>Debug Console</string>
158
+		</dict>
159
+	</array>
160
+	<key>Description</key>
161
+	<string>AIODescriptionKey</string>
162
+	<key>DockingSystemVisible</key>
163
+	<false/>
164
+	<key>Extension</key>
165
+	<string>perspective</string>
166
+	<key>FavBarConfig</key>
167
+	<dict>
168
+		<key>PBXProjectModuleGUID</key>
169
+		<string>45796100083160E500A923A6</string>
170
+		<key>XCBarModuleItemNames</key>
171
+		<dict/>
172
+		<key>XCBarModuleItems</key>
173
+		<array/>
174
+	</dict>
175
+	<key>FirstTimeWindowDisplayed</key>
176
+	<false/>
177
+	<key>Identifier</key>
178
+	<string>com.apple.perspectives.project.default</string>
179
+	<key>MajorVersion</key>
180
+	<integer>33</integer>
181
+	<key>MinorVersion</key>
182
+	<integer>0</integer>
183
+	<key>Name</key>
184
+	<string>All-In-One</string>
185
+	<key>Notifications</key>
186
+	<array>
187
+		<dict>
188
+			<key>XCObserverAutoDisconnectKey</key>
189
+			<true/>
190
+			<key>XCObserverDefintionKey</key>
191
+			<dict>
192
+				<key>PBXStatusErrorsKey</key>
193
+				<integer>0</integer>
194
+			</dict>
195
+			<key>XCObserverFactoryKey</key>
196
+			<string>XCPerspectivesSpecificationIdentifier</string>
197
+			<key>XCObserverGUIDKey</key>
198
+			<string>XCObserverProjectIdentifier</string>
199
+			<key>XCObserverNotificationKey</key>
200
+			<string>PBXStatusBuildStateMessageNotification</string>
201
+			<key>XCObserverTargetKey</key>
202
+			<string>XCMainBuildResultsModuleGUID</string>
203
+			<key>XCObserverTriggerKey</key>
204
+			<string>awakenModuleWithObserver:</string>
205
+			<key>XCObserverValidationKey</key>
206
+			<dict>
207
+				<key>PBXStatusErrorsKey</key>
208
+				<integer>2</integer>
209
+			</dict>
210
+		</dict>
211
+		<dict>
212
+			<key>XCObserverAutoDisconnectKey</key>
213
+			<true/>
214
+			<key>XCObserverDefintionKey</key>
215
+			<dict>
216
+				<key>PBXStatusWarningsKey</key>
217
+				<integer>0</integer>
218
+			</dict>
219
+			<key>XCObserverFactoryKey</key>
220
+			<string>XCPerspectivesSpecificationIdentifier</string>
221
+			<key>XCObserverGUIDKey</key>
222
+			<string>XCObserverProjectIdentifier</string>
223
+			<key>XCObserverNotificationKey</key>
224
+			<string>PBXStatusBuildStateMessageNotification</string>
225
+			<key>XCObserverTargetKey</key>
226
+			<string>XCMainBuildResultsModuleGUID</string>
227
+			<key>XCObserverTriggerKey</key>
228
+			<string>awakenModuleWithObserver:</string>
229
+			<key>XCObserverValidationKey</key>
230
+			<dict>
231
+				<key>PBXStatusWarningsKey</key>
232
+				<integer>2</integer>
233
+			</dict>
234
+		</dict>
235
+	</array>
236
+	<key>OpenEditors</key>
237
+	<array/>
238
+	<key>PerspectiveWidths</key>
239
+	<array>
240
+		<integer>1280</integer>
241
+		<integer>1280</integer>
242
+		<integer>1280</integer>
243
+	</array>
244
+	<key>Perspectives</key>
245
+	<array>
246
+		<dict>
247
+			<key>ChosenToolbarItems</key>
248
+			<array>
249
+				<string>XCToolbarPerspectiveControl</string>
250
+				<string>NSToolbarSeparatorItem</string>
251
+				<string>buildOrClean</string>
252
+				<string>run</string>
253
+				<string>debug</string>
254
+				<string>com.apple.ide.PBXToolbarStopButton</string>
255
+				<string>NSToolbarFlexibleSpaceItem</string>
256
+				<string>active-target-popup</string>
257
+				<string>active-buildstyle-popup</string>
258
+				<string>com.apple.pbx.toolbar.searchfield</string>
259
+			</array>
260
+			<key>ControllerClassBaseName</key>
261
+			<string></string>
262
+			<key>IconName</key>
263
+			<string>WindowOfProject</string>
264
+			<key>Identifier</key>
265
+			<string>perspective.project</string>
266
+			<key>IsVertical</key>
267
+			<false/>
268
+			<key>Layout</key>
269
+			<array>
270
+				<dict>
271
+					<key>BecomeActive</key>
272
+					<true/>
273
+					<key>ContentConfiguration</key>
274
+					<dict>
275
+						<key>PBXBottomSmartGroupGIDs</key>
276
+						<array>
277
+							<string>1C37FBAC04509CD000000102</string>
278
+							<string>1C37FAAC04509CD000000102</string>
279
+							<string>1C08E77C0454961000C914BD</string>
280
+							<string>1C37FABC05509CD000000102</string>
281
+							<string>1C37FABC05539CD112110102</string>
282
+							<string>E2644B35053B69B200211256</string>
283
+							<string>1C37FABC04509CD000100104</string>
284
+							<string>1CC0EA4004350EF90044410B</string>
285
+							<string>1CC0EA4004350EF90041110B</string>
286
+						</array>
287
+						<key>PBXProjectModuleGUID</key>
288
+						<string>1CA23ED40692098700951B8B</string>
289
+						<key>PBXProjectModuleLabel</key>
290
+						<string>Files</string>
291
+						<key>PBXProjectStructureProvided</key>
292
+						<string>yes</string>
293
+						<key>PBXSmartGroupTreeModuleColumnData</key>
294
+						<dict>
295
+							<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
296
+							<array>
297
+								<real>22</real>
298
+								<real>22</real>
299
+								<real>291</real>
300
+							</array>
301
+							<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
302
+							<array>
303
+								<string>TargetStatusColumn</string>
304
+								<string>SCMStatusColumn</string>
305
+								<string>MainColumn</string>
306
+							</array>
307
+						</dict>
308
+						<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
309
+						<dict>
310
+							<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
311
+							<array>
312
+								<string>089C166AFE841209C02AAC07</string>
313
+								<string>45967FEC0832BF890009C12F</string>
314
+								<string>459334CD0832C57700FF1A15</string>
315
+								<string>1C37FBAC04509CD000000102</string>
316
+								<string>1C37FAAC04509CD000000102</string>
317
+							</array>
318
+							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
319
+							<array>
320
+								<array>
321
+									<integer>6</integer>
322
+									<integer>1</integer>
323
+									<integer>0</integer>
324
+								</array>
325
+							</array>
326
+							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
327
+							<string>{{0, 0}, {335, 676}}</string>
328
+						</dict>
329
+						<key>PBXTopSmartGroupGIDs</key>
330
+						<array/>
331
+						<key>XCIncludePerspectivesSwitch</key>
332
+						<false/>
333
+					</dict>
334
+					<key>GeometryConfiguration</key>
335
+					<dict>
336
+						<key>Frame</key>
337
+						<string>{{0, 0}, {352, 694}}</string>
338
+						<key>GroupTreeTableConfiguration</key>
339
+						<array>
340
+							<string>TargetStatusColumn</string>
341
+							<real>22</real>
342
+							<string>SCMStatusColumn</string>
343
+							<real>22</real>
344
+							<string>MainColumn</string>
345
+							<real>291</real>
346
+						</array>
347
+						<key>RubberWindowFrame</key>
348
+						<string>0 97 1280 735 0 0 1280 832 </string>
349
+					</dict>
350
+					<key>Module</key>
351
+					<string>PBXSmartGroupTreeModule</string>
352
+					<key>Proportion</key>
353
+					<string>352pt</string>
354
+				</dict>
355
+				<dict>
356
+					<key>Dock</key>
357
+					<array>
358
+						<dict>
359
+							<key>ContentConfiguration</key>
360
+							<dict>
361
+								<key>PBXProjectModuleGUID</key>
362
+								<string>457960F9083160E500A923A6</string>
363
+								<key>PBXProjectModuleLabel</key>
364
+								<string>CMetadataImporter.m</string>
365
+								<key>PBXSplitModuleInNavigatorKey</key>
366
+								<dict>
367
+									<key>Split0</key>
368
+									<dict>
369
+										<key>PBXProjectModuleGUID</key>
370
+										<string>457960FA083160E500A923A6</string>
371
+										<key>PBXProjectModuleLabel</key>
372
+										<string>CMetadataImporter.m</string>
373
+										<key>_historyCapacity</key>
374
+										<integer>0</integer>
375
+										<key>bookmark</key>
376
+										<string>457A2F5D085E1BF100480ED0</string>
377
+										<key>history</key>
378
+										<array>
379
+											<string>45F03B8C0833D9A800CF8BA6</string>
380
+											<string>458F2CD60833E82700CB6B11</string>
381
+											<string>458F2E970833F66B00CB6B11</string>
382
+											<string>458F2F1F0833FA0200CB6B11</string>
383
+											<string>458F2FD20833FE3D00CB6B11</string>
384
+											<string>458F30430834051C00CB6B11</string>
385
+											<string>45F03B4D0833D4A400CF8BA6</string>
386
+											<string>45F03B8D0833D9A800CF8BA6</string>
387
+											<string>458F2EFD0833F92A00CB6B11</string>
388
+											<string>458F3064083406A800CB6B11</string>
389
+											<string>458F314C0834233D00CB6B11</string>
390
+											<string>458F314D0834233D00CB6B11</string>
391
+											<string>45C999EE084615DA00A9055D</string>
392
+											<string>458F2FD00833FE3D00CB6B11</string>
393
+											<string>45EB68AD08456F72003CD158</string>
394
+											<string>45C99B470846166300A9055D</string>
395
+											<string>45C99B55084616CC00A9055D</string>
396
+											<string>459279A308478862005D51F9</string>
397
+											<string>459279A408478862005D51F9</string>
398
+											<string>45D7EFCF0847D39D0081FAA9</string>
399
+											<string>45E30ABB08566C9E009FA00C</string>
400
+											<string>45EC556A0857C7B9008973A3</string>
401
+											<string>45234A0E0859386A007977F8</string>
402
+										</array>
403
+										<key>prevStack</key>
404
+										<array>
405
+											<string>45F03AD20833D0C400CF8BA6</string>
406
+											<string>45F03B1D0833D2F300CF8BA6</string>
407
+											<string>45F03B6E0833D54800CF8BA6</string>
408
+											<string>458F2CDC0833E82700CB6B11</string>
409
+											<string>458F2E380833F04C00CB6B11</string>
410
+											<string>458F2E9F0833F66B00CB6B11</string>
411
+											<string>458F2EA20833F66B00CB6B11</string>
412
+											<string>458F2FF50834001500CB6B11</string>
413
+											<string>458F2ED20833F7B800CB6B11</string>
414
+											<string>45D534BC083532990039C245</string>
415
+											<string>45D534BD083532990039C245</string>
416
+											<string>45BC8E4608357EF500333919</string>
417
+											<string>45C999F3084615DA00A9055D</string>
418
+											<string>45C99B33084615F300A9055D</string>
419
+										</array>
420
+									</dict>
421
+									<key>SplitCount</key>
422
+									<string>1</string>
423
+								</dict>
424
+								<key>StatusBarVisibility</key>
425
+								<true/>
426
+								<key>XCSharingToken</key>
427
+								<string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string>
428
+							</dict>
429
+							<key>GeometryConfiguration</key>
430
+							<dict>
431
+								<key>Frame</key>
432
+								<string>{{0, 0}, {923, 598}}</string>
433
+								<key>RubberWindowFrame</key>
434
+								<string>0 97 1280 735 0 0 1280 832 </string>
435
+							</dict>
436
+							<key>Module</key>
437
+							<string>PBXNavigatorGroup</string>
438
+							<key>Proportion</key>
439
+							<string>598pt</string>
440
+						</dict>
441
+						<dict>
442
+							<key>Proportion</key>
443
+							<string>91pt</string>
444
+							<key>Tabs</key>
445
+							<array>
446
+								<dict>
447
+									<key>ContentConfiguration</key>
448
+									<dict>
449
+										<key>PBXProjectModuleGUID</key>
450
+										<string>1CA23EDF0692099D00951B8B</string>
451
+										<key>PBXProjectModuleLabel</key>
452
+										<string>Detail</string>
453
+									</dict>
454
+									<key>GeometryConfiguration</key>
455
+									<dict>
456
+										<key>Frame</key>
457
+										<string>{{10, 27}, {923, 64}}</string>
458
+										<key>RubberWindowFrame</key>
459
+										<string>0 97 1280 735 0 0 1280 832 </string>
460
+									</dict>
461
+									<key>Module</key>
462
+									<string>XCDetailModule</string>
463
+								</dict>
464
+								<dict>
465
+									<key>ContentConfiguration</key>
466
+									<dict>
467
+										<key>PBXProjectModuleGUID</key>
468
+										<string>1CA23EE00692099D00951B8B</string>
469
+										<key>PBXProjectModuleLabel</key>
470
+										<string>Project Find</string>
471
+									</dict>
472
+									<key>GeometryConfiguration</key>
473
+									<dict>
474
+										<key>Frame</key>
475
+										<string>{{10, 27}, {923, 284}}</string>
476
+									</dict>
477
+									<key>Module</key>
478
+									<string>PBXProjectFindModule</string>
479
+								</dict>
480
+								<dict>
481
+									<key>ContentConfiguration</key>
482
+									<dict>
483
+										<key>PBXProjectModuleGUID</key>
484
+										<string>1CA23EE10692099D00951B8B</string>
485
+										<key>PBXProjectModuleLabel</key>
486
+										<string>SCM Results</string>
487
+									</dict>
488
+									<key>GeometryConfiguration</key>
489
+									<dict>
490
+										<key>Frame</key>
491
+										<string>{{10, 27}, {1243, 232}}</string>
492
+									</dict>
493
+									<key>Module</key>
494
+									<string>PBXCVSModule</string>
495
+								</dict>
496
+							</array>
497
+						</dict>
498
+					</array>
499
+					<key>Proportion</key>
500
+					<string>923pt</string>
501
+				</dict>
502
+			</array>
503
+			<key>Name</key>
504
+			<string>Project</string>
505
+			<key>ServiceClasses</key>
506
+			<array>
507
+				<string>XCModuleDock</string>
508
+				<string>PBXSmartGroupTreeModule</string>
509
+				<string>XCModuleDock</string>
510
+				<string>PBXNavigatorGroup</string>
511
+				<string>XCDockableTabModule</string>
512
+				<string>XCDetailModule</string>
513
+				<string>PBXProjectFindModule</string>
514
+				<string>PBXCVSModule</string>
515
+			</array>
516
+			<key>TableOfContents</key>
517
+			<array>
518
+				<string>457A2F5E085E1BF100480ED0</string>
519
+				<string>1CA23ED40692098700951B8B</string>
520
+				<string>457A2F5F085E1BF100480ED0</string>
521
+				<string>457960F9083160E500A923A6</string>
522
+				<string>457A2F60085E1BF100480ED0</string>
523
+				<string>1CA23EDF0692099D00951B8B</string>
524
+				<string>1CA23EE00692099D00951B8B</string>
525
+				<string>1CA23EE10692099D00951B8B</string>
526
+			</array>
527
+			<key>ToolbarConfiguration</key>
528
+			<string>xcode.toolbar.config.default</string>
529
+		</dict>
530
+		<dict>
531
+			<key>ChosenToolbarItems</key>
532
+			<array>
533
+				<string>XCToolbarPerspectiveControl</string>
534
+				<string>NSToolbarSeparatorItem</string>
535
+				<string>buildOrClean</string>
536
+				<string>run</string>
537
+				<string>debug</string>
538
+				<string>com.apple.ide.PBXToolbarStopButton</string>
539
+				<string>NSToolbarFlexibleSpaceItem</string>
540
+				<string>servicesModulebuild</string>
541
+				<string>servicesModulerun</string>
542
+				<string>active-target-popup</string>
543
+				<string>active-buildstyle-popup</string>
544
+				<string>active-executable-popup</string>
545
+			</array>
546
+			<key>ControllerClassBaseName</key>
547
+			<string></string>
548
+			<key>IconName</key>
549
+			<string>BuildTabIcon</string>
550
+			<key>Identifier</key>
551
+			<string>perspective.build</string>
552
+			<key>IsVertical</key>
553
+			<false/>
554
+			<key>Layout</key>
555
+			<array>
556
+				<dict>
557
+					<key>ContentConfiguration</key>
558
+					<dict>
559
+						<key>PBXBottomSmartGroupGIDs</key>
560
+						<array/>
561
+						<key>PBXProjectModuleGUID</key>
562
+						<string>1CA23EE50692099D00951B8B</string>
563
+						<key>PBXProjectModuleLabel</key>
564
+						<string>Files</string>
565
+						<key>PBXProjectStructureProvided</key>
566
+						<string>yes</string>
567
+						<key>PBXSmartGroupTreeModuleColumnData</key>
568
+						<dict>
569
+							<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
570
+							<array>
571
+								<real>291</real>
572
+							</array>
573
+							<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
574
+							<array>
575
+								<string>MainColumn</string>
576
+							</array>
577
+						</dict>
578
+						<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
579
+						<dict>
580
+							<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
581
+							<array>
582
+								<string>089C166AFE841209C02AAC07</string>
583
+								<string>45967FEC0832BF890009C12F</string>
584
+								<string>459334CD0832C57700FF1A15</string>
585
+								<string>4596802A0832BFC50009C12F</string>
586
+								<string>089C1671FE841209C02AAC07</string>
587
+							</array>
588
+							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
589
+							<array>
590
+								<array>
591
+									<integer>8</integer>
592
+									<integer>7</integer>
593
+									<integer>0</integer>
594
+								</array>
595
+							</array>
596
+							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
597
+							<string>{{0, 0}, {291, 680}}</string>
598
+						</dict>
599
+						<key>PBXTopSmartGroupGIDs</key>
600
+						<array/>
601
+						<key>XCIncludePerspectivesSwitch</key>
602
+						<false/>
603
+					</dict>
604
+					<key>GeometryConfiguration</key>
605
+					<dict>
606
+						<key>Frame</key>
607
+						<string>{{0, 0}, {308, 698}}</string>
608
+						<key>GroupTreeTableConfiguration</key>
609
+						<array>
610
+							<string>MainColumn</string>
611
+							<real>291</real>
612
+						</array>
613
+					</dict>
614
+					<key>Module</key>
615
+					<string>PBXSmartGroupTreeModule</string>
616
+					<key>Proportion</key>
617
+					<string>308pt</string>
618
+				</dict>
619
+				<dict>
620
+					<key>Dock</key>
621
+					<array>
622
+						<dict>
623
+							<key>ContentConfiguration</key>
624
+							<dict>
625
+								<key>PBXProjectModuleGUID</key>
626
+								<string>457960F9083160E500A923A6</string>
627
+								<key>PBXProjectModuleLabel</key>
628
+								<string>importer.py</string>
629
+								<key>PBXSplitModuleInNavigatorKey</key>
630
+								<dict>
631
+									<key>Split0</key>
632
+									<dict>
633
+										<key>PBXProjectModuleGUID</key>
634
+										<string>457960FA083160E500A923A6</string>
635
+										<key>PBXProjectModuleLabel</key>
636
+										<string>importer.py</string>
637
+										<key>_historyCapacity</key>
638
+										<integer>0</integer>
639
+										<key>bookmark</key>
640
+										<string>45D7EFF10847D4640081FAA9</string>
641
+										<key>history</key>
642
+										<array>
643
+											<string>45F03B4D0833D4A400CF8BA6</string>
644
+											<string>45F03B8C0833D9A800CF8BA6</string>
645
+											<string>45F03B8D0833D9A800CF8BA6</string>
646
+											<string>458F2CD60833E82700CB6B11</string>
647
+											<string>458F2EFD0833F92A00CB6B11</string>
648
+											<string>458F2F1F0833FA0200CB6B11</string>
649
+											<string>458F2FD00833FE3D00CB6B11</string>
650
+											<string>458F2FD20833FE3D00CB6B11</string>
651
+											<string>458F30430834051C00CB6B11</string>
652
+											<string>458F3064083406A800CB6B11</string>
653
+											<string>458F314C0834233D00CB6B11</string>
654
+											<string>458F314D0834233D00CB6B11</string>
655
+											<string>45BC8E1608357EF500333919</string>
656
+											<string>45BC8E1A08357EF500333919</string>
657
+											<string>45BC8E1B08357EF500333919</string>
658
+											<string>45BC8E1C08357EF500333919</string>
659
+											<string>45BC8E1D08357EF500333919</string>
660
+											<string>45BC8E1F08357EF500333919</string>
661
+											<string>45BC8E2008357EF500333919</string>
662
+											<string>45BC8E2108357EF500333919</string>
663
+											<string>45BC8E2208357EF500333919</string>
664
+											<string>45BC8E2308357EF500333919</string>
665
+											<string>45BC8E2508357EF500333919</string>
666
+											<string>45BC8E2608357EF500333919</string>
667
+											<string>458F2CC60833E6AD00CB6B11</string>
668
+											<string>458F2E970833F66B00CB6B11</string>
669
+											<string>458F2F1E0833FA0200CB6B11</string>
670
+											<string>45DD4D550838FDCF00DFF6AF</string>
671
+											<string>45119FAB084404F000D34CC6</string>
672
+											<string>45EB68AD08456F72003CD158</string>
673
+											<string>45C9991D0846099800A9055D</string>
674
+											<string>45C999EC084615DA00A9055D</string>
675
+											<string>45C999EE084615DA00A9055D</string>
676
+											<string>45C99B470846166300A9055D</string>
677
+											<string>45C99B54084616CC00A9055D</string>
678
+											<string>45C99B55084616CC00A9055D</string>
679
+											<string>4534590108469ED7008D3E94</string>
680
+											<string>459279A308478862005D51F9</string>
681
+											<string>459279A408478862005D51F9</string>
682
+											<string>45D7EFC90847D3890081FAA9</string>
683
+											<string>45D7EFE10847D4120081FAA9</string>
684
+										</array>
685
+										<key>prevStack</key>
686
+										<array>
687
+											<string>45F03AD20833D0C400CF8BA6</string>
688
+											<string>45F03AD40833D0C400CF8BA6</string>
689
+											<string>45F03B1D0833D2F300CF8BA6</string>
690
+											<string>45F03B510833D4A400CF8BA6</string>
691
+											<string>45F03B6E0833D54800CF8BA6</string>
692
+											<string>45F03B930833D9A800CF8BA6</string>
693
+											<string>45F03B940833D9A800CF8BA6</string>
694
+											<string>458F2CCB0833E6AD00CB6B11</string>
695
+											<string>458F2CDC0833E82700CB6B11</string>
696
+											<string>458F2CFC0833E90600CB6B11</string>
697
+											<string>458F2D3E0833EC0300CB6B11</string>
698
+											<string>458F2D420833EC0300CB6B11</string>
699
+											<string>458F2DC20833EDB400CB6B11</string>
700
+											<string>458F2DC40833EDB400CB6B11</string>
701
+											<string>458F2E320833F04C00CB6B11</string>
702
+											<string>458F2E380833F04C00CB6B11</string>
703
+											<string>458F2E9F0833F66B00CB6B11</string>
704
+											<string>458F2EA20833F66B00CB6B11</string>
705
+											<string>458F2ED20833F7B800CB6B11</string>
706
+											<string>458F2F220833FA0200CB6B11</string>
707
+											<string>458F2F6B0833FBE700CB6B11</string>
708
+											<string>458F2FF50834001500CB6B11</string>
709
+											<string>458F3066083406A800CB6B11</string>
710
+											<string>458F2D430833EC0300CB6B11</string>
711
+											<string>458F31500834233D00CB6B11</string>
712
+											<string>45D534BC083532990039C245</string>
713
+											<string>45D534BD083532990039C245</string>
714
+											<string>45BC8E3808357EF500333919</string>
715
+											<string>45BC8E3A08357EF500333919</string>
716
+											<string>45BC8E4608357EF500333919</string>
717
+											<string>45C999F3084615DA00A9055D</string>
718
+											<string>45C99B33084615F300A9055D</string>
719
+											<string>45D7EFCB0847D3890081FAA9</string>
720
+										</array>
721
+									</dict>
722
+									<key>SplitCount</key>
723
+									<string>1</string>
724
+								</dict>
725
+								<key>StatusBarVisibility</key>
726
+								<true/>
727
+								<key>XCSharingToken</key>
728
+								<string>com.apple.Xcode.CommonNavigatorGroupSharingToken</string>
729
+							</dict>
730
+							<key>GeometryConfiguration</key>
731
+							<dict>
732
+								<key>Frame</key>
733
+								<string>{{0, 0}, {967, 321}}</string>
734
+							</dict>
735
+							<key>Module</key>
736
+							<string>PBXNavigatorGroup</string>
737
+							<key>Proportion</key>
738
+							<string>321pt</string>
739
+						</dict>
740
+						<dict>
741
+							<key>Proportion</key>
742
+							<string>372pt</string>
743
+							<key>Tabs</key>
744
+							<array>
745
+								<dict>
746
+									<key>ContentConfiguration</key>
747
+									<dict>
748
+										<key>PBXBuildLogShowsTranscriptDefaultKey</key>
749
+										<string>{{0, 5}, {967, 340}}</string>
750
+										<key>PBXProjectModuleGUID</key>
751
+										<string>XCMainBuildResultsModuleGUID</string>
752
+										<key>PBXProjectModuleLabel</key>
753
+										<string>Build</string>
754
+										<key>XCBuildResultsTrigger_Collapse</key>
755
+										<integer>1021</integer>
756
+										<key>XCBuildResultsTrigger_Open</key>
757
+										<integer>1013</integer>
758
+									</dict>
759
+									<key>GeometryConfiguration</key>
760
+									<dict>
761
+										<key>Frame</key>
762
+										<string>{{10, 27}, {967, 345}}</string>
763
+									</dict>
764
+									<key>Module</key>
765
+									<string>PBXBuildResultsModule</string>
766
+								</dict>
767
+								<dict>
768
+									<key>ContentConfiguration</key>
769
+									<dict>
770
+										<key>LauncherConfigVersion</key>
771
+										<string>3</string>
772
+										<key>PBXProjectModuleGUID</key>
773
+										<string>1CA23EE80692099D00951B8B</string>
774
+										<key>PBXProjectModuleLabel</key>
775
+										<string>Run</string>
776
+										<key>Runner</key>
777
+										<dict>
778
+											<key>HorizontalSplitView</key>
779
+											<dict>
780
+												<key>_collapsingFrameDimension</key>
781
+												<real>0.0</real>
782
+												<key>_indexOfCollapsedView</key>
783
+												<integer>0</integer>
784
+												<key>_percentageOfCollapsedView</key>
785
+												<real>0.0</real>
786
+												<key>isCollapsed</key>
787
+												<string>yes</string>
788
+												<key>sizes</key>
789
+												<array>
790
+													<string>{{0, 0}, {491, 168}}</string>
791
+													<string>{{0, 173}, {491, 270}}</string>
792
+												</array>
793
+											</dict>
794
+											<key>VerticalSplitView</key>
795
+											<dict>
796
+												<key>_collapsingFrameDimension</key>
797
+												<real>0.0</real>
798
+												<key>_indexOfCollapsedView</key>
799
+												<integer>0</integer>
800
+												<key>_percentageOfCollapsedView</key>
801
+												<real>0.0</real>
802
+												<key>isCollapsed</key>
803
+												<string>yes</string>
804
+												<key>sizes</key>
805
+												<array>
806
+													<string>{{0, 0}, {406, 443}}</string>
807
+													<string>{{411, 0}, {517, 443}}</string>
808
+												</array>
809
+											</dict>
810
+										</dict>
811
+									</dict>
812
+									<key>GeometryConfiguration</key>
813
+									<dict>
814
+										<key>Frame</key>
815
+										<string>{{10, 27}, {967, 52}}</string>
816
+									</dict>
817
+									<key>Module</key>
818
+									<string>PBXRunSessionModule</string>
819
+								</dict>
820
+							</array>
821
+						</dict>
822
+					</array>
823
+					<key>Proportion</key>
824
+					<string>967pt</string>
825
+				</dict>
826
+			</array>
827
+			<key>Name</key>
828
+			<string>Build</string>
829
+			<key>ServiceClasses</key>
830
+			<array>
831
+				<string>XCModuleDock</string>
832
+				<string>PBXSmartGroupTreeModule</string>
833
+				<string>XCModuleDock</string>
834
+				<string>PBXNavigatorGroup</string>
835
+				<string>XCDockableTabModule</string>
836
+				<string>PBXBuildResultsModule</string>
837
+				<string>PBXRunSessionModule</string>
838
+				<string>XCConsole</string>
839
+			</array>
840
+			<key>TableOfContents</key>
841
+			<array>
842
+				<string>45D7EFEC0847D4640081FAA9</string>
843
+				<string>1CA23EE50692099D00951B8B</string>
844
+				<string>45D7EFED0847D4640081FAA9</string>
845
+				<string>457960F9083160E500A923A6</string>
846
+				<string>45D7EFEE0847D4640081FAA9</string>
847
+				<string>XCMainBuildResultsModuleGUID</string>
848
+				<string>1CA23EE80692099D00951B8B</string>
849
+				<string>45D7EFEF0847D4640081FAA9</string>
850
+			</array>
851
+			<key>ToolbarConfiguration</key>
852
+			<string>xcode.toolbar.config.buildAndRun</string>
853
+		</dict>
854
+		<dict>
855
+			<key>ChosenToolbarItems</key>
856
+			<array>
857
+				<string>XCToolbarPerspectiveControl</string>
858
+				<string>NSToolbarSeparatorItem</string>
859
+				<string>build-and-debug</string>
860
+				<string>debug</string>
861
+				<string>NSToolbarSeparatorItem</string>
862
+				<string>debugger-fix-and-continue</string>
863
+				<string>debugger-restart-executable</string>
864
+				<string>debugger-pause</string>
865
+				<string>debugger-continue</string>
866
+				<string>debugger-step-over</string>
867
+				<string>debugger-step-into</string>
868
+				<string>debugger-step-out</string>
869
+				<string>debugger-step-instruction</string>
870
+				<string>debugger-next-instruction</string>
871
+				<string>NSToolbarSeparatorItem</string>
872
+				<string>debugger-show-console-window</string>
873
+				<string>servicesModulebreakpoints</string>
874
+			</array>
875
+			<key>ControllerClassBaseName</key>
876
+			<string>PBXDebugSessionModule</string>
877
+			<key>IconName</key>
878
+			<string>DebugTabIcon</string>
879
+			<key>Identifier</key>
880
+			<string>perspective.debug</string>
881
+			<key>IsVertical</key>
882
+			<true/>
883
+			<key>Layout</key>
884
+			<array>
885
+				<dict>
886
+					<key>ContentConfiguration</key>
887
+					<dict>
888
+						<key>PBXProjectModuleGUID</key>
889
+						<string>1CCC7628064C1048000F2A68</string>
890
+						<key>PBXProjectModuleLabel</key>
891
+						<string>Debugger Console</string>
892
+					</dict>
893
+					<key>GeometryConfiguration</key>
894
+					<dict>
895
+						<key>Frame</key>
896
+						<string>{{0, 0}, {1280, 250}}</string>
897
+					</dict>
898
+					<key>Module</key>
899
+					<string>PBXDebugCLIModule</string>
900
+					<key>Proportion</key>
901
+					<string>250pt</string>
902
+				</dict>
903
+				<dict>
904
+					<key>ContentConfiguration</key>
905
+					<dict>
906
+						<key>Debugger</key>
907
+						<dict>
908
+							<key>HorizontalSplitView</key>
909
+							<dict>
910
+								<key>_collapsingFrameDimension</key>
911
+								<real>0.0</real>
912
+								<key>_indexOfCollapsedView</key>
913
+								<integer>0</integer>
914
+								<key>_percentageOfCollapsedView</key>
915
+								<real>0.0</real>
916
+								<key>isCollapsed</key>
917
+								<string>yes</string>
918
+								<key>sizes</key>
919
+								<array>
920
+									<string>{{0, 0}, {609, 122}}</string>
921
+									<string>{{609, 0}, {671, 122}}</string>
922
+								</array>
923
+							</dict>
924
+							<key>VerticalSplitView</key>
925
+							<dict>
926
+								<key>_collapsingFrameDimension</key>
927
+								<real>0.0</real>
928
+								<key>_indexOfCollapsedView</key>
929
+								<integer>0</integer>
930
+								<key>_percentageOfCollapsedView</key>
931
+								<real>0.0</real>
932
+								<key>isCollapsed</key>
933
+								<string>yes</string>
934
+								<key>sizes</key>
935
+								<array>
936
+									<string>{{0, 0}, {1280, 122}}</string>
937
+									<string>{{0, 122}, {1280, 321}}</string>
938
+								</array>
939
+							</dict>
940
+						</dict>
941
+						<key>LauncherConfigVersion</key>
942
+						<string>8</string>
943
+						<key>PBXProjectModuleGUID</key>
944
+						<string>1CCC7629064C1048000F2A68</string>
945
+						<key>PBXProjectModuleLabel</key>
946
+						<string>Debug</string>
947
+					</dict>
948
+					<key>GeometryConfiguration</key>
949
+					<dict>
950
+						<key>DebugConsoleDrawerSize</key>
951
+						<string>{100, 120}</string>
952
+						<key>DebugConsoleVisible</key>
953
+						<string>None</string>
954
+						<key>DebugConsoleWindowFrame</key>
955
+						<string>{{200, 200}, {500, 300}}</string>
956
+						<key>DebugSTDIOWindowFrame</key>
957
+						<string>{{200, 200}, {500, 300}}</string>
958
+						<key>Frame</key>
959
+						<string>{{0, 255}, {1280, 443}}</string>
960
+					</dict>
961
+					<key>Module</key>
962
+					<string>PBXDebugSessionModule</string>
963
+					<key>Proportion</key>
964
+					<string>443pt</string>
965
+				</dict>
966
+			</array>
967
+			<key>Name</key>
968
+			<string>Debug</string>
969
+			<key>ServiceClasses</key>
970
+			<array>
971
+				<string>XCModuleDock</string>
972
+				<string>PBXDebugCLIModule</string>
973
+				<string>PBXDebugSessionModule</string>
974
+				<string>PBXDebugProcessAndThreadModule</string>
975
+				<string>PBXDebugProcessViewModule</string>
976
+				<string>PBXDebugThreadViewModule</string>
977
+				<string>PBXDebugStackFrameViewModule</string>
978
+				<string>PBXNavigatorGroup</string>
979
+				<string>XCConsole</string>
980
+			</array>
981
+			<key>TableOfContents</key>
982
+			<array>
983
+				<string>45C9992D084609AF00A9055D</string>
984
+				<string>1CCC7628064C1048000F2A68</string>
985
+				<string>1CCC7629064C1048000F2A68</string>
986
+				<string>45C9992E084609AF00A9055D</string>
987
+				<string>45C9992F084609AF00A9055D</string>
988
+				<string>45C99930084609AF00A9055D</string>
989
+				<string>45C99931084609AF00A9055D</string>
990
+				<string>457960F9083160E500A923A6</string>
991
+				<string>45C99932084609AF00A9055D</string>
992
+			</array>
993
+			<key>ToolbarConfiguration</key>
994
+			<string>xcode.toolbar.config.debug</string>
995
+		</dict>
996
+	</array>
997
+	<key>PerspectivesBarVisible</key>
998
+	<true/>
999
+	<key>ShelfIsVisible</key>
1000
+	<false/>
1001
+	<key>SourceDescription</key>
1002
+	<string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecification.xcperspec'</string>
1003
+	<key>StatusbarIsVisible</key>
1004
+	<true/>
1005
+	<key>TimeStamp</key>
1006
+	<real>140385254.649726</real>
1007
+	<key>ToolbarDisplayMode</key>
1008
+	<integer>1</integer>
1009
+	<key>ToolbarIsVisible</key>
1010
+	<true/>
1011
+	<key>ToolbarSizeMode</key>
1012
+	<integer>2</integer>
1013
+	<key>Type</key>
1014
+	<string>Perspectives</string>
1015
+	<key>UpdateMessage</key>
1016
+	<string></string>
1017
+	<key>WindowJustification</key>
1018
+	<integer>5</integer>
1019
+	<key>WindowOrderList</key>
1020
+	<array>
1021
+		<string>/Volumes/Home/Users/schwa/Documents/WorkingDirectories/toxic/externals/public/Freeware/Python Metadata Importer/Python Metadata Importer.xcodeproj</string>
1022
+	</array>
1023
+	<key>WindowString</key>
1024
+	<string>0 97 1280 735 0 0 1280 832 </string>
1025
+	<key>WindowTools</key>
1026
+	<array>
1027
+		<dict>
1028
+			<key>Identifier</key>
1029
+			<string>windowTool.find</string>
1030
+			<key>Layout</key>
1031
+			<array>
1032
+				<dict>
1033
+					<key>Dock</key>
1034
+					<array>
1035
+						<dict>
1036
+							<key>Dock</key>
1037
+							<array>
1038
+								<dict>
1039
+									<key>ContentConfiguration</key>
1040
+									<dict>
1041
+										<key>PBXProjectModuleGUID</key>
1042
+										<string>1CDD528C0622207200134675</string>
1043
+										<key>PBXProjectModuleLabel</key>
1044
+										<string>&lt;No Editor&gt;</string>
1045
+										<key>PBXSplitModuleInNavigatorKey</key>
1046
+										<dict>
1047
+											<key>Split0</key>
1048
+											<dict>
1049
+												<key>PBXProjectModuleGUID</key>
1050
+												<string>1CD0528D0623707200166675</string>
1051
+											</dict>
1052
+											<key>SplitCount</key>
1053
+											<string>1</string>
1054
+										</dict>
1055
+										<key>StatusBarVisibility</key>
1056
+										<integer>1</integer>
1057
+									</dict>
1058
+									<key>GeometryConfiguration</key>
1059
+									<dict>
1060
+										<key>Frame</key>
1061
+										<string>{{0, 0}, {781, 167}}</string>
1062
+										<key>RubberWindowFrame</key>
1063
+										<string>62 385 781 470 0 0 1440 878 </string>
1064
+									</dict>
1065
+									<key>Module</key>
1066
+									<string>PBXNavigatorGroup</string>
1067
+									<key>Proportion</key>
1068
+									<string>781pt</string>
1069
+								</dict>
1070
+							</array>
1071
+							<key>Proportion</key>
1072
+							<string>50%</string>
1073
+						</dict>
1074
+						<dict>
1075
+							<key>BecomeActive</key>
1076
+							<integer>1</integer>
1077
+							<key>ContentConfiguration</key>
1078
+							<dict>
1079
+								<key>PBXProjectModuleGUID</key>
1080
+								<string>1CD0528E0623707200166675</string>
1081
+								<key>PBXProjectModuleLabel</key>
1082
+								<string>Project Find</string>
1083
+							</dict>
1084
+							<key>GeometryConfiguration</key>
1085
+							<dict>
1086
+								<key>Frame</key>
1087
+								<string>{{8, 0}, {773, 254}}</string>
1088
+								<key>RubberWindowFrame</key>
1089
+								<string>62 385 781 470 0 0 1440 878 </string>
1090
+							</dict>
1091
+							<key>Module</key>
1092
+							<string>PBXProjectFindModule</string>
1093
+							<key>Proportion</key>
1094
+							<string>50%</string>
1095
+						</dict>
1096
+					</array>
1097
+					<key>Proportion</key>
1098
+					<string>428pt</string>
1099
+				</dict>
1100
+			</array>
1101
+			<key>Name</key>
1102
+			<string>Project Find</string>
1103
+			<key>ServiceClasses</key>
1104
+			<array>
1105
+				<string>PBXProjectFindModule</string>
1106
+			</array>
1107
+			<key>StatusbarIsVisible</key>
1108
+			<integer>1</integer>
1109
+			<key>TableOfContents</key>
1110
+			<array>
1111
+				<string>1C530D57069F1CE1000CFCEE</string>
1112
+				<string>1C530D58069F1CE1000CFCEE</string>
1113
+				<string>1C530D59069F1CE1000CFCEE</string>
1114
+				<string>1CDD528C0622207200134675</string>
1115
+				<string>1C530D5A069F1CE1000CFCEE</string>
1116
+				<string>1CE0B1FE06471DED0097A5F4</string>
1117
+				<string>1CD0528E0623707200166675</string>
1118
+			</array>
1119
+			<key>WindowString</key>
1120
+			<string>62 385 781 470 0 0 1440 878 </string>
1121
+			<key>WindowToolGUID</key>
1122
+			<string>1C530D57069F1CE1000CFCEE</string>
1123
+			<key>WindowToolIsVisible</key>
1124
+			<integer>0</integer>
1125
+		</dict>
1126
+		<dict>
1127
+			<key>Identifier</key>
1128
+			<string>windowTool.run</string>
1129
+			<key>Layout</key>
1130
+			<array>
1131
+				<dict>
1132
+					<key>Dock</key>
1133
+					<array>
1134
+						<dict>
1135
+							<key>ContentConfiguration</key>
1136
+							<dict>
1137
+								<key>LauncherConfigVersion</key>
1138
+								<string>3</string>
1139
+								<key>PBXProjectModuleGUID</key>
1140
+								<string>1CD0528B0623707200166675</string>
1141
+								<key>PBXProjectModuleLabel</key>
1142
+								<string>Run - cocoapp112 - cocoapp112</string>
1143
+								<key>Runner</key>
1144
+								<dict>
1145
+									<key>HorizontalSplitView</key>
1146
+									<dict>
1147
+										<key>_collapsingFrameDimension</key>
1148
+										<real>0.0</real>
1149
+										<key>_indexOfCollapsedView</key>
1150
+										<integer>0</integer>
1151
+										<key>_percentageOfCollapsedView</key>
1152
+										<real>0.0</real>
1153
+										<key>isCollapsed</key>
1154
+										<string>yes</string>
1155
+										<key>sizes</key>
1156
+										<array>
1157
+											<string>{{0, 0}, {365, 167}}</string>
1158
+											<string>{{0, 176}, {365, 267}}</string>
1159
+										</array>
1160
+									</dict>
1161
+									<key>VerticalSplitView</key>
1162
+									<dict>
1163
+										<key>_collapsingFrameDimension</key>
1164
+										<real>0.0</real>
1165
+										<key>_indexOfCollapsedView</key>
1166
+										<integer>0</integer>
1167
+										<key>_percentageOfCollapsedView</key>
1168
+										<real>0.0</real>
1169
+										<key>isCollapsed</key>
1170
+										<string>yes</string>
1171
+										<key>sizes</key>
1172
+										<array>
1173
+											<string>{{0, 0}, {405, 443}}</string>
1174
+											<string>{{414, 0}, {514, 443}}</string>
1175
+										</array>
1176
+									</dict>
1177
+								</dict>
1178
+							</dict>
1179
+							<key>GeometryConfiguration</key>
1180
+							<dict>
1181
+								<key>Frame</key>
1182
+								<string>{{0, 0}, {456, 192}}</string>
1183
+								<key>RubberWindowFrame</key>
1184
+								<string>741 130 456 234 0 0 1280 1002 </string>
1185
+							</dict>
1186
+							<key>Module</key>
1187
+							<string>PBXRunSessionModule</string>
1188
+							<key>Proportion</key>
1189
+							<string>192pt</string>
1190
+						</dict>
1191
+					</array>
1192
+					<key>Proportion</key>
1193
+					<string>192pt</string>
1194
+				</dict>
1195
+			</array>
1196
+			<key>Name</key>
1197
+			<string>Run Log</string>
1198
+			<key>ServiceClasses</key>
1199
+			<array>
1200
+				<string>PBXRunSessionModule</string>
1201
+			</array>
1202
+			<key>StatusbarIsVisible</key>
1203
+			<integer>1</integer>
1204
+			<key>TableOfContents</key>
1205
+			<array>
1206
+				<string>1C78EAAF065D492600B07095</string>
1207
+				<string>1C78EAB0065D492600B07095</string>
1208
+				<string>1CD0528B0623707200166675</string>
1209
+				<string>1C78EAB1065D492600B07095</string>
1210
+			</array>
1211
+			<key>ToolbarConfiguration</key>
1212
+			<string>xcode.toolbar.config.run</string>
1213
+			<key>WindowString</key>
1214
+			<string>741 130 456 234 0 0 1280 1002 </string>
1215
+		</dict>
1216
+		<dict>
1217
+			<key>Identifier</key>
1218
+			<string>windowTool.scm</string>
1219
+			<key>Layout</key>
1220
+			<array>
1221
+				<dict>
1222
+					<key>Dock</key>
1223
+					<array>
1224
+						<dict>
1225
+							<key>ContentConfiguration</key>
1226
+							<dict>
1227
+								<key>PBXProjectModuleGUID</key>
1228
+								<string>1C78EAB2065D492600B07095</string>
1229
+								<key>PBXProjectModuleLabel</key>
1230
+								<string>&lt;No Editor&gt;</string>
1231
+								<key>PBXSplitModuleInNavigatorKey</key>
1232
+								<dict>
1233
+									<key>Split0</key>
1234
+									<dict>
1235
+										<key>PBXProjectModuleGUID</key>
1236
+										<string>1C78EAB3065D492600B07095</string>
1237
+									</dict>
1238
+									<key>SplitCount</key>
1239
+									<string>1</string>
1240
+								</dict>
1241
+								<key>StatusBarVisibility</key>
1242
+								<integer>1</integer>
1243
+							</dict>
1244
+							<key>GeometryConfiguration</key>
1245
+							<dict>
1246
+								<key>Frame</key>
1247
+								<string>{{0, 0}, {452, 0}}</string>
1248
+								<key>RubberWindowFrame</key>
1249
+								<string>743 379 452 308 0 0 1280 1002 </string>
1250
+							</dict>
1251
+							<key>Module</key>
1252
+							<string>PBXNavigatorGroup</string>
1253
+							<key>Proportion</key>
1254
+							<string>0pt</string>
1255
+						</dict>
1256
+						<dict>
1257
+							<key>BecomeActive</key>
1258
+							<integer>1</integer>
1259
+							<key>ContentConfiguration</key>
1260
+							<dict>
1261
+								<key>PBXProjectModuleGUID</key>
1262
+								<string>1CD052920623707200166675</string>
1263
+								<key>PBXProjectModuleLabel</key>
1264
+								<string>SCM</string>
1265
+							</dict>
1266
+							<key>GeometryConfiguration</key>
1267
+							<dict>
1268
+								<key>ConsoleFrame</key>
1269
+								<string>{{0, 259}, {452, 0}}</string>
1270
+								<key>Frame</key>
1271
+								<string>{{0, 7}, {452, 259}}</string>
1272
+								<key>RubberWindowFrame</key>
1273
+								<string>743 379 452 308 0 0 1280 1002 </string>
1274
+								<key>TableConfiguration</key>
1275
+								<array>
1276
+									<string>Status</string>
1277
+									<real>30</real>
1278
+									<string>FileName</string>
1279
+									<real>199</real>
1280
+									<string>Path</string>
1281
+									<real>197.09500122070312</real>
1282
+								</array>
1283
+								<key>TableFrame</key>
1284
+								<string>{{0, 0}, {452, 250}}</string>
1285
+							</dict>
1286
+							<key>Module</key>
1287
+							<string>PBXCVSModule</string>
1288
+							<key>Proportion</key>
1289
+							<string>262pt</string>
1290
+						</dict>
1291
+					</array>
1292
+					<key>Proportion</key>
1293
+					<string>266pt</string>
1294
+				</dict>
1295
+			</array>
1296
+			<key>Name</key>
1297
+			<string>SCM</string>
1298
+			<key>ServiceClasses</key>
1299
+			<array>
1300
+				<string>PBXCVSModule</string>
1301
+			</array>
1302
+			<key>StatusbarIsVisible</key>
1303
+			<integer>1</integer>
1304
+			<key>TableOfContents</key>
1305
+			<array>
1306
+				<string>1C78EAB4065D492600B07095</string>
1307
+				<string>1C78EAB5065D492600B07095</string>
1308
+				<string>1C78EAB2065D492600B07095</string>
1309
+				<string>1CD052920623707200166675</string>
1310
+			</array>
1311
+			<key>ToolbarConfiguration</key>
1312
+			<string>xcode.toolbar.config.scm</string>
1313
+			<key>WindowString</key>
1314
+			<string>743 379 452 308 0 0 1280 1002 </string>
1315
+		</dict>
1316
+		<dict>
1317
+			<key>Identifier</key>
1318
+			<string>windowTool.breakpoints</string>
1319
+			<key>IsVertical</key>
1320
+			<false/>
1321
+			<key>Layout</key>
1322
+			<array>
1323
+				<dict>
1324
+					<key>Dock</key>
1325
+					<array>
1326
+						<dict>
1327
+							<key>BecomeActive</key>
1328
+							<true/>
1329
+							<key>ContentConfiguration</key>
1330
+							<dict>
1331
+								<key>PBXBottomSmartGroupGIDs</key>
1332
+								<array>
1333
+									<string>1C77FABC04509CD000000102</string>
1334
+								</array>
1335
+								<key>PBXProjectModuleGUID</key>
1336
+								<string>1CE0B1FE06471DED0097A5F4</string>
1337
+								<key>PBXProjectModuleLabel</key>
1338
+								<string>Files</string>
1339
+								<key>PBXProjectStructureProvided</key>
1340
+								<string>no</string>
1341
+								<key>PBXSmartGroupTreeModuleColumnData</key>
1342
+								<dict>
1343
+									<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
1344
+									<array>
1345
+										<real>168</real>
1346
+									</array>
1347
+									<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
1348
+									<array>
1349
+										<string>MainColumn</string>
1350
+									</array>
1351
+								</dict>
1352
+								<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
1353
+								<dict>
1354
+									<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
1355
+									<array>
1356
+										<string>1C77FABC04509CD000000102</string>
1357
+									</array>
1358
+									<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
1359
+									<array>
1360
+										<array>
1361
+											<integer>0</integer>
1362
+										</array>
1363
+									</array>
1364
+									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
1365
+									<string>{{0, 0}, {168, 350}}</string>
1366
+								</dict>
1367
+								<key>PBXTopSmartGroupGIDs</key>
1368
+								<array/>
1369
+								<key>XCIncludePerspectivesSwitch</key>
1370
+								<false/>
1371
+							</dict>
1372
+							<key>GeometryConfiguration</key>
1373
+							<dict>
1374
+								<key>Frame</key>
1375
+								<string>{{0, 0}, {185, 368}}</string>
1376
+								<key>GroupTreeTableConfiguration</key>
1377
+								<array>
1378
+									<string>MainColumn</string>
1379
+									<real>168</real>
1380
+								</array>
1381
+								<key>RubberWindowFrame</key>
1382
+								<string>315 424 744 409 0 0 1440 878 </string>
1383
+							</dict>
1384
+							<key>Module</key>
1385
+							<string>PBXSmartGroupTreeModule</string>
1386
+							<key>Proportion</key>
1387
+							<string>185pt</string>
1388
+						</dict>
1389
+						<dict>
1390
+							<key>ContentConfiguration</key>
1391
+							<dict>
1392
+								<key>PBXProjectModuleGUID</key>
1393
+								<string>1CA1AED706398EBD00589147</string>
1394
+								<key>PBXProjectModuleLabel</key>
1395
+								<string>Detail</string>
1396
+							</dict>
1397
+							<key>GeometryConfiguration</key>
1398
+							<dict>
1399
+								<key>Frame</key>
1400
+								<string>{{190, 0}, {554, 368}}</string>
1401
+								<key>RubberWindowFrame</key>
1402
+								<string>315 424 744 409 0 0 1440 878 </string>
1403
+							</dict>
1404
+							<key>Module</key>
1405
+							<string>XCDetailModule</string>
1406
+							<key>Proportion</key>
1407
+							<string>554pt</string>
1408
+						</dict>
1409
+					</array>
1410
+					<key>Proportion</key>
1411
+					<string>368pt</string>
1412
+				</dict>
1413
+			</array>
1414
+			<key>MajorVersion</key>
1415
+			<integer>2</integer>
1416
+			<key>MinorVersion</key>
1417
+			<integer>0</integer>
1418
+			<key>Name</key>
1419
+			<string>Breakpoints</string>
1420
+			<key>ServiceClasses</key>
1421
+			<array>
1422
+				<string>PBXSmartGroupTreeModule</string>
1423
+				<string>XCDetailModule</string>
1424
+			</array>
1425
+			<key>StatusbarIsVisible</key>
1426
+			<true/>
1427
+			<key>TableOfContents</key>
1428
+			<array>
1429
+				<string>1CDDB66807F98D9800BB5817</string>
1430
+				<string>1CDDB66907F98D9800BB5817</string>
1431
+				<string>1CE0B1FE06471DED0097A5F4</string>
1432
+				<string>1CA1AED706398EBD00589147</string>
1433
+			</array>
1434
+			<key>ToolbarConfiguration</key>
1435
+			<string>xcode.toolbar.config.breakpoints</string>
1436
+			<key>WindowString</key>
1437
+			<string>315 424 744 409 0 0 1440 878 </string>
1438
+			<key>WindowToolGUID</key>
1439
+			<string>1CDDB66807F98D9800BB5817</string>
1440
+			<key>WindowToolIsVisible</key>
1441
+			<true/>
1442
+		</dict>
1443
+		<dict>
1444
+			<key>Identifier</key>
1445
+			<string>windowTool.debugAnimator</string>
1446
+			<key>Layout</key>
1447
+			<array>
1448
+				<dict>
1449
+					<key>Dock</key>
1450
+					<array>
1451
+						<dict>
1452
+							<key>Module</key>
1453
+							<string>PBXNavigatorGroup</string>
1454
+							<key>Proportion</key>
1455
+							<string>100%</string>
1456
+						</dict>
1457
+					</array>
1458
+					<key>Proportion</key>
1459
+					<string>100%</string>
1460
+				</dict>
1461
+			</array>
1462
+			<key>Name</key>
1463
+			<string>Debug Visualizer</string>
1464
+			<key>ServiceClasses</key>
1465
+			<array>
1466
+				<string>PBXNavigatorGroup</string>
1467
+			</array>
1468
+			<key>StatusbarIsVisible</key>
1469
+			<true/>
1470
+			<key>ToolbarConfiguration</key>
1471
+			<string>xcode.toolbar.config.debugAnimator</string>
1472
+			<key>WindowString</key>
1473
+			<string>100 100 700 500 0 0 1280 1002 </string>
1474
+		</dict>
1475
+		<dict>
1476
+			<key>Identifier</key>
1477
+			<string>windowTool.bookmarks</string>
1478
+			<key>Layout</key>
1479
+			<array>
1480
+				<dict>
1481
+					<key>Dock</key>
1482
+					<array>
1483
+						<dict>
1484
+							<key>Module</key>
1485
+							<string>PBXBookmarksModule</string>
1486
+							<key>Proportion</key>
1487
+							<string>166pt</string>
1488
+						</dict>
1489
+					</array>
1490
+					<key>Proportion</key>
1491
+					<string>166pt</string>
1492
+				</dict>
1493
+			</array>
1494
+			<key>Name</key>
1495
+			<string>Bookmarks</string>
1496
+			<key>ServiceClasses</key>
1497
+			<array>
1498
+				<string>PBXBookmarksModule</string>
1499
+			</array>
1500
+			<key>StatusbarIsVisible</key>
1501
+			<integer>0</integer>
1502
+			<key>WindowString</key>
1503
+			<string>538 42 401 187 0 0 1280 1002 </string>
1504
+		</dict>
1505
+		<dict>
1506
+			<key>Identifier</key>
1507
+			<string>windowTool.classBrowser</string>
1508
+			<key>Layout</key>
1509
+			<array>
1510
+				<dict>
1511
+					<key>Dock</key>
1512
+					<array>
1513
+						<dict>
1514
+							<key>BecomeActive</key>
1515
+							<integer>1</integer>
1516
+							<key>ContentConfiguration</key>
1517
+							<dict>
1518
+								<key>OptionsSetName</key>
1519
+								<string>Hierarchy, all classes</string>
1520
+								<key>PBXProjectModuleGUID</key>
1521
+								<string>1CA6456E063B45B4001379D8</string>
1522
+								<key>PBXProjectModuleLabel</key>
1523
+								<string>Class Browser - NSObject</string>
1524
+							</dict>
1525
+							<key>GeometryConfiguration</key>
1526
+							<dict>
1527
+								<key>ClassesFrame</key>
1528
+								<string>{{0, 0}, {369, 96}}</string>
1529
+								<key>ClassesTreeTableConfiguration</key>
1530
+								<array>
1531
+									<string>PBXClassNameColumnIdentifier</string>
1532
+									<real>208</real>
1533
+									<string>PBXClassBookColumnIdentifier</string>
1534
+									<real>22</real>
1535
+								</array>
1536
+								<key>Frame</key>
1537
+								<string>{{0, 0}, {616, 353}}</string>
1538
+								<key>MembersFrame</key>
1539
+								<string>{{0, 105}, {369, 395}}</string>
1540
+								<key>MembersTreeTableConfiguration</key>
1541
+								<array>
1542
+									<string>PBXMemberTypeIconColumnIdentifier</string>
1543
+									<real>22</real>
1544
+									<string>PBXMemberNameColumnIdentifier</string>
1545
+									<real>216</real>
1546
+									<string>PBXMemberTypeColumnIdentifier</string>
1547
+									<real>94</real>
1548
+									<string>PBXMemberBookColumnIdentifier</string>
1549
+									<real>22</real>
1550
+								</array>
1551
+								<key>PBXModuleWindowStatusBarHidden2</key>
1552
+								<integer>1</integer>
1553
+								<key>RubberWindowFrame</key>
1554
+								<string>597 125 616 374 0 0 1280 1002 </string>
1555
+							</dict>
1556
+							<key>Module</key>
1557
+							<string>PBXClassBrowserModule</string>
1558
+							<key>Proportion</key>
1559
+							<string>354pt</string>
1560
+						</dict>
1561
+					</array>
1562
+					<key>Proportion</key>
1563
+					<string>354pt</string>
1564
+				</dict>
1565
+			</array>
1566
+			<key>Name</key>
1567
+			<string>Class Browser</string>
1568
+			<key>ServiceClasses</key>
1569
+			<array>
1570
+				<string>PBXClassBrowserModule</string>
1571
+			</array>
1572
+			<key>StatusbarIsVisible</key>
1573
+			<integer>0</integer>
1574
+			<key>TableOfContents</key>
1575
+			<array>
1576
+				<string>1C78EABA065D492600B07095</string>
1577
+				<string>1C78EABB065D492600B07095</string>
1578
+				<string>1CA6456E063B45B4001379D8</string>
1579
+			</array>
1580
+			<key>ToolbarConfiguration</key>
1581
+			<string>xcode.toolbar.config.classbrowser</string>
1582
+			<key>WindowString</key>
1583
+			<string>597 125 616 374 0 0 1280 1002 </string>
1584
+		</dict>
1585
+	</array>
1586
+</dict>
1587
+</plist>
0 1588
new file mode 100644
... ...
@@ -0,0 +1,1343 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>ActivePerspectiveName</key>
6
+	<string>Project</string>
7
+	<key>AllowedModules</key>
8
+	<array>
9
+		<dict>
10
+			<key>BundleLoadPath</key>
11
+			<string></string>
12
+			<key>MaxInstances</key>
13
+			<string>n</string>
14
+			<key>Module</key>
15
+			<string>PBXSmartGroupTreeModule</string>
16
+			<key>Name</key>
17
+			<string>Groups and Files Outline View</string>
18
+		</dict>
19
+		<dict>
20
+			<key>BundleLoadPath</key>
21
+			<string></string>
22
+			<key>MaxInstances</key>
23
+			<string>n</string>
24
+			<key>Module</key>
25
+			<string>PBXNavigatorGroup</string>
26
+			<key>Name</key>
27
+			<string>Editor</string>
28
+		</dict>
29
+		<dict>
30
+			<key>BundleLoadPath</key>
31
+			<string></string>
32
+			<key>MaxInstances</key>
33
+			<string>n</string>
34
+			<key>Module</key>
35
+			<string>XCTaskListModule</string>
36
+			<key>Name</key>
37
+			<string>Task List</string>
38
+		</dict>
39
+		<dict>
40
+			<key>BundleLoadPath</key>
41
+			<string></string>
42
+			<key>MaxInstances</key>
43
+			<string>n</string>
44
+			<key>Module</key>
45
+			<string>XCDetailModule</string>
46
+			<key>Name</key>
47
+			<string>File and Smart Group Detail Viewer</string>
48
+		</dict>
49
+		<dict>
50
+			<key>BundleLoadPath</key>
51
+			<string></string>
52
+			<key>MaxInstances</key>
53
+			<string>1</string>
54
+			<key>Module</key>
55
+			<string>PBXBuildResultsModule</string>
56
+			<key>Name</key>
57
+			<string>Detailed Build Results Viewer</string>
58
+		</dict>
59
+		<dict>
60
+			<key>BundleLoadPath</key>
61
+			<string></string>
62
+			<key>MaxInstances</key>
63
+			<string>1</string>
64
+			<key>Module</key>
65
+			<string>PBXProjectFindModule</string>
66
+			<key>Name</key>
67
+			<string>Project Batch Find Tool</string>
68
+		</dict>
69
+		<dict>
70
+			<key>BundleLoadPath</key>
71
+			<string></string>
72
+			<key>MaxInstances</key>
73
+			<string>n</string>
74
+			<key>Module</key>
75
+			<string>PBXRunSessionModule</string>
76
+			<key>Name</key>
77
+			<string>Run Log</string>
78
+		</dict>
79
+		<dict>
80
+			<key>BundleLoadPath</key>
81
+			<string></string>
82
+			<key>MaxInstances</key>
83
+			<string>n</string>
84
+			<key>Module</key>
85
+			<string>PBXBookmarksModule</string>
86
+			<key>Name</key>
87
+			<string>Bookmarks Tool</string>
88
+		</dict>
89
+		<dict>
90
+			<key>BundleLoadPath</key>
91
+			<string></string>
92
+			<key>MaxInstances</key>
93
+			<string>n</string>
94
+			<key>Module</key>
95
+			<string>PBXClassBrowserModule</string>
96
+			<key>Name</key>
97
+			<string>Class Browser</string>
98
+		</dict>
99
+		<dict>
100
+			<key>BundleLoadPath</key>
101
+			<string></string>
102
+			<key>MaxInstances</key>
103
+			<string>n</string>
104
+			<key>Module</key>
105
+			<string>PBXCVSModule</string>
106
+			<key>Name</key>
107
+			<string>Source Code Control Tool</string>
108
+		</dict>
109
+		<dict>
110
+			<key>BundleLoadPath</key>
111
+			<string></string>
112
+			<key>MaxInstances</key>
113
+			<string>n</string>
114
+			<key>Module</key>
115
+			<string>PBXDebugBreakpointsModule</string>
116
+			<key>Name</key>
117
+			<string>Debug Breakpoints Tool</string>
118
+		</dict>
119
+		<dict>
120
+			<key>BundleLoadPath</key>
121
+			<string></string>
122
+			<key>MaxInstances</key>
123
+			<string>n</string>
124
+			<key>Module</key>
125
+			<string>XCDockableInspector</string>
126
+			<key>Name</key>
127
+			<string>Inspector</string>
128
+		</dict>
129
+		<dict>
130
+			<key>BundleLoadPath</key>
131
+			<string></string>
132
+			<key>MaxInstances</key>
133
+			<string>n</string>
134
+			<key>Module</key>
135
+			<string>PBXOpenQuicklyModule</string>
136
+			<key>Name</key>
137
+			<string>Open Quickly Tool</string>
138
+		</dict>
139
+		<dict>
140
+			<key>BundleLoadPath</key>
141
+			<string></string>
142
+			<key>MaxInstances</key>
143
+			<string>1</string>
144
+			<key>Module</key>
145
+			<string>PBXDebugSessionModule</string>
146
+			<key>Name</key>
147
+			<string>Debugger</string>
148
+		</dict>
149
+		<dict>
150
+			<key>BundleLoadPath</key>
151
+			<string></string>
152
+			<key>MaxInstances</key>
153
+			<string>1</string>
154
+			<key>Module</key>
155
+			<string>PBXDebugCLIModule</string>
156
+			<key>Name</key>
157
+			<string>Debug Console</string>
158
+		</dict>
159
+	</array>
160
+	<key>Description</key>
161
+	<string>DefaultDescriptionKey</string>
162
+	<key>DockingSystemVisible</key>
163
+	<false/>
164
+	<key>Extension</key>
165
+	<string>mode1</string>
166
+	<key>FavBarConfig</key>
167
+	<dict>
168
+		<key>PBXProjectModuleGUID</key>
169
+		<string>DE75AD1F08CD1731008AC2B5</string>
170
+		<key>XCBarModuleItemNames</key>
171
+		<dict/>
172
+		<key>XCBarModuleItems</key>
173
+		<array/>
174
+	</dict>
175
+	<key>FirstTimeWindowDisplayed</key>
176
+	<false/>
177
+	<key>Identifier</key>
178
+	<string>com.apple.perspectives.project.mode1</string>
179
+	<key>MajorVersion</key>
180
+	<integer>31</integer>
181
+	<key>MinorVersion</key>
182
+	<integer>1</integer>
183
+	<key>Name</key>
184
+	<string>Default</string>
185
+	<key>Notifications</key>
186
+	<array/>
187
+	<key>OpenEditors</key>
188
+	<array/>
189
+	<key>PerspectiveWidths</key>
190
+	<array>
191
+		<integer>-1</integer>
192
+		<integer>-1</integer>
193
+	</array>
194
+	<key>Perspectives</key>
195
+	<array>
196
+		<dict>
197
+			<key>ChosenToolbarItems</key>
198
+			<array>
199
+				<string>active-target-popup</string>
200
+				<string>action</string>
201
+				<string>NSToolbarFlexibleSpaceItem</string>
202
+				<string>buildOrClean</string>
203
+				<string>build-and-runOrDebug</string>
204
+				<string>com.apple.ide.PBXToolbarStopButton</string>
205
+				<string>get-info</string>
206
+				<string>toggle-editor</string>
207
+				<string>NSToolbarFlexibleSpaceItem</string>
208
+				<string>com.apple.pbx.toolbar.searchfield</string>
209
+			</array>
210
+			<key>ControllerClassBaseName</key>
211
+			<string></string>
212
+			<key>IconName</key>
213
+			<string>WindowOfProjectWithEditor</string>
214
+			<key>Identifier</key>
215
+			<string>perspective.project</string>
216
+			<key>IsVertical</key>
217
+			<false/>
218
+			<key>Layout</key>
219
+			<array>
220
+				<dict>
221
+					<key>BecomeActive</key>
222
+					<true/>
223
+					<key>ContentConfiguration</key>
224
+					<dict>
225
+						<key>PBXBottomSmartGroupGIDs</key>
226
+						<array>
227
+							<string>1C37FBAC04509CD000000102</string>
228
+							<string>1C37FAAC04509CD000000102</string>
229
+							<string>1C08E77C0454961000C914BD</string>
230
+							<string>1C37FABC05509CD000000102</string>
231
+							<string>1C37FABC05539CD112110102</string>
232
+							<string>E2644B35053B69B200211256</string>
233
+							<string>1C37FABC04509CD000100104</string>
234
+							<string>1CC0EA4004350EF90044410B</string>
235
+							<string>1CC0EA4004350EF90041110B</string>
236
+						</array>
237
+						<key>PBXProjectModuleGUID</key>
238
+						<string>1CE0B1FE06471DED0097A5F4</string>
239
+						<key>PBXProjectModuleLabel</key>
240
+						<string>Files</string>
241
+						<key>PBXProjectStructureProvided</key>
242
+						<string>yes</string>
243
+						<key>PBXSmartGroupTreeModuleColumnData</key>
244
+						<dict>
245
+							<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
246
+							<array>
247
+								<real>226</real>
248
+							</array>
249
+							<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
250
+							<array>
251
+								<string>MainColumn</string>
252
+							</array>
253
+						</dict>
254
+						<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
255
+						<dict>
256
+							<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
257
+							<array>
258
+								<string>089C166AFE841209C02AAC07</string>
259
+								<string>DE75ACFD08CD1494008AC2B5</string>
260
+								<string>45967FEC0832BF890009C12F</string>
261
+								<string>4596802A0832BFC50009C12F</string>
262
+								<string>1C37FBAC04509CD000000102</string>
263
+								<string>1C37FAAC04509CD000000102</string>
264
+								<string>1C37FABC05509CD000000102</string>
265
+							</array>
266
+							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
267
+							<array>
268
+								<array>
269
+									<integer>17</integer>
270
+									<integer>15</integer>
271
+									<integer>0</integer>
272
+								</array>
273
+							</array>
274
+							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
275
+							<string>{{0, 0}, {226, 556}}</string>
276
+						</dict>
277
+						<key>PBXTopSmartGroupGIDs</key>
278
+						<array/>
279
+						<key>XCIncludePerspectivesSwitch</key>
280
+						<true/>
281
+						<key>XCSharingToken</key>
282
+						<string>com.apple.Xcode.GFSharingToken</string>
283
+					</dict>
284
+					<key>GeometryConfiguration</key>
285
+					<dict>
286
+						<key>Frame</key>
287
+						<string>{{0, 0}, {243, 574}}</string>
288
+						<key>GroupTreeTableConfiguration</key>
289
+						<array>
290
+							<string>MainColumn</string>
291
+							<real>226</real>
292
+						</array>
293
+						<key>RubberWindowFrame</key>
294
+						<string>523 411 802 615 0 0 1680 1028 </string>
295
+					</dict>
296
+					<key>Module</key>
297
+					<string>PBXSmartGroupTreeModule</string>
298
+					<key>Proportion</key>
299
+					<string>243pt</string>
300
+				</dict>
301
+				<dict>
302
+					<key>Dock</key>
303
+					<array>
304
+						<dict>
305
+							<key>ContentConfiguration</key>
306
+							<dict>
307
+								<key>PBXProjectModuleGUID</key>
308
+								<string>1CE0B20306471E060097A5F4</string>
309
+								<key>PBXProjectModuleLabel</key>
310
+								<string></string>
311
+								<key>PBXSplitModuleInNavigatorKey</key>
312
+								<dict>
313
+									<key>Split0</key>
314
+									<dict>
315
+										<key>PBXProjectModuleGUID</key>
316
+										<string>1CE0B20406471E060097A5F4</string>
317
+										<key>PBXProjectModuleLabel</key>
318
+										<string></string>
319
+									</dict>
320
+									<key>SplitCount</key>
321
+									<string>1</string>
322
+								</dict>
323
+								<key>StatusBarVisibility</key>
324
+								<true/>
325
+							</dict>
326
+							<key>GeometryConfiguration</key>
327
+							<dict>
328
+								<key>Frame</key>
329
+								<string>{{0, 0}, {554, 0}}</string>
330
+								<key>RubberWindowFrame</key>
331
+								<string>523 411 802 615 0 0 1680 1028 </string>
332
+							</dict>
333
+							<key>Module</key>
334
+							<string>PBXNavigatorGroup</string>
335
+							<key>Proportion</key>
336
+							<string>0pt</string>
337
+						</dict>
338
+						<dict>
339
+							<key>ContentConfiguration</key>
340
+							<dict>
341
+								<key>PBXProjectModuleGUID</key>
342
+								<string>1CE0B20506471E060097A5F4</string>
343
+								<key>PBXProjectModuleLabel</key>
344
+								<string>Detail</string>
345
+							</dict>
346
+							<key>GeometryConfiguration</key>
347
+							<dict>
348
+								<key>Frame</key>
349
+								<string>{{0, 5}, {554, 569}}</string>
350
+								<key>RubberWindowFrame</key>
351
+								<string>523 411 802 615 0 0 1680 1028 </string>
352
+							</dict>
353
+							<key>Module</key>
354
+							<string>XCDetailModule</string>
355
+							<key>Proportion</key>
356
+							<string>569pt</string>
357
+						</dict>
358
+					</array>
359
+					<key>Proportion</key>
360
+					<string>554pt</string>
361
+				</dict>
362
+			</array>
363
+			<key>Name</key>
364
+			<string>Project</string>
365
+			<key>ServiceClasses</key>
366
+			<array>
367
+				<string>XCModuleDock</string>
368
+				<string>PBXSmartGroupTreeModule</string>
369
+				<string>XCModuleDock</string>
370
+				<string>PBXNavigatorGroup</string>
371
+				<string>XCDetailModule</string>
372
+			</array>
373
+			<key>TableOfContents</key>
374
+			<array>
375
+				<string>DE6E73B708D8A84200F3BD3A</string>
376
+				<string>1CE0B1FE06471DED0097A5F4</string>
377
+				<string>DE6E73B808D8A84200F3BD3A</string>
378
+				<string>1CE0B20306471E060097A5F4</string>
379
+				<string>1CE0B20506471E060097A5F4</string>
380
+			</array>
381
+			<key>ToolbarConfiguration</key>
382
+			<string>xcode.toolbar.config.default</string>
383
+		</dict>
384
+		<dict>
385
+			<key>ControllerClassBaseName</key>
386
+			<string></string>
387
+			<key>IconName</key>
388
+			<string>WindowOfProject</string>
389
+			<key>Identifier</key>
390
+			<string>perspective.morph</string>
391
+			<key>IsVertical</key>
392
+			<integer>0</integer>
393
+			<key>Layout</key>
394
+			<array>
395
+				<dict>
396
+					<key>BecomeActive</key>
397
+					<integer>1</integer>
398
+					<key>ContentConfiguration</key>
399
+					<dict>
400
+						<key>PBXBottomSmartGroupGIDs</key>
401
+						<array>
402
+							<string>1C37FBAC04509CD000000102</string>
403
+							<string>1C37FAAC04509CD000000102</string>
404
+							<string>1C08E77C0454961000C914BD</string>
405
+							<string>1C37FABC05509CD000000102</string>
406
+							<string>1C37FABC05539CD112110102</string>
407
+							<string>E2644B35053B69B200211256</string>
408
+							<string>1C37FABC04509CD000100104</string>
409
+							<string>1CC0EA4004350EF90044410B</string>
410
+							<string>1CC0EA4004350EF90041110B</string>
411
+						</array>
412
+						<key>PBXProjectModuleGUID</key>
413
+						<string>11E0B1FE06471DED0097A5F4</string>
414
+						<key>PBXProjectModuleLabel</key>
415
+						<string>Files</string>
416
+						<key>PBXProjectStructureProvided</key>
417
+						<string>yes</string>
418
+						<key>PBXSmartGroupTreeModuleColumnData</key>
419
+						<dict>
420
+							<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
421
+							<array>
422
+								<real>186</real>
423
+							</array>
424
+							<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
425
+							<array>
426
+								<string>MainColumn</string>
427
+							</array>
428
+						</dict>
429
+						<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
430
+						<dict>
431
+							<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
432
+							<array>
433
+								<string>29B97314FDCFA39411CA2CEA</string>
434
+								<string>1C37FABC05509CD000000102</string>
435
+							</array>
436
+							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
437
+							<array>
438
+								<array>
439
+									<integer>0</integer>
440
+								</array>
441
+							</array>
442
+							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
443
+							<string>{{0, 0}, {186, 337}}</string>
444
+						</dict>
445
+						<key>PBXTopSmartGroupGIDs</key>
446
+						<array/>
447
+						<key>XCIncludePerspectivesSwitch</key>
448
+						<integer>1</integer>
449
+						<key>XCSharingToken</key>
450
+						<string>com.apple.Xcode.GFSharingToken</string>
451
+					</dict>
452
+					<key>GeometryConfiguration</key>
453
+					<dict>
454
+						<key>Frame</key>
455
+						<string>{{0, 0}, {203, 355}}</string>
456
+						<key>GroupTreeTableConfiguration</key>
457
+						<array>
458
+							<string>MainColumn</string>
459
+							<real>186</real>
460
+						</array>
461
+						<key>RubberWindowFrame</key>
462
+						<string>373 269 690 397 0 0 1440 878 </string>
463
+					</dict>
464
+					<key>Module</key>
465
+					<string>PBXSmartGroupTreeModule</string>
466
+					<key>Proportion</key>
467
+					<string>100%</string>
468
+				</dict>
469
+			</array>
470
+			<key>Name</key>
471
+			<string>Morph</string>
472
+			<key>PreferredWidth</key>
473
+			<integer>300</integer>
474
+			<key>ServiceClasses</key>
475
+			<array>
476
+				<string>XCModuleDock</string>
477
+				<string>PBXSmartGroupTreeModule</string>
478
+			</array>
479
+			<key>TableOfContents</key>
480
+			<array>
481
+				<string>11E0B1FE06471DED0097A5F4</string>
482
+			</array>
483
+			<key>ToolbarConfiguration</key>
484
+			<string>xcode.toolbar.config.default.short</string>
485
+		</dict>
486
+	</array>
487
+	<key>PerspectivesBarVisible</key>
488
+	<false/>
489
+	<key>ShelfIsVisible</key>
490
+	<false/>
491
+	<key>SourceDescription</key>
492
+	<string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
493
+	<key>StatusbarIsVisible</key>
494
+	<true/>
495
+	<key>TimeStamp</key>
496
+	<real>0.0</real>
497
+	<key>ToolbarDisplayMode</key>
498
+	<integer>1</integer>
499
+	<key>ToolbarIsVisible</key>
500
+	<true/>
501
+	<key>ToolbarSizeMode</key>
502
+	<integer>1</integer>
503
+	<key>Type</key>
504
+	<string>Perspectives</string>
505
+	<key>UpdateMessage</key>
506
+	<string>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 '%@'?</string>
507
+	<key>WindowJustification</key>
508
+	<integer>5</integer>
509
+	<key>WindowOrderList</key>
510
+	<array>
511
+		<string>/Users/wiseman/src/lisp-spotlight-indexer/Lisp Metadata Importer/Lisp Metadata Importer.xcodeproj</string>
512
+	</array>
513
+	<key>WindowString</key>
514
+	<string>523 411 802 615 0 0 1680 1028 </string>
515
+	<key>WindowTools</key>
516
+	<array>
517
+		<dict>
518
+			<key>FirstTimeWindowDisplayed</key>
519
+			<false/>
520
+			<key>Identifier</key>
521
+			<string>windowTool.build</string>
522
+			<key>IsVertical</key>
523
+			<true/>
524
+			<key>Layout</key>
525
+			<array>
526
+				<dict>
527
+					<key>Dock</key>
528
+					<array>
529
+						<dict>
530
+							<key>ContentConfiguration</key>
531
+							<dict>
532
+								<key>PBXProjectModuleGUID</key>
533
+								<string>1CD0528F0623707200166675</string>
534
+								<key>PBXProjectModuleLabel</key>
535
+								<string></string>
536
+								<key>StatusBarVisibility</key>
537
+								<true/>
538
+							</dict>
539
+							<key>GeometryConfiguration</key>
540
+							<dict>
541
+								<key>Frame</key>
542
+								<string>{{0, 0}, {1008, 252}}</string>
543
+								<key>RubberWindowFrame</key>
544
+								<string>207 220 1008 534 0 0 1280 832 </string>
545
+							</dict>
546
+							<key>Module</key>
547
+							<string>PBXNavigatorGroup</string>
548
+							<key>Proportion</key>
549
+							<string>252pt</string>
550
+						</dict>
551
+						<dict>
552
+							<key>ContentConfiguration</key>
553
+							<dict>
554
+								<key>PBXProjectModuleGUID</key>
555
+								<string>XCMainBuildResultsModuleGUID</string>
556
+								<key>PBXProjectModuleLabel</key>
557
+								<string>Build</string>
558
+								<key>XCBuildResultsTrigger_Collapse</key>
559
+								<integer>1021</integer>
560
+								<key>XCBuildResultsTrigger_Open</key>
561
+								<integer>1011</integer>
562
+							</dict>
563
+							<key>GeometryConfiguration</key>
564
+							<dict>
565
+								<key>Frame</key>
566
+								<string>{{0, 257}, {1008, 236}}</string>
567
+								<key>RubberWindowFrame</key>
568
+								<string>207 220 1008 534 0 0 1280 832 </string>
569
+							</dict>
570
+							<key>Module</key>
571
+							<string>PBXBuildResultsModule</string>
572
+							<key>Proportion</key>
573
+							<string>236pt</string>
574
+						</dict>
575
+					</array>
576
+					<key>Proportion</key>
577
+					<string>493pt</string>
578
+				</dict>
579
+			</array>
580
+			<key>Name</key>
581
+			<string>Build Results</string>
582
+			<key>ServiceClasses</key>
583
+			<array>
584
+				<string>PBXBuildResultsModule</string>
585
+			</array>
586
+			<key>StatusbarIsVisible</key>
587
+			<true/>
588
+			<key>TableOfContents</key>
589
+			<array>
590
+				<string>DE75AD0E08CD172F008AC2B5</string>
591
+				<string>DECFDA7908D5DA2300204C9E</string>
592
+				<string>1CD0528F0623707200166675</string>
593
+				<string>XCMainBuildResultsModuleGUID</string>
594
+			</array>
595
+			<key>ToolbarConfiguration</key>
596
+			<string>xcode.toolbar.config.build</string>
597
+			<key>WindowString</key>
598
+			<string>207 220 1008 534 0 0 1280 832 </string>
599
+			<key>WindowToolGUID</key>
600
+			<string>DE75AD0E08CD172F008AC2B5</string>
601
+			<key>WindowToolIsVisible</key>
602
+			<false/>
603
+		</dict>
604
+		<dict>
605
+			<key>FirstTimeWindowDisplayed</key>
606
+			<false/>
607
+			<key>Identifier</key>
608
+			<string>windowTool.debugger</string>
609
+			<key>IsVertical</key>
610
+			<true/>
611
+			<key>Layout</key>
612
+			<array>
613
+				<dict>
614
+					<key>Dock</key>
615
+					<array>
616
+						<dict>
617
+							<key>ContentConfiguration</key>
618
+							<dict>
619
+								<key>Debugger</key>
620
+								<dict>
621
+									<key>HorizontalSplitView</key>
622
+									<dict>
623
+										<key>_collapsingFrameDimension</key>
624
+										<real>0.0</real>
625
+										<key>_indexOfCollapsedView</key>
626
+										<integer>0</integer>
627
+										<key>_percentageOfCollapsedView</key>
628
+										<real>0.0</real>
629
+										<key>isCollapsed</key>
630
+										<string>yes</string>
631
+										<key>sizes</key>
632
+										<array>
633
+											<string>{{0, 0}, {316, 202}}</string>
634
+											<string>{{316, 0}, {474, 202}}</string>
635
+										</array>
636
+									</dict>
637
+									<key>VerticalSplitView</key>
638
+									<dict>
639
+										<key>_collapsingFrameDimension</key>
640
+										<real>0.0</real>
641
+										<key>_indexOfCollapsedView</key>
642
+										<integer>0</integer>
643
+										<key>_percentageOfCollapsedView</key>
644
+										<real>0.0</real>
645
+										<key>isCollapsed</key>
646
+										<string>yes</string>
647
+										<key>sizes</key>
648
+										<array>
649
+											<string>{{0, 0}, {790, 202}}</string>
650
+											<string>{{0, 202}, {790, 361}}</string>
651
+										</array>
652
+									</dict>
653
+								</dict>
654
+								<key>LauncherConfigVersion</key>
655
+								<string>8</string>
656
+								<key>PBXProjectModuleGUID</key>
657
+								<string>1C162984064C10D400B95A72</string>
658
+								<key>PBXProjectModuleLabel</key>
659
+								<string>Debug - GLUTExamples (Underwater)</string>
660
+							</dict>
661
+							<key>GeometryConfiguration</key>
662
+							<dict>
663
+								<key>DebugConsoleDrawerSize</key>
664
+								<string>{100, 120}</string>
665
+								<key>DebugConsoleVisible</key>
666
+								<string>None</string>
667
+								<key>DebugConsoleWindowFrame</key>
668
+								<string>{{200, 200}, {500, 300}}</string>
669
+								<key>DebugSTDIOWindowFrame</key>
670
+								<string>{{200, 200}, {500, 300}}</string>
671
+								<key>Frame</key>
672
+								<string>{{0, 0}, {790, 563}}</string>
673
+								<key>RubberWindowFrame</key>
674
+								<string>394 217 790 604 0 0 1280 832 </string>
675
+							</dict>
676
+							<key>Module</key>
677
+							<string>PBXDebugSessionModule</string>
678
+							<key>Proportion</key>
679
+							<string>563pt</string>
680
+						</dict>
681
+					</array>
682
+					<key>Proportion</key>
683
+					<string>563pt</string>
684
+				</dict>
685
+			</array>
686
+			<key>Name</key>
687
+			<string>Debugger</string>
688
+			<key>ServiceClasses</key>
689
+			<array>
690
+				<string>PBXDebugSessionModule</string>
691
+			</array>
692
+			<key>StatusbarIsVisible</key>
693
+			<true/>
694
+			<key>TableOfContents</key>
695
+			<array>
696
+				<string>1CD10A99069EF8BA00B06720</string>
697
+				<string>DEBFC31C08D6B2540041B8A9</string>
698
+				<string>1C162984064C10D400B95A72</string>
699
+				<string>DEBFC31D08D6B2540041B8A9</string>
700
+				<string>DEBFC31E08D6B2540041B8A9</string>
701
+				<string>DEBFC31F08D6B2540041B8A9</string>
702
+				<string>DEBFC32008D6B2540041B8A9</string>
703
+				<string>DEBFC32108D6B2540041B8A9</string>
704
+				<string>DEBFC32208D6B2540041B8A9</string>
705
+			</array>
706
+			<key>ToolbarConfiguration</key>
707
+			<string>xcode.toolbar.config.debug</string>
708
+			<key>WindowString</key>
709
+			<string>394 217 790 604 0 0 1280 832 </string>
710
+			<key>WindowToolGUID</key>
711
+			<string>1CD10A99069EF8BA00B06720</string>
712
+			<key>WindowToolIsVisible</key>
713
+			<false/>
714
+		</dict>
715
+		<dict>
716
+			<key>FirstTimeWindowDisplayed</key>
717
+			<false/>
718
+			<key>Identifier</key>
719
+			<string>windowTool.find</string>
720
+			<key>IsVertical</key>
721
+			<true/>
722
+			<key>Layout</key>
723
+			<array>
724
+				<dict>
725
+					<key>Dock</key>
726
+					<array>
727
+						<dict>
728
+							<key>Dock</key>
729
+							<array>
730
+								<dict>
731
+									<key>ContentConfiguration</key>
732
+									<dict>
733
+										<key>PBXProjectModuleGUID</key>
734
+										<string>1CDD528C0622207200134675</string>
735
+										<key>PBXProjectModuleLabel</key>
736
+										<string>DebugLog.m</string>
737
+										<key>StatusBarVisibility</key>
738
+										<true/>
739
+									</dict>
740
+									<key>GeometryConfiguration</key>
741
+									<dict>
742
+										<key>Frame</key>
743
+										<string>{{0, 0}, {781, 212}}</string>
744
+										<key>RubberWindowFrame</key>
745
+										<string>808 535 781 470 0 0 1680 1028 </string>
746
+									</dict>
747
+									<key>Module</key>
748
+									<string>PBXNavigatorGroup</string>
749
+									<key>Proportion</key>
750
+									<string>781pt</string>
751
+								</dict>
752
+							</array>
753
+							<key>Proportion</key>
754
+							<string>212pt</string>
755
+						</dict>
756
+						<dict>
757
+							<key>BecomeActive</key>
758
+							<true/>
759
+							<key>ContentConfiguration</key>
760
+							<dict>
761
+								<key>PBXProjectModuleGUID</key>
762
+								<string>1CD0528E0623707200166675</string>
763
+								<key>PBXProjectModuleLabel</key>
764
+								<string>Project Find</string>
765
+							</dict>
766
+							<key>GeometryConfiguration</key>
767
+							<dict>
768
+								<key>Frame</key>
769
+								<string>{{0, 217}, {781, 212}}</string>
770
+								<key>RubberWindowFrame</key>
771
+								<string>808 535 781 470 0 0 1680 1028 </string>
772
+							</dict>
773
+							<key>Module</key>
774
+							<string>PBXProjectFindModule</string>
775
+							<key>Proportion</key>
776
+							<string>212pt</string>
777
+						</dict>
778
+					</array>
779
+					<key>Proportion</key>
780
+					<string>429pt</string>
781
+				</dict>
782
+			</array>
783
+			<key>Name</key>
784
+			<string>Project Find</string>
785
+			<key>ServiceClasses</key>
786
+			<array>
787
+				<string>PBXProjectFindModule</string>
788
+			</array>
789
+			<key>StatusbarIsVisible</key>
790
+			<true/>
791
+			<key>TableOfContents</key>
792
+			<array>
793
+				<string>1C530D57069F1CE1000CFCEE</string>
794
+				<string>DEC2DFB208D1088900E64CA6</string>
795
+				<string>DEC2DFB308D1088900E64CA6</string>
796
+				<string>1CDD528C0622207200134675</string>
797
+				<string>1CD0528E0623707200166675</string>
798
+			</array>
799
+			<key>WindowString</key>
800
+			<string>808 535 781 470 0 0 1680 1028 </string>
801
+			<key>WindowToolGUID</key>
802
+			<string>1C530D57069F1CE1000CFCEE</string>
803
+			<key>WindowToolIsVisible</key>
804
+			<false/>
805
+		</dict>
806
+		<dict>
807
+			<key>Identifier</key>
808
+			<string>MENUSEPARATOR</string>
809
+		</dict>
810
+		<dict>
811
+			<key>FirstTimeWindowDisplayed</key>
812
+			<false/>
813
+			<key>Identifier</key>
814
+			<string>windowTool.debuggerConsole</string>
815
+			<key>IsVertical</key>
816
+			<true/>
817
+			<key>Layout</key>
818
+			<array>
819
+				<dict>
820
+					<key>Dock</key>
821
+					<array>
822
+						<dict>
823
+							<key>BecomeActive</key>
824
+							<true/>
825
+							<key>ContentConfiguration</key>
826
+							<dict>
827
+								<key>PBXProjectModuleGUID</key>
828
+								<string>1C78EAAC065D492600B07095</string>
829
+								<key>PBXProjectModuleLabel</key>
830
+								<string>Debugger Console</string>
831
+							</dict>
832
+							<key>GeometryConfiguration</key>
833
+							<dict>
834
+								<key>Frame</key>
835
+								<string>{{0, 0}, {440, 358}}</string>
836
+								<key>RubberWindowFrame</key>
837
+								<string>341 466 440 400 0 0 1680 1028 </string>
838
+							</dict>
839
+							<key>Module</key>
840
+							<string>PBXDebugCLIModule</string>
841
+							<key>Proportion</key>
842
+							<string>358pt</string>
843
+						</dict>
844
+					</array>
845
+					<key>Proportion</key>
846
+					<string>359pt</string>
847
+				</dict>
848
+			</array>
849
+			<key>Name</key>
850
+			<string>Debugger Console</string>
851
+			<key>ServiceClasses</key>
852
+			<array>
853
+				<string>PBXDebugCLIModule</string>
854
+			</array>
855
+			<key>StatusbarIsVisible</key>
856
+			<true/>
857
+			<key>TableOfContents</key>
858
+			<array>
859
+				<string>DE75AD1708CD172F008AC2B5</string>
860
+				<string>DEC2DF4208D0EC9100E64CA6</string>
861
+				<string>1C78EAAC065D492600B07095</string>
862
+			</array>
863
+			<key>WindowString</key>
864
+			<string>341 466 440 400 0 0 1680 1028 </string>
865
+			<key>WindowToolGUID</key>
866
+			<string>DE75AD1708CD172F008AC2B5</string>
867
+			<key>WindowToolIsVisible</key>
868
+			<false/>
869
+		</dict>
870
+		<dict>
871
+			<key>FirstTimeWindowDisplayed</key>
872
+			<false/>
873
+			<key>Identifier</key>
874
+			<string>windowTool.run</string>
875
+			<key>IsVertical</key>
876
+			<true/>
877
+			<key>Layout</key>
878
+			<array>
879
+				<dict>
880
+					<key>Dock</key>
881
+					<array>
882
+						<dict>
883
+							<key>ContentConfiguration</key>
884
+							<dict>
885
+								<key>LauncherConfigVersion</key>
886
+								<string>3</string>
887
+								<key>PBXProjectModuleGUID</key>
888
+								<string>1CD0528B0623707200166675</string>
889
+								<key>PBXProjectModuleLabel</key>
890
+								<string>Run</string>
891
+								<key>Runner</key>
892
+								<dict>
893
+									<key>HorizontalSplitView</key>
894
+									<dict>
895
+										<key>_collapsingFrameDimension</key>
896
+										<real>0.0</real>
897
+										<key>_indexOfCollapsedView</key>
898
+										<integer>0</integer>
899
+										<key>_percentageOfCollapsedView</key>
900
+										<real>0.0</real>
901
+										<key>isCollapsed</key>
902
+										<string>yes</string>
903
+										<key>sizes</key>
904
+										<array>
905
+											<string>{{0, 0}, {367, 168}}</string>
906
+											<string>{{0, 173}, {367, 270}}</string>
907
+										</array>
908
+									</dict>
909
+									<key>VerticalSplitView</key>
910
+									<dict>
911
+										<key>_collapsingFrameDimension</key>
912
+										<real>0.0</real>
913
+										<key>_indexOfCollapsedView</key>
914
+										<integer>0</integer>
915
+										<key>_percentageOfCollapsedView</key>
916
+										<real>0.0</real>
917
+										<key>isCollapsed</key>
918
+										<string>yes</string>
919
+										<key>sizes</key>
920
+										<array>
921
+											<string>{{0, 0}, {406, 443}}</string>
922
+											<string>{{411, 0}, {517, 443}}</string>
923
+										</array>
924
+									</dict>
925
+								</dict>
926
+							</dict>
927
+							<key>GeometryConfiguration</key>
928
+							<dict>
929
+								<key>Frame</key>
930
+								<string>{{0, 0}, {1002, 485}}</string>
931
+								<key>RubberWindowFrame</key>
932
+								<string>463 393 1002 526 0 0 1680 1028 </string>
933
+							</dict>
934
+							<key>Module</key>
935
+							<string>PBXRunSessionModule</string>
936
+							<key>Proportion</key>
937
+							<string>485pt</string>
938
+						</dict>
939
+					</array>
940
+					<key>Proportion</key>
941
+					<string>485pt</string>
942
+				</dict>
943
+			</array>
944
+			<key>Name</key>
945
+			<string>Run Log</string>
946
+			<key>ServiceClasses</key>
947
+			<array>
948
+				<string>PBXRunSessionModule</string>
949
+			</array>
950
+			<key>StatusbarIsVisible</key>
951
+			<true/>
952
+			<key>TableOfContents</key>
953
+			<array>
954
+				<string>DE9517E608CD54F6002ABA7F</string>
955
+				<string>DEC2DFC908D108C200E64CA6</string>
956
+				<string>1CD0528B0623707200166675</string>
957
+				<string>DEC2DFCA08D108C200E64CA6</string>
958
+			</array>
959
+			<key>ToolbarConfiguration</key>
960
+			<string>xcode.toolbar.config.run</string>
961
+			<key>WindowString</key>
962
+			<string>463 393 1002 526 0 0 1680 1028 </string>
963
+			<key>WindowToolGUID</key>
964
+			<string>DE9517E608CD54F6002ABA7F</string>
965
+			<key>WindowToolIsVisible</key>
966
+			<false/>
967
+		</dict>
968
+		<dict>
969
+			<key>Identifier</key>
970
+			<string>windowTool.scm</string>
971
+			<key>Layout</key>
972
+			<array>
973
+				<dict>
974
+					<key>Dock</key>
975
+					<array>
976
+						<dict>
977
+							<key>ContentConfiguration</key>
978
+							<dict>
979
+								<key>PBXProjectModuleGUID</key>
980
+								<string>1C78EAB2065D492600B07095</string>
981
+								<key>PBXProjectModuleLabel</key>
982
+								<string>&lt;No Editor&gt;</string>
983
+								<key>PBXSplitModuleInNavigatorKey</key>
984
+								<dict>
985
+									<key>Split0</key>
986
+									<dict>
987
+										<key>PBXProjectModuleGUID</key>
988
+										<string>1C78EAB3065D492600B07095</string>
989
+									</dict>
990
+									<key>SplitCount</key>
991
+									<string>1</string>
992
+								</dict>
993
+								<key>StatusBarVisibility</key>
994
+								<integer>1</integer>
995
+							</dict>
996
+							<key>GeometryConfiguration</key>
997
+							<dict>
998
+								<key>Frame</key>
999
+								<string>{{0, 0}, {452, 0}}</string>
1000
+								<key>RubberWindowFrame</key>
1001
+								<string>743 379 452 308 0 0 1280 1002 </string>
1002
+							</dict>
1003
+							<key>Module</key>
1004
+							<string>PBXNavigatorGroup</string>
1005
+							<key>Proportion</key>
1006
+							<string>0pt</string>
1007
+						</dict>
1008
+						<dict>
1009
+							<key>BecomeActive</key>
1010
+							<integer>1</integer>
1011
+							<key>ContentConfiguration</key>
1012
+							<dict>
1013
+								<key>PBXProjectModuleGUID</key>
1014
+								<string>1CD052920623707200166675</string>
1015
+								<key>PBXProjectModuleLabel</key>
1016
+								<string>SCM</string>
1017
+							</dict>
1018
+							<key>GeometryConfiguration</key>
1019
+							<dict>
1020
+								<key>ConsoleFrame</key>
1021
+								<string>{{0, 259}, {452, 0}}</string>
1022
+								<key>Frame</key>
1023
+								<string>{{0, 7}, {452, 259}}</string>
1024
+								<key>RubberWindowFrame</key>
1025
+								<string>743 379 452 308 0 0 1280 1002 </string>
1026
+								<key>TableConfiguration</key>
1027
+								<array>
1028
+									<string>Status</string>
1029
+									<real>30</real>
1030
+									<string>FileName</string>
1031
+									<real>199</real>
1032
+									<string>Path</string>
1033
+									<real>197.09500122070312</real>
1034
+								</array>
1035
+								<key>TableFrame</key>
1036
+								<string>{{0, 0}, {452, 250}}</string>
1037
+							</dict>
1038
+							<key>Module</key>
1039
+							<string>PBXCVSModule</string>
1040
+							<key>Proportion</key>
1041
+							<string>262pt</string>
1042
+						</dict>
1043
+					</array>
1044
+					<key>Proportion</key>
1045
+					<string>266pt</string>
1046
+				</dict>
1047
+			</array>
1048
+			<key>Name</key>
1049
+			<string>SCM</string>
1050
+			<key>ServiceClasses</key>
1051
+			<array>
1052
+				<string>PBXCVSModule</string>
1053
+			</array>
1054
+			<key>StatusbarIsVisible</key>
1055
+			<integer>1</integer>
1056
+			<key>TableOfContents</key>
1057
+			<array>
1058
+				<string>1C78EAB4065D492600B07095</string>
1059
+				<string>1C78EAB5065D492600B07095</string>
1060
+				<string>1C78EAB2065D492600B07095</string>
1061
+				<string>1CD052920623707200166675</string>
1062
+			</array>
1063
+			<key>ToolbarConfiguration</key>
1064
+			<string>xcode.toolbar.config.scm</string>
1065
+			<key>WindowString</key>
1066
+			<string>743 379 452 308 0 0 1280 1002 </string>
1067
+		</dict>
1068
+		<dict>
1069
+			<key>Identifier</key>
1070
+			<string>windowTool.breakpoints</string>
1071
+			<key>IsVertical</key>
1072
+			<integer>0</integer>
1073
+			<key>Layout</key>
1074
+			<array>
1075
+				<dict>
1076
+					<key>Dock</key>
1077
+					<array>
1078
+						<dict>
1079
+							<key>BecomeActive</key>
1080
+							<integer>1</integer>
1081
+							<key>ContentConfiguration</key>
1082
+							<dict>
1083
+								<key>PBXBottomSmartGroupGIDs</key>
1084
+								<array>
1085
+									<string>1C77FABC04509CD000000102</string>
1086
+								</array>
1087
+								<key>PBXProjectModuleGUID</key>
1088
+								<string>1CE0B1FE06471DED0097A5F4</string>
1089
+								<key>PBXProjectModuleLabel</key>
1090
+								<string>Files</string>
1091
+								<key>PBXProjectStructureProvided</key>
1092
+								<string>no</string>
1093
+								<key>PBXSmartGroupTreeModuleColumnData</key>
1094
+								<dict>
1095
+									<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
1096
+									<array>
1097
+										<real>168</real>
1098
+									</array>
1099
+									<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
1100
+									<array>
1101
+										<string>MainColumn</string>
1102
+									</array>
1103
+								</dict>
1104
+								<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
1105
+								<dict>
1106
+									<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
1107
+									<array>
1108
+										<string>1C77FABC04509CD000000102</string>
1109
+									</array>
1110
+									<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
1111
+									<array>
1112
+										<array>
1113
+											<integer>0</integer>
1114
+										</array>
1115
+									</array>
1116
+									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
1117
+									<string>{{0, 0}, {168, 350}}</string>
1118
+								</dict>
1119
+								<key>PBXTopSmartGroupGIDs</key>
1120
+								<array/>
1121
+								<key>XCIncludePerspectivesSwitch</key>
1122
+								<integer>0</integer>
1123
+							</dict>
1124
+							<key>GeometryConfiguration</key>
1125
+							<dict>
1126
+								<key>Frame</key>
1127
+								<string>{{0, 0}, {185, 368}}</string>
1128
+								<key>GroupTreeTableConfiguration</key>
1129
+								<array>
1130
+									<string>MainColumn</string>
1131
+									<real>168</real>
1132
+								</array>
1133
+								<key>RubberWindowFrame</key>
1134
+								<string>315 424 744 409 0 0 1440 878 </string>
1135
+							</dict>
1136
+							<key>Module</key>
1137
+							<string>PBXSmartGroupTreeModule</string>
1138
+							<key>Proportion</key>
1139
+							<string>185pt</string>
1140
+						</dict>
1141
+						<dict>
1142
+							<key>ContentConfiguration</key>
1143
+							<dict>
1144
+								<key>PBXProjectModuleGUID</key>
1145
+								<string>1CA1AED706398EBD00589147</string>
1146
+								<key>PBXProjectModuleLabel</key>
1147
+								<string>Detail</string>
1148
+							</dict>
1149
+							<key>GeometryConfiguration</key>
1150
+							<dict>
1151
+								<key>Frame</key>
1152
+								<string>{{190, 0}, {554, 368}}</string>
1153
+								<key>RubberWindowFrame</key>
1154
+								<string>315 424 744 409 0 0 1440 878 </string>
1155
+							</dict>
1156
+							<key>Module</key>
1157
+							<string>XCDetailModule</string>
1158
+							<key>Proportion</key>
1159
+							<string>554pt</string>
1160
+						</dict>
1161
+					</array>
1162
+					<key>Proportion</key>
1163
+					<string>368pt</string>
1164
+				</dict>
1165
+			</array>
1166
+			<key>MajorVersion</key>
1167
+			<integer>2</integer>
1168
+			<key>MinorVersion</key>
1169
+			<integer>0</integer>
1170
+			<key>Name</key>
1171
+			<string>Breakpoints</string>
1172
+			<key>ServiceClasses</key>
1173
+			<array>
1174
+				<string>PBXSmartGroupTreeModule</string>
1175
+				<string>XCDetailModule</string>
1176
+			</array>
1177
+			<key>StatusbarIsVisible</key>
1178
+			<integer>1</integer>
1179
+			<key>TableOfContents</key>
1180
+			<array>
1181
+				<string>1CDDB66807F98D9800BB5817</string>
1182
+				<string>1CDDB66907F98D9800BB5817</string>
1183
+				<string>1CE0B1FE06471DED0097A5F4</string>
1184
+				<string>1CA1AED706398EBD00589147</string>
1185
+			</array>
1186
+			<key>ToolbarConfiguration</key>
1187
+			<string>xcode.toolbar.config.breakpoints</string>
1188
+			<key>WindowString</key>
1189
+			<string>315 424 744 409 0 0 1440 878 </string>
1190
+			<key>WindowToolGUID</key>
1191
+			<string>1CDDB66807F98D9800BB5817</string>
1192
+			<key>WindowToolIsVisible</key>
1193
+			<integer>1</integer>
1194
+		</dict>
1195
+		<dict>
1196
+			<key>Identifier</key>
1197
+			<string>windowTool.debugAnimator</string>
1198
+			<key>Layout</key>
1199
+			<array>
1200
+				<dict>
1201
+					<key>Dock</key>
1202
+					<array>
1203
+						<dict>
1204
+							<key>Module</key>
1205
+							<string>PBXNavigatorGroup</string>
1206
+							<key>Proportion</key>
1207
+							<string>100%</string>
1208
+						</dict>
1209
+					</array>
1210
+					<key>Proportion</key>
1211
+					<string>100%</string>
1212
+				</dict>
1213
+			</array>
1214
+			<key>Name</key>
1215
+			<string>Debug Visualizer</string>
1216
+			<key>ServiceClasses</key>
1217
+			<array>
1218
+				<string>PBXNavigatorGroup</string>
1219
+			</array>
1220
+			<key>StatusbarIsVisible</key>
1221
+			<integer>1</integer>
1222
+			<key>ToolbarConfiguration</key>
1223
+			<string>xcode.toolbar.config.debugAnimator</string>
1224
+			<key>WindowString</key>
1225
+			<string>100 100 700 500 0 0 1280 1002 </string>
1226
+		</dict>
1227
+		<dict>
1228
+			<key>Identifier</key>
1229
+			<string>windowTool.bookmarks</string>
1230
+			<key>Layout</key>
1231
+			<array>
1232
+				<dict>
1233
+					<key>Dock</key>
1234
+					<array>
1235
+						<dict>
1236
+							<key>Module</key>
1237
+							<string>PBXBookmarksModule</string>
1238
+							<key>Proportion</key>
1239
+							<string>100%</string>
1240
+						</dict>
1241
+					</array>
1242
+					<key>Proportion</key>
1243
+					<string>100%</string>
1244
+				</dict>
1245
+			</array>
1246
+			<key>Name</key>
1247
+			<string>Bookmarks</string>
1248
+			<key>ServiceClasses</key>
1249
+			<array>
1250
+				<string>PBXBookmarksModule</string>
1251
+			</array>
1252
+			<key>StatusbarIsVisible</key>
1253
+			<integer>0</integer>
1254
+			<key>WindowString</key>
1255
+			<string>538 42 401 187 0 0 1280 1002 </string>
1256
+		</dict>
1257
+		<dict>
1258
+			<key>Identifier</key>
1259
+			<string>windowTool.classBrowser</string>
1260
+			<key>Layout</key>
1261
+			<array>
1262
+				<dict>
1263
+					<key>Dock</key>
1264
+					<array>
1265
+						<dict>
1266
+							<key>BecomeActive</key>
1267
+							<integer>1</integer>
1268
+							<key>ContentConfiguration</key>
1269
+							<dict>
1270
+								<key>OptionsSetName</key>
1271
+								<string>Hierarchy, all classes</string>
1272
+								<key>PBXProjectModuleGUID</key>
1273
+								<string>1CA6456E063B45B4001379D8</string>
1274
+								<key>PBXProjectModuleLabel</key>
1275
+								<string>Class Browser - NSObject</string>
1276
+							</dict>
1277
+							<key>GeometryConfiguration</key>
1278
+							<dict>
1279
+								<key>ClassesFrame</key>
1280
+								<string>{{0, 0}, {374, 96}}</string>
1281
+								<key>ClassesTreeTableConfiguration</key>
1282
+								<array>
1283
+									<string>PBXClassNameColumnIdentifier</string>
1284
+									<real>208</real>
1285
+									<string>PBXClassBookColumnIdentifier</string>
1286
+									<real>22</real>
1287
+								</array>
1288
+								<key>Frame</key>
1289
+								<string>{{0, 0}, {630, 331}}</string>
1290
+								<key>MembersFrame</key>
1291
+								<string>{{0, 105}, {374, 395}}</string>
1292
+								<key>MembersTreeTableConfiguration</key>
1293
+								<array>
1294
+									<string>PBXMemberTypeIconColumnIdentifier</string>
1295
+									<real>22</real>
1296
+									<string>PBXMemberNameColumnIdentifier</string>
1297
+									<real>216</real>
1298
+									<string>PBXMemberTypeColumnIdentifier</string>
1299
+									<real>97</real>
1300
+									<string>PBXMemberBookColumnIdentifier</string>
1301
+									<real>22</real>
1302
+								</array>
1303
+								<key>PBXModuleWindowStatusBarHidden2</key>
1304
+								<integer>1</integer>
1305
+								<key>RubberWindowFrame</key>
1306
+								<string>385 179 630 352 0 0 1440 878 </string>
1307
+							</dict>
1308
+							<key>Module</key>
1309
+							<string>PBXClassBrowserModule</string>
1310
+							<key>Proportion</key>
1311
+							<string>332pt</string>
1312
+						</dict>
1313
+					</array>
1314
+					<key>Proportion</key>
1315
+					<string>332pt</string>
1316
+				</dict>
1317
+			</array>
1318
+			<key>Name</key>
1319
+			<string>Class Browser</string>
1320
+			<key>ServiceClasses</key>
1321
+			<array>
1322
+				<string>PBXClassBrowserModule</string>
1323
+			</array>
1324
+			<key>StatusbarIsVisible</key>
1325
+			<integer>0</integer>
1326
+			<key>TableOfContents</key>
1327
+			<array>
1328
+				<string>1C0AD2AF069F1E9B00FABCE6</string>
1329
+				<string>1C0AD2B0069F1E9B00FABCE6</string>
1330
+				<string>1CA6456E063B45B4001379D8</string>
1331
+			</array>
1332
+			<key>ToolbarConfiguration</key>
1333
+			<string>xcode.toolbar.config.classbrowser</string>
1334
+			<key>WindowString</key>
1335
+			<string>385 179 630 352 0 0 1440 878 </string>
1336
+			<key>WindowToolGUID</key>
1337
+			<string>1C0AD2AF069F1E9B00FABCE6</string>
1338
+			<key>WindowToolIsVisible</key>
1339
+			<integer>0</integer>
1340
+		</dict>
1341
+	</array>
1342
+</dict>
1343
+</plist>
0 1344
new file mode 100644
... ...
@@ -0,0 +1,286 @@
1
+// !$*UTF8*$!
2
+{
3
+	089C1669FE841209C02AAC07 /* Project object */ = {
4
+		activeBuildConfigurationName = Release;
5
+		activeBuildStyle = 014CEA3F0018CDD111CA2923 /* Development */;
6
+		activeExecutable = DE75ACF608CD1449008AC2B5 /* LispMetadataImporterTest */;
7
+		activeTarget = 8D57630D048677EA00EA77CD /* Lisp Metadata Importer */;
8
+		addToTargets = (
9
+			DE75ACF408CD1449008AC2B5 /* LispMetadataImporterTest */,
10
+			8D57630D048677EA00EA77CD /* Lisp Metadata Importer */,
11
+		);
12
+		breakpoints = (
13
+			DEC2DFB608D1089000E64CA6 /* DebugLog.m:44 */,
14
+		);
15
+		breakpointsGroup = DE75AD4708CD19EB008AC2B5 /* XCBreakpointsBucket */;
16
+		codeSenseManager = DE75ACEC08CD13A8008AC2B5 /* Code sense */;
17
+		executables = (
18
+			DE75ACF608CD1449008AC2B5 /* LispMetadataImporterTest */,
19
+		);
20
+		perUserDictionary = {
21
+			PBXConfiguration.PBXFileTableDataSource3.PBXExecutablesDataSource = {
22
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
23
+				PBXFileTableDataSourceColumnSortingKey = PBXExecutablesDataSource_NameID;
24
+				PBXFileTableDataSourceColumnWidthsKey = (
25
+					22,
26
+					300,
27
+					180,
28
+				);
29
+				PBXFileTableDataSourceColumnsKey = (
30
+					PBXExecutablesDataSource_ActiveFlagID,
31
+					PBXExecutablesDataSource_NameID,
32
+					PBXExecutablesDataSource_CommentsID,
33
+				);
34
+			};
35
+			PBXConfiguration.PBXFileTableDataSource3.PBXFileTableDataSource = {
36
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
37
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
38
+				PBXFileTableDataSourceColumnWidthsKey = (
39
+					20,
40
+					315,
41
+					20,
42
+					48,
43
+					43,
44
+					43,
45
+					20,
46
+				);
47
+				PBXFileTableDataSourceColumnsKey = (
48
+					PBXFileDataSource_FiletypeID,
49
+					PBXFileDataSource_Filename_ColumnID,
50
+					PBXFileDataSource_Built_ColumnID,
51
+					PBXFileDataSource_ObjectSize_ColumnID,
52
+					PBXFileDataSource_Errors_ColumnID,
53
+					PBXFileDataSource_Warnings_ColumnID,
54
+					PBXFileDataSource_Target_ColumnID,
55
+				);
56
+			};
57
+			PBXConfiguration.PBXTargetDataSource.PBXTargetDataSource = {
58
+				PBXFileTableDataSourceColumnSortingDirectionKey = "-1";
59
+				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
60
+				PBXFileTableDataSourceColumnWidthsKey = (
61
+					20,
62
+					200,
63
+					129,
64
+					20,
65
+					48,
66
+					43,
67
+					43,
68
+				);
69
+				PBXFileTableDataSourceColumnsKey = (
70
+					PBXFileDataSource_FiletypeID,
71
+					PBXFileDataSource_Filename_ColumnID,
72
+					PBXTargetDataSource_PrimaryAttribute,
73
+					PBXFileDataSource_Built_ColumnID,
74
+					PBXFileDataSource_ObjectSize_ColumnID,
75
+					PBXFileDataSource_Errors_ColumnID,
76
+					PBXFileDataSource_Warnings_ColumnID,
77
+				);
78
+			};
79
+			PBXPerProjectTemplateStateSaveDate = 148413727;
80
+			PBXWorkspaceStateSaveDate = 148413727;
81
+		};
82
+		sourceControlManager = DE75ACEB08CD13A8008AC2B5 /* Source Control */;
83
+		userBuildSettings = {
84
+		};
85
+	};
86
+	45967FED0832BF890009C12F /* CMetadataImporter.h */ = {
87
+		uiCtxt = {
88
+			sepNavIntBoundsRect = "{{0, 0}, {794, 539}}";
89
+			sepNavSelRange = "{532, 0}";
90
+			sepNavVisRect = "{{0, 0}, {779, 539}}";
91
+			sepNavWindowFrame = "{{447, 164}, {818, 668}}";
92
+		};
93
+	};
94
+	45967FEE0832BF890009C12F /* CMetadataImporter.m */ = {
95
+		uiCtxt = {
96
+			sepNavIntBoundsRect = "{{0, 0}, {871, 4144}}";
97
+			sepNavSelRange = "{4892, 0}";
98
+			sepNavVisRect = "{{0, 1776}, {871, 690}}";
99
+			sepNavWindowFrame = "{{52, 174}, {910, 804}}";
100
+		};
101
+	};
102
+	45967FF30832BF890009C12F /* GetMetadataForFile.m */ = {
103
+		uiCtxt = {
104
+			sepNavIntBoundsRect = "{{0, 0}, {788, 539}}";
105
+			sepNavSelRange = "{896, 0}";
106
+			sepNavVisRect = "{{0, 0}, {779, 539}}";
107
+			sepNavWindowFrame = "{{451, 164}, {818, 668}}";
108
+		};
109
+	};
110
+	45967FF50832BF890009C12F /* main.c */ = {
111
+		uiCtxt = {
112
+			sepNavIntBoundsRect = "{{0, 0}, {931, 2912}}";
113
+			sepNavSelRange = "{215, 0}";
114
+			sepNavVisRect = "{{0, 0}, {931, 703}}";
115
+			sepNavWindowFrame = "{{319, 0}, {970, 832}}";
116
+		};
117
+	};
118
+	4596802C0832BFC50009C12F /* English */ = {
119
+		uiCtxt = {
120
+			sepNavIntBoundsRect = "{{0, 0}, {779, 539}}";
121
+			sepNavSelRange = "{121, 0}";
122
+			sepNavVisRect = "{{0, 0}, {779, 539}}";
123
+			sepNavWindowFrame = "{{107, 271}, {818, 668}}";
124
+		};
125
+	};
126
+	4596802E0832BFC50009C12F /* English */ = {
127
+		uiCtxt = {
128
+			sepNavIntBoundsRect = "{{0, 0}, {779, 539}}";
129
+			sepNavSelRange = "{245, 0}";
130
+			sepNavVisRect = "{{0, 0}, {779, 539}}";
131
+			sepNavWindowFrame = "{{130, 250}, {818, 668}}";
132
+		};
133
+	};
134
+	4596802F0832BFC50009C12F /* Info.plist */ = {
135
+		uiCtxt = {
136
+			sepNavIntBoundsRect = "{{0, 0}, {779, 1134}}";
137
+			sepNavSelRange = "{804, 0}";
138
+			sepNavVisRect = "{{0, 0}, {779, 539}}";
139
+			sepNavWindowFrame = "{{153, 229}, {818, 668}}";
140
+		};
141
+	};
142
+	459680300832BFC50009C12F /* schema.xml */ = {
143
+		uiCtxt = {
144
+			sepNavIntBoundsRect = "{{0, 0}, {1250, 539}}";
145
+			sepNavSelRange = "{1244, 0}";
146
+			sepNavVisRect = "{{0, 0}, {779, 539}}";
147
+			sepNavWindowFrame = "{{176, 208}, {818, 668}}";
148
+		};
149
+	};
150
+	8D57630D048677EA00EA77CD /* Lisp Metadata Importer */ = {
151
+		activeExec = 0;
152
+	};
153
+	DE4C707408CE1588001A80F8 /* NSString_HMext.h */ = {
154
+		uiCtxt = {
155
+			sepNavIntBoundsRect = "{{0, 0}, {914, 675}}";
156
+			sepNavSelRange = "{15, 0}";
157
+			sepNavVisRect = "{{0, 0}, {871, 675}}";
158
+			sepNavWindowFrame = "{{72, 28}, {910, 804}}";
159
+		};
160
+	};
161
+	DE4C707508CE1588001A80F8 /* NSString_HMext.m */ = {
162
+		uiCtxt = {
163
+			sepNavIntBoundsRect = "{{0, 0}, {908, 1372}}";
164
+			sepNavSelRange = "{2733, 0}";
165
+			sepNavVisRect = "{{0, 0}, {871, 675}}";
166
+			sepNavWindowFrame = "{{333, 28}, {910, 804}}";
167
+		};
168
+	};
169
+	DE75ACEB08CD13A8008AC2B5 /* Source Control */ = {
170
+		isa = PBXSourceControlManager;
171
+		fallbackIsa = XCSourceControlManager;
172
+		isSCMEnabled = 0;
173
+		scmConfiguration = {
174
+		};
175
+		scmType = "";
176
+	};
177
+	DE75ACEC08CD13A8008AC2B5 /* Code sense */ = {
178
+		isa = PBXCodeSenseManager;
179
+		indexTemplatePath = "";
180
+	};
181
+	DE75ACF408CD1449008AC2B5 /* LispMetadataImporterTest */ = {
182
+		activeExec = 0;
183
+		executables = (
184
+			DE75ACF608CD1449008AC2B5 /* LispMetadataImporterTest */,
185
+		);
186
+	};
187
+	DE75ACF608CD1449008AC2B5 /* LispMetadataImporterTest */ = {
188
+		isa = PBXExecutable;
189
+		activeArgIndex = 0;
190
+		activeArgIndices = (
191
+			YES,
192
+			YES,
193
+		);
194
+		argumentStrings = (
195
+			"-noprint",
196
+			/dev/null,
197
+		);
198
+		configStateDict = {
199
+		};
200
+		cppStopOnCatchEnabled = 0;
201
+		cppStopOnThrowEnabled = 0;
202
+		customDataFormattersEnabled = 1;
203
+		debuggerPlugin = GDBDebugging;
204
+		disassemblyDisplayState = 0;
205
+		dylibVariantSuffix = "";
206
+		enableDebugStr = 1;
207
+		environmentEntries = (
208
+		);
209
+		executableSystemSymbolLevel = 0;
210
+		executableUserSymbolLevel = 0;
211
+		libgmallocEnabled = 0;
212
+		name = LispMetadataImporterTest;
213
+		savedGlobals = {
214
+		};
215
+		sourceDirectories = (
216
+		);
217
+	};
218
+	DE75AD0008CD14BB008AC2B5 /* main.m */ = {
219
+		uiCtxt = {
220
+			sepNavIntBoundsRect = "{{0, 0}, {581, 1526}}";
221
+			sepNavSelRange = "{1940, 0}";
222
+			sepNavVisRect = "{{0, 823}, {581, 703}}";
223
+			sepNavWindowFrame = "{{44, 0}, {620, 832}}";
224
+		};
225
+	};
226
+	DE75AD4708CD19EB008AC2B5 /* XCBreakpointsBucket */ = {
227
+		isa = XCBreakpointsBucket;
228
+		name = "Project Breakpoints";
229
+		objects = (
230
+			DEC2DFB608D1089000E64CA6 /* DebugLog.m:44 */,
231
+		);
232
+	};
233
+	DEAC937008C7FEDE006901D9 /* chartables.c */ = {
234
+		uiCtxt = {
235
+			sepNavIntBoundsRect = "{{0, 0}, {779, 2576}}";
236
+			sepNavSelRange = "{278, 0}";
237
+			sepNavVisRect = "{{0, 0}, {779, 539}}";
238
+			sepNavWindowFrame = "{{15, 164}, {818, 668}}";
239
+		};
240
+	};
241
+	DEC2DF1208D0E75100E64CA6 /* DebugLog.h */ = {
242
+		uiCtxt = {
243
+			sepNavIntBoundsRect = "{{0, 0}, {820, 703}}";
244
+			sepNavSelRange = "{389, 0}";
245
+			sepNavVisRect = "{{0, 0}, {820, 703}}";
246
+			sepNavWindowFrame = "{{84, 0}, {859, 832}}";
247
+		};
248
+	};
249
+	DEC2DF1308D0E75100E64CA6 /* DebugLog.m */ = {
250
+		uiCtxt = {
251
+			sepNavIntBoundsRect = "{{0, 0}, {820, 854}}";
252
+			sepNavSelRange = "{547, 0}";
253
+			sepNavVisRect = "{{0, 0}, {820, 703}}";
254
+			sepNavWindowFrame = "{{672, 0}, {859, 832}}";
255
+		};
256
+	};
257
+	DEC2DFB608D1089000E64CA6 /* DebugLog.m:44 */ = {
258
+		isa = PBXFileBreakpoint;
259
+		actions = (
260
+		);
261
+		continueAfterActions = 0;
262
+		delayBeforeContinue = 0;
263
+		fileReference = DEC2DF1308D0E75100E64CA6 /* DebugLog.m */;
264
+		functionName = "DebugLog()";
265
+		hitCount = 0;
266
+		lineNumber = 44;
267
+		modificationTime = 147916973.662463;
268
+		state = 1;
269
+	};
270
+	DEE41B6B08CFD33700F96F3E /* NSData_HMext.h */ = {
271
+		uiCtxt = {
272
+			sepNavIntBoundsRect = "{{0, 0}, {931, 703}}";
273
+			sepNavSelRange = "{176, 0}";
274
+			sepNavVisRect = "{{0, 0}, {931, 703}}";
275
+			sepNavWindowFrame = "{{15, 0}, {970, 832}}";
276
+		};
277
+	};
278
+	DEE41B6C08CFD33700F96F3E /* NSData_HMext.m */ = {
279
+		uiCtxt = {
280
+			sepNavIntBoundsRect = "{{0, 0}, {931, 3038}}";
281
+			sepNavSelRange = "{2524, 0}";
282
+			sepNavVisRect = "{{0, 1245}, {931, 703}}";
283
+			sepNavWindowFrame = "{{638, 0}, {970, 832}}";
284
+		};
285
+	};
286
+}
0 287
new file mode 100644
... ...
@@ -0,0 +1,80 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<Scheme
3
+   LastUpgradeVersion = "1010"
4
+   version = "1.3">
5
+   <BuildAction
6
+      parallelizeBuildables = "YES"
7
+      buildImplicitDependencies = "YES">
8
+      <BuildActionEntries>
9
+         <BuildActionEntry
10
+            buildForTesting = "YES"
11
+            buildForRunning = "YES"
12
+            buildForProfiling = "YES"
13
+            buildForArchiving = "YES"
14
+            buildForAnalyzing = "YES">
15
+            <BuildableReference
16
+               BuildableIdentifier = "primary"
17
+               BlueprintIdentifier = "8D57630D048677EA00EA77CD"
18
+               BuildableName = "Lisp Metadata Importer.mdimporter"
19
+               BlueprintName = "Lisp Metadata Importer"
20
+               ReferencedContainer = "container:Lisp Metadata Importer.xcodeproj">
21
+            </BuildableReference>
22
+         </BuildActionEntry>
23
+      </BuildActionEntries>
24
+   </BuildAction>
25
+   <TestAction
26
+      buildConfiguration = "Debug"
27
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
28
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
29
+      shouldUseLaunchSchemeArgsEnv = "YES">
30
+      <Testables>
31
+      </Testables>
32
+      <AdditionalOptions>
33
+      </AdditionalOptions>
34
+   </TestAction>
35
+   <LaunchAction
36
+      buildConfiguration = "Debug"
37
+      selectedDebuggerIdentifier = "Xcode.DebuggerFoundation.Debugger.LLDB"
38
+      selectedLauncherIdentifier = "Xcode.DebuggerFoundation.Launcher.LLDB"
39
+      launchStyle = "0"
40
+      useCustomWorkingDirectory = "NO"
41
+      ignoresPersistentStateOnLaunch = "NO"
42
+      debugDocumentVersioning = "YES"
43
+      debugServiceExtension = "internal"
44
+      allowLocationSimulation = "YES">
45
+      <MacroExpansion>
46
+         <BuildableReference
47
+            BuildableIdentifier = "primary"
48
+            BlueprintIdentifier = "8D57630D048677EA00EA77CD"
49
+            BuildableName = "Lisp Metadata Importer.mdimporter"
50
+            BlueprintName = "Lisp Metadata Importer"
51
+            ReferencedContainer = "container:Lisp Metadata Importer.xcodeproj">
52
+         </BuildableReference>
53
+      </MacroExpansion>
54
+      <AdditionalOptions>
55
+      </AdditionalOptions>
56
+   </LaunchAction>
57
+   <ProfileAction
58
+      buildConfiguration = "Release"
59
+      shouldUseLaunchSchemeArgsEnv = "YES"
60
+      savedToolIdentifier = ""
61
+      useCustomWorkingDirectory = "NO"
62
+      debugDocumentVersioning = "YES">
63
+      <MacroExpansion>
64
+         <BuildableReference
65
+            BuildableIdentifier = "primary"
66
+            BlueprintIdentifier = "8D57630D048677EA00EA77CD"
67
+            BuildableName = "Lisp Metadata Importer.mdimporter"
68
+            BlueprintName = "Lisp Metadata Importer"
69
+            ReferencedContainer = "container:Lisp Metadata Importer.xcodeproj">
70
+         </BuildableReference>
71
+      </MacroExpansion>
72
+   </ProfileAction>
73
+   <AnalyzeAction
74
+      buildConfiguration = "Debug">
75
+   </AnalyzeAction>
76
+   <ArchiveAction
77
+      buildConfiguration = "Release"
78
+      revealArchiveInOrganizer = "YES">
79
+   </ArchiveAction>
80
+</Scheme>
0 81
new file mode 100644
... ...
@@ -0,0 +1,27 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>SchemeUserState</key>
6
+	<dict>
7
+		<key>Lisp Metadata Importer.xcscheme_^#shared#^_</key>
8
+		<dict>
9
+			<key>orderHint</key>
10
+			<integer>0</integer>
11
+		</dict>
12
+		<key>LispMetadataImporterTest.xcscheme_^#shared#^_</key>
13
+		<dict>
14
+			<key>orderHint</key>
15
+			<integer>1</integer>
16
+		</dict>
17
+	</dict>
18
+	<key>SuppressBuildableAutocreation</key>
19
+	<dict>
20
+		<key>8D57630D048677EA00EA77CD</key>
21
+		<dict>
22
+			<key>primary</key>
23
+			<true/>
24
+		</dict>
25
+	</dict>
26
+</dict>
27
+</plist>
0 28
new file mode 100644
... ...
@@ -0,0 +1,179 @@
1
+* Lisp Metadata Importer, a Spotlight Plugin.
2
+  
3
+fiddlerwoaroof's note: I took this code from
4
+http://lemonodor.com/archives/001232.html and cleaned it up to work
5
+with modern OS X/macOS: I removed AGRegex and just use
6
+NSRegularExpression and made other minor tweaks to get it to build and
7
+run on High Sierrra.  
8
+
9
+* Lemonodor's README (extracted from README.pdf, typos mine :) ):
10
+
11
+This importer plugin indexes files with .lisp, .lsp and .cl extensions
12
+using the Spotlight search engine that was introduced by Apple in OS X
13
+10.4.  You might notice that even before you install this plugin that
14
+some of your Lisp files have already been indexed by Spotlight. It is
15
+possible that something on your system set the type of some files as
16
+“TEXT”, in which case the default Spotlight text indexer will process
17
+the files. This only happens on a file-by-file basis, though, whereas
18
+the Lisp Metadata Importer instructs the system to index all files
19
+with the extensions listed above, regardless of whether or not the
20
+system already thinks they’re text files. The Lisp importer also does
21
+some Lisp-specific indexing that you might find more useful than the
22
+default text indexing.
23
+
24
+** How do I install it?
25
+
26
+ Copy the Lisp Metadata Importer.mdimporter file into the
27
+ /Library/Spotlight folder.
28
+
29
+** How do I uninstall it?
30
+
31
+ Remove the Lisp Metadata Importer.mdimporter file from the
32
+ /Library/Spotlight folder.
33
+
34
+** How do I test it once it is installed?
35
+
36
+ Try indexing a single Lisp file using the mdimport command. When you
37
+ run mdimport with the –d1 flag it will tell you which plugin it’s
38
+ using, if any, to index the file. You should see a reference to the
39
+ Lisp Metadata Importer.mdimporter file.  Once you’ve run mdimport, use
40
+ the mdls command to look at the metadata associated with the file. The
41
+ important things to look for are that the kMDItemContentType is
42
+ “com.lemonodor.lisp-source”, and that there are some attributes with
43
+ names that begin with “org_lisp”, like “org_lisp_defmacros” or
44
+ “org_lisp_defuns”.
45
+
46
+ #+BEGIN_SRC sh
47
+   lem:~ $ mdimport -d1 variables.lisp
48
+   2005-09-15 12:05:55.493 mdimport[6962] Import '/Users/wiseman/variables.lisp' type
49
+   'com.lemonodor.lisp-source' using
50
+   'file://localhost/Library/Spotlight/Lisp%20Metadata%20Importer.mdimporter/'
51
+                  lem:~ $ mdls variables.lisp
52
+   variables.lisp -------------
53
+   kMDItemAttributeChangeDate     = 2005-09-08 11:30:18 -0700
54
+   kMDItemContentCreationDate     = 2005-09-02 17:41:07 -0700
55
+   kMDItemContentModificationDate = 2005-09-02 17:41:08 -0700
56
+   kMDItemContentType             = "com.lemonodor.lisp-source"
57
+   kMDItemContentTypeTree         = (
58
+       "com.lemonodor.lisp-source",
59
+       "public.source-code",
60
+       "public.plain-text",
61
+       "public.text",
62
+       "public.data",
63
+       "public.item",
64
+                                        "public.content"
65
+   )
66
+   kMDItemDisplayName             = "variables.lisp"
67
+   # and on and on, until finally...
68
+               org_lisp_defclasses
69
+   org_lisp_defgenerics
70
+   org_lisp_definitions
71
+       foo,
72
+       "(setf foo)",
73
+       "oh-noe",
74
+       "*oh-no*",
75
+       "*hee-ho*",
76
+       "+thing+",
77
+       "i-dont-think-so",
78
+       "BRAIN-CELL",
79
+       "(RAT-BRAIN-CELL",
80
+       attack,
81
+       attack,
82
+       "(setf mood)",
83
+       "(setf mood)"
84
+   )
85
+   org_lisp_defmacros
86
+   org_lisp_defmethods
87
+   org_lisp_defstructs
88
+   org_lisp_defuns
89
+   org_lisp_defvars
90
+   = ("i-dont-think-so")
91
+   = (attack, "(setf mood)", "(setf mood)")
92
+   = (
93
+                                     = ("oh-noe")
94
+   = (attack, "(setf mood)")
95
+   = ("BRAIN-CELL", "RAT-BRAIN-CELL")
96
+   = (foo, "(setf foo)")
97
+   = ("*oh-no*", "*hee-ho*", "+thing+")
98
+ #+END_SRC
99
+
100
+ If you see those attributes then the importer is working correctly.
101
+ If the importer doesn’t seem to be working and you’ve double checked
102
+ to make sure you copied it to the correct folder, try the mdimport –r
103
+ trick in the next question & answer; it’s the equivalent of kicking a
104
+ malfunctioning jukebox.
105
+
106
+** How do I index all my Lisp files?
107
+
108
+ Use mdimport again, this time with the –r flag, and passing it the
109
+ path to the Lisp plugin.
110
+
111
+ #+BEGIN_SRC sh
112
+   lem:~ $ mdimport -r /Library/Spotlight/Lisp\ Metadata\ Importer.mdimporter/
113
+   2005-09-15 12:41:38.650 mdimport[7169] Asking server to reimport files with UTIs: (
114
+       "dyn.ah62d4rv4ge8024pxsa",
115
+       "com.lemonodor.lisp-source",
116
+       "dyn.ah62d4rv4gq81k3p2su11uppqrf31appxr741e25f",
117
+       "dyn.ah62d4rv4ge80265u",
118
+       "dyn.ah62d4rv4ge80g5a"
119
+   )
120
+ #+END_SRC
121
+
122
+** What exactly is being indexed?
123
+ The Lisp metadata importer indexes the definitions contained in a
124
+ file. This includes functions, macros, classes, methods, generic
125
+ functions, structures, defvars, defparameters and defconstants. It
126
+ also includes any object FOO defined by a form that looks like
127
+ (“defsomething FOO ...)”. In addition to definitions, the entire
128
+ contents of the file are indexed for full text queries.
129
+
130
+** How do I search for something?
131
+ The GUI way is to hit Command-F in the finder to bring up a Find
132
+ window. Click on one one of the attributes and select “Other...”. to
133
+ see a list of other attributes: Choose one of the Lisp importer’s
134
+ attributes from the list that comes up (you can type “lisp” into the
135
+ search field on the upper right to filter out the non-Lisp
136
+ attributes):
137
+ Now enter the text you’d like to search for and watch the matching
138
+ files appear:
139
+ Some people have reported that the Lisp-specific attributes weren’t
140
+ available in the Find dialog until they re-launched the Finder (to
141
+ re-launch the finder, hit Command-Option-Esc and then select the
142
+ Finder in the “Force Quit Applications” dialog that pops up).  The
143
+ non-GUI way to do Spotlight searches is to use the mdfind command. I
144
+ did this the other day when someone on IRC asked how to do
145
+ search-and-replace on a string. I knew I had written a function to do
146
+ that, but I couldn’t remember which project the code was in.  (It
147
+ turned out I had a couple implementations lying around.)
148
+ The Spotlight query language used by mdfind is documented online by
149
+ Apple.
150
+
151
+** What are the attributes I can search on and where do they come from in the Lisp file?
152
+
153
+ The following metadata attributes are defined by the Lisp Metadata Importer:
154
+
155
+            | Metadata Attribute   | Defining Forms                          |
156
+            |----------------------+-----------------------------------------|
157
+            | org_lisp_defuns      | defun                                   |
158
+            | org_lisp_defmacros   | defmacro                                |
159
+            | org_lisp_defclasses  | defclass                                |
160
+            | org_lisp_defgeneric  | defgeneric                              |
161
+            | org_lisp_defmethod   | defmethod                               |
162
+            | org_lisp_defstructs  | defstruct                               |
163
+            | org_lisp_defvars     | defvar, defparameter, defconstant       |
164
+            | org_lisp_definitions | Anything defined with a “(def...” form. |
165
+            |----------------------+-----------------------------------------|
166
+
167
+ In addition, the importer sets the kMDItemTextContent attribute to be
168
+ the entire contents of the file, so you can do full text searches.
169
+
170
+** What shortcuts did you take?
171
+
172
+ Here are a few I can think of:
173
+ - The importer only indexes definition forms that are at the beginning of a line.
174
+ - It has a very simple, limited concept of symbol names and Lisp reader syntax, so it can easily become confused.
175
+ - I shouldn’t really use the org_lisp prefix for attribute names.
176
+ - I should try to coordinate with the people writing plugins for Ruby, Python and other languages so we can come up with a common set of source code metadata attributes.
177
+
178
+** Who should you thank?
179
+ Justin Wight, Pierre Mai, Ralph Richard Cook and Bryan O’Connor all helped me to some extent. Thanks, guys!
0 180
new file mode 100644
... ...
@@ -0,0 +1,6 @@
1
+/* Localized versions of Info.plist keys */
2
+
3
+CFBundleName = "Lisp Metadata Importer";
4
+CFBundleShortVersionString = "0.0.2";
5
+CFBundleGetInfoString = "Lisp Metadata Importer version 0.0.1, Copyright (c) 2005 John Wiseman (jjwiseman@yahoo.com)";
6
+NSHumanReadableCopyright = "Copyright (c) 2005 John Wiseman (jjwiseman@yahoo.com)";
0 7
new file mode 100644
... ...
@@ -0,0 +1,17 @@
1
+"org_lisp_definitions" = "Lisp Definitions";
2
+"org_lisp_defuns" = "Lisp Defuns";
3
+"org_lisp_defmethods" = "Lisp Defmethods";
4
+"org_lisp_defgenerics" = "Lisp Defgenerics";
5
+"org_lisp_defmacros" = "Lisp Defmacros";
6
+"org_lisp_defvars" = "Lisp Defvars";
7
+"org_lisp_defclasses" = "Lisp Defclasses";
8
+"org_lisp_defstructs" = "Lisp Defstructs";
9
+
10
+"org_lisp_definitions.Description" = "Functions, classes structs and other objects defined in a Lisp file";
11
+"org_lisp_defuns.Description" = "Functions defined in a Lisp file";
12
+"org_lisp_defmethods.Description" = "Methods defined in a Lisp file";
13
+"org_lisp_defgenerics.Description" = "Generic functions defined in a Lisp file";
14
+"org_lisp_defmacros.Description" = "Macros defined in a Lisp file";
15
+"org_lisp_defvars.Description" = "Variables, parameters and constants defined in a Lisp file";
16
+"org_lisp_defclasses.Description" = "Classes defined in a Lisp file";
17
+"org_lisp_defstructs.Description" = "Structures defined in a Lisp file";
0 18
new file mode 100644
... ...
@@ -0,0 +1,77 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>CFBundleDevelopmentRegion</key>
6
+	<string>English</string>
7
+	<key>CFBundleDocumentTypes</key>
8
+	<array>
9
+		<dict>
10
+			<key>CFBundleTypeRole</key>
11
+			<string>MDImporter</string>
12
+			<key>LSItemContentTypes</key>
13
+			<array>
14
+				<string>org.lisp.lisp-source</string>
15
+			</array>
16
+		</dict>
17
+	</array>
18
+	<key>CFBundleExecutable</key>
19
+	<string>Lisp Metadata Importer</string>
20
+	<key>CFBundleIconFile</key>
21
+	<string></string>
22
+	<key>CFBundleIdentifier</key>
23
+	<string>$(PRODUCT_BUNDLE_IDENTIFIER)</string>
24
+	<key>CFBundleInfoDictionaryVersion</key>
25
+	<string>6.0</string>
26
+	<key>CFBundleVersion</key>
27
+	<string>0.0.2</string>
28
+	<key>CFPlugInDynamicRegisterFunction</key>
29
+	<string></string>
30
+	<key>CFPlugInDynamicRegistration</key>
31
+	<string>NO</string>
32
+	<key>CFPlugInFactories</key>
33
+	<dict>
34
+		<key>12C869B3-3D4B-4DED-B156-5D55D1C64354</key>
35
+		<string>MetadataImporterPluginFactory</string>
36
+	</dict>
37
+	<key>CFPlugInTypes</key>
38
+	<dict>
39
+		<key>8B08C4BF-415B-11D8-B3F9-0003936726FC</key>
40
+		<array>
41
+			<string>12C869B3-3D4B-4DED-B156-5D55D1C64354</string>
42
+		</array>
43
+	</dict>
44
+	<key>CFPlugInUnloadFunction</key>
45
+	<string></string>
46
+	<key>DebugLevel</key>
47
+	<string>DEBUG_LEVEL_OFF</string>
48
+	<key>MaxSourceSizeToIndex</key>
49
+	<integer>500000</integer>
50
+	<key>UTImportedTypeDeclarations</key>
51
+	<array>
52
+		<dict>
53
+			<key>UTTypeConformsTo</key>
54
+			<array>
55
+				<string>public.source-code</string>
56
+			</array>
57
+			<key>UTTypeDescription</key>
58
+			<string>Lisp source code</string>
59
+			<key>UTTypeIdentifier</key>
60
+			<string>org.lisp.lisp-source</string>
61
+			<key>UTTypeTagSpecification</key>
62
+			<dict>
63
+				<key>public.filename-extension</key>
64
+				<array>
65
+					<string>lisp</string>
66
+					<string>cl</string>
67
+					<string>lsp</string>
68
+				</array>
69
+				<key>public.mime-type</key>
70
+				<array>
71
+					<string>text/x-lisp-source</string>
72
+				</array>
73
+			</dict>
74
+		</dict>
75
+	</array>
76
+</dict>
77
+</plist>
0 78
new file mode 100644
... ...
@@ -0,0 +1,26 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+
3
+<schema version="1.0" xmlns="http://www.apple.com/metadata"
4
+    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
+    xsi:schemaLocation="http://www.apple.com/metadata file:///System/Library/Frameworks/CoreServices.framework/Frameworks/Metadata.framework/Resources/MetadataSchema.xsd">
6
+    
7
+    <attributes>
8
+        <attribute name="org_lisp_definitions" multivalued="true" type="CFString"/>
9
+        <attribute name="org_lisp_defuns" multivalued="true" type="CFString"/>
10
+        <attribute name="org_lisp_defmethods" multivalued="true" type="CFString"/>
11
+        <attribute name="org_lisp_defpackages" multivalued="true" type="CFString"/>
12
+        <attribute name="org_lisp_defgenerics" multivalued="true" type="CFString"/>
13
+        <attribute name="org_lisp_defmacros" multivalued="true" type="CFString"/>
14
+        <attribute name="org_lisp_defvars" multivalued="true" type="CFString"/>
15
+        <attribute name="org_lisp_defclasses" multivalued="true" type="CFString"/>
16
+        <attribute name="org_lisp_defstructs" multivalued="true" type="CFString"/>
17
+    </attributes>
18
+    
19
+    <types>
20
+        <type name="org.lisp.lisp-source">
21
+            <allattrs>kMDItemTextContent org_lisp_definitions org_lisp_defuns org_lisp_defmethods org_lisp_defgenerics org_lisp_defmacros org_lisp_defvars org_lisp_defclasses org_lisp_defstructs</allattrs>
22
+            <displayattrs>org_lisp_defpackages org_lisp_defclasses org_lisp_defgenerics org_lisp_defuns org_lisp_defmacros</displayattrs>
23
+        </type>
24
+    </types>
25
+</schema>
26
+
0 27
new file mode 100755
... ...
@@ -0,0 +1,93 @@
1
+# This file describes wrappers and other binary files to CVS.
2
+#
3
+# Wrappers are the concept where directories of files are to be
4
+# treated as a single file.  The intended use is to wrap up a wrapper
5
+# into a single tar such that the tar archive can be treated as a
6
+# single binary file in CVS.
7
+#
8
+# To solve the problem effectively, it was also necessary to be able to
9
+# prevent rcsmerge from merging these files.
10
+#
11
+# Format of wrapper file ($CVSROOT/CVSROOT/cvswrappers or .cvswrappers)
12
+#
13
+#  wildcard	[option value][option value]...
14
+#
15
+#  where option is one of
16
+#  -f	from cvs filter		    value: path to filter
17
+#  -t	to cvs filter		    value: path to filter
18
+#  -m	update methodology	    value: MERGE or COPY
19
+#  -k	RCS keyword expansion mode  value: Any mode valid for -k.
20
+#	(This is an extension to cvs by Bill Bumgardner.)
21
+#
22
+#  and value is a single-quote delimited value.
23
+
24
+# Wrapped files.
25
+
26
+*.nib -k 'b' -f '/Developer/Tools/cvs-unwrap %s' -t '/Developer/Tools/cvs-wrap %s %s' -m 'COPY'
27
+*.palette -k 'b' -f '/Developer/Tools/cvs-unwrap %s' -t '/Developer/Tools/cvs-wrap %s %s' -m 'COPY'
28
+*.rtfd -k 'b' -f '/Developer/Tools/cvs-unwrap %s' -t '/Developer/Tools/cvs-wrap %s %s' -m 'COPY'
29
+*.wbpalette   -k 'b' -f '/Developer/Tools/cvs-unwrap %s' -t '/Developer/Tools/cvs-wrap %s %s' -m 'COPY'
30
+*.glyphgenerator   -k 'b' -f '/Developer/Tools/cvs-unwrap %s' -t '/Developer/Tools/cvs-wrap %s %s' -m 'COPY'
31
+*.clr   -k 'b' -f '/Developer/Tools/cvs-unwrap %s' -t '/Developer/Tools/cvs-wrap %s %s' -m 'COPY'
32
+*.eomodeld   -k 'b' -f '/Developer/Tools/cvs-unwrap %s' -t '/Developer/Tools/cvs-wrap %s %s' -m 'COPY'
33
+
34
+
35
+# Wrapped directories.
36
+
37
+*.wrapdir  -k 'b' -f '/Developer/Tools/cvs-unwrap %s' -t '/Developer/Tools/cvs-wrap %s %s' -m 'COPY'
38
+
39
+# Binary files.
40
+
41
+*.tiff -k 'b' -m 'COPY'
42
+*.TIFF -k 'b' -m 'COPY'
43
+*.ps   -k 'b' -m 'COPY'
44
+*.eps  -k 'b' -m 'COPY'
45
+*.ico  -k 'b' -m 'COPY'
46
+*.ICO  -k 'b' -m 'COPY'
47
+*.snd  -k 'b' -m 'COPY'
48
+*.bmp  -k 'b' -m 'COPY'
49
+*.BMP  -k 'b' -m 'COPY'
50
+*.jpg  -k 'b' -m 'COPY'
51
+*.JPG  -k 'b' -m 'COPY'
52
+*.jpeg  -k 'b' -m 'COPY'
53
+*.JPEG  -k 'b' -m 'COPY'
54
+*.gif  -k 'b' -m 'COPY'
55
+*.GIF  -k 'b' -m 'COPY'
56
+*.lib -k 'b' -m 'COPY'
57
+*.LIB -k 'b' -m 'COPY'
58
+*.tif  -k 'b' -m 'COPY'
59
+*.TIF  -k 'b' -m 'COPY'
60
+*.tar  -k 'b' -m 'COPY'
61
+*.exe  -k 'b' -m 'COPY'
62
+*.EXE  -k 'b' -m 'COPY'
63
+*.dll  -k 'b' -m 'COPY'
64
+*.DLL  -k 'b' -m 'COPY'
65
+*.ex_  -k 'b' -m 'COPY'
66
+*.ins  -k 'b' -m 'COPY'
67
+*.class  -k 'b' -m 'COPY'
68
+*.wordbreak  -k 'b' -m 'COPY'
69
+*.doc  -k 'b' -m 'COPY'
70
+*.pdf  -k 'b' -m 'COPY'
71
+*.ppt  -k 'b' -m 'COPY'
72
+*.fm  -k 'b' -m 'COPY'
73
+*.OPN -k 'b' -m 'COPY'
74
+*.BRO -k 'b' -m 'COPY'
75
+*.BPT -k 'b' -m 'COPY'
76
+*.MAK -k 'b' -m 'COPY'
77
+*.prj -k 'b' -m 'COPY'
78
+*.jar -k 'b' -m 'COPY'
79
+*.zip -k 'b' -m 'COPY'
80
+*.mcp -k 'b' -m 'COPY'
81
+*.COM -k 'b' -m 'COPY'
82
+*.com -k 'b' -m 'COPY'
83
+*.DAT -k 'b' -m 'COPY'
84
+*.dat -k 'b' -m 'COPY'
85
+*.PQG -k 'b' -m 'COPY'
86
+*.pqg -k 'b' -m 'COPY'
87
+*.OVL -k 'b' -m 'COPY'
88
+*.ovl -k 'b' -m 'COPY'
89
+*.objectplant -k 'b' -m 'COPY'
90
+*.so -k 'b' -m 'COPY'
91
+*.so.3 -k 'b' -m 'COPY'
92
+*.sl -k 'b' -m 'COPY'
93
+*.strings -k 'b' -m 'COPY'
0 94
new file mode 100644
... ...
@@ -0,0 +1,244 @@
1
+// !$*UTF8*$!
2
+{
3
+	0867D690FE84028FC02AAC07 = {
4
+		activeBuildStyle = 014CEA440018CDF011CA2923;
5
+		activeExecutable = 2467EEE9050859D30078EF04;
6
+		activeTarget = 2467EEE7050859D30078EF04;
7
+		addToTargets = (
8
+		);
9
+		breakpoints = (
10
+		);
11
+		executables = (
12
+			2467EEE9050859D30078EF04,
13
+		);
14
+		perUserDictionary = {
15
+			PBXPerProjectTemplateStateSaveDate = 85175762;
16
+			PBXWorkspaceContents = (
17
+				{
18
+					LeftSlideOut = {
19
+						Split0 = {
20
+							Split0 = {
21
+								NavContent0 = {
22
+									bookmark = 24DBFEBB0513AFD900FFD540;
23
+									history = (
24
+										24DBFEBA0513AFD900FFD540,
25
+									);
26
+								};
27
+								NavCount = 1;
28
+								NavGeometry0 = {
29
+									Frame = "{{0, 0}, {614, 465}}";
30
+									NavBarVisible = YES;
31
+								};
32
+								NavSplitVertical = NO;
33
+							};
34
+							SplitCount = 1;
35
+							Tab1 = {
36
+								Debugger = {
37
+									Split0 = {
38
+										SplitCount = 2;
39
+									};
40
+									SplitCount = 1;
41
+									TabCount = 2;
42
+								};
43
+								LauncherConfigVersion = 7;
44
+							};
45
+							Tab2 = {
46
+								LauncherConfigVersion = 3;
47
+								Runner = {
48
+								};
49
+							};
50
+							TabCount = 5;
51
+						};
52
+						SplitCount = 1;
53
+						Tab1 = {
54
+							OptionsSetName = "Hierarchy, all classes";
55
+						};
56
+						TabCount = 5;
57
+					};
58
+				},
59
+			);
60
+			PBXWorkspaceGeometries = (
61
+				{
62
+					ContentSize = "{800, 512}";
63
+					LeftSlideOut = {
64
+						ActiveTab = 0;
65
+						ActiveTabName = PBXGroupTreeModule;
66
+						Collapsed = NO;
67
+						Frame = "{{0, 23}, {800, 489}}";
68
+						Split0 = {
69
+							Collapsed = NO;
70
+							Frame = "{{186, 0}, {614, 489}}";
71
+							Split0 = {
72
+								Frame = "{{0, 24}, {614, 465}}";
73
+							};
74
+							SplitCount = 1;
75
+							Tab0 = {
76
+								Frame = "{{0, 0}, {571, 214}}";
77
+							};
78
+							Tab1 = {
79
+								Debugger = {
80
+									Collapsed = NO;
81
+									Frame = "{{0, 0}, {571, 189}}";
82
+									Split0 = {
83
+										Frame = "{{0, 24}, {571, 165}}";
84
+										Split0 = {
85
+											Frame = "{{0, 0}, {279, 165}}";
86
+										};
87
+										Split1 = {
88
+											DebugVariablesTableConfiguration = (
89
+												Name,
90
+												123,
91
+												Value,
92
+												85,
93
+												Summary,
94
+												62.123,
95
+											);
96
+											Frame = "{{288, 0}, {283, 165}}";
97
+										};
98
+										SplitCount = 2;
99
+									};
100
+									SplitCount = 1;
101
+									Tab0 = {
102
+										Frame = "{{0, 0}, {100, 50}}";
103
+									};
104
+									Tab1 = {
105
+										Frame = "{{0, 0}, {100, 50}}";
106
+									};
107
+									TabCount = 2;
108
+									TabsVisible = YES;
109
+								};
110
+								Frame = "{{0, 0}, {571, 189}}";
111
+								LauncherConfigVersion = 7;
112
+							};
113
+							Tab2 = {
114
+								Frame = "{{0, 0}, {573, 215}}";
115
+								LauncherConfigVersion = 3;
116
+								Runner = {
117
+									Frame = "{{0, 0}, {573, 215}}";
118
+								};
119
+							};
120
+							Tab3 = {
121
+								BuildMessageFrame = "{{0, 0}, {616, 222}}";
122
+								BuildTranscriptFrame = "{{0, 231}, {616, 0}}";
123
+								BuildTranscriptFrameExpanded = YES;
124
+								Frame = "{{0, 0}, {614, 253}}";
125
+							};
126
+							Tab4 = {
127
+								Frame = "{{0, 0}, {614, 295}}";
128
+							};
129
+							TabCount = 5;
130
+							TabsVisible = YES;
131
+						};
132
+						SplitCount = 1;
133
+						Tab0 = {
134
+							Frame = "{{0, 0}, {162, 489}}";
135
+							GroupTreeTableConfiguration = (
136
+								TargetStatusColumn,
137
+								18,
138
+								MainColumn,
139
+								129,
140
+							);
141
+						};
142
+						Tab1 = {
143
+							ClassesFrame = "{{0, 0}, {247, 330}}";
144
+							ClassesTreeTableConfiguration = (
145
+								PBXBookColumnIdentifier,
146
+								20,
147
+								PBXClassColumnIdentifier,
148
+								204,
149
+							);
150
+							Frame = "{{0, 0}, {245, 549}}";
151
+							MembersFrame = "{{0, 339}, {247, 210}}";
152
+							MembersTreeTableConfiguration = (
153
+								PBXBookColumnIdentifier,
154
+								20,
155
+								PBXMethodColumnIdentifier,
156
+								203,
157
+							);
158
+						};
159
+						Tab2 = {
160
+							Frame = "{{0, 0}, {226, 469}}";
161
+						};
162
+						Tab3 = {
163
+							Frame = "{{0, 0}, {191, 489}}";
164
+							TargetTableConfiguration = (
165
+								ActiveObject,
166
+								16,
167
+								ObjectNames,
168
+								202.296,
169
+							);
170
+						};
171
+						Tab4 = {
172
+							BreakpointsTreeTableConfiguration = (
173
+								breakpointColumn,
174
+								138,
175
+								enabledColumn,
176
+								31,
177
+							);
178
+							Frame = "{{0, 0}, {191, 489}}";
179
+						};
180
+						TabCount = 5;
181
+						TabsVisible = YES;
182
+					};
183
+					NavBarShownByDefault = YES;
184
+					StatusViewVisible = YES;
185
+					Template = F5F68CF101725D4C0D7A8F4C;
186
+					ToolbarVisible = YES;
187
+					WindowLocation = "{0, 4}";
188
+				},
189
+			);
190
+			PBXWorkspaceStateSaveDate = 85175762;
191
+		};
192
+		perUserProjectItems = {
193
+			24DBFEBA0513AFD900FFD540 = 24DBFEBA0513AFD900FFD540;
194
+			24DBFEBB0513AFD900FFD540 = 24DBFEBB0513AFD900FFD540;
195
+		};
196
+		projectwideBuildSettings = {
197
+		};
198
+		wantsIndex = 1;
199
+		wantsSCM = -1;
200
+	};
201
+	0867D69CFE84028FC02AAC07 = {
202
+		activeExec = 0;
203
+	};
204
+	2467EEE7050859D30078EF04 = {
205
+		activeExec = 0;
206
+		executables = (
207
+			2467EEE9050859D30078EF04,
208
+		);
209
+	};
210
+	2467EEE9050859D30078EF04 = {
211
+		activeArgIndex = 2147483647;
212
+		activeArgIndices = (
213
+		);
214
+		argumentStrings = (
215
+		);
216
+		configStateDict = {
217
+		};
218
+		debuggerPlugin = GDBDebugging;
219
+		dylibVariantSuffix = "";
220
+		enableDebugStr = 1;
221
+		environmentEntries = (
222
+		);
223
+		isa = PBXExecutable;
224
+		name = RegexTest;
225
+		shlibInfoDictList = (
226
+		);
227
+		sourceDirectories = (
228
+		);
229
+	};
230
+	24DBFEBA0513AFD900FFD540 = {
231
+		fRef = F986DBD403876F3201A58F65;
232
+		isa = PBXBookmark;
233
+	};
234
+	24DBFEBB0513AFD900FFD540 = {
235
+		fRef = F986DBD403876F3201A58F65;
236
+		isa = PBXTextBookmark;
237
+		name = "README.txt: 1";
238
+		rLen = 0;
239
+		rLoc = 0;
240
+		rType = 0;
241
+		vrLen = 1587;
242
+		vrLoc = 0;
243
+	};
244
+}
0 245
new file mode 100644
... ...
@@ -0,0 +1,586 @@
1
+// !$*UTF8*$!
2
+{
3
+	archiveVersion = 1;
4
+	classes = {
5
+	};
6
+	objectVersion = 38;
7
+	objects = {
8
+		014CEA440018CDF011CA2923 = {
9
+			buildRules = (
10
+			);
11
+			buildSettings = {
12
+				COPY_PHASE_STRIP = NO;
13
+				OPTIMIZATION_CFLAGS = "-O0";
14
+			};
15
+			isa = PBXBuildStyle;
16
+			name = Development;
17
+		};
18
+		014CEA450018CDF011CA2923 = {
19
+			buildRules = (
20
+			);
21
+			buildSettings = {
22
+				COPY_PHASE_STRIP = YES;
23
+			};
24
+			isa = PBXBuildStyle;
25
+			name = Deployment;
26
+		};
27
+//010
28
+//011
29
+//012
30
+//013
31
+//014
32
+//030
33
+//031
34
+//032
35
+//033
36
+//034
37
+		034768DFFF38A50411DB9C8B = {
38
+			children = (
39
+				034768E0FF38A50411DB9C8B,
40
+				2467EEE8050859D30078EF04,
41
+			);
42
+			isa = PBXGroup;
43
+			name = Products;
44
+			refType = 4;
45
+		};
46
+		034768E0FF38A50411DB9C8B = {
47
+			isa = PBXFrameworkReference;
48
+			path = AGRegex.framework;
49
+			refType = 3;
50
+		};
51
+//030
52
+//031
53
+//032
54
+//033
55
+//034
56
+//080
57
+//081
58
+//082
59
+//083
60
+//084
61
+		0867D690FE84028FC02AAC07 = {
62
+			buildStyles = (
63
+				014CEA440018CDF011CA2923,
64
+				014CEA450018CDF011CA2923,
65
+			);
66
+			hasScannedForEncodings = 1;
67
+			isa = PBXProject;
68
+			mainGroup = 0867D691FE84028FC02AAC07;
69
+			productRefGroup = 034768DFFF38A50411DB9C8B;
70
+			projectDirPath = "";
71
+			targets = (
72
+				0867D69CFE84028FC02AAC07,
73
+				2467EEE7050859D30078EF04,
74
+			);
75
+		};
76
+		0867D691FE84028FC02AAC07 = {
77
+			children = (
78
+				F986DBD403876F3201A58F65,
79
+				F98CF71E0387044501DE5C57,
80
+				F9302D8B0429B15D01FE1BD3,
81
+				24A8E18E0512E33F00C9C7CA,
82
+				24ADE5EE050886DD00DAF17A,
83
+				2467EEFC05085A1E0078EF04,
84
+				0867D69AFE84028FC02AAC07,
85
+				034768DFFF38A50411DB9C8B,
86
+			);
87
+			isa = PBXGroup;
88
+			name = AGRegex;
89
+			refType = 4;
90
+		};
91
+		0867D69AFE84028FC02AAC07 = {
92
+			children = (
93
+				2467EEEF05085A050078EF04,
94
+				0867D69BFE84028FC02AAC07,
95
+			);
96
+			isa = PBXGroup;
97
+			name = Frameworks;
98
+			refType = 4;
99
+		};
100
+		0867D69BFE84028FC02AAC07 = {
101
+			isa = PBXFrameworkReference;
102
+			name = Foundation.framework;
103
+			path = /System/Library/Frameworks/Foundation.framework;
104
+			refType = 0;
105
+		};
106
+		0867D69CFE84028FC02AAC07 = {
107
+			buildPhases = (
108
+				0867D69DFE84028FC02AAC07,
109
+				0867D69EFE84028FC02AAC07,
110
+				0867D69FFE84028FC02AAC07,
111
+				0867D6A0FE84028FC02AAC07,
112
+				0867D6A2FE84028FC02AAC07,
113
+			);
114
+			buildSettings = {
115
+				DYLIB_COMPATIBILITY_VERSION = 1;
116
+				DYLIB_CURRENT_VERSION = 1;
117
+				FRAMEWORK_SEARCH_PATHS = "";
118
+				FRAMEWORK_VERSION = A;
119
+				HEADER_SEARCH_PATHS = "";
120
+				INSTALL_PATH = "@executable_path/../Frameworks/";
121
+				LIBRARY_SEARCH_PATHS = "";
122
+				OTHER_CFLAGS = "-DSUPPORT_UTF8 -DPOSIX_MALLOC_THRESHOLD=10";
123
+				PRODUCT_NAME = AGRegex;
124
+				SECTORDER_FLAGS = "";
125
+				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
126
+				WRAPPER_EXTENSION = framework;
127
+			};
128
+			dependencies = (
129
+			);
130
+			isa = PBXFrameworkTarget;
131
+			name = AGRegex;
132
+			productInstallPath = "@executable_path/../Frameworks/";
133
+			productName = AGRegex;
134
+			productReference = 034768E0FF38A50411DB9C8B;
135
+			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
136
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
137
+<plist version=\"1.0\">
138
+<dict>
139
+	<key>CFBundleDevelopmentRegion</key>
140
+	<string>English</string>
141
+	<key>CFBundleExecutable</key>
142
+	<string>AGRegex</string>
143
+	<key>CFBundleIconFile</key>
144
+	<string></string>
145
+	<key>CFBundleInfoDictionaryVersion</key>
146
+	<string>6.0</string>
147
+	<key>CFBundlePackageType</key>
148
+	<string>FMWK</string>
149
+	<key>CFBundleSignature</key>
150
+	<string>????</string>
151
+	<key>CFBundleVersion</key>
152
+	<string>0.1</string>
153
+	<key>NSPrincipalClass</key>
154
+	<string></string>
155
+</dict>
156
+</plist>
157
+";
158
+		};
159
+		0867D69DFE84028FC02AAC07 = {
160
+			buildActionMask = 2147483647;
161
+			files = (
162
+				F98CF7200387044501DE5C57,
163
+				24ADE697050886DD00DAF17A,
164
+				24ADE6E3050886DD00DAF17A,
165
+				24ADE6F6050886DD00DAF17A,
166
+			);
167
+			isa = PBXHeadersBuildPhase;
168
+			runOnlyForDeploymentPostprocessing = 0;
169
+		};
170
+		0867D69EFE84028FC02AAC07 = {
171
+			buildActionMask = 2147483647;
172
+			files = (
173
+			);
174
+			isa = PBXResourcesBuildPhase;
175
+			runOnlyForDeploymentPostprocessing = 0;
176
+		};
177
+		0867D69FFE84028FC02AAC07 = {
178
+			buildActionMask = 2147483647;
179
+			files = (
180
+				F9302D8C0429B15D01FE1BD3,
181
+				24ADE695050886DD00DAF17A,
182
+				24ADE6DE050886DD00DAF17A,
183
+				24ADE6EB050886DD00DAF17A,
184
+				24ADE6F4050886DD00DAF17A,
185
+				24ADE70A050886DD00DAF17A,
186
+			);
187
+			isa = PBXSourcesBuildPhase;
188
+			runOnlyForDeploymentPostprocessing = 0;
189
+		};
190
+		0867D6A0FE84028FC02AAC07 = {
191
+			buildActionMask = 2147483647;
192
+			files = (
193
+				F98CF71D0387043401DE5C57,
194
+			);
195
+			isa = PBXFrameworksBuildPhase;
196
+			runOnlyForDeploymentPostprocessing = 0;
197
+		};
198
+		0867D6A2FE84028FC02AAC07 = {
199
+			buildActionMask = 2147483647;
200
+			files = (
201
+			);
202
+			isa = PBXRezBuildPhase;
203
+			runOnlyForDeploymentPostprocessing = 0;
204
+		};
205
+//080
206
+//081
207
+//082
208
+//083
209
+//084
210
+//240
211
+//241
212
+//242
213
+//243
214
+//244
215
+		2467EEE2050859D30078EF04 = {
216
+			buildActionMask = 2147483647;
217
+			files = (
218
+				2467EF0005085A750078EF04,
219
+			);
220
+			isa = PBXHeadersBuildPhase;
221
+			runOnlyForDeploymentPostprocessing = 0;
222
+		};
223
+		2467EEE3050859D30078EF04 = {
224
+			buildActionMask = 2147483647;
225
+			files = (
226
+				24867F2205085F65009EDC24,
227
+			);
228
+			isa = PBXResourcesBuildPhase;
229
+			runOnlyForDeploymentPostprocessing = 0;
230
+		};
231
+		2467EEE4050859D30078EF04 = {
232
+			buildActionMask = 2147483647;
233
+			files = (
234
+				2467EF0105085A750078EF04,
235
+				2467EF0205085A750078EF04,
236
+			);
237
+			isa = PBXSourcesBuildPhase;
238
+			runOnlyForDeploymentPostprocessing = 0;
239
+		};
240
+		2467EEE5050859D30078EF04 = {
241
+			buildActionMask = 2147483647;
242
+			files = (
243
+				2467EEF005085A050078EF04,
244
+				2467EF1805085B3A0078EF04,
245
+			);
246
+			isa = PBXFrameworksBuildPhase;
247
+			runOnlyForDeploymentPostprocessing = 0;
248
+		};
249
+		2467EEE6050859D30078EF04 = {
250
+			buildActionMask = 2147483647;
251
+			files = (
252
+			);
253
+			isa = PBXRezBuildPhase;
254
+			runOnlyForDeploymentPostprocessing = 0;
255
+		};
256
+		2467EEE7050859D30078EF04 = {
257
+			buildPhases = (
258
+				2467EEE2050859D30078EF04,
259
+				2467EEEB050859EE0078EF04,
260
+				2467EEE3050859D30078EF04,
261
+				2467EEE4050859D30078EF04,
262
+				2467EEE5050859D30078EF04,
263
+				2467EEE6050859D30078EF04,
264
+			);
265
+			buildSettings = {
266
+				OTHER_CFLAGS = "";
267
+				OTHER_LDFLAGS = "";
268
+				OTHER_REZFLAGS = "";
269
+				PRODUCT_NAME = RegexTest;
270
+				SECTORDER_FLAGS = "";
271
+				WARNING_CFLAGS = "-Wmost -Wno-four-char-constants -Wno-unknown-pragmas";
272
+				WRAPPER_EXTENSION = app;
273
+			};
274
+			dependencies = (
275
+				2467EEEA050859D60078EF04,
276
+			);
277
+			isa = PBXApplicationTarget;
278
+			name = RegexTest;
279
+			productInstallPath = "$(USER_APPS_DIR)";
280
+			productName = RegexTest;
281
+			productReference = 2467EEE8050859D30078EF04;
282
+			productSettingsXML = "<?xml version=\"1.0\" encoding=\"UTF-8\"?>
283
+<!DOCTYPE plist PUBLIC \"-//Apple Computer//DTD PLIST 1.0//EN\" \"http://www.apple.com/DTDs/PropertyList-1.0.dtd\">
284
+<plist version=\"1.0\">
285
+<dict>
286
+	<key>CFBundleDevelopmentRegion</key>
287
+	<string>English</string>
288
+	<key>CFBundleExecutable</key>
289
+	<string>RegexTest</string>
290
+	<key>CFBundleGetInfoString</key>
291
+	<string></string>
292
+	<key>CFBundleIconFile</key>
293
+	<string></string>
294
+	<key>CFBundleIdentifier</key>
295
+	<string></string>
296
+	<key>CFBundleInfoDictionaryVersion</key>
297
+	<string>6.0</string>
298
+	<key>CFBundleName</key>
299
+	<string></string>
300
+	<key>CFBundlePackageType</key>
301
+	<string>APPL</string>
302
+	<key>CFBundleShortVersionString</key>
303
+	<string></string>
304
+	<key>CFBundleSignature</key>
305
+	<string>????</string>
306
+	<key>CFBundleVersion</key>
307
+	<string>0.0.1d1</string>
308
+	<key>NSMainNibFile</key>
309
+	<string>MainMenu</string>
310
+	<key>NSPrincipalClass</key>
311
+	<string>NSApplication</string>
312
+</dict>
313
+</plist>
314
+";
315
+		};
316
+		2467EEE8050859D30078EF04 = {
317
+			isa = PBXApplicationReference;
318
+			path = RegexTest.app;
319
+			refType = 3;
320
+		};
321
+		2467EEEA050859D60078EF04 = {
322
+			isa = PBXTargetDependency;
323
+			target = 0867D69CFE84028FC02AAC07;
324
+		};
325
+		2467EEEB050859EE0078EF04 = {
326
+			buildActionMask = 2147483647;
327
+			dstPath = "";
328
+			dstSubfolderSpec = 10;
329
+			files = (
330
+				2467EEEE050859F50078EF04,
331
+			);
332
+			isa = PBXCopyFilesBuildPhase;
333
+			runOnlyForDeploymentPostprocessing = 0;
334
+		};
335
+		2467EEEE050859F50078EF04 = {
336
+			fileRef = 034768E0FF38A50411DB9C8B;
337
+			isa = PBXBuildFile;
338
+			settings = {
339
+			};
340
+		};
341
+		2467EEEF05085A050078EF04 = {
342
+			isa = PBXFrameworkReference;
343
+			name = Cocoa.framework;
344
+			path = /System/Library/Frameworks/Cocoa.framework;
345
+			refType = 0;
346
+		};
347
+		2467EEF005085A050078EF04 = {
348
+			fileRef = 2467EEEF05085A050078EF04;
349
+			isa = PBXBuildFile;
350
+			settings = {
351
+			};
352
+		};
353
+		2467EEFC05085A1E0078EF04 = {
354
+			children = (
355
+				2467EEFD05085A750078EF04,
356
+				2467EEFE05085A750078EF04,
357
+				2467EEFF05085A750078EF04,
358
+				24B2073605085EE8001AE9D8,
359
+			);
360
+			isa = PBXGroup;
361
+			name = RegexTest;
362
+			path = "";
363
+			refType = 4;
364
+		};
365
+		2467EEFD05085A750078EF04 = {
366
+			fileEncoding = 30;
367
+			isa = PBXFileReference;
368
+			path = Controller.h;
369
+			refType = 4;
370
+		};
371
+		2467EEFE05085A750078EF04 = {
372
+			fileEncoding = 30;
373
+			isa = PBXFileReference;
374
+			path = Controller.m;
375
+			refType = 4;
376
+		};
377
+		2467EEFF05085A750078EF04 = {
378
+			fileEncoding = 30;
379
+			isa = PBXFileReference;
380
+			path = RegexTest.m;
381
+			refType = 4;
382
+		};
383
+		2467EF0005085A750078EF04 = {
384
+			fileRef = 2467EEFD05085A750078EF04;
385
+			isa = PBXBuildFile;
386
+			settings = {
387
+			};
388
+		};
389
+		2467EF0105085A750078EF04 = {
390
+			fileRef = 2467EEFE05085A750078EF04;
391
+			isa = PBXBuildFile;
392
+			settings = {
393
+			};
394
+		};
395
+		2467EF0205085A750078EF04 = {
396
+			fileRef = 2467EEFF05085A750078EF04;
397
+			isa = PBXBuildFile;
398
+			settings = {
399
+			};
400
+		};
401
+		2467EF1805085B3A0078EF04 = {
402
+			fileRef = 034768E0FF38A50411DB9C8B;
403
+			isa = PBXBuildFile;
404
+			settings = {
405
+			};
406
+		};
407
+		24867F2205085F65009EDC24 = {
408
+			fileRef = 24B2073605085EE8001AE9D8;
409
+			isa = PBXBuildFile;
410
+			settings = {
411
+			};
412
+		};
413
+		24A8E18E0512E33F00C9C7CA = {
414
+			includeInIndex = 1;
415
+			isa = PBXFolderReference;
416
+			path = Documentation;
417
+			refType = 4;
418
+		};
419
+		24ADE5EE050886DD00DAF17A = {
420
+			children = (
421
+				24ADE600050886DD00DAF17A,
422
+				24ADE602050886DD00DAF17A,
423
+				24ADE64B050886DD00DAF17A,
424
+				24ADE650050886DD00DAF17A,
425
+				24ADE658050886DD00DAF17A,
426
+				24ADE661050886DD00DAF17A,
427
+				24ADE663050886DD00DAF17A,
428
+				24ADE677050886DD00DAF17A,
429
+			);
430
+			isa = PBXGroup;
431
+			path = "pcre-4.3";
432
+			refType = 4;
433
+		};
434
+		24ADE600050886DD00DAF17A = {
435
+			fileEncoding = 30;
436
+			isa = PBXFileReference;
437
+			path = chartables.c;
438
+			refType = 4;
439
+		};
440
+		24ADE602050886DD00DAF17A = {
441
+			fileEncoding = 30;
442
+			isa = PBXFileReference;
443
+			path = config.h;
444
+			refType = 4;
445
+		};
446
+		24ADE64B050886DD00DAF17A = {
447
+			fileEncoding = 30;
448
+			isa = PBXFileReference;
449
+			path = get.c;
450
+			refType = 4;
451
+		};
452
+		24ADE650050886DD00DAF17A = {
453
+			fileEncoding = 30;
454
+			isa = PBXFileReference;
455
+			path = internal.h;
456
+			refType = 4;
457
+		};
458
+		24ADE658050886DD00DAF17A = {
459
+			fileEncoding = 30;
460
+			isa = PBXFileReference;
461
+			path = maketables.c;
462
+			refType = 4;
463
+		};
464
+		24ADE661050886DD00DAF17A = {
465
+			fileEncoding = 30;
466
+			isa = PBXFileReference;
467
+			path = pcre.c;
468
+			refType = 4;
469
+		};
470
+		24ADE663050886DD00DAF17A = {
471
+			fileEncoding = 30;
472
+			isa = PBXFileReference;
473
+			path = pcre.h;
474
+			refType = 4;
475
+		};
476
+		24ADE677050886DD00DAF17A = {
477
+			fileEncoding = 30;
478
+			isa = PBXFileReference;
479
+			path = study.c;
480
+			refType = 4;
481
+		};
482
+		24ADE695050886DD00DAF17A = {
483
+			fileRef = 24ADE600050886DD00DAF17A;
484
+			isa = PBXBuildFile;
485
+			settings = {
486
+			};
487
+		};
488
+		24ADE697050886DD00DAF17A = {
489
+			fileRef = 24ADE602050886DD00DAF17A;
490
+			isa = PBXBuildFile;
491
+			settings = {
492
+			};
493
+		};
494
+		24ADE6DE050886DD00DAF17A = {
495
+			fileRef = 24ADE64B050886DD00DAF17A;
496
+			isa = PBXBuildFile;
497
+			settings = {
498
+			};
499
+		};
500
+		24ADE6E3050886DD00DAF17A = {
501
+			fileRef = 24ADE650050886DD00DAF17A;
502
+			isa = PBXBuildFile;
503
+			settings = {
504
+			};
505
+		};
506
+		24ADE6EB050886DD00DAF17A = {
507
+			fileRef = 24ADE658050886DD00DAF17A;
508
+			isa = PBXBuildFile;
509
+			settings = {
510
+			};
511
+		};
512
+		24ADE6F4050886DD00DAF17A = {
513
+			fileRef = 24ADE661050886DD00DAF17A;
514
+			isa = PBXBuildFile;
515
+			settings = {
516
+			};
517
+		};
518
+		24ADE6F6050886DD00DAF17A = {
519
+			fileRef = 24ADE663050886DD00DAF17A;
520
+			isa = PBXBuildFile;
521
+			settings = {
522
+			};
523
+		};
524
+		24ADE70A050886DD00DAF17A = {
525
+			fileRef = 24ADE677050886DD00DAF17A;
526
+			isa = PBXBuildFile;
527
+			settings = {
528
+			};
529
+		};
530
+		24B2073605085EE8001AE9D8 = {
531
+			isa = PBXFileReference;
532
+			path = MainMenu.nib;
533
+			refType = 4;
534
+		};
535
+//240
536
+//241
537
+//242
538
+//243
539
+//244
540
+//F90
541
+//F91
542
+//F92
543
+//F93
544
+//F94
545
+		F9302D8B0429B15D01FE1BD3 = {
546
+			fileEncoding = 30;
547
+			isa = PBXFileReference;
548
+			path = AGRegex.m;
549
+			refType = 4;
550
+		};
551
+		F9302D8C0429B15D01FE1BD3 = {
552
+			fileRef = F9302D8B0429B15D01FE1BD3;
553
+			isa = PBXBuildFile;
554
+			settings = {
555
+			};
556
+		};
557
+		F986DBD403876F3201A58F65 = {
558
+			fileEncoding = 30;
559
+			isa = PBXFileReference;
560
+			path = README.txt;
561
+			refType = 4;
562
+		};
563
+		F98CF71D0387043401DE5C57 = {
564
+			fileRef = 0867D69BFE84028FC02AAC07;
565
+			isa = PBXBuildFile;
566
+			settings = {
567
+			};
568
+		};
569
+		F98CF71E0387044501DE5C57 = {
570
+			fileEncoding = 30;
571
+			isa = PBXFileReference;
572
+			path = AGRegex.h;
573
+			refType = 4;
574
+		};
575
+		F98CF7200387044501DE5C57 = {
576
+			fileRef = F98CF71E0387044501DE5C57;
577
+			isa = PBXBuildFile;
578
+			settings = {
579
+				ATTRIBUTES = (
580
+					Public,
581
+				);
582
+			};
583
+		};
584
+	};
585
+	rootObject = 0867D690FE84028FC02AAC07;
586
+}
0 587
new file mode 100644
... ...
@@ -0,0 +1,15 @@
1
+// Controller.h
2
+//
3
+
4
+#import <Cocoa/Cocoa.h>
5
+
6
+@interface Controller : NSObject {
7
+	IBOutlet NSTextField *patternField, *replacementField, *matchField;
8
+	IBOutlet NSButton *caseInsensitiveButton, *dotAllButton, *extendedButton, *lazyButton, *multilineButton;
9
+	IBOutlet NSTextView *textView;
10
+	BOOL lastMatchWasEmpty;
11
+}
12
+- (IBAction)find:(id)sender;
13
+- (IBAction)replace:(id)sender;
14
+- (IBAction)openDocument:(id)sender;
15
+@end
0 16
new file mode 100644
... ...
@@ -0,0 +1,72 @@
1
+// Controller.m
2
+//
3
+
4
+#import "Controller.h"
5
+#import <AGRegex/AGRegex.h>
6
+
7
+@implementation Controller
8
+
9
+- (IBAction)find:(id)sender {
10
+	NSString *string = [textView string];
11
+	NSRange searchRange, selectedRange = [textView selectedRange];
12
+	
13
+	searchRange.location = selectedRange.location + selectedRange.length;
14
+	if (lastMatchWasEmpty && searchRange.location < [string length]) searchRange.location++;
15
+	searchRange.length = [string length] - searchRange.location;
16
+	
17
+	int options = 0;
18
+	if ([caseInsensitiveButton state] == NSOnState) options |= AGRegexCaseInsensitive;
19
+	if ([dotAllButton state] == NSOnState) options |= AGRegexDotAll;
20
+	if ([extendedButton state] == NSOnState) options |= AGRegexExtended;
21
+	if ([lazyButton state] == NSOnState) options |= AGRegexLazy;
22
+	if ([multilineButton state] == NSOnState) options |= AGRegexMultiline;
23
+	
24
+	AGRegex *regex = [AGRegex regexWithPattern:[patternField stringValue] options:options];	
25
+    AGRegexMatch *match = [regex findInString:string range:searchRange];
26
+    
27
+    if (match) {
28
+		[matchField setStringValue:[NSString stringWithFormat:@"%@ %@", NSStringFromRange([match range]), [match group]]];
29
+		[textView setSelectedRange:[match range]];
30
+		[textView scrollRangeToVisible:[textView selectedRange]];
31
+		if ([match range].length == 0)
32
+			lastMatchWasEmpty = YES;
33
+	}
34
+	else {
35
+		[matchField setStringValue:@"Not found"];
36
+		NSBeep();
37
+	}
38
+}
39
+
40
+- (IBAction)replace:(id)sender {
41
+	NSString *string = [textView string];
42
+	int options = 0;
43
+	
44
+	if ([caseInsensitiveButton state] == NSOnState) options |= AGRegexCaseInsensitive;
45
+	if ([dotAllButton state] == NSOnState) options |= AGRegexDotAll;
46
+	if ([extendedButton state] == NSOnState) options |= AGRegexExtended;
47
+	if ([lazyButton state] == NSOnState) options |= AGRegexLazy;
48
+	if ([multilineButton state] == NSOnState) options |= AGRegexMultiline;
49
+
50
+	AGRegex *regex = [AGRegex regexWithPattern:[patternField stringValue] options:options];
51
+	if ([regex findInString:string])
52
+		[textView setString:[regex replaceWithString:[replacementField stringValue] inString:string]];
53
+	else {
54
+		[matchField setStringValue:@"Not found"];
55
+		NSBeep();
56
+	}
57
+}
58
+
59
+- (IBAction)openDocument:(id)sender {
60
+	NSOpenPanel *openPanel = [NSOpenPanel openPanel];
61
+	if ([openPanel runModalForTypes:nil] == NSOKButton) {
62
+		[textView setString:[NSString stringWithContentsOfFile:[openPanel filename]]];
63
+		[textView setSelectedRange:NSMakeRange(0, 0)];
64
+		[matchField setStringValue:@""];
65
+	}
66
+}
67
+
68
+- (void)textViewDidChangeSelection:(NSNotification *)notification {
69
+	lastMatchWasEmpty = NO;
70
+}
71
+
72
+@end
0 73
new file mode 100644
... ...
@@ -0,0 +1,14 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html><HEAD>
4
+    <title>API Documentation</title>
5
+	<meta name="generator" content="HeaderDoc">
6
+</HEAD>
7
+<BODY bgcolor="#ffffff">
8
+<H1>Documentation for AGRegex.h</H1>
9
+<hr>Use the links in the table of contents to the left to access documentation.<br>
10
+<hr><br><center>(Last Updated 9/12/2003)
11
+<br><font size="-1">HTML documentation generated by <a href="http://www.opensource.apple.com/projects" target="_blank">HeaderDoc</a></font>
12
+</center>
13
+</BODY>
14
+</HTML>
0 15
new file mode 100644
... ...
@@ -0,0 +1,72 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html><HEAD>
4
+    <title>API Documentation</title>
5
+	<meta name="generator" content="HeaderDoc">
6
+</HEAD>
7
+<BODY bgcolor="#ffffff">
8
+<H1>AGRegex</H1><hr>
9
+An Perl-compatible regular expression class.
10
+<hr><br>
11
+An AGRegex is created with -initWithPattern: or -initWithPattern:options: or the corresponding class methods +regexWithPattern: or +regexWithPattern:options:. These take a regular expression pattern string and the bitwise OR of zero or more option flags. For example:
12
+<br><br>
13
+<code>&nbsp;&nbsp;&nbsp;&nbsp;AGRegex *regex = [[AGRegex alloc] initWithPattern:&#64;"(paran|andr)oid" options:AGRegexCaseInsensitive];</code>
14
+<br><br>
15
+Matching is done with -findInString: or -findInString:range: which look for the first occurrence of the pattern in the target string and return an AGRegexMatch or nil if the pattern was not found.
16
+<br><br>
17
+<code>&nbsp;&nbsp;&nbsp;&nbsp;AGRegexMatch *match = [regex findInString:&#64;"paranoid android"];</code>
18
+<br><br>
19
+A match object returns a captured subpattern by -group, -groupAtIndex:, or -groupNamed:, or the range of a captured subpattern by -range, -rangeAtIndex:, or -rangeNamed:. The subpatterns are indexed in order of their opening parentheses, 0 is the entire pattern, 1 is the first capturing subpattern, and so on. -count returns the total number of subpatterns, including the pattern itself. The following prints the result of our last match case:
20
+<br><br>
21
+<code>&nbsp;&nbsp;&nbsp;&nbsp;for (i = 0; i &lt; [match count]; i++)<br />
22
+&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;NSLog(&#64;"%d %&#64; %&#64;", i, NSStringFromRange([match rangeAtIndex:i]), [match groupAtIndex:i]);</code>
23
+<br><br>
24
+<code>&nbsp;&nbsp;&nbsp;&nbsp;0 {0, 8} paranoid<br />
25
+&nbsp;&nbsp;&nbsp;&nbsp;1 {0, 5} paran</code>
26
+<br><br>
27
+If any of the subpatterns didn't match, -groupAtIndex: will  return nil, and -rangeAtIndex: will return {NSNotFound, 0}. For example, if we change our original pattern to "(?:(paran)|(andr))oid" we will get the following output:
28
+<br><br>
29
+<code>&nbsp;&nbsp;&nbsp;&nbsp;0 {0, 8} paranoid<br />
30
+&nbsp;&nbsp;&nbsp;&nbsp;1 {0, 5} paran<br />
31
+&nbsp;&nbsp;&nbsp;&nbsp;2 {2147483647, 0} (null)</code>
32
+<br><br>
33
+-findAllInString: and -findAllInString:range: return an NSArray of all non-overlapping occurrences of the pattern in the target string. -findEnumeratorInString: and -findEnumeratorInString:range: return an NSEnumerator for all non-overlapping occurrences of the pattern in the target string. For example,
34
+<br><br>
35
+<code>&nbsp;&nbsp;&nbsp;&nbsp;NSArray *all = [regex findAllInString:&#64;"paranoid android"];</code>
36
+<br><br>
37
+The first object in the returned array is the match case for "paranoid" and the second object is the match case for "android".
38
+<br><br>
39
+AGRegex provides the methods -replaceWithString:inString: and -replaceWithString:inString:limit: to perform substitution on strings.
40
+<br><br>
41
+<code>&nbsp;&nbsp;&nbsp;&nbsp;AGRegex *regex = [AGRegex regexWithPattern:&#64;"remote"];<br />
42
+&nbsp;&nbsp;&nbsp;&nbsp;NSString *result = [regex replaceWithString:&#64;"complete" inString:&#64;"remote control"]; // result is "complete control"</code>
43
+<br><br>
44
+Captured subpatterns can be interpolated into the replacement string using the syntax $x or ${x} where x is the index or name of the subpattern. $0 and $& both refer to the entire pattern. Additionally, the case modifier sequences \U...\E, \L...\E, \u, and \l are allowed in the replacement string. All other escape sequences are handled literally.
45
+<br><br>
46
+<code>&nbsp;&nbsp;&nbsp;&nbsp;AGRegex *regex = [AGRegex regexWithPattern:&#64;"[usr]"];<br />
47
+&nbsp;&nbsp;&nbsp;&nbsp;NSString *result = [regex replaceWithString:&#64;"\\u$&amp;." inString:&#64;"Back in the ussr"]; // result is "Back in the U.S.S.R."</code>
48
+<br><br>
49
+Note that you have to escape a backslash to get it into an NSString literal. 
50
+<br><br>
51
+Named subpatterns may also be used in the pattern and replacement strings, like in Python. 
52
+<br><br>
53
+<code>&nbsp;&nbsp;&nbsp;&nbsp;AGRegex *regex = [AGRegex regexWithPattern:&#64;"(?P&lt;who&gt;\\w+) is a (?P&lt;what&gt;\\w+)"];<br />
54
+&nbsp;&nbsp;&nbsp;&nbsp;NSString *result = [regex replaceWithString:&#64;"Jackie is a $what, $who is a runt" inString:&#64;"Judy is a punk"]); // result is "Jackie is a punk, Judy is a runt"</code>
55
+<br><br>
56
+Finally, AGRegex provides -splitString: and -splitString:limit: which return an NSArray created by splitting the target string at each occurrence of the pattern. For example:
57
+<br><br>
58
+<code>&nbsp;&nbsp;&nbsp;&nbsp;AGRegex *regex = [AGRegex regexWithPattern:&#64;"ea?"];<br />
59
+&nbsp;&nbsp;&nbsp;&nbsp;NSArray *result = [regex splitString:&#64;"Repeater"]; // result is "R", "p", "t", "r"</code>
60
+<br><br>
61
+If there are captured subpatterns, they are returned in the array. 
62
+<br><br>
63
+<code>&nbsp;&nbsp;&nbsp;&nbsp;AGRegex *regex = [AGRegex regexWithPattern:&#64;"e(a)?"];<br />
64
+&nbsp;&nbsp;&nbsp;&nbsp;NSArray *result = [regex splitString:&#64;"Repeater"]; // result is "R", "p", "a", "t", "r"</code>
65
+<br><br>
66
+In Perl, this would return "R", undef, "p", "a", "t", undef, "r". Unfortunately, there is no convenient way to represent this in an NSArray. (NSNull could be used in place of undef, but then all members of the array couldn't be expected to be NSStrings.)
67
+<br><br>
68
+<hr><br><center>(Last Updated 9/12/2003)
69
+<br><font size="-1">HTML documentation generated by <a href="http://www.opensource.apple.com/projects" target="_blank">HeaderDoc</a></font>
70
+</center>
71
+</BODY>
72
+</HTML>
0 73
new file mode 100644
... ...
@@ -0,0 +1,89 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html><style type="text/css"><!--a:link {text-decoration: none; font-family: Verdana, Gene
4
+va, Helvetica, Arial, sans-serif; font-size: small}a:visited {text-decoration: none; font-family: Verdana, G
5
+eneva, Helvetica, Arial, sans-serif; font-size: small}a:active {text-decoration: none; font-family: Verdana, Ge
6
+neva, Helvetica, Arial, sans-serif; font-size: small}a:hover {text-decoration: underline; font-family: Verdana
7
+, Geneva, Helvetica, Arial, sans-serif; font-size: small}h4 {text-decoration: none; font-family: Verdana,Geneva,Ar
8
+ial,Helvetica,sans-serif; size: tiny; font-weight: bold}--></style><head>
9
+    <title>Methods</title>
10
+	<meta name="generator" content="HeaderDoc">
11
+</head><body bgcolor="#ffffff"><h1><font face="Geneva,Arial,Helvtica">Methods</font></h1><br>
12
+<hr><a name="//apple_ref/occ/instm/AGRegex/findAllInString:"></a>
13
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="findAllInString:">findAllInString:</a></h2>
14
+</td></tr></table><hr><blockquote><pre><tt>- (NSArray *)<B>findAllInString:</B>(NSString *)<I>str;</I> </tt><br>
15
+</pre></blockquote>
16
+<p>Calls findAllInString:range: using the full range of the target string. </p>
17
+<hr><a name="//apple_ref/occ/instm/AGRegex/findAllInString:range:"></a>
18
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="findAllInString:range:">findAllInString:range:</a></h2>
19
+</td></tr></table><hr><blockquote><pre><tt>- (NSArray *)<B>findAllInString:</B>(NSString *)<I>str</I> <B>range:</B>(NSRange)<I>r;</I> </tt><br>
20
+</pre></blockquote>
21
+<p>Returns an array of all non-overlapping occurrences of the regex in the given range of the target string. The members of the array are AGRegexMatches. </p>
22
+<hr><a name="//apple_ref/occ/instm/AGRegex/findEnumeratorInString:"></a>
23
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="findEnumeratorInString:">findEnumeratorInString:</a></h2>
24
+</td></tr></table><hr><blockquote><pre><tt>- (NSEnumerator *)<B>findEnumeratorInString:</B>(NSString *)<I>str;</I> </tt><br>
25
+</pre></blockquote>
26
+<p>Calls findEnumeratorInString:range: using the full range of the target string. </p>
27
+<hr><a name="//apple_ref/occ/instm/AGRegex/findEnumeratorInString:range:"></a>
28
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="findEnumeratorInString:range:">findEnumeratorInString:range:</a></h2>
29
+</td></tr></table><hr><blockquote><pre><tt>- (NSEnumerator *)<B>findEnumeratorInString:</B>(NSString *)<I>str</I> <B>range:</B>(NSRange)<I>r;</I> </tt><br>
30
+</pre></blockquote>
31
+<p>Returns an enumerator for all non-overlapping occurrences of the regex in the given range of the target string. The objects returned by the enumerator are AGRegexMatches. </p>
32
+<hr><a name="//apple_ref/occ/instm/AGRegex/findInString:"></a>
33
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="findInString:">findInString:</a></h2>
34
+</td></tr></table><hr><blockquote><pre><tt>- (AGRegexMatch *)<B>findInString:</B>(NSString *)<I>str;</I> </tt><br>
35
+</pre></blockquote>
36
+<p>Calls findInString:range: using the full range of the target string. </p>
37
+<hr><a name="//apple_ref/occ/instm/AGRegex/findInString:range:"></a>
38
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="findInString:range:">findInString:range:</a></h2>
39
+</td></tr></table><hr><blockquote><pre><tt>- (AGRegexMatch *)<B>findInString:</B>(NSString *)<I>str</I> <B>range:</B>(NSRange)<I>r;</I> </tt><br>
40
+</pre></blockquote>
41
+<p>Returns an AGRegexMatch for the first occurrence of the regex in the given range of the target string or nil if none is found. </p>
42
+<hr><a name="//apple_ref/occ/instm/AGRegex/initWithPattern:"></a>
43
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="initWithPattern:">initWithPattern:</a></h2>
44
+</td></tr></table><hr><blockquote><pre><tt>- (id)<B>initWithPattern:</B>(NSString *)<I>pat;</I> </tt><br>
45
+</pre></blockquote>
46
+<p>Initializes the regex using the given pattern string. Returns nil if the pattern string is invalid. </p>
47
+<hr><a name="//apple_ref/occ/instm/AGRegex/initWithPattern:options:"></a>
48
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="initWithPattern:options:">initWithPattern:options:</a></h2>
49
+</td></tr></table><hr><blockquote><pre><tt>- (id)<B>initWithPattern:</B>(NSString *)<I>pat</I> <B>options:</B>(int)<I>opts;</I> </tt><br>
50
+</pre></blockquote>
51
+<p>Initializes the regex using the given pattern string and option flags. Returns nil if the pattern string is invalid. </p>
52
+<hr><a name="//apple_ref/occ/clm/AGRegex/regexWithPattern:"></a>
53
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="regexWithPattern:">regexWithPattern:</a></h2>
54
+</td></tr></table><hr><blockquote><pre><tt>+ (id)<B>regexWithPattern:</B>(NSString *)<I>pat;</I> </tt><br>
55
+</pre></blockquote>
56
+<p>Creates a new regex using the given pattern string. Returns nil if the pattern string is invalid. </p>
57
+<hr><a name="//apple_ref/occ/clm/AGRegex/regexWithPattern:options:"></a>
58
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="regexWithPattern:options:">regexWithPattern:options:</a></h2>
59
+</td></tr></table><hr><blockquote><pre><tt>+ (id)<B>regexWithPattern:</B>(NSString *)<I>pat</I> <B>options:</B>(int)<I>opts;</I> </tt><br>
60
+</pre></blockquote>
61
+<p>Creates a new regex using the given pattern string and option flags. Returns nil if the pattern string is invalid. </p>
62
+<hr><a name="//apple_ref/occ/instm/AGRegex/replaceWithString:inString:"></a>
63
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="replaceWithString:inString:">replaceWithString:inString:</a></h2>
64
+</td></tr></table><hr><blockquote><pre><tt>- (NSString *)<B>replaceWithString:</B>(NSString *)<I>rep</I> <B>inString:</B>(NSString *)<I>str;</I> </tt><br>
65
+</pre></blockquote>
66
+<p>Calls replaceWithString:inString:limit: with no limit. </p>
67
+
68
+<hr><a name="//apple_ref/occ//AGRegex/replaceWithString:inString:limit:"></a>
69
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="replaceWithString:inString:limit:">replaceWithString:inString:limit:</a></h2>
70
+</td></tr></table><hr><blockquote><pre><tt>- (NSString *)<B>replaceWithString:</B>(NSString *)<I>rep</I> <B>inString:</B>(NSString *)<I>str</I> <B>limit:</B>(int)<I>lim;</I> </tt><br>
71
+</pre></blockquote>
72
+<p>Returns the string created by replacing occurrences of the regex in the target string with the replacement string. If the limit is positive, no more than that many replacements will be made.
73
+<br><br>
74
+Captured subpatterns can be interpolated into the replacement string using the syntax $x or ${x} where x is the index or name of the subpattern. $0 and $&amp; both refer to the entire pattern. Additionally, the case modifier sequences \U...\E, \L...\E, \u, and \l are allowed in the replacement string. All other escape sequences are handled literally. </p>
75
+
76
+<hr><a name="//apple_ref/occ//AGRegex/splitString:"></a>
77
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="splitString:">splitString:</a></h2>
78
+</td></tr></table><hr><blockquote><pre><tt>- (NSArray *)<B>splitString:</B>(NSString *)<I>str;</I> </tt><br>
79
+</pre></blockquote>
80
+<p>Call splitString:limit: with no limit. </p>
81
+
82
+<hr><a name="//apple_ref/occ//AGRegex/splitString:limit:"></a>
83
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="splitString:limit:">splitString:limit:</a></h2>
84
+</td></tr></table><hr><blockquote><pre><tt>- (NSArray *)<B>splitString:</B>(NSString *)<I>str</I> <B>limit:</B>(int)<I>lim;</I> </tt><br>
85
+</pre></blockquote>
86
+<p>Returns an array of strings created by splitting the target string at each occurrence of the pattern. If the limit is positive, no more than that many splits will be made. If there are captured subpatterns, they are returned in the array.  </p>
87
+
88
+<p>(Last Updated 9/12/2003)
89
+</p></body></html>
0 90
new file mode 100644
... ...
@@ -0,0 +1,12 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
2
+    "http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd">
3
+<html><head>
4
+    <title>Documentation for AGRegex</title>
5
+	<meta name="generator" content="HeaderDoc">
6
+</head>
7
+<frameset cols="190,100%">
8
+<frame src="toc.html" name="toc">
9
+<frame src="AGRegex.html" name="doc">
10
+</frameset></html>
11
+<!-- headerDoc=cl; name=AGRegex-->
12
+<a name="//apple_ref/occ/cl/AGRegex"></a>
0 13
new file mode 100644
... ...
@@ -0,0 +1,37 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html><style type="text/css"><!--a:link {text-decoration: none; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}a:visited {text-decoration: none; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}a:active {text-decoration: none; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}a:hover {text-decoration: underline; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}h4 {text-decoration: none; font-family: Verdana,Geneva,Arial,Helvetica,sans-serif; size: tiny; font-weight: bold}--></style><head>
4
+    <title>Documentation for AGRegex</title>
5
+	<meta name="generator" content="HeaderDoc">
6
+</head>
7
+<body bgcolor="#cccccc" link="#000099" vlink="#660066"
8
+leftmargin="0" topmargin="0" marginwidth="1"
9
+marginheight="0">
10
+<font size="-2"><a href="../../../MasterTOC.html" target="_top" headerDoc="topLink">[Top]</a></font><br>
11
+
12
+<table width="100%"><tr bgcolor="#999999"><td>&nbsp;</td></tr></table><br><table border="0" cellpadding="0" cellspacing="2" width="148">
13
+<tr><td colspan="2"><font size="5" color="#330066"><b>Class:</b></font></td></tr>
14
+<tr><td width="15"></td><td><b><font size="+1">AGRegex</font></b></td></tr>
15
+</table><p>&nbsp;<p>
16
+<nobr>&nbsp;<a href="AGRegex.html" target="doc">Introduction</a>
17
+<br><h4>Methods</h4><hr>
18
+<h5>Class Methods</h5>
19
+<nobr>&nbsp;<a href="Methods/Methods.html#regexWithPattern:" target="doc">+ regexWithPattern:</a></nobr><br>
20
+<nobr>&nbsp;<a href="Methods/Methods.html#regexWithPattern:options:" target="doc">+ regexWithPattern:options:</a></nobr><br>
21
+<h5>Instance Methods</h5>
22
+<nobr>&nbsp;<a href="Methods/Methods.html#findAllInString:" target="doc">- findAllInString:</a></nobr><br>
23
+<nobr>&nbsp;<a href="Methods/Methods.html#findAllInString:range:" target="doc">- findAllInString:range:</a></nobr><br>
24
+<nobr>&nbsp;<a href="Methods/Methods.html#findEnumeratorInString:" target="doc">- findEnumeratorInString:</a></nobr><br>
25
+<nobr>&nbsp;<a href="Methods/Methods.html#findEnumeratorInString:range:" target="doc">- findEnumeratorInString:range:</a></nobr><br>
26
+<nobr>&nbsp;<a href="Methods/Methods.html#findInString:" target="doc">- findInString:</a></nobr><br>
27
+<nobr>&nbsp;<a href="Methods/Methods.html#findInString:range:" target="doc">- findInString:range:</a></nobr><br>
28
+<nobr>&nbsp;<a href="Methods/Methods.html#initWithPattern:" target="doc">- initWithPattern:</a></nobr><br>
29
+<nobr>&nbsp;<a href="Methods/Methods.html#initWithPattern:options:" target="doc">- initWithPattern:options:</a></nobr><br>
30
+<nobr>&nbsp;<a href="Methods/Methods.html#replaceWithString:inString:" target="doc">- replaceWithString:inString:</a></nobr><br>
31
+<nobr>&nbsp;<a href="Methods/Methods.html#replaceWithString:inString:limit:" target="doc">- replaceWithString:inString:limit:</a></nobr><br>
32
+<nobr>&nbsp;<a href="Methods/Methods.html#splitString:" target="doc">- splitString:</a></nobr><br>
33
+<nobr>&nbsp;<a href="Methods/Methods.html#splitString:limit:" target="doc">- splitString:limit:</a></nobr><br>
34
+<br><h4>Other Reference</h4><hr>
35
+<nobr>&nbsp;<a href="../../index.html" target="_top">Header</a></nobr><br>
36
+<br><hr><a href="CompositePage.html" target="_blank">[Printable HTML Page]</a>
37
+</body></html>
0 38
new file mode 100644
... ...
@@ -0,0 +1,17 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html><HEAD>
4
+    <title>API Documentation</title>
5
+	<meta name="generator" content="HeaderDoc">
6
+</HEAD>
7
+<BODY bgcolor="#ffffff">
8
+<H1>AGRegexMatch</H1><hr>
9
+A single occurence of a regular expression.
10
+<hr><br>
11
+An AGRegexMatch represents a single occurence of a regular expression within the target string. The range of each subpattern within the target string is returned by -range, -rangeAtIndex:, or -rangeNamed:. The part of the target string that matched each subpattern is returned by -group, -groupAtIndex:, or -groupNamed:.
12
+<br><br>
13
+<hr><br><center>(Last Updated 9/12/2003)
14
+<br><font size="-1">HTML documentation generated by <a href="http://www.opensource.apple.com/projects" target="_blank">HeaderDoc</a></font>
15
+</center>
16
+</BODY>
17
+</HTML>
0 18
new file mode 100644
... ...
@@ -0,0 +1,57 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html><style type="text/css"><!--a:link {text-decoration: none; font-family: Verdana, Gene
4
+va, Helvetica, Arial, sans-serif; font-size: small}a:visited {text-decoration: none; font-family: Verdana, G
5
+eneva, Helvetica, Arial, sans-serif; font-size: small}a:active {text-decoration: none; font-family: Verdana, Ge
6
+neva, Helvetica, Arial, sans-serif; font-size: small}a:hover {text-decoration: underline; font-family: Verdana
7
+, Geneva, Helvetica, Arial, sans-serif; font-size: small}h4 {text-decoration: none; font-family: Verdana,Geneva,Ar
8
+ial,Helvetica,sans-serif; size: tiny; font-weight: bold}--></style><head>
9
+    <title>Methods</title>
10
+	<meta name="generator" content="HeaderDoc">
11
+</head><body bgcolor="#ffffff"><h1><font face="Geneva,Arial,Helvtica">Methods</font></h1><br>
12
+<hr><a name="//apple_ref/occ/instm/AGRegexMatch/count"></a>
13
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="count">count</a></h2>
14
+</td></tr></table><hr><blockquote><pre><tt>- (int)<B>count;</B> </tt><br>
15
+</pre></blockquote>
16
+<p>The number of capturing subpatterns, including the pattern itself. </p>
17
+<hr><a name="//apple_ref/occ/instm/AGRegexMatch/group"></a>
18
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="group">group</a></h2>
19
+</td></tr></table><hr><blockquote><pre><tt>- (NSString *)<B>group;</B> </tt><br>
20
+</pre></blockquote>
21
+<p>Returns the part of the target string that matched the pattern. </p>
22
+<hr><a name="//apple_ref/occ/instm/AGRegexMatch/groupAtIndex:"></a>
23
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="groupAtIndex:">groupAtIndex:</a></h2>
24
+</td></tr></table><hr><blockquote><pre><tt>- (NSString *)<B>groupAtIndex:</B>(int)<I>idx;</I> </tt><br>
25
+</pre></blockquote>
26
+<p>Returns the part of the target string that matched the subpattern at the given index or nil if it wasn't matched. The subpatterns are indexed in order of their opening parentheses, 0 is the entire pattern, 1 is the first capturing subpattern, and so on. </p>
27
+<hr><a name="//apple_ref/occ/instm/AGRegexMatch/groupNamed:"></a>
28
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="groupNamed:">groupNamed:</a></h2>
29
+</td></tr></table><hr><blockquote><pre><tt>- (NSString *)<B>groupNamed:</B>(NSString *)<I>name;</I> </tt><br>
30
+</pre></blockquote>
31
+<p>Returns the part of the target string that matched the subpattern of the given name or nil if it wasn't matched. </p>
32
+<hr><a name="//apple_ref/occ/instm/AGRegexMatch/range"></a>
33
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="range">range</a></h2>
34
+</td></tr></table><hr><blockquote><pre><tt>- (NSRange)<B>range;</B> </tt><br>
35
+</pre></blockquote>
36
+<p>Returns the range of the target string that matched the pattern. </p>
37
+
38
+<hr><a name="//apple_ref/occ//AGRegexMatch/rangeAtIndex:"></a>
39
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="rangeAtIndex:">rangeAtIndex:</a></h2>
40
+</td></tr></table><hr><blockquote><pre><tt>- (NSRange)<B>rangeAtIndex:</B>(int)<I>idx;</I> </tt><br>
41
+</pre></blockquote>
42
+<p>Returns the range of the target string that matched the subpattern at the given index or {NSNotFound, 0} if it wasn't matched. The subpatterns are indexed in order of their opening parentheses, 0 is the entire pattern, 1 is the first capturing subpattern, and so on. </p>
43
+
44
+<hr><a name="//apple_ref/occ//AGRegexMatch/rangeNamed:"></a>
45
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="rangeNamed:">rangeNamed:</a></h2>
46
+</td></tr></table><hr><blockquote><pre><tt>- (NSRange)<B>rangeNamed:</B>(NSString *)<I>name;</I> </tt><br>
47
+</pre></blockquote>
48
+<p>Returns the range of the target string that matched the subpattern of the given name or {NSNotFound, 0} if it wasn't matched. </p>
49
+
50
+<hr><a name="//apple_ref/occ//AGRegexMatch/string"></a>
51
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="string">string</a></h2>
52
+</td></tr></table><hr><blockquote><pre><tt>- (NSString *)<B>string;</B> </tt><br>
53
+</pre></blockquote>
54
+<p>Returns the target string. </p>
55
+
56
+<p>(Last Updated 9/12/2003)
57
+</p></body></html>
0 58
new file mode 100644
... ...
@@ -0,0 +1,12 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
2
+    "http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd">
3
+<html><head>
4
+    <title>Documentation for AGRegexMatch</title>
5
+	<meta name="generator" content="HeaderDoc">
6
+</head>
7
+<frameset cols="190,100%">
8
+<frame src="toc.html" name="toc">
9
+<frame src="AGRegexMatch.html" name="doc">
10
+</frameset></html>
11
+<!-- headerDoc=cl; name=AGRegexMatch-->
12
+<a name="//apple_ref/occ/cl/AGRegexMatch"></a>
0 13
new file mode 100644
... ...
@@ -0,0 +1,30 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html><style type="text/css"><!--a:link {text-decoration: none; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}a:visited {text-decoration: none; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}a:active {text-decoration: none; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}a:hover {text-decoration: underline; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}h4 {text-decoration: none; font-family: Verdana,Geneva,Arial,Helvetica,sans-serif; size: tiny; font-weight: bold}--></style><head>
4
+    <title>Documentation for AGRegexMatch</title>
5
+	<meta name="generator" content="HeaderDoc">
6
+</head>
7
+<body bgcolor="#cccccc" link="#000099" vlink="#660066"
8
+leftmargin="0" topmargin="0" marginwidth="1"
9
+marginheight="0">
10
+<font size="-2"><a href="../../../MasterTOC.html" target="_top" headerDoc="topLink">[Top]</a></font><br>
11
+
12
+<table width="100%"><tr bgcolor="#999999"><td>&nbsp;</td></tr></table><br><table border="0" cellpadding="0" cellspacing="2" width="148">
13
+<tr><td colspan="2"><font size="5" color="#330066"><b>Class:</b></font></td></tr>
14
+<tr><td width="15"></td><td><b><font size="+1">AGRegexMatch</font></b></td></tr>
15
+</table><p>&nbsp;<p>
16
+<nobr>&nbsp;<a href="AGRegexMatch.html" target="doc">Introduction</a>
17
+<br><h4>Methods</h4><hr>
18
+<h5>Instance Methods</h5>
19
+<nobr>&nbsp;<a href="Methods/Methods.html#count" target="doc">- count</a></nobr><br>
20
+<nobr>&nbsp;<a href="Methods/Methods.html#group" target="doc">- group</a></nobr><br>
21
+<nobr>&nbsp;<a href="Methods/Methods.html#groupAtIndex:" target="doc">- groupAtIndex:</a></nobr><br>
22
+<nobr>&nbsp;<a href="Methods/Methods.html#groupNamed:" target="doc">- groupNamed:</a></nobr><br>
23
+<nobr>&nbsp;<a href="Methods/Methods.html#range" target="doc">- range</a></nobr><br>
24
+<nobr>&nbsp;<a href="Methods/Methods.html#rangeAtIndex:" target="doc">- rangeAtIndex:</a></nobr><br>
25
+<nobr>&nbsp;<a href="Methods/Methods.html#rangeNamed:" target="doc">- rangeNamed:</a></nobr><br>
26
+<nobr>&nbsp;<a href="Methods/Methods.html#string" target="doc">- string</a></nobr><br>
27
+<br><h4>Other Reference</h4><hr>
28
+<nobr>&nbsp;<a href="../../index.html" target="_top">Header</a></nobr><br>
29
+<br><hr><a href="CompositePage.html" target="_blank">[Printable HTML Page]</a>
30
+</body></html>
0 31
new file mode 100644
... ...
@@ -0,0 +1,39 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html><style type="text/css"><!--a:link {text-decoration: none; font-family: Verdana, Gene
4
+va, Helvetica, Arial, sans-serif; font-size: small}a:visited {text-decoration: none; font-family: Verdana, G
5
+eneva, Helvetica, Arial, sans-serif; font-size: small}a:active {text-decoration: none; font-family: Verdana, Ge
6
+neva, Helvetica, Arial, sans-serif; font-size: small}a:hover {text-decoration: underline; font-family: Verdana
7
+, Geneva, Helvetica, Arial, sans-serif; font-size: small}h4 {text-decoration: none; font-family: Verdana,Geneva,Ar
8
+ial,Helvetica,sans-serif; size: tiny; font-weight: bold}--></style><head>
9
+    <title>AGRegex.h</title>
10
+	<meta name="generator" content="HeaderDoc">
11
+</head><body bgcolor="#ffffff"><h1><font face="Geneva,Arial,Helvtica">AGRegex.h</font></h1><br>
12
+<h2>Enumerations</h2>
13
+<hr><a name="//apple_ref/c/tag/Options "></a>
14
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="Options ">Options </a></h2>
15
+</td></tr></table><hr><blockquote><pre>
16
+enum {
17
+  AGRegexCaseInsensitive = 1,
18
+  AGRegexDotAll = 2,
19
+  AGRegexExtended = 4,
20
+  AGRegexLazy = 8,
21
+  AGRegexMultiline = 16
22
+};
23
+</pre>
24
+</blockquote>
25
+<p>Options defined for -initWithPattern:options:. Two or more options can be combined with the bitwise OR operator.
26
+</p>
27
+<h4>Constants</h4>
28
+<blockquote>
29
+<table border="1"  width="90%">
30
+<thead><tr><th>Name</th><th>Description</th></tr></thead>
31
+<tr><td align="center"><a name="//apple_ref/c/econst/AGRegexCaseInsensitive"><tt>AGRegexCaseInsensitive</tt></a></td><td>Matching is case insensitive. Equivalent to /i in Perl.</td></tr>
32
+<tr><td align="center"><a name="//apple_ref/c/econst/AGRegexDotAll"><tt>AGRegexDotAll</tt></a></td><td>Dot metacharacter matches any character including newline. Equivalent to /s in Perl.</td></tr>
33
+<tr><td align="center"><a name="//apple_ref/c/econst/AGRegexExtended"><tt>AGRegexExtended</tt></a></td><td>Allow whitespace and comments in the pattern. Equivalent to /x in Perl.</td></tr>
34
+<tr><td align="center"><a name="//apple_ref/c/econst/AGRegexLazy"><tt>AGRegexLazy</tt></a></td><td>Makes greedy quantifiers lazy and lazy quantifiers greedy. No equivalent in Perl.</td></tr>
35
+<tr><td align="center"><a name="//apple_ref/c/econst/AGRegexMultiline"><tt>AGRegexMultiline</tt></a></td><td>Caret and dollar anchors match at newline. Equivalent to /m in Perl.</td></tr>
36
+</table>
37
+</blockquote>
38
+<p>(Last Updated 9/12/2003)
39
+</p></body></html>
0 40
new file mode 100644
... ...
@@ -0,0 +1,38 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html><style type="text/css"><!--a:link {text-decoration: none; font-family: Verdana, Gene
4
+va, Helvetica, Arial, sans-serif; font-size: small}a:visited {text-decoration: none; font-family: Verdana, G
5
+eneva, Helvetica, Arial, sans-serif; font-size: small}a:active {text-decoration: none; font-family: Verdana, Ge
6
+neva, Helvetica, Arial, sans-serif; font-size: small}a:hover {text-decoration: underline; font-family: Verdana
7
+, Geneva, Helvetica, Arial, sans-serif; font-size: small}h4 {text-decoration: none; font-family: Verdana,Geneva,Ar
8
+ial,Helvetica,sans-serif; size: tiny; font-weight: bold}--></style><head>
9
+    <title>Enumerations</title>
10
+	<meta name="generator" content="HeaderDoc">
11
+</head><body bgcolor="#ffffff"><h1><font face="Geneva,Arial,Helvtica">Enumerations</font></h1><br>
12
+<hr><a name="//apple_ref/c/tag/Options "></a>
13
+<table border="0"  cellpadding="2" cellspacing="2" width="300"><tr><td valign="top" height="12" colspan="5"><h2><a name="Options ">Options </a></h2>
14
+</td></tr></table><hr><blockquote><pre>
15
+enum {
16
+  AGRegexCaseInsensitive = 1,
17
+  AGRegexDotAll = 2,
18
+  AGRegexExtended = 4,
19
+  AGRegexLazy = 8,
20
+  AGRegexMultiline = 16
21
+};
22
+</pre>
23
+</blockquote>
24
+<p>Options defined for -initWithPattern:options:. Two or more options can be combined with the bitwise OR operator.
25
+</p>
26
+<h4>Constants</h4>
27
+<blockquote>
28
+<table border="1"  width="90%">
29
+<thead><tr><th>Name</th><th>Description</th></tr></thead>
30
+<tr><td align="center"><a name="//apple_ref/c/econst/AGRegexCaseInsensitive"><tt>AGRegexCaseInsensitive</tt></a></td><td>Matching is case insensitive. Equivalent to /i in Perl.</td></tr>
31
+<tr><td align="center"><a name="//apple_ref/c/econst/AGRegexDotAll"><tt>AGRegexDotAll</tt></a></td><td>Dot metacharacter matches any character including newline. Equivalent to /s in Perl.</td></tr>
32
+<tr><td align="center"><a name="//apple_ref/c/econst/AGRegexExtended"><tt>AGRegexExtended</tt></a></td><td>Allow whitespace and comments in the pattern. Equivalent to /x in Perl.</td></tr>
33
+<tr><td align="center"><a name="//apple_ref/c/econst/AGRegexLazy"><tt>AGRegexLazy</tt></a></td><td>Makes greedy quantifiers lazy and lazy quantifiers greedy. No equivalent in Perl.</td></tr>
34
+<tr><td align="center"><a name="//apple_ref/c/econst/AGRegexMultiline"><tt>AGRegexMultiline</tt></a></td><td>Caret and dollar anchors match at newline. Equivalent to /m in Perl.</td></tr>
35
+</table>
36
+</blockquote>
37
+<p>(Last Updated 9/12/2003)
38
+</p></body></html>
0 39
new file mode 100644
... ...
@@ -0,0 +1,11 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Frameset//EN"
2
+    "http://www.w3.org/TR/1999/REC-html401-19991224/frameset.dtd">
3
+<html><head>
4
+    <title>Documentation for AGRegex.h</title>
5
+	<meta name="generator" content="HeaderDoc">
6
+</head>
7
+<frameset cols="190,100%">
8
+<frame src="toc.html" name="toc">
9
+<frame src="AGRegex.html" name="doc">
10
+</frameset></html>
11
+<!-- headerDoc=Header; name=AGRegex.h-->
0 12
new file mode 100644
... ...
@@ -0,0 +1,23 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html><style type="text/css"><!--a:link {text-decoration: none; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}a:visited {text-decoration: none; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}a:active {text-decoration: none; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}a:hover {text-decoration: underline; font-family: Verdana, Geneva, Helvetica, Arial, sans-serif; font-size: small}h4 {text-decoration: none; font-family: Verdana,Geneva,Arial,Helvetica,sans-serif; size: tiny; font-weight: bold}--></style><head>
4
+    <title>Documentation for AGRegex.h</title>
5
+	<meta name="generator" content="HeaderDoc">
6
+</head>
7
+<body bgcolor="#cccccc" link="#000099" vlink="#660066"
8
+leftmargin="0" topmargin="0" marginwidth="1"
9
+marginheight="0">
10
+<font size="-2"><a href="../MasterTOC.html" target="_top" headerDoc="topLink">[Top]</a></font><br>
11
+
12
+<table width="100%"><tr bgcolor="#999999"><td>&nbsp;</td></tr></table><br><table border="0" cellpadding="0" cellspacing="2" width="148">
13
+<tr><td colspan="2"><font size="5" color="#330066"><b>Header:</b></font></td></tr>
14
+<tr><td width="15"></td><td><b><font size="+1">AGRegex.h</font></b></td></tr>
15
+</table><br>
16
+<nobr>&nbsp;<a href="AGRegex.html" target="doc">Introduction</a>
17
+<h4>Enumerations</h4>
18
+<nobr>&nbsp;<a href="Enums/Enums.html#Options " target="doc">Options </a></nobr><br>
19
+<h4>Classes</h4>
20
+<nobr>&nbsp;<a href="Classes/AGRegex/index.html" target="_top">AGRegex</a></nobr><br>
21
+<nobr>&nbsp;<a href="Classes/AGRegexMatch/index.html" target="_top">AGRegexMatch</a></nobr><br>
22
+<br><hr><a href="CompositePage.html" target="_blank">[Printable HTML Page]</a>
23
+</body></html>
0 24
new file mode 100644
... ...
@@ -0,0 +1,21 @@
1
+<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"
2
+    "http://www.w3.org/TR/1998/REC-html40-19980424/loose.dtd">
3
+<html>
4
+<head>
5
+    <title>Header Documentation</title>
6
+	<meta name="generator" content="HeaderDoc">
7
+</head>
8
+<body bgcolor="#cccccc"><h1>Header Documentation</h1><hr><br>
9
+<h2>Headers</h2>
10
+<blockquote>
11
+<a href="AGRegex/index.html" target ="_top">AGRegex.h</a><br>
12
+
13
+</blockquote>
14
+<h2>Classes</h2>
15
+<blockquote>
16
+<a href="AGRegex/Classes/AGRegex/index.html" target ="_top">AGRegex</a><br>
17
+<a href="AGRegex/Classes/AGRegexMatch/index.html" target ="_top">AGRegexMatch</a><br>
18
+
19
+</blockquote>
20
+</body>
21
+</html>
0 22
new file mode 100644
... ...
@@ -0,0 +1,23 @@
1
+{
2
+    IBClasses = (
3
+        {
4
+            ACTIONS = {find = id; openDocument = id; replace = id; }; 
5
+            CLASS = Controller; 
6
+            LANGUAGE = ObjC; 
7
+            OUTLETS = {
8
+                caseInsensitiveButton = NSButton; 
9
+                dotAllButton = NSButton; 
10
+                extendedButton = NSButton; 
11
+                lazyButton = NSButton; 
12
+                matchField = NSTextField; 
13
+                multilineButton = NSButton; 
14
+                patternField = NSTextField; 
15
+                replacementField = NSTextField; 
16
+                textView = NSTextView; 
17
+            }; 
18
+            SUPERCLASS = NSObject; 
19
+        }, 
20
+        {CLASS = FirstResponder; LANGUAGE = ObjC; SUPERCLASS = NSObject; }
21
+    ); 
22
+    IBVersion = 1; 
23
+}
0 24
\ No newline at end of file
1 25
new file mode 100644
... ...
@@ -0,0 +1,21 @@
1
+<?xml version="1.0" encoding="UTF-8"?>
2
+<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
3
+<plist version="1.0">
4
+<dict>
5
+	<key>IBDocumentLocation</key>
6
+	<string>23 33 356 240 0 0 800 578 </string>
7
+	<key>IBEditorPositions</key>
8
+	<dict>
9
+		<key>29</key>
10
+		<string>47 192 318 44 0 0 800 578 </string>
11
+	</dict>
12
+	<key>IBFramework Version</key>
13
+	<string>291.0</string>
14
+	<key>IBOpenObjects</key>
15
+	<array>
16
+		<integer>21</integer>
17
+	</array>
18
+	<key>IBSystem Version</key>
19
+	<string>6L60</string>
20
+</dict>
21
+</plist>
0 22
new file mode 100644
1 23
Binary files /dev/null and b/Source/AGRegex/MainMenu.nib/objects.nib differ
2 24
new file mode 100644
... ...
@@ -0,0 +1,25 @@
1
+
2
+AGRegex provides Perl-compatible pattern matching to Cocoa applications.
3
+
4
+Regular expression support is provided by the PCRE library package, which is open source software, written by Philip Hazel, and copyright by the University of Cambridge, England.
5
+
6
+<http://www.pcre.org>
7
+<ftp://ftp.csx.cam.ac.uk/pub/software/programming/pcre>
8
+
9
+For complete regular expression syntax see the PCRE documentation.
10
+
11
+NOTES
12
+
13
+If you are only using valid ASCII strings, you can save some overhead by turning off UTF-8 support. In the framework target, select "Settings", scroll down to "GCC Compiler Settings", and under "Other C Compiler Flags", delete the line -DSUPPORT_UTF8. If you do this, note that some methods will raise an exception if you pass a string that can't be converted to ASCII.
14
+
15
+If you want to build AGRegex with a newer version of PCRE than that which is included, build PCRE according to the normal instructions so that all the necessary files get generated and then just copy them over the older ones. Be sure to enable UTF-8 support when you build PCRE if you are using it in AGRegex. It is also possible to link to just link to libpcre instead of compiling it directly into the framework, but it would have to be installed separately.
16
+
17
+BUGS
18
+
19
+-replaceWithString:inString:... won't see a backreference preceded by a backslash in the replacement string, whether the backslash itself is escaped or not.
20
+
21
+-splitString:... will split at an empty match immediately following a non-empty match. While this is not necessarily a bug, it is at least inconsistent with Perl's split operator.
22
+
23
+CONTACT
24
+
25
+<grnmn@users.sourceforge.net>
0 26
new file mode 100644
... ...
@@ -0,0 +1,8 @@
1
+// RegexTest.m
2
+//
3
+
4
+#import <Cocoa/Cocoa.h>
5
+
6
+int main(int argc, const char *argv[]) {
7
+	return NSApplicationMain(argc, argv);
8
+}
0 9
\ No newline at end of file
1 10
new file mode 100644
... ...
@@ -0,0 +1,28 @@
1
+//  CMetadataImporter.h
2
+//
3
+//  Lisp Metadata Importer
4
+//
5
+//  Created by John Wiseman on 9/1/05.
6
+//  Copyright 2005 John Wiseman.
7
+//
8
+//  Licensed under the MIT license--see the accompanying LICENSE.txt
9
+//  file.
10
+
11
+#import <Cocoa/Cocoa.h>
12
+
13
+@interface CMetadataImporter : NSObject {
14
+    
15
+}
16
+
17
+// "Public" methods.
18
+
19
+- (BOOL)importFile:(NSString *)inPathToFile contentType:(NSString *)inContentType attributes:(NSMutableDictionary *)inAttributes;
20
+
21
+
22
+// "Private" methods.
23
+
24
+- (void)initStaticData;
25
+- (BOOL)addMatchesTo:(NSMutableDictionary *)attributes fromLine:(NSString *)line usingRE:(NSRegularExpression *)regex forKey:(NSString *)key;
26
+- (NSString*)readContentsOfFile:(NSString*)path error:(NSError**)theError;
27
+
28
+@end
0 29
new file mode 100644
... ...
@@ -0,0 +1,321 @@
1
+//  CMetadataImporter.m
2
+//
3
+//  Lisp Metadata Importer
4
+//
5
+//  Created by John Wiseman on 9/1/05.
6
+//  Copyright 2005 John Wiseman.
7
+//
8
+//  Licensed under the MIT license--see the accompanying LICENSE.txt
9
+//  file.
10
+
11
+#import "CMetadataImporter.h"
12
+
13
+#import "NSString_HMext.h"
14
+#import "NSData_HMext.h"
15
+#import "DebugLog.h"
16
+
17
+@implementation CMetadataImporter
18
+
19
+
20
+int MaxSourceSize = 500000; // Default maximum number of bytes that will be read for indexing purposes.
21
+long NO_MAXIMUM = -1;
22
+
23
+
24
+// All sorts of static data that we initialize once, then use many many times.
25
+
26
+static BOOL StaticDataIsInitialized = NO;
27
+
28
+// Lots of regexes in string form, waiting to be compiled.
29
+
30
+static NSString *LispDef1_pat = @"(?i)^\\(def[^\\s]*[\\s\\']+(\\(setf\\s+[^\\s]+\\))";
31
+static NSRegularExpression *LispDef1_RE = nil;
32
+
33
+static NSString *LispDef2_pat = @"(?i)^\\(def[^\\s]*[\\s\\']+([^\\s\\)]+)";
34
+static NSRegularExpression *LispDef2_RE = nil;
35
+
36
+static NSString *LispDefun_pat = @"(?i)^\\(defun\\s+([^\\s\\)\\(]+)";
37
+static NSRegularExpression *LispDefun_RE = nil;
38
+
39
+static NSString *LispDefunsetf_pat = @"(?i)^\\(defun\\s+(\\(setf\\s+[^\\s]+\\))";
40
+static NSRegularExpression *LispDefunsetf_RE = nil;
41
+
42
+static NSString *LispDefmethod_pat = @"(?i)^\\(defmethod\\s+([^\\s\\)\\(]+)";
43
+static NSRegularExpression *LispDefmethod_RE = nil;
44
+
45
+static NSString *LispDefmethodsetf_pat = @"(?i)^\\(defmethod\\s+(\\(setf\\s+[^\\s]+\\))";
46
+static NSRegularExpression *LispDefmethodsetf_RE = nil;
47
+
48
+static NSString *LispDefgeneric_pat = @"(?i)^\\(defgeneric\\s+((?:[^\\s\\)\\(]+|\\(setf\\s+[^\\s]+\\)))";
49
+static NSRegularExpression *LispDefgeneric_RE = nil;
50
+
51
+static NSString *LispDefgenericsetf_pat = @"(?i)^\\(defgeneric\\s+(\\(setf\\s+[^\\s]+\\))";
52
+static NSRegularExpression *LispDefgenericsetf_RE = nil;
53
+
54
+static NSString *LispDefmacro_pat = @"(?i)^\\(defmacro\\s+([^\\s\\)]+)";
55
+static NSRegularExpression *LispDefmacro_RE = nil;
56
+
57
+static NSString *LispDefclass_pat = @"(?i)^\\(defclass\\s+([^\\s\\)]+)";
58
+static NSRegularExpression *LispDefclass_RE = nil;
59
+
60
+static NSString *LispDefstruct_pat = @"(?i)^\\(defstruct\\s+\\(?([^\\s\\)]+)";
61
+static NSRegularExpression *LispDefstruct_RE = nil;
62
+
63
+static NSString *LispDefvar_pat = @"(?i)^\\((?:defvar|defparameter|defconstant)\\s+([^\\s\\)]+)";
64
+static NSRegularExpression *LispDefvar_RE = nil;
65
+
66
+static NSError *err = nil;
67
+
68
+- (void)initStaticData
69
+{
70
+    NSLog(@"Import Lisp");
71
+    if (StaticDataIsInitialized)
72
+    {
73
+        return;
74
+    }
75
+    
76
+    StaticDataIsInitialized = YES;
77
+    
78
+    // Find the bundle, and Info.plist.  Set the debug level specified
79
+    // there, as well as the maximum file length to index.
80
+    NSBundle *theBundle = [NSBundle bundleForClass:[self class]];
81
+    
82
+    NSObject *debugLevelObj = [theBundle objectForInfoDictionaryKey:@"DebugLevel"];
83
+    if (debugLevelObj != nil)
84
+    {
85
+        SetDebugLogLevel(DebugLevelNameToValue((NSString*)debugLevelObj));
86
+    }
87
+    
88
+    NSObject *maxSourceSizeObj = [theBundle objectForInfoDictionaryKey:@"MaxSourceSizeToIndex"];
89
+    int max = [(NSNumber*)maxSourceSizeObj intValue];
90
+    if (max != 0)
91
+    {
92
+        DebugLog(DEBUG_LEVEL_DEBUG, @"Using MaxSourceSize=%d", max);
93
+        MaxSourceSize = max;
94
+    }
95
+    else
96
+    {
97
+        NSLog(@"Error parsing MaxSourceSizeToIndex, using %d", MaxSourceSize);
98
+    }
99
+    
100
+    // Precompile our regexes.
101
+    LispDef1_RE = [NSRegularExpression regularExpressionWithPattern:LispDef1_pat
102
+                                                            options:NSRegularExpressionCaseInsensitive
103
+                                                              error:&err];
104
+    LispDef2_RE = [NSRegularExpression regularExpressionWithPattern:LispDef2_pat
105
+                                                            options:NSRegularExpressionCaseInsensitive
106
+                                                              error:&err];
107
+    LispDefun_RE = [NSRegularExpression regularExpressionWithPattern:LispDefun_pat
108
+                                                             options:NSRegularExpressionCaseInsensitive
109
+                                                               error:&err];
110
+    LispDefunsetf_RE = [NSRegularExpression regularExpressionWithPattern:LispDefunsetf_pat
111
+                                                                 options:NSRegularExpressionCaseInsensitive
112
+                                                                   error:&err];
113
+    LispDefmethod_RE = [NSRegularExpression regularExpressionWithPattern:LispDefmethod_pat
114
+                                                                 options:NSRegularExpressionCaseInsensitive
115
+                                                                   error:&err];
116
+    LispDefmethodsetf_RE = [NSRegularExpression regularExpressionWithPattern:LispDefmethodsetf_pat
117
+                                                                     options:NSRegularExpressionCaseInsensitive
118
+                                                                       error:&err];
119
+    LispDefgeneric_RE = [NSRegularExpression regularExpressionWithPattern:LispDefgeneric_pat
120
+                                                                  options:NSRegularExpressionCaseInsensitive
121
+                                                                    error:&err];
122
+    LispDefgenericsetf_RE = [NSRegularExpression regularExpressionWithPattern:LispDefgenericsetf_pat
123
+                                                                      options:NSRegularExpressionCaseInsensitive
124
+                                                                        error:&err];
125
+    LispDefclass_RE = [NSRegularExpression regularExpressionWithPattern:LispDefclass_pat
126
+                                                                options:NSRegularExpressionCaseInsensitive
127
+                                                                  error:&err];
128
+    LispDefstruct_RE = [NSRegularExpression regularExpressionWithPattern:LispDefstruct_pat
129
+                                                                 options:NSRegularExpressionCaseInsensitive
130
+                                                                   error:&err];
131
+    LispDefvar_RE = [NSRegularExpression regularExpressionWithPattern:LispDefvar_pat
132
+                                                              options:NSRegularExpressionCaseInsensitive
133
+                                                                error:&err];
134
+    LispDefmacro_RE = [NSRegularExpression regularExpressionWithPattern:LispDefmacro_pat
135
+                                                                options:NSRegularExpressionCaseInsensitive
136
+                                                                  error:&err];
137
+    
138
+    DebugLog(DEBUG_LEVEL_DEBUG, @"Static data has been initialized.");
139
+}
140
+
141
+
142
+
143
+static NSStringEncoding PossibleSourceTextEncodings[] = {	NSUTF8StringEncoding,
144
+    NSMacOSRomanStringEncoding,
145
+    NSISOLatin1StringEncoding,
146
+    NSWindowsCP1252StringEncoding };
147
+
148
+// Tries to read the file using the encodings specified in
149
+// PossibleSourceTextEncodings, in order, until one succeeds.
150
+//
151
+// There's probably a better way to do this (TEC Sniffers?).  The
152
+// seemingly obvious way, stringWithContentsOfFile:usedEncoding:error,
153
+// doesn't work--apparently it just does something minimal, like
154
+// decide between UTF-8 and UCS-16 or something.
155
+
156
+- (NSString*)readContentsOfFile:(NSString*)pathToFile error:(NSError**)theError
157
+{
158
+    int i;
159
+    NSStringEncoding theEncoding;
160
+    NSString *theSource = nil;
161
+    NSData *data;
162
+    
163
+    DebugLog(DEBUG_LEVEL_DEBUG, @"Indexing %@", pathToFile);
164
+    
165
+    // Read the file.
166
+    if (MaxSourceSize == NO_MAXIMUM)
167
+    {
168
+        data = [NSData dataWithContentsOfFile:pathToFile options:0 error:theError];
169
+    }
170
+    else
171
+    {
172
+        data = [NSData dataWithContentsOfFile:pathToFile maxSize:MaxSourceSize error:theError];
173
+        if ([data length] == MaxSourceSize)
174
+        {
175
+            // This is not absolutely certain to be correct, since the file might just have been
176
+            // MaxSourceSize bytes long.
177
+            DebugLog(DEBUG_LEVEL_DEBUG, @"Truncated indexing of '%@' to %d bytes", pathToFile, MaxSourceSize);
178
+        }
179
+    }
180
+    
181
+    if (data == nil)
182
+    {
183
+        return nil;
184
+    }
185
+    
186
+    // Try to convert the file contents to a string by trying the candidate
187
+    // encodings, in order.
188
+    for (i = 0; i < sizeof(PossibleSourceTextEncodings); i++)
189
+    {
190
+        theEncoding = PossibleSourceTextEncodings[i];
191
+        DebugLog(DEBUG_LEVEL_VERBOSE, @"Trying encoding %d", theEncoding);
192
+        theSource = [[[NSString alloc] initWithData:data encoding:theEncoding] autorelease];
193
+        if (theSource != nil)
194
+        {
195
+            break;
196
+        }
197
+        else
198
+        {
199
+            DebugLog(DEBUG_LEVEL_DEBUG, @"Reading with encoding %d failed.", theEncoding);
200
+        }
201
+    }
202
+    return theSource;
203
+}
204
+
205
+
206
+// Adds metadata values to the specified dictionary under the
207
+// specified key, using the specified regular expression.
208
+
209
+- (BOOL)addMatchesTo:(NSMutableDictionary *)attributes fromLine:(NSString *)line usingRE:(NSRegularExpression *)regex forKey:(NSString *)key
210
+{
211
+    NSTextCheckingResult *match = [regex firstMatchInString:line options:NSMatchingAnchored range:NSMakeRange(0, [line length])];
212
+    if (match)
213
+    {
214
+        NSLog(@"%s", [line UTF8String]);
215
+        NSString *name = [line substringWithRange: [match rangeAtIndex:1]];
216
+        [[attributes objectForKey:key] addObject:name];
217
+        return YES;
218
+    }
219
+    else
220
+    {
221
+        return NO;
222
+    }
223
+}
224
+
225
+
226
+// This is the method that does all the importing and indexing work.
227
+// It stuffs attributes into the specified dictionary.
228
+
229
+- (BOOL)importFile:(NSString *)inPathToFile contentType:(NSString *)inContentType attributes:(NSMutableDictionary *)inAttributes
230
+{
231
+    BOOL theResult = NO;
232
+    
233
+    @try
234
+    {
235
+        NSAutoreleasePool *theAutoreleasePool = [[NSAutoreleasePool alloc] init];
236
+        NSError *error = nil;
237
+        NSString *source;
238
+        
239
+        [self initStaticData];
240
+        
241
+        source = [self readContentsOfFile:inPathToFile error:&error];
242
+        if (source == nil)
243
+        {
244
+            if (error)
245
+            {
246
+                NSLog(@"Lisp Metadata Importer: Could not process file '%@': %@", inPathToFile, error);
247
+            }
248
+            else
249
+            {
250
+                NSLog(@"Lisp Metadata Importer: Could not process file '%@': unknown error", inPathToFile);
251
+            }	
252
+            return NO;
253
+        }
254
+        
255
+        // Only process the first MaxSourceSize of the file.  To try to do more
256
+        // invites the swapping death.
257
+        if ([source length] > MaxSourceSize)
258
+        {
259
+            source = [source substringToIndex:MaxSourceSize];
260
+        }
261
+        
262
+        NSMutableDictionary *moreAttributes = [[[NSMutableDictionary alloc] initWithCapacity:10] autorelease];
263
+        [moreAttributes setObject:[NSMutableArray arrayWithCapacity:100] forKey:@"org_lisp_definitions"];
264
+        [moreAttributes setObject:[NSMutableArray arrayWithCapacity:100] forKey:@"org_lisp_defuns"];
265
+        [moreAttributes setObject:[NSMutableArray arrayWithCapacity:100] forKey:@"org_lisp_defmethods"];
266
+        [moreAttributes setObject:[NSMutableArray arrayWithCapacity:100] forKey:@"org_lisp_defgenerics"];
267
+        [moreAttributes setObject:[NSMutableArray arrayWithCapacity:100] forKey:@"org_lisp_defmacros"];
268
+        [moreAttributes setObject:[NSMutableArray arrayWithCapacity:100] forKey:@"org_lisp_defvars"];
269
+        [moreAttributes setObject:[NSMutableArray arrayWithCapacity:100] forKey:@"org_lisp_defclasses"];
270
+        [moreAttributes setObject:[NSMutableArray arrayWithCapacity:100] forKey:@"org_lisp_defstructs"];
271
+        
272
+        
273
+        // Divide the file contents into lines, using either CR or LF to end a line.
274
+        NSCharacterSet *eol = [NSCharacterSet characterSetWithCharactersInString:@"\n\r"];
275
+        NSArray *lines = [source componentsSeparatedByCharacterFromSet:eol];
276
+        
277
+        NSEnumerator *theEnum = [lines objectEnumerator];
278
+        NSString *theLine;
279
+        
280
+        while (nil != (theLine = [theEnum nextObject]))
281
+        {
282
+            // The following check speeds the indexer up by roughly 6x.
283
+            if (([theLine length] > 0) && ([theLine characterAtIndex:0] == '('))
284
+            {
285
+                if (![self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDef1_RE forKey:@"org_lisp_definitions"])
286
+                {
287
+                    // The first expression didn't fire, try the second one.
288
+                    [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDef2_RE forKey:@"org_lisp_definitions"];
289
+                }
290
+                [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDefun_RE forKey:@"org_lisp_defuns"];
291
+                [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDefunsetf_RE forKey:@"org_lisp_defuns"];
292
+                [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDefmethod_RE forKey:@"org_lisp_defmethods"];
293
+                [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDefmethodsetf_RE forKey:@"org_lisp_defmethods"];
294
+                [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDefgeneric_RE forKey:@"org_lisp_defgenerics"];
295
+                [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDefgenericsetf_RE forKey:@"org_lisp_defgenerics"];
296
+                [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDefmacro_RE forKey:@"org_lisp_defmacros"];
297
+                [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDefvar_RE forKey:@"org_lisp_defvars"];
298
+                [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDefclass_RE forKey:@"org_lisp_defclasses"];
299
+                [self addMatchesTo:moreAttributes fromLine:theLine usingRE:LispDefstruct_RE forKey:@"org_lisp_defstructs"];
300
+            }
301
+            
302
+        }
303
+        
304
+        // Add the complete source code as metadata.
305
+        [moreAttributes setObject:source forKey:@"kMDItemTextContent"];
306
+        
307
+        [inAttributes addEntriesFromDictionary:moreAttributes];
308
+        theResult = YES;
309
+        [theAutoreleasePool release];
310
+    }
311
+    @catch (NSException *localException)
312
+    {
313
+        NSLog(@"Lisp Metadata Importer: Could not process file '%@' (Exception: %@)", inPathToFile, localException);
314
+    }
315
+    @finally
316
+    {
317
+    }
318
+    return(theResult);
319
+}
320
+
321
+@end
0 322
new file mode 100644
... ...
@@ -0,0 +1,19 @@
1
+//  DebugLog.h
2
+//
3
+//  Created by John Wiseman on 9/8/05.
4
+//  Copyright 2005 John Wiseman. All rights reserved.
5
+
6
+#import <Cocoa/Cocoa.h>
7
+
8
+
9
+typedef enum {
10
+    DEBUG_LEVEL_VERBOSE = 0,
11
+    DEBUG_LEVEL_DEBUG = 1,
12
+    DEBUG_LEVEL_OFF = 2,
13
+} DebugLevel;
14
+
15
+DebugLevel DebugLevelNameToValue(NSString *name);
16
+
17
+void SetDebugLogLevel(DebugLevel level);
18
+
19
+void DebugLog(DebugLevel level, NSString *format, ...);
0 20
new file mode 100644
... ...
@@ -0,0 +1,60 @@
1
+//  DebugLog.m
2
+//
3
+//  Lisp Metadata Importer
4
+//
5
+//  Created by John Wiseman on 9/8/05.
6
+//  Copyright 2005 John Wiseman. All rights reserved.
7
+
8
+#import "DebugLog.h"
9
+
10
+
11
+static DebugLevel GlobalDebugLevel = DEBUG_LEVEL_OFF;
12
+
13
+
14
+DebugLevel DebugLevelNameToValue(NSString *name)
15
+{
16
+    DebugLevel level = DEBUG_LEVEL_OFF;
17
+    
18
+    if ([name isEqualToString:@"DEBUG_LEVEL_VERBOSE"])
19
+    {
20
+        level = DEBUG_LEVEL_VERBOSE;
21
+    }
22
+    else if ([name isEqualToString:@"DEBUG_LEVEL_DEBUG"])
23
+    {
24
+        level = DEBUG_LEVEL_DEBUG;
25
+    }
26
+    else if ([name isEqualToString:@"DEBUG_LEVEL_OFF"])
27
+    {
28
+        level = DEBUG_LEVEL_OFF;
29
+    }
30
+    return level;
31
+}
32
+
33
+void SetDebugLogLevel(DebugLevel theLevel)
34
+{
35
+    GlobalDebugLevel = theLevel;
36
+}
37
+
38
+void DebugLog(DebugLevel level, NSString *format, ...)
39
+{
40
+    if (level >= GlobalDebugLevel)
41
+    {
42
+        // get a reference to the arguments on the stack that follow
43
+        // the format paramter
44
+        va_list argList;
45
+        va_start (argList, format);
46
+        
47
+        // NSString luckily provides us with this handy method which
48
+        // will do all the work for us, including %@
49
+        NSString *string;
50
+        string = [[NSString alloc] initWithFormat: format
51
+                                        arguments: argList];
52
+        va_end  (argList);
53
+        
54
+        // Log it.
55
+        NSLog(@"%@", string);
56
+        
57
+        [string release];
58
+    }
59
+}
60
+
0 61
new file mode 100644
... ...
@@ -0,0 +1,36 @@
1
+//  GetMetadataForFile.m
2
+//
3
+//  Lisp Metadata Importer
4
+//
5
+//  Created by John Wiseman on 9/1/05.
6
+//  Copyright 2005 John Wiseman.
7
+//
8
+//  Licensed under the MIT license--see the accompanying LICENSE.txt
9
+//  file.
10
+
11
+#import <Foundation/Foundation.h>
12
+
13
+#import "CMetadataImporter.h"
14
+
15
+Boolean GetMetadataForFile(void* thisInterface, NSMutableDictionary *attributes, NSString *contentTypeUTI, NSString *pathToFile)
16
+{
17
+    BOOL theResult = NO;
18
+    NSAutoreleasePool *theAutoreleasePool = [[NSAutoreleasePool alloc] init];
19
+    
20
+    @try
21
+    {
22
+        CMetadataImporter *theImporter = [[[CMetadataImporter alloc] init] autorelease];
23
+        theResult = [theImporter importFile:pathToFile contentType:contentTypeUTI attributes:attributes];
24
+    }
25
+    @catch (NSException *localException)
26
+    {
27
+        NSLog(@"Exception caught during import operation: %@", localException);
28
+    }
29
+    @finally
30
+    {
31
+    }
32
+    
33
+    [theAutoreleasePool release];
34
+    
35
+    return(theResult);;
36
+}
0 37
new file mode 100644
... ...
@@ -0,0 +1,16 @@
1
+//  NSData_HMext.h
2
+//
3
+//  Created by John Wiseman on 9/6/05.
4
+//  Copyright 2005 John Wiseman.
5
+//
6
+//  Licensed under the MIT license--see the accompanying LICENSE.txt
7
+//  file.
8
+
9
+#import <Cocoa/Cocoa.h>
10
+
11
+@interface NSData (NSData_HMExtensions)
12
+
13
++ (id) dataWithContentsOfFile:(NSString*)path maxSize:(int)theMaxSize error:(NSError**)error;
14
+- (id) initWithContentsOfFile:(NSString*)path maxSize:(int)theMaxSize error:(NSError**)error;
15
+
16
+@end
0 17
new file mode 100644
... ...
@@ -0,0 +1,216 @@
1
+//  NSData_HMext.m
2
+//
3
+//  Created by John Wiseman on 9/6/05.
4
+//  Copyright 2005 John Wiseman.
5
+//
6
+//  Licensed under the MIT license--see the accompanying LICENSE.txt
7
+//  file.
8
+
9
+
10
+#import "NSData_HMext.h"
11
+#import "DebugLog.h"
12
+
13
+
14
+// Reads up to maxLen bytes from a file into a buffer.  The
15
+// buffer is allocated and returned in buf, while the number of
16
+// bytes read is returned in len.
17
+//
18
+// More or less taken from GnuStep's implementation of NSData.
19
+
20
+static BOOL readContentsOfFile(NSString* path, void** buf, size_t maxLen, size_t* len, NSZone* zone)
21
+{
22
+    const char	*thePath = 0;
23
+    FILE		*theFile = 0;
24
+    void		*tmp = 0;
25
+    size_t			c;
26
+    size_t		fileLength;
27
+    
28
+    thePath = [path fileSystemRepresentation];
29
+    if (thePath == 0)
30
+    {
31
+        //      NSWarnFLog(@"Open (%@) attempt failed - bad path", path);
32
+        return NO;
33
+    }
34
+    
35
+    theFile = fopen(thePath, "rb");
36
+    
37
+    if (theFile == 0)		/* We failed to open the file. */
38
+    {
39
+        //      NSWarnFLog(@"Open (%@) attempt failed - %s", path,
40
+        //      GSLastErrorStr(errno));
41
+        goto failure;
42
+    }
43
+    
44
+    /*
45
+     *	Seek to the end of the file.
46
+     */
47
+    c = fseek(theFile, 0L, SEEK_END);
48
+    if (c != 0)
49
+    {
50
+        //      NSWarnFLog(@"Seek to end of file (%@) failed - %s", path,
51
+        //      GSLastErrorStr(errno));
52
+        goto failure;
53
+    }
54
+    
55
+    /*
56
+     *	Determine the length of the file (having seeked to the end of the
57
+     *	file) by calling ftell().
58
+     */
59
+    fileLength = ftell(theFile);
60
+    if (fileLength == -1)
61
+    {
62
+        //      NSWarnFLog(@"Ftell on %@ failed - %s", path,
63
+        //      GSLastErrorStr(errno));
64
+        goto failure;
65
+    }
66
+    
67
+    /*
68
+     *	Rewind the file pointer to the beginning, preparing to read in
69
+     *	the file.
70
+     */
71
+    c = fseek(theFile, 0L, SEEK_SET);
72
+    if (c != 0)
73
+    {
74
+        //      NSWarnFLog(@"Fseek to start of file (%@) failed - %s", path,
75
+        //      GSLastErrorStr(errno));
76
+        goto failure;
77
+    }
78
+    
79
+    if (fileLength == 0)
80
+    {
81
+        unsigned char	buf[BUFSIZ];
82
+        size_t bytesToRead = maxLen;
83
+        /*
84
+         * Special case ... a file of length zero may be a named pipe or some
85
+         * file in the /proc filesystem, which will return us data if we read
86
+         * from it ... so we try reading as much as we can, up to the specified
87
+         * limit.
88
+         */
89
+        while ((c = fread(buf, 1, (bytesToRead < BUFSIZ) ? bytesToRead : BUFSIZ, theFile)) != 0)
90
+        {
91
+            if (tmp == 0)
92
+            {
93
+                tmp = NSZoneMalloc(zone, c);
94
+            }
95
+            else
96
+            {
97
+                tmp = NSZoneRealloc(zone, tmp, fileLength + c);
98
+            }
99
+            if (tmp == 0)
100
+            {
101
+                //	      NSLog(@"Malloc failed for file (%@) of length %d - %s", path,
102
+                //		fileLength + c, GSLastErrorStr(errno));
103
+                goto failure;
104
+            }
105
+            memcpy(tmp + fileLength, buf, c);
106
+            fileLength += c;
107
+            bytesToRead -= c;
108
+        }
109
+        if (fileLength == maxLen)
110
+        {
111
+            DebugLog(DEBUG_LEVEL_DEBUG, @"Truncated indexing of %s to %d bytes", thePath, maxLen);
112
+        }
113
+    }
114
+    else
115
+    {
116
+        if (fileLength > maxLen)
117
+        {
118
+            fileLength = maxLen;
119
+            DebugLog(DEBUG_LEVEL_DEBUG, @"Truncated indexing of %s to %d bytes", thePath, maxLen);
120
+        }
121
+        tmp = NSZoneMalloc(zone, fileLength);
122
+        if (tmp == 0)
123
+        {
124
+            //	  NSLog(@"Malloc failed for file (%@) of length %d - %s", path,
125
+            //	  fileLength, GSLastErrorStr(errno));
126
+            goto failure;
127
+        }
128
+        
129
+        c = fread(tmp, 1, fileLength, theFile);
130
+        if (c != (int)fileLength)
131
+        {
132
+            //	  NSWarnFLog(@"read of file (%@) contents failed - %s", path,
133
+            //	  GSLastErrorStr(errno));
134
+            goto failure;
135
+        }
136
+    }
137
+    
138
+    *buf = tmp;
139
+    *len = fileLength;
140
+    fclose(theFile);
141
+    return YES;
142
+    
143
+    /*
144
+     *	Just in case the failure action needs to be changed.
145
+     */
146
+failure:
147
+    if (tmp != 0)
148
+    {
149
+        NSZoneFree(zone, tmp);
150
+    }
151
+    if (theFile != 0)
152
+    {
153
+        fclose(theFile);
154
+    }
155
+    return NO;
156
+}
157
+
158
+@implementation NSData (NSData_Extensions)
159
+
160
+
161
+/**
162
+ * Returns a data object encapsulating the contents of the specified file
163
+ * (but only up to the first theMaxSize bytes of the file).
164
+ * Invokes -initWithContentsOfFile:
165
+ *
166
+ * Based on GnuStep's -[NSData dataWithContentsOfFile].
167
+ */
168
++ (id) dataWithContentsOfFile: (NSString*)path maxSize:(int)theMaxSize error:(NSError**)error
169
+{
170
+    NSData	*d;
171
+    
172
+    d = [NSData allocWithZone: NSDefaultMallocZone()];
173
+    d = [d initWithContentsOfFile: path maxSize:theMaxSize error:error];
174
+    return [d autorelease];
175
+}
176
+
177
+
178
+/**
179
+ * Initializes the receiver with up to theMaxSize bytes of the specified file.
180
+ * Returns the resulting object.
181
+ * Returns nil if the file does not exist or can not be read for some reason,
182
+ * in which case error information will (probably) be returned as well.
183
+ *
184
+ * Based on GnuStep's -[NSData initWithContentsOfFile].
185
+ */
186
+- (id) initWithContentsOfFile: (NSString*)path maxSize:(int)theMaxSize error:(NSError**)error
187
+{
188
+    void		*fileBytes = NULL;
189
+    size_t	fileLength = 0;
190
+    NSZone	*zone;
191
+    
192
+    zone = NSDefaultMallocZone();
193
+    if (readContentsOfFile(path, &fileBytes, theMaxSize, &fileLength, zone) == NO)
194
+    {
195
+        if (error)
196
+        {
197
+            NSNumber *errorCode = [NSNumber numberWithInt:errno];
198
+            NSString *errorDescription = [NSString stringWithCString:strerror(errno) encoding:NSUTF8StringEncoding];
199
+            NSString* errorPath = path;
200
+            NSMutableDictionary *errorAttribs = [NSMutableDictionary dictionaryWithCapacity:2];
201
+            [errorAttribs setObject:errorCode forKey:@"Errno"];
202
+            [errorAttribs setObject:errorDescription forKey:@"Description"];
203
+            [errorAttribs setObject:errorPath forKey:@"Path"];
204
+            *error = [NSError errorWithDomain:NSPOSIXErrorDomain code:errno userInfo:errorAttribs];
205
+        }
206
+        [self dealloc];
207
+        return nil;
208
+    }
209
+    else
210
+    {
211
+        self = [self initWithBytesNoCopy:fileBytes length:fileLength freeWhenDone:YES];
212
+    }
213
+    return self;
214
+}
215
+
216
+@end
0 217
new file mode 100644
... ...
@@ -0,0 +1,18 @@
1
+//  NSString_HMext.h
2
+//
3
+//  Created by John Wiseman on 9/6/05.
4
+//  Copyright 2005 John Wiseman.
5
+//
6
+//  Licensed under the MIT license--see the accompanying LICENSE.txt
7
+//  file.
8
+
9
+#import <Cocoa/Cocoa.h>
10
+
11
+@interface NSString (NSString_HMExtensions)
12
+
13
++ (NSString*)stringWithContentsOfFile:(NSString*)pathToFile maxSize:(int)theMaxSize encoding:(NSStringEncoding)theEncoding error:(NSError**)theError;
14
+
15
+- (NSArray*)componentsSeparatedByCharacterFromSet:(NSCharacterSet*)set;
16
+- (NSString*)initWithContentsOfFile:(NSString*)pathToFile maxSize:(int)theMaxSize encoding:(NSStringEncoding)theEncoding error:(NSError**)theError;
17
+
18
+@end
0 19
new file mode 100644
... ...
@@ -0,0 +1,97 @@
1
+//  NSString_HMext.m
2
+//
3
+//  Created by John Wiseman on 9/6/05.
4
+//  Copyright 2005 John Wiseman.
5
+//
6
+//  Licensed under the MIT license--see the accompanying LICENSE.txt
7
+//  file.
8
+
9
+#import "NSString_HMext.h"
10
+#import "NSData_HMext.h"
11
+
12
+@implementation NSString (NSString_ParsingExtensions)
13
+
14
+/*
15
+ * Returns an NSArray containing substrings from the receiver that have been
16
+ * divided by characters in separatorSet. The substrings in the array appear
17
+ * in the order they did in the receiver.
18
+ *
19
+ * Based on GnuStep's componentsSeparatedByString.
20
+ */
21
+- (NSArray*) componentsSeparatedByCharacterFromSet: (NSCharacterSet*)separatorSet
22
+{
23
+    NSRange search;
24
+    NSRange complete;
25
+    NSRange found;
26
+    NSMutableArray *array = [NSMutableArray array];
27
+    
28
+    search = NSMakeRange(0, [self length]);
29
+    complete = search;
30
+    found = [self rangeOfCharacterFromSet:separatorSet];
31
+    while (found.length != 0)
32
+    {
33
+        NSRange current;
34
+        
35
+        current = NSMakeRange(search.location, found.location - search.location);
36
+        [array addObject:[self substringWithRange:current]];
37
+        
38
+        search = NSMakeRange(found.location + found.length, complete.length - found.location - found.length);
39
+        found = [self rangeOfCharacterFromSet:separatorSet options:0 range:search];
40
+    }
41
+    // Add the last search string range
42
+    [array addObject: [self substringWithRange: search]];
43
+    
44
+    return array;
45
+}
46
+
47
+/**
48
+ * Load up to the first theMaxSize bytes of file at path into a new string.
49
+ */
50
++ (NSString*)stringWithContentsOfFile:(NSString*)pathToFile maxSize:(int)theMaxSize encoding:(NSStringEncoding)theEncoding error:(NSError**)theError
51
+{
52
+    NSString	*obj;
53
+    
54
+    obj = [self allocWithZone:NSDefaultMallocZone()];
55
+    obj = [obj initWithContentsOfFile:pathToFile maxSize:theMaxSize encoding:theEncoding error:theError];
56
+    return [obj autorelease];
57
+}
58
+
59
+/**
60
+ * Initialises the receiver with up to the first maxSize bytes of the
61
+ * file at path.
62
+ *
63
+ * Invokes [NSData-initWithContentsOfFile:maxSize:error:] to read the
64
+ * file, then examines the data to infer its encoding type, and
65
+ * converts the data to a string using -initWithData:encoding:
66
+ *
67
+ * Releases the receiver and returns nil if the file could not be read
68
+ * and converted to a string.
69
+ * 
70
+ */
71
+- (NSString*)initWithContentsOfFile:(NSString*)path maxSize:(int)theMaxSize encoding:(NSStringEncoding)theEncoding error:(NSError**)theError
72
+{
73
+    NSData		*d;
74
+    NSUInteger		len;
75
+    const unsigned char	*data_bytes;
76
+    
77
+    d = [[NSData alloc] initWithContentsOfFile:path maxSize:theMaxSize error:theError];
78
+    if (d == nil)
79
+    {
80
+        [self dealloc];
81
+        return nil;
82
+    }
83
+    len = [d length];
84
+    if (len == 0)
85
+    {
86
+        [d release];
87
+        [self dealloc];
88
+        return @"";
89
+    }
90
+    data_bytes = [d bytes];
91
+    
92
+    self = [self initWithData:d encoding:theEncoding];
93
+    [d release];
94
+    return self;
95
+}
96
+
97
+@end
0 98
new file mode 100644
... ...
@@ -0,0 +1,208 @@
1
+//  main.c
2
+//
3
+//  Lisp Metadata Importer
4
+//
5
+//  Created by John Wiseman on 9/1/05.
6
+//  Copyright 2005 John Wiseman.
7
+//
8
+//  Licensed under the MIT license--see the accompanying LICENSE.txt
9
+//  file.
10
+
11
+#include <CoreFoundation/CoreFoundation.h>
12
+#include <CoreFoundation/CFPlugInCOM.h>
13
+#include <CoreServices/CoreServices.h>
14
+
15
+// Constants
16
+
17
+
18
+#define PLUGIN_ID "12C869B3-3D4B-4DED-B156-5D55D1C64354"
19
+
20
+//
21
+// Below is the generic glue code for all plug-ins.
22
+//
23
+// You should not have to modify this code aside from changing
24
+// names if you decide to change the names defined in the Info.plist
25
+//
26
+
27
+
28
+// -----------------------------------------------------------------------------
29
+//	typedefs
30
+// -----------------------------------------------------------------------------
31
+
32
+// The import function to be implemented in GetMetadataForFile.c
33
+Boolean GetMetadataForFile(void *thisInterface, 
34
+                           CFMutableDictionaryRef attributes, 
35
+                           CFStringRef contentTypeUTI,
36
+                           CFStringRef pathToFile);
37
+
38
+// The layout for an instance of MetaDataImporterPlugIn 
39
+typedef struct __MetadataImporterPluginType
40
+{
41
+    MDImporterInterfaceStruct *conduitInterface;
42
+    CFUUIDRef                 factoryID;
43
+    UInt32                    refCount;
44
+} MetadataImporterPluginType;
45
+
46
+// -----------------------------------------------------------------------------
47
+//	prototypes
48
+// -----------------------------------------------------------------------------
49
+//	Forward declaration for the IUnknown implementation.
50
+//
51
+
52
+MetadataImporterPluginType  *AllocMetadataImporterPluginType(CFUUIDRef inFactoryID);
53
+void                      DeallocMetadataImporterPluginType(MetadataImporterPluginType *thisInstance);
54
+HRESULT                   MetadataImporterQueryInterface(void *thisInstance,REFIID iid,LPVOID *ppv);
55
+void                     *MetadataImporterPluginFactory(CFAllocatorRef allocator,CFUUIDRef typeID);
56
+ULONG                     MetadataImporterPluginAddRef(void *thisInstance);
57
+ULONG                     MetadataImporterPluginRelease(void *thisInstance);
58
+// -----------------------------------------------------------------------------
59
+//	testInterfaceFtbl	definition
60
+// -----------------------------------------------------------------------------
61
+//	The TestInterface function table.
62
+//
63
+
64
+static MDImporterInterfaceStruct testInterfaceFtbl = {
65
+    NULL,
66
+    MetadataImporterQueryInterface,
67
+    MetadataImporterPluginAddRef,
68
+    MetadataImporterPluginRelease,
69
+    GetMetadataForFile
70
+};
71
+
72
+
73
+// -----------------------------------------------------------------------------
74
+//	AllocMetadataImporterPluginType
75
+// -----------------------------------------------------------------------------
76
+//	Utility function that allocates a new instance.
77
+//      You can do some initial setup for the importer here if you wish
78
+//      like allocating globals etc...
79
+//
80
+MetadataImporterPluginType *AllocMetadataImporterPluginType(CFUUIDRef inFactoryID)
81
+{
82
+    MetadataImporterPluginType *theNewInstance;
83
+    
84
+    theNewInstance = (MetadataImporterPluginType *)malloc(sizeof(MetadataImporterPluginType));
85
+    memset(theNewInstance,0,sizeof(MetadataImporterPluginType));
86
+    
87
+    /* Point to the function table */
88
+    theNewInstance->conduitInterface = &testInterfaceFtbl;
89
+    
90
+    /*  Retain and keep an open instance refcount for each factory. */
91
+    theNewInstance->factoryID = CFRetain(inFactoryID);
92
+    CFPlugInAddInstanceForFactory(inFactoryID);
93
+    
94
+    /* This function returns the IUnknown interface so set the refCount to one. */
95
+    theNewInstance->refCount = 1;
96
+    return theNewInstance;
97
+}
98
+
99
+// -----------------------------------------------------------------------------
100
+//	DeallocPython_Metadata_ImporterMDImporterPluginType
101
+// -----------------------------------------------------------------------------
102
+//	Utility function that deallocates the instance when
103
+//	the refCount goes to zero.
104
+//      In the current implementation importer interfaces are never deallocated
105
+//      but implement this as this might change in the future
106
+//
107
+void DeallocMetadataImporterPluginType(MetadataImporterPluginType *thisInstance)
108
+{
109
+    CFUUIDRef theFactoryID;
110
+    
111
+    theFactoryID = thisInstance->factoryID;
112
+    free(thisInstance);
113
+    if (theFactoryID){
114
+        CFPlugInRemoveInstanceForFactory(theFactoryID);
115
+        CFRelease(theFactoryID);
116
+    }
117
+}
118
+
119
+// -----------------------------------------------------------------------------
120
+//	MetadataImporterQueryInterface
121
+// -----------------------------------------------------------------------------
122
+//	Implementation of the IUnknown QueryInterface function.
123
+//
124
+HRESULT MetadataImporterQueryInterface(void *thisInstance,REFIID iid,LPVOID *ppv)
125
+{
126
+    CFUUIDRef interfaceID;
127
+    
128
+    interfaceID = CFUUIDCreateFromUUIDBytes(kCFAllocatorDefault,iid);
129
+    
130
+    if (CFEqual(interfaceID,kMDImporterInterfaceID)){
131
+        /* If the Right interface was requested, bump the ref count,
132
+         * set the ppv parameter equal to the instance, and
133
+         * return good status.
134
+         */
135
+        ((MetadataImporterPluginType*)thisInstance)->conduitInterface->AddRef(thisInstance);
136
+        *ppv = thisInstance;
137
+        CFRelease(interfaceID);
138
+        return S_OK;
139
+    }else{
140
+        if (CFEqual(interfaceID,IUnknownUUID)){
141
+            /* If the IUnknown interface was requested, same as above. */
142
+            ((MetadataImporterPluginType*)thisInstance )->conduitInterface->AddRef(thisInstance);
143
+            *ppv = thisInstance;
144
+            CFRelease(interfaceID);
145
+            return S_OK;
146
+        }else{
147
+            /* Requested interface unknown, bail with error. */
148
+            *ppv = NULL;
149
+            CFRelease(interfaceID);
150
+            return E_NOINTERFACE;
151
+        }
152
+    }
153
+}
154
+
155
+// -----------------------------------------------------------------------------
156
+//	MetadataImporterPluginAddRef
157
+// -----------------------------------------------------------------------------
158
+//	Implementation of reference counting for this type. Whenever an interface
159
+//	is requested, bump the refCount for the instance. NOTE: returning the
160
+//	refcount is a convention but is not required so don't rely on it.
161
+//
162
+ULONG MetadataImporterPluginAddRef(void *thisInstance)
163
+{
164
+    ((MetadataImporterPluginType *)thisInstance )->refCount += 1;
165
+    return ((MetadataImporterPluginType*) thisInstance)->refCount;
166
+}
167
+
168
+// -----------------------------------------------------------------------------
169
+// SampleCMPluginRelease
170
+// -----------------------------------------------------------------------------
171
+//	When an interface is released, decrement the refCount.
172
+//	If the refCount goes to zero, deallocate the instance.
173
+//
174
+ULONG MetadataImporterPluginRelease(void *thisInstance)
175
+{
176
+    ((MetadataImporterPluginType*)thisInstance)->refCount -= 1;
177
+    if (((MetadataImporterPluginType*)thisInstance)->refCount == 0){
178
+        DeallocMetadataImporterPluginType((MetadataImporterPluginType*)thisInstance );
179
+        return 0;
180
+    }else{
181
+        return ((MetadataImporterPluginType*) thisInstance )->refCount;
182
+    }
183
+}
184
+
185
+// -----------------------------------------------------------------------------
186
+//	Python_Metadata_ImporterMDImporterPluginFactory
187
+// -----------------------------------------------------------------------------
188
+//	Implementation of the factory function for this type.
189
+//
190
+void *MetadataImporterPluginFactory(CFAllocatorRef allocator,CFUUIDRef typeID)
191
+{
192
+    MetadataImporterPluginType *result;
193
+    CFUUIDRef                 uuid;
194
+    
195
+    
196
+    /* If correct type is being requested, allocate an
197
+     * instance of TestType and return the IUnknown interface.
198
+     */
199
+    if (CFEqual(typeID,kMDImporterTypeID)){
200
+        uuid = CFUUIDCreateFromString(kCFAllocatorDefault,CFSTR(PLUGIN_ID));
201
+        result = AllocMetadataImporterPluginType(uuid);
202
+        CFRelease(uuid);
203
+        return result;
204
+    }
205
+    /* If the requested type is incorrect, return NULL. */
206
+    return NULL;
207
+}
208
+
0 209
new file mode 100644
... ...
@@ -0,0 +1,108 @@
1
+//  main.m
2
+//
3
+//  Lisp Metadata Importer
4
+//
5
+//  Created by John Wiseman on 9/5/05.
6
+//  Copyright 2005 John Wiseman.
7
+//
8
+//  Licensed under the MIT license--see the accompanying LICENSE.txt
9
+//  file.
10
+
11
+#import "CMetadataImporter.h"
12
+#import "DebugLog.h"
13
+
14
+
15
+void Log(NSString *format, ...)
16
+{
17
+    // get a reference to the arguments on the stack that follow
18
+    // the format paramter
19
+    va_list argList;
20
+    va_start (argList, format);
21
+
22
+    // NSString luckily provides us with this handy method which
23
+    // will do all the work for us, including %@
24
+    NSString *string;
25
+    string = [[NSString alloc] initWithFormat: format
26
+                               arguments: argList];
27
+    va_end  (argList);
28
+
29
+    // send it to standard out.
30
+    printf("%s\n", [string UTF8String]);
31
+
32
+    [string release];
33
+
34
+}
35
+
36
+void printUsage(const char *progname)
37
+{
38
+	printf("Usage: %s [-noprint] <file 1> <file 2>...\n", progname);
39
+	printf("List Metadata Importer Test tool\n\n");
40
+	printf("Processes the specified files as Lisp source files and extracts and\n");
41
+	printf("prints the metadata attributes that the Lisp Metadata Importer plugin\n");
42
+	printf("would find.\n\n");
43
+	printf("options:  -noprint    Do not print metadata (useful if you want to do\n");
44
+	printf("                      timing bechmarks).\n");
45
+}
46
+
47
+void printAttributes(NSDictionary *attributes)
48
+{
49
+	NSEnumerator *keyEnum = [attributes keyEnumerator];
50
+	NSString *key;
51
+	
52
+	while (nil != (key = [keyEnum nextObject]))
53
+	{
54
+		Log(@"%@:", key);
55
+		Log(@"%@", [attributes objectForKey:key]);
56
+	}
57
+}
58
+
59
+int main(int argc, char **argv)
60
+{
61
+	bool doNotPrint = false;
62
+	NSAutoreleasePool *theAutoreleasePool = [[NSAutoreleasePool alloc] init];
63
+	CMetadataImporter *importer = [[CMetadataImporter alloc] init];
64
+	int argStartProcessingIndex = 1;
65
+
66
+	if (argc == 1 || (argc > 1 && strcmp(argv[1], "-h") == 0))
67
+	{
68
+		printUsage(argv[0]);
69
+		return 1;
70
+	}
71
+	
72
+	if (argc > 1 && strcmp(argv[1], "-noprint") == 0)
73
+	{
74
+		doNotPrint = true;
75
+		argStartProcessingIndex = 2;
76
+	}
77
+	
78
+	int i;
79
+	for (i = argStartProcessingIndex; i < argc; i++)
80
+	{
81
+		NSMutableDictionary *attribs = [[NSMutableDictionary alloc] init];
82
+		NSString *path = [[NSString alloc] initWithCString:argv[i]];
83
+
84
+		if (!doNotPrint)
85
+		{
86
+			NSLog(@"Processing '%@'", path);
87
+		}
88
+		
89
+		BOOL success = [importer importFile:path contentType:@"" attributes:attribs];
90
+		if (success != YES)
91
+		{
92
+			NSLog(@"Unable to process %s", argv[i]);
93
+		}
94
+		else
95
+		{
96
+			if (!doNotPrint)
97
+			{
98
+				printAttributes(attribs);
99
+			}
100
+		}
101
+		[attribs release];
102
+		[path release];
103
+	} 
104
+
105
+	[theAutoreleasePool release];
106
+	
107
+	return 0;
108
+}