`live-conformance/model-sink/cases.json`, written by `wai_model_policy_vectors sink gen` from fixed seeds and the committed integer vectors, which it names and never copies: the operator's policy and its successor (which drops one set), a key log whose second revision revokes a set by its digest, another under the listing of its one member and a sealed set's opened bytes, a device attestation, two configurations, five a sink must refuse to hold, decode cases over the committed vectors at their instants (permitted sets, a payload the decoder refuses, a set outside the class, a set for another capability, a capability that runs no set, the revoked sets, the successor's start, both ends of the span, an attestation that has lapsed), every object of a frame stream permitted and refused, gate cases over a page's WebNN paths and a sealed set, the run reports a sink signs and the operator's roll-up. Every outcome is stated by the generator, never copied from the check. - `tests/model_sink_corpus.rs` (feature `model_policy`): the file regenerates byte for byte, and the reference's check gives every configuration, gate, decode and frame case its outcome, every code native-sink §14 names refusing one. - `tests/model_sink.rs` (`sink_decode`, `ffi`): every case through the C interface, the GPU offered and on the CPU alone; decoded cases give the bytes of a decoder with no policy, refused ones no bytes and the code; the reports hold exactly the decodes stated; the roll-up's class lines are the corpus's, units aside; both periods' bundles verify (`wai_model_verify`). With `WAI_MODEL_SINK_OUT` the bundles are written for `wai model verify` and the second implementation. - The Swift package's `ModelPolicyTests` and the Kotlin library's `ModelPolicyTest` (host JVM, through the JNI layer) run the corpus through their wrappers; scripts/build-xcframework.sh stages it, and TestHost bundles it. - `wai-web`'s `model_gate` gives every gate case its outcome and names every set as the corpus does. - `live-conformance/model_sink_verify.py`, the second implementation, written from the texts and sharing no code with wai-rs, gives every case its outcome, verifies the bundles a test wrote (`--bundles`), and catches 12 of 12 mutated copies and 18 of 18 weakened verifiers. - CI: the conformance step `model-sink` (its unit tests, the corpus test, wai-web's tests and the independent verifier); wai-sink-android.yml's JVM job runs tests/model_sink.rs before the Kotlin tests and requires ModelPolicyTest to run; both sink workflows trigger on the corpus. Co-Authored-By: Claude Opus 5.5 <[email protected]>
402 lines
15 KiB
Text
402 lines
15 KiB
Text
// !$*UTF8*$!
|
|
{
|
|
archiveVersion = 1;
|
|
classes = {
|
|
};
|
|
objectVersion = 60;
|
|
objects = {
|
|
|
|
/* Begin PBXBuildFile section */
|
|
C6CE8C7E4938817BF4BCABFF /* TestHostApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = C1041B7906D7B096E3643B1B /* TestHostApp.swift */; };
|
|
544DBACF461758F6B2FDC039 /* CorpusTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A5E60253615E824114566F5 /* CorpusTests.swift */; };
|
|
D30365AA749292E9326EB7C3 /* RelayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 88FDFFE145C54F5A505BBCD2 /* RelayTests.swift */; };
|
|
9A7F4044E2A395589B191B7F /* PlayerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8F9CE7F3619129CB4B9B8D4F /* PlayerTests.swift */; };
|
|
3D0C2A6E8F51B7A40E9D1C21 /* IntDecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B4E19C25A0D63F81C2E9A44 /* IntDecodeTests.swift */; };
|
|
6D1A40C2E57B93F08A2C4E15 /* ModelPolicyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F8B2D60A1C3E579B0D2F846 /* ModelPolicyTests.swift */; };
|
|
B9D61AF752DC4EAAC6FBA797 /* TestOrigin.swift in Sources */ = {isa = PBXBuildFile; fileRef = 65F7CE59F63D57CB1DCD29F7 /* TestOrigin.swift */; };
|
|
9E2F61B03C7A4D58A1B6E0F3 /* int in Resources */ = {isa = PBXBuildFile; fileRef = 2C8D4A17E6F0935B7A1D2E68 /* int */; };
|
|
8C3E5A71D0B24F96E1A7C352 /* model in Resources */ = {isa = PBXBuildFile; fileRef = 2A9F6C04B8E1D357A4C0B9E1 /* model */; };
|
|
5CA5ADA6C9E913D5906597DA /* vectors.json in Resources */ = {isa = PBXBuildFile; fileRef = 80C3A35220EAC539D552CC16 /* vectors.json */; };
|
|
F72ECBAE9C8D2F2356C8EBF0 /* WaiSink in Frameworks */ = {isa = PBXBuildFile; productRef = 5E334103A819FD92FEA7DDC7 /* WaiSink */; };
|
|
/* End PBXBuildFile section */
|
|
|
|
/* Begin PBXContainerItemProxy section */
|
|
40BDE8EEA9AC9C0554879BBA /* PBXContainerItemProxy */ = {
|
|
isa = PBXContainerItemProxy;
|
|
containerPortal = A04707B9142B2156A9C4937B /* Project object */;
|
|
proxyType = 1;
|
|
remoteGlobalIDString = FBBD6B7BA102E6050DCFEFA7;
|
|
remoteInfo = WaiSinkTestHost;
|
|
};
|
|
/* End PBXContainerItemProxy section */
|
|
|
|
/* Begin PBXFileReference section */
|
|
C1041B7906D7B096E3643B1B /* TestHostApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestHostApp.swift; sourceTree = "<group>"; };
|
|
E5A931286D88630980B3F829 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = Info.plist; sourceTree = "<group>"; };
|
|
7A5E60253615E824114566F5 /* CorpusTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CorpusTests.swift; sourceTree = "<group>"; };
|
|
88FDFFE145C54F5A505BBCD2 /* RelayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RelayTests.swift; sourceTree = "<group>"; };
|
|
8F9CE7F3619129CB4B9B8D4F /* PlayerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerTests.swift; sourceTree = "<group>"; };
|
|
65F7CE59F63D57CB1DCD29F7 /* TestOrigin.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestOrigin.swift; sourceTree = "<group>"; };
|
|
7B4E19C25A0D63F81C2E9A44 /* IntDecodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = IntDecodeTests.swift; sourceTree = "<group>"; };
|
|
4F8B2D60A1C3E579B0D2F846 /* ModelPolicyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ModelPolicyTests.swift; sourceTree = "<group>"; };
|
|
2C8D4A17E6F0935B7A1D2E68 /* int */ = {isa = PBXFileReference; lastKnownFileType = folder; path = int; sourceTree = "<group>"; };
|
|
2A9F6C04B8E1D357A4C0B9E1 /* model */ = {isa = PBXFileReference; lastKnownFileType = folder; path = model; sourceTree = "<group>"; };
|
|
80C3A35220EAC539D552CC16 /* vectors.json */ = {isa = PBXFileReference; lastKnownFileType = text.json; path = vectors.json; sourceTree = "<group>"; };
|
|
318E03F14E590262332C94CB /* WaiSinkTestHost.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = WaiSinkTestHost.app; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
10BBA89921478B03732BAEC9 /* WaiSinkDeviceTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = WaiSinkDeviceTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; };
|
|
/* End PBXFileReference section */
|
|
|
|
/* Begin PBXFrameworksBuildPhase section */
|
|
96879C3466C281C394C8002A /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
89424F3B974ADA5FFD0BBCF8 /* Frameworks */ = {
|
|
isa = PBXFrameworksBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
F72ECBAE9C8D2F2356C8EBF0 /* WaiSink in Frameworks */,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXFrameworksBuildPhase section */
|
|
|
|
/* Begin PBXGroup section */
|
|
9810E6C49F4800B33D8EB323 = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
97847F8E009EA1F7DE942A4F,
|
|
3288A55BC89EF9027D5B30F6,
|
|
02DD1ECD20830A9672A2189E,
|
|
);
|
|
sourceTree = "<group>";
|
|
};
|
|
97847F8E009EA1F7DE942A4F = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
C1041B7906D7B096E3643B1B,
|
|
E5A931286D88630980B3F829,
|
|
);
|
|
path = App;
|
|
sourceTree = "<group>";
|
|
};
|
|
3288A55BC89EF9027D5B30F6 = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
7A5E60253615E824114566F5,
|
|
88FDFFE145C54F5A505BBCD2,
|
|
8F9CE7F3619129CB4B9B8D4F,
|
|
65F7CE59F63D57CB1DCD29F7,
|
|
7B4E19C25A0D63F81C2E9A44,
|
|
4F8B2D60A1C3E579B0D2F846,
|
|
E64D067B2A6601FFFF8AABEA,
|
|
);
|
|
name = WaiSinkTests;
|
|
path = ../Tests/WaiSinkTests;
|
|
sourceTree = "<group>";
|
|
};
|
|
E64D067B2A6601FFFF8AABEA = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
80C3A35220EAC539D552CC16,
|
|
2C8D4A17E6F0935B7A1D2E68,
|
|
2A9F6C04B8E1D357A4C0B9E1,
|
|
);
|
|
path = Resources;
|
|
sourceTree = "<group>";
|
|
};
|
|
02DD1ECD20830A9672A2189E = {
|
|
isa = PBXGroup;
|
|
children = (
|
|
318E03F14E590262332C94CB,
|
|
10BBA89921478B03732BAEC9,
|
|
);
|
|
name = Products;
|
|
sourceTree = "<group>";
|
|
};
|
|
/* End PBXGroup section */
|
|
|
|
/* Begin PBXNativeTarget section */
|
|
FBBD6B7BA102E6050DCFEFA7 /* WaiSinkTestHost */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = BA9DE0DC5B069A5AE0018414;
|
|
buildPhases = (
|
|
0A6FB99DEE19961C494CC760 /* Sources */,
|
|
96879C3466C281C394C8002A /* Frameworks */,
|
|
83757C9F1A7E13F90E845924 /* Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
);
|
|
name = WaiSinkTestHost;
|
|
productName = WaiSinkTestHost;
|
|
productReference = 318E03F14E590262332C94CB /* WaiSinkTestHost.app */;
|
|
productType = "com.apple.product-type.application";
|
|
};
|
|
7ED98ED206A81222663D2681 /* WaiSinkDeviceTests */ = {
|
|
isa = PBXNativeTarget;
|
|
buildConfigurationList = 49851C86906C78FE3E20F5E4;
|
|
buildPhases = (
|
|
107A2265737DFCE0776A2769 /* Sources */,
|
|
89424F3B974ADA5FFD0BBCF8 /* Frameworks */,
|
|
9007C5A298B9B03330FDDD18 /* Resources */,
|
|
);
|
|
buildRules = (
|
|
);
|
|
dependencies = (
|
|
E81D85F5892D009FED75E8F8 /* PBXTargetDependency */,
|
|
);
|
|
name = WaiSinkDeviceTests;
|
|
packageProductDependencies = (
|
|
5E334103A819FD92FEA7DDC7 /* WaiSink */,
|
|
);
|
|
productName = WaiSinkDeviceTests;
|
|
productReference = 10BBA89921478B03732BAEC9 /* WaiSinkDeviceTests.xctest */;
|
|
productType = "com.apple.product-type.bundle.unit-test";
|
|
};
|
|
/* End PBXNativeTarget section */
|
|
|
|
/* Begin PBXProject section */
|
|
A04707B9142B2156A9C4937B /* Project object */ = {
|
|
isa = PBXProject;
|
|
attributes = {
|
|
BuildIndependentTargetsInParallel = 1;
|
|
LastSwiftUpdateCheck = 1500;
|
|
LastUpgradeCheck = 1500;
|
|
TargetAttributes = {
|
|
7ED98ED206A81222663D2681 = {
|
|
TestTargetID = FBBD6B7BA102E6050DCFEFA7;
|
|
};
|
|
};
|
|
};
|
|
buildConfigurationList = 97F7C54C58FC3D1A6EE88FE9;
|
|
compatibilityVersion = "Xcode 15.0";
|
|
developmentRegion = en;
|
|
hasScannedForEncodings = 0;
|
|
knownRegions = (
|
|
en,
|
|
Base,
|
|
);
|
|
mainGroup = 9810E6C49F4800B33D8EB323;
|
|
packageReferences = (
|
|
699A4E1E8E46E81D12855AF6 /* XCLocalSwiftPackageReference ".." */,
|
|
);
|
|
productRefGroup = 02DD1ECD20830A9672A2189E /* Products */;
|
|
projectDirPath = "";
|
|
projectRoot = "";
|
|
targets = (
|
|
FBBD6B7BA102E6050DCFEFA7 /* WaiSinkTestHost */,
|
|
7ED98ED206A81222663D2681 /* WaiSinkDeviceTests */,
|
|
);
|
|
};
|
|
/* End PBXProject section */
|
|
|
|
/* Begin PBXResourcesBuildPhase section */
|
|
83757C9F1A7E13F90E845924 = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
9007C5A298B9B03330FDDD18 = {
|
|
isa = PBXResourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
5CA5ADA6C9E913D5906597DA,
|
|
9E2F61B03C7A4D58A1B6E0F3,
|
|
8C3E5A71D0B24F96E1A7C352,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXResourcesBuildPhase section */
|
|
|
|
/* Begin PBXSourcesBuildPhase section */
|
|
0A6FB99DEE19961C494CC760 = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
C6CE8C7E4938817BF4BCABFF,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
107A2265737DFCE0776A2769 = {
|
|
isa = PBXSourcesBuildPhase;
|
|
buildActionMask = 2147483647;
|
|
files = (
|
|
544DBACF461758F6B2FDC039,
|
|
D30365AA749292E9326EB7C3,
|
|
9A7F4044E2A395589B191B7F,
|
|
B9D61AF752DC4EAAC6FBA797,
|
|
3D0C2A6E8F51B7A40E9D1C21,
|
|
6D1A40C2E57B93F08A2C4E15,
|
|
);
|
|
runOnlyForDeploymentPostprocessing = 0;
|
|
};
|
|
/* End PBXSourcesBuildPhase section */
|
|
|
|
/* Begin PBXTargetDependency section */
|
|
E81D85F5892D009FED75E8F8 /* PBXTargetDependency */ = {
|
|
isa = PBXTargetDependency;
|
|
target = FBBD6B7BA102E6050DCFEFA7 /* WaiSinkTestHost */;
|
|
targetProxy = 40BDE8EEA9AC9C0554879BBA /* PBXContainerItemProxy */;
|
|
};
|
|
/* End PBXTargetDependency section */
|
|
|
|
/* Begin XCBuildConfiguration section */
|
|
775A56EB7A864A49D082DC97 /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CODE_SIGN_STYLE = Automatic;
|
|
DEBUG_INFORMATION_FORMAT = dwarf;
|
|
ENABLE_TESTABILITY = YES;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
|
|
ONLY_ACTIVE_ARCH = YES;
|
|
SDKROOT = auto;
|
|
SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator";
|
|
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
|
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
|
SWIFT_VERSION = 5.0;
|
|
TARGETED_DEVICE_FAMILY = "1,2,3";
|
|
TVOS_DEPLOYMENT_TARGET = 16.0;
|
|
};
|
|
name = Debug;
|
|
};
|
|
6A2E875F2D18C9B63FB856EF /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
ALWAYS_SEARCH_USER_PATHS = NO;
|
|
CLANG_ENABLE_MODULES = YES;
|
|
CODE_SIGN_STYLE = Automatic;
|
|
DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
|
|
ENABLE_TESTABILITY = NO;
|
|
IPHONEOS_DEPLOYMENT_TARGET = 16.0;
|
|
ONLY_ACTIVE_ARCH = NO;
|
|
SDKROOT = auto;
|
|
SUPPORTED_PLATFORMS = "appletvos appletvsimulator iphoneos iphonesimulator";
|
|
SWIFT_OPTIMIZATION_LEVEL = "-O";
|
|
SWIFT_VERSION = 5.0;
|
|
TARGETED_DEVICE_FAMILY = "1,2,3";
|
|
TVOS_DEPLOYMENT_TARGET = 16.0;
|
|
};
|
|
name = Release;
|
|
};
|
|
A34B0A48ACE51FBA037C0699 /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
GENERATE_INFOPLIST_FILE = YES;
|
|
INFOPLIST_FILE = App/Info.plist;
|
|
INFOPLIST_KEY_CFBundleDisplayName = "WAI sink tests";
|
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
|
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
|
LD_RUNPATH_SEARCH_PATHS = ("$(inherited)", "@executable_path/Frameworks");
|
|
MARKETING_VERSION = 1.0;
|
|
PRODUCT_BUNDLE_IDENTIFIER = science.transaction.wai.sink-test-host;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SWIFT_EMIT_LOC_STRINGS = NO;
|
|
};
|
|
name = Debug;
|
|
};
|
|
E3C28B6F3BB0CD785E0296A1 /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
GENERATE_INFOPLIST_FILE = YES;
|
|
INFOPLIST_FILE = App/Info.plist;
|
|
INFOPLIST_KEY_CFBundleDisplayName = "WAI sink tests";
|
|
INFOPLIST_KEY_UIApplicationSceneManifest_Generation = YES;
|
|
INFOPLIST_KEY_UILaunchScreen_Generation = YES;
|
|
LD_RUNPATH_SEARCH_PATHS = ("$(inherited)", "@executable_path/Frameworks");
|
|
MARKETING_VERSION = 1.0;
|
|
PRODUCT_BUNDLE_IDENTIFIER = science.transaction.wai.sink-test-host;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SWIFT_EMIT_LOC_STRINGS = NO;
|
|
};
|
|
name = Release;
|
|
};
|
|
EC325C8F2E8493636267291E /* Debug */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
GENERATE_INFOPLIST_FILE = YES;
|
|
LD_RUNPATH_SEARCH_PATHS = ("$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks");
|
|
MARKETING_VERSION = 1.0;
|
|
PRODUCT_BUNDLE_IDENTIFIER = science.transaction.wai.sink-test-host.tests;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SWIFT_EMIT_LOC_STRINGS = NO;
|
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WaiSinkTestHost.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/WaiSinkTestHost";
|
|
};
|
|
name = Debug;
|
|
};
|
|
36927F45B6EEBE46164AFB89 /* Release */ = {
|
|
isa = XCBuildConfiguration;
|
|
buildSettings = {
|
|
BUNDLE_LOADER = "$(TEST_HOST)";
|
|
CURRENT_PROJECT_VERSION = 1;
|
|
GENERATE_INFOPLIST_FILE = YES;
|
|
LD_RUNPATH_SEARCH_PATHS = ("$(inherited)", "@executable_path/Frameworks", "@loader_path/Frameworks");
|
|
MARKETING_VERSION = 1.0;
|
|
PRODUCT_BUNDLE_IDENTIFIER = science.transaction.wai.sink-test-host.tests;
|
|
PRODUCT_NAME = "$(TARGET_NAME)";
|
|
SWIFT_EMIT_LOC_STRINGS = NO;
|
|
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/WaiSinkTestHost.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/WaiSinkTestHost";
|
|
};
|
|
name = Release;
|
|
};
|
|
/* End XCBuildConfiguration section */
|
|
|
|
/* Begin XCConfigurationList section */
|
|
97F7C54C58FC3D1A6EE88FE9 = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
775A56EB7A864A49D082DC97 /* Debug */,
|
|
6A2E875F2D18C9B63FB856EF /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
BA9DE0DC5B069A5AE0018414 = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
A34B0A48ACE51FBA037C0699 /* Debug */,
|
|
E3C28B6F3BB0CD785E0296A1 /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
49851C86906C78FE3E20F5E4 = {
|
|
isa = XCConfigurationList;
|
|
buildConfigurations = (
|
|
EC325C8F2E8493636267291E /* Debug */,
|
|
36927F45B6EEBE46164AFB89 /* Release */,
|
|
);
|
|
defaultConfigurationIsVisible = 0;
|
|
defaultConfigurationName = Release;
|
|
};
|
|
/* End XCConfigurationList section */
|
|
|
|
/* Begin XCLocalSwiftPackageReference section */
|
|
699A4E1E8E46E81D12855AF6 /* XCLocalSwiftPackageReference ".." */ = {
|
|
isa = XCLocalSwiftPackageReference;
|
|
relativePath = ..;
|
|
};
|
|
/* End XCLocalSwiftPackageReference section */
|
|
|
|
/* Begin XCSwiftPackageProductDependency section */
|
|
5E334103A819FD92FEA7DDC7 /* WaiSink */ = {
|
|
isa = XCSwiftPackageProductDependency;
|
|
package = 699A4E1E8E46E81D12855AF6 /* XCLocalSwiftPackageReference ".." */;
|
|
productName = WaiSink;
|
|
};
|
|
/* End XCSwiftPackageProductDependency section */
|
|
};
|
|
rootObject = A04707B9142B2156A9C4937B /* Project object */;
|
|
}
|