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

/* Begin PBXBuildFile section */
		0D17A5C022D78FCD0057279F /* FlutterViewControllerTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D17A5BF22D78FCD0057279F /* FlutterViewControllerTest.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
		0D1CE5D8233430F400E5D880 /* FlutterChannelsTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D1CE5D7233430F400E5D880 /* FlutterChannelsTest.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
		0D4C3FB022DF9F5300A67C70 /* FlutterPluginAppLifeCycleDelegateTest.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D4C3FAF22DF9F5300A67C70 /* FlutterPluginAppLifeCycleDelegateTest.m */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
		0D52D3BD22C566D50011DEBD /* FlutterBinaryMessengerRelayTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0D52D3B622C566D50011DEBD /* FlutterBinaryMessengerRelayTest.mm */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
		0D6AB6B622BB05E100EEE540 /* AppDelegate.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D6AB6B522BB05E100EEE540 /* AppDelegate.m */; };
		0D6AB6B922BB05E100EEE540 /* ViewController.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D6AB6B822BB05E100EEE540 /* ViewController.m */; };
		0D6AB6BC22BB05E100EEE540 /* Main.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0D6AB6BA22BB05E100EEE540 /* Main.storyboard */; };
		0D6AB6BE22BB05E200EEE540 /* Assets.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0D6AB6BD22BB05E200EEE540 /* Assets.xcassets */; };
		0D6AB6C122BB05E200EEE540 /* LaunchScreen.storyboard in Resources */ = {isa = PBXBuildFile; fileRef = 0D6AB6BF22BB05E200EEE540 /* LaunchScreen.storyboard */; };
		0D6AB6C422BB05E200EEE540 /* main.m in Sources */ = {isa = PBXBuildFile; fileRef = 0D6AB6C322BB05E200EEE540 /* main.m */; };
		0D6AB6EB22BB40E700EEE540 /* FlutterEngineTest.mm in Sources */ = {isa = PBXBuildFile; fileRef = 0D6AB6E722BB40CF00EEE540 /* FlutterEngineTest.mm */; settings = {COMPILER_FLAGS = "-fobjc-arc"; }; };
		0D6AB72C22BC339F00EEE540 /* libOCMock.a in Frameworks */ = {isa = PBXBuildFile; fileRef = 0D6AB72522BC336100EEE540 /* libOCMock.a */; };
		0D6AB73F22BD8F0200EEE540 /* FlutterEngineConfig.xcconfig in Resources */ = {isa = PBXBuildFile; fileRef = 0D6AB73E22BD8F0200EEE540 /* FlutterEngineConfig.xcconfig */; };
/* End PBXBuildFile section */

/* Begin PBXContainerItemProxy section */
		0D6AB6CA22BB05E200EEE540 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 0D6AB6A922BB05E100EEE540 /* Project object */;
			proxyType = 1;
			remoteGlobalIDString = 0D6AB6B022BB05E100EEE540;
			remoteInfo = IosUnitTests;
		};
		0D6AB72022BC336100EEE540 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 0D6AB71722BC336100EEE540 /* OCMock.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 030EF0A814632FD000B04273;
			remoteInfo = OCMock;
		};
		0D6AB72222BC336100EEE540 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 0D6AB71722BC336100EEE540 /* OCMock.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 03565A3118F0566E003AE91E;
			remoteInfo = OCMockTests;
		};
		0D6AB72422BC336100EEE540 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 0D6AB71722BC336100EEE540 /* OCMock.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 030EF0DC14632FF700B04273;
			remoteInfo = OCMockLib;
		};
		0D6AB72622BC336100EEE540 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 0D6AB71722BC336100EEE540 /* OCMock.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = D31108AD1828DB8700737925;
			remoteInfo = OCMockLibTests;
		};
		0D6AB72822BC336100EEE540 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 0D6AB71722BC336100EEE540 /* OCMock.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = F0B950F11B0080BE00942C38;
			remoteInfo = "OCMock iOS";
		};
		0D6AB72A22BC336100EEE540 /* PBXContainerItemProxy */ = {
			isa = PBXContainerItemProxy;
			containerPortal = 0D6AB71722BC336100EEE540 /* OCMock.xcodeproj */;
			proxyType = 2;
			remoteGlobalIDString = 817EB1621BD765130047E85A;
			remoteInfo = "OCMock tvOS";
		};
/* End PBXContainerItemProxy section */

/* Begin PBXFileReference section */
		0D17A5BF22D78FCD0057279F /* FlutterViewControllerTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FlutterViewControllerTest.m; sourceTree = "<group>"; };
		0D1CE5D7233430F400E5D880 /* FlutterChannelsTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FlutterChannelsTest.m; sourceTree = "<group>"; };
		0D4C3FAF22DF9F5300A67C70 /* FlutterPluginAppLifeCycleDelegateTest.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = FlutterPluginAppLifeCycleDelegateTest.m; sourceTree = "<group>"; };
		0D52D3B622C566D50011DEBD /* FlutterBinaryMessengerRelayTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FlutterBinaryMessengerRelayTest.mm; sourceTree = "<group>"; };
		0D6AB6B122BB05E100EEE540 /* IosUnitTests.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = IosUnitTests.app; sourceTree = BUILT_PRODUCTS_DIR; };
		0D6AB6B422BB05E100EEE540 /* AppDelegate.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = AppDelegate.h; sourceTree = "<group>"; };
		0D6AB6B522BB05E100EEE540 /* AppDelegate.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = AppDelegate.m; sourceTree = "<group>"; };
		0D6AB6B722BB05E100EEE540 /* ViewController.h */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.h; path = ViewController.h; sourceTree = "<group>"; };
		0D6AB6B822BB05E100EEE540 /* ViewController.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = ViewController.m; sourceTree = "<group>"; };
		0D6AB6BB22BB05E100EEE540 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/Main.storyboard; sourceTree = "<group>"; };
		0D6AB6BD22BB05E200EEE540 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Assets.xcassets; sourceTree = "<group>"; };
		0D6AB6C022BB05E200EEE540 /* Base */ = {isa = PBXFileReference; lastKnownFileType = file.storyboard; name = Base; path = Base.lproj/LaunchScreen.storyboard; sourceTree = "<group>"; };
		0D6AB6C222BB05E200EEE540 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		0D6AB6C322BB05E200EEE540 /* main.m */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.c.objc; path = main.m; sourceTree = "<group>"; };
		0D6AB6C922BB05E200EEE540 /* IosUnitTestsTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = IosUnitTestsTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
		0D6AB6CF22BB05E200EEE540 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
		0D6AB6E722BB40CF00EEE540 /* FlutterEngineTest.mm */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.cpp.objcpp; path = FlutterEngineTest.mm; sourceTree = "<group>"; };
		0D6AB71722BC336100EEE540 /* OCMock.xcodeproj */ = {isa = PBXFileReference; lastKnownFileType = "wrapper.pb-project"; name = OCMock.xcodeproj; path = ../../../../../third_party/ocmock/Source/OCMock.xcodeproj; sourceTree = "<group>"; };
		0D6AB73E22BD8F0200EEE540 /* FlutterEngineConfig.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = FlutterEngineConfig.xcconfig; sourceTree = "<group>"; };
/* End PBXFileReference section */

/* Begin PBXFrameworksBuildPhase section */
		0D6AB6AE22BB05E100EEE540 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		0D6AB6C622BB05E200EEE540 /* Frameworks */ = {
			isa = PBXFrameworksBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D6AB72C22BC339F00EEE540 /* libOCMock.a in Frameworks */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXFrameworksBuildPhase section */

/* Begin PBXGroup section */
		0D1CE5D62334309900E5D880 /* Source-Common */ = {
			isa = PBXGroup;
			children = (
				0D1CE5D7233430F400E5D880 /* FlutterChannelsTest.m */,
			);
			name = "Source-Common";
			path = ../../../../shell/platform/darwin/common/framework/Source;
			sourceTree = "<group>";
		};
		0D6AB6A822BB05E100EEE540 = {
			isa = PBXGroup;
			children = (
				0D6AB6B322BB05E100EEE540 /* App */,
				0D6AB6CC22BB05E200EEE540 /* Tests */,
				0D6AB6B222BB05E100EEE540 /* Products */,
				0D6AB6FC22BC1BC300EEE540 /* Frameworks */,
			);
			sourceTree = "<group>";
		};
		0D6AB6B222BB05E100EEE540 /* Products */ = {
			isa = PBXGroup;
			children = (
				0D6AB6B122BB05E100EEE540 /* IosUnitTests.app */,
				0D6AB6C922BB05E200EEE540 /* IosUnitTestsTests.xctest */,
			);
			name = Products;
			sourceTree = "<group>";
		};
		0D6AB6B322BB05E100EEE540 /* App */ = {
			isa = PBXGroup;
			children = (
				0D6AB6B422BB05E100EEE540 /* AppDelegate.h */,
				0D6AB6B522BB05E100EEE540 /* AppDelegate.m */,
				0D6AB6B722BB05E100EEE540 /* ViewController.h */,
				0D6AB6B822BB05E100EEE540 /* ViewController.m */,
				0D6AB6BA22BB05E100EEE540 /* Main.storyboard */,
				0D6AB6BD22BB05E200EEE540 /* Assets.xcassets */,
				0D6AB6BF22BB05E200EEE540 /* LaunchScreen.storyboard */,
				0D6AB6C222BB05E200EEE540 /* Info.plist */,
				0D6AB6C322BB05E200EEE540 /* main.m */,
			);
			path = App;
			sourceTree = "<group>";
		};
		0D6AB6CC22BB05E200EEE540 /* Tests */ = {
			isa = PBXGroup;
			children = (
				0D1CE5D62334309900E5D880 /* Source-Common */,
				0D6AB71722BC336100EEE540 /* OCMock.xcodeproj */,
				0D6AB6E622BB409F00EEE540 /* Source */,
				0D6AB6CF22BB05E200EEE540 /* Info.plist */,
				0D6AB73E22BD8F0200EEE540 /* FlutterEngineConfig.xcconfig */,
			);
			path = Tests;
			sourceTree = "<group>";
		};
		0D6AB6E622BB409F00EEE540 /* Source */ = {
			isa = PBXGroup;
			children = (
				0D52D3B622C566D50011DEBD /* FlutterBinaryMessengerRelayTest.mm */,
				0D6AB6E722BB40CF00EEE540 /* FlutterEngineTest.mm */,
				0D17A5BF22D78FCD0057279F /* FlutterViewControllerTest.m */,
				0D4C3FAF22DF9F5300A67C70 /* FlutterPluginAppLifeCycleDelegateTest.m */,
			);
			name = Source;
			path = ../../../../shell/platform/darwin/ios/framework/Source;
			sourceTree = "<group>";
		};
		0D6AB6FC22BC1BC300EEE540 /* Frameworks */ = {
			isa = PBXGroup;
			children = (
			);
			name = Frameworks;
			sourceTree = "<group>";
		};
		0D6AB71822BC336100EEE540 /* Products */ = {
			isa = PBXGroup;
			children = (
				0D6AB72122BC336100EEE540 /* OCMock.framework */,
				0D6AB72322BC336100EEE540 /* OCMockTests.xctest */,
				0D6AB72522BC336100EEE540 /* libOCMock.a */,
				0D6AB72722BC336100EEE540 /* OCMockLibTests.xctest */,
				0D6AB72922BC336100EEE540 /* OCMock.framework */,
				0D6AB72B22BC336100EEE540 /* OCMock.framework */,
			);
			name = Products;
			sourceTree = "<group>";
		};
/* End PBXGroup section */

/* Begin PBXNativeTarget section */
		0D6AB6B022BB05E100EEE540 /* IosUnitTests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 0D6AB6D222BB05E200EEE540 /* Build configuration list for PBXNativeTarget "IosUnitTests" */;
			buildPhases = (
				0D6AB6AD22BB05E100EEE540 /* Sources */,
				0D6AB6AE22BB05E100EEE540 /* Frameworks */,
				0D6AB6AF22BB05E100EEE540 /* Resources */,
			);
			buildRules = (
			);
			dependencies = (
			);
			name = IosUnitTests;
			productName = IosUnitTests;
			productReference = 0D6AB6B122BB05E100EEE540 /* IosUnitTests.app */;
			productType = "com.apple.product-type.application";
		};
		0D6AB6C822BB05E200EEE540 /* IosUnitTestsTests */ = {
			isa = PBXNativeTarget;
			buildConfigurationList = 0D6AB6D522BB05E200EEE540 /* Build configuration list for PBXNativeTarget "IosUnitTestsTests" */;
			buildPhases = (
				0D6AB6C522BB05E200EEE540 /* Sources */,
				0D6AB6C622BB05E200EEE540 /* Frameworks */,
				0D6AB6C722BB05E200EEE540 /* Resources */,
				0D6AB6E122BB122F00EEE540 /* ShellScript */,
			);
			buildRules = (
			);
			dependencies = (
				0D6AB6CB22BB05E200EEE540 /* PBXTargetDependency */,
			);
			name = IosUnitTestsTests;
			productName = IosUnitTestsTests;
			productReference = 0D6AB6C922BB05E200EEE540 /* IosUnitTestsTests.xctest */;
			productType = "com.apple.product-type.bundle.unit-test";
		};
/* End PBXNativeTarget section */

/* Begin PBXProject section */
		0D6AB6A922BB05E100EEE540 /* Project object */ = {
			isa = PBXProject;
			attributes = {
				LastUpgradeCheck = 1020;
				ORGANIZATIONNAME = "Aaron Clarke";
				TargetAttributes = {
					0D6AB6B022BB05E100EEE540 = {
						CreatedOnToolsVersion = 10.2.1;
					};
					0D6AB6C822BB05E200EEE540 = {
						CreatedOnToolsVersion = 10.2.1;
						TestTargetID = 0D6AB6B022BB05E100EEE540;
					};
				};
			};
			buildConfigurationList = 0D6AB6AC22BB05E100EEE540 /* Build configuration list for PBXProject "IosUnitTests" */;
			compatibilityVersion = "Xcode 9.3";
			developmentRegion = en;
			hasScannedForEncodings = 0;
			knownRegions = (
				en,
				Base,
			);
			mainGroup = 0D6AB6A822BB05E100EEE540;
			productRefGroup = 0D6AB6B222BB05E100EEE540 /* Products */;
			projectDirPath = "";
			projectReferences = (
				{
					ProductGroup = 0D6AB71822BC336100EEE540 /* Products */;
					ProjectRef = 0D6AB71722BC336100EEE540 /* OCMock.xcodeproj */;
				},
			);
			projectRoot = "";
			targets = (
				0D6AB6B022BB05E100EEE540 /* IosUnitTests */,
				0D6AB6C822BB05E200EEE540 /* IosUnitTestsTests */,
			);
		};
/* End PBXProject section */

/* Begin PBXReferenceProxy section */
		0D6AB72122BC336100EEE540 /* OCMock.framework */ = {
			isa = PBXReferenceProxy;
			fileType = wrapper.framework;
			path = OCMock.framework;
			remoteRef = 0D6AB72022BC336100EEE540 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		0D6AB72322BC336100EEE540 /* OCMockTests.xctest */ = {
			isa = PBXReferenceProxy;
			fileType = wrapper.cfbundle;
			path = OCMockTests.xctest;
			remoteRef = 0D6AB72222BC336100EEE540 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		0D6AB72522BC336100EEE540 /* libOCMock.a */ = {
			isa = PBXReferenceProxy;
			fileType = archive.ar;
			path = libOCMock.a;
			remoteRef = 0D6AB72422BC336100EEE540 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		0D6AB72722BC336100EEE540 /* OCMockLibTests.xctest */ = {
			isa = PBXReferenceProxy;
			fileType = wrapper.cfbundle;
			path = OCMockLibTests.xctest;
			remoteRef = 0D6AB72622BC336100EEE540 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		0D6AB72922BC336100EEE540 /* OCMock.framework */ = {
			isa = PBXReferenceProxy;
			fileType = wrapper.framework;
			path = OCMock.framework;
			remoteRef = 0D6AB72822BC336100EEE540 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
		0D6AB72B22BC336100EEE540 /* OCMock.framework */ = {
			isa = PBXReferenceProxy;
			fileType = wrapper.framework;
			path = OCMock.framework;
			remoteRef = 0D6AB72A22BC336100EEE540 /* PBXContainerItemProxy */;
			sourceTree = BUILT_PRODUCTS_DIR;
		};
/* End PBXReferenceProxy section */

/* Begin PBXResourcesBuildPhase section */
		0D6AB6AF22BB05E100EEE540 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D6AB6C122BB05E200EEE540 /* LaunchScreen.storyboard in Resources */,
				0D6AB6BE22BB05E200EEE540 /* Assets.xcassets in Resources */,
				0D6AB6BC22BB05E100EEE540 /* Main.storyboard in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		0D6AB6C722BB05E200EEE540 /* Resources */ = {
			isa = PBXResourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D6AB73F22BD8F0200EEE540 /* FlutterEngineConfig.xcconfig in Resources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXResourcesBuildPhase section */

/* Begin PBXShellScriptBuildPhase section */
		0D6AB6E122BB122F00EEE540 /* ShellScript */ = {
			isa = PBXShellScriptBuildPhase;
			buildActionMask = 2147483647;
			files = (
			);
			inputFileListPaths = (
			);
			inputPaths = (
			);
			outputFileListPaths = (
			);
			outputPaths = (
			);
			runOnlyForDeploymentPostprocessing = 0;
			shellPath = "/bin/sh -x";
			shellScript = "TARGET_FRAMEWORKS_PATH=\"$TARGET_BUILD_DIR/../Frameworks\"\nFRAMEWORK_PATH=$PROJECT_DIR/../../../../out/$FLUTTER_ENGINE/Flutter.framework\nrsync -avzh \"$FRAMEWORK_PATH\" \"$TARGET_FRAMEWORKS_PATH\"\n";
		};
/* End PBXShellScriptBuildPhase section */

/* Begin PBXSourcesBuildPhase section */
		0D6AB6AD22BB05E100EEE540 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D6AB6B922BB05E100EEE540 /* ViewController.m in Sources */,
				0D6AB6C422BB05E200EEE540 /* main.m in Sources */,
				0D6AB6B622BB05E100EEE540 /* AppDelegate.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
		0D6AB6C522BB05E200EEE540 /* Sources */ = {
			isa = PBXSourcesBuildPhase;
			buildActionMask = 2147483647;
			files = (
				0D6AB6EB22BB40E700EEE540 /* FlutterEngineTest.mm in Sources */,
				0D17A5C022D78FCD0057279F /* FlutterViewControllerTest.m in Sources */,
				0D1CE5D8233430F400E5D880 /* FlutterChannelsTest.m in Sources */,
				0D52D3BD22C566D50011DEBD /* FlutterBinaryMessengerRelayTest.mm in Sources */,
				0D4C3FB022DF9F5300A67C70 /* FlutterPluginAppLifeCycleDelegateTest.m in Sources */,
			);
			runOnlyForDeploymentPostprocessing = 0;
		};
/* End PBXSourcesBuildPhase section */

/* Begin PBXTargetDependency section */
		0D6AB6CB22BB05E200EEE540 /* PBXTargetDependency */ = {
			isa = PBXTargetDependency;
			target = 0D6AB6B022BB05E100EEE540 /* IosUnitTests */;
			targetProxy = 0D6AB6CA22BB05E200EEE540 /* PBXContainerItemProxy */;
		};
/* End PBXTargetDependency section */

/* Begin PBXVariantGroup section */
		0D6AB6BA22BB05E100EEE540 /* Main.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				0D6AB6BB22BB05E100EEE540 /* Base */,
			);
			name = Main.storyboard;
			sourceTree = "<group>";
		};
		0D6AB6BF22BB05E200EEE540 /* LaunchScreen.storyboard */ = {
			isa = PBXVariantGroup;
			children = (
				0D6AB6C022BB05E200EEE540 /* Base */,
			);
			name = LaunchScreen.storyboard;
			sourceTree = "<group>";
		};
/* End PBXVariantGroup section */

/* Begin XCBuildConfiguration section */
		0D6AB6D022BB05E200EEE540 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = dwarf;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				ENABLE_TESTABILITY = YES;
				GCC_C_LANGUAGE_STANDARD = gnu11;
				GCC_DYNAMIC_NO_PIC = NO;
				GCC_NO_COMMON_BLOCKS = YES;
				GCC_OPTIMIZATION_LEVEL = 0;
				GCC_PREPROCESSOR_DEFINITIONS = (
					"DEBUG=1",
					"$(inherited)",
				);
				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 = 12.2;
				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
				MTL_FAST_MATH = YES;
				ONLY_ACTIVE_ARCH = YES;
				SDKROOT = iphoneos;
			};
			name = Debug;
		};
		0D6AB6D122BB05E200EEE540 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ALWAYS_SEARCH_USER_PATHS = NO;
				CLANG_ANALYZER_NONNULL = YES;
				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
				CLANG_CXX_LIBRARY = "libc++";
				CLANG_ENABLE_MODULES = YES;
				CLANG_ENABLE_OBJC_ARC = YES;
				CLANG_ENABLE_OBJC_WEAK = YES;
				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
				CLANG_WARN_BOOL_CONVERSION = YES;
				CLANG_WARN_COMMA = YES;
				CLANG_WARN_CONSTANT_CONVERSION = YES;
				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
				CLANG_WARN_EMPTY_BODY = YES;
				CLANG_WARN_ENUM_CONVERSION = YES;
				CLANG_WARN_INFINITE_RECURSION = YES;
				CLANG_WARN_INT_CONVERSION = YES;
				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
				CLANG_WARN_STRICT_PROTOTYPES = YES;
				CLANG_WARN_SUSPICIOUS_MOVE = YES;
				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
				CLANG_WARN_UNREACHABLE_CODE = YES;
				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
				CODE_SIGN_IDENTITY = "iPhone Developer";
				COPY_PHASE_STRIP = NO;
				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
				ENABLE_NS_ASSERTIONS = NO;
				ENABLE_STRICT_OBJC_MSGSEND = YES;
				GCC_C_LANGUAGE_STANDARD = gnu11;
				GCC_NO_COMMON_BLOCKS = YES;
				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 = 12.2;
				MTL_ENABLE_DEBUG_INFO = NO;
				MTL_FAST_MATH = YES;
				SDKROOT = iphoneos;
				VALIDATE_PRODUCT = YES;
			};
			name = Release;
		};
		0D6AB6D322BB05E200EEE540 /* Debug */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CODE_SIGN_STYLE = Automatic;
				INFOPLIST_FILE = App/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/Tests",
				);
				PRODUCT_BUNDLE_IDENTIFIER = com.google.flutter.IosUnitTests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Debug;
		};
		0D6AB6D422BB05E200EEE540 /* Release */ = {
			isa = XCBuildConfiguration;
			buildSettings = {
				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
				CODE_SIGN_STYLE = Automatic;
				INFOPLIST_FILE = App/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
				);
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/Tests",
				);
				PRODUCT_BUNDLE_IDENTIFIER = com.google.flutter.IosUnitTests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				TARGETED_DEVICE_FAMILY = "1,2";
			};
			name = Release;
		};
		0D6AB6D622BB05E200EEE540 /* Debug */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 0D6AB73E22BD8F0200EEE540 /* FlutterEngineConfig.xcconfig */;
			buildSettings = {
				BUNDLE_LOADER = "$(TEST_HOST)";
				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
				CLANG_ENABLE_OBJC_ARC = NO;
				CODE_SIGN_STYLE = Automatic;
				FRAMEWORK_SEARCH_PATHS = ../../../../out/$FLUTTER_ENGINE;
				HEADER_SEARCH_PATHS = (
					../../../..,
					../../../../flutter/shell/platform/darwin/common/framework/Headers,
					../../../../third_party/skia,
					../../../../third_party,
					../../../../third_party/rapidjson/include,
					../../../../flutter/third_party/txt/src,
					../../../../third_party/harfbuzz/src,
					../../../../third_party/icu/source/common,
				);
				INFOPLIST_FILE = Tests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/Tests",
				);
				OTHER_LDFLAGS = (
					"-framework",
					Flutter,
					"-lOCMock",
					"-ObjC",
				);
				PRODUCT_BUNDLE_IDENTIFIER = com.google.flutter.IosUnitTestsTests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SYSTEM_HEADER_SEARCH_PATHS = ../../../../third_party/ocmock/Source/;
				TARGETED_DEVICE_FAMILY = "1,2";
				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/IosUnitTests.app/IosUnitTests";
			};
			name = Debug;
		};
		0D6AB6D722BB05E200EEE540 /* Release */ = {
			isa = XCBuildConfiguration;
			baseConfigurationReference = 0D6AB73E22BD8F0200EEE540 /* FlutterEngineConfig.xcconfig */;
			buildSettings = {
				BUNDLE_LOADER = "$(TEST_HOST)";
				CLANG_ALLOW_NON_MODULAR_INCLUDES_IN_FRAMEWORK_MODULES = YES;
				CLANG_CXX_LANGUAGE_STANDARD = "gnu++17";
				CLANG_ENABLE_OBJC_ARC = NO;
				CODE_SIGN_STYLE = Automatic;
				FRAMEWORK_SEARCH_PATHS = ../../../../out/$FLUTTER_ENGINE;
				HEADER_SEARCH_PATHS = (
					../../../..,
					../../../../flutter/shell/platform/darwin/common/framework/Headers,
					../../../../third_party/skia,
					../../../../third_party,
					../../../../third_party/rapidjson/include,
					../../../../flutter/third_party/txt/src,
					../../../../third_party/harfbuzz/src,
					../../../../third_party/icu/source/common,
				);
				INFOPLIST_FILE = Tests/Info.plist;
				LD_RUNPATH_SEARCH_PATHS = (
					"$(inherited)",
					"@executable_path/Frameworks",
					"@loader_path/Frameworks",
				);
				LIBRARY_SEARCH_PATHS = (
					"$(inherited)",
					"$(PROJECT_DIR)/Tests",
				);
				OTHER_LDFLAGS = (
					"-framework",
					Flutter,
					"-lOCMock",
					"-ObjC",
				);
				PRODUCT_BUNDLE_IDENTIFIER = com.google.flutter.IosUnitTestsTests;
				PRODUCT_NAME = "$(TARGET_NAME)";
				SYSTEM_HEADER_SEARCH_PATHS = ../../../../third_party/ocmock/Source/;
				TARGETED_DEVICE_FAMILY = "1,2";
				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/IosUnitTests.app/IosUnitTests";
			};
			name = Release;
		};
/* End XCBuildConfiguration section */

/* Begin XCConfigurationList section */
		0D6AB6AC22BB05E100EEE540 /* Build configuration list for PBXProject "IosUnitTests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				0D6AB6D022BB05E200EEE540 /* Debug */,
				0D6AB6D122BB05E200EEE540 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		0D6AB6D222BB05E200EEE540 /* Build configuration list for PBXNativeTarget "IosUnitTests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				0D6AB6D322BB05E200EEE540 /* Debug */,
				0D6AB6D422BB05E200EEE540 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
		0D6AB6D522BB05E200EEE540 /* Build configuration list for PBXNativeTarget "IosUnitTestsTests" */ = {
			isa = XCConfigurationList;
			buildConfigurations = (
				0D6AB6D622BB05E200EEE540 /* Debug */,
				0D6AB6D722BB05E200EEE540 /* Release */,
			);
			defaultConfigurationIsVisible = 0;
			defaultConfigurationName = Release;
		};
/* End XCConfigurationList section */
	};
	rootObject = 0D6AB6A922BB05E100EEE540 /* Project object */;
}
