[CalendarServer-changes] [1211] PyOpenDirectory/trunk

source_changes at macosforge.org source_changes at macosforge.org
Mon Feb 19 13:37:41 PST 2007


Revision: 1211
          http://trac.macosforge.org/projects/calendarserver/changeset/1211
Author:   cdaboo at apple.com
Date:     2007-02-19 13:37:40 -0800 (Mon, 19 Feb 2007)

Log Message:
-----------
Authentication should use the GUID to identify a user not the user id, as it is possible to have multiple
directory sources which may contain the same user id, but represent different users - GUID will be unique.

Modified Paths:
--------------
    PyOpenDirectory/trunk/pysrc/opendirectory.py
    PyOpenDirectory/trunk/src/CDirectoryService.cpp
    PyOpenDirectory/trunk/src/CDirectoryService.h
    PyOpenDirectory/trunk/src/PythonWrapper.cpp
    PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1v3
    PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.pbxuser
    PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/project.pbxproj
    PyOpenDirectory/trunk/support/test.cpp
    PyOpenDirectory/trunk/test.py

Removed Paths:
-------------
    PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1

Modified: PyOpenDirectory/trunk/pysrc/opendirectory.py
===================================================================
--- PyOpenDirectory/trunk/pysrc/opendirectory.py	2007-02-19 16:47:33 UTC (rev 1210)
+++ PyOpenDirectory/trunk/pysrc/opendirectory.py	2007-02-19 21:37:40 UTC (rev 1211)
@@ -55,21 +55,23 @@
         or C{None} otherwise.
     """
 
-def authenticateUserBasic(obj, user, pswd):
+def authenticateUserBasic(obj, guid, user, pswd):
     """
     Authenticate a user with a password to Open Directory.
     
     @param obj: C{object} the object obtained from an odInit call.
+    @param guid: C{str} the GUID for the record to check.
     @param user: C{str} the user identifier/directory record name to check.
     @param pswd: C{str} containing the password to check.
     @return: C{True} if the user was found, C{False} otherwise.
     """
 
-def authenticateUserDigest(obj, user, challenge, response, method):
+def authenticateUserDigest(obj, guid, user, challenge, response, method):
     """
     Authenticate using HTTP Digest credentials to Open Directory.
     
     @param obj: C{object} the object obtained from an odInit call.
+    @param guid: C{str} the GUID for the record to check.
     @param user: C{str} the user identifier/directory record name to check.
     @param challenge: C{str} the HTTP challenge sent to the client.
     @param response: C{str} the HTTP response sent from the client.

Modified: PyOpenDirectory/trunk/src/CDirectoryService.cpp
===================================================================
--- PyOpenDirectory/trunk/src/CDirectoryService.cpp	2007-02-19 16:47:33 UTC (rev 1210)
+++ PyOpenDirectory/trunk/src/CDirectoryService.cpp	2007-02-19 21:37:40 UTC (rev 1211)
@@ -145,15 +145,16 @@
 // 
 // Authenticate a user to the directory using plain text credentials.
 //
+// @param guid: the GUID for the user record.
 // @param user: the uid of the user.
 // @param pswd: the plain text password to authenticate with.
 // @return: true if authentication succeeds, false otherwise.
 //
-bool CDirectoryService::AuthenticateUserBasic(const char* user, const char* pswd, bool& result)
+bool CDirectoryService::AuthenticateUserBasic(const char* guid, const char* user, const char* pswd, bool& result)
 {
 	try
 	{
-		result = NativeAuthenticationBasic(user, pswd);
+		result = NativeAuthenticationBasic(guid, user, pswd);
 		return true;
 	}
 	catch(long dserror)
@@ -172,15 +173,16 @@
 // 
 // Authenticate a user to the directory using HTTP DIGEST credentials.
 //
+// @param guid: the GUID for the user record.
 // @param challenge: HTTP challenge sent by server.
 // @param response: HTTP response sent by client.
 // @return: true if authentication succeeds, false otherwise.
 //
-bool CDirectoryService::AuthenticateUserDigest(const char* user, const char* challenge, const char* response, const char* method, bool& result)
+bool CDirectoryService::AuthenticateUserDigest(const char* guid, const char* user, const char* challenge, const char* response, const char* method, bool& result)
 {
 	try
 	{
-		result = NativeAuthenticationDigest(user, challenge, response, method);
+		result = NativeAuthenticationDigest(guid, user, challenge, response, method);
 		return true;
 	}
 	catch(long dserror)
@@ -413,7 +415,7 @@
 // 
 // Get specific attributes for records of a specified type in the directory.
 //
-// @param query: a dictionary containg attribute/value pairs to match in records.
+// @param query: a dictionary containing attribute/value pairs to match in records.
 // @param matchType: the match type to to use.
 // @param casei: true if case-insensitive match is to be used, false otherwise.
 // @param allmatch: true if a match to every attribute/value must occur (AND), false if only one needs to match (OR).
@@ -639,34 +641,44 @@
 
 // AuthenticationGetNode
 // 
-// Authenticate a user to the directory.
+// Get the node associated with the user we want to authenticate.
 //
-// @param user: the uid of the user.
+// @param guid: the GUID for the user record.
 // @return: CFStringUtil for node name.
 //
-CFStringRef CDirectoryService::AuthenticationGetNode(const char* user)
+CFStringRef CDirectoryService::AuthenticationGetNode(const char* guid)
 {
-	// We need to find the 'native' node for the specifies user as the current node
-	// made not support this user's authentication directly.
+	// We need to find the 'native' node for the specified record guid as the current node
+	// may not support this user's authentication directly.
 	CFStringRef result = NULL;
 
-	CFMutableArrayRef users = ::CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
-	CFStringUtil cfuser(user);
-	::CFArrayAppendValue(users, cfuser.get());
+	CFStringRef keys[1] = {CFSTR(kDS1AttrGeneratedUID)};
+	CFStringUtil cfguid(guid);
+	CFStringRef values[1] = {cfguid.get()};
+	CFDictionaryRef query = ::CFDictionaryCreate(kCFAllocatorDefault, (const void **)keys, (const void**)values, 1, &kCFTypeDictionaryKeyCallBacks, &kCFTypeDictionaryValueCallBacks);
 	
 	CFMutableArrayRef attrs = ::CFArrayCreateMutable(kCFAllocatorDefault, 0, &kCFTypeArrayCallBacks);
 	CFStringUtil cfattr(kDSNAttrMetaNodeLocation);
 	::CFArrayAppendValue(attrs, cfattr.get());
 	
-	// First list the record for the current user and get its node.
-	CFMutableDictionaryRef found = _ListAllRecordsWithAttributes(kDSStdRecordTypeUsers, users, attrs);
-	::CFRelease(users);
+	// First list the record for the current GUID and get its node.
+	CFMutableDictionaryRef found = _QueryRecordsWithAttributes(query, eDSExact, false, false, kDSStdRecordTypeUsers, attrs);
+	::CFRelease(query);
 	::CFRelease(attrs);
 	if (found == NULL)
 		return result;
 
+	// Must have only one result
+	if (CFDictionaryGetCount(found) != 1)
+	{
+		::CFRelease(found);
+		return result;
+	}
+
 	// Now extract the returned data.
-	CFDictionaryRef dictvalue = (CFDictionaryRef)CFDictionaryGetValue(found, cfuser.get());
+	const void* dictvalues[1] = {NULL};
+	::CFDictionaryGetKeysAndValues(found, NULL, &dictvalues[0]);
+	CFDictionaryRef dictvalue = (CFDictionaryRef)dictvalues[0];
 	if ((dictvalue == NULL) || (::CFDictionaryGetCount(dictvalue) == 0))
 	{
 		::CFRelease(found);
@@ -696,16 +708,17 @@
 // 
 // Authenticate a user to the directory.
 //
+// @param guid: the GUID for the user record.
 // @param user: the uid of the user.
 // @param pswd: the plain text password to authenticate with.
 // @return: true if authentication succeeds, false otherwise.
 //
-bool CDirectoryService::NativeAuthenticationBasic(const char* user, const char* pswd)
+bool CDirectoryService::NativeAuthenticationBasic(const char* guid, const char* user, const char* pswd)
 {
 	// We need to find the 'native' node for the specifies user as the current node
 	// made not support this user's authentication directly.
 	
-	CFStringRef result = AuthenticationGetNode(user);
+	CFStringRef result = AuthenticationGetNode(guid);
 	if (result == NULL)
 		return false;
 	CFStringUtil cfvalue(result);
@@ -811,18 +824,19 @@
 // 
 // Authenticate a user to the directory.
 //
+// @param guid: the GUID for the user record.
 // @param user: the uid of the user.
 // @param challenge: the server challenge.
 // @param response: the client response.
 // @param method: the HTTP method.
 // @return: true if authentication succeeds, false otherwise.
 //
-bool CDirectoryService::NativeAuthenticationDigest(const char* user, const char* challenge, const char* response, const char* method)
+bool CDirectoryService::NativeAuthenticationDigest(const char* guid, const char* user, const char* challenge, const char* response, const char* method)
 {
 	// We need to find the 'native' node for the specifies user as the current node
 	// made not support this user's authentication directly.
 	
-	CFStringRef result = AuthenticationGetNode(user);
+	CFStringRef result = AuthenticationGetNode(guid);
 	if (result == NULL)
 		return false;
 	CFStringUtil cfvalue(result);

Modified: PyOpenDirectory/trunk/src/CDirectoryService.h
===================================================================
--- PyOpenDirectory/trunk/src/CDirectoryService.h	2007-02-19 16:47:33 UTC (rev 1210)
+++ PyOpenDirectory/trunk/src/CDirectoryService.h	2007-02-19 21:37:40 UTC (rev 1211)
@@ -35,8 +35,8 @@
 	CFMutableDictionaryRef ListAllRecordsWithAttributes(const char* recordType, CFArrayRef attributes);
 	CFMutableDictionaryRef QueryRecordsWithAttributes(CFDictionaryRef query, int matchType, bool casei, bool allmatch, const char* recordType, CFArrayRef attributes);
 
-	bool AuthenticateUserBasic(const char* user, const char* pswd, bool& result);
-	bool AuthenticateUserDigest(const char* user, const char* challenge, const char* response, const char* method, bool& result);
+	bool AuthenticateUserBasic(const char* guid, const char* user, const char* pswd, bool& result);
+	bool AuthenticateUserDigest(const char* guid, const char* user, const char* challenge, const char* response, const char* method, bool& result);
 	
 private:
 	const char*			mNodeName;
@@ -48,10 +48,10 @@
 	CFMutableDictionaryRef _ListAllRecordsWithAttributes(const char* type, CFArrayRef names, CFArrayRef attrs);
 	CFMutableDictionaryRef _QueryRecordsWithAttributes(CFDictionaryRef query, int matchType, bool casei, bool allmatch, const char* recordType, CFArrayRef attributes);
 
-	CFStringRef CDirectoryService::AuthenticationGetNode(const char* user);
-	bool NativeAuthenticationBasic(const char* user, const char* pswd);
+	CFStringRef CDirectoryService::AuthenticationGetNode(const char* guid);
+	bool NativeAuthenticationBasic(const char* guid, const char* user, const char* pswd);
 	bool NativeAuthenticationBasicToNode(const char* nodename, const char* user, const char* pswd);
-	bool NativeAuthenticationDigest(const char* user, const char* challenge, const char* response, const char* method);
+	bool NativeAuthenticationDigest(const char* guid, const char* user, const char* challenge, const char* response, const char* method);
 	bool NativeAuthenticationDigestToNode(const char* nodename, const char* user, const char* challenge, const char* response, const char* method);
 	
 	void OpenService();

Modified: PyOpenDirectory/trunk/src/PythonWrapper.cpp
===================================================================
--- PyOpenDirectory/trunk/src/PythonWrapper.cpp	2007-02-19 16:47:33 UTC (rev 1210)
+++ PyOpenDirectory/trunk/src/PythonWrapper.cpp	2007-02-19 21:37:40 UTC (rev 1211)
@@ -407,11 +407,12 @@
 }
 
 /*
-def authenticateUserBasic(obj, user, pswd):
+def authenticateUserBasic(obj, guid, user, pswd):
 	"""
 	Authenticate a user with a password to Open Directory.
 	
 	@param obj: C{object} the object obtained from an odInit call.
+    @param guid: C{str} the GUID for the record to check.
     @param user: C{str} the user identifier/directory record name to check.
 	@param pswd: C{str} containing the password to check.
 	@return: C{True} if the user was found, C{False} otherwise.
@@ -420,9 +421,10 @@
 extern "C" PyObject *authenticateUserBasic(PyObject *self, PyObject *args)
 {
 	PyObject* pyds;
+	const char* guid;
 	const char* user;
 	const char* pswd;
-    if (!PyArg_ParseTuple(args, "Oss", &pyds, &user, &pswd) || !PyCObject_Check(pyds))
+    if (!PyArg_ParseTuple(args, "Osss", &pyds, &guid, &user, &pswd) || !PyCObject_Check(pyds))
     {
 		PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices authenticateUserBasic: could not parse arguments", 0));		
         return NULL;
@@ -432,7 +434,7 @@
 	if (ds != NULL)
 	{
 		bool result = false;
-		if (ds->AuthenticateUserBasic(user, pswd, result))
+		if (ds->AuthenticateUserBasic(guid, user, pswd, result))
 		{
 			if (result)
 				Py_RETURN_TRUE;
@@ -447,11 +449,12 @@
 }
 
 /*
-def authenticateUserDigest(obj, user, challenge, response, method):
+def authenticateUserDigest(obj, guid, user, challenge, response, method):
     """
     Authenticate using HTTP Digest credentials to Open Directory.
     
     @param obj: C{object} the object obtained from an odInit call.
+    @param guid: C{str} the GUID for the record to check.
 	@param user: C{str} the user identifier/directory record name to check.
     @param challenge: C{str} the HTTP challenge sent to the client.
     @param response: C{str} the HTTP response sent from the client.
@@ -462,11 +465,12 @@
 extern "C" PyObject *authenticateUserDigest(PyObject *self, PyObject *args)
 {
 	PyObject* pyds;
+	const char* guid;
 	const char* user;
 	const char* challenge;
 	const char* response;
 	const char* method;
-    if (!PyArg_ParseTuple(args, "Ossss", &pyds, &user, &challenge, &response, &method) || !PyCObject_Check(pyds))
+    if (!PyArg_ParseTuple(args, "Osssss", &pyds, &guid, &user, &challenge, &response, &method) || !PyCObject_Check(pyds))
     {
 		PyErr_SetObject(ODException_class, Py_BuildValue("((s:i))", "DirectoryServices authenticateUserDigest: could not parse arguments", 0));		
         return NULL;
@@ -476,7 +480,7 @@
 	if (ds != NULL)
 	{
 		bool result = false;
-		if (ds->AuthenticateUserDigest(user, challenge, response, method, result))
+		if (ds->AuthenticateUserDigest(guid, user, challenge, response, method, result))
 		{
 			if (result)
 				Py_RETURN_TRUE;

Deleted: PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1
===================================================================
--- PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1	2007-02-19 16:47:33 UTC (rev 1210)
+++ PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1	2007-02-19 21:37:40 UTC (rev 1211)
@@ -1,1382 +0,0 @@
-<?xml version="1.0" encoding="UTF-8"?>
-<!DOCTYPE plist PUBLIC "-//Apple Computer//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd">
-<plist version="1.0">
-<dict>
-	<key>ActivePerspectiveName</key>
-	<string>Project</string>
-	<key>AllowedModules</key>
-	<array>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>PBXSmartGroupTreeModule</string>
-			<key>Name</key>
-			<string>Groups and Files Outline View</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>PBXNavigatorGroup</string>
-			<key>Name</key>
-			<string>Editor</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>XCTaskListModule</string>
-			<key>Name</key>
-			<string>Task List</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>XCDetailModule</string>
-			<key>Name</key>
-			<string>File and Smart Group Detail Viewer</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>1</string>
-			<key>Module</key>
-			<string>PBXBuildResultsModule</string>
-			<key>Name</key>
-			<string>Detailed Build Results Viewer</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>1</string>
-			<key>Module</key>
-			<string>PBXProjectFindModule</string>
-			<key>Name</key>
-			<string>Project Batch Find Tool</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>PBXRunSessionModule</string>
-			<key>Name</key>
-			<string>Run Log</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>PBXBookmarksModule</string>
-			<key>Name</key>
-			<string>Bookmarks Tool</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>PBXClassBrowserModule</string>
-			<key>Name</key>
-			<string>Class Browser</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>PBXCVSModule</string>
-			<key>Name</key>
-			<string>Source Code Control Tool</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>PBXDebugBreakpointsModule</string>
-			<key>Name</key>
-			<string>Debug Breakpoints Tool</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>XCDockableInspector</string>
-			<key>Name</key>
-			<string>Inspector</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>n</string>
-			<key>Module</key>
-			<string>PBXOpenQuicklyModule</string>
-			<key>Name</key>
-			<string>Open Quickly Tool</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>1</string>
-			<key>Module</key>
-			<string>PBXDebugSessionModule</string>
-			<key>Name</key>
-			<string>Debugger</string>
-		</dict>
-		<dict>
-			<key>BundleLoadPath</key>
-			<string></string>
-			<key>MaxInstances</key>
-			<string>1</string>
-			<key>Module</key>
-			<string>PBXDebugCLIModule</string>
-			<key>Name</key>
-			<string>Debug Console</string>
-		</dict>
-	</array>
-	<key>Description</key>
-	<string>DefaultDescriptionKey</string>
-	<key>DockingSystemVisible</key>
-	<false/>
-	<key>Extension</key>
-	<string>mode1</string>
-	<key>FavBarConfig</key>
-	<dict>
-		<key>PBXProjectModuleGUID</key>
-		<string>AF155A7B0A501FE9007E1E6E</string>
-		<key>XCBarModuleItemNames</key>
-		<dict/>
-		<key>XCBarModuleItems</key>
-		<array/>
-	</dict>
-	<key>FirstTimeWindowDisplayed</key>
-	<false/>
-	<key>Identifier</key>
-	<string>com.apple.perspectives.project.mode1</string>
-	<key>MajorVersion</key>
-	<integer>31</integer>
-	<key>MinorVersion</key>
-	<integer>1</integer>
-	<key>Name</key>
-	<string>Default</string>
-	<key>Notifications</key>
-	<array/>
-	<key>OpenEditors</key>
-	<array>
-		<dict>
-			<key>Content</key>
-			<dict>
-				<key>PBXProjectModuleGUID</key>
-				<string>AF8B08260AA33EF5008DBE58</string>
-				<key>PBXProjectModuleLabel</key>
-				<string>PythonWrapper.cpp</string>
-				<key>PBXSplitModuleInNavigatorKey</key>
-				<dict>
-					<key>Split0</key>
-					<dict>
-						<key>PBXProjectModuleGUID</key>
-						<string>AF8B08270AA33EF5008DBE58</string>
-						<key>PBXProjectModuleLabel</key>
-						<string>PythonWrapper.cpp</string>
-						<key>_historyCapacity</key>
-						<integer>0</integer>
-						<key>bookmark</key>
-						<string>AF5B518E0AA3689500DCCB52</string>
-						<key>history</key>
-						<array>
-							<string>AF8B08280AA33EF5008DBE58</string>
-						</array>
-					</dict>
-					<key>SplitCount</key>
-					<string>1</string>
-				</dict>
-				<key>StatusBarVisibility</key>
-				<true/>
-			</dict>
-			<key>Geometry</key>
-			<dict>
-				<key>Frame</key>
-				<string>{{0, 20}, {811, 731}}</string>
-				<key>PBXModuleWindowStatusBarHidden2</key>
-				<false/>
-				<key>RubberWindowFrame</key>
-				<string>113 60 811 772 0 0 1680 1028 </string>
-			</dict>
-		</dict>
-	</array>
-	<key>PerspectiveWidths</key>
-	<array>
-		<integer>-1</integer>
-		<integer>-1</integer>
-	</array>
-	<key>Perspectives</key>
-	<array>
-		<dict>
-			<key>ChosenToolbarItems</key>
-			<array>
-				<string>active-target-popup</string>
-				<string>action</string>
-				<string>NSToolbarFlexibleSpaceItem</string>
-				<string>buildOrClean</string>
-				<string>build-and-runOrDebug</string>
-				<string>build-and-debug</string>
-				<string>com.apple.ide.PBXToolbarStopButton</string>
-				<string>get-info</string>
-				<string>toggle-editor</string>
-				<string>NSToolbarFlexibleSpaceItem</string>
-				<string>com.apple.pbx.toolbar.searchfield</string>
-			</array>
-			<key>ControllerClassBaseName</key>
-			<string></string>
-			<key>IconName</key>
-			<string>WindowOfProjectWithEditor</string>
-			<key>Identifier</key>
-			<string>perspective.project</string>
-			<key>IsVertical</key>
-			<false/>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>ContentConfiguration</key>
-					<dict>
-						<key>PBXBottomSmartGroupGIDs</key>
-						<array>
-							<string>1C37FBAC04509CD000000102</string>
-							<string>1C37FAAC04509CD000000102</string>
-							<string>1C08E77C0454961000C914BD</string>
-							<string>1C37FABC05509CD000000102</string>
-							<string>1C37FABC05539CD112110102</string>
-							<string>E2644B35053B69B200211256</string>
-							<string>1C37FABC04509CD000100104</string>
-							<string>1CC0EA4004350EF90044410B</string>
-							<string>1CC0EA4004350EF90041110B</string>
-						</array>
-						<key>PBXProjectModuleGUID</key>
-						<string>1CE0B1FE06471DED0097A5F4</string>
-						<key>PBXProjectModuleLabel</key>
-						<string>Files</string>
-						<key>PBXProjectStructureProvided</key>
-						<string>yes</string>
-						<key>PBXSmartGroupTreeModuleColumnData</key>
-						<dict>
-							<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
-							<array>
-								<real>186</real>
-							</array>
-							<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
-							<array>
-								<string>MainColumn</string>
-							</array>
-						</dict>
-						<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
-						<dict>
-							<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
-							<array>
-								<string>08FB7794FE84155DC02AAC07</string>
-								<string>08FB7795FE84155DC02AAC07</string>
-								<string>AF155A3D0A501FA0007E1E6E</string>
-								<string>1C37FABC05509CD000000102</string>
-							</array>
-							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
-							<array>
-								<array>
-									<integer>1</integer>
-									<integer>0</integer>
-								</array>
-							</array>
-							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
-							<string>{{0, 0}, {186, 541}}</string>
-						</dict>
-						<key>PBXTopSmartGroupGIDs</key>
-						<array/>
-						<key>XCIncludePerspectivesSwitch</key>
-						<true/>
-						<key>XCSharingToken</key>
-						<string>com.apple.Xcode.GFSharingToken</string>
-					</dict>
-					<key>GeometryConfiguration</key>
-					<dict>
-						<key>Frame</key>
-						<string>{{0, 0}, {203, 559}}</string>
-						<key>GroupTreeTableConfiguration</key>
-						<array>
-							<string>MainColumn</string>
-							<real>186</real>
-						</array>
-						<key>RubberWindowFrame</key>
-						<string>374 263 1006 600 0 0 1680 1028 </string>
-					</dict>
-					<key>Module</key>
-					<string>PBXSmartGroupTreeModule</string>
-					<key>Proportion</key>
-					<string>203pt</string>
-				</dict>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXProjectModuleGUID</key>
-								<string>1CE0B20306471E060097A5F4</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>MyNewFile14.java</string>
-								<key>PBXSplitModuleInNavigatorKey</key>
-								<dict>
-									<key>Split0</key>
-									<dict>
-										<key>PBXProjectModuleGUID</key>
-										<string>1CE0B20406471E060097A5F4</string>
-										<key>PBXProjectModuleLabel</key>
-										<string>MyNewFile14.java</string>
-									</dict>
-									<key>SplitCount</key>
-									<string>1</string>
-								</dict>
-								<key>StatusBarVisibility</key>
-								<true/>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{0, 0}, {798, 0}}</string>
-								<key>RubberWindowFrame</key>
-								<string>374 263 1006 600 0 0 1680 1028 </string>
-							</dict>
-							<key>Module</key>
-							<string>PBXNavigatorGroup</string>
-							<key>Proportion</key>
-							<string>0pt</string>
-						</dict>
-						<dict>
-							<key>BecomeActive</key>
-							<true/>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXProjectModuleGUID</key>
-								<string>1CE0B20506471E060097A5F4</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>Detail</string>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{0, 5}, {798, 554}}</string>
-								<key>RubberWindowFrame</key>
-								<string>374 263 1006 600 0 0 1680 1028 </string>
-							</dict>
-							<key>Module</key>
-							<string>XCDetailModule</string>
-							<key>Proportion</key>
-							<string>554pt</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>798pt</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>Project</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>XCModuleDock</string>
-				<string>PBXSmartGroupTreeModule</string>
-				<string>XCModuleDock</string>
-				<string>PBXNavigatorGroup</string>
-				<string>XCDetailModule</string>
-			</array>
-			<key>TableOfContents</key>
-			<array>
-				<string>AF5B51850AA343BE00DCCB52</string>
-				<string>1CE0B1FE06471DED0097A5F4</string>
-				<string>AF5B51860AA343BE00DCCB52</string>
-				<string>1CE0B20306471E060097A5F4</string>
-				<string>1CE0B20506471E060097A5F4</string>
-			</array>
-			<key>ToolbarConfiguration</key>
-			<string>xcode.toolbar.config.default</string>
-		</dict>
-		<dict>
-			<key>ControllerClassBaseName</key>
-			<string></string>
-			<key>IconName</key>
-			<string>WindowOfProject</string>
-			<key>Identifier</key>
-			<string>perspective.morph</string>
-			<key>IsVertical</key>
-			<integer>0</integer>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>BecomeActive</key>
-					<integer>1</integer>
-					<key>ContentConfiguration</key>
-					<dict>
-						<key>PBXBottomSmartGroupGIDs</key>
-						<array>
-							<string>1C37FBAC04509CD000000102</string>
-							<string>1C37FAAC04509CD000000102</string>
-							<string>1C08E77C0454961000C914BD</string>
-							<string>1C37FABC05509CD000000102</string>
-							<string>1C37FABC05539CD112110102</string>
-							<string>E2644B35053B69B200211256</string>
-							<string>1C37FABC04509CD000100104</string>
-							<string>1CC0EA4004350EF90044410B</string>
-							<string>1CC0EA4004350EF90041110B</string>
-						</array>
-						<key>PBXProjectModuleGUID</key>
-						<string>11E0B1FE06471DED0097A5F4</string>
-						<key>PBXProjectModuleLabel</key>
-						<string>Files</string>
-						<key>PBXProjectStructureProvided</key>
-						<string>yes</string>
-						<key>PBXSmartGroupTreeModuleColumnData</key>
-						<dict>
-							<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
-							<array>
-								<real>186</real>
-							</array>
-							<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
-							<array>
-								<string>MainColumn</string>
-							</array>
-						</dict>
-						<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
-						<dict>
-							<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
-							<array>
-								<string>29B97314FDCFA39411CA2CEA</string>
-								<string>1C37FABC05509CD000000102</string>
-							</array>
-							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
-							<array>
-								<array>
-									<integer>0</integer>
-								</array>
-							</array>
-							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
-							<string>{{0, 0}, {186, 337}}</string>
-						</dict>
-						<key>PBXTopSmartGroupGIDs</key>
-						<array/>
-						<key>XCIncludePerspectivesSwitch</key>
-						<integer>1</integer>
-						<key>XCSharingToken</key>
-						<string>com.apple.Xcode.GFSharingToken</string>
-					</dict>
-					<key>GeometryConfiguration</key>
-					<dict>
-						<key>Frame</key>
-						<string>{{0, 0}, {203, 355}}</string>
-						<key>GroupTreeTableConfiguration</key>
-						<array>
-							<string>MainColumn</string>
-							<real>186</real>
-						</array>
-						<key>RubberWindowFrame</key>
-						<string>373 269 690 397 0 0 1440 878 </string>
-					</dict>
-					<key>Module</key>
-					<string>PBXSmartGroupTreeModule</string>
-					<key>Proportion</key>
-					<string>100%</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>Morph</string>
-			<key>PreferredWidth</key>
-			<integer>300</integer>
-			<key>ServiceClasses</key>
-			<array>
-				<string>XCModuleDock</string>
-				<string>PBXSmartGroupTreeModule</string>
-			</array>
-			<key>TableOfContents</key>
-			<array>
-				<string>11E0B1FE06471DED0097A5F4</string>
-			</array>
-			<key>ToolbarConfiguration</key>
-			<string>xcode.toolbar.config.default.short</string>
-		</dict>
-	</array>
-	<key>PerspectivesBarVisible</key>
-	<false/>
-	<key>ShelfIsVisible</key>
-	<false/>
-	<key>SourceDescription</key>
-	<string>file at '/System/Library/PrivateFrameworks/DevToolsInterface.framework/Versions/A/Resources/XCPerspectivesSpecificationMode1.xcperspec'</string>
-	<key>StatusbarIsVisible</key>
-	<true/>
-	<key>TimeStamp</key>
-	<real>0.0</real>
-	<key>ToolbarDisplayMode</key>
-	<integer>1</integer>
-	<key>ToolbarIsVisible</key>
-	<true/>
-	<key>ToolbarSizeMode</key>
-	<integer>1</integer>
-	<key>Type</key>
-	<string>Perspectives</string>
-	<key>UpdateMessage</key>
-	<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>
-	<key>WindowJustification</key>
-	<integer>5</integer>
-	<key>WindowOrderList</key>
-	<array>
-		<string>AF8B08260AA33EF5008DBE58</string>
-		<string>/Users/cyrusdaboo/Documents/Development/Apple/eclipse/PyOpenDirectory/support/PyOpenDirectory.xcodeproj</string>
-	</array>
-	<key>WindowString</key>
-	<string>374 263 1006 600 0 0 1680 1028 </string>
-	<key>WindowTools</key>
-	<array>
-		<dict>
-			<key>FirstTimeWindowDisplayed</key>
-			<false/>
-			<key>Identifier</key>
-			<string>windowTool.build</string>
-			<key>IsVertical</key>
-			<true/>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>BecomeActive</key>
-							<true/>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXProjectModuleGUID</key>
-								<string>1CD0528F0623707200166675</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>test.cpp</string>
-								<key>StatusBarVisibility</key>
-								<true/>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{0, 0}, {1075, 361}}</string>
-								<key>RubberWindowFrame</key>
-								<string>511 368 1075 643 0 0 1680 1028 </string>
-							</dict>
-							<key>Module</key>
-							<string>PBXNavigatorGroup</string>
-							<key>Proportion</key>
-							<string>361pt</string>
-						</dict>
-						<dict>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXProjectModuleGUID</key>
-								<string>XCMainBuildResultsModuleGUID</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>Build</string>
-								<key>XCBuildResultsTrigger_Collapse</key>
-								<integer>1021</integer>
-								<key>XCBuildResultsTrigger_Open</key>
-								<integer>1011</integer>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{0, 366}, {1075, 236}}</string>
-								<key>RubberWindowFrame</key>
-								<string>511 368 1075 643 0 0 1680 1028 </string>
-							</dict>
-							<key>Module</key>
-							<string>PBXBuildResultsModule</string>
-							<key>Proportion</key>
-							<string>236pt</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>602pt</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>Build Results</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>PBXBuildResultsModule</string>
-			</array>
-			<key>StatusbarIsVisible</key>
-			<true/>
-			<key>TableOfContents</key>
-			<array>
-				<string>AF155A7F0A501FE9007E1E6E</string>
-				<string>AF8B08020AA33E0B008DBE58</string>
-				<string>1CD0528F0623707200166675</string>
-				<string>XCMainBuildResultsModuleGUID</string>
-			</array>
-			<key>ToolbarConfiguration</key>
-			<string>xcode.toolbar.config.build</string>
-			<key>WindowString</key>
-			<string>511 368 1075 643 0 0 1680 1028 </string>
-			<key>WindowToolGUID</key>
-			<string>AF155A7F0A501FE9007E1E6E</string>
-			<key>WindowToolIsVisible</key>
-			<false/>
-		</dict>
-		<dict>
-			<key>FirstTimeWindowDisplayed</key>
-			<false/>
-			<key>Identifier</key>
-			<string>windowTool.debugger</string>
-			<key>IsVertical</key>
-			<true/>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>Debugger</key>
-								<dict>
-									<key>HorizontalSplitView</key>
-									<dict>
-										<key>_collapsingFrameDimension</key>
-										<real>0.0</real>
-										<key>_indexOfCollapsedView</key>
-										<integer>0</integer>
-										<key>_percentageOfCollapsedView</key>
-										<real>0.0</real>
-										<key>isCollapsed</key>
-										<string>yes</string>
-										<key>sizes</key>
-										<array>
-											<string>{{0, 0}, {457, 329}}</string>
-											<string>{{457, 0}, {561, 329}}</string>
-										</array>
-									</dict>
-									<key>VerticalSplitView</key>
-									<dict>
-										<key>_collapsingFrameDimension</key>
-										<real>0.0</real>
-										<key>_indexOfCollapsedView</key>
-										<integer>0</integer>
-										<key>_percentageOfCollapsedView</key>
-										<real>0.0</real>
-										<key>isCollapsed</key>
-										<string>yes</string>
-										<key>sizes</key>
-										<array>
-											<string>{{0, 0}, {1018, 329}}</string>
-											<string>{{0, 329}, {1018, 374}}</string>
-										</array>
-									</dict>
-								</dict>
-								<key>LauncherConfigVersion</key>
-								<string>8</string>
-								<key>PBXProjectModuleGUID</key>
-								<string>1C162984064C10D400B95A72</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>Debug - GLUTExamples (Underwater)</string>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>DebugConsoleDrawerSize</key>
-								<string>{100, 120}</string>
-								<key>DebugConsoleVisible</key>
-								<string>None</string>
-								<key>DebugConsoleWindowFrame</key>
-								<string>{{200, 200}, {500, 300}}</string>
-								<key>DebugSTDIOWindowFrame</key>
-								<string>{{200, 200}, {500, 300}}</string>
-								<key>Frame</key>
-								<string>{{0, 0}, {1018, 703}}</string>
-								<key>RubberWindowFrame</key>
-								<string>36 261 1018 744 0 0 1680 1028 </string>
-							</dict>
-							<key>Module</key>
-							<string>PBXDebugSessionModule</string>
-							<key>Proportion</key>
-							<string>703pt</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>703pt</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>Debugger</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>PBXDebugSessionModule</string>
-			</array>
-			<key>StatusbarIsVisible</key>
-			<true/>
-			<key>TableOfContents</key>
-			<array>
-				<string>1CD10A99069EF8BA00B06720</string>
-				<string>AF155B9E0A503D93007E1E6E</string>
-				<string>1C162984064C10D400B95A72</string>
-				<string>AF155B9F0A503D93007E1E6E</string>
-				<string>AF155BA00A503D93007E1E6E</string>
-				<string>AF155BA10A503D93007E1E6E</string>
-				<string>AF155BA20A503D93007E1E6E</string>
-				<string>AF155BA30A503D93007E1E6E</string>
-				<string>AF155BA40A503D93007E1E6E</string>
-			</array>
-			<key>ToolbarConfiguration</key>
-			<string>xcode.toolbar.config.debug</string>
-			<key>WindowString</key>
-			<string>36 261 1018 744 0 0 1680 1028 </string>
-			<key>WindowToolGUID</key>
-			<string>1CD10A99069EF8BA00B06720</string>
-			<key>WindowToolIsVisible</key>
-			<false/>
-		</dict>
-		<dict>
-			<key>FirstTimeWindowDisplayed</key>
-			<false/>
-			<key>Identifier</key>
-			<string>windowTool.find</string>
-			<key>IsVertical</key>
-			<true/>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>Dock</key>
-							<array>
-								<dict>
-									<key>ContentConfiguration</key>
-									<dict>
-										<key>PBXProjectModuleGUID</key>
-										<string>1CDD528C0622207200134675</string>
-										<key>PBXProjectModuleLabel</key>
-										<string></string>
-										<key>StatusBarVisibility</key>
-										<true/>
-									</dict>
-									<key>GeometryConfiguration</key>
-									<dict>
-										<key>Frame</key>
-										<string>{{0, 0}, {1008, 542}}</string>
-										<key>RubberWindowFrame</key>
-										<string>15 28 1008 800 0 0 1280 832 </string>
-									</dict>
-									<key>Module</key>
-									<string>PBXNavigatorGroup</string>
-									<key>Proportion</key>
-									<string>1008pt</string>
-								</dict>
-							</array>
-							<key>Proportion</key>
-							<string>542pt</string>
-						</dict>
-						<dict>
-							<key>BecomeActive</key>
-							<true/>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXProjectModuleGUID</key>
-								<string>1CD0528E0623707200166675</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>Project Find</string>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{0, 547}, {1008, 212}}</string>
-								<key>RubberWindowFrame</key>
-								<string>15 28 1008 800 0 0 1280 832 </string>
-							</dict>
-							<key>Module</key>
-							<string>PBXProjectFindModule</string>
-							<key>Proportion</key>
-							<string>212pt</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>759pt</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>Project Find</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>PBXProjectFindModule</string>
-			</array>
-			<key>StatusbarIsVisible</key>
-			<true/>
-			<key>TableOfContents</key>
-			<array>
-				<string>1C530D57069F1CE1000CFCEE</string>
-				<string>AF2939EF0A82D1E200D4E295</string>
-				<string>AF2939F00A82D1E200D4E295</string>
-				<string>1CDD528C0622207200134675</string>
-				<string>1CD0528E0623707200166675</string>
-			</array>
-			<key>WindowString</key>
-			<string>15 28 1008 800 0 0 1280 832 </string>
-			<key>WindowToolGUID</key>
-			<string>1C530D57069F1CE1000CFCEE</string>
-			<key>WindowToolIsVisible</key>
-			<false/>
-		</dict>
-		<dict>
-			<key>Identifier</key>
-			<string>MENUSEPARATOR</string>
-		</dict>
-		<dict>
-			<key>FirstTimeWindowDisplayed</key>
-			<false/>
-			<key>Identifier</key>
-			<string>windowTool.debuggerConsole</string>
-			<key>IsVertical</key>
-			<true/>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXProjectModuleGUID</key>
-								<string>1C78EAAC065D492600B07095</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>Debugger Console</string>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{0, 0}, {440, 358}}</string>
-								<key>RubberWindowFrame</key>
-								<string>523 605 440 400 0 0 1680 1028 </string>
-							</dict>
-							<key>Module</key>
-							<string>PBXDebugCLIModule</string>
-							<key>Proportion</key>
-							<string>358pt</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>359pt</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>Debugger Console</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>PBXDebugCLIModule</string>
-			</array>
-			<key>StatusbarIsVisible</key>
-			<true/>
-			<key>TableOfContents</key>
-			<array>
-				<string>AF155AB60A502582007E1E6E</string>
-				<string>AF155C1A0A50583F007E1E6E</string>
-				<string>1C78EAAC065D492600B07095</string>
-			</array>
-			<key>WindowString</key>
-			<string>523 605 440 400 0 0 1680 1028 </string>
-			<key>WindowToolGUID</key>
-			<string>AF155AB60A502582007E1E6E</string>
-			<key>WindowToolIsVisible</key>
-			<false/>
-		</dict>
-		<dict>
-			<key>FirstTimeWindowDisplayed</key>
-			<false/>
-			<key>Identifier</key>
-			<string>windowTool.run</string>
-			<key>IsVertical</key>
-			<true/>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>LauncherConfigVersion</key>
-								<string>3</string>
-								<key>PBXProjectModuleGUID</key>
-								<string>1CD0528B0623707200166675</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>Run</string>
-								<key>Runner</key>
-								<dict>
-									<key>HorizontalSplitView</key>
-									<dict>
-										<key>_collapsingFrameDimension</key>
-										<real>0.0</real>
-										<key>_indexOfCollapsedView</key>
-										<integer>0</integer>
-										<key>_percentageOfCollapsedView</key>
-										<real>0.0</real>
-										<key>isCollapsed</key>
-										<string>yes</string>
-										<key>sizes</key>
-										<array>
-											<string>{{0, 0}, {493, 167}}</string>
-											<string>{{0, 176}, {493, 267}}</string>
-										</array>
-									</dict>
-									<key>VerticalSplitView</key>
-									<dict>
-										<key>_collapsingFrameDimension</key>
-										<real>0.0</real>
-										<key>_indexOfCollapsedView</key>
-										<integer>0</integer>
-										<key>_percentageOfCollapsedView</key>
-										<real>0.0</real>
-										<key>isCollapsed</key>
-										<string>yes</string>
-										<key>sizes</key>
-										<array>
-											<string>{{0, 0}, {405, 443}}</string>
-											<string>{{414, 0}, {514, 443}}</string>
-										</array>
-									</dict>
-								</dict>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{0, 0}, {1086, 746}}</string>
-								<key>RubberWindowFrame</key>
-								<string>523 218 1086 787 0 0 1680 1028 </string>
-							</dict>
-							<key>Module</key>
-							<string>PBXRunSessionModule</string>
-							<key>Proportion</key>
-							<string>746pt</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>746pt</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>Run Log</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>PBXRunSessionModule</string>
-			</array>
-			<key>StatusbarIsVisible</key>
-			<true/>
-			<key>TableOfContents</key>
-			<array>
-				<string>1C0AD2B3069F1EA900FABCE6</string>
-				<string>AF155AE60A5028AA007E1E6E</string>
-				<string>1CD0528B0623707200166675</string>
-				<string>AF155AE70A5028AA007E1E6E</string>
-			</array>
-			<key>ToolbarConfiguration</key>
-			<string>xcode.toolbar.config.run</string>
-			<key>WindowString</key>
-			<string>523 218 1086 787 0 0 1680 1028 </string>
-			<key>WindowToolGUID</key>
-			<string>1C0AD2B3069F1EA900FABCE6</string>
-			<key>WindowToolIsVisible</key>
-			<false/>
-		</dict>
-		<dict>
-			<key>Identifier</key>
-			<string>windowTool.scm</string>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXProjectModuleGUID</key>
-								<string>1C78EAB2065D492600B07095</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>&lt;No Editor&gt;</string>
-								<key>PBXSplitModuleInNavigatorKey</key>
-								<dict>
-									<key>Split0</key>
-									<dict>
-										<key>PBXProjectModuleGUID</key>
-										<string>1C78EAB3065D492600B07095</string>
-									</dict>
-									<key>SplitCount</key>
-									<string>1</string>
-								</dict>
-								<key>StatusBarVisibility</key>
-								<integer>1</integer>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{0, 0}, {452, 0}}</string>
-								<key>RubberWindowFrame</key>
-								<string>743 379 452 308 0 0 1280 1002 </string>
-							</dict>
-							<key>Module</key>
-							<string>PBXNavigatorGroup</string>
-							<key>Proportion</key>
-							<string>0pt</string>
-						</dict>
-						<dict>
-							<key>BecomeActive</key>
-							<integer>1</integer>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXProjectModuleGUID</key>
-								<string>1CD052920623707200166675</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>SCM</string>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>ConsoleFrame</key>
-								<string>{{0, 259}, {452, 0}}</string>
-								<key>Frame</key>
-								<string>{{0, 7}, {452, 259}}</string>
-								<key>RubberWindowFrame</key>
-								<string>743 379 452 308 0 0 1280 1002 </string>
-								<key>TableConfiguration</key>
-								<array>
-									<string>Status</string>
-									<real>30</real>
-									<string>FileName</string>
-									<real>199</real>
-									<string>Path</string>
-									<real>197.09500122070312</real>
-								</array>
-								<key>TableFrame</key>
-								<string>{{0, 0}, {452, 250}}</string>
-							</dict>
-							<key>Module</key>
-							<string>PBXCVSModule</string>
-							<key>Proportion</key>
-							<string>262pt</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>266pt</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>SCM</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>PBXCVSModule</string>
-			</array>
-			<key>StatusbarIsVisible</key>
-			<integer>1</integer>
-			<key>TableOfContents</key>
-			<array>
-				<string>1C78EAB4065D492600B07095</string>
-				<string>1C78EAB5065D492600B07095</string>
-				<string>1C78EAB2065D492600B07095</string>
-				<string>1CD052920623707200166675</string>
-			</array>
-			<key>ToolbarConfiguration</key>
-			<string>xcode.toolbar.config.scm</string>
-			<key>WindowString</key>
-			<string>743 379 452 308 0 0 1280 1002 </string>
-		</dict>
-		<dict>
-			<key>Identifier</key>
-			<string>windowTool.breakpoints</string>
-			<key>IsVertical</key>
-			<integer>0</integer>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>BecomeActive</key>
-							<integer>1</integer>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXBottomSmartGroupGIDs</key>
-								<array>
-									<string>1C77FABC04509CD000000102</string>
-								</array>
-								<key>PBXProjectModuleGUID</key>
-								<string>1CE0B1FE06471DED0097A5F4</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>Files</string>
-								<key>PBXProjectStructureProvided</key>
-								<string>no</string>
-								<key>PBXSmartGroupTreeModuleColumnData</key>
-								<dict>
-									<key>PBXSmartGroupTreeModuleColumnWidthsKey</key>
-									<array>
-										<real>168</real>
-									</array>
-									<key>PBXSmartGroupTreeModuleColumnsKey_v4</key>
-									<array>
-										<string>MainColumn</string>
-									</array>
-								</dict>
-								<key>PBXSmartGroupTreeModuleOutlineStateKey_v7</key>
-								<dict>
-									<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
-									<array>
-										<string>1C77FABC04509CD000000102</string>
-									</array>
-									<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
-									<array>
-										<array>
-											<integer>0</integer>
-										</array>
-									</array>
-									<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
-									<string>{{0, 0}, {168, 350}}</string>
-								</dict>
-								<key>PBXTopSmartGroupGIDs</key>
-								<array/>
-								<key>XCIncludePerspectivesSwitch</key>
-								<integer>0</integer>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{0, 0}, {185, 368}}</string>
-								<key>GroupTreeTableConfiguration</key>
-								<array>
-									<string>MainColumn</string>
-									<real>168</real>
-								</array>
-								<key>RubberWindowFrame</key>
-								<string>315 424 744 409 0 0 1440 878 </string>
-							</dict>
-							<key>Module</key>
-							<string>PBXSmartGroupTreeModule</string>
-							<key>Proportion</key>
-							<string>185pt</string>
-						</dict>
-						<dict>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXProjectModuleGUID</key>
-								<string>1CA1AED706398EBD00589147</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>Detail</string>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{190, 0}, {554, 368}}</string>
-								<key>RubberWindowFrame</key>
-								<string>315 424 744 409 0 0 1440 878 </string>
-							</dict>
-							<key>Module</key>
-							<string>XCDetailModule</string>
-							<key>Proportion</key>
-							<string>554pt</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>368pt</string>
-				</dict>
-			</array>
-			<key>MajorVersion</key>
-			<integer>2</integer>
-			<key>MinorVersion</key>
-			<integer>0</integer>
-			<key>Name</key>
-			<string>Breakpoints</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>PBXSmartGroupTreeModule</string>
-				<string>XCDetailModule</string>
-			</array>
-			<key>StatusbarIsVisible</key>
-			<integer>1</integer>
-			<key>TableOfContents</key>
-			<array>
-				<string>1CDDB66807F98D9800BB5817</string>
-				<string>1CDDB66907F98D9800BB5817</string>
-				<string>1CE0B1FE06471DED0097A5F4</string>
-				<string>1CA1AED706398EBD00589147</string>
-			</array>
-			<key>ToolbarConfiguration</key>
-			<string>xcode.toolbar.config.breakpoints</string>
-			<key>WindowString</key>
-			<string>315 424 744 409 0 0 1440 878 </string>
-			<key>WindowToolGUID</key>
-			<string>1CDDB66807F98D9800BB5817</string>
-			<key>WindowToolIsVisible</key>
-			<integer>1</integer>
-		</dict>
-		<dict>
-			<key>Identifier</key>
-			<string>windowTool.debugAnimator</string>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>Module</key>
-							<string>PBXNavigatorGroup</string>
-							<key>Proportion</key>
-							<string>100%</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>100%</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>Debug Visualizer</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>PBXNavigatorGroup</string>
-			</array>
-			<key>StatusbarIsVisible</key>
-			<integer>1</integer>
-			<key>ToolbarConfiguration</key>
-			<string>xcode.toolbar.config.debugAnimator</string>
-			<key>WindowString</key>
-			<string>100 100 700 500 0 0 1280 1002 </string>
-		</dict>
-		<dict>
-			<key>Identifier</key>
-			<string>windowTool.bookmarks</string>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>Module</key>
-							<string>PBXBookmarksModule</string>
-							<key>Proportion</key>
-							<string>100%</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>100%</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>Bookmarks</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>PBXBookmarksModule</string>
-			</array>
-			<key>StatusbarIsVisible</key>
-			<integer>0</integer>
-			<key>WindowString</key>
-			<string>538 42 401 187 0 0 1280 1002 </string>
-		</dict>
-		<dict>
-			<key>Identifier</key>
-			<string>windowTool.classBrowser</string>
-			<key>Layout</key>
-			<array>
-				<dict>
-					<key>Dock</key>
-					<array>
-						<dict>
-							<key>BecomeActive</key>
-							<integer>1</integer>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>OptionsSetName</key>
-								<string>Hierarchy, all classes</string>
-								<key>PBXProjectModuleGUID</key>
-								<string>1CA6456E063B45B4001379D8</string>
-								<key>PBXProjectModuleLabel</key>
-								<string>Class Browser - NSObject</string>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>ClassesFrame</key>
-								<string>{{0, 0}, {374, 96}}</string>
-								<key>ClassesTreeTableConfiguration</key>
-								<array>
-									<string>PBXClassNameColumnIdentifier</string>
-									<real>208</real>
-									<string>PBXClassBookColumnIdentifier</string>
-									<real>22</real>
-								</array>
-								<key>Frame</key>
-								<string>{{0, 0}, {630, 331}}</string>
-								<key>MembersFrame</key>
-								<string>{{0, 105}, {374, 395}}</string>
-								<key>MembersTreeTableConfiguration</key>
-								<array>
-									<string>PBXMemberTypeIconColumnIdentifier</string>
-									<real>22</real>
-									<string>PBXMemberNameColumnIdentifier</string>
-									<real>216</real>
-									<string>PBXMemberTypeColumnIdentifier</string>
-									<real>97</real>
-									<string>PBXMemberBookColumnIdentifier</string>
-									<real>22</real>
-								</array>
-								<key>PBXModuleWindowStatusBarHidden2</key>
-								<integer>1</integer>
-								<key>RubberWindowFrame</key>
-								<string>385 179 630 352 0 0 1440 878 </string>
-							</dict>
-							<key>Module</key>
-							<string>PBXClassBrowserModule</string>
-							<key>Proportion</key>
-							<string>332pt</string>
-						</dict>
-					</array>
-					<key>Proportion</key>
-					<string>332pt</string>
-				</dict>
-			</array>
-			<key>Name</key>
-			<string>Class Browser</string>
-			<key>ServiceClasses</key>
-			<array>
-				<string>PBXClassBrowserModule</string>
-			</array>
-			<key>StatusbarIsVisible</key>
-			<integer>0</integer>
-			<key>TableOfContents</key>
-			<array>
-				<string>1C0AD2AF069F1E9B00FABCE6</string>
-				<string>1C0AD2B0069F1E9B00FABCE6</string>
-				<string>1CA6456E063B45B4001379D8</string>
-			</array>
-			<key>ToolbarConfiguration</key>
-			<string>xcode.toolbar.config.classbrowser</string>
-			<key>WindowString</key>
-			<string>385 179 630 352 0 0 1440 878 </string>
-			<key>WindowToolGUID</key>
-			<string>1C0AD2AF069F1E9B00FABCE6</string>
-			<key>WindowToolIsVisible</key>
-			<integer>0</integer>
-		</dict>
-	</array>
-</dict>
-</plist>

Modified: PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1v3
===================================================================
--- PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1v3	2007-02-19 16:47:33 UTC (rev 1210)
+++ PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.mode1v3	2007-02-19 21:37:40 UTC (rev 1211)
@@ -176,7 +176,7 @@
 	<key>FavBarConfig</key>
 	<dict>
 		<key>PBXProjectModuleGUID</key>
-		<string>AFBD6A470B4AB8D400A565AE</string>
+		<string>AF0015450B8A1E530045DAEE</string>
 		<key>XCBarModuleItemNames</key>
 		<dict/>
 		<key>XCBarModuleItems</key>
@@ -195,7 +195,48 @@
 	<key>Notifications</key>
 	<array/>
 	<key>OpenEditors</key>
-	<array/>
+	<array>
+		<dict>
+			<key>Content</key>
+			<dict>
+				<key>PBXProjectModuleGUID</key>
+				<string>AF0015D10B8A2F490045DAEE</string>
+				<key>PBXProjectModuleLabel</key>
+				<string>test.cpp</string>
+				<key>PBXSplitModuleInNavigatorKey</key>
+				<dict>
+					<key>Split0</key>
+					<dict>
+						<key>PBXProjectModuleGUID</key>
+						<string>AF0015D20B8A2F490045DAEE</string>
+						<key>PBXProjectModuleLabel</key>
+						<string>test.cpp</string>
+						<key>_historyCapacity</key>
+						<integer>0</integer>
+						<key>bookmark</key>
+						<string>AF0015DC0B8A2F9B0045DAEE</string>
+						<key>history</key>
+						<array>
+							<string>AF0015CF0B8A2ED80045DAEE</string>
+						</array>
+					</dict>
+					<key>SplitCount</key>
+					<string>1</string>
+				</dict>
+				<key>StatusBarVisibility</key>
+				<true/>
+			</dict>
+			<key>Geometry</key>
+			<dict>
+				<key>Frame</key>
+				<string>{{0, 20}, {811, 731}}</string>
+				<key>PBXModuleWindowStatusBarHidden2</key>
+				<false/>
+				<key>RubberWindowFrame</key>
+				<string>436 60 811 772 0 0 1920 1178 </string>
+			</dict>
+		</dict>
+	</array>
 	<key>PerspectiveWidths</key>
 	<array>
 		<integer>-1</integer>
@@ -229,6 +270,8 @@
 			<key>Layout</key>
 			<array>
 				<dict>
+					<key>BecomeActive</key>
+					<true/>
 					<key>ContentConfiguration</key>
 					<dict>
 						<key>PBXBottomSmartGroupGIDs</key>
@@ -265,6 +308,7 @@
 							<key>PBXSmartGroupTreeModuleOutlineStateExpansionKey</key>
 							<array>
 								<string>08FB7794FE84155DC02AAC07</string>
+								<string>08FB7795FE84155DC02AAC07</string>
 								<string>1C37FABC05509CD000000102</string>
 							</array>
 							<key>PBXSmartGroupTreeModuleOutlineStateSelectionKey</key>
@@ -274,7 +318,7 @@
 								</array>
 							</array>
 							<key>PBXSmartGroupTreeModuleOutlineStateVisibleRectKey</key>
-							<string>{{0, 0}, {186, 887}}</string>
+							<string>{{0, 0}, {186, 741}}</string>
 						</dict>
 						<key>PBXTopSmartGroupGIDs</key>
 						<array/>
@@ -286,14 +330,14 @@
 					<key>GeometryConfiguration</key>
 					<dict>
 						<key>Frame</key>
-						<string>{{0, 0}, {203, 905}}</string>
+						<string>{{0, 0}, {203, 759}}</string>
 						<key>GroupTreeTableConfiguration</key>
 						<array>
 							<string>MainColumn</string>
 							<real>186</real>
 						</array>
 						<key>RubberWindowFrame</key>
-						<string>3 232 1359 946 0 0 1920 1178 </string>
+						<string>13 374 1064 800 0 0 1920 1178 </string>
 					</dict>
 					<key>Module</key>
 					<string>PBXSmartGroupTreeModule</string>
@@ -304,14 +348,12 @@
 					<key>Dock</key>
 					<array>
 						<dict>
-							<key>BecomeActive</key>
-							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
 								<key>PBXProjectModuleGUID</key>
 								<string>1CE0B20306471E060097A5F4</string>
 								<key>PBXProjectModuleLabel</key>
-								<string>CDirectoryService.cpp</string>
+								<string>test.cpp</string>
 								<key>PBXSplitModuleInNavigatorKey</key>
 								<dict>
 									<key>Split0</key>
@@ -319,27 +361,33 @@
 										<key>PBXProjectModuleGUID</key>
 										<string>1CE0B20406471E060097A5F4</string>
 										<key>PBXProjectModuleLabel</key>
-										<string>CDirectoryService.cpp</string>
+										<string>test.cpp</string>
 										<key>_historyCapacity</key>
 										<integer>0</integer>
 										<key>bookmark</key>
-										<string>AFAC4ECD0B4C437900D59661</string>
+										<string>AF0015DB0B8A2F9B0045DAEE</string>
 										<key>history</key>
 										<array>
-											<string>AF8974920B4AFA6600965268</string>
-											<string>AFAC4E900B4C267800D59661</string>
-											<string>AFAC4ECB0B4C437900D59661</string>
-											<string>AFAC4EBA0B4C41FE00D59661</string>
+											<string>AF00156C0B8A25E20045DAEE</string>
+											<string>AF0015810B8A27C70045DAEE</string>
+											<string>AF00159A0B8A290F0045DAEE</string>
+											<string>AF0015BE0B8A2C7F0045DAEE</string>
+											<string>AF0015D70B8A2F9B0045DAEE</string>
+											<string>AF0015D80B8A2F9B0045DAEE</string>
 										</array>
 										<key>prevStack</key>
 										<array>
-											<string>AF8974940B4AFA6600965268</string>
-											<string>AFAC4E700B4C18D400D59661</string>
-											<string>AFAC4E790B4C23EC00D59661</string>
-											<string>AFAC4E890B4C25AD00D59661</string>
-											<string>AFAC4E920B4C267800D59661</string>
-											<string>AFAC4EC00B4C431100D59661</string>
-											<string>AFAC4ECC0B4C437900D59661</string>
+											<string>AF0015700B8A25E20045DAEE</string>
+											<string>AF0015710B8A25E20045DAEE</string>
+											<string>AF0015720B8A25E20045DAEE</string>
+											<string>AF0015730B8A25E20045DAEE</string>
+											<string>AF0015820B8A27C70045DAEE</string>
+											<string>AF00159C0B8A290F0045DAEE</string>
+											<string>AF00159D0B8A290F0045DAEE</string>
+											<string>AF0015C00B8A2C7F0045DAEE</string>
+											<string>AF0015C10B8A2C7F0045DAEE</string>
+											<string>AF0015D90B8A2F9B0045DAEE</string>
+											<string>AF0015DA0B8A2F9B0045DAEE</string>
 										</array>
 									</dict>
 									<key>SplitCount</key>
@@ -351,14 +399,14 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {1151, 503}}</string>
+								<string>{{0, 0}, {856, 383}}</string>
 								<key>RubberWindowFrame</key>
-								<string>3 232 1359 946 0 0 1920 1178 </string>
+								<string>13 374 1064 800 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>503pt</string>
+							<string>383pt</string>
 						</dict>
 						<dict>
 							<key>ContentConfiguration</key>
@@ -371,18 +419,18 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 508}, {1151, 397}}</string>
+								<string>{{0, 388}, {856, 371}}</string>
 								<key>RubberWindowFrame</key>
-								<string>3 232 1359 946 0 0 1920 1178 </string>
+								<string>13 374 1064 800 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>XCDetailModule</string>
 							<key>Proportion</key>
-							<string>397pt</string>
+							<string>371pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>1151pt</string>
+					<string>856pt</string>
 				</dict>
 			</array>
 			<key>Name</key>
@@ -397,9 +445,9 @@
 			</array>
 			<key>TableOfContents</key>
 			<array>
-				<string>AFAC4E720B4C18D400D59661</string>
+				<string>AF0015430B8A1E530045DAEE</string>
 				<string>1CE0B1FE06471DED0097A5F4</string>
-				<string>AFAC4E730B4C18D400D59661</string>
+				<string>AF0015440B8A1E530045DAEE</string>
 				<string>1CE0B20306471E060097A5F4</string>
 				<string>1CE0B20506471E060097A5F4</string>
 			</array>
@@ -533,17 +581,29 @@
 	<integer>5</integer>
 	<key>WindowOrderList</key>
 	<array>
-		<string>AFAC4EC90B4C436E00D59661</string>
-		<string>AFBD6A500B4AC44700A565AE</string>
-		<string>AFAC4E740B4C18D400D59661</string>
-		<string>AFAC4E750B4C18D400D59661</string>
-		<string>AFAC4E760B4C18D400D59661</string>
+		<string>AF0015DD0B8A2F9B0045DAEE</string>
+		<string>AF0015C40B8A2C7F0045DAEE</string>
+		<string>AF0015870B8A27C70045DAEE</string>
+		<string>AF00158A0B8A27C70045DAEE</string>
+		<string>AF0015840B8A27C70045DAEE</string>
+		<string>AF00158E0B8A27C70045DAEE</string>
+		<string>AF0015780B8A25E20045DAEE</string>
+		<string>AF0015790B8A25E20045DAEE</string>
+		<string>AF0015750B8A25E20045DAEE</string>
+		<string>AF00157A0B8A25E20045DAEE</string>
+		<string>AF00157B0B8A25E20045DAEE</string>
+		<string>AF00157C0B8A25E20045DAEE</string>
+		<string>AF0015540B8A1E9D0045DAEE</string>
+		<string>AF0015550B8A1E9D0045DAEE</string>
+		<string>AF0015560B8A1E9D0045DAEE</string>
+		<string>1CD10A99069EF8BA00B06720</string>
+		<string>AF0015490B8A1E6C0045DAEE</string>
+		<string>AF0015D10B8A2F490045DAEE</string>
 		<string>/Users/cyrusdaboo/Documents/Development/Apple/eclipse/PyOpenDirectory/support/PyOpenDirectory.xcodeproj</string>
-		<string>1CD10A99069EF8BA00B06720</string>
 		<string>1C78EAAD065D492600B07095</string>
 	</array>
 	<key>WindowString</key>
-	<string>3 232 1359 946 0 0 1920 1178 </string>
+	<string>13 374 1064 800 0 0 1920 1178 </string>
 	<key>WindowToolsV3</key>
 	<array>
 		<dict>
@@ -559,8 +619,6 @@
 					<key>Dock</key>
 					<array>
 						<dict>
-							<key>BecomeActive</key>
-							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
 								<key>PBXProjectModuleGUID</key>
@@ -573,16 +631,18 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {1110, 390}}</string>
+								<string>{{0, 0}, {500, 218}}</string>
 								<key>RubberWindowFrame</key>
-								<string>23 483 1110 672 0 0 1920 1178 </string>
+								<string>1095 569 500 500 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>390pt</string>
+							<string>218pt</string>
 						</dict>
 						<dict>
+							<key>BecomeActive</key>
+							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
 								<key>PBXProjectModuleGUID</key>
@@ -597,9 +657,9 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 395}, {1110, 236}}</string>
+								<string>{{0, 223}, {500, 236}}</string>
 								<key>RubberWindowFrame</key>
-								<string>23 483 1110 672 0 0 1920 1178 </string>
+								<string>1095 569 500 500 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXBuildResultsModule</string>
@@ -608,7 +668,7 @@
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>631pt</string>
+					<string>459pt</string>
 				</dict>
 			</array>
 			<key>Name</key>
@@ -621,17 +681,17 @@
 			<true/>
 			<key>TableOfContents</key>
 			<array>
-				<string>AFBD6A500B4AC44700A565AE</string>
-				<string>AFAC4E640B4C182700D59661</string>
+				<string>AF0015490B8A1E6C0045DAEE</string>
+				<string>AF00154A0B8A1E6C0045DAEE</string>
 				<string>1CD0528F0623707200166675</string>
 				<string>XCMainBuildResultsModuleGUID</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.buildV3</string>
 			<key>WindowString</key>
-			<string>23 483 1110 672 0 0 1920 1178 </string>
+			<string>1095 569 500 500 0 0 1920 1178 </string>
 			<key>WindowToolGUID</key>
-			<string>AFBD6A500B4AC44700A565AE</string>
+			<string>AF0015490B8A1E6C0045DAEE</string>
 			<key>WindowToolIsVisible</key>
 			<false/>
 		</dict>
@@ -664,8 +724,8 @@
 										<string>yes</string>
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {588, 382}}</string>
-											<string>{{588, 0}, {701, 382}}</string>
+											<string>{{0, 0}, {639, 431}}</string>
+											<string>{{639, 0}, {764, 431}}</string>
 										</array>
 									</dict>
 									<key>VerticalSplitView</key>
@@ -680,8 +740,8 @@
 										<string>yes</string>
 										<key>sizes</key>
 										<array>
-											<string>{{0, 0}, {1289, 382}}</string>
-											<string>{{0, 382}, {1289, 368}}</string>
+											<string>{{0, 0}, {1403, 431}}</string>
+											<string>{{0, 431}, {1403, 456}}</string>
 										</array>
 									</dict>
 								</dict>
@@ -701,34 +761,34 @@
 								<key>DebugSTDIOWindowFrame</key>
 								<string>{{200, 200}, {500, 300}}</string>
 								<key>Frame</key>
-								<string>{{0, 0}, {1289, 750}}</string>
+								<string>{{0, 0}, {1403, 887}}</string>
 								<key>PBXDebugSessionStackFrameViewKey</key>
 								<dict>
 									<key>DebugVariablesTableConfiguration</key>
 									<array>
 										<string>Name</string>
-										<real>213</real>
+										<real>120</real>
 										<string>Value</string>
-										<real>85</real>
+										<real>127</real>
 										<string>Summary</string>
-										<real>378</real>
+										<real>492</real>
 									</array>
 									<key>Frame</key>
-									<string>{{588, 0}, {701, 382}}</string>
+									<string>{{639, 0}, {764, 431}}</string>
 									<key>RubberWindowFrame</key>
-									<string>300 338 1289 791 0 0 1920 1178 </string>
+									<string>34 224 1403 928 0 0 1920 1178 </string>
 								</dict>
 								<key>RubberWindowFrame</key>
-								<string>300 338 1289 791 0 0 1920 1178 </string>
+								<string>34 224 1403 928 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXDebugSessionModule</string>
 							<key>Proportion</key>
-							<string>750pt</string>
+							<string>887pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>750pt</string>
+					<string>887pt</string>
 				</dict>
 			</array>
 			<key>Name</key>
@@ -742,30 +802,26 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>1CD10A99069EF8BA00B06720</string>
-				<string>AFAC4E650B4C182700D59661</string>
+				<string>AF00154B0B8A1E6C0045DAEE</string>
 				<string>1C162984064C10D400B95A72</string>
-				<string>AFAC4E660B4C182700D59661</string>
-				<string>AFAC4E670B4C182700D59661</string>
-				<string>AFAC4E680B4C182700D59661</string>
-				<string>AFAC4E690B4C182700D59661</string>
-				<string>AFAC4E6A0B4C182700D59661</string>
+				<string>AF00154C0B8A1E6C0045DAEE</string>
+				<string>AF00154D0B8A1E6C0045DAEE</string>
+				<string>AF00154E0B8A1E6C0045DAEE</string>
+				<string>AF00154F0B8A1E6C0045DAEE</string>
+				<string>AF0015500B8A1E6C0045DAEE</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.debugV3</string>
 			<key>WindowString</key>
-			<string>300 338 1289 791 0 0 1920 1178 </string>
+			<string>34 224 1403 928 0 0 1920 1178 </string>
 			<key>WindowToolGUID</key>
 			<string>1CD10A99069EF8BA00B06720</string>
 			<key>WindowToolIsVisible</key>
-			<true/>
+			<false/>
 		</dict>
 		<dict>
-			<key>FirstTimeWindowDisplayed</key>
-			<false/>
 			<key>Identifier</key>
 			<string>windowTool.find</string>
-			<key>IsVertical</key>
-			<true/>
 			<key>Layout</key>
 			<array>
 				<dict>
@@ -780,16 +836,26 @@
 										<key>PBXProjectModuleGUID</key>
 										<string>1CDD528C0622207200134675</string>
 										<key>PBXProjectModuleLabel</key>
-										<string></string>
+										<string>&lt;No Editor&gt;</string>
+										<key>PBXSplitModuleInNavigatorKey</key>
+										<dict>
+											<key>Split0</key>
+											<dict>
+												<key>PBXProjectModuleGUID</key>
+												<string>1CD0528D0623707200166675</string>
+											</dict>
+											<key>SplitCount</key>
+											<string>1</string>
+										</dict>
 										<key>StatusBarVisibility</key>
-										<true/>
+										<integer>1</integer>
 									</dict>
 									<key>GeometryConfiguration</key>
 									<dict>
 										<key>Frame</key>
-										<string>{{0, 0}, {781, 212}}</string>
+										<string>{{0, 0}, {781, 167}}</string>
 										<key>RubberWindowFrame</key>
-										<string>65 639 781 470 0 0 1920 1178 </string>
+										<string>62 385 781 470 0 0 1440 878 </string>
 									</dict>
 									<key>Module</key>
 									<string>PBXNavigatorGroup</string>
@@ -798,11 +864,11 @@
 								</dict>
 							</array>
 							<key>Proportion</key>
-							<string>212pt</string>
+							<string>50%</string>
 						</dict>
 						<dict>
 							<key>BecomeActive</key>
-							<true/>
+							<integer>1</integer>
 							<key>ContentConfiguration</key>
 							<dict>
 								<key>PBXProjectModuleGUID</key>
@@ -813,18 +879,18 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 217}, {781, 212}}</string>
+								<string>{{8, 0}, {773, 254}}</string>
 								<key>RubberWindowFrame</key>
-								<string>65 639 781 470 0 0 1920 1178 </string>
+								<string>62 385 781 470 0 0 1440 878 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXProjectFindModule</string>
 							<key>Proportion</key>
-							<string>212pt</string>
+							<string>50%</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>429pt</string>
+					<string>428pt</string>
 				</dict>
 			</array>
 			<key>Name</key>
@@ -834,21 +900,23 @@
 				<string>PBXProjectFindModule</string>
 			</array>
 			<key>StatusbarIsVisible</key>
-			<true/>
+			<integer>1</integer>
 			<key>TableOfContents</key>
 			<array>
 				<string>1C530D57069F1CE1000CFCEE</string>
-				<string>AF8974B30B4B08A700965268</string>
-				<string>AF8974B40B4B08A700965268</string>
+				<string>1C530D58069F1CE1000CFCEE</string>
+				<string>1C530D59069F1CE1000CFCEE</string>
 				<string>1CDD528C0622207200134675</string>
+				<string>1C530D5A069F1CE1000CFCEE</string>
+				<string>1CE0B1FE06471DED0097A5F4</string>
 				<string>1CD0528E0623707200166675</string>
 			</array>
 			<key>WindowString</key>
-			<string>65 639 781 470 0 0 1920 1178 </string>
+			<string>62 385 781 470 0 0 1440 878 </string>
 			<key>WindowToolGUID</key>
 			<string>1C530D57069F1CE1000CFCEE</string>
 			<key>WindowToolIsVisible</key>
-			<false/>
+			<integer>0</integer>
 		</dict>
 		<dict>
 			<key>Identifier</key>
@@ -879,18 +947,18 @@
 							<key>GeometryConfiguration</key>
 							<dict>
 								<key>Frame</key>
-								<string>{{0, 0}, {1110, 583}}</string>
+								<string>{{0, 0}, {1027, 604}}</string>
 								<key>RubberWindowFrame</key>
-								<string>695 422 1110 624 0 0 1920 1178 </string>
+								<string>896 191 1027 645 0 0 1920 1178 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXDebugCLIModule</string>
 							<key>Proportion</key>
-							<string>583pt</string>
+							<string>604pt</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>583pt</string>
+					<string>604pt</string>
 				</dict>
 			</array>
 			<key>Name</key>
@@ -904,13 +972,13 @@
 			<key>TableOfContents</key>
 			<array>
 				<string>1C78EAAD065D492600B07095</string>
-				<string>AFAC4E6B0B4C182700D59661</string>
+				<string>AF0015510B8A1E6C0045DAEE</string>
 				<string>1C78EAAC065D492600B07095</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.consoleV3</string>
 			<key>WindowString</key>
-			<string>695 422 1110 624 0 0 1920 1178 </string>
+			<string>896 191 1027 645 0 0 1920 1178 </string>
 			<key>WindowToolGUID</key>
 			<string>1C78EAAD065D492600B07095</string>
 			<key>WindowToolIsVisible</key>
@@ -1145,18 +1213,18 @@
 			<string>743 379 452 308 0 0 1280 1002 </string>
 		</dict>
 		<dict>
-			<key>FirstTimeWindowDisplayed</key>
-			<false/>
 			<key>Identifier</key>
 			<string>windowTool.breakpoints</string>
 			<key>IsVertical</key>
-			<false/>
+			<integer>0</integer>
 			<key>Layout</key>
 			<array>
 				<dict>
 					<key>Dock</key>
 					<array>
 						<dict>
+							<key>BecomeActive</key>
+							<integer>1</integer>
 							<key>ContentConfiguration</key>
 							<dict>
 								<key>PBXBottomSmartGroupGIDs</key>
@@ -1198,7 +1266,7 @@
 								<key>PBXTopSmartGroupGIDs</key>
 								<array/>
 								<key>XCIncludePerspectivesSwitch</key>
-								<false/>
+								<integer>0</integer>
 							</dict>
 							<key>GeometryConfiguration</key>
 							<dict>
@@ -1210,7 +1278,7 @@
 									<real>168</real>
 								</array>
 								<key>RubberWindowFrame</key>
-								<string>44 723 744 409 0 0 1920 1178 </string>
+								<string>315 424 744 409 0 0 1440 878 </string>
 							</dict>
 							<key>Module</key>
 							<string>PBXSmartGroupTreeModule</string>
@@ -1218,8 +1286,6 @@
 							<string>185pt</string>
 						</dict>
 						<dict>
-							<key>BecomeActive</key>
-							<true/>
 							<key>ContentConfiguration</key>
 							<dict>
 								<key>PBXProjectModuleGUID</key>
@@ -1232,7 +1298,7 @@
 								<key>Frame</key>
 								<string>{{190, 0}, {554, 368}}</string>
 								<key>RubberWindowFrame</key>
-								<string>44 723 744 409 0 0 1920 1178 </string>
+								<string>315 424 744 409 0 0 1440 878 </string>
 							</dict>
 							<key>Module</key>
 							<string>XCDetailModule</string>
@@ -1256,62 +1322,40 @@
 				<string>XCDetailModule</string>
 			</array>
 			<key>StatusbarIsVisible</key>
-			<true/>
+			<integer>1</integer>
 			<key>TableOfContents</key>
 			<array>
-				<string>AFAC4EC90B4C436E00D59661</string>
-				<string>AFAC4ECA0B4C436E00D59661</string>
+				<string>1CDDB66807F98D9800BB5817</string>
+				<string>1CDDB66907F98D9800BB5817</string>
 				<string>1CE0B1FE06471DED0097A5F4</string>
 				<string>1CA1AED706398EBD00589147</string>
 			</array>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.breakpointsV3</string>
 			<key>WindowString</key>
-			<string>44 723 744 409 0 0 1920 1178 </string>
+			<string>315 424 744 409 0 0 1440 878 </string>
 			<key>WindowToolGUID</key>
-			<string>AFAC4EC90B4C436E00D59661</string>
+			<string>1CDDB66807F98D9800BB5817</string>
 			<key>WindowToolIsVisible</key>
-			<false/>
+			<integer>1</integer>
 		</dict>
 		<dict>
-			<key>FirstTimeWindowDisplayed</key>
-			<false/>
 			<key>Identifier</key>
 			<string>windowTool.debugAnimator</string>
-			<key>IsVertical</key>
-			<true/>
 			<key>Layout</key>
 			<array>
 				<dict>
 					<key>Dock</key>
 					<array>
 						<dict>
-							<key>BecomeActive</key>
-							<true/>
-							<key>ContentConfiguration</key>
-							<dict>
-								<key>PBXProjectModuleGUID</key>
-								<string>AF8974CE0B4B09FA00965268</string>
-								<key>PBXProjectModuleLabel</key>
-								<string></string>
-								<key>StatusBarVisibility</key>
-								<true/>
-							</dict>
-							<key>GeometryConfiguration</key>
-							<dict>
-								<key>Frame</key>
-								<string>{{0, 0}, {700, 459}}</string>
-								<key>RubberWindowFrame</key>
-								<string>24 655 700 500 0 0 1920 1178 </string>
-							</dict>
 							<key>Module</key>
 							<string>PBXNavigatorGroup</string>
 							<key>Proportion</key>
-							<string>459pt</string>
+							<string>100%</string>
 						</dict>
 					</array>
 					<key>Proportion</key>
-					<string>459pt</string>
+					<string>100%</string>
 				</dict>
 			</array>
 			<key>Name</key>
@@ -1321,21 +1365,11 @@
 				<string>PBXNavigatorGroup</string>
 			</array>
 			<key>StatusbarIsVisible</key>
-			<true/>
-			<key>TableOfContents</key>
-			<array>
-				<string>AF8974D00B4B09FA00965268</string>
-				<string>AF8974D10B4B09FA00965268</string>
-				<string>AF8974CE0B4B09FA00965268</string>
-			</array>
+			<integer>1</integer>
 			<key>ToolbarConfiguration</key>
 			<string>xcode.toolbar.config.debugAnimatorV3</string>
 			<key>WindowString</key>
-			<string>24 655 700 500 0 0 1920 1178 </string>
-			<key>WindowToolGUID</key>
-			<string>AF8974D00B4B09FA00965268</string>
-			<key>WindowToolIsVisible</key>
-			<false/>
+			<string>100 100 700 500 0 0 1280 1002 </string>
 		</dict>
 		<dict>
 			<key>Identifier</key>

Modified: PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.pbxuser
===================================================================
--- PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.pbxuser	2007-02-19 16:47:33 UTC (rev 1210)
+++ PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/cyrusdaboo.pbxuser	2007-02-19 21:37:40 UTC (rev 1211)
@@ -1,6 +1,7 @@
 // !$*UTF8*$!
 {
 	08FB7793FE84155DC02AAC07 /* Project object */ = {
+		activeArchitecture = i386;
 		activeBuildConfigurationName = Debug;
 		activeExecutable = AF155A290A501F5C007E1E6E /* PyOpenDirectory */;
 		activeTarget = 8DD76F620486A84900D96B5E /* PyOpenDirectory */;
@@ -8,6 +9,8 @@
 			8DD76F620486A84900D96B5E /* PyOpenDirectory */,
 		);
 		breakpoints = (
+			AF0015620B8A24240045DAEE /* test.cpp:81 */,
+			AF0015650B8A245A0045DAEE /* test.cpp:149 */,
 		);
 		codeSenseManager = AF155A2E0A501F7B007E1E6E /* Code sense */;
 		executables = (
@@ -43,7 +46,7 @@
 				PBXFileTableDataSourceColumnSortingKey = PBXFileDataSource_Filename_ColumnID;
 				PBXFileTableDataSourceColumnWidthsKey = (
 					20,
-					912,
+					617,
 					20,
 					48,
 					43,
@@ -60,59 +63,85 @@
 					PBXFileDataSource_Target_ColumnID,
 				);
 			};
-			PBXPerProjectTemplateStateSaveDate = 189535876;
-			PBXWorkspaceStateSaveDate = 189535876;
+			PBXPerProjectTemplateStateSaveDate = 193601096;
+			PBXWorkspaceStateSaveDate = 193601096;
 		};
 		perUserProjectItems = {
-			AF8974920B4AFA6600965268 = AF8974920B4AFA6600965268 /* PBXTextBookmark */;
+			AF00156B0B8A25510045DAEE /* PBXBookmark */ = AF00156B0B8A25510045DAEE /* PBXBookmark */;
+			AF00156C0B8A25E20045DAEE /* PBXTextBookmark */ = AF00156C0B8A25E20045DAEE /* PBXTextBookmark */;
+			AF00156D0B8A25E20045DAEE /* PBXTextBookmark */ = AF00156D0B8A25E20045DAEE /* PBXTextBookmark */;
+			AF00156E0B8A25E20045DAEE /* PBXTextBookmark */ = AF00156E0B8A25E20045DAEE /* PBXTextBookmark */;
+			AF00156F0B8A25E20045DAEE /* PBXBookmark */ = AF00156F0B8A25E20045DAEE /* PBXBookmark */;
+			AF0015700B8A25E20045DAEE /* PBXTextBookmark */ = AF0015700B8A25E20045DAEE /* PBXTextBookmark */;
+			AF0015710B8A25E20045DAEE /* PBXTextBookmark */ = AF0015710B8A25E20045DAEE /* PBXTextBookmark */;
+			AF0015720B8A25E20045DAEE /* PBXTextBookmark */ = AF0015720B8A25E20045DAEE /* PBXTextBookmark */;
+			AF0015730B8A25E20045DAEE /* PBXTextBookmark */ = AF0015730B8A25E20045DAEE /* PBXTextBookmark */;
+			AF0015740B8A25E20045DAEE /* PBXTextBookmark */ = AF0015740B8A25E20045DAEE /* PBXTextBookmark */;
+			AF0015770B8A25E20045DAEE /* PBXTextBookmark */ = AF0015770B8A25E20045DAEE /* PBXTextBookmark */;
+			AF00157F0B8A268C0045DAEE /* PBXBookmark */ = AF00157F0B8A268C0045DAEE /* PBXBookmark */;
+			AF0015800B8A27320045DAEE /* PBXBookmark */ = AF0015800B8A27320045DAEE /* PBXBookmark */;
+			AF0015810B8A27C70045DAEE /* PBXTextBookmark */ = AF0015810B8A27C70045DAEE /* PBXTextBookmark */;
+			AF0015820B8A27C70045DAEE /* PBXTextBookmark */ = AF0015820B8A27C70045DAEE /* PBXTextBookmark */;
+			AF0015830B8A27C70045DAEE /* PBXTextBookmark */ = AF0015830B8A27C70045DAEE /* PBXTextBookmark */;
+			AF0015860B8A27C70045DAEE /* PBXTextBookmark */ = AF0015860B8A27C70045DAEE /* PBXTextBookmark */;
+			AF0015890B8A27C70045DAEE /* PBXTextBookmark */ = AF0015890B8A27C70045DAEE /* PBXTextBookmark */;
+			AF00158C0B8A27C70045DAEE /* PBXTextBookmark */ = AF00158C0B8A27C70045DAEE /* PBXTextBookmark */;
+			AF00158D0B8A27C70045DAEE /* PBXTextBookmark */ = AF00158D0B8A27C70045DAEE /* PBXTextBookmark */;
+			AF0015960B8A28F20045DAEE /* PBXTextBookmark */ = AF0015960B8A28F20045DAEE /* PBXTextBookmark */;
+			AF0015970B8A28F20045DAEE /* PBXTextBookmark */ = AF0015970B8A28F20045DAEE /* PBXTextBookmark */;
+			AF0015990B8A290F0045DAEE /* PBXTextBookmark */ = AF0015990B8A290F0045DAEE /* PBXTextBookmark */;
+			AF00159A0B8A290F0045DAEE /* PBXTextBookmark */ = AF00159A0B8A290F0045DAEE /* PBXTextBookmark */;
+			AF00159C0B8A290F0045DAEE /* PBXTextBookmark */ = AF00159C0B8A290F0045DAEE /* PBXTextBookmark */;
+			AF00159D0B8A290F0045DAEE /* PBXTextBookmark */ = AF00159D0B8A290F0045DAEE /* PBXTextBookmark */;
+			AF00159F0B8A290F0045DAEE /* PBXTextBookmark */ = AF00159F0B8A290F0045DAEE /* PBXTextBookmark */;
+			AF0015A00B8A290F0045DAEE /* PBXTextBookmark */ = AF0015A00B8A290F0045DAEE /* PBXTextBookmark */;
+			AF0015A10B8A290F0045DAEE /* PBXTextBookmark */ = AF0015A10B8A290F0045DAEE /* PBXTextBookmark */;
+			AF0015A20B8A290F0045DAEE /* PBXTextBookmark */ = AF0015A20B8A290F0045DAEE /* PBXTextBookmark */;
+			AF0015A30B8A292E0045DAEE /* PBXTextBookmark */ = AF0015A30B8A292E0045DAEE /* PBXTextBookmark */;
+			AF0015A40B8A292E0045DAEE /* PBXTextBookmark */ = AF0015A40B8A292E0045DAEE /* PBXTextBookmark */;
+			AF0015A70B8A2AF00045DAEE /* PBXTextBookmark */ = AF0015A70B8A2AF00045DAEE /* PBXTextBookmark */;
+			AF0015AD0B8A2B890045DAEE /* PBXTextBookmark */ = AF0015AD0B8A2B890045DAEE /* PBXTextBookmark */;
+			AF0015AE0B8A2B890045DAEE /* PBXTextBookmark */ = AF0015AE0B8A2B890045DAEE /* PBXTextBookmark */;
+			AF0015AF0B8A2B890045DAEE /* PBXTextBookmark */ = AF0015AF0B8A2B890045DAEE /* PBXTextBookmark */;
+			AF0015B00B8A2B890045DAEE /* PBXTextBookmark */ = AF0015B00B8A2B890045DAEE /* PBXTextBookmark */;
+			AF0015B10B8A2B890045DAEE /* PBXTextBookmark */ = AF0015B10B8A2B890045DAEE /* PBXTextBookmark */;
+			AF0015B20B8A2C350045DAEE /* PBXTextBookmark */ = AF0015B20B8A2C350045DAEE /* PBXTextBookmark */;
+			AF0015B30B8A2C350045DAEE /* PBXTextBookmark */ = AF0015B30B8A2C350045DAEE /* PBXTextBookmark */;
+			AF0015B60B8A2C6F0045DAEE /* PBXTextBookmark */ = AF0015B60B8A2C6F0045DAEE /* PBXTextBookmark */;
+			AF0015B70B8A2C6F0045DAEE /* PBXTextBookmark */ = AF0015B70B8A2C6F0045DAEE /* PBXTextBookmark */;
+			AF0015B80B8A2C6F0045DAEE /* PBXTextBookmark */ = AF0015B80B8A2C6F0045DAEE /* PBXTextBookmark */;
+			AF0015B90B8A2C6F0045DAEE /* PBXTextBookmark */ = AF0015B90B8A2C6F0045DAEE /* PBXTextBookmark */;
+			AF0015BB0B8A2C790045DAEE /* PBXBookmark */ = AF0015BB0B8A2C790045DAEE /* PBXBookmark */;
+			AF0015BC0B8A2C7F0045DAEE /* PBXTextBookmark */ = AF0015BC0B8A2C7F0045DAEE /* PBXTextBookmark */;
+			AF0015BD0B8A2C7F0045DAEE /* PBXTextBookmark */ = AF0015BD0B8A2C7F0045DAEE /* PBXTextBookmark */;
+			AF0015BE0B8A2C7F0045DAEE /* PBXTextBookmark */ = AF0015BE0B8A2C7F0045DAEE /* PBXTextBookmark */;
+			AF0015C00B8A2C7F0045DAEE /* PBXTextBookmark */ = AF0015C00B8A2C7F0045DAEE /* PBXTextBookmark */;
+			AF0015C10B8A2C7F0045DAEE /* PBXTextBookmark */ = AF0015C10B8A2C7F0045DAEE /* PBXTextBookmark */;
+			AF0015C20B8A2C7F0045DAEE /* PBXTextBookmark */ = AF0015C20B8A2C7F0045DAEE /* PBXTextBookmark */;
+			AF0015C60B8A2C7F0045DAEE /* PBXTextBookmark */ = AF0015C60B8A2C7F0045DAEE /* PBXTextBookmark */;
+			AF0015CD0B8A2D650045DAEE /* PBXTextBookmark */ = AF0015CD0B8A2D650045DAEE /* PBXTextBookmark */;
+			AF0015CE0B8A2D680045DAEE /* PBXTextBookmark */ = AF0015CE0B8A2D680045DAEE /* PBXTextBookmark */;
+			AF0015CF0B8A2ED80045DAEE /* PBXBookmark */ = AF0015CF0B8A2ED80045DAEE /* PBXBookmark */;
+			AF0015D00B8A2F490045DAEE /* PBXTextBookmark */ = AF0015D00B8A2F490045DAEE /* PBXTextBookmark */;
+			AF0015D30B8A2F490045DAEE /* PBXTextBookmark */ = AF0015D30B8A2F490045DAEE /* PBXTextBookmark */;
+			AF0015D70B8A2F9B0045DAEE /* PBXTextBookmark */ = AF0015D70B8A2F9B0045DAEE /* PBXTextBookmark */;
+			AF0015D80B8A2F9B0045DAEE /* PBXTextBookmark */ = AF0015D80B8A2F9B0045DAEE /* PBXTextBookmark */;
+			AF0015D90B8A2F9B0045DAEE /* PBXTextBookmark */ = AF0015D90B8A2F9B0045DAEE /* PBXTextBookmark */;
+			AF0015DA0B8A2F9B0045DAEE /* PBXTextBookmark */ = AF0015DA0B8A2F9B0045DAEE /* PBXTextBookmark */;
+			AF0015DB0B8A2F9B0045DAEE /* PBXTextBookmark */ = AF0015DB0B8A2F9B0045DAEE /* PBXTextBookmark */;
+			AF0015DC0B8A2F9B0045DAEE /* PBXTextBookmark */ = AF0015DC0B8A2F9B0045DAEE /* PBXTextBookmark */;
+			AF8341B60B8A1C5B0055995E = AF8341B60B8A1C5B0055995E /* PBXTextBookmark */;
+			AF8341B80B8A1C5B0055995E = AF8341B80B8A1C5B0055995E /* PBXTextBookmark */;
+			AF8342200B8A1D340055995E = AF8342200B8A1D340055995E /* PBXTextBookmark */;
+			AF8342220B8A1D340055995E = AF8342220B8A1D340055995E /* PBXTextBookmark */;
+			AF8342270B8A1D8F0055995E = AF8342270B8A1D8F0055995E /* PBXTextBookmark */;
+			AF8342280B8A1D8F0055995E = AF8342280B8A1D8F0055995E /* PBXTextBookmark */;
+			AF8342300B8A1E170055995E = AF8342300B8A1E170055995E /* PBXTextBookmark */;
 			AF8974940B4AFA6600965268 = AF8974940B4AFA6600965268 /* PBXTextBookmark */;
-			AF8974950B4AFA6600965268 = AF8974950B4AFA6600965268 /* PBXTextBookmark */;
-			AF89749E0B4B07D600965268 = AF89749E0B4B07D600965268 /* PBXTextBookmark */;
-			AF8974D80B4B0BC500965268 = AF8974D80B4B0BC500965268 /* PBXTextBookmark */;
-			AF8974D90B4B0BC500965268 = AF8974D90B4B0BC500965268 /* PBXTextBookmark */;
-			AF8974DA0B4B0BC500965268 = AF8974DA0B4B0BC500965268 /* PBXTextBookmark */;
-			AF8974E30B4B0C6000965268 = AF8974E30B4B0C6000965268 /* PBXTextBookmark */;
-			AFAC4E620B4C182700D59661 /* PBXTextBookmark */ = AFAC4E620B4C182700D59661 /* PBXTextBookmark */;
-			AFAC4E630B4C182700D59661 /* PBXTextBookmark */ = AFAC4E630B4C182700D59661 /* PBXTextBookmark */;
-			AFAC4E6E0B4C18D400D59661 /* PBXTextBookmark */ = AFAC4E6E0B4C18D400D59661 /* PBXTextBookmark */;
-			AFAC4E6F0B4C18D400D59661 /* PBXTextBookmark */ = AFAC4E6F0B4C18D400D59661 /* PBXTextBookmark */;
-			AFAC4E700B4C18D400D59661 /* PBXTextBookmark */ = AFAC4E700B4C18D400D59661 /* PBXTextBookmark */;
-			AFAC4E710B4C18D400D59661 /* PBXTextBookmark */ = AFAC4E710B4C18D400D59661 /* PBXTextBookmark */;
-			AFAC4E780B4C23EC00D59661 /* PBXTextBookmark */ = AFAC4E780B4C23EC00D59661 /* PBXTextBookmark */;
-			AFAC4E790B4C23EC00D59661 /* PBXTextBookmark */ = AFAC4E790B4C23EC00D59661 /* PBXTextBookmark */;
-			AFAC4E7A0B4C23EC00D59661 /* PBXTextBookmark */ = AFAC4E7A0B4C23EC00D59661 /* PBXTextBookmark */;
-			AFAC4E7B0B4C246E00D59661 /* PBXTextBookmark */ = AFAC4E7B0B4C246E00D59661 /* PBXTextBookmark */;
-			AFAC4E810B4C259700D59661 /* PBXTextBookmark */ = AFAC4E810B4C259700D59661 /* PBXTextBookmark */;
-			AFAC4E820B4C259700D59661 /* PBXTextBookmark */ = AFAC4E820B4C259700D59661 /* PBXTextBookmark */;
-			AFAC4E840B4C259700D59661 /* PBXTextBookmark */ = AFAC4E840B4C259700D59661 /* PBXTextBookmark */;
-			AFAC4E850B4C259700D59661 /* PBXTextBookmark */ = AFAC4E850B4C259700D59661 /* PBXTextBookmark */;
-			AFAC4E870B4C25AD00D59661 /* PBXTextBookmark */ = AFAC4E870B4C25AD00D59661 /* PBXTextBookmark */;
-			AFAC4E880B4C25AD00D59661 /* PBXTextBookmark */ = AFAC4E880B4C25AD00D59661 /* PBXTextBookmark */;
-			AFAC4E890B4C25AD00D59661 /* PBXTextBookmark */ = AFAC4E890B4C25AD00D59661 /* PBXTextBookmark */;
-			AFAC4E8A0B4C25AD00D59661 /* PBXTextBookmark */ = AFAC4E8A0B4C25AD00D59661 /* PBXTextBookmark */;
-			AFAC4E900B4C267800D59661 /* PBXTextBookmark */ = AFAC4E900B4C267800D59661 /* PBXTextBookmark */;
-			AFAC4E910B4C267800D59661 /* PBXTextBookmark */ = AFAC4E910B4C267800D59661 /* PBXTextBookmark */;
-			AFAC4E920B4C267800D59661 /* PBXTextBookmark */ = AFAC4E920B4C267800D59661 /* PBXTextBookmark */;
-			AFAC4E930B4C267800D59661 /* PBXTextBookmark */ = AFAC4E930B4C267800D59661 /* PBXTextBookmark */;
-			AFAC4E980B4C26BC00D59661 /* PBXTextBookmark */ = AFAC4E980B4C26BC00D59661 /* PBXTextBookmark */;
-			AFAC4E9A0B4C279100D59661 /* PBXTextBookmark */ = AFAC4E9A0B4C279100D59661 /* PBXTextBookmark */;
-			AFAC4EB00B4C3E7700D59661 /* PBXTextBookmark */ = AFAC4EB00B4C3E7700D59661 /* PBXTextBookmark */;
-			AFAC4EB40B4C41C300D59661 /* PBXTextBookmark */ = AFAC4EB40B4C41C300D59661 /* PBXTextBookmark */;
-			AFAC4EB60B4C41D100D59661 /* PBXTextBookmark */ = AFAC4EB60B4C41D100D59661 /* PBXTextBookmark */;
-			AFAC4EB80B4C41E500D59661 /* PBXTextBookmark */ = AFAC4EB80B4C41E500D59661 /* PBXTextBookmark */;
-			AFAC4EB90B4C41E500D59661 /* PBXTextBookmark */ = AFAC4EB90B4C41E500D59661 /* PBXTextBookmark */;
-			AFAC4EBA0B4C41FE00D59661 /* PBXTextBookmark */ = AFAC4EBA0B4C41FE00D59661 /* PBXTextBookmark */;
-			AFAC4EBE0B4C431100D59661 /* PBXTextBookmark */ = AFAC4EBE0B4C431100D59661 /* PBXTextBookmark */;
-			AFAC4EBF0B4C431100D59661 /* PBXTextBookmark */ = AFAC4EBF0B4C431100D59661 /* PBXTextBookmark */;
-			AFAC4EC00B4C431100D59661 /* PBXTextBookmark */ = AFAC4EC00B4C431100D59661 /* PBXTextBookmark */;
-			AFAC4EC10B4C431100D59661 /* PBXTextBookmark */ = AFAC4EC10B4C431100D59661 /* PBXTextBookmark */;
-			AFAC4EC30B4C434200D59661 /* PBXTextBookmark */ = AFAC4EC30B4C434200D59661 /* PBXTextBookmark */;
-			AFAC4EC40B4C434200D59661 /* PBXTextBookmark */ = AFAC4EC40B4C434200D59661 /* PBXTextBookmark */;
-			AFAC4EC50B4C434200D59661 /* PBXTextBookmark */ = AFAC4EC50B4C434200D59661 /* PBXTextBookmark */;
-			AFAC4EC80B4C436E00D59661 /* PBXTextBookmark */ = AFAC4EC80B4C436E00D59661 /* PBXTextBookmark */;
-			AFAC4ECB0B4C437900D59661 /* PBXTextBookmark */ = AFAC4ECB0B4C437900D59661 /* PBXTextBookmark */;
-			AFAC4ECC0B4C437900D59661 /* PBXTextBookmark */ = AFAC4ECC0B4C437900D59661 /* PBXTextBookmark */;
-			AFAC4ECD0B4C437900D59661 /* PBXTextBookmark */ = AFAC4ECD0B4C437900D59661 /* PBXTextBookmark */;
+			AFAC4E700B4C18D400D59661 = AFAC4E700B4C18D400D59661 /* PBXTextBookmark */;
+			AFAC4E790B4C23EC00D59661 = AFAC4E790B4C23EC00D59661 /* PBXTextBookmark */;
+			AFAC4E900B4C267800D59661 = AFAC4E900B4C267800D59661 /* PBXTextBookmark */;
+			AFAC4E920B4C267800D59661 = AFAC4E920B4C267800D59661 /* PBXTextBookmark */;
 		};
 		sourceControlManager = AF155A2D0A501F7B007E1E6E /* Source Control */;
 		userBuildSettings = {
@@ -120,9 +149,9 @@
 	};
 	08FB7796FE84155DC02AAC07 /* test.cpp */ = {
 		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1104, 2856}}";
-			sepNavSelRange = "{5935, 0}";
-			sepNavVisRect = "{{0, 1690}, {1104, 448}}";
+			sepNavIntBoundsRect = "{{0, 0}, {2462, 3836}}";
+			sepNavSelRange = "{6607, 0}";
+			sepNavVisRect = "{{0, 1751}, {752, 699}}";
 			sepNavWindowFrame = "{{436, 4}, {811, 828}}";
 		};
 	};
@@ -132,581 +161,850 @@
 			AF155A290A501F5C007E1E6E /* PyOpenDirectory */,
 		);
 	};
