// !$*UTF8*$!
{
	archiveVersion = 1;
	classes = {
	};
	objectVersion = 42;
	objects = {

/* Begin PBXBuildFile section */
		8D0C4E8E0486CD37000505A6 /* main.nib in Resources */ = {isa = PBXBuildFile; fileRef = 02345980000FD03B11CA0E72 /* main.nib */; };
		A12649490B8392750091D5AD /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */; };
		A126495E0B83936D0091D5AD /* Info.plist in Resources */ = {isa = PBXBuildFile; fileRef = 8D0C4E960486CD37000505A6 /* Info.plist */; };
		A18D2A340B861B99007D8D2C /* libtbb.dylib in Frameworks */ = {isa = PBXBuildFile; fileRef = A18D2A330B861B99007D8D2C /* libtbb.dylib */; };
		A1A8F41E0B8B4DBE001C55B1 /* AGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */; };
		A1A8F4310B8B4EA8001C55B1 /* Carbon.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */; };
		A1D44D9A0B861E8A0006E401 /* libtbb.dylib in CopyFiles */ = {isa = PBXBuildFile; fileRef = A18D2A330B861B99007D8D2C /* libtbb.dylib */; };
		A1E3E7BD0B3AD4EC007C3AB5 /* OpenGL.framework in Frameworks */ = {isa = PBXBuildFile; fileRef = A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */; };
		A1F591A90B8DFC7100073279 /* SeismicSimulation.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F591A80B8DFC7100073279 /* SeismicSimulation.cpp */; };
		A1F591AC0B8DFC9600073279 /* macvideo.cpp in Sources */ = {isa = PBXBuildFile; fileRef = A1F591AA0B8DFC9600073279 /* macvideo.cpp */; };
/* End PBXBuildFile section */

/* Begin PBXCopyFilesBuildPhase section */
		A18D2A370B861BB7007D8D2C /* CopyFiles */ = {
			isa = PBXCopyFilesBuildPhase;
			buildActionMask = 2147483647;
			dstPath = "";
			dstSubfolderSpec = 16;
			files = (
				A1D44D9A0B861E8A0006E401 /* libtbb.dylib in CopyFiles */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXCopyFilesBuildPhase section */

/* Begin PBXFileReference section */
		1870340FFE93FCAF11CA0CD7 /* English */ = {isa = PBXFileReference; lastKnownFileType = wrapper.nib; name = English; path = English.lproj/main.nib; sourceTree = "<group>"; };
		32DBCF6D0370B57F00C91783 /* SeismicSimulation.pch */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; path = SeismicSimulation.pch; sourceTree = "<group>"; };
		8D0C4E960486CD37000505A6 /* Info.plist */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
		8D0C4E970486CD37000505A6 /* SeismicSimulation.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SeismicSimulation.app; sourceTree = BUILT_PRODUCTS_DIR; };
		A18D2A330B861B99007D8D2C /* libtbb.dylib */ = {isa = PBXFileReference; lastKnownFileType = "compiled.mach-o.dylib"; name = libtbb.dylib; path = /Library/Frameworks/TBB.framework/Libraries/libtbb.dylib; sourceTree = "<absolute>"; };
		A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = AGL.framework; path = /System/Library/Frameworks/AGL.framework; sourceTree = "<absolute>"; };
		A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = Carbon.framework; path = /System/Library/Frameworks/Carbon.framework; sourceTree = "<absolute>"; };
		A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = OpenGL.framework; path = /System/Library/Frameworks/OpenGL.framework; sourceTree = "<absolute>"; };
		A1F591A80B8DFC7100073279 /* SeismicSimulation.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = SeismicSimulation.cpp; path = ../SeismicSimulation.cpp; sourceTree = SOURCE_ROOT; };
		A1F591AA0B8DFC9600073279 /* macvideo.cpp */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.cpp.cpp; name = macvideo.cpp; path = ../../../common/gui/macvideo.cpp; sourceTree = SOURCE_ROOT; };
		A1F591AB0B8DFC9600073279 /* video.h */ = {isa = PBXFileReference; fileEncoding = 30; lastKnownFileType = sourcecode.c.h; name = video.h; path = ../../../common/gui/video.h; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		8D0C4E910486CD37000505A6 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				A1E3E7BD0B3AD4EC007C3AB5 /* OpenGL.framework in Frameworks */,
				A12649490B8392750091D5AD /* OpenGL.framework in Frameworks */,
				A18D2A340B861B99007D8D2C /* libtbb.dylib in Frameworks */,
				A1A8F41E0B8B4DBE001C55B1 /* AGL.framework in Frameworks */,
				A1A8F4310B8B4EA8001C55B1 /* Carbon.framework in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		195DF8CFFE9D517E11CA2CBB /* Products */ = {
			isa = PBXGroup;
			children = (
				8D0C4E970486CD37000505A6 /* SeismicSimulation.app */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		20286C29FDCF999611CA2CEA /* SeismicSimulation */ = {
			isa = PBXGroup;
			children = (
				20286C2AFDCF999611CA2CEA /* Sources */,
				20286C2CFDCF999611CA2CEA /* Resources */,
				20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */,
				195DF8CFFE9D517E11CA2CBB /* Products */,
			);
			name = SeismicSimulation;
			sourceTree = "<group>";
		};
		20286C2AFDCF999611CA2CEA /* Sources */ = {
			isa = PBXGroup;
			children = (
				A1F591A80B8DFC7100073279 /* SeismicSimulation.cpp */,
				A1F591AA0B8DFC9600073279 /* macvideo.cpp */,
				A1F591AB0B8DFC9600073279 /* video.h */,
				32DBCF6D0370B57F00C91783 /* SeismicSimulation.pch */,
			);
			name = Sources;
			sourceTree = "<group>";
		};
		20286C2CFDCF999611CA2CEA /* Resources */ = {
			isa = PBXGroup;
			children = (
				8D0C4E960486CD37000505A6 /* Info.plist */,
				02345980000FD03B11CA0E72 /* main.nib */,
			);
			name = Resources;
			sourceTree = "<group>";
		};
		20286C32FDCF999611CA2CEA /* External Frameworks and Libraries */ = {
			isa = PBXGroup;
			children = (
				A18D2A330B861B99007D8D2C /* libtbb.dylib */,
				A1A8F4300B8B4EA8001C55B1 /* Carbon.framework */,
				A1A8F41D0B8B4DBE001C55B1 /* AGL.framework */,
				A1E3E7BC0B3AD4EC007C3AB5 /* OpenGL.framework */,
			);
			name = "External Frameworks and Libraries";
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		8D0C4E890486CD37000505A6 /* SeismicSimulation */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "SeismicSimulation" */;
			buildPhases = (
				8D0C4E8C0486CD37000505A6 /* Resources */,
				8D0C4E8F0486CD37000505A6 /* Sources */,
				8D0C4E910486CD37000505A6 /* Frameworks */,
				A18D2A370B861BB7007D8D2C /* CopyFiles */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = SeismicSimulation;
			productInstallPath = "$(HOME)/Applications";
			productName = SeismicSimulation;
			productReference = 8D0C4E970486CD37000505A6 /* SeismicSimulation.app */;
			productType = "com.apple.product-type.application";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		20286C28FDCF999611CA2CEA /* Project object */ = {
			isa = PBXProject;
			buildConfigurationList = C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "SeismicSimulation" */;
			compatibilityVersion = "Xcode 2.4";
			hasScannedForEncodings = 1;
			mainGroup = 20286C29FDCF999611CA2CEA /* SeismicSimulation */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				8D0C4E890486CD37000505A6 /* SeismicSimulation */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		8D0C4E8C0486CD37000505A6 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				8D0C4E8E0486CD37000505A6 /* main.nib in Resources */,
				A126495E0B83936D0091D5AD /* Info.plist in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		8D0C4E8F0486CD37000505A6 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				A1F591A90B8DFC7100073279 /* SeismicSimulation.cpp in Sources */,
				A1F591AC0B8DFC9600073279 /* macvideo.cpp in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXVariantGroup section */
		02345980000FD03B11CA0E72 /* main.nib */ = {
			isa = PBXVariantGroup;
			children = (
				1870340FFE93FCAF11CA0CD7 /* English */,
			);
			name = main.nib;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		C0E91AC608A95435008D54AB /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				COPY_PHASE_STRIP = NO;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_ENABLE_FIX_AND_CONTINUE = YES;
				GCC_MODEL_TUNING = "";
				GCC_OPTIMIZATION_LEVEL = 0;
				INSTALL_PATH = "$(HOME)/Applications";
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
				);
				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
				PRODUCT_NAME = SeismicSimulation;
				GCC_VERSION = 4.0;
			};
			name = Debug;
		};
		C0E91AC708A95435008D54AB /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				GCC_GENERATE_DEBUGGING_SYMBOLS = NO;
				GCC_MODEL_TUNING = "";
				INSTALL_PATH = "$(HOME)/Applications";
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"$(LIBRARY_SEARCH_PATHS_QUOTED_1)",
				);
				LIBRARY_SEARCH_PATHS_QUOTED_1 = "\"$(LOCAL_LIBRARY_DIR)/Frameworks/TBB.framework/Libraries\"";
				PRODUCT_NAME = SeismicSimulation;
				GCC_VERSION = 4.0;
			};
			name = Release;
		};
		C0E91ACA08A95435008D54AB /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ARCHS = i386;
				GCC_AUTO_VECTORIZATION = YES;
				GCC_ENABLE_CPP_RTTI = YES;
				GCC_ENABLE_SSE3_EXTENSIONS = YES;
				GCC_MODEL_TUNING = "";
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
				MACH_O_TYPE = mh_execute;
				PREBINDING = NO;
				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
				GCC_VERSION = 4.0;
				SYMROOT = "/tmp/tbb-$(USER)";
			};
			name = Debug;
		};
		C0E91ACB08A95435008D54AB /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ARCHS = i386;
				GCC_AUTO_VECTORIZATION = YES;
				GCC_ENABLE_CPP_RTTI = YES;
				GCC_ENABLE_SSE3_EXTENSIONS = YES;
				GCC_MODEL_TUNING = "";
				GCC_OPTIMIZATION_LEVEL = 3;
				GCC_WARN_ABOUT_DEPRECATED_FUNCTIONS = NO;
				MACH_O_TYPE = mh_execute;
				PREBINDING = NO;
				PRECOMPS_INCLUDE_HEADERS_FROM_BUILT_PRODUCTS_DIR = NO;
				GCC_VERSION = 4.0;
				SYMROOT = "/tmp/tbb-$(USER)";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		C0E91AC508A95435008D54AB /* Build configuration list for PBXNativeTarget "SeismicSimulation" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				C0E91AC608A95435008D54AB /* Debug */,
				C0E91AC708A95435008D54AB /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		C0E91AC908A95435008D54AB /* Build configuration list for PBXProject "SeismicSimulation" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				C0E91ACA08A95435008D54AB /* Debug */,
				C0E91ACB08A95435008D54AB /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 20286C28FDCF999611CA2CEA /* Project object */;
}
