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

/* Begin PBXBuildFile section */
		03151B301948E756009A27B8 /* AppDelegate.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03151B2F1948E756009A27B8 /* AppDelegate.swift */; };
		03151B321948E756009A27B8 /* MasterViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03151B311948E756009A27B8 /* MasterViewController.swift */; };
		03151B341948E756009A27B8 /* DetailViewController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03151B331948E756009A27B8 /* DetailViewController.swift */; };
		03151B371948E756009A27B8 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 03151B351948E756009A27B8 /* Main.storyboard */; };
		03151B391948E756009A27B8 /* Images.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 03151B381948E756009A27B8 /* Images.xcassets */; };
		03151B451948E757009A27B8 /* SwiftExamplesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03151B441948E757009A27B8 /* SwiftExamplesTests.swift */; };
		03151B531948E7FF009A27B8 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 03151B521948E7FF009A27B8 /* libOCMock.a */; };
		03151B561948E891009A27B8 /* MockTests.m in Sources */ = {isa = PBXBuildFile; fileRef = 03151B551948E891009A27B8 /* MockTests.m */; };
		032E56391948EAE4000CEB43 /* Connection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 032E56371948EAE4000CEB43 /* Connection.swift */; };
		032E563A1948EAE4000CEB43 /* Controller.swift in Sources */ = {isa = PBXBuildFile; fileRef = 032E56381948EAE4000CEB43 /* Controller.swift */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		03151B3F1948E757009A27B8 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 03151B221948E756009A27B8 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 03151B291948E756009A27B8;
			remoteInfo = SwiftExamples;
		};
		03151B4E1948E7E9009A27B8 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 03151B221948E756009A27B8 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 03151B291948E756009A27B8;
			remoteInfo = SwiftExamples;
		};
		03151B501948E7EA009A27B8 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 03151B221948E756009A27B8 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 03151B291948E756009A27B8;
			remoteInfo = SwiftExamples;
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		03151B2A1948E756009A27B8 /* SwiftExamples.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = SwiftExamples.app; sourceTree = BUILT_PRODUCTS_DIR; };
		03151B2E1948E756009A27B8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		03151B2F1948E756009A27B8 /* AppDelegate.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegate.swift; sourceTree = "<group>"; };
		03151B311948E756009A27B8 /* MasterViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MasterViewController.swift; sourceTree = "<group>"; };
		03151B331948E756009A27B8 /* DetailViewController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DetailViewController.swift; sourceTree = "<group>"; };
		03151B361948E756009A27B8 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
		03151B381948E756009A27B8 /* Images.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Images.xcassets; sourceTree = "<group>"; };
		03151B3E1948E757009A27B8 /* SwiftExamplesTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = SwiftExamplesTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
		03151B431948E757009A27B8 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		03151B441948E757009A27B8 /* SwiftExamplesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SwiftExamplesTests.swift; sourceTree = "<group>"; };
		03151B521948E7FF009A27B8 /* libOCMock.a */ = {isa = PBXFileReference; lastKnownFileType = archive.ar; name = libOCMock.a; path = usr/lib/libOCMock.a; sourceTree = "<group>"; };
		03151B541948E890009A27B8 /* SwiftExamplesTests-Bridging-Header.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = "SwiftExamplesTests-Bridging-Header.h"; sourceTree = "<group>"; };
		03151B551948E891009A27B8 /* MockTests.m */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.c.objc; path = MockTests.m; sourceTree = "<group>"; };
		032E56371948EAE4000CEB43 /* Connection.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Connection.swift; path = SwiftExamples/Connection.swift; sourceTree = SOURCE_ROOT; };
		032E56381948EAE4000CEB43 /* Controller.swift */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.swift; name = Controller.swift; path = SwiftExamples/Controller.swift; sourceTree = SOURCE_ROOT; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		03151B271948E756009A27B8 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		03151B3B1948E757009A27B8 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				03151B531948E7FF009A27B8 /* libOCMock.a in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		03151B211948E756009A27B8 = {
			isa = PBXGroup;
			children = (
				03151B521948E7FF009A27B8 /* libOCMock.a */,
				03151B2C1948E756009A27B8 /* SwiftExamples */,
				03151B411948E757009A27B8 /* SwiftExamplesTests */,
				03151B2B1948E756009A27B8 /* Products */,
			);
			sourceTree = "<group>";
		};
		03151B2B1948E756009A27B8 /* Products */ = {
			isa = PBXGroup;
			children = (
				03151B2A1948E756009A27B8 /* SwiftExamples.app */,
				03151B3E1948E757009A27B8 /* SwiftExamplesTests.xctest */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		03151B2C1948E756009A27B8 /* SwiftExamples */ = {
			isa = PBXGroup;
			children = (
				03151B2F1948E756009A27B8 /* AppDelegate.swift */,
				03151B311948E756009A27B8 /* MasterViewController.swift */,
				03151B331948E756009A27B8 /* DetailViewController.swift */,
				03151B351948E756009A27B8 /* Main.storyboard */,
				03151B381948E756009A27B8 /* Images.xcassets */,
				03151B2D1948E756009A27B8 /* Supporting Files */,
			);
			path = SwiftExamples;
			sourceTree = "<group>";
		};
		03151B2D1948E756009A27B8 /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				03151B2E1948E756009A27B8 /* Info.plist */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
		03151B411948E757009A27B8 /* SwiftExamplesTests */ = {
			isa = PBXGroup;
			children = (
				032E56371948EAE4000CEB43 /* Connection.swift */,
				032E56381948EAE4000CEB43 /* Controller.swift */,
				03151B441948E757009A27B8 /* SwiftExamplesTests.swift */,
				03151B551948E891009A27B8 /* MockTests.m */,
				03151B421948E757009A27B8 /* Supporting Files */,
				03151B541948E890009A27B8 /* SwiftExamplesTests-Bridging-Header.h */,
			);
			path = SwiftExamplesTests;
			sourceTree = "<group>";
		};
		03151B421948E757009A27B8 /* Supporting Files */ = {
			isa = PBXGroup;
			children = (
				03151B431948E757009A27B8 /* Info.plist */,
			);
			name = "Supporting Files";
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		03151B291948E756009A27B8 /* SwiftExamples */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 03151B481948E757009A27B8 /* Build configuration list for PBXNativeTarget "SwiftExamples" */;
			buildPhases = (
				03151B261948E756009A27B8 /* Sources */,
				03151B271948E756009A27B8 /* Frameworks */,
				03151B281948E756009A27B8 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = SwiftExamples;
			productName = SwiftExamples;
			productReference = 03151B2A1948E756009A27B8 /* SwiftExamples.app */;
			productType = "com.apple.product-type.application";
		};
		03151B3D1948E757009A27B8 /* SwiftExamplesTests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 03151B4B1948E757009A27B8 /* Build configuration list for PBXNativeTarget "SwiftExamplesTests" */;
			buildPhases = (
				03151B3A1948E757009A27B8 /* Sources */,
				03151B3B1948E757009A27B8 /* Frameworks */,
				03151B3C1948E757009A27B8 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
				03151B401948E757009A27B8 /* PBXTargetDependency */,
				03151B4F1948E7E9009A27B8 /* PBXTargetDependency */,
				03151B511948E7EA009A27B8 /* PBXTargetDependency */,
			);
			name = SwiftExamplesTests;
			productName = SwiftExamplesTests;
			productReference = 03151B3E1948E757009A27B8 /* SwiftExamplesTests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		03151B221948E756009A27B8 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 0600;
				ORGANIZATIONNAME = "Mulle Kybernetik";
				TargetAttributes = {
					03151B291948E756009A27B8 = {
						CreatedOnToolsVersion = 6.0;
					};
					03151B3D1948E757009A27B8 = {
						CreatedOnToolsVersion = 6.0;
						TestTargetID = 03151B291948E756009A27B8;
					};
				};
			};
			buildConfigurationList = 03151B251948E756009A27B8 /* Build configuration list for PBXProject "SwiftExamples" */;
			compatibilityVersion = "Xcode 3.2";
			developmentRegion = English;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 03151B211948E756009A27B8;
			productRefGroup = 03151B2B1948E756009A27B8 /* Products */;
			projectDirPath = "";
			projectRoot = "";
			targets = (
				03151B291948E756009A27B8 /* SwiftExamples */,
				03151B3D1948E757009A27B8 /* SwiftExamplesTests */,
			);
		};
/* End PBXProject section */

/* Begin PBXResourcesBuildPhase section */
		03151B281948E756009A27B8 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				03151B371948E756009A27B8 /* Main.storyboard in Resources */,
				03151B391948E756009A27B8 /* Images.xcassets in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		03151B3C1948E757009A27B8 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		03151B261948E756009A27B8 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				03151B341948E756009A27B8 /* DetailViewController.swift in Sources */,
				03151B321948E756009A27B8 /* MasterViewController.swift in Sources */,
				03151B301948E756009A27B8 /* AppDelegate.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		03151B3A1948E757009A27B8 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				03151B451948E757009A27B8 /* SwiftExamplesTests.swift in Sources */,
				032E56391948EAE4000CEB43 /* Connection.swift in Sources */,
				03151B561948E891009A27B8 /* MockTests.m in Sources */,
				032E563A1948EAE4000CEB43 /* Controller.swift in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		03151B401948E757009A27B8 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 03151B291948E756009A27B8 /* SwiftExamples */;
			targetProxy = 03151B3F1948E757009A27B8 /* PBXContainerItemProxy */;
		};
		03151B4F1948E7E9009A27B8 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 03151B291948E756009A27B8 /* SwiftExamples */;
			targetProxy = 03151B4E1948E7E9009A27B8 /* PBXContainerItemProxy */;
		};
		03151B511948E7EA009A27B8 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 03151B291948E756009A27B8 /* SwiftExamples */;
			targetProxy = 03151B501948E7EA009A27B8 /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin PBXVariantGroup section */
		03151B351948E756009A27B8 /* Main.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				03151B361948E756009A27B8 /* Base */,
			);
			name = Main.storyboard;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		03151B461948E757009A27B8 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				GCC_SYMBOLS_PRIVATE_EXTERN = NO;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				METAL_ENABLE_DEBUG_INFO = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Debug;
		};
		03151B471948E757009A27B8 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++0x";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				"CODE_SIGN_IDENTITY[sdk=iphoneos*]" = "iPhone Developer";
				COPY_PHASE_STRIP = YES;
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu99;
				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
				GCC_WARN_UNDECLARED_SELECTOR = YES;
				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
				GCC_WARN_UNUSED_FUNCTION = YES;
				GCC_WARN_UNUSED_VARIABLE = YES;
				IPHONEOS_DEPLOYMENT_TARGET = 8.0;
				METAL_ENABLE_DEBUG_INFO = NO;
				SDKROOT = iphoneos;
				TARGETED_DEVICE_FAMILY = "1,2";
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		03151B491948E757009A27B8 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
				INFOPLIST_FILE = SwiftExamples/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Debug;
		};
		03151B4A1948E757009A27B8 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				ASSETCATALOG_COMPILER_LAUNCHIMAGE_NAME = LaunchImage;
				INFOPLIST_FILE = SwiftExamples/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks";
				PRODUCT_NAME = "$(TARGET_NAME)";
			};
			name = Release;
		};
		03151B4C1948E757009A27B8 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SwiftExamples.app/SwiftExamples";
				CLANG_ENABLE_MODULES = YES;
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/Developer/Library/Frameworks",
					"$(inherited)",
				);
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				HEADER_SEARCH_PATHS = (
					"$(inherited)",
					"/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
					"$(PROJECT_DIR)/usr/include",
				);
				INFOPLIST_FILE = SwiftExamplesTests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/usr/lib",
				);
				METAL_ENABLE_DEBUG_INFO = YES;
				OTHER_LDFLAGS = (
					"$(inherited)",
					"-framework",
					XCTest,
					"-ObjC",
				);
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_OBJC_BRIDGING_HEADER = "SwiftExamplesTests/SwiftExamplesTests-Bridging-Header.h";
				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
				TEST_HOST = "$(BUNDLE_LOADER)";
			};
			name = Debug;
		};
		03151B4D1948E757009A27B8 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				BUNDLE_LOADER = "$(BUILT_PRODUCTS_DIR)/SwiftExamples.app/SwiftExamples";
				CLANG_ENABLE_MODULES = YES;
				FRAMEWORK_SEARCH_PATHS = (
					"$(SDKROOT)/Developer/Library/Frameworks",
					"$(inherited)",
				);
				HEADER_SEARCH_PATHS = (
					"$(inherited)",
					"/Applications/Xcode6-Beta.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/include",
					"$(PROJECT_DIR)/usr/include",
				);
				INFOPLIST_FILE = SwiftExamplesTests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = "$(inherited) @executable_path/Frameworks @loader_path/Frameworks";
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/usr/lib",
				);
				METAL_ENABLE_DEBUG_INFO = NO;
				OTHER_LDFLAGS = (
					"$(inherited)",
					"-framework",
					XCTest,
					"-ObjC",
				);
				PRODUCT_NAME = "$(TARGET_NAME)";
				SWIFT_OBJC_BRIDGING_HEADER = "SwiftExamplesTests/SwiftExamplesTests-Bridging-Header.h";
				TEST_HOST = "$(BUNDLE_LOADER)";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		03151B251948E756009A27B8 /* Build configuration list for PBXProject "SwiftExamples" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				03151B461948E757009A27B8 /* Debug */,
				03151B471948E757009A27B8 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		03151B481948E757009A27B8 /* Build configuration list for PBXNativeTarget "SwiftExamples" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				03151B491948E757009A27B8 /* Debug */,
				03151B4A1948E757009A27B8 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		03151B4B1948E757009A27B8 /* Build configuration list for PBXNativeTarget "SwiftExamplesTests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				03151B4C1948E757009A27B8 /* Debug */,
				03151B4D1948E757009A27B8 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 03151B221948E756009A27B8 /* Project object */;
}