-	AF155A290A501F5C007E1E6E /* PyOpenDirectory */ = {
-		isa = PBXExecutable;
-		activeArgIndex = 2147483647;
-		activeArgIndices = (
+	AF0015620B8A24240045DAEE /* test.cpp:81 */ = {
+		isa = PBXFileBreakpoint;
+		actions = (
 		);
-		argumentStrings = (
+		breakpointStyle = 0;
+		continueAfterActions = 0;
+		countType = 0;
+		delayBeforeContinue = 0;
+		fileReference = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		functionName = "main (int argc, const char * argv[])";
+		hitCount = 1;
+		ignoreCount = 0;
+		lineNumber = 81;
+		location = test.ob;
+		modificationTime = 193605512.453852;
+		state = 1;
+	};
+	AF0015650B8A245A0045DAEE /* test.cpp:149 */ = {
+		isa = PBXFileBreakpoint;
+		actions = (
 		);
-		autoAttachOnCrash = 1;
-		breakpointsEnabled = 1;
-		configStateDict = {
-		};
-		customDataFormattersEnabled = 1;
-		debuggerPlugin = GDBDebugging;
-		disassemblyDisplayState = 0;
-		dylibVariantSuffix = "";
-		enableDebugStr = 1;
-		environmentEntries = (
-		);
-		executableSystemSymbolLevel = 0;
-		executableUserSymbolLevel = 0;
-		libgmallocEnabled = 0;
-		name = PyOpenDirectory;
-		savedGlobals = {
-		};
-		sourceDirectories = (
-		);
-		variableFormatDictionary = {
-			$cs = 1;
-			$ds = 1;
-			$eax = 1;
-			$ebp = 1;
-			$ebx = 1;
-			$ecx = 1;
-			$edi = 1;
-			$edx = 1;
-			$eflags = 1;
-			$eip = 1;
-			$es = 1;
-			$esi = 1;
-			$esp = 1;
-			$gs = 1;
-			$ss = 1;
-		};
+		breakpointStyle = 0;
+		continueAfterActions = 0;
+		countType = 0;
+		delayBeforeContinue = 0;
+		fileReference = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		functionName = "AuthenticateUser(CDirectoryService* dir, const char* user, const char* pswd)";
+		hitCount = 0;
+		ignoreCount = 0;
+		lineNumber = 149;
+		location = test.ob;
+		modificationTime = 193605510.70575;
+		state = 2;
 	};
-	AF155A2D0A501F7B007E1E6E /* Source Control */ = {
-		isa = PBXSourceControlManager;
-		fallbackIsa = XCSourceControlManager;
-		isSCMEnabled = 0;
-		scmConfiguration = {
-		};
-		scmType = "";
+	AF00156B0B8A25510045DAEE /* PBXBookmark */ = {
+		isa = PBXBookmark;
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
 	};
-	AF155A2E0A501F7B007E1E6E /* Code sense */ = {
-		isa = PBXCodeSenseManager;
-		indexTemplatePath = "";
+	AF00156C0B8A25E20045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
+		name = "PythonWrapper.cpp: 454";
+		rLen = 0;
+		rLoc = 14224;
+		rType = 0;
+		vrLen = 848;
+		vrLoc = 8760;
 	};
-	AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1104, 11914}}";
-			sepNavSelRange = "{9255, 26}";
-			sepNavVisRect = "{{0, 4025}, {1104, 471}}";
-			sepNavWindowFrame = "{{144, 200}, {1046, 828}}";
-		};
+	AF00156D0B8A25E20045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 82";
+		rLen = 0;
+		rLoc = 2828;
+		rType = 0;
+		vrLen = 1618;
+		vrLoc = 4731;
 	};
-	AF155A300A501F84007E1E6E /* CDirectoryService.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {766, 1106}}";
-			sepNavSelRange = "{1276, 0}";
-			sepNavVisRect = "{{0, 163}, {766, 699}}";
-			sepNavWindowFrame = "{{15, 4}, {811, 828}}";
-		};
+	AF00156E0B8A25E20045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		name = "CDirectoryService.cpp: 183";
+		rLen = 0;
+		rLoc = 5658;
+		rType = 0;
+		vrLen = 993;
+		vrLoc = 5756;
 	};
-	AF155A310A501F84007E1E6E /* PythonWrapper.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1134, 6790}}";
-			sepNavSelRange = "{14121, 0}";
-			sepNavVisRect = "{{0, 1858}, {1134, 471}}";
-			sepNavWindowFrame = "{{113, 4}, {811, 828}}";
-		};
+	AF00156F0B8A25E20045DAEE /* PBXBookmark */ = {
+		isa = PBXBookmark;
+		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
 	};
-	AF155AFB0A502C09007E1E6E /* CFStringUtil.h */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {766, 699}}";
-			sepNavSelRange = "{546, 0}";
-			sepNavVisRect = "{{0, 0}, {766, 699}}";
-			sepNavWindowFrame = "{{746, 81}, {811, 828}}";
-		};
+	AF0015700B8A25E20045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 81";
+		rLen = 0;
+		rLoc = 2673;
+		rType = 0;
+		vrLen = 1509;
+		vrLoc = 4633;
 	};
-	AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */ = {
-		uiCtxt = {
-			sepNavIntBoundsRect = "{{0, 0}, {1242, 1736}}";
-			sepNavSelRange = "{2369, 0}";
-			sepNavVisRect = "{{0, 1307}, {1242, 313}}";
-			sepNavWindowFrame = "{{36, 4}, {811, 1024}}";
-		};
-	};
-	AF8974920B4AFA6600965268 /* PBXTextBookmark */ = {
+	AF0015710B8A25E20045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 485";
+		name = "PythonWrapper.cpp: 454";
 		rLen = 0;
-		rLoc = 14121;
+		rLoc = 14224;
 		rType = 0;
-		vrLen = 900;
-		vrLoc = 3735;
+		vrLen = 848;
+		vrLoc = 8760;
 	};
-	AF8974940B4AFA6600965268 /* PBXTextBookmark */ = {
+	AF0015720B8A25E20045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = Python/Python.h;
-		rLen = 15;
-		rLoc = 726;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 82";
+		rLen = 0;
+		rLoc = 2828;
 		rType = 0;
-		vrLen = 1115;
-		vrLoc = 0;
+		vrLen = 1618;
+		vrLoc = 4731;
 	};
-	AF8974950B4AFA6600965268 /* PBXTextBookmark */ = {
+	AF0015730B8A25E20045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
-		name = "PythonWrapper.cpp: 485";
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		name = "CDirectoryService.cpp: 183";
 		rLen = 0;
-		rLoc = 14121;
+		rLoc = 5658;
 		rType = 0;
-		vrLen = 900;
-		vrLoc = 3735;
+		vrLen = 993;
+		vrLoc = 5756;
 	};
-	AF89749E0B4B07D600965268 /* PBXTextBookmark */ = {
+	AF0015740B8A25E20045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
+		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
+		name = "CDirectoryService.h: 54";
+		rLen = 0;
+		rLoc = 2212;
+		rType = 0;
+		vrLen = 1523;
+		vrLoc = 963;
+	};
+	AF0015770B8A25E20045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 840";
+		name = "CDirectoryService.cpp: 642";
 		rLen = 0;
-		rLoc = 22889;
+		rLoc = 19902;
 		rType = 0;
-		vrLen = 1059;
-		vrLoc = 15544;
+		vrLen = 1509;
+		vrLoc = 19664;
 	};
-	AF8974D80B4B0BC500965268 /* PBXTextBookmark */ = {
+	AF00157F0B8A268C0045DAEE /* PBXBookmark */ = {
+		isa = PBXBookmark;
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+	};
+	AF0015800B8A27320045DAEE /* PBXBookmark */ = {
+		isa = PBXBookmark;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+	};
+	AF0015810B8A27C70045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
+		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
+		name = "CDirectoryService.h: 54";
+		rLen = 0;
+		rLoc = 2212;
+		rType = 0;
+		vrLen = 1523;
+		vrLoc = 963;
+	};
+	AF0015820B8A27C70045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
+		name = "CDirectoryService.h: 54";
+		rLen = 0;
+		rLoc = 2212;
+		rType = 0;
+		vrLen = 1523;
+		vrLoc = 963;
+	};
+	AF0015830B8A27C70045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 59";
+		name = "test.cpp: 82";
 		rLen = 0;
-		rLoc = 1922;
+		rLoc = 2828;
 		rType = 0;
-		vrLen = 790;
-		vrLoc = 1868;
+		vrLen = 1618;
+		vrLoc = 4731;
 	};
-	AF8974D90B4B0BC500965268 /* PBXTextBookmark */ = {
+	AF0015860B8A27C70045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		comments = "error: no matching function for call to 'CDirectoryService::_ListAllRecordsWithAttributes(const char*&, const __CFArray*&)'";
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 92;
-		rType = 1;
+		name = "CDirectoryService.cpp: 654";
+		rLen = 20;
+		rLoc = 20273;
+		rType = 0;
+		vrLen = 1836;
+		vrLoc = 19772;
 	};
-	AF8974DA0B4B0BC500965268 /* PBXTextBookmark */ = {
+	AF0015890B8A27C70045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 59";
+		name = "test.cpp: 114";
 		rLen = 0;
-		rLoc = 1922;
+		rLoc = 3990;
 		rType = 0;
-		vrLen = 790;
-		vrLoc = 1868;
+		vrLen = 1960;
+		vrLoc = 2740;
 	};
-	AF8974E30B4B0C6000965268 /* PBXTextBookmark */ = {
+	AF00158C0B8A27C70045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 843";
+		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
 		rLen = 0;
-		rLoc = 22991;
+		rLoc = 2147483647;
 		rType = 0;
-		vrLen = 1128;
-		vrLoc = 1882;
 	};
-	AFAC4E620B4C182700D59661 /* PBXTextBookmark */ = {
+	AF00158D0B8A27C70045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		comments = "error: no matching function for call to 'CDirectoryService::BuildStringDataList(<type error>, tDataList*&)'";
+		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
+		name = "CDirectoryService.h: 73";
+		rLen = 1;
+		rLoc = 2962;
+		rType = 0;
+		vrLen = 2155;
+		vrLoc = 865;
+	};
+	AF0015960B8A28F20045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		comments = "error: 'users' was not declared in this scope";
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
 		rLen = 1;
-		rLoc = 413;
+		rLoc = 665;
 		rType = 1;
 	};
-	AFAC4E630B4C182700D59661 /* PBXTextBookmark */ = {
+	AF0015970B8A28F20045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "";
-		rLen = 3;
-		rLoc = 12268;
+		name = "CDirectoryService.cpp: 665";
+		rLen = 21;
+		rLoc = 20928;
 		rType = 0;
-		vrLen = 767;
-		vrLoc = 11968;
+		vrLen = 766;
+		vrLoc = 20342;
 	};
-	AFAC4E6E0B4C18D400D59661 /* PBXTextBookmark */ = {
+	AF0015990B8A290F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 177";
+		name = "test.cpp: 82";
 		rLen = 0;
-		rLoc = 5134;
+		rLoc = 2828;
 		rType = 0;
-		vrLen = 1062;
-		vrLoc = 1408;
+		vrLen = 1618;
+		vrLoc = 4731;
 	};
-	AFAC4E6F0B4C18D400D59661 /* PBXTextBookmark */ = {
+	AF00159A0B8A290F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		comments = "error: no matching function for call to 'CDirectoryService::BuildStringDataList(<type error>, tDataList*&)'";
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 413;
-		rType = 1;
+		fRef = AF00159B0B8A290F0045DAEE /* DirServicesConst.h */;
+		name = "DirServicesConst.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 740;
+		vrLoc = 4875;
 	};
-	AFAC4E700B4C18D400D59661 /* PBXTextBookmark */ = {
+	AF00159B0B8A290F0045DAEE /* DirServicesConst.h */ = {
+		isa = PBXFileReference;
+		name = DirServicesConst.h;
+		path = /System/Library/Frameworks/DirectoryService.framework/Headers/DirServicesConst.h;
+		sourceTree = "<absolute>";
+	};
+	AF00159C0B8A290F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 177";
+		name = "test.cpp: 82";
 		rLen = 0;
-		rLoc = 5134;
+		rLoc = 2828;
 		rType = 0;
-		vrLen = 1062;
-		vrLoc = 1408;
+		vrLen = 1618;
+		vrLoc = 4731;
 	};
-	AFAC4E710B4C18D400D59661 /* PBXTextBookmark */ = {
+	AF00159D0B8A290F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
+		fRef = AF00159E0B8A290F0045DAEE /* DirServicesConst.h */;
+		name = "DirServicesConst.h: 1";
+		rLen = 0;
+		rLoc = 0;
+		rType = 0;
+		vrLen = 740;
+		vrLoc = 4875;
+	};
+	AF00159E0B8A290F0045DAEE /* DirServicesConst.h */ = {
+		isa = PBXFileReference;
+		name = DirServicesConst.h;
+		path = /System/Library/Frameworks/DirectoryService.framework/Headers/DirServicesConst.h;
+		sourceTree = "<absolute>";
+	};
+	AF00159F0B8A290F0045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1069";
+		name = "CDirectoryService.cpp: 664";
 		rLen = 0;
-		rLoc = 30221;
+		rLoc = 20946;
 		rType = 0;
-		vrLen = 1047;
-		vrLoc = 11877;
+		vrLen = 1156;
+		vrLoc = 19800;
 	};
-	AFAC4E780B4C23EC00D59661 /* PBXTextBookmark */ = {
+	AF0015A00B8A290F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		comments = "error: conversion from 'int' to 'CFStringUtil' is ambiguous";
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		name = "CDirectoryService.cpp: 664";
+		rLen = 0;
+		rLoc = 20946;
+		rType = 0;
+		vrLen = 1900;
+		vrLoc = 19772;
+	};
+	AF0015A10B8A290F0045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 114";
+		rLen = 0;
+		rLoc = 3990;
+		rType = 0;
+		vrLen = 1960;
+		vrLoc = 2740;
+	};
+	AF0015A20B8A290F0045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
+		name = "CDirectoryService.h: 73";
 		rLen = 1;
-		rLoc = 370;
+		rLoc = 2962;
+		rType = 0;
+		vrLen = 2155;
+		vrLoc = 865;
+	};
+	AF0015A30B8A292E0045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		comments = "error: 'cfuser' was not declared in this scope";
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		rLen = 1;
+		rLoc = 681;
 		rType = 1;
 	};
-	AFAC4E790B4C23EC00D59661 /* PBXTextBookmark */ = {
+	AF0015A40B8A292E0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 1069";
+		name = "CDirectoryService.cpp: 670";
 		rLen = 0;
-		rLoc = 30221;
+		rLoc = 21318;
 		rType = 0;
-		vrLen = 1047;
-		vrLoc = 11877;
+		vrLen = 657;
+		vrLoc = 20514;
 	};
-	AFAC4E7A0B4C23EC00D59661 /* PBXTextBookmark */ = {
+	AF0015A70B8A2AF00045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
+		comments = "error:   initializing argument 3 of 'void CFDictionaryGetKeysAndValues(const __CFDictionary*, const void**, const void**)'";
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "return NULL;";
-		rLen = 15;
-		rLoc = 10914;
-		rType = 0;
-		vrLen = 1309;
-		vrLoc = 10178;
+		rLen = 0;
+		rLoc = 679;
+		rType = 1;
 	};
-	AFAC4E7B0B4C246E00D59661 /* PBXTextBookmark */ = {
+	AF0015AD0B8A2B890045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
+		comments = "error: invalid conversion from 'const __CFDictionary**' to 'const void**'";
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 822";
 		rLen = 0;
-		rLoc = 22141;
-		rType = 0;
-		vrLen = 1064;
-		vrLoc = 10347;
+		rLoc = 679;
+		rType = 1;
 	};
-	AFAC4E810B4C259700D59661 /* PBXTextBookmark */ = {
+	AF0015AE0B8A2B890045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 822";
+		name = "CDirectoryService.cpp: 678";
 		rLen = 0;
-		rLoc = 22141;
+		rLoc = 21241;
 		rType = 0;
-		vrLen = 1064;
-		vrLoc = 10347;
+		vrLen = 808;
+		vrLoc = 20661;
 	};
-	AFAC4E820B4C259700D59661 /* PBXTextBookmark */ = {
+	AF0015AF0B8A2B890045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AFAC4E830B4C259700D59661 /* asm _class_isInitialized  0x90863f5e */;
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		name = "CDirectoryService.cpp: 678";
 		rLen = 0;
-		rLoc = 1;
-		rType = 1;
+		rLoc = 21254;
+		rType = 0;
+		vrLen = 1660;
+		vrLoc = 20263;
 	};
-	AFAC4E830B4C259700D59661 /* asm _class_isInitialized  0x90863f5e */ = {
-		isa = PBXFileReference;
-		lastKnownFileType = file;
-		path = "asm _class_isInitialized  0x90863f5e";
-		sourceTree = "<group>";
+	AF0015B00B8A2B890045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 100";
+		rLen = 26;
+		rLoc = 3670;
+		rType = 0;
+		vrLen = 1960;
+		vrLoc = 2740;
 	};
-	AFAC4E840B4C259700D59661 /* PBXTextBookmark */ = {
+	AF0015B10B8A2B890045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
+		fRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */;
+		name = "CDirectoryService.h: 73";
+		rLen = 1;
+		rLoc = 2962;
+		rType = 0;
+		vrLen = 2155;
+		vrLoc = 865;
+	};
+	AF0015B20B8A2C350045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		comments = "error: cannot convert 'const void* (*)[1]' to 'const void**' for argument '3' to 'void CFDictionaryGetKeysAndValues(const __CFDictionary*, const void**, const void**)'";
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 822";
+		rLen = 1;
+		rLoc = 679;
+		rType = 1;
+	};
+	AF0015B30B8A2C350045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		name = "CDirectoryService.cpp: 678";
 		rLen = 0;
-		rLoc = 22141;
+		rLoc = 21254;
 		rType = 0;
-		vrLen = 1064;
-		vrLoc = 10347;
+		vrLen = 426;
+		vrLoc = 21043;
 	};
-	AFAC4E850B4C259700D59661 /* PBXTextBookmark */ = {
+	AF0015B60B8A2C6F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AFAC4E860B4C259700D59661 /* asm _class_isInitialized  0x90863f5e */;
-		name = "(null): 2";
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		name = "CDirectoryService.cpp: 678";
 		rLen = 0;
-		rLoc = 42;
+		rLoc = 21254;
 		rType = 0;
-		vrLen = 168;
-		vrLoc = 0;
+		vrLen = 426;
+		vrLoc = 21043;
 	};
-	AFAC4E860B4C259700D59661 /* asm _class_isInitialized  0x90863f5e */ = {
-		isa = PBXFileReference;
-		path = "asm _class_isInitialized  0x90863f5e";
-		sourceTree = "<group>";
+	AF0015B70B8A2C6F0045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		comments = "error: no matching function for call to 'CDirectoryService::AuthenticateUserBasic(const char*&, const char*&, bool&)'";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		rLen = 1;
+		rLoc = 148;
+		rType = 1;
 	};
-	AFAC4E870B4C25AD00D59661 /* PBXTextBookmark */ = {
+	AF0015B80B8A2C6F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 822";
+		name = "CDirectoryService.cpp: 678";
 		rLen = 0;
-		rLoc = 22141;
+		rLoc = 21254;
 		rType = 0;
-		vrLen = 1267;
-		vrLoc = 10178;
+		vrLen = 426;
+		vrLoc = 21043;
 	};
-	AFAC4E880B4C25AD00D59661 /* PBXTextBookmark */ = {
+	AF0015B90B8A2C6F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
-		name = "FStringUtil(CFSt";
-		rLen = 16;
-		rLoc = 1112;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 149";
+		rLen = 0;
+		rLoc = 6003;
 		rType = 0;
-		vrLen = 633;
-		vrLoc = 736;
+		vrLen = 305;
+		vrLoc = 5732;
 	};
-	AFAC4E890B4C25AD00D59661 /* PBXTextBookmark */ = {
+	AF0015BB0B8A2C790045DAEE /* PBXBookmark */ = {
+		isa = PBXBookmark;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+	};
+	AF0015BC0B8A2C7F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 822";
+		name = "CDirectoryService.cpp: 678";
 		rLen = 0;
-		rLoc = 22141;
+		rLoc = 21241;
 		rType = 0;
-		vrLen = 1267;
-		vrLoc = 10178;
+		vrLen = 808;
+		vrLoc = 20661;
 	};
-	AFAC4E8A0B4C25AD00D59661 /* PBXTextBookmark */ = {
+	AF0015BD0B8A2C7F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
-		name = "CFStringUtil.cpp: 124";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 158";
 		rLen = 0;
-		rLoc = 2726;
+		rLoc = 6414;
 		rType = 0;
-		vrLen = 533;
-		vrLoc = 842;
+		vrLen = 789;
+		vrLoc = 2405;
 	};
-	AFAC4E900B4C267800D59661 /* PBXTextBookmark */ = {
+	AF0015BE0B8A2C7F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
-		name = "CFStringUtil.cpp: 124";
+		fRef = AF0015BF0B8A2C7F0045DAEE /* asm __kill  0x90059554 */;
 		rLen = 0;
-		rLoc = 2726;
-		rType = 0;
-		vrLen = 599;
-		vrLoc = 842;
+		rLoc = 1;
+		rType = 1;
 	};
-	AFAC4E910B4C267800D59661 /* PBXTextBookmark */ = {
+	AF0015BF0B8A2C7F0045DAEE /* asm __kill  0x90059554 */ = {
+		isa = PBXFileReference;
+		lastKnownFileType = file;
+		path = "asm __kill  0x90059554";
+		sourceTree = "<group>";
+	};
+	AF0015C00B8A2C7F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		comments = "error: cannot convert 'CFStringUtil' to 'const __CFString*' in return";
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 391;
-		rType = 1;
+		name = "CDirectoryService.cpp: 678";
+		rLen = 0;
+		rLoc = 21241;
+		rType = 0;
+		vrLen = 808;
+		vrLoc = 20661;
 	};
-	AFAC4E920B4C267800D59661 /* PBXTextBookmark */ = {
+	AF0015C10B8A2C7F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
-		name = "CFStringUtil.cpp: 124";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 158";
 		rLen = 0;
-		rLoc = 2726;
+		rLoc = 6414;
 		rType = 0;
-		vrLen = 599;
-		vrLoc = 842;
+		vrLen = 789;
+		vrLoc = 2405;
 	};
-	AFAC4E930B4C267800D59661 /* PBXTextBookmark */ = {
+	AF0015C20B8A2C7F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "return CFStringUtil(result);";
-		rLen = 32;
-		rLoc = 11575;
+		fRef = AF0015C30B8A2C7F0045DAEE /* asm __kill  0x90059554 */;
+		name = "(null): 2";
+		rLen = 0;
+		rLoc = 51;
 		rType = 0;
-		vrLen = 1069;
-		vrLoc = 10993;
+		vrLen = 333;
+		vrLoc = 0;
 	};
-	AFAC4E980B4C26BC00D59661 /* PBXTextBookmark */ = {
+	AF0015C30B8A2C7F0045DAEE /* asm __kill  0x90059554 */ = {
+		isa = PBXFileReference;
+		path = "asm __kill  0x90059554";
+		sourceTree = "<group>";
+	};
+	AF0015C60B8A2C7F0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 826";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 149";
 		rLen = 0;
-		rLoc = 22175;
+		rLoc = 6003;
 		rType = 0;
-		vrLen = 741;
-		vrLoc = 12242;
+		vrLen = 1939;
+		vrLoc = 2740;
 	};
-	AFAC4E9A0B4C279100D59661 /* PBXTextBookmark */ = {
+	AF0015CD0B8A2D650045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 826";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 149";
 		rLen = 0;
-		rLoc = 22175;
+		rLoc = 6003;
 		rType = 0;
-		vrLen = 1055;
-		vrLoc = 10993;
+		vrLen = 1206;
+		vrLoc = 4944;
 	};
-	AFAC4EB00B4C3E7700D59661 /* PBXTextBookmark */ = {
+	AF0015CE0B8A2D680045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 827";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 149";
 		rLen = 0;
-		rLoc = 22211;
+		rLoc = 6003;
 		rType = 0;
-		vrLen = 939;
-		vrLoc = 10994;
+		vrLen = 1206;
+		vrLoc = 4944;
 	};
-	AFAC4EB40B4C41C300D59661 /* PBXTextBookmark */ = {
+	AF0015CF0B8A2ED80045DAEE /* PBXBookmark */ = {
+		isa = PBXBookmark;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+	};
+	AF0015D00B8A2F490045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 851";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 163";
 		rLen = 0;
-		rLoc = 22653;
+		rLoc = 6414;
 		rType = 0;
-		vrLen = 1010;
-		vrLoc = 10903;
+		vrLen = 848;
+		vrLoc = 2348;
 	};
-	AFAC4EB60B4C41D100D59661 /* PBXTextBookmark */ = {
+	AF0015D30B8A2F490045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 157";
+		rLen = 0;
+		rLoc = 6164;
+		rType = 0;
+		vrLen = 1939;
+		vrLoc = 5076;
+	};
+	AF0015D70B8A2F9B0045DAEE /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 851";
+		name = "CDirectoryService.cpp: 680";
 		rLen = 0;
-		rLoc = 22652;
+		rLoc = 21241;
 		rType = 0;
-		vrLen = 1010;
-		vrLoc = 10902;
+		vrLen = 783;
+		vrLoc = 20647;
 	};
-	AFAC4EB80B4C41E500D59661 /* PBXTextBookmark */ = {
+	AF0015D80B8A2F9B0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		comments = "error: 'RemoveBuffer' was not declared in this scope";
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 801;
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		rLen = 0;
+		rLoc = 80;
 		rType = 1;
 	};
-	AFAC4EB90B4C41E500D59661 /* PBXTextBookmark */ = {
+	AF0015D90B8A2F9B0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 851";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 163";
 		rLen = 0;
-		rLoc = 22671;
+		rLoc = 6414;
 		rType = 0;
-		vrLen = 652;
-		vrLoc = 21167;
+		vrLen = 848;
+		vrLoc = 2348;
 	};
-	AFAC4EBA0B4C41FE00D59661 /* PBXTextBookmark */ = {
+	AF0015DA0B8A2F9B0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		rLen = 1;
-		rLoc = 303;
-		rType = 1;
+		name = "CDirectoryService.cpp: 680";
+		rLen = 0;
+		rLoc = 21241;
+		rType = 0;
+		vrLen = 783;
+		vrLoc = 20647;
 	};
-	AFAC4EBE0B4C431100D59661 /* PBXTextBookmark */ = {
+	AF0015DB0B8A2F9B0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 851";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 81";
 		rLen = 0;
-		rLoc = 22671;
+		rLoc = 2673;
 		rType = 0;
-		vrLen = 1010;
-		vrLoc = 10902;
+		vrLen = 846;
+		vrLoc = 2441;
 	};
-	AFAC4EBF0B4C431100D59661 /* PBXTextBookmark */ = {
+	AF0015DC0B8A2F9B0045DAEE /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		comments = "error: invalid conversion from 'const __CFArray*' to '__CFArray*'";
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		rLen = 1;
-		rLoc = 147;
-		rType = 1;
+		name = "test.cpp: 172";
+		rLen = 0;
+		rLoc = 6607;
+		rType = 0;
+		vrLen = 1881;
+		vrLoc = 5076;
 	};
-	AFAC4EC00B4C431100D59661 /* PBXTextBookmark */ = {
+	AF155A290A501F5C007E1E6E /* PyOpenDirectory */ = {
+		isa = PBXExecutable;
+		activeArgIndex = 2147483647;
+		activeArgIndices = (
+		);
+		argumentStrings = (
+		);
+		autoAttachOnCrash = 1;
+		breakpointsEnabled = 1;
+		configStateDict = {
+		};
+		customDataFormattersEnabled = 1;
+		debuggerPlugin = GDBDebugging;
+		disassemblyDisplayState = 0;
+		dylibVariantSuffix = "";
+		enableDebugStr = 1;
+		environmentEntries = (
+		);
+		executableSystemSymbolLevel = 0;
+		executableUserSymbolLevel = 0;
+		libgmallocEnabled = 0;
+		name = PyOpenDirectory;
+		savedGlobals = {
+		};
+		sourceDirectories = (
+		);
+		variableFormatDictionary = {
+			$cs = 1;
+			$ds = 1;
+			$eax = 1;
+			$ebp = 1;
+			$ebx = 1;
+			$ecx = 1;
+			$edi = 1;
+			$edx = 1;
+			$eflags = 1;
+			$eip = 1;
+			$es = 1;
+			$esi = 1;
+			$esp = 1;
+			$gs = 1;
+			$ss = 1;
+		};
+	};
+	AF155A2D0A501F7B007E1E6E /* Source Control */ = {
+		isa = PBXSourceControlManager;
+		fallbackIsa = XCSourceControlManager;
+		isSCMEnabled = 0;
+		scmConfiguration = {
+		};
+		scmType = "";
+	};
+	AF155A2E0A501F7B007E1E6E /* Code sense */ = {
+		isa = PBXCodeSenseManager;
+		indexTemplatePath = "";
+	};
+	AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1100, 10094}}";
+			sepNavSelRange = "{21241, 0}";
+			sepNavVisRect = "{{0, 5361}, {795, 328}}";
+			sepNavWindowFrame = "{{144, 200}, {1046, 828}}";
+		};
+	};
+	AF155A300A501F84007E1E6E /* CDirectoryService.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {1010, 1064}}";
+			sepNavSelRange = "{2962, 1}";
+			sepNavVisRect = "{{0, 354}, {752, 699}}";
+			sepNavWindowFrame = "{{15, 4}, {811, 828}}";
+		};
+	};
+	AF155A310A501F84007E1E6E /* PythonWrapper.cpp */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {992, 5390}}";
+			sepNavSelRange = "{14121, 0}";
+			sepNavVisRect = "{{0, 2496}, {795, 351}}";
+			sepNavWindowFrame = "{{113, 4}, {811, 828}}";
+		};
+	};
+	AF155AFB0A502C09007E1E6E /* CFStringUtil.h */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {766, 699}}";
+			sepNavSelRange = "{546, 0}";
+			sepNavVisRect = "{{0, 0}, {766, 699}}";
+			sepNavWindowFrame = "{{746, 81}, {811, 828}}";
+		};
+	};
+	AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */ = {
+		uiCtxt = {
+			sepNavIntBoundsRect = "{{0, 0}, {752, 2100}}";
+			sepNavSelRange = "{3114, 0}";
+			sepNavVisRect = "{{0, 1419}, {752, 676}}";
+			sepNavWindowFrame = "{{36, 4}, {811, 1024}}";
+		};
+	};
+	AF8341B60B8A1C5B0055995E /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 851";
-		rLen = 0;
-		rLoc = 22671;
+		name = "CDirectoryService.cpp: 297";
+		rLen = 26;
+		rLoc = 9395;
 		rType = 0;
-		vrLen = 1010;
-		vrLoc = 10902;
+		vrLen = 1547;
+		vrLoc = 8151;
 	};
-	AFAC4EC10B4C431100D59661 /* PBXTextBookmark */ = {
+	AF8341B80B8A1C5B0055995E /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "PrintArray(arrayvalue);";
+		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
+		name = "CDirectoryService.cpp: 297";
 		rLen = 26;
-		rLoc = 4366;
+		rLoc = 9395;
 		rType = 0;
-		vrLen = 1015;
-		vrLoc = 3547;
+		vrLen = 1547;
+		vrLoc = 8151;
 	};
-	AFAC4EC30B4C434200D59661 /* PBXTextBookmark */ = {
+	AF8342200B8A1D340055995E /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 851";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 41";
 		rLen = 0;
-		rLoc = 22671;
+		rLoc = 1482;
 		rType = 0;
-		vrLen = 652;
-		vrLoc = 21167;
+		vrLen = 1288;
+		vrLoc = 1178;
 	};
-	AFAC4EC40B4C434200D59661 /* PBXTextBookmark */ = {
+	AF8342220B8A1D340055995E /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "CDirectoryService.cpp: 851";
+		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
+		name = "test.cpp: 41";
 		rLen = 0;
-		rLoc = 22671;
+		rLoc = 1482;
 		rType = 0;
-		vrLen = 652;
-		vrLoc = 21167;
+		vrLen = 1288;
+		vrLoc = 1178;
 	};
-	AFAC4EC50B4C434200D59661 /* PBXTextBookmark */ = {
+	AF8342270B8A1D8F0055995E /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 204";
+		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
+		name = "PythonWrapper.cpp: 454";
 		rLen = 0;
-		rLoc = 5935;
+		rLoc = 14224;
 		rType = 0;
-		vrLen = 837;
-		vrLoc = 3572;
+		vrLen = 1043;
+		vrLoc = 3687;
 	};
-	AFAC4EC80B4C436E00D59661 /* PBXTextBookmark */ = {
+	AF8342280B8A1D8F0055995E /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
-		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 204";
+		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
+		name = "PythonWrapper.cpp: 454";
 		rLen = 0;
-		rLoc = 5935;
+		rLoc = 14224;
 		rType = 0;
-		vrLen = 832;
-		vrLoc = 3572;
+		vrLen = 1043;
+		vrLoc = 3687;
 	};
-	AFAC4ECB0B4C437900D59661 /* PBXTextBookmark */ = {
+	AF8342300B8A1E170055995E /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 204";
+		name = "test.cpp: 41";
 		rLen = 0;
-		rLoc = 5935;
+		rLoc = 1482;
 		rType = 0;
-		vrLen = 964;
-		vrLoc = 3540;
+		vrLen = 1144;
+		vrLoc = 0;
 	};
-	AFAC4ECC0B4C437900D59661 /* PBXTextBookmark */ = {
+	AF8974940B4AFA6600965268 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
+		fRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */;
+		name = Python/Python.h;
+		rLen = 15;
+		rLoc = 726;
+		rType = 0;
+		vrLen = 1115;
+		vrLoc = 0;
+	};
+	AFAC4E700B4C18D400D59661 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
 		fRef = 08FB7796FE84155DC02AAC07 /* test.cpp */;
-		name = "test.cpp: 204";
+		name = "test.cpp: 177";
 		rLen = 0;
-		rLoc = 5935;
+		rLoc = 5271;
 		rType = 0;
-		vrLen = 964;
-		vrLoc = 3540;
+		vrLen = 1062;
+		vrLoc = 1408;
 	};
-	AFAC4ECD0B4C437900D59661 /* PBXTextBookmark */ = {
+	AFAC4E790B4C23EC00D59661 /* PBXTextBookmark */ = {
 		isa = PBXTextBookmark;
 		fRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */;
-		name = "printf(\"%d\", dsStatus);";
-		rLen = 26;
-		rLoc = 9255;
+		name = "CDirectoryService.cpp: 1069";
+		rLen = 0;
+		rLoc = 30871;
 		rType = 0;
-		vrLen = 814;
-		vrLoc = 8902;
+		vrLen = 1047;
+		vrLoc = 11877;
 	};
+	AFAC4E900B4C267800D59661 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 124";
+		rLen = 0;
+		rLoc = 2726;
+		rType = 0;
+		vrLen = 599;
+		vrLoc = 842;
+	};
+	AFAC4E920B4C267800D59661 /* PBXTextBookmark */ = {
+		isa = PBXTextBookmark;
+		fRef = AF155AFC0A502C09007E1E6E /* CFStringUtil.cpp */;
+		name = "CFStringUtil.cpp: 124";
+		rLen = 0;
+		rLoc = 2726;
+		rType = 0;
+		vrLen = 599;
+		vrLoc = 842;
+	};
 }

Modified: PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/project.pbxproj
===================================================================
--- PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/project.pbxproj	2007-02-19 16:47:33 UTC (rev 1210)
+++ PyOpenDirectory/trunk/support/PyOpenDirectory.xcodeproj/project.pbxproj	2007-02-19 21:37:40 UTC (rev 1211)
@@ -8,9 +8,10 @@
 
 /* Begin PBXBuildFile section */
 		8DD76F650486A84900D96B5E /* test.cpp in Sources */ = {isa = PBXBuildFile; fileRef = 08FB7796FE84155DC02AAC07 /* test.cpp */; settings = {ATTRIBUTES = (); }; };
+		AF00155A0B8A21340045DAEE /* Python.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF0015590B8A21340045DAEE /* Python.framework */; };
+		AF00155E0B8A21FD0045DAEE /* PythonWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */; };
 		AF155A320A501F84007E1E6E /* CDirectoryService.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */; };
 		AF155A330A501F84007E1E6E /* CDirectoryService.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = AF155A300A501F84007E1E6E /* CDirectoryService.h */; };
-		AF155A340A501F84007E1E6E /* PythonWrapper.cpp in Sources */ = {isa = PBXBuildFile; fileRef = AF155A310A501F84007E1E6E /* PythonWrapper.cpp */; };
 		AF155A370A501F9D007E1E6E /* CoreFoundation.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF155A350A501F9D007E1E6E /* CoreFoundation.framework */; };
 		AF155A380A501F9D007E1E6E /* DirectoryService.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = AF155A360A501F9D007E1E6E /* DirectoryService.framework */; };
 		AF155AFD0A502C09007E1E6E /* CFStringUtil.h in CopyFiles */ = {isa = PBXBuildFile; fileRef = AF155AFB0A502C09007E1E6E /* CFStringUtil.h */; };
@@ -34,6 +35,7 @@
 /* Begin PBXFileReference section */
 		08FB7796FE84155DC02AAC07 /* test.cpp */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.cpp; path = test.cpp; sourceTree = "<group>"; };
 		8DD76F6C0486A84900D96B5E /* PyOpenDirectory */ = {isa = PBXFileReference; explicitFileType = "compiled.mach-o.executable"; includeInIndex = 0; path = PyOpenDirectory; sourceTree = BUILT_PRODUCTS_DIR; };
+		AF0015590B8A21340045DAEE /* Python.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Python.framework; path = /System/Library/Frameworks/Python.framework; sourceTree = "<absolute>"; };
 		AF155A2F0A501F84007E1E6E /* CDirectoryService.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = CDirectoryService.cpp; path = ../src/CDirectoryService.cpp; sourceTree = SOURCE_ROOT; };
 		AF155A300A501F84007E1E6E /* CDirectoryService.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = CDirectoryService.h; path = ../src/CDirectoryService.h; sourceTree = SOURCE_ROOT; };
 		AF155A310A501F84007E1E6E /* PythonWrapper.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = PythonWrapper.cpp; path = ../src/PythonWrapper.cpp; sourceTree = SOURCE_ROOT; };
@@ -50,6 +52,7 @@
 			files = (
 				AF155A370A501F9D007E1E6E /* CoreFoundation.framework in Frameworks */,
 				AF155A380A501F9D007E1E6E /* DirectoryService.framework in Frameworks */,
+				AF00155A0B8A21340045DAEE /* Python.framework in Frameworks */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};
@@ -90,6 +93,7 @@
 		AF155A3D0A501FA0007E1E6E /* Frameworks */ = {
 			isa = PBXGroup;
 			children = (
+				AF0015590B8A21340045DAEE /* Python.framework */,
 				AF155A350A501F9D007E1E6E /* CoreFoundation.framework */,
 				AF155A360A501F9D007E1E6E /* DirectoryService.framework */,
 			);
@@ -142,8 +146,8 @@
 			files = (
 				8DD76F650486A84900D96B5E /* test.cpp in Sources */,
 				AF155A320A501F84007E1E6E /* CDirectoryService.cpp in Sources */,
-				AF155A340A501F84007E1E6E /* PythonWrapper.cpp in Sources */,
 				AF155AFE0A502C09007E1E6E /* CFStringUtil.cpp in Sources */,
+				AF00155E0B8A21FD0045DAEE /* PythonWrapper.cpp in Sources */,
 			);
 			runOnlyForDeploymentPostprocessing = 0;
 		};

Modified: PyOpenDirectory/trunk/support/test.cpp
===================================================================
--- PyOpenDirectory/trunk/support/test.cpp	2007-02-19 16:47:33 UTC (rev 1210)
+++ PyOpenDirectory/trunk/support/test.cpp	2007-02-19 21:37:40 UTC (rev 1211)
@@ -33,13 +33,14 @@
 void PrintDictionary(const void* key, const void* value, void* ref);
 void PrintArrayArray(CFMutableArrayRef list);
 void PrintArray(CFArrayRef list);
-void AuthenticateUser(CDirectoryService* dir, const char* user, const char* pswd);
-void AuthenticateUserDigest(CDirectoryService* dir, const char* user, const char* challenge, const char* response, const char* method);
+void AuthenticateUser(CDirectoryService* dir, const char* guid, const char* user, const char* pswd);
+void AuthenticateUserDigest(CDirectoryService* dir, const char* guid, const char* user, const char* challenge, const char* response, const char* method);
 
 int main (int argc, const char * argv[]) {
     
 	CDirectoryService* dir = new CDirectoryService("/Search");
 
+#if 1
 #if 0
 	CFStringRef strings[2];
 	strings[0] = CFSTR(kDS1AttrDistinguishedName);
@@ -75,9 +76,10 @@
 		printf("\nNo Groups returned\n");
 	}
 	CFRelease(array);
+#endif
 
-	AuthenticateUser(dir, "test", "test-no");
-	AuthenticateUser(dir, "test", "test-yes");
+	AuthenticateUser(dir, "gooeyed", "test", "test-no");
+	AuthenticateUser(dir, "gooeyed", "test", "test-yes");
 #elif 0
 	CFStringRef keys[2];
 	keys[0] = CFSTR(kDS1AttrFirstName);
@@ -141,22 +143,32 @@
 	return 0;
 }
 
-void AuthenticateUser(CDirectoryService* dir, const char* user, const char* pswd)
+void AuthenticateUser(CDirectoryService* dir, const char* guid, const char* user, const char* pswd)
 {
 	bool result = false;
-	if (dir->AuthenticateUserBasic(user, pswd, result))
-		printf("Authenticated user: %s\n", user);
+	if (dir->AuthenticateUserBasic(guid, user, pswd, result))
+	{
+		if (result)
+			printf("Authenticated user: %s\n", user);
+		else
+			printf("Not Authenticated user: %s\n", user);
+	}
 	else
-		printf("Not Authenticated user: %s\n", user);
+		printf("Failed authentication user: %s\n", user);
 }
 
-void AuthenticateUserDigest(CDirectoryService* dir, const char* user, const char* challenge, const char* response, const char* method)
+void AuthenticateUserDigest(CDirectoryService* dir, const char* guid, const char* user, const char* challenge, const char* response, const char* method)
 {
 	bool result = false;
-	if (dir->AuthenticateUserDigest(user, challenge, response, method, result))
-		printf("Authenticated user: %s\n", user);
+	if (dir->AuthenticateUserDigest(guid, user, challenge, response, method, result))
+	{
+		if (result)
+			printf("Authenticated user: %s\n", user);
+		else
+			printf("Not Authenticated user: %s\n", user);
+	}
 	else
-		printf("Not Authenticated user: %s\n", user);
+		printf("Failed authentication user: %s\n", user);
 }
 
 void CFDictionaryIterator(const void* key, const void* value, void* ref)

Modified: PyOpenDirectory/trunk/test.py
===================================================================
--- PyOpenDirectory/trunk/test.py	2007-02-19 16:47:33 UTC (rev 1210)
+++ PyOpenDirectory/trunk/test.py	2007-02-19 21:37:40 UTC (rev 1211)
@@ -131,7 +131,7 @@
 		)
 		
 	def authentciateBasic():
-		if opendirectory.authenticateUserBasic(ref, "test", "test"):
+		if opendirectory.authenticateUserBasic(ref, "gooeyed", "test", "test"):
 			print "Authenticated user"
 		else:
 			print "Failed to authenticate user"
@@ -143,7 +143,7 @@
 	#queryUsersCompoundOr()
 	#queryUsersCompoundOrExact()
 	#queryUsersCompoundAnd()
-	#authentciateBasic()
+	authentciateBasic()
 
 	ref = None
 except opendirectory.ODError, ex:

-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.macosforge.org/pipermail/calendarserver-changes/attachments/20070219/1335fc23/attachment.html


More information about the calendarserver-changes mailing list