crossmate

A collaborative crossword app for iOS
Log | Files | Refs | LICENSE

project.pbxproj (143469B)


      1 // !$*UTF8*$!
      2 {
      3 	archiveVersion = 1;
      4 	classes = {
      5 	};
      6 	objectVersion = 77;
      7 	objects = {
      8 
      9 /* Begin PBXBuildFile section */
     10 		0063A5FC9F39E37A67F137FF /* GameListView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED2D830B9EFAD753C233BEB4 /* GameListView.swift */; };
     11 		00A25F5D8DFF62EFA0C4D1D7 /* FriendEntity+DisplayName.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F8D856707B4D76FDBF4AE69 /* FriendEntity+DisplayName.swift */; };
     12 		00F2108848ADC7B4BF3AA0AE /* PlayerSessionNavigationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46801B570FC0B2C791ECDED3 /* PlayerSessionNavigationTests.swift */; };
     13 		014134FB81566B5D41168260 /* PerGameZoneTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 283C5C97180C805B6C5BF622 /* PerGameZoneTests.swift */; };
     14 		0158184A413AE177F75B4150 /* JournalReplayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89B1FFD2F90141EA949A8540 /* JournalReplayTests.swift */; };
     15 		01D1B4C7303F1CA52438FF86 /* HardwareKeyboardInputView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6940546CFA1E87EF814AA6BB /* HardwareKeyboardInputView.swift */; };
     16 		0241DC498C645FE1BDA00FB0 /* NYTPuzzleFetcher.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0938B0ACB40772EE522D77C /* NYTPuzzleFetcher.swift */; };
     17 		025377AF80D45967CE910423 /* SyncMonitorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C190EA5717C291B3F2AE46C /* SyncMonitorTests.swift */; };
     18 		02943BA53D2130B910E6DC00 /* EnsureGameEntityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 94CEBA27A8AC4FCC92ADE1B4 /* EnsureGameEntityTests.swift */; };
     19 		036EC1EDDEFD17DCDD9B5F1A /* ClueList.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B8B65482CA1739A3863A99E /* ClueList.swift */; };
     20 		04062BCD473ED244159B1066 /* PlayerRosterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1813630FA05C194AFF43855C /* PlayerRosterTests.swift */; };
     21 		06AE6DF7AA3274480C591E47 /* EngagementStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B09D52DB46731E92C3E9297C /* EngagementStore.swift */; };
     22 		07A46496EE0B12FD526F36FB /* SessionPushPlannerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C040D5EBC73B1ED47C2C9D4 /* SessionPushPlannerTests.swift */; };
     23 		082B9BAADE3AFA54EFE30E19 /* PuzzleModifiers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F5DF04E70017065DFA95B396 /* PuzzleModifiers.swift */; };
     24 		085B70680087464B8A7BA3EE /* GridSilhouetteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF7062403AC9CFB4FF04BBF3 /* GridSilhouetteTests.swift */; };
     25 		0A7AEB93A473AFCCD9217F49 /* PuzzleSessionTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 362E3A93102B6C9AECD4133A /* PuzzleSessionTests.swift */; };
     26 		0BB721552A849A53AB9BF7CC /* RemoteCoordinateValidationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 960353A6F38DD290112A2FE1 /* RemoteCoordinateValidationTests.swift */; };
     27 		0C39CA21BE50E49F9F06C5F2 /* PlayerRoster.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3292748EAE27B608C769D393 /* PlayerRoster.swift */; };
     28 		0F2992C16A3A658DEA0F707E /* DiagnosticsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCACEED6A9235EC6221F4F66 /* DiagnosticsView.swift */; };
     29 		1016604FBD4D63A0B9AAE503 /* CloudQuery.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16AAC1E8D2CB3B5117159934 /* CloudQuery.swift */; };
     30 		10AF4F2750E0D64AA3828F35 /* ImportServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4494C40DD593DA7CE6641027 /* ImportServiceTests.swift */; };
     31 		128915DB37018EE4CC16C856 /* GameCursorStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D2AD5021F1AF0DB44FA4540 /* GameCursorStore.swift */; };
     32 		13C0F34520828020AD825D07 /* JoiningPuzzleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E18FF14E0D73B0D2DB427F08 /* JoiningPuzzleView.swift */; };
     33 		14749A042380925B7CA902F2 /* XDMarkup.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAF18C52558DBD58ECAD4964 /* XDMarkup.swift */; };
     34 		15768439C1783A1780FBB824 /* SessionCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A7BD8DFDB41BFBA694A0933 /* SessionCoordinator.swift */; };
     35 		16D7328AE0BB1F7ED46235C8 /* GameEntity+ContentKey.swift in Sources */ = {isa = PBXBuildFile; fileRef = 24A4B5C8EC4A46906C07F819 /* GameEntity+ContentKey.swift */; };
     36 		17A754692F05B97DBDD645F2 /* PlayerSelection.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F0B4F65D017C1FBAC3B23DF /* PlayerSelection.swift */; };
     37 		18CA29E61C4F1471A455FEC8 /* FriendEncryptionKeyDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 833AAFBA0094BAB27E13FE29 /* FriendEncryptionKeyDirectory.swift */; };
     38 		18D5BB584DBF92A2EC580AEA /* NotificationNavigationBrokerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FEDD63AD5E33E2B0399780EF /* NotificationNavigationBrokerTests.swift */; };
     39 		197DDF45C36B9570BB9AE4B5 /* AuthorIdentity.swift in Sources */ = {isa = PBXBuildFile; fileRef = B1F1471BE4D6D84361DD692B /* AuthorIdentity.swift */; };
     40 		1989FEF3DE02BEA414B6E9ED /* ExternalBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFA63B0051B4E6F4FC4B132A /* ExternalBrowseView.swift */; };
     41 		1A19D13D9B820E276C60819E /* InputMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6BDD06460A76D4AF31077732 /* InputMonitor.swift */; };
     42 		1A1A8A9AB36D02E2A5A9ED28 /* GameViewedStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9AE0F26E602A9246F5C6ABF /* GameViewedStore.swift */; };
     43 		1AAFF86B40CBBFF1EC9ADF9F /* GridThumbnailView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6B1F07B5DDE2A8B49B28392A /* GridThumbnailView.swift */; };
     44 		1D08DDEDEF5433912CC6D4DB /* GameViewedStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9406C27662147CD3C0783644 /* GameViewedStoreTests.swift */; };
     45 		1E404AD99B04912167B83176 /* NYTOverlayLetterRecognizer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 570F8FE85CC46CE3CB5CFEC1 /* NYTOverlayLetterRecognizer.swift */; };
     46 		1F4E5473F78A5CEDBA9719CE /* NYTAuthService.swift in Sources */ = {isa = PBXBuildFile; fileRef = A253416F4FEA271A80B22A73 /* NYTAuthService.swift */; };
     47 		205894D447BFE2CCEB07575D /* GameStoreRevocationLockTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD8E8D1BC7DF9EBB08F8CABD /* GameStoreRevocationLockTests.swift */; };
     48 		24F7ED458A1C09F8CF309B35 /* PuzzleNotificationText+GameEntity.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0DF9C2FEF0D3584864DFC967 /* PuzzleNotificationText+GameEntity.swift */; };
     49 		25141DD1C50C9191B6C94119 /* DecorationImages.swift in Sources */ = {isa = PBXBuildFile; fileRef = B7557050B17F113BB488AA23 /* DecorationImages.swift */; };
     50 		2571BA6482B3E896A80FF393 /* CompactSlider.swift in Sources */ = {isa = PBXBuildFile; fileRef = B024B2FFB11E51E9724BBE23 /* CompactSlider.swift */; };
     51 		262A9CE8C3CB93869190CFF1 /* GameStoreMergedAuthorCellsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 122BC1863D12DE06388D5DA7 /* GameStoreMergedAuthorCellsTests.swift */; };
     52 		2641299DE1F2E84E8C21E037 /* LogScrubberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C06E2CC3A77CB306BD2DF867 /* LogScrubberTests.swift */; };
     53 		267ED5B329F05A30430B73A0 /* EngagementHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18C701DAE36000DE19F7CC95 /* EngagementHost.swift */; };
     54 		26DC22F88FA10C47BC06975E /* PersistenceRecoveryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4A467BC00116EEC8500BE6A1 /* PersistenceRecoveryTests.swift */; };
     55 		2765E30202EF955B425CB1A3 /* NYTOverlayLetterRecognizerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = DD8B50452D3AFE25D98B497A /* NYTOverlayLetterRecognizerTests.swift */; };
     56 		2A273C98FE3AC5E4C9BE1D88 /* PushPayloadCipherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C793B5B9684D49328E42129 /* PushPayloadCipherTests.swift */; };
     57 		2AF2550B08CE79F8615B3076 /* FriendZone.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7A4AFF292381C9B33C0F2CD6 /* FriendZone.swift */; };
     58 		2C0DFC182240A2519ED1FA6A /* GameMutatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BFC1C59A30FB2571598273E4 /* GameMutatorTests.swift */; };
     59 		2C5A15054CCCBF9FD626AFBB /* GameStorePushAddressTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A56778AF8190F0D7EB2E27E /* GameStorePushAddressTests.swift */; };
     60 		2DD78CA0CD587AA4E5C4B178 /* PuzzleScoreboard.swift in Sources */ = {isa = PBXBuildFile; fileRef = A3A251D89028B3CA065DE053 /* PuzzleScoreboard.swift */; };
     61 		30703DDF575DCDA53227DA66 /* GamePushCredentialsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B5A8118AC2FE60D877F1D29 /* GamePushCredentialsTests.swift */; };
     62 		309457EC2DFEC476253D54D2 /* PlayerSelectionPublisherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF159746D076E051C2CB590C /* PlayerSelectionPublisherTests.swift */; };
     63 		31F2B6A61ED352C7D800149F /* XDAcceptTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4F4EBC0F07FF815274C028CA /* XDAcceptTests.swift */; };
     64 		328309D8CC72CCB5623FB2A1 /* EngagementCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 67CFF96D54D2DE9C44EB120A /* EngagementCoordinatorTests.swift */; };
     65 		33CEEDAFBAA46128A9713AF5 /* PushRequestAuthenticatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 630A65B1CCFEFEA825D3DD41 /* PushRequestAuthenticatorTests.swift */; };
     66 		350722635E9A17324148CACC /* PuzzleCatalog.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DC7784917397BCD6B8D679D /* PuzzleCatalog.swift */; };
     67 		351CB23C537BAB61863D95F6 /* PuzzleNotificationText.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE7CEB8980A9664BAAA5D196 /* PuzzleNotificationText.swift */; };
     68 		35D97436772257DAD3936ECB /* TipStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8D4A76B233E16B7C5A248EB7 /* TipStore.swift */; };
     69 		36E2AAF1EE1314E13477EE85 /* NicknameDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3111803C8FFFB0C839217482 /* NicknameDirectory.swift */; };
     70 		38439415796652D8B88C53B3 /* XDDecorationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1C08795365FABCC11A6C6E28 /* XDDecorationTests.swift */; };
     71 		38C913D00ED762BD9E355A2D /* KeychainHelper.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33878A29B09A6154C7A63C82 /* KeychainHelper.swift */; };
     72 		3A5483EF2893AE325DF27EE8 /* GameMutator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 43DC132D49361C56DE79C13E /* GameMutator.swift */; };
     73 		3B3F30AA1B7AA6D4465CB537 /* EngagementMessageAuthenticatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A24FD313982C8094CD020106 /* EngagementMessageAuthenticatorTests.swift */; };
     74 		3C54AE4AA04342CCF5705B20 /* PlayerNamePublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71DFD035381B6252DCD873C9 /* PlayerNamePublisher.swift */; };
     75 		3C54B672A9FCA98C0A304470 /* TipsArchive.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9DC6394CB0F5B85C083FAC7 /* TipsArchive.swift */; };
     76 		41290C86E72D6567C43C31B7 /* ShareLinkShortenerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 057F2B8B8A894D08BB801219 /* ShareLinkShortenerTests.swift */; };
     77 		43E311FBD68B7D35A4D29743 /* PushPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2C9D3E7FCE2D42C5B7E3856 /* PushPayload.swift */; };
     78 		449B0A09A36B276C93CFB9A4 /* GameStoreUnreadMovesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31C534911020BE4ED2E5065D /* GameStoreUnreadMovesTests.swift */; };
     79 		44FF4A5334A4086DEA7D8A7B /* GameShareItem.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663934F0B7CA8BDD462DFAA4 /* GameShareItem.swift */; };
     80 		47584CBEF819C2F507D06DFF /* PlayerColor.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB55FC337CF72C650373210A /* PlayerColor.swift */; };
     81 		47A6EAAC144C37608AB9AE91 /* PlayerPreferencesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7F1EDE21BB7D6456D6E9000 /* PlayerPreferencesTests.swift */; };
     82 		47B4FB563BA4A8A54E2C26E0 /* XDLimitsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F6DB4116933BB66274AC6E8 /* XDLimitsTests.swift */; };
     83 		4819D7FBB407C9D76510EA2A /* TestHelpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = F97B399E89BBB37730F2F1E9 /* TestHelpers.swift */; };
     84 		4A89595E3F6AB50E1D9E6BA8 /* ImportService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 462CE0FD356F6137C9BFD30F /* ImportService.swift */; };
     85 		4B8CA45845618D75A3313816 /* GridSilhouette.swift in Sources */ = {isa = PBXBuildFile; fileRef = D16AC7215D0269195FEA8BA8 /* GridSilhouette.swift */; };
     86 		4D7BF839BA71E1BF0AE9BCE9 /* GameStoreContributingDevicesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09EA25E2AE98ACD029EC0129 /* GameStoreContributingDevicesTests.swift */; };
     87 		4D90B39AD2F79959FB8089EE /* MovesUpdater.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DD270E16E00145EF2807EA9 /* MovesUpdater.swift */; };
     88 		4D9E2C35893E68E47F790994 /* BundledBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7023E506D777DB80B18A7DB5 /* BundledBrowseView.swift */; };
     89 		4E14BB5D6F96D178373ED55A /* PeerChangeLedger.swift in Sources */ = {isa = PBXBuildFile; fileRef = B427285F8D6BE35025591BFA /* PeerChangeLedger.swift */; };
     90 		4E1A70D1EC709A0478631DCF /* DecorationRenderingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 382F9AAB0B98B4A78E255F15 /* DecorationRenderingTests.swift */; };
     91 		4F1A93404828EDBDBBF86716 /* SettingsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C6AB016CA4E2FC69A0E6A4F /* SettingsView.swift */; };
     92 		503229FF89FF7C29CEF4C16D /* Puzzle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 64C8064F04FC6177D987ACA2 /* Puzzle.swift */; };
     93 		5082CCB75939E1BC6E9DC03A /* AppDefaultsMigratorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99F4D2E1504784E738D2B33A /* AppDefaultsMigratorTests.swift */; };
     94 		50C02D37A41D55CFA5D307E2 /* NYTPuzzleUpgraderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B34489D0864DF76AF436E391 /* NYTPuzzleUpgraderTests.swift */; };
     95 		51E6F7F2FC52C2AA87B9DB45 /* PeerPresenceGraceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08E8592B1CB1336E63498706 /* PeerPresenceGraceTests.swift */; };
     96 		521E877D28502B917C89B66D /* AccountPushCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B166E87D13C41C4D3575169 /* AccountPushCoordinatorTests.swift */; };
     97 		5264996E0D72A805B20985E8 /* PuzzleGridStats.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23A7390848B1943C80142934 /* PuzzleGridStats.swift */; };
     98 		59230713D85AE6895852B06A /* InviteCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10064D171DB7C48D3DE1E769 /* InviteCoordinator.swift */; };
     99 		5992AD4A06D7C6440825E9C6 /* GameArchiver.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1B7539E0AD285C5A3AC3DDA2 /* GameArchiver.swift */; };
    100 		5E80545A8ECEB1E2ED371C53 /* PushCredentialRotationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD32BDDE9B007B11BE86B7A0 /* PushCredentialRotationTests.swift */; };
    101 		5E89D1F8FDFE56395997281A /* NewGameSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 09C81EFA0B7776CB9713CD63 /* NewGameSheet.swift */; };
    102 		5ECF5B80D08E5E999A540782 /* SessionMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0EB332831AB173ACF6BFEC59 /* SessionMonitor.swift */; };
    103 		5EFCD28B3B682DCCF38068D6 /* AnnouncementCenter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1D3ECD0DE71BE567BCEE15F6 /* AnnouncementCenter.swift */; };
    104 		5FB26F40F5DB52111E3D1BDC /* CheckResult.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0FD9A43789D0ED123F7A99B0 /* CheckResult.swift */; };
    105 		609364CB79E0C7517298B404 /* ContentKeyDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAFA466405AABA1C06272795 /* ContentKeyDirectory.swift */; };
    106 		61A0F71985C898D046556A1D /* FriendInviteRecencyStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51583D7304A586BF38F0D8E3 /* FriendInviteRecencyStoreTests.swift */; };
    107 		61F8B38587EE49D376B53544 /* ReplayCacheTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 603E6FC55F1BD944592379D2 /* ReplayCacheTests.swift */; };
    108 		648EA338E7718079EA354D7D /* EngagementMessageAuthenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9B3E0C62CBF5ADF7C01C1D54 /* EngagementMessageAuthenticator.swift */; };
    109 		659F7E48357E164144A19789 /* CloudContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98E68FD021EF8ED50BC706EE /* CloudContainer.swift */; };
    110 		6850EAE474E589CE1EA2DF68 /* NicknameDirectoryTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92168360625ECDD36FF50EE8 /* NicknameDirectoryTests.swift */; };
    111 		689DAEC70934027E76E8116E /* KeyboardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FDE73AD7C543B29C8E493F8 /* KeyboardView.swift */; };
    112 		6A1CA96FF48CBEEE78EA6D34 /* FriendModelTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B766E872B12DC79ECCD80941 /* FriendModelTests.swift */; };
    113 		6AE88D9E1918508DBF2A91E1 /* NotificationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D2FD896D75863554E31654C /* NotificationState.swift */; };
    114 		6BD5C5B6BED06651312E2D01 /* MailComposeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0F8AAA9540C80F787A1465C0 /* MailComposeView.swift */; };
    115 		6BE7E91158F4DF1F71247C6D /* CellMark.swift in Sources */ = {isa = PBXBuildFile; fileRef = B135C285570F91181595B405 /* CellMark.swift */; };
    116 		6C091D30AAC9F63B7CE6FB58 /* AnnouncementCenterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 978A96CC6F550ED7A73F8D96 /* AnnouncementCenterTests.swift */; };
    117 		6D2AF361587E43D807BA212F /* NYTLoginView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1747D4DCB4BCC831069BBE07 /* NYTLoginView.swift */; };
    118 		6E36ED34ACF047BABB3E2D69 /* RecentChangesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 80B377D237AC14B9856579E1 /* RecentChangesTests.swift */; };
    119 		6E67C0DCB0416F382EA065B7 /* JournalUploadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DD9C72266D1BAC43C8976C0 /* JournalUploadTests.swift */; };
    120 		701BD90172F500B89E32E8E6 /* NoticeView.swift in Sources */ = {isa = PBXBuildFile; fileRef = A61768D423564A9080414A38 /* NoticeView.swift */; };
    121 		712A2764596A2D17A0BBBF3B /* FriendZoneTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 800CCFBE90554F287E765755 /* FriendZoneTests.swift */; };
    122 		7714B1C2FBCBBAD9BE8FEAF8 /* GameSummaryThumbnailTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5EEBF169823C172000FC45B /* GameSummaryThumbnailTests.swift */; };
    123 		774C5B5FC06366A0F5CD2376 /* GameSyncVersion.swift in Sources */ = {isa = PBXBuildFile; fileRef = 275DB12E9D81DD48B9025718 /* GameSyncVersion.swift */; };
    124 		77556FD9473A3F10FADF5E4E /* PersistenceController.swift in Sources */ = {isa = PBXBuildFile; fileRef = ACC295195602B3DDF7BB3895 /* PersistenceController.swift */; };
    125 		779D1955F350B507A47B1E5B /* ShareLinkShortener.swift in Sources */ = {isa = PBXBuildFile; fileRef = 52B50A841D92D1F2B173E7DF /* ShareLinkShortener.swift */; };
    126 		786813F3418C32EFBF296220 /* XDMarkupTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9FE0A9624DB87758F3D1768 /* XDMarkupTests.swift */; };
    127 		78802AFDF6273231781CC0DC /* AppServices.swift in Sources */ = {isa = PBXBuildFile; fileRef = CBDC81CA6A9C80EB31E7F493 /* AppServices.swift */; };
    128 		7BD1A9F69953F9C3288969AF /* PlayerRecordPresenceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C838C184A0C7B1B0A9821CE /* PlayerRecordPresenceTests.swift */; };
    129 		7BE53C851A311A7B6255B45E /* CellAccessibilityDescriberTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3059A4C23D040E0D1F258B92 /* CellAccessibilityDescriberTests.swift */; };
    130 		7CD7CC4681C2085AAC39FA79 /* XDDecorationWriter.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A2D346F414F374A45F92AD /* XDDecorationWriter.swift */; };
    131 		7D4A56FBB1C5D5F89271B77F /* NotificationService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 507B4DC893CE8AC4778CBACE /* NotificationService.swift */; };
    132 		7D9337A19747C79070AB3D59 /* InviteEntity+DisplayName.swift in Sources */ = {isa = PBXBuildFile; fileRef = E25A040EA4DC9672C895A7AC /* InviteEntity+DisplayName.swift */; };
    133 		7E6ED856CE78A774B061CA60 /* FriendEncryptionKeyDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 833AAFBA0094BAB27E13FE29 /* FriendEncryptionKeyDirectory.swift */; };
    134 		7FCD3F582B5ADC235E1F88A0 /* PuzzleNotificationTextTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C90E94A01FEA77A5C9A2BC94 /* PuzzleNotificationTextTests.swift */; };
    135 		7FFEACFC672925A0968ACC1C /* XD.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9031A1574C21866940F6A2C /* XD.swift */; };
    136 		8171E5B23FEC5FB63029A640 /* CloudJoinFailureTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5E6BB07A54A3C3AF6F210F49 /* CloudJoinFailureTests.swift */; };
    137 		8225918652DCC822CA1C862F /* PendingEditFlagTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D491B7232333AA8957732387 /* PendingEditFlagTests.swift */; };
    138 		82918A74836E5076CBFA1592 /* SyncEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 73DDDED719CFFDD6035C3B48 /* SyncEngine.swift */; };
    139 		82D1714DC441E4943E96C882 /* PuzzleFileReaderTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D9EE11280592CA66C2BEC71A /* PuzzleFileReaderTests.swift */; };
    140 		83CF8376EBFD7271931AC1B7 /* GridAccessibility.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF4CA70D10760D6770907606 /* GridAccessibility.swift */; };
    141 		85A798525FE1DC98210A9E82 /* GameCursorStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 60E818B0F4689BAD57660B7C /* GameCursorStoreTests.swift */; };
    142 		85B9BAC5ED404FE4496250CB /* NYTPuzzleUpgrader.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE54EF557E8D808BAA20EA54 /* NYTPuzzleUpgrader.swift */; };
    143 		884BC090D4E2D416AA52D6FD /* FriendPickerView.swift in Sources */ = {isa = PBXBuildFile; fileRef = E78C275F8A90E3E3EEF190CC /* FriendPickerView.swift */; };
    144 		88A34C8857B2B3D45A6FBCB2 /* PuzzleSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 710BCB6A647A820B106CE666 /* PuzzleSession.swift */; };
    145 		88BACA1689459AC9AED20D43 /* NotificationState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D2FD896D75863554E31654C /* NotificationState.swift */; };
    146 		89CEDB8864F61E42AC04F9D6 /* RecordSerializerMovesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 443BF6DF77C8226313EE9564 /* RecordSerializerMovesTests.swift */; };
    147 		8AE376C0726116082B15241D /* ShareLinkRouteTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5990D989AD745211A18848E4 /* ShareLinkRouteTests.swift */; };
    148 		8B356C953DA0FAF149C3391A /* Puzzles in Resources */ = {isa = PBXBuildFile; fileRef = BA67C509B467132D1B7510A4 /* Puzzles */; };
    149 		8C37D748EBFD75DACCB992C3 /* DriveMonitorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 29686FFBC5BC8BCCF8CCC49A /* DriveMonitorTests.swift */; };
    150 		8D8A9F70731C98DD00BE1DA5 /* Layouts.swift in Sources */ = {isa = PBXBuildFile; fileRef = 836B8D4B351C9225162A82C0 /* Layouts.swift */; };
    151 		8ECA254A8BB852BF4B9CE6D7 /* MarketingScreenshots.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5CBEE60E9D850739CA3D01AA /* MarketingScreenshots.swift */; };
    152 		8F5CB2F94E083D06D7E04280 /* PlayerSession.swift in Sources */ = {isa = PBXBuildFile; fileRef = 20B331CC55827FEF3420ABCE /* PlayerSession.swift */; };
    153 		8FEE38B2B540F0E91560747F /* PushPayloadCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33DE10D2A5AFBAC73469BD33 /* PushPayloadCipher.swift */; };
    154 		903681985C17FCB5F97773A9 /* OpenPuzzleBannerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8CA0FC750259EB1D762B0EE /* OpenPuzzleBannerTests.swift */; };
    155 		91703E54DB4679C1911BF994 /* Moves.swift in Sources */ = {isa = PBXBuildFile; fileRef = 86470163BFF956F3DE438506 /* Moves.swift */; };
    156 		924B29C1EEB29F849A6824C3 /* AboutView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 74C8886A66F0877858A67D62 /* AboutView.swift */; };
    157 		931431F8052FC58768C9BC26 /* FriendControllerNicknameReplayTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2E2702C74378FD2F14D1CE33 /* FriendControllerNicknameReplayTests.swift */; };
    158 		93DB3DD9A8EE994B92E7C084 /* GridView.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED48AD9C3A7A113D101BBD21 /* GridView.swift */; };
    159 		9502840161DB88BB6BB409D5 /* Journal.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF3D29B227D2B0E699423C48 /* Journal.swift */; };
    160 		95170ECF07E94E7581C2B66F /* ContentKeyDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAFA466405AABA1C06272795 /* ContentKeyDirectory.swift */; };
    161 		9582AA583F5EA008FFC82B64 /* ZoneOrphaningTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A9A01534A21796A4EC7113A9 /* ZoneOrphaningTests.swift */; };
    162 		95B4083F8BC2CA465077A662 /* PlayerColorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 23FCFFF1C2C7E909DFD8FC43 /* PlayerColorTests.swift */; };
    163 		95FDB86366A30C95C69D5A02 /* RevealConfirmationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71312F9248AA21238F7D5D6D /* RevealConfirmationTests.swift */; };
    164 		9789150602A3321D2E1E7E81 /* Media.xcassets in Resources */ = {isa = PBXBuildFile; fileRef = 0BF60C84D92A9024AC1A53FC /* Media.xcassets */; };
    165 		978F91DBAE94BC5DA1D94705 /* DriveMonitor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 70AD1A006E6D03E4429E3BF0 /* DriveMonitor.swift */; };
    166 		98F8FBF324ED00D53FEBB1DB /* Game.swift in Sources */ = {isa = PBXBuildFile; fileRef = 465F2BB469EFE84CF3733398 /* Game.swift */; };
    167 		9AACF424992AE45FD7937064 /* GameStoreCompletionLockTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0E230B327585E1E3A2921C92 /* GameStoreCompletionLockTests.swift */; };
    168 		9AD5700398B1C1F29A3A75F6 /* TipStoreTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C8D6991C1EBAB2C64D9DF669 /* TipStoreTests.swift */; };
    169 		9AD8936D94FD676B23DFBB77 /* RecentChanges.swift in Sources */ = {isa = PBXBuildFile; fileRef = 605CA0FC7AF069CE3A3B38C1 /* RecentChanges.swift */; };
    170 		9B1162B1714415FE58CBAE2C /* PersistenceControllerHealTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 54A448620E71515AAA7BA3DD /* PersistenceControllerHealTests.swift */; };
    171 		9C52C48DB4996D5C83DEC144 /* PuzzleView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 57B1734CF731C2E405A39159 /* PuzzleView.swift */; };
    172 		9CB8808193A4A106D721D767 /* XDFileType.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAC61E2582D94B1E6EC67136 /* XDFileType.swift */; };
    173 		9DDFDF9D97FFC4F043CE84D8 /* PuzzleFileReader.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE1A1BF1EBD7D9E4584EF5FE /* PuzzleFileReader.swift */; };
    174 		9DFE90A6D7C58823CA02CA4E /* InboundRecordIdentityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 08C434DB97DE2FBD8BEB867C /* InboundRecordIdentityTests.swift */; };
    175 		9FFD01CF6767220EEA20C0E4 /* GamePushCredentials.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78919F44C3035C48410FC894 /* GamePushCredentials.swift */; };
    176 		A0977C7B0B0D928DA569C326 /* NicknameDirectory.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3111803C8FFFB0C839217482 /* NicknameDirectory.swift */; };
    177 		A133A4B4A0C95AF8708BD7E6 /* PushClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8A9F9E7ED4E1AF02F0C71051 /* PushClient.swift */; };
    178 		A458AF9CA8579AB51B695B08 /* PendingChangeReapTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = BAEDA3C3765CD8D8897FE5D5 /* PendingChangeReapTests.swift */; };
    179 		A4BF96473CD6D937402239C1 /* NYTOverlaySlicer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A55219DFC3EEC971E3A8BA6D /* NYTOverlaySlicer.swift */; };
    180 		A65F99414F8CF6704567BB07 /* Archive.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8C18E9B47668E008BE4CF86 /* Archive.swift */; };
    181 		A78FF09708EDED7ED50BB55B /* PushPayloadTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E87E28DC9402A4369647DE50 /* PushPayloadTests.swift */; };
    182 		A7FA870D794CA00F7F3F05D2 /* EngagementHostEnvironment.swift in Sources */ = {isa = PBXBuildFile; fileRef = 400B3C87248F3FCA3F76400B /* EngagementHostEnvironment.swift */; };
    183 		A87E5E615559B6461B1C3F94 /* AnnouncementBanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD68E9CA9D3057FE07E985E1 /* AnnouncementBanner.swift */; };
    184 		A98382E7659991FAF0F4ED0A /* AuthorIdentityTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 457B06DBFDC358D213A7CE54 /* AuthorIdentityTests.swift */; };
    185 		AA38A51862FC0AB8F7D34899 /* NYTToXDConverterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C54223FED97577A593B7964E /* NYTToXDConverterTests.swift */; };
    186 		AACC9F70AEEDCB3360FFDEFF /* GridStateMergerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C7F3A9BD7FAF81CB77032A6 /* GridStateMergerTests.swift */; };
    187 		AC70BED45521BB77535C456C /* AppDelegatePushBufferTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48EC33BC7DDAC3B7F29C3F02 /* AppDelegatePushBufferTests.swift */; };
    188 		ADBEAD1C0139BCF864CA8A1D /* PuzzleCommands.swift in Sources */ = {isa = PBXBuildFile; fileRef = 89528AF69DE06C61FA8E91A1 /* PuzzleCommands.swift */; };
    189 		AE5D8C531F89F05B7201B3AC /* SessionMonitorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F64DAE64C9AA042B330C526F /* SessionMonitorTests.swift */; };
    190 		AE92B185FB52032AEB9421A1 /* AppActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = DAD36DEDB3D997AB47146EA9 /* AppActions.swift */; };
    191 		AF4F1AE2A1F94E92C785C524 /* Square.swift in Sources */ = {isa = PBXBuildFile; fileRef = DB851649DE78AAAC5A928C52 /* Square.swift */; };
    192 		B00743DAF8F46F14CE13E909 /* FriendsView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 298A9C54A1CC753E860E174E /* FriendsView.swift */; };
    193 		B0170C8927EDD2E43F849204 /* TimeLog.swift in Sources */ = {isa = PBXBuildFile; fileRef = AFFB5B2EFBB62B7021AC2FC2 /* TimeLog.swift */; };
    194 		B48DE7079BE2F31D2367C5F7 /* SessionPushPlanner.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA49DA9E0ADEB11A920787FA /* SessionPushPlanner.swift */; };
    195 		B5F78A55C9BCCD24E44D865F /* JournalReplay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 27ECEA51DE42D07495744EF8 /* JournalReplay.swift */; };
    196 		B6AB531F4E0C4031B627C539 /* PlayerSelectionPublisher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 11BF168D5C1CD85DAE5CAF9E /* PlayerSelectionPublisher.swift */; };
    197 		B762200F54C52E8377A80D15 /* NYTToXDConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = BF6F111BE8750697C4BC7A17 /* NYTToXDConverter.swift */; };
    198 		BA7FCA7D8713582B2396BE6B /* GridPosition.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9062DC673A2F5AC87FC417AB /* GridPosition.swift */; };
    199 		BAB41DBF7D099B1EE46B4ACB /* ClueBar.swift in Sources */ = {isa = PBXBuildFile; fileRef = E935CE4384F3B67CC22EEBAC /* ClueBar.swift */; };
    200 		BCB9A4D5E06EE5006186465D /* ShareController.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5C74683332956B0D1CA37589 /* ShareController.swift */; };
    201 		BD317ECC09C9099AC29B8C5D /* FriendAvatarView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 065CD67A1D9F7B63AE6B42D6 /* FriendAvatarView.swift */; };
    202 		BE57957589423497338EBD37 /* ShareRoutingTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 68072F4F3EB5D5A78E03D408 /* ShareRoutingTests.swift */; };
    203 		C1930083671621AC79CF95DD /* MovesUpdaterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9AF6157D97271205626E207C /* MovesUpdaterTests.swift */; };
    204 		C1D97A4CD02BC9C22C4208BB /* NYTAuthServiceTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = ED8154F949E1D94252F70765 /* NYTAuthServiceTests.swift */; };
    205 		C30C0C4E54E4209A22843872 /* CrossmateModel.xcdatamodeld in Sources */ = {isa = PBXBuildFile; fileRef = F93AC31640C40FCC039570A3 /* CrossmateModel.xcdatamodeld */; };
    206 		C472EF02D8C7B0AC1D2284B8 /* CustomButtons.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9B757D86362CD6F0500E9CB /* CustomButtons.swift */; };
    207 		C4D4433FAC1BBE14388FBCC9 /* ChronicleLedger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 48328BAB53475A2063429A98 /* ChronicleLedger.swift */; };
    208 		C511387D9FFBCC2E2F5EF699 /* NotificationService.appex in Embed Foundation Extensions */ = {isa = PBXBuildFile; fileRef = 51318FC5DAE02D35CB005729 /* NotificationService.appex */; settings = {ATTRIBUTES = (CodeSignOnCopy, RemoveHeadersOnCopy, ); }; };
    209 		C58F15CBEADA72032B54009D /* ReplayControlsTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 847415468DBB1C566D18BC17 /* ReplayControlsTests.swift */; };
    210 		C6CC673F2D4BB8A1C0439FBB /* PushClientTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 63AE7146492AD286EF13C3E7 /* PushClientTests.swift */; };
    211 		C843CADAA263CED503528A4E /* NYTBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3413F8755236FC0578AF8109 /* NYTBrowseView.swift */; };
    212 		C89A15D812E372FE1C56039B /* PUZToXDConverterTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = FDE193CAB325C991952D7CE5 /* PUZToXDConverterTests.swift */; };
    213 		C8ACF431021E7BEE61A99153 /* FriendController.swift in Sources */ = {isa = PBXBuildFile; fileRef = E655698481325C92EF5C348B /* FriendController.swift */; };
    214 		C9864C9940C9DAAD0A788094 /* ReplayLoader.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3FFD574AC2D0A910053E2A73 /* ReplayLoader.swift */; };
    215 		CABF8BFAA30B9F26C482FAB9 /* EngagementCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8FDE03B4A77A8095ED2C23AB /* EngagementCoordinator.swift */; };
    216 		CC250D6BA9B41CB722D8A62E /* CloudService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56BC76178319D0D669CD50FF /* CloudService.swift */; };
    217 		CCF3867C32C3F36E4F69A59E /* DebuggingMonitors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 16E1DA8C1B4E73AFB779CC06 /* DebuggingMonitors.swift */; };
    218 		CED9627EAF70673B339D85EF /* AppDefaultsMigrator.swift in Sources */ = {isa = PBXBuildFile; fileRef = CA74C894ECCA1A176DD5B2F8 /* AppDefaultsMigrator.swift */; };
    219 		CEDF853009D0C367035F1F76 /* PlayerNamePublisherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DE04D53EC3BC7D2DA0093C3 /* PlayerNamePublisherTests.swift */; };
    220 		CF0CA17ABE211DAE4DD35AFD /* RecordSerializer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0C0A7348E1283E7CD2486E2A /* RecordSerializer.swift */; };
    221 		CF1DC343A5D3110EDFA703AB /* LastUpdatedView.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF3B7E191D571FD800A4D719 /* LastUpdatedView.swift */; };
    222 		CF56BBB90855367CB85FEB43 /* PUZToXDConverter.swift in Sources */ = {isa = PBXBuildFile; fileRef = B369788E0FEA0DCE1B125816 /* PUZToXDConverter.swift */; };
    223 		D05F1B226E67A31218BA4E3A /* InvitationFailureCallout.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2494B62495C8048ED64072E2 /* InvitationFailureCallout.swift */; };
    224 		D13ECFAE05DB508577D2FF66 /* RecordBuilder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5267DDA1A330DCBD07303D44 /* RecordBuilder.swift */; };
    225 		D240BF6498A9148855DB7734 /* EngagementLifecycle.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4DB0580C9B7C778F34BE6AC2 /* EngagementLifecycle.swift */; };
    226 		D2AC1D9BD7E387B06B9B8A0E /* PuzzleHeader.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBA3FB1334DB816E62B7D9B /* PuzzleHeader.swift */; };
    227 		D3E5B61C695CE3DDA7016E47 /* FriendInviteRecencyStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = D4D705650CD98E8BB20AC4AD /* FriendInviteRecencyStore.swift */; };
    228 		D4EDC0D426688B295DA77C08 /* ShareLinkRoute.swift in Sources */ = {isa = PBXBuildFile; fileRef = E2ED0D601BB574618C15B5EF /* ShareLinkRoute.swift */; };
    229 		D5022BFB2F8F2E5904EDF5C8 /* GameCardView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F34401948BC53DA9C93D64B /* GameCardView.swift */; };
    230 		D519F54F8CE0BD53D9C6144C /* AppServicesAnnouncementTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9998739ED0875A17271B7899 /* AppServicesAnnouncementTests.swift */; };
    231 		D58980B92C99122C368D4216 /* GameStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93EE5BA78566EDED68D846AB /* GameStore.swift */; };
    232 		D94FF5DFB9412D2DC24F6574 /* RecordApplier.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD63A9B20168F3B81AF4348F /* RecordApplier.swift */; };
    233 		DAD7EA11DA7330773A485473 /* PeerChangeLedgerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = D243575E32A8663B1AAF492A /* PeerChangeLedgerTests.swift */; };
    234 		DB098F40C6950E29B4BF10A7 /* ArchiveTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B9EA9CF96312BFF5340CE2A7 /* ArchiveTests.swift */; };
    235 		DCAA1C4A4E4943675EC6632A /* NYTPuzzleFetcherTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = A0CCED43B365363662C45A30 /* NYTPuzzleFetcherTests.swift */; };
    236 		DDC7994B951A3A7B836B36F6 /* SuccessPanel.swift in Sources */ = {isa = PBXBuildFile; fileRef = 41A62DA6F7138876CA5A27EF /* SuccessPanel.swift */; };
    237 		DE90CC8BE23A0EFC4A32FFA5 /* MovesInboundTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = EF1254FE7BE3672AEC1607B1 /* MovesInboundTests.swift */; };
    238 		DE9E4FAB098731A650F2D306 /* CrossmateApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14F2AC5C3B50F4178859E9AC /* CrossmateApp.swift */; };
    239 		E15A40AA623B60279E8DDF43 /* CloudDiagnostics.swift in Sources */ = {isa = PBXBuildFile; fileRef = 07E5E4B165E374FEE732068B /* CloudDiagnostics.swift */; };
    240 		E16A8FE849A8E8BCC0F32280 /* CloudZones.swift in Sources */ = {isa = PBXBuildFile; fileRef = 44F86F0F1883A93F9622FB67 /* CloudZones.swift */; };
    241 		E1FBC33E3348547D4DF946C4 /* ReplayControls.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50EE8A159CC553623F6F7DE4 /* ReplayControls.swift */; };
    242 		E354A588DBA74627A9CD5591 /* Presence.swift in Sources */ = {isa = PBXBuildFile; fileRef = CFC4FF046BF772646B5CA73F /* Presence.swift */; };
    243 		E454051BA4797000C8AD2B48 /* MovesCodecLegacyDecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4B33C21324E1474BCC126AA0 /* MovesCodecLegacyDecodeTests.swift */; };
    244 		E632562D090D8BE907F28C53 /* NotificationStateTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 47532AED239AEF476D8E9206 /* NotificationStateTests.swift */; };
    245 		E6A13F8736ABF41F6346E301 /* ParticipantSummaries.swift in Sources */ = {isa = PBXBuildFile; fileRef = FED7C2528355BC007E48B7EF /* ParticipantSummaries.swift */; };
    246 		E81F92AAB2968997C3D68809 /* PuzzleNotificationText.swift in Sources */ = {isa = PBXBuildFile; fileRef = CE7CEB8980A9664BAAA5D196 /* PuzzleNotificationText.swift */; };
    247 		E91FB8101E1927CA567DE825 /* PuzzleSource.swift in Sources */ = {isa = PBXBuildFile; fileRef = E7AFD37B03A1C2E23E5766E6 /* PuzzleSource.swift */; };
    248 		E9A65F3548DD062FD36A19E1 /* CellPatterns.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F13534332699C80382FE682 /* CellPatterns.swift */; };
    249 		EA0AA522F6C383034C4572F4 /* AccountPushCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 03D59EA74A4BA084AD97478D /* AccountPushCoordinator.swift */; };
    250 		EA9DA088AF131B0E6A874E70 /* NYTOverlaySlicerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7845E863A179DBB0B932C234 /* NYTOverlaySlicerTests.swift */; };
    251 		EB6E99226D5EE27668787008 /* BadgeCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D5B1E8E12B86DF6CA478F65 /* BadgeCoordinator.swift */; };
    252 		ECC1A5C3623F50B67185CFFB /* RecordSerializerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7E4DEAF9F7887CBB46A99E8E /* RecordSerializerTests.swift */; };
    253 		ED6C21CD9F5AB286B69A02E4 /* GridStateMerger.swift in Sources */ = {isa = PBXBuildFile; fileRef = 14B05C19BD4705876B3DF0EC /* GridStateMerger.swift */; };
    254 		F15591B48E4155CB19C1F084 /* TimeLogTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7F35A7BFE52279BC24677F5 /* TimeLogTests.swift */; };
    255 		F1854B64C63447B7C7232097 /* DiagnosticsReport.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D36E66AE489DC5C5FB85E19 /* DiagnosticsReport.swift */; };
    256 		F2F7CB23DA62BF714632B097 /* PushRequestAuthenticator.swift in Sources */ = {isa = PBXBuildFile; fileRef = FAF6E3F3558E128E7A482A61 /* PushRequestAuthenticator.swift */; };
    257 		F30141060E0F670CD329FF22 /* GameStoreLibraryDatesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 12EEFC257DA9F0E4C4C6B814 /* GameStoreLibraryDatesTests.swift */; };
    258 		F34EDFD45E2F5006807DDAC7 /* PuzzleCatalogTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = B8560440C548752EE93E0ED9 /* PuzzleCatalogTests.swift */; };
    259 		F46733AB3C72749A4A992667 /* SyncState+Helpers.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9A49C3C31F49A85764B84A15 /* SyncState+Helpers.swift */; };
    260 		F5F333B36654AEAF69A3C220 /* MovesJournalTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78C92190C4A344EC319A0F88 /* MovesJournalTests.swift */; };
    261 		F627D68B521FEA85EB80A850 /* CalendarDayCell.swift in Sources */ = {isa = PBXBuildFile; fileRef = CF20BDF7FF6423BA4FD911D5 /* CalendarDayCell.swift */; };
    262 		F8A4B3A1F9601654C60550B3 /* PushPayload.swift in Sources */ = {isa = PBXBuildFile; fileRef = C2C9D3E7FCE2D42C5B7E3856 /* PushPayload.swift */; };
    263 		F8D37DBE75D7B3F039A8FAC8 /* ImportedBrowseView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2A832061C19BA0F073617CA2 /* ImportedBrowseView.swift */; };
    264 		F8DDA34AC1A6B6499C5D222E /* PlayerPreferences.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46148CF0F4D719692F81A6EC /* PlayerPreferences.swift */; };
    265 		FC480FE2930EAE406F5BBBDA /* GameRowView.swift in Sources */ = {isa = PBXBuildFile; fileRef = DBD2570A5A3573D66B3C4A52 /* GameRowView.swift */; };
    266 		FC4853B4261B06945D0D1470 /* PushPayloadCipher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33DE10D2A5AFBAC73469BD33 /* PushPayloadCipher.swift */; };
    267 		FE447FF4339EA0BF874B1114 /* InviteDeliveryStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 28AB8C4D560CA5D4E4C61750 /* InviteDeliveryStore.swift */; };
    268 /* End PBXBuildFile section */
    269 
    270 /* Begin PBXContainerItemProxy section */
    271 		0751E0359C340223ADBA2B05 /* PBXContainerItemProxy */ = {
    272 			isa = PBXContainerItemProxy;
    273 			containerPortal = 9167165F088B7698D1319D3C /* Project object */;
    274 			proxyType = 1;
    275 			remoteGlobalIDString = 350366A68B75DC4BDA91F8E5;
    276 			remoteInfo = NotificationService;
    277 		};
    278 		F0122CF3E216720C4437CE6A /* PBXContainerItemProxy */ = {
    279 			isa = PBXContainerItemProxy;
    280 			containerPortal = 9167165F088B7698D1319D3C /* Project object */;
    281 			proxyType = 1;
    282 			remoteGlobalIDString = 7708D1C8A0145D43BD15DEB7;
    283 			remoteInfo = Crossmate;
    284 		};
    285 /* End PBXContainerItemProxy section */
    286 
    287 /* Begin PBXCopyFilesBuildPhase section */
    288 		2768812850886EB633B6C27C /* Embed Foundation Extensions */ = {
    289 			isa = PBXCopyFilesBuildPhase;
    290 			buildActionMask = 2147483647;
    291 			dstPath = "";
    292 			dstSubfolderSpec = 13;
    293 			files = (
    294 				C511387D9FFBCC2E2F5EF699 /* NotificationService.appex in Embed Foundation Extensions */,
    295 			);
    296 			name = "Embed Foundation Extensions";
    297 			runOnlyForDeploymentPostprocessing = 0;
    298 		};
    299 /* End PBXCopyFilesBuildPhase section */
    300 
    301 /* Begin PBXFileReference section */
    302 		03D59EA74A4BA084AD97478D /* AccountPushCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountPushCoordinator.swift; sourceTree = "<group>"; };
    303 		057F2B8B8A894D08BB801219 /* ShareLinkShortenerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareLinkShortenerTests.swift; sourceTree = "<group>"; };
    304 		065CD67A1D9F7B63AE6B42D6 /* FriendAvatarView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendAvatarView.swift; sourceTree = "<group>"; };
    305 		07E5E4B165E374FEE732068B /* CloudDiagnostics.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudDiagnostics.swift; sourceTree = "<group>"; };
    306 		08C434DB97DE2FBD8BEB867C /* InboundRecordIdentityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InboundRecordIdentityTests.swift; sourceTree = "<group>"; };
    307 		08E8592B1CB1336E63498706 /* PeerPresenceGraceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerPresenceGraceTests.swift; sourceTree = "<group>"; };
    308 		09C81EFA0B7776CB9713CD63 /* NewGameSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NewGameSheet.swift; sourceTree = "<group>"; };
    309 		09EA25E2AE98ACD029EC0129 /* GameStoreContributingDevicesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreContributingDevicesTests.swift; sourceTree = "<group>"; };
    310 		0BDC16DA7F762F4C5F4BED14 /* Config.xcconfig */ = {isa = PBXFileReference; lastKnownFileType = text.xcconfig; path = Config.xcconfig; sourceTree = "<group>"; };
    311 		0BF60C84D92A9024AC1A53FC /* Media.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = Media.xcassets; sourceTree = "<group>"; };
    312 		0C0A7348E1283E7CD2486E2A /* RecordSerializer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordSerializer.swift; sourceTree = "<group>"; };
    313 		0C190EA5717C291B3F2AE46C /* SyncMonitorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncMonitorTests.swift; sourceTree = "<group>"; };
    314 		0DF9C2FEF0D3584864DFC967 /* PuzzleNotificationText+GameEntity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "PuzzleNotificationText+GameEntity.swift"; sourceTree = "<group>"; };
    315 		0E230B327585E1E3A2921C92 /* GameStoreCompletionLockTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreCompletionLockTests.swift; sourceTree = "<group>"; };
    316 		0EB332831AB173ACF6BFEC59 /* SessionMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionMonitor.swift; sourceTree = "<group>"; };
    317 		0F8AAA9540C80F787A1465C0 /* MailComposeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MailComposeView.swift; sourceTree = "<group>"; };
    318 		0FD9A43789D0ED123F7A99B0 /* CheckResult.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CheckResult.swift; sourceTree = "<group>"; };
    319 		10064D171DB7C48D3DE1E769 /* InviteCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InviteCoordinator.swift; sourceTree = "<group>"; };
    320 		11BF168D5C1CD85DAE5CAF9E /* PlayerSelectionPublisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSelectionPublisher.swift; sourceTree = "<group>"; };
    321 		122BC1863D12DE06388D5DA7 /* GameStoreMergedAuthorCellsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreMergedAuthorCellsTests.swift; sourceTree = "<group>"; };
    322 		12EEFC257DA9F0E4C4C6B814 /* GameStoreLibraryDatesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreLibraryDatesTests.swift; sourceTree = "<group>"; };
    323 		14B05C19BD4705876B3DF0EC /* GridStateMerger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridStateMerger.swift; sourceTree = "<group>"; };
    324 		14F2AC5C3B50F4178859E9AC /* CrossmateApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CrossmateApp.swift; sourceTree = "<group>"; };
    325 		16AAC1E8D2CB3B5117159934 /* CloudQuery.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudQuery.swift; sourceTree = "<group>"; };
    326 		16E1DA8C1B4E73AFB779CC06 /* DebuggingMonitors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DebuggingMonitors.swift; sourceTree = "<group>"; };
    327 		1747D4DCB4BCC831069BBE07 /* NYTLoginView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTLoginView.swift; sourceTree = "<group>"; };
    328 		1813630FA05C194AFF43855C /* PlayerRosterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerRosterTests.swift; sourceTree = "<group>"; };
    329 		18C701DAE36000DE19F7CC95 /* EngagementHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementHost.swift; sourceTree = "<group>"; };
    330 		1B7539E0AD285C5A3AC3DDA2 /* GameArchiver.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameArchiver.swift; sourceTree = "<group>"; };
    331 		1C08795365FABCC11A6C6E28 /* XDDecorationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDDecorationTests.swift; sourceTree = "<group>"; };
    332 		1D3ECD0DE71BE567BCEE15F6 /* AnnouncementCenter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnouncementCenter.swift; sourceTree = "<group>"; };
    333 		20B331CC55827FEF3420ABCE /* PlayerSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSession.swift; sourceTree = "<group>"; };
    334 		23A7390848B1943C80142934 /* PuzzleGridStats.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleGridStats.swift; sourceTree = "<group>"; };
    335 		23FCFFF1C2C7E909DFD8FC43 /* PlayerColorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerColorTests.swift; sourceTree = "<group>"; };
    336 		2494B62495C8048ED64072E2 /* InvitationFailureCallout.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InvitationFailureCallout.swift; sourceTree = "<group>"; };
    337 		24A4B5C8EC4A46906C07F819 /* GameEntity+ContentKey.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "GameEntity+ContentKey.swift"; sourceTree = "<group>"; };
    338 		275DB12E9D81DD48B9025718 /* GameSyncVersion.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameSyncVersion.swift; sourceTree = "<group>"; };
    339 		27ECEA51DE42D07495744EF8 /* JournalReplay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JournalReplay.swift; sourceTree = "<group>"; };
    340 		283C5C97180C805B6C5BF622 /* PerGameZoneTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PerGameZoneTests.swift; sourceTree = "<group>"; };
    341 		28AB8C4D560CA5D4E4C61750 /* InviteDeliveryStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InviteDeliveryStore.swift; sourceTree = "<group>"; };
    342 		29686FFBC5BC8BCCF8CCC49A /* DriveMonitorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DriveMonitorTests.swift; sourceTree = "<group>"; };
    343 		298A9C54A1CC753E860E174E /* FriendsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendsView.swift; sourceTree = "<group>"; };
    344 		2A832061C19BA0F073617CA2 /* ImportedBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportedBrowseView.swift; sourceTree = "<group>"; };
    345 		2D2FD896D75863554E31654C /* NotificationState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationState.swift; sourceTree = "<group>"; };
    346 		2D36E66AE489DC5C5FB85E19 /* DiagnosticsReport.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiagnosticsReport.swift; sourceTree = "<group>"; };
    347 		2D5B1E8E12B86DF6CA478F65 /* BadgeCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BadgeCoordinator.swift; sourceTree = "<group>"; };
    348 		2DD9C72266D1BAC43C8976C0 /* JournalUploadTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JournalUploadTests.swift; sourceTree = "<group>"; };
    349 		2E2702C74378FD2F14D1CE33 /* FriendControllerNicknameReplayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendControllerNicknameReplayTests.swift; sourceTree = "<group>"; };
    350 		3059A4C23D040E0D1F258B92 /* CellAccessibilityDescriberTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellAccessibilityDescriberTests.swift; sourceTree = "<group>"; };
    351 		3111803C8FFFB0C839217482 /* NicknameDirectory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NicknameDirectory.swift; sourceTree = "<group>"; };
    352 		31C534911020BE4ED2E5065D /* GameStoreUnreadMovesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreUnreadMovesTests.swift; sourceTree = "<group>"; };
    353 		3292748EAE27B608C769D393 /* PlayerRoster.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerRoster.swift; sourceTree = "<group>"; };
    354 		33878A29B09A6154C7A63C82 /* KeychainHelper.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeychainHelper.swift; sourceTree = "<group>"; };
    355 		33DE10D2A5AFBAC73469BD33 /* PushPayloadCipher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushPayloadCipher.swift; sourceTree = "<group>"; };
    356 		3413F8755236FC0578AF8109 /* NYTBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTBrowseView.swift; sourceTree = "<group>"; };
    357 		362E3A93102B6C9AECD4133A /* PuzzleSessionTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleSessionTests.swift; sourceTree = "<group>"; };
    358 		382F9AAB0B98B4A78E255F15 /* DecorationRenderingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecorationRenderingTests.swift; sourceTree = "<group>"; };
    359 		3FDE73AD7C543B29C8E493F8 /* KeyboardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = KeyboardView.swift; sourceTree = "<group>"; };
    360 		3FFD574AC2D0A910053E2A73 /* ReplayLoader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplayLoader.swift; sourceTree = "<group>"; };
    361 		400B3C87248F3FCA3F76400B /* EngagementHostEnvironment.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementHostEnvironment.swift; sourceTree = "<group>"; };
    362 		41A62DA6F7138876CA5A27EF /* SuccessPanel.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SuccessPanel.swift; sourceTree = "<group>"; };
    363 		43DC132D49361C56DE79C13E /* GameMutator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameMutator.swift; sourceTree = "<group>"; };
    364 		443BF6DF77C8226313EE9564 /* RecordSerializerMovesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordSerializerMovesTests.swift; sourceTree = "<group>"; };
    365 		4494C40DD593DA7CE6641027 /* ImportServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportServiceTests.swift; sourceTree = "<group>"; };
    366 		44F86F0F1883A93F9622FB67 /* CloudZones.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudZones.swift; sourceTree = "<group>"; };
    367 		457B06DBFDC358D213A7CE54 /* AuthorIdentityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorIdentityTests.swift; sourceTree = "<group>"; };
    368 		46148CF0F4D719692F81A6EC /* PlayerPreferences.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerPreferences.swift; sourceTree = "<group>"; };
    369 		462CE0FD356F6137C9BFD30F /* ImportService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ImportService.swift; sourceTree = "<group>"; };
    370 		465F2BB469EFE84CF3733398 /* Game.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Game.swift; sourceTree = "<group>"; };
    371 		46801B570FC0B2C791ECDED3 /* PlayerSessionNavigationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSessionNavigationTests.swift; sourceTree = "<group>"; };
    372 		47532AED239AEF476D8E9206 /* NotificationStateTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationStateTests.swift; sourceTree = "<group>"; };
    373 		48328BAB53475A2063429A98 /* ChronicleLedger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ChronicleLedger.swift; sourceTree = "<group>"; };
    374 		48EC33BC7DDAC3B7F29C3F02 /* AppDelegatePushBufferTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDelegatePushBufferTests.swift; sourceTree = "<group>"; };
    375 		4A467BC00116EEC8500BE6A1 /* PersistenceRecoveryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceRecoveryTests.swift; sourceTree = "<group>"; };
    376 		4B166E87D13C41C4D3575169 /* AccountPushCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AccountPushCoordinatorTests.swift; sourceTree = "<group>"; };
    377 		4B33C21324E1474BCC126AA0 /* MovesCodecLegacyDecodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesCodecLegacyDecodeTests.swift; sourceTree = "<group>"; };
    378 		4DB0580C9B7C778F34BE6AC2 /* EngagementLifecycle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementLifecycle.swift; sourceTree = "<group>"; };
    379 		4DC7784917397BCD6B8D679D /* PuzzleCatalog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleCatalog.swift; sourceTree = "<group>"; };
    380 		4F4EBC0F07FF815274C028CA /* XDAcceptTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDAcceptTests.swift; sourceTree = "<group>"; };
    381 		507B4DC893CE8AC4778CBACE /* NotificationService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationService.swift; sourceTree = "<group>"; };
    382 		50EE8A159CC553623F6F7DE4 /* ReplayControls.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplayControls.swift; sourceTree = "<group>"; };
    383 		51318FC5DAE02D35CB005729 /* NotificationService.appex */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = "wrapper.app-extension"; path = NotificationService.appex; sourceTree = BUILT_PRODUCTS_DIR; };
    384 		51583D7304A586BF38F0D8E3 /* FriendInviteRecencyStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendInviteRecencyStoreTests.swift; sourceTree = "<group>"; };
    385 		5267DDA1A330DCBD07303D44 /* RecordBuilder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordBuilder.swift; sourceTree = "<group>"; };
    386 		52B50A841D92D1F2B173E7DF /* ShareLinkShortener.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareLinkShortener.swift; sourceTree = "<group>"; };
    387 		54A448620E71515AAA7BA3DD /* PersistenceControllerHealTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceControllerHealTests.swift; sourceTree = "<group>"; };
    388 		56BC76178319D0D669CD50FF /* CloudService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudService.swift; sourceTree = "<group>"; };
    389 		570F8FE85CC46CE3CB5CFEC1 /* NYTOverlayLetterRecognizer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTOverlayLetterRecognizer.swift; sourceTree = "<group>"; };
    390 		57B1734CF731C2E405A39159 /* PuzzleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleView.swift; sourceTree = "<group>"; };
    391 		5990D989AD745211A18848E4 /* ShareLinkRouteTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareLinkRouteTests.swift; sourceTree = "<group>"; };
    392 		5C74683332956B0D1CA37589 /* ShareController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareController.swift; sourceTree = "<group>"; };
    393 		5C838C184A0C7B1B0A9821CE /* PlayerRecordPresenceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerRecordPresenceTests.swift; sourceTree = "<group>"; };
    394 		5CBEE60E9D850739CA3D01AA /* MarketingScreenshots.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MarketingScreenshots.swift; sourceTree = "<group>"; };
    395 		5DE04D53EC3BC7D2DA0093C3 /* PlayerNamePublisherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerNamePublisherTests.swift; sourceTree = "<group>"; };
    396 		5E6BB07A54A3C3AF6F210F49 /* CloudJoinFailureTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudJoinFailureTests.swift; sourceTree = "<group>"; };
    397 		603E6FC55F1BD944592379D2 /* ReplayCacheTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplayCacheTests.swift; sourceTree = "<group>"; };
    398 		605CA0FC7AF069CE3A3B38C1 /* RecentChanges.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecentChanges.swift; sourceTree = "<group>"; };
    399 		60E818B0F4689BAD57660B7C /* GameCursorStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameCursorStoreTests.swift; sourceTree = "<group>"; };
    400 		630A65B1CCFEFEA825D3DD41 /* PushRequestAuthenticatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushRequestAuthenticatorTests.swift; sourceTree = "<group>"; };
    401 		63AE7146492AD286EF13C3E7 /* PushClientTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushClientTests.swift; sourceTree = "<group>"; };
    402 		64C8064F04FC6177D987ACA2 /* Puzzle.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Puzzle.swift; sourceTree = "<group>"; };
    403 		663934F0B7CA8BDD462DFAA4 /* GameShareItem.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameShareItem.swift; sourceTree = "<group>"; };
    404 		67CFF96D54D2DE9C44EB120A /* EngagementCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementCoordinatorTests.swift; sourceTree = "<group>"; };
    405 		68072F4F3EB5D5A78E03D408 /* ShareRoutingTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareRoutingTests.swift; sourceTree = "<group>"; };
    406 		6940546CFA1E87EF814AA6BB /* HardwareKeyboardInputView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = HardwareKeyboardInputView.swift; sourceTree = "<group>"; };
    407 		6B1F07B5DDE2A8B49B28392A /* GridThumbnailView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridThumbnailView.swift; sourceTree = "<group>"; };
    408 		6BDD06460A76D4AF31077732 /* InputMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = InputMonitor.swift; sourceTree = "<group>"; };
    409 		6C793B5B9684D49328E42129 /* PushPayloadCipherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushPayloadCipherTests.swift; sourceTree = "<group>"; };
    410 		6C7F3A9BD7FAF81CB77032A6 /* GridStateMergerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridStateMergerTests.swift; sourceTree = "<group>"; };
    411 		6F0B4F65D017C1FBAC3B23DF /* PlayerSelection.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSelection.swift; sourceTree = "<group>"; };
    412 		6F34401948BC53DA9C93D64B /* GameCardView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameCardView.swift; sourceTree = "<group>"; };
    413 		7023E506D777DB80B18A7DB5 /* BundledBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = BundledBrowseView.swift; sourceTree = "<group>"; };
    414 		70AD1A006E6D03E4429E3BF0 /* DriveMonitor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DriveMonitor.swift; sourceTree = "<group>"; };
    415 		710BCB6A647A820B106CE666 /* PuzzleSession.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleSession.swift; sourceTree = "<group>"; };
    416 		71312F9248AA21238F7D5D6D /* RevealConfirmationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RevealConfirmationTests.swift; sourceTree = "<group>"; };
    417 		71DFD035381B6252DCD873C9 /* PlayerNamePublisher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerNamePublisher.swift; sourceTree = "<group>"; };
    418 		73DDDED719CFFDD6035C3B48 /* SyncEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SyncEngine.swift; sourceTree = "<group>"; };
    419 		74C8886A66F0877858A67D62 /* AboutView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AboutView.swift; sourceTree = "<group>"; };
    420 		7845E863A179DBB0B932C234 /* NYTOverlaySlicerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTOverlaySlicerTests.swift; sourceTree = "<group>"; };
    421 		78919F44C3035C48410FC894 /* GamePushCredentials.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GamePushCredentials.swift; sourceTree = "<group>"; };
    422 		78C92190C4A344EC319A0F88 /* MovesJournalTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesJournalTests.swift; sourceTree = "<group>"; };
    423 		7A4AFF292381C9B33C0F2CD6 /* FriendZone.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendZone.swift; sourceTree = "<group>"; };
    424 		7A7BD8DFDB41BFBA694A0933 /* SessionCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionCoordinator.swift; sourceTree = "<group>"; };
    425 		7B3E1A382B24A7803701D947 /* Crossmate.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Crossmate.entitlements; sourceTree = "<group>"; };
    426 		7B5A8118AC2FE60D877F1D29 /* GamePushCredentialsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GamePushCredentialsTests.swift; sourceTree = "<group>"; };
    427 		7B8B65482CA1739A3863A99E /* ClueList.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClueList.swift; sourceTree = "<group>"; };
    428 		7C6AB016CA4E2FC69A0E6A4F /* SettingsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SettingsView.swift; sourceTree = "<group>"; };
    429 		7DD270E16E00145EF2807EA9 /* MovesUpdater.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesUpdater.swift; sourceTree = "<group>"; };
    430 		7E4DEAF9F7887CBB46A99E8E /* RecordSerializerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordSerializerTests.swift; sourceTree = "<group>"; };
    431 		800CCFBE90554F287E765755 /* FriendZoneTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendZoneTests.swift; sourceTree = "<group>"; };
    432 		80B377D237AC14B9856579E1 /* RecentChangesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecentChangesTests.swift; sourceTree = "<group>"; };
    433 		833AAFBA0094BAB27E13FE29 /* FriendEncryptionKeyDirectory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendEncryptionKeyDirectory.swift; sourceTree = "<group>"; };
    434 		836B8D4B351C9225162A82C0 /* Layouts.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Layouts.swift; sourceTree = "<group>"; };
    435 		847415468DBB1C566D18BC17 /* ReplayControlsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ReplayControlsTests.swift; sourceTree = "<group>"; };
    436 		86470163BFF956F3DE438506 /* Moves.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Moves.swift; sourceTree = "<group>"; };
    437 		88E8AACB638FE5724B534B41 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
    438 		89528AF69DE06C61FA8E91A1 /* PuzzleCommands.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleCommands.swift; sourceTree = "<group>"; };
    439 		89B1FFD2F90141EA949A8540 /* JournalReplayTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JournalReplayTests.swift; sourceTree = "<group>"; };
    440 		8A9F9E7ED4E1AF02F0C71051 /* PushClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushClient.swift; sourceTree = "<group>"; };
    441 		8C040D5EBC73B1ED47C2C9D4 /* SessionPushPlannerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionPushPlannerTests.swift; sourceTree = "<group>"; };
    442 		8D2AD5021F1AF0DB44FA4540 /* GameCursorStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameCursorStore.swift; sourceTree = "<group>"; };
    443 		8D4A76B233E16B7C5A248EB7 /* TipStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TipStore.swift; sourceTree = "<group>"; };
    444 		8FDE03B4A77A8095ED2C23AB /* EngagementCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementCoordinator.swift; sourceTree = "<group>"; };
    445 		9062DC673A2F5AC87FC417AB /* GridPosition.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridPosition.swift; sourceTree = "<group>"; };
    446 		92168360625ECDD36FF50EE8 /* NicknameDirectoryTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NicknameDirectoryTests.swift; sourceTree = "<group>"; };
    447 		927186458ED03FD0C5660765 /* CrossmateModel.xcdatamodel */ = {isa = PBXFileReference; lastKnownFileType = wrapper.xcdatamodel; path = CrossmateModel.xcdatamodel; sourceTree = "<group>"; };
    448 		93EE5BA78566EDED68D846AB /* GameStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStore.swift; sourceTree = "<group>"; };
    449 		9406C27662147CD3C0783644 /* GameViewedStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewedStoreTests.swift; sourceTree = "<group>"; };
    450 		9447F0FE34C63810C6F1D8BE /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist; path = Info.plist; sourceTree = "<group>"; };
    451 		94CEBA27A8AC4FCC92ADE1B4 /* EnsureGameEntityTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EnsureGameEntityTests.swift; sourceTree = "<group>"; };
    452 		960353A6F38DD290112A2FE1 /* RemoteCoordinateValidationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RemoteCoordinateValidationTests.swift; sourceTree = "<group>"; };
    453 		978A96CC6F550ED7A73F8D96 /* AnnouncementCenterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnouncementCenterTests.swift; sourceTree = "<group>"; };
    454 		98E68FD021EF8ED50BC706EE /* CloudContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CloudContainer.swift; sourceTree = "<group>"; };
    455 		9998739ED0875A17271B7899 /* AppServicesAnnouncementTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppServicesAnnouncementTests.swift; sourceTree = "<group>"; };
    456 		99F4D2E1504784E738D2B33A /* AppDefaultsMigratorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDefaultsMigratorTests.swift; sourceTree = "<group>"; };
    457 		9A49C3C31F49A85764B84A15 /* SyncState+Helpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "SyncState+Helpers.swift"; sourceTree = "<group>"; };
    458 		9A56778AF8190F0D7EB2E27E /* GameStorePushAddressTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStorePushAddressTests.swift; sourceTree = "<group>"; };
    459 		9AF6157D97271205626E207C /* MovesUpdaterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesUpdaterTests.swift; sourceTree = "<group>"; };
    460 		9B3E0C62CBF5ADF7C01C1D54 /* EngagementMessageAuthenticator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementMessageAuthenticator.swift; sourceTree = "<group>"; };
    461 		9F13534332699C80382FE682 /* CellPatterns.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellPatterns.swift; sourceTree = "<group>"; };
    462 		9F6DB4116933BB66274AC6E8 /* XDLimitsTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDLimitsTests.swift; sourceTree = "<group>"; };
    463 		9F8D856707B4D76FDBF4AE69 /* FriendEntity+DisplayName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "FriendEntity+DisplayName.swift"; sourceTree = "<group>"; };
    464 		A0CCED43B365363662C45A30 /* NYTPuzzleFetcherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTPuzzleFetcherTests.swift; sourceTree = "<group>"; };
    465 		A24FD313982C8094CD020106 /* EngagementMessageAuthenticatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementMessageAuthenticatorTests.swift; sourceTree = "<group>"; };
    466 		A253416F4FEA271A80B22A73 /* NYTAuthService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTAuthService.swift; sourceTree = "<group>"; };
    467 		A3A251D89028B3CA065DE053 /* PuzzleScoreboard.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleScoreboard.swift; sourceTree = "<group>"; };
    468 		A55219DFC3EEC971E3A8BA6D /* NYTOverlaySlicer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTOverlaySlicer.swift; sourceTree = "<group>"; };
    469 		A61768D423564A9080414A38 /* NoticeView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NoticeView.swift; sourceTree = "<group>"; };
    470 		A8C18E9B47668E008BE4CF86 /* Archive.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Archive.swift; sourceTree = "<group>"; };
    471 		A8CA0FC750259EB1D762B0EE /* OpenPuzzleBannerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = OpenPuzzleBannerTests.swift; sourceTree = "<group>"; };
    472 		A9A01534A21796A4EC7113A9 /* ZoneOrphaningTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ZoneOrphaningTests.swift; sourceTree = "<group>"; };
    473 		A9DC6394CB0F5B85C083FAC7 /* TipsArchive.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TipsArchive.swift; sourceTree = "<group>"; };
    474 		ACC295195602B3DDF7BB3895 /* PersistenceController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PersistenceController.swift; sourceTree = "<group>"; };
    475 		ADBA3FB1334DB816E62B7D9B /* PuzzleHeader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleHeader.swift; sourceTree = "<group>"; };
    476 		AF3B7E191D571FD800A4D719 /* LastUpdatedView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LastUpdatedView.swift; sourceTree = "<group>"; };
    477 		AFA63B0051B4E6F4FC4B132A /* ExternalBrowseView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ExternalBrowseView.swift; sourceTree = "<group>"; };
    478 		AFFB5B2EFBB62B7021AC2FC2 /* TimeLog.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeLog.swift; sourceTree = "<group>"; };
    479 		B024B2FFB11E51E9724BBE23 /* CompactSlider.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CompactSlider.swift; sourceTree = "<group>"; };
    480 		B0938B0ACB40772EE522D77C /* NYTPuzzleFetcher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTPuzzleFetcher.swift; sourceTree = "<group>"; };
    481 		B09D52DB46731E92C3E9297C /* EngagementStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = EngagementStore.swift; sourceTree = "<group>"; };
    482 		B135C285570F91181595B405 /* CellMark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CellMark.swift; sourceTree = "<group>"; };
    483 		B1F1471BE4D6D84361DD692B /* AuthorIdentity.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AuthorIdentity.swift; sourceTree = "<group>"; };
    484 		B34489D0864DF76AF436E391 /* NYTPuzzleUpgraderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTPuzzleUpgraderTests.swift; sourceTree = "<group>"; };
    485 		B369788E0FEA0DCE1B125816 /* PUZToXDConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PUZToXDConverter.swift; sourceTree = "<group>"; };
    486 		B3D873ABDF871E14794A2845 /* NotificationService.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = NotificationService.entitlements; sourceTree = "<group>"; };
    487 		B427285F8D6BE35025591BFA /* PeerChangeLedger.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerChangeLedger.swift; sourceTree = "<group>"; };
    488 		B689A7138429641E61E9E558 /* Crossmate.app */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.application; path = Crossmate.app; sourceTree = BUILT_PRODUCTS_DIR; };
    489 		B7557050B17F113BB488AA23 /* DecorationImages.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DecorationImages.swift; sourceTree = "<group>"; };
    490 		B766E872B12DC79ECCD80941 /* FriendModelTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendModelTests.swift; sourceTree = "<group>"; };
    491 		B8560440C548752EE93E0ED9 /* PuzzleCatalogTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleCatalogTests.swift; sourceTree = "<group>"; };
    492 		B9031A1574C21866940F6A2C /* XD.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XD.swift; sourceTree = "<group>"; };
    493 		B9AE0F26E602A9246F5C6ABF /* GameViewedStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameViewedStore.swift; sourceTree = "<group>"; };
    494 		B9EA9CF96312BFF5340CE2A7 /* ArchiveTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ArchiveTests.swift; sourceTree = "<group>"; };
    495 		BA67C509B467132D1B7510A4 /* Puzzles */ = {isa = PBXFileReference; lastKnownFileType = folder; path = Puzzles; sourceTree = SOURCE_ROOT; };
    496 		BAEDA3C3765CD8D8897FE5D5 /* PendingChangeReapTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PendingChangeReapTests.swift; sourceTree = "<group>"; };
    497 		BCACEED6A9235EC6221F4F66 /* DiagnosticsView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = DiagnosticsView.swift; sourceTree = "<group>"; };
    498 		BD32BDDE9B007B11BE86B7A0 /* PushCredentialRotationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushCredentialRotationTests.swift; sourceTree = "<group>"; };
    499 		BD63A9B20168F3B81AF4348F /* RecordApplier.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = RecordApplier.swift; sourceTree = "<group>"; };
    500 		BF6F111BE8750697C4BC7A17 /* NYTToXDConverter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTToXDConverter.swift; sourceTree = "<group>"; };
    501 		BF7062403AC9CFB4FF04BBF3 /* GridSilhouetteTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridSilhouetteTests.swift; sourceTree = "<group>"; };
    502 		BFC1C59A30FB2571598273E4 /* GameMutatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameMutatorTests.swift; sourceTree = "<group>"; };
    503 		C06E2CC3A77CB306BD2DF867 /* LogScrubberTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = LogScrubberTests.swift; sourceTree = "<group>"; };
    504 		C2C9D3E7FCE2D42C5B7E3856 /* PushPayload.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushPayload.swift; sourceTree = "<group>"; };
    505 		C3A2D346F414F374A45F92AD /* XDDecorationWriter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDDecorationWriter.swift; sourceTree = "<group>"; };
    506 		C54223FED97577A593B7964E /* NYTToXDConverterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTToXDConverterTests.swift; sourceTree = "<group>"; };
    507 		C7F35A7BFE52279BC24677F5 /* TimeLogTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TimeLogTests.swift; sourceTree = "<group>"; };
    508 		C8D6991C1EBAB2C64D9DF669 /* TipStoreTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TipStoreTests.swift; sourceTree = "<group>"; };
    509 		C90E94A01FEA77A5C9A2BC94 /* PuzzleNotificationTextTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleNotificationTextTests.swift; sourceTree = "<group>"; };
    510 		CA49DA9E0ADEB11A920787FA /* SessionPushPlanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionPushPlanner.swift; sourceTree = "<group>"; };
    511 		CA74C894ECCA1A176DD5B2F8 /* AppDefaultsMigrator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppDefaultsMigrator.swift; sourceTree = "<group>"; };
    512 		CBDC81CA6A9C80EB31E7F493 /* AppServices.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppServices.swift; sourceTree = "<group>"; };
    513 		CD68E9CA9D3057FE07E985E1 /* AnnouncementBanner.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AnnouncementBanner.swift; sourceTree = "<group>"; };
    514 		CE54EF557E8D808BAA20EA54 /* NYTPuzzleUpgrader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTPuzzleUpgrader.swift; sourceTree = "<group>"; };
    515 		CE7CEB8980A9664BAAA5D196 /* PuzzleNotificationText.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleNotificationText.swift; sourceTree = "<group>"; };
    516 		CF20BDF7FF6423BA4FD911D5 /* CalendarDayCell.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CalendarDayCell.swift; sourceTree = "<group>"; };
    517 		CF3D29B227D2B0E699423C48 /* Journal.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Journal.swift; sourceTree = "<group>"; };
    518 		CFC4FF046BF772646B5CA73F /* Presence.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Presence.swift; sourceTree = "<group>"; };
    519 		D16AC7215D0269195FEA8BA8 /* GridSilhouette.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridSilhouette.swift; sourceTree = "<group>"; };
    520 		D243575E32A8663B1AAF492A /* PeerChangeLedgerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PeerChangeLedgerTests.swift; sourceTree = "<group>"; };
    521 		D491B7232333AA8957732387 /* PendingEditFlagTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PendingEditFlagTests.swift; sourceTree = "<group>"; };
    522 		D4D705650CD98E8BB20AC4AD /* FriendInviteRecencyStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendInviteRecencyStore.swift; sourceTree = "<group>"; };
    523 		D97CBA409832A24D64DF0F5C /* Crossmate Unit Tests.xctest */ = {isa = PBXFileReference; includeInIndex = 0; lastKnownFileType = wrapper.cfbundle; path = "Crossmate Unit Tests.xctest"; sourceTree = BUILT_PRODUCTS_DIR; };
    524 		D9EE11280592CA66C2BEC71A /* PuzzleFileReaderTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleFileReaderTests.swift; sourceTree = "<group>"; };
    525 		DAD36DEDB3D997AB47146EA9 /* AppActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = AppActions.swift; sourceTree = "<group>"; };
    526 		DB55FC337CF72C650373210A /* PlayerColor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerColor.swift; sourceTree = "<group>"; };
    527 		DB851649DE78AAAC5A928C52 /* Square.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = Square.swift; sourceTree = "<group>"; };
    528 		DBD2570A5A3573D66B3C4A52 /* GameRowView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameRowView.swift; sourceTree = "<group>"; };
    529 		DD8B50452D3AFE25D98B497A /* NYTOverlayLetterRecognizerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTOverlayLetterRecognizerTests.swift; sourceTree = "<group>"; };
    530 		DD8E8D1BC7DF9EBB08F8CABD /* GameStoreRevocationLockTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameStoreRevocationLockTests.swift; sourceTree = "<group>"; };
    531 		E18FF14E0D73B0D2DB427F08 /* JoiningPuzzleView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = JoiningPuzzleView.swift; sourceTree = "<group>"; };
    532 		E25A040EA4DC9672C895A7AC /* InviteEntity+DisplayName.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = "InviteEntity+DisplayName.swift"; sourceTree = "<group>"; };
    533 		E2ED0D601BB574618C15B5EF /* ShareLinkRoute.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ShareLinkRoute.swift; sourceTree = "<group>"; };
    534 		E5EEBF169823C172000FC45B /* GameSummaryThumbnailTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameSummaryThumbnailTests.swift; sourceTree = "<group>"; };
    535 		E655698481325C92EF5C348B /* FriendController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendController.swift; sourceTree = "<group>"; };
    536 		E78C275F8A90E3E3EEF190CC /* FriendPickerView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = FriendPickerView.swift; sourceTree = "<group>"; };
    537 		E7AFD37B03A1C2E23E5766E6 /* PuzzleSource.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleSource.swift; sourceTree = "<group>"; };
    538 		E7F1EDE21BB7D6456D6E9000 /* PlayerPreferencesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerPreferencesTests.swift; sourceTree = "<group>"; };
    539 		E87E28DC9402A4369647DE50 /* PushPayloadTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushPayloadTests.swift; sourceTree = "<group>"; };
    540 		E935CE4384F3B67CC22EEBAC /* ClueBar.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ClueBar.swift; sourceTree = "<group>"; };
    541 		EAC61E2582D94B1E6EC67136 /* XDFileType.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDFileType.swift; sourceTree = "<group>"; };
    542 		EAF18C52558DBD58ECAD4964 /* XDMarkup.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDMarkup.swift; sourceTree = "<group>"; };
    543 		EAFA466405AABA1C06272795 /* ContentKeyDirectory.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ContentKeyDirectory.swift; sourceTree = "<group>"; };
    544 		ED2D830B9EFAD753C233BEB4 /* GameListView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GameListView.swift; sourceTree = "<group>"; };
    545 		ED48AD9C3A7A113D101BBD21 /* GridView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridView.swift; sourceTree = "<group>"; };
    546 		ED8154F949E1D94252F70765 /* NYTAuthServiceTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NYTAuthServiceTests.swift; sourceTree = "<group>"; };
    547 		EE1A1BF1EBD7D9E4584EF5FE /* PuzzleFileReader.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleFileReader.swift; sourceTree = "<group>"; };
    548 		EF1254FE7BE3672AEC1607B1 /* MovesInboundTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = MovesInboundTests.swift; sourceTree = "<group>"; };
    549 		F5DF04E70017065DFA95B396 /* PuzzleModifiers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PuzzleModifiers.swift; sourceTree = "<group>"; };
    550 		F64DAE64C9AA042B330C526F /* SessionMonitorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = SessionMonitorTests.swift; sourceTree = "<group>"; };
    551 		F97B399E89BBB37730F2F1E9 /* TestHelpers.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = TestHelpers.swift; sourceTree = "<group>"; };
    552 		F9B757D86362CD6F0500E9CB /* CustomButtons.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = CustomButtons.swift; sourceTree = "<group>"; };
    553 		F9FE0A9624DB87758F3D1768 /* XDMarkupTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = XDMarkupTests.swift; sourceTree = "<group>"; };
    554 		FAF6E3F3558E128E7A482A61 /* PushRequestAuthenticator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PushRequestAuthenticator.swift; sourceTree = "<group>"; };
    555 		FDE193CAB325C991952D7CE5 /* PUZToXDConverterTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PUZToXDConverterTests.swift; sourceTree = "<group>"; };
    556 		FED7C2528355BC007E48B7EF /* ParticipantSummaries.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = ParticipantSummaries.swift; sourceTree = "<group>"; };
    557 		FEDD63AD5E33E2B0399780EF /* NotificationNavigationBrokerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = NotificationNavigationBrokerTests.swift; sourceTree = "<group>"; };
    558 		FF159746D076E051C2CB590C /* PlayerSelectionPublisherTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = PlayerSelectionPublisherTests.swift; sourceTree = "<group>"; };
    559 		FF4CA70D10760D6770907606 /* GridAccessibility.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; path = GridAccessibility.swift; sourceTree = "<group>"; };
    560 /* End PBXFileReference section */
    561 
    562 /* Begin PBXGroup section */
    563 		01B07D8724DEA04C3E74558E /* Support */ = {
    564 			isa = PBXGroup;
    565 			children = (
    566 				F97B399E89BBB37730F2F1E9 /* TestHelpers.swift */,
    567 			);
    568 			name = Support;
    569 			path = Tests/Support;
    570 			sourceTree = "<group>";
    571 		};
    572 		074C2962E79CAE6C0EA6431A /* Sync */ = {
    573 			isa = PBXGroup;
    574 			children = (
    575 				A8C18E9B47668E008BE4CF86 /* Archive.swift */,
    576 				B1F1471BE4D6D84361DD692B /* AuthorIdentity.swift */,
    577 				07E5E4B165E374FEE732068B /* CloudDiagnostics.swift */,
    578 				16AAC1E8D2CB3B5117159934 /* CloudQuery.swift */,
    579 				44F86F0F1883A93F9622FB67 /* CloudZones.swift */,
    580 				2D36E66AE489DC5C5FB85E19 /* DiagnosticsReport.swift */,
    581 				8FDE03B4A77A8095ED2C23AB /* EngagementCoordinator.swift */,
    582 				9B3E0C62CBF5ADF7C01C1D54 /* EngagementMessageAuthenticator.swift */,
    583 				E655698481325C92EF5C348B /* FriendController.swift */,
    584 				7A4AFF292381C9B33C0F2CD6 /* FriendZone.swift */,
    585 				1B7539E0AD285C5A3AC3DDA2 /* GameArchiver.swift */,
    586 				78919F44C3035C48410FC894 /* GamePushCredentials.swift */,
    587 				275DB12E9D81DD48B9025718 /* GameSyncVersion.swift */,
    588 				14B05C19BD4705876B3DF0EC /* GridStateMerger.swift */,
    589 				86470163BFF956F3DE438506 /* Moves.swift */,
    590 				7DD270E16E00145EF2807EA9 /* MovesUpdater.swift */,
    591 				B427285F8D6BE35025591BFA /* PeerChangeLedger.swift */,
    592 				11BF168D5C1CD85DAE5CAF9E /* PlayerSelectionPublisher.swift */,
    593 				CFC4FF046BF772646B5CA73F /* Presence.swift */,
    594 				605CA0FC7AF069CE3A3B38C1 /* RecentChanges.swift */,
    595 				BD63A9B20168F3B81AF4348F /* RecordApplier.swift */,
    596 				5267DDA1A330DCBD07303D44 /* RecordBuilder.swift */,
    597 				0C0A7348E1283E7CD2486E2A /* RecordSerializer.swift */,
    598 				0EB332831AB173ACF6BFEC59 /* SessionMonitor.swift */,
    599 				5C74683332956B0D1CA37589 /* ShareController.swift */,
    600 				73DDDED719CFFDD6035C3B48 /* SyncEngine.swift */,
    601 				9A49C3C31F49A85764B84A15 /* SyncState+Helpers.swift */,
    602 			);
    603 			path = Sync;
    604 			sourceTree = "<group>";
    605 		};
    606 		08204641416EEBE67C3EF5F6 /* GameList */ = {
    607 			isa = PBXGroup;
    608 			children = (
    609 				6F34401948BC53DA9C93D64B /* GameCardView.swift */,
    610 				ED2D830B9EFAD753C233BEB4 /* GameListView.swift */,
    611 				DBD2570A5A3573D66B3C4A52 /* GameRowView.swift */,
    612 				663934F0B7CA8BDD462DFAA4 /* GameShareItem.swift */,
    613 				AF3B7E191D571FD800A4D719 /* LastUpdatedView.swift */,
    614 			);
    615 			path = GameList;
    616 			sourceTree = "<group>";
    617 		};
    618 		12BCF7948BC2C200C647C279 /* Products */ = {
    619 			isa = PBXGroup;
    620 			children = (
    621 				D97CBA409832A24D64DF0F5C /* Crossmate Unit Tests.xctest */,
    622 				B689A7138429641E61E9E558 /* Crossmate.app */,
    623 				51318FC5DAE02D35CB005729 /* NotificationService.appex */,
    624 			);
    625 			name = Products;
    626 			sourceTree = "<group>";
    627 		};
    628 		1FB709FE7325CD51300A22F0 /* Settings */ = {
    629 			isa = PBXGroup;
    630 			children = (
    631 				74C8886A66F0877858A67D62 /* AboutView.swift */,
    632 				BCACEED6A9235EC6221F4F66 /* DiagnosticsView.swift */,
    633 				7C6AB016CA4E2FC69A0E6A4F /* SettingsView.swift */,
    634 				A9DC6394CB0F5B85C083FAC7 /* TipsArchive.swift */,
    635 			);
    636 			path = Settings;
    637 			sourceTree = "<group>";
    638 		};
    639 		212DB6FCF46C41F81C41D232 /* Unit */ = {
    640 			isa = PBXGroup;
    641 			children = (
    642 				4B166E87D13C41C4D3575169 /* AccountPushCoordinatorTests.swift */,
    643 				978A96CC6F550ED7A73F8D96 /* AnnouncementCenterTests.swift */,
    644 				99F4D2E1504784E738D2B33A /* AppDefaultsMigratorTests.swift */,
    645 				48EC33BC7DDAC3B7F29C3F02 /* AppDelegatePushBufferTests.swift */,
    646 				B9EA9CF96312BFF5340CE2A7 /* ArchiveTests.swift */,
    647 				3059A4C23D040E0D1F258B92 /* CellAccessibilityDescriberTests.swift */,
    648 				5E6BB07A54A3C3AF6F210F49 /* CloudJoinFailureTests.swift */,
    649 				382F9AAB0B98B4A78E255F15 /* DecorationRenderingTests.swift */,
    650 				29686FFBC5BC8BCCF8CCC49A /* DriveMonitorTests.swift */,
    651 				51583D7304A586BF38F0D8E3 /* FriendInviteRecencyStoreTests.swift */,
    652 				60E818B0F4689BAD57660B7C /* GameCursorStoreTests.swift */,
    653 				BFC1C59A30FB2571598273E4 /* GameMutatorTests.swift */,
    654 				0E230B327585E1E3A2921C92 /* GameStoreCompletionLockTests.swift */,
    655 				09EA25E2AE98ACD029EC0129 /* GameStoreContributingDevicesTests.swift */,
    656 				12EEFC257DA9F0E4C4C6B814 /* GameStoreLibraryDatesTests.swift */,
    657 				122BC1863D12DE06388D5DA7 /* GameStoreMergedAuthorCellsTests.swift */,
    658 				9A56778AF8190F0D7EB2E27E /* GameStorePushAddressTests.swift */,
    659 				DD8E8D1BC7DF9EBB08F8CABD /* GameStoreRevocationLockTests.swift */,
    660 				31C534911020BE4ED2E5065D /* GameStoreUnreadMovesTests.swift */,
    661 				E5EEBF169823C172000FC45B /* GameSummaryThumbnailTests.swift */,
    662 				9406C27662147CD3C0783644 /* GameViewedStoreTests.swift */,
    663 				BF7062403AC9CFB4FF04BBF3 /* GridSilhouetteTests.swift */,
    664 				6C7F3A9BD7FAF81CB77032A6 /* GridStateMergerTests.swift */,
    665 				4494C40DD593DA7CE6641027 /* ImportServiceTests.swift */,
    666 				89B1FFD2F90141EA949A8540 /* JournalReplayTests.swift */,
    667 				2DD9C72266D1BAC43C8976C0 /* JournalUploadTests.swift */,
    668 				C06E2CC3A77CB306BD2DF867 /* LogScrubberTests.swift */,
    669 				78C92190C4A344EC319A0F88 /* MovesJournalTests.swift */,
    670 				9AF6157D97271205626E207C /* MovesUpdaterTests.swift */,
    671 				92168360625ECDD36FF50EE8 /* NicknameDirectoryTests.swift */,
    672 				FEDD63AD5E33E2B0399780EF /* NotificationNavigationBrokerTests.swift */,
    673 				47532AED239AEF476D8E9206 /* NotificationStateTests.swift */,
    674 				ED8154F949E1D94252F70765 /* NYTAuthServiceTests.swift */,
    675 				DD8B50452D3AFE25D98B497A /* NYTOverlayLetterRecognizerTests.swift */,
    676 				7845E863A179DBB0B932C234 /* NYTOverlaySlicerTests.swift */,
    677 				A0CCED43B365363662C45A30 /* NYTPuzzleFetcherTests.swift */,
    678 				B34489D0864DF76AF436E391 /* NYTPuzzleUpgraderTests.swift */,
    679 				C54223FED97577A593B7964E /* NYTToXDConverterTests.swift */,
    680 				A8CA0FC750259EB1D762B0EE /* OpenPuzzleBannerTests.swift */,
    681 				D243575E32A8663B1AAF492A /* PeerChangeLedgerTests.swift */,
    682 				D491B7232333AA8957732387 /* PendingEditFlagTests.swift */,
    683 				4A467BC00116EEC8500BE6A1 /* PersistenceRecoveryTests.swift */,
    684 				23FCFFF1C2C7E909DFD8FC43 /* PlayerColorTests.swift */,
    685 				5DE04D53EC3BC7D2DA0093C3 /* PlayerNamePublisherTests.swift */,
    686 				E7F1EDE21BB7D6456D6E9000 /* PlayerPreferencesTests.swift */,
    687 				1813630FA05C194AFF43855C /* PlayerRosterTests.swift */,
    688 				FF159746D076E051C2CB590C /* PlayerSelectionPublisherTests.swift */,
    689 				46801B570FC0B2C791ECDED3 /* PlayerSessionNavigationTests.swift */,
    690 				63AE7146492AD286EF13C3E7 /* PushClientTests.swift */,
    691 				6C793B5B9684D49328E42129 /* PushPayloadCipherTests.swift */,
    692 				E87E28DC9402A4369647DE50 /* PushPayloadTests.swift */,
    693 				630A65B1CCFEFEA825D3DD41 /* PushRequestAuthenticatorTests.swift */,
    694 				FDE193CAB325C991952D7CE5 /* PUZToXDConverterTests.swift */,
    695 				B8560440C548752EE93E0ED9 /* PuzzleCatalogTests.swift */,
    696 				D9EE11280592CA66C2BEC71A /* PuzzleFileReaderTests.swift */,
    697 				C90E94A01FEA77A5C9A2BC94 /* PuzzleNotificationTextTests.swift */,
    698 				362E3A93102B6C9AECD4133A /* PuzzleSessionTests.swift */,
    699 				80B377D237AC14B9856579E1 /* RecentChangesTests.swift */,
    700 				443BF6DF77C8226313EE9564 /* RecordSerializerMovesTests.swift */,
    701 				7E4DEAF9F7887CBB46A99E8E /* RecordSerializerTests.swift */,
    702 				603E6FC55F1BD944592379D2 /* ReplayCacheTests.swift */,
    703 				847415468DBB1C566D18BC17 /* ReplayControlsTests.swift */,
    704 				71312F9248AA21238F7D5D6D /* RevealConfirmationTests.swift */,
    705 				8C040D5EBC73B1ED47C2C9D4 /* SessionPushPlannerTests.swift */,
    706 				5990D989AD745211A18848E4 /* ShareLinkRouteTests.swift */,
    707 				057F2B8B8A894D08BB801219 /* ShareLinkShortenerTests.swift */,
    708 				0C190EA5717C291B3F2AE46C /* SyncMonitorTests.swift */,
    709 				C7F35A7BFE52279BC24677F5 /* TimeLogTests.swift */,
    710 				C8D6991C1EBAB2C64D9DF669 /* TipStoreTests.swift */,
    711 				4F4EBC0F07FF815274C028CA /* XDAcceptTests.swift */,
    712 				1C08795365FABCC11A6C6E28 /* XDDecorationTests.swift */,
    713 				9F6DB4116933BB66274AC6E8 /* XDLimitsTests.swift */,
    714 				F9FE0A9624DB87758F3D1768 /* XDMarkupTests.swift */,
    715 				ABB371EF2574E95782CB05FD /* Sync */,
    716 			);
    717 			name = Unit;
    718 			path = Tests/Unit;
    719 			sourceTree = "<group>";
    720 		};
    721 		41DB2417FF67A47FE6890256 /* Models */ = {
    722 			isa = PBXGroup;
    723 			children = (
    724 				B135C285570F91181595B405 /* CellMark.swift */,
    725 				0FD9A43789D0ED123F7A99B0 /* CheckResult.swift */,
    726 				B09D52DB46731E92C3E9297C /* EngagementStore.swift */,
    727 				9F8D856707B4D76FDBF4AE69 /* FriendEntity+DisplayName.swift */,
    728 				D4D705650CD98E8BB20AC4AD /* FriendInviteRecencyStore.swift */,
    729 				465F2BB469EFE84CF3733398 /* Game.swift */,
    730 				8D2AD5021F1AF0DB44FA4540 /* GameCursorStore.swift */,
    731 				24A4B5C8EC4A46906C07F819 /* GameEntity+ContentKey.swift */,
    732 				B9AE0F26E602A9246F5C6ABF /* GameViewedStore.swift */,
    733 				9062DC673A2F5AC87FC417AB /* GridPosition.swift */,
    734 				E25A040EA4DC9672C895A7AC /* InviteEntity+DisplayName.swift */,
    735 				FED7C2528355BC007E48B7EF /* ParticipantSummaries.swift */,
    736 				DB55FC337CF72C650373210A /* PlayerColor.swift */,
    737 				46148CF0F4D719692F81A6EC /* PlayerPreferences.swift */,
    738 				3292748EAE27B608C769D393 /* PlayerRoster.swift */,
    739 				6F0B4F65D017C1FBAC3B23DF /* PlayerSelection.swift */,
    740 				20B331CC55827FEF3420ABCE /* PlayerSession.swift */,
    741 				64C8064F04FC6177D987ACA2 /* Puzzle.swift */,
    742 				4DC7784917397BCD6B8D679D /* PuzzleCatalog.swift */,
    743 				0DF9C2FEF0D3584864DFC967 /* PuzzleNotificationText+GameEntity.swift */,
    744 				E7AFD37B03A1C2E23E5766E6 /* PuzzleSource.swift */,
    745 				50EE8A159CC553623F6F7DE4 /* ReplayControls.swift */,
    746 				DB851649DE78AAAC5A928C52 /* Square.swift */,
    747 				AFFB5B2EFBB62B7021AC2FC2 /* TimeLog.swift */,
    748 				8D4A76B233E16B7C5A248EB7 /* TipStore.swift */,
    749 				B9031A1574C21866940F6A2C /* XD.swift */,
    750 				C3A2D346F414F374A45F92AD /* XDDecorationWriter.swift */,
    751 				EAC61E2582D94B1E6EC67136 /* XDFileType.swift */,
    752 				EAF18C52558DBD58ECAD4964 /* XDMarkup.swift */,
    753 				F93AC31640C40FCC039570A3 /* CrossmateModel.xcdatamodeld */,
    754 			);
    755 			path = Models;
    756 			sourceTree = "<group>";
    757 		};
    758 		486B6F0E3B86BC2765CCEC33 /* Friends */ = {
    759 			isa = PBXGroup;
    760 			children = (
    761 				E78C275F8A90E3E3EEF190CC /* FriendPickerView.swift */,
    762 				298A9C54A1CC753E860E174E /* FriendsView.swift */,
    763 				2494B62495C8048ED64072E2 /* InvitationFailureCallout.swift */,
    764 			);
    765 			path = Friends;
    766 			sourceTree = "<group>";
    767 		};
    768 		565DBAFC8DB2589B3F0AF90E /* Persistence */ = {
    769 			isa = PBXGroup;
    770 			children = (
    771 				48328BAB53475A2063429A98 /* ChronicleLedger.swift */,
    772 				43DC132D49361C56DE79C13E /* GameMutator.swift */,
    773 				93EE5BA78566EDED68D846AB /* GameStore.swift */,
    774 				CF3D29B227D2B0E699423C48 /* Journal.swift */,
    775 				27ECEA51DE42D07495744EF8 /* JournalReplay.swift */,
    776 				ACC295195602B3DDF7BB3895 /* PersistenceController.swift */,
    777 			);
    778 			path = Persistence;
    779 			sourceTree = "<group>";
    780 		};
    781 		5770CE69DB2B0B7462FACE53 /* Crossmate */ = {
    782 			isa = PBXGroup;
    783 			children = (
    784 				7B3E1A382B24A7803701D947 /* Crossmate.entitlements */,
    785 				14F2AC5C3B50F4178859E9AC /* CrossmateApp.swift */,
    786 				9447F0FE34C63810C6F1D8BE /* Info.plist */,
    787 				0BF60C84D92A9024AC1A53FC /* Media.xcassets */,
    788 				41DB2417FF67A47FE6890256 /* Models */,
    789 				565DBAFC8DB2589B3F0AF90E /* Persistence */,
    790 				D8F0E3376B2616B4E917129C /* Services */,
    791 				074C2962E79CAE6C0EA6431A /* Sync */,
    792 				84445EA9CACB6AAAEDE6965F /* Views */,
    793 			);
    794 			path = Crossmate;
    795 			sourceTree = "<group>";
    796 		};
    797 		6F470E54D9E6E99FCEA893D1 /* Generated */ = {
    798 			isa = PBXGroup;
    799 			children = (
    800 				0BDC16DA7F762F4C5F4BED14 /* Config.xcconfig */,
    801 			);
    802 			path = Generated;
    803 			sourceTree = "<group>";
    804 		};
    805 		84445EA9CACB6AAAEDE6965F /* Views */ = {
    806 			isa = PBXGroup;
    807 			children = (
    808 				5CBEE60E9D850739CA3D01AA /* MarketingScreenshots.swift */,
    809 				AB1863007AA59F4769675599 /* Browse */,
    810 				99CEFF0AB23C2B9329A9F8B2 /* Components */,
    811 				486B6F0E3B86BC2765CCEC33 /* Friends */,
    812 				08204641416EEBE67C3EF5F6 /* GameList */,
    813 				895088B5D0214046158C6D24 /* Puzzle */,
    814 				1FB709FE7325CD51300A22F0 /* Settings */,
    815 			);
    816 			path = Views;
    817 			sourceTree = "<group>";
    818 		};
    819 		895088B5D0214046158C6D24 /* Puzzle */ = {
    820 			isa = PBXGroup;
    821 			children = (
    822 				9F13534332699C80382FE682 /* CellPatterns.swift */,
    823 				E935CE4384F3B67CC22EEBAC /* ClueBar.swift */,
    824 				7B8B65482CA1739A3863A99E /* ClueList.swift */,
    825 				B7557050B17F113BB488AA23 /* DecorationImages.swift */,
    826 				FF4CA70D10760D6770907606 /* GridAccessibility.swift */,
    827 				ED48AD9C3A7A113D101BBD21 /* GridView.swift */,
    828 				6940546CFA1E87EF814AA6BB /* HardwareKeyboardInputView.swift */,
    829 				E18FF14E0D73B0D2DB427F08 /* JoiningPuzzleView.swift */,
    830 				3FDE73AD7C543B29C8E493F8 /* KeyboardView.swift */,
    831 				89528AF69DE06C61FA8E91A1 /* PuzzleCommands.swift */,
    832 				23A7390848B1943C80142934 /* PuzzleGridStats.swift */,
    833 				ADBA3FB1334DB816E62B7D9B /* PuzzleHeader.swift */,
    834 				F5DF04E70017065DFA95B396 /* PuzzleModifiers.swift */,
    835 				A3A251D89028B3CA065DE053 /* PuzzleScoreboard.swift */,
    836 				57B1734CF731C2E405A39159 /* PuzzleView.swift */,
    837 				41A62DA6F7138876CA5A27EF /* SuccessPanel.swift */,
    838 			);
    839 			path = Puzzle;
    840 			sourceTree = "<group>";
    841 		};
    842 		99CEFF0AB23C2B9329A9F8B2 /* Components */ = {
    843 			isa = PBXGroup;
    844 			children = (
    845 				CD68E9CA9D3057FE07E985E1 /* AnnouncementBanner.swift */,
    846 				B024B2FFB11E51E9724BBE23 /* CompactSlider.swift */,
    847 				F9B757D86362CD6F0500E9CB /* CustomButtons.swift */,
    848 				065CD67A1D9F7B63AE6B42D6 /* FriendAvatarView.swift */,
    849 				6B1F07B5DDE2A8B49B28392A /* GridThumbnailView.swift */,
    850 				836B8D4B351C9225162A82C0 /* Layouts.swift */,
    851 				0F8AAA9540C80F787A1465C0 /* MailComposeView.swift */,
    852 				A61768D423564A9080414A38 /* NoticeView.swift */,
    853 			);
    854 			path = Components;
    855 			sourceTree = "<group>";
    856 		};
    857 		9BF7383FE2AB07F12434C013 /* Shared */ = {
    858 			isa = PBXGroup;
    859 			children = (
    860 				EAFA466405AABA1C06272795 /* ContentKeyDirectory.swift */,
    861 				833AAFBA0094BAB27E13FE29 /* FriendEncryptionKeyDirectory.swift */,
    862 				3111803C8FFFB0C839217482 /* NicknameDirectory.swift */,
    863 				2D2FD896D75863554E31654C /* NotificationState.swift */,
    864 				C2C9D3E7FCE2D42C5B7E3856 /* PushPayload.swift */,
    865 				33DE10D2A5AFBAC73469BD33 /* PushPayloadCipher.swift */,
    866 				CE7CEB8980A9664BAAA5D196 /* PuzzleNotificationText.swift */,
    867 			);
    868 			path = Shared;
    869 			sourceTree = "<group>";
    870 		};
    871 		AB1863007AA59F4769675599 /* Browse */ = {
    872 			isa = PBXGroup;
    873 			children = (
    874 				7023E506D777DB80B18A7DB5 /* BundledBrowseView.swift */,
    875 				CF20BDF7FF6423BA4FD911D5 /* CalendarDayCell.swift */,
    876 				AFA63B0051B4E6F4FC4B132A /* ExternalBrowseView.swift */,
    877 				2A832061C19BA0F073617CA2 /* ImportedBrowseView.swift */,
    878 				09C81EFA0B7776CB9713CD63 /* NewGameSheet.swift */,
    879 				3413F8755236FC0578AF8109 /* NYTBrowseView.swift */,
    880 				1747D4DCB4BCC831069BBE07 /* NYTLoginView.swift */,
    881 			);
    882 			path = Browse;
    883 			sourceTree = "<group>";
    884 		};
    885 		ABB371EF2574E95782CB05FD /* Sync */ = {
    886 			isa = PBXGroup;
    887 			children = (
    888 				9998739ED0875A17271B7899 /* AppServicesAnnouncementTests.swift */,
    889 				457B06DBFDC358D213A7CE54 /* AuthorIdentityTests.swift */,
    890 				67CFF96D54D2DE9C44EB120A /* EngagementCoordinatorTests.swift */,
    891 				A24FD313982C8094CD020106 /* EngagementMessageAuthenticatorTests.swift */,
    892 				94CEBA27A8AC4FCC92ADE1B4 /* EnsureGameEntityTests.swift */,
    893 				2E2702C74378FD2F14D1CE33 /* FriendControllerNicknameReplayTests.swift */,
    894 				B766E872B12DC79ECCD80941 /* FriendModelTests.swift */,
    895 				800CCFBE90554F287E765755 /* FriendZoneTests.swift */,
    896 				7B5A8118AC2FE60D877F1D29 /* GamePushCredentialsTests.swift */,
    897 				08C434DB97DE2FBD8BEB867C /* InboundRecordIdentityTests.swift */,
    898 				4B33C21324E1474BCC126AA0 /* MovesCodecLegacyDecodeTests.swift */,
    899 				EF1254FE7BE3672AEC1607B1 /* MovesInboundTests.swift */,
    900 				08E8592B1CB1336E63498706 /* PeerPresenceGraceTests.swift */,
    901 				BAEDA3C3765CD8D8897FE5D5 /* PendingChangeReapTests.swift */,
    902 				283C5C97180C805B6C5BF622 /* PerGameZoneTests.swift */,
    903 				54A448620E71515AAA7BA3DD /* PersistenceControllerHealTests.swift */,
    904 				5C838C184A0C7B1B0A9821CE /* PlayerRecordPresenceTests.swift */,
    905 				BD32BDDE9B007B11BE86B7A0 /* PushCredentialRotationTests.swift */,
    906 				960353A6F38DD290112A2FE1 /* RemoteCoordinateValidationTests.swift */,
    907 				F64DAE64C9AA042B330C526F /* SessionMonitorTests.swift */,
    908 				68072F4F3EB5D5A78E03D408 /* ShareRoutingTests.swift */,
    909 				A9A01534A21796A4EC7113A9 /* ZoneOrphaningTests.swift */,
    910 			);
    911 			path = Sync;
    912 			sourceTree = "<group>";
    913 		};
    914 		C5342A31D253372339517EEE = {
    915 			isa = PBXGroup;
    916 			children = (
    917 				BA67C509B467132D1B7510A4 /* Puzzles */,
    918 				5770CE69DB2B0B7462FACE53 /* Crossmate */,
    919 				6F470E54D9E6E99FCEA893D1 /* Generated */,
    920 				D7910EDB740AFF963BDCA6CE /* NotificationService */,
    921 				9BF7383FE2AB07F12434C013 /* Shared */,
    922 				01B07D8724DEA04C3E74558E /* Support */,
    923 				212DB6FCF46C41F81C41D232 /* Unit */,
    924 				12BCF7948BC2C200C647C279 /* Products */,
    925 			);
    926 			sourceTree = "<group>";
    927 		};
    928 		D7910EDB740AFF963BDCA6CE /* NotificationService */ = {
    929 			isa = PBXGroup;
    930 			children = (
    931 				88E8AACB638FE5724B534B41 /* Info.plist */,
    932 				B3D873ABDF871E14794A2845 /* NotificationService.entitlements */,
    933 				507B4DC893CE8AC4778CBACE /* NotificationService.swift */,
    934 			);
    935 			path = NotificationService;
    936 			sourceTree = "<group>";
    937 		};
    938 		D8F0E3376B2616B4E917129C /* Services */ = {
    939 			isa = PBXGroup;
    940 			children = (
    941 				03D59EA74A4BA084AD97478D /* AccountPushCoordinator.swift */,
    942 				1D3ECD0DE71BE567BCEE15F6 /* AnnouncementCenter.swift */,
    943 				DAD36DEDB3D997AB47146EA9 /* AppActions.swift */,
    944 				CA74C894ECCA1A176DD5B2F8 /* AppDefaultsMigrator.swift */,
    945 				CBDC81CA6A9C80EB31E7F493 /* AppServices.swift */,
    946 				2D5B1E8E12B86DF6CA478F65 /* BadgeCoordinator.swift */,
    947 				98E68FD021EF8ED50BC706EE /* CloudContainer.swift */,
    948 				56BC76178319D0D669CD50FF /* CloudService.swift */,
    949 				16E1DA8C1B4E73AFB779CC06 /* DebuggingMonitors.swift */,
    950 				70AD1A006E6D03E4429E3BF0 /* DriveMonitor.swift */,
    951 				18C701DAE36000DE19F7CC95 /* EngagementHost.swift */,
    952 				400B3C87248F3FCA3F76400B /* EngagementHostEnvironment.swift */,
    953 				4DB0580C9B7C778F34BE6AC2 /* EngagementLifecycle.swift */,
    954 				D16AC7215D0269195FEA8BA8 /* GridSilhouette.swift */,
    955 				462CE0FD356F6137C9BFD30F /* ImportService.swift */,
    956 				6BDD06460A76D4AF31077732 /* InputMonitor.swift */,
    957 				10064D171DB7C48D3DE1E769 /* InviteCoordinator.swift */,
    958 				28AB8C4D560CA5D4E4C61750 /* InviteDeliveryStore.swift */,
    959 				33878A29B09A6154C7A63C82 /* KeychainHelper.swift */,
    960 				A253416F4FEA271A80B22A73 /* NYTAuthService.swift */,
    961 				570F8FE85CC46CE3CB5CFEC1 /* NYTOverlayLetterRecognizer.swift */,
    962 				A55219DFC3EEC971E3A8BA6D /* NYTOverlaySlicer.swift */,
    963 				B0938B0ACB40772EE522D77C /* NYTPuzzleFetcher.swift */,
    964 				CE54EF557E8D808BAA20EA54 /* NYTPuzzleUpgrader.swift */,
    965 				BF6F111BE8750697C4BC7A17 /* NYTToXDConverter.swift */,
    966 				71DFD035381B6252DCD873C9 /* PlayerNamePublisher.swift */,
    967 				8A9F9E7ED4E1AF02F0C71051 /* PushClient.swift */,
    968 				FAF6E3F3558E128E7A482A61 /* PushRequestAuthenticator.swift */,
    969 				B369788E0FEA0DCE1B125816 /* PUZToXDConverter.swift */,
    970 				EE1A1BF1EBD7D9E4584EF5FE /* PuzzleFileReader.swift */,
    971 				710BCB6A647A820B106CE666 /* PuzzleSession.swift */,
    972 				3FFD574AC2D0A910053E2A73 /* ReplayLoader.swift */,
    973 				7A7BD8DFDB41BFBA694A0933 /* SessionCoordinator.swift */,
    974 				CA49DA9E0ADEB11A920787FA /* SessionPushPlanner.swift */,
    975 				E2ED0D601BB574618C15B5EF /* ShareLinkRoute.swift */,
    976 				52B50A841D92D1F2B173E7DF /* ShareLinkShortener.swift */,
    977 			);
    978 			path = Services;
    979 			sourceTree = "<group>";
    980 		};
    981 /* End PBXGroup section */
    982 
    983 /* Begin PBXNativeTarget section */
    984 		350366A68B75DC4BDA91F8E5 /* NotificationService */ = {
    985 			isa = PBXNativeTarget;
    986 			buildConfigurationList = 97D15A585690B87E7C17FF8A /* Build configuration list for PBXNativeTarget "NotificationService" */;
    987 			buildPhases = (
    988 				6D4D7955C5F70F9F18D7C1F0 /* Sources */,
    989 			);
    990 			buildRules = (
    991 			);
    992 			dependencies = (
    993 			);
    994 			name = NotificationService;
    995 			packageProductDependencies = (
    996 			);
    997 			productName = NotificationService;
    998 			productReference = 51318FC5DAE02D35CB005729 /* NotificationService.appex */;
    999 			productType = "com.apple.product-type.app-extension";
   1000 		};
   1001 		7708D1C8A0145D43BD15DEB7 /* Crossmate */ = {
   1002 			isa = PBXNativeTarget;
   1003 			buildConfigurationList = AB7D49875A042FD78EDD157A /* Build configuration list for PBXNativeTarget "Crossmate" */;
   1004 			buildPhases = (
   1005 				C17B62906BBF281D006D8DC2 /* Sources */,
   1006 				C475EFB2B47245175F9B415C /* Resources */,
   1007 				2768812850886EB633B6C27C /* Embed Foundation Extensions */,
   1008 			);
   1009 			buildRules = (
   1010 			);
   1011 			dependencies = (
   1012 				0638C125467274AA03088E07 /* PBXTargetDependency */,
   1013 			);
   1014 			name = Crossmate;
   1015 			packageProductDependencies = (
   1016 			);
   1017 			productName = Crossmate;
   1018 			productReference = B689A7138429641E61E9E558 /* Crossmate.app */;
   1019 			productType = "com.apple.product-type.application";
   1020 		};
   1021 		C38EBD1A6B9D37EF81FF3511 /* Crossmate Unit Tests */ = {
   1022 			isa = PBXNativeTarget;
   1023 			buildConfigurationList = 0C7AF110B3697D116B91817A /* Build configuration list for PBXNativeTarget "Crossmate Unit Tests" */;
   1024 			buildPhases = (
   1025 				931E2DAAD4EC47B06F7AB60A /* Sources */,
   1026 			);
   1027 			buildRules = (
   1028 			);
   1029 			dependencies = (
   1030 				42035D5EEE61A5D459E1D46D /* PBXTargetDependency */,
   1031 			);
   1032 			name = "Crossmate Unit Tests";
   1033 			packageProductDependencies = (
   1034 			);
   1035 			productName = "Crossmate Unit Tests";
   1036 			productReference = D97CBA409832A24D64DF0F5C /* Crossmate Unit Tests.xctest */;
   1037 			productType = "com.apple.product-type.bundle.unit-test";
   1038 		};
   1039 /* End PBXNativeTarget section */
   1040 
   1041 /* Begin PBXProject section */
   1042 		9167165F088B7698D1319D3C /* Project object */ = {
   1043 			isa = PBXProject;
   1044 			attributes = {
   1045 				BuildIndependentTargetsInParallel = YES;
   1046 				LastUpgradeCheck = 1430;
   1047 				TargetAttributes = {
   1048 					350366A68B75DC4BDA91F8E5 = {
   1049 						DevelopmentTeam = 7TD7PZBNXP;
   1050 						ProvisioningStyle = Automatic;
   1051 					};
   1052 					7708D1C8A0145D43BD15DEB7 = {
   1053 						DevelopmentTeam = 7TD7PZBNXP;
   1054 						ProvisioningStyle = Automatic;
   1055 					};
   1056 					C38EBD1A6B9D37EF81FF3511 = {
   1057 						DevelopmentTeam = 7TD7PZBNXP;
   1058 						ProvisioningStyle = Automatic;
   1059 					};
   1060 				};
   1061 			};
   1062 			buildConfigurationList = 9A436EF03A8593C66A18A832 /* Build configuration list for PBXProject "Crossmate" */;
   1063 			developmentRegion = en;
   1064 			hasScannedForEncodings = 0;
   1065 			knownRegions = (
   1066 				Base,
   1067 				en,
   1068 			);
   1069 			mainGroup = C5342A31D253372339517EEE;
   1070 			minimizedProjectReferenceProxies = 1;
   1071 			preferredProjectObjectVersion = 77;
   1072 			productRefGroup = 12BCF7948BC2C200C647C279 /* Products */;
   1073 			projectDirPath = "";
   1074 			projectRoot = "";
   1075 			targets = (
   1076 				7708D1C8A0145D43BD15DEB7 /* Crossmate */,
   1077 				350366A68B75DC4BDA91F8E5 /* NotificationService */,
   1078 				C38EBD1A6B9D37EF81FF3511 /* Crossmate Unit Tests */,
   1079 			);
   1080 		};
   1081 /* End PBXProject section */
   1082 
   1083 /* Begin PBXResourcesBuildPhase section */
   1084 		C475EFB2B47245175F9B415C /* Resources */ = {
   1085 			isa = PBXResourcesBuildPhase;
   1086 			buildActionMask = 2147483647;
   1087 			files = (
   1088 				9789150602A3321D2E1E7E81 /* Media.xcassets in Resources */,
   1089 				8B356C953DA0FAF149C3391A /* Puzzles in Resources */,
   1090 			);
   1091 			runOnlyForDeploymentPostprocessing = 0;
   1092 		};
   1093 /* End PBXResourcesBuildPhase section */
   1094 
   1095 /* Begin PBXSourcesBuildPhase section */
   1096 		6D4D7955C5F70F9F18D7C1F0 /* Sources */ = {
   1097 			isa = PBXSourcesBuildPhase;
   1098 			buildActionMask = 2147483647;
   1099 			files = (
   1100 				95170ECF07E94E7581C2B66F /* ContentKeyDirectory.swift in Sources */,
   1101 				18CA29E61C4F1471A455FEC8 /* FriendEncryptionKeyDirectory.swift in Sources */,
   1102 				A0977C7B0B0D928DA569C326 /* NicknameDirectory.swift in Sources */,
   1103 				7D4A56FBB1C5D5F89271B77F /* NotificationService.swift in Sources */,
   1104 				88BACA1689459AC9AED20D43 /* NotificationState.swift in Sources */,
   1105 				F8A4B3A1F9601654C60550B3 /* PushPayload.swift in Sources */,
   1106 				FC4853B4261B06945D0D1470 /* PushPayloadCipher.swift in Sources */,
   1107 				351CB23C537BAB61863D95F6 /* PuzzleNotificationText.swift in Sources */,
   1108 			);
   1109 			runOnlyForDeploymentPostprocessing = 0;
   1110 		};
   1111 		931E2DAAD4EC47B06F7AB60A /* Sources */ = {
   1112 			isa = PBXSourcesBuildPhase;
   1113 			buildActionMask = 2147483647;
   1114 			files = (
   1115 				521E877D28502B917C89B66D /* AccountPushCoordinatorTests.swift in Sources */,
   1116 				6C091D30AAC9F63B7CE6FB58 /* AnnouncementCenterTests.swift in Sources */,
   1117 				5082CCB75939E1BC6E9DC03A /* AppDefaultsMigratorTests.swift in Sources */,
   1118 				AC70BED45521BB77535C456C /* AppDelegatePushBufferTests.swift in Sources */,
   1119 				D519F54F8CE0BD53D9C6144C /* AppServicesAnnouncementTests.swift in Sources */,
   1120 				DB098F40C6950E29B4BF10A7 /* ArchiveTests.swift in Sources */,
   1121 				A98382E7659991FAF0F4ED0A /* AuthorIdentityTests.swift in Sources */,
   1122 				7BE53C851A311A7B6255B45E /* CellAccessibilityDescriberTests.swift in Sources */,
   1123 				8171E5B23FEC5FB63029A640 /* CloudJoinFailureTests.swift in Sources */,
   1124 				4E1A70D1EC709A0478631DCF /* DecorationRenderingTests.swift in Sources */,
   1125 				8C37D748EBFD75DACCB992C3 /* DriveMonitorTests.swift in Sources */,
   1126 				328309D8CC72CCB5623FB2A1 /* EngagementCoordinatorTests.swift in Sources */,
   1127 				3B3F30AA1B7AA6D4465CB537 /* EngagementMessageAuthenticatorTests.swift in Sources */,
   1128 				02943BA53D2130B910E6DC00 /* EnsureGameEntityTests.swift in Sources */,
   1129 				931431F8052FC58768C9BC26 /* FriendControllerNicknameReplayTests.swift in Sources */,
   1130 				61A0F71985C898D046556A1D /* FriendInviteRecencyStoreTests.swift in Sources */,
   1131 				6A1CA96FF48CBEEE78EA6D34 /* FriendModelTests.swift in Sources */,
   1132 				712A2764596A2D17A0BBBF3B /* FriendZoneTests.swift in Sources */,
   1133 				85A798525FE1DC98210A9E82 /* GameCursorStoreTests.swift in Sources */,
   1134 				2C0DFC182240A2519ED1FA6A /* GameMutatorTests.swift in Sources */,
   1135 				30703DDF575DCDA53227DA66 /* GamePushCredentialsTests.swift in Sources */,
   1136 				9AACF424992AE45FD7937064 /* GameStoreCompletionLockTests.swift in Sources */,
   1137 				4D7BF839BA71E1BF0AE9BCE9 /* GameStoreContributingDevicesTests.swift in Sources */,
   1138 				F30141060E0F670CD329FF22 /* GameStoreLibraryDatesTests.swift in Sources */,
   1139 				262A9CE8C3CB93869190CFF1 /* GameStoreMergedAuthorCellsTests.swift in Sources */,
   1140 				2C5A15054CCCBF9FD626AFBB /* GameStorePushAddressTests.swift in Sources */,
   1141 				205894D447BFE2CCEB07575D /* GameStoreRevocationLockTests.swift in Sources */,
   1142 				449B0A09A36B276C93CFB9A4 /* GameStoreUnreadMovesTests.swift in Sources */,
   1143 				7714B1C2FBCBBAD9BE8FEAF8 /* GameSummaryThumbnailTests.swift in Sources */,
   1144 				1D08DDEDEF5433912CC6D4DB /* GameViewedStoreTests.swift in Sources */,
   1145 				085B70680087464B8A7BA3EE /* GridSilhouetteTests.swift in Sources */,
   1146 				AACC9F70AEEDCB3360FFDEFF /* GridStateMergerTests.swift in Sources */,
   1147 				10AF4F2750E0D64AA3828F35 /* ImportServiceTests.swift in Sources */,
   1148 				9DFE90A6D7C58823CA02CA4E /* InboundRecordIdentityTests.swift in Sources */,
   1149 				0158184A413AE177F75B4150 /* JournalReplayTests.swift in Sources */,
   1150 				6E67C0DCB0416F382EA065B7 /* JournalUploadTests.swift in Sources */,
   1151 				2641299DE1F2E84E8C21E037 /* LogScrubberTests.swift in Sources */,
   1152 				E454051BA4797000C8AD2B48 /* MovesCodecLegacyDecodeTests.swift in Sources */,
   1153 				DE90CC8BE23A0EFC4A32FFA5 /* MovesInboundTests.swift in Sources */,
   1154 				F5F333B36654AEAF69A3C220 /* MovesJournalTests.swift in Sources */,
   1155 				C1930083671621AC79CF95DD /* MovesUpdaterTests.swift in Sources */,
   1156 				C1D97A4CD02BC9C22C4208BB /* NYTAuthServiceTests.swift in Sources */,
   1157 				2765E30202EF955B425CB1A3 /* NYTOverlayLetterRecognizerTests.swift in Sources */,
   1158 				EA9DA088AF131B0E6A874E70 /* NYTOverlaySlicerTests.swift in Sources */,
   1159 				DCAA1C4A4E4943675EC6632A /* NYTPuzzleFetcherTests.swift in Sources */,
   1160 				50C02D37A41D55CFA5D307E2 /* NYTPuzzleUpgraderTests.swift in Sources */,
   1161 				AA38A51862FC0AB8F7D34899 /* NYTToXDConverterTests.swift in Sources */,
   1162 				6850EAE474E589CE1EA2DF68 /* NicknameDirectoryTests.swift in Sources */,
   1163 				18D5BB584DBF92A2EC580AEA /* NotificationNavigationBrokerTests.swift in Sources */,
   1164 				E632562D090D8BE907F28C53 /* NotificationStateTests.swift in Sources */,
   1165 				903681985C17FCB5F97773A9 /* OpenPuzzleBannerTests.swift in Sources */,
   1166 				C89A15D812E372FE1C56039B /* PUZToXDConverterTests.swift in Sources */,
   1167 				DAD7EA11DA7330773A485473 /* PeerChangeLedgerTests.swift in Sources */,
   1168 				51E6F7F2FC52C2AA87B9DB45 /* PeerPresenceGraceTests.swift in Sources */,
   1169 				A458AF9CA8579AB51B695B08 /* PendingChangeReapTests.swift in Sources */,
   1170 				8225918652DCC822CA1C862F /* PendingEditFlagTests.swift in Sources */,
   1171 				014134FB81566B5D41168260 /* PerGameZoneTests.swift in Sources */,
   1172 				9B1162B1714415FE58CBAE2C /* PersistenceControllerHealTests.swift in Sources */,
   1173 				26DC22F88FA10C47BC06975E /* PersistenceRecoveryTests.swift in Sources */,
   1174 				95B4083F8BC2CA465077A662 /* PlayerColorTests.swift in Sources */,
   1175 				CEDF853009D0C367035F1F76 /* PlayerNamePublisherTests.swift in Sources */,
   1176 				47A6EAAC144C37608AB9AE91 /* PlayerPreferencesTests.swift in Sources */,
   1177 				7BD1A9F69953F9C3288969AF /* PlayerRecordPresenceTests.swift in Sources */,
   1178 				04062BCD473ED244159B1066 /* PlayerRosterTests.swift in Sources */,
   1179 				309457EC2DFEC476253D54D2 /* PlayerSelectionPublisherTests.swift in Sources */,
   1180 				00F2108848ADC7B4BF3AA0AE /* PlayerSessionNavigationTests.swift in Sources */,
   1181 				C6CC673F2D4BB8A1C0439FBB /* PushClientTests.swift in Sources */,
   1182 				5E80545A8ECEB1E2ED371C53 /* PushCredentialRotationTests.swift in Sources */,
   1183 				2A273C98FE3AC5E4C9BE1D88 /* PushPayloadCipherTests.swift in Sources */,
   1184 				A78FF09708EDED7ED50BB55B /* PushPayloadTests.swift in Sources */,
   1185 				33CEEDAFBAA46128A9713AF5 /* PushRequestAuthenticatorTests.swift in Sources */,
   1186 				F34EDFD45E2F5006807DDAC7 /* PuzzleCatalogTests.swift in Sources */,
   1187 				82D1714DC441E4943E96C882 /* PuzzleFileReaderTests.swift in Sources */,
   1188 				7FCD3F582B5ADC235E1F88A0 /* PuzzleNotificationTextTests.swift in Sources */,
   1189 				0A7AEB93A473AFCCD9217F49 /* PuzzleSessionTests.swift in Sources */,
   1190 				6E36ED34ACF047BABB3E2D69 /* RecentChangesTests.swift in Sources */,
   1191 				89CEDB8864F61E42AC04F9D6 /* RecordSerializerMovesTests.swift in Sources */,
   1192 				ECC1A5C3623F50B67185CFFB /* RecordSerializerTests.swift in Sources */,
   1193 				0BB721552A849A53AB9BF7CC /* RemoteCoordinateValidationTests.swift in Sources */,
   1194 				61F8B38587EE49D376B53544 /* ReplayCacheTests.swift in Sources */,
   1195 				C58F15CBEADA72032B54009D /* ReplayControlsTests.swift in Sources */,
   1196 				95FDB86366A30C95C69D5A02 /* RevealConfirmationTests.swift in Sources */,
   1197 				AE5D8C531F89F05B7201B3AC /* SessionMonitorTests.swift in Sources */,
   1198 				07A46496EE0B12FD526F36FB /* SessionPushPlannerTests.swift in Sources */,
   1199 				8AE376C0726116082B15241D /* ShareLinkRouteTests.swift in Sources */,
   1200 				41290C86E72D6567C43C31B7 /* ShareLinkShortenerTests.swift in Sources */,
   1201 				BE57957589423497338EBD37 /* ShareRoutingTests.swift in Sources */,
   1202 				025377AF80D45967CE910423 /* SyncMonitorTests.swift in Sources */,
   1203 				4819D7FBB407C9D76510EA2A /* TestHelpers.swift in Sources */,
   1204 				F15591B48E4155CB19C1F084 /* TimeLogTests.swift in Sources */,
   1205 				9AD5700398B1C1F29A3A75F6 /* TipStoreTests.swift in Sources */,
   1206 				31F2B6A61ED352C7D800149F /* XDAcceptTests.swift in Sources */,
   1207 				38439415796652D8B88C53B3 /* XDDecorationTests.swift in Sources */,
   1208 				47B4FB563BA4A8A54E2C26E0 /* XDLimitsTests.swift in Sources */,
   1209 				786813F3418C32EFBF296220 /* XDMarkupTests.swift in Sources */,
   1210 				9582AA583F5EA008FFC82B64 /* ZoneOrphaningTests.swift in Sources */,
   1211 			);
   1212 			runOnlyForDeploymentPostprocessing = 0;
   1213 		};
   1214 		C17B62906BBF281D006D8DC2 /* Sources */ = {
   1215 			isa = PBXSourcesBuildPhase;
   1216 			buildActionMask = 2147483647;
   1217 			files = (
   1218 				924B29C1EEB29F849A6824C3 /* AboutView.swift in Sources */,
   1219 				EA0AA522F6C383034C4572F4 /* AccountPushCoordinator.swift in Sources */,
   1220 				A87E5E615559B6461B1C3F94 /* AnnouncementBanner.swift in Sources */,
   1221 				5EFCD28B3B682DCCF38068D6 /* AnnouncementCenter.swift in Sources */,
   1222 				AE92B185FB52032AEB9421A1 /* AppActions.swift in Sources */,
   1223 				CED9627EAF70673B339D85EF /* AppDefaultsMigrator.swift in Sources */,
   1224 				78802AFDF6273231781CC0DC /* AppServices.swift in Sources */,
   1225 				A65F99414F8CF6704567BB07 /* Archive.swift in Sources */,
   1226 				197DDF45C36B9570BB9AE4B5 /* AuthorIdentity.swift in Sources */,
   1227 				EB6E99226D5EE27668787008 /* BadgeCoordinator.swift in Sources */,
   1228 				4D9E2C35893E68E47F790994 /* BundledBrowseView.swift in Sources */,
   1229 				F627D68B521FEA85EB80A850 /* CalendarDayCell.swift in Sources */,
   1230 				6BE7E91158F4DF1F71247C6D /* CellMark.swift in Sources */,
   1231 				E9A65F3548DD062FD36A19E1 /* CellPatterns.swift in Sources */,
   1232 				5FB26F40F5DB52111E3D1BDC /* CheckResult.swift in Sources */,
   1233 				C4D4433FAC1BBE14388FBCC9 /* ChronicleLedger.swift in Sources */,
   1234 				659F7E48357E164144A19789 /* CloudContainer.swift in Sources */,
   1235 				E15A40AA623B60279E8DDF43 /* CloudDiagnostics.swift in Sources */,
   1236 				1016604FBD4D63A0B9AAE503 /* CloudQuery.swift in Sources */,
   1237 				CC250D6BA9B41CB722D8A62E /* CloudService.swift in Sources */,
   1238 				E16A8FE849A8E8BCC0F32280 /* CloudZones.swift in Sources */,
   1239 				BAB41DBF7D099B1EE46B4ACB /* ClueBar.swift in Sources */,
   1240 				036EC1EDDEFD17DCDD9B5F1A /* ClueList.swift in Sources */,
   1241 				2571BA6482B3E896A80FF393 /* CompactSlider.swift in Sources */,
   1242 				609364CB79E0C7517298B404 /* ContentKeyDirectory.swift in Sources */,
   1243 				DE9E4FAB098731A650F2D306 /* CrossmateApp.swift in Sources */,
   1244 				C30C0C4E54E4209A22843872 /* CrossmateModel.xcdatamodeld in Sources */,
   1245 				C472EF02D8C7B0AC1D2284B8 /* CustomButtons.swift in Sources */,
   1246 				CCF3867C32C3F36E4F69A59E /* DebuggingMonitors.swift in Sources */,
   1247 				25141DD1C50C9191B6C94119 /* DecorationImages.swift in Sources */,
   1248 				F1854B64C63447B7C7232097 /* DiagnosticsReport.swift in Sources */,
   1249 				0F2992C16A3A658DEA0F707E /* DiagnosticsView.swift in Sources */,
   1250 				978F91DBAE94BC5DA1D94705 /* DriveMonitor.swift in Sources */,
   1251 				CABF8BFAA30B9F26C482FAB9 /* EngagementCoordinator.swift in Sources */,
   1252 				267ED5B329F05A30430B73A0 /* EngagementHost.swift in Sources */,
   1253 				A7FA870D794CA00F7F3F05D2 /* EngagementHostEnvironment.swift in Sources */,
   1254 				D240BF6498A9148855DB7734 /* EngagementLifecycle.swift in Sources */,
   1255 				648EA338E7718079EA354D7D /* EngagementMessageAuthenticator.swift in Sources */,
   1256 				06AE6DF7AA3274480C591E47 /* EngagementStore.swift in Sources */,
   1257 				1989FEF3DE02BEA414B6E9ED /* ExternalBrowseView.swift in Sources */,
   1258 				BD317ECC09C9099AC29B8C5D /* FriendAvatarView.swift in Sources */,
   1259 				C8ACF431021E7BEE61A99153 /* FriendController.swift in Sources */,
   1260 				7E6ED856CE78A774B061CA60 /* FriendEncryptionKeyDirectory.swift in Sources */,
   1261 				00A25F5D8DFF62EFA0C4D1D7 /* FriendEntity+DisplayName.swift in Sources */,
   1262 				D3E5B61C695CE3DDA7016E47 /* FriendInviteRecencyStore.swift in Sources */,
   1263 				884BC090D4E2D416AA52D6FD /* FriendPickerView.swift in Sources */,
   1264 				2AF2550B08CE79F8615B3076 /* FriendZone.swift in Sources */,
   1265 				B00743DAF8F46F14CE13E909 /* FriendsView.swift in Sources */,
   1266 				98F8FBF324ED00D53FEBB1DB /* Game.swift in Sources */,
   1267 				5992AD4A06D7C6440825E9C6 /* GameArchiver.swift in Sources */,
   1268 				D5022BFB2F8F2E5904EDF5C8 /* GameCardView.swift in Sources */,
   1269 				128915DB37018EE4CC16C856 /* GameCursorStore.swift in Sources */,
   1270 				16D7328AE0BB1F7ED46235C8 /* GameEntity+ContentKey.swift in Sources */,
   1271 				0063A5FC9F39E37A67F137FF /* GameListView.swift in Sources */,
   1272 				3A5483EF2893AE325DF27EE8 /* GameMutator.swift in Sources */,
   1273 				9FFD01CF6767220EEA20C0E4 /* GamePushCredentials.swift in Sources */,
   1274 				FC480FE2930EAE406F5BBBDA /* GameRowView.swift in Sources */,
   1275 				44FF4A5334A4086DEA7D8A7B /* GameShareItem.swift in Sources */,
   1276 				D58980B92C99122C368D4216 /* GameStore.swift in Sources */,
   1277 				774C5B5FC06366A0F5CD2376 /* GameSyncVersion.swift in Sources */,
   1278 				1A1A8A9AB36D02E2A5A9ED28 /* GameViewedStore.swift in Sources */,
   1279 				83CF8376EBFD7271931AC1B7 /* GridAccessibility.swift in Sources */,
   1280 				BA7FCA7D8713582B2396BE6B /* GridPosition.swift in Sources */,
   1281 				4B8CA45845618D75A3313816 /* GridSilhouette.swift in Sources */,
   1282 				ED6C21CD9F5AB286B69A02E4 /* GridStateMerger.swift in Sources */,
   1283 				1AAFF86B40CBBFF1EC9ADF9F /* GridThumbnailView.swift in Sources */,
   1284 				93DB3DD9A8EE994B92E7C084 /* GridView.swift in Sources */,
   1285 				01D1B4C7303F1CA52438FF86 /* HardwareKeyboardInputView.swift in Sources */,
   1286 				4A89595E3F6AB50E1D9E6BA8 /* ImportService.swift in Sources */,
   1287 				F8D37DBE75D7B3F039A8FAC8 /* ImportedBrowseView.swift in Sources */,
   1288 				1A19D13D9B820E276C60819E /* InputMonitor.swift in Sources */,
   1289 				D05F1B226E67A31218BA4E3A /* InvitationFailureCallout.swift in Sources */,
   1290 				59230713D85AE6895852B06A /* InviteCoordinator.swift in Sources */,
   1291 				FE447FF4339EA0BF874B1114 /* InviteDeliveryStore.swift in Sources */,
   1292 				7D9337A19747C79070AB3D59 /* InviteEntity+DisplayName.swift in Sources */,
   1293 				13C0F34520828020AD825D07 /* JoiningPuzzleView.swift in Sources */,
   1294 				9502840161DB88BB6BB409D5 /* Journal.swift in Sources */,
   1295 				B5F78A55C9BCCD24E44D865F /* JournalReplay.swift in Sources */,
   1296 				689DAEC70934027E76E8116E /* KeyboardView.swift in Sources */,
   1297 				38C913D00ED762BD9E355A2D /* KeychainHelper.swift in Sources */,
   1298 				CF1DC343A5D3110EDFA703AB /* LastUpdatedView.swift in Sources */,
   1299 				8D8A9F70731C98DD00BE1DA5 /* Layouts.swift in Sources */,
   1300 				6BD5C5B6BED06651312E2D01 /* MailComposeView.swift in Sources */,
   1301 				8ECA254A8BB852BF4B9CE6D7 /* MarketingScreenshots.swift in Sources */,
   1302 				91703E54DB4679C1911BF994 /* Moves.swift in Sources */,
   1303 				4D90B39AD2F79959FB8089EE /* MovesUpdater.swift in Sources */,
   1304 				1F4E5473F78A5CEDBA9719CE /* NYTAuthService.swift in Sources */,
   1305 				C843CADAA263CED503528A4E /* NYTBrowseView.swift in Sources */,
   1306 				6D2AF361587E43D807BA212F /* NYTLoginView.swift in Sources */,
   1307 				1E404AD99B04912167B83176 /* NYTOverlayLetterRecognizer.swift in Sources */,
   1308 				A4BF96473CD6D937402239C1 /* NYTOverlaySlicer.swift in Sources */,
   1309 				0241DC498C645FE1BDA00FB0 /* NYTPuzzleFetcher.swift in Sources */,
   1310 				85B9BAC5ED404FE4496250CB /* NYTPuzzleUpgrader.swift in Sources */,
   1311 				B762200F54C52E8377A80D15 /* NYTToXDConverter.swift in Sources */,
   1312 				5E89D1F8FDFE56395997281A /* NewGameSheet.swift in Sources */,
   1313 				36E2AAF1EE1314E13477EE85 /* NicknameDirectory.swift in Sources */,
   1314 				701BD90172F500B89E32E8E6 /* NoticeView.swift in Sources */,
   1315 				6AE88D9E1918508DBF2A91E1 /* NotificationState.swift in Sources */,
   1316 				CF56BBB90855367CB85FEB43 /* PUZToXDConverter.swift in Sources */,
   1317 				E6A13F8736ABF41F6346E301 /* ParticipantSummaries.swift in Sources */,
   1318 				4E14BB5D6F96D178373ED55A /* PeerChangeLedger.swift in Sources */,
   1319 				77556FD9473A3F10FADF5E4E /* PersistenceController.swift in Sources */,
   1320 				47584CBEF819C2F507D06DFF /* PlayerColor.swift in Sources */,
   1321 				3C54AE4AA04342CCF5705B20 /* PlayerNamePublisher.swift in Sources */,
   1322 				F8DDA34AC1A6B6499C5D222E /* PlayerPreferences.swift in Sources */,
   1323 				0C39CA21BE50E49F9F06C5F2 /* PlayerRoster.swift in Sources */,
   1324 				17A754692F05B97DBDD645F2 /* PlayerSelection.swift in Sources */,
   1325 				B6AB531F4E0C4031B627C539 /* PlayerSelectionPublisher.swift in Sources */,
   1326 				8F5CB2F94E083D06D7E04280 /* PlayerSession.swift in Sources */,
   1327 				E354A588DBA74627A9CD5591 /* Presence.swift in Sources */,
   1328 				A133A4B4A0C95AF8708BD7E6 /* PushClient.swift in Sources */,
   1329 				43E311FBD68B7D35A4D29743 /* PushPayload.swift in Sources */,
   1330 				8FEE38B2B540F0E91560747F /* PushPayloadCipher.swift in Sources */,
   1331 				F2F7CB23DA62BF714632B097 /* PushRequestAuthenticator.swift in Sources */,
   1332 				503229FF89FF7C29CEF4C16D /* Puzzle.swift in Sources */,
   1333 				350722635E9A17324148CACC /* PuzzleCatalog.swift in Sources */,
   1334 				ADBEAD1C0139BCF864CA8A1D /* PuzzleCommands.swift in Sources */,
   1335 				9DDFDF9D97FFC4F043CE84D8 /* PuzzleFileReader.swift in Sources */,
   1336 				5264996E0D72A805B20985E8 /* PuzzleGridStats.swift in Sources */,
   1337 				D2AC1D9BD7E387B06B9B8A0E /* PuzzleHeader.swift in Sources */,
   1338 				082B9BAADE3AFA54EFE30E19 /* PuzzleModifiers.swift in Sources */,
   1339 				24F7ED458A1C09F8CF309B35 /* PuzzleNotificationText+GameEntity.swift in Sources */,
   1340 				E81F92AAB2968997C3D68809 /* PuzzleNotificationText.swift in Sources */,
   1341 				2DD78CA0CD587AA4E5C4B178 /* PuzzleScoreboard.swift in Sources */,
   1342 				88A34C8857B2B3D45A6FBCB2 /* PuzzleSession.swift in Sources */,
   1343 				E91FB8101E1927CA567DE825 /* PuzzleSource.swift in Sources */,
   1344 				9C52C48DB4996D5C83DEC144 /* PuzzleView.swift in Sources */,
   1345 				9AD8936D94FD676B23DFBB77 /* RecentChanges.swift in Sources */,
   1346 				D94FF5DFB9412D2DC24F6574 /* RecordApplier.swift in Sources */,
   1347 				D13ECFAE05DB508577D2FF66 /* RecordBuilder.swift in Sources */,
   1348 				CF0CA17ABE211DAE4DD35AFD /* RecordSerializer.swift in Sources */,
   1349 				E1FBC33E3348547D4DF946C4 /* ReplayControls.swift in Sources */,
   1350 				C9864C9940C9DAAD0A788094 /* ReplayLoader.swift in Sources */,
   1351 				15768439C1783A1780FBB824 /* SessionCoordinator.swift in Sources */,
   1352 				5ECF5B80D08E5E999A540782 /* SessionMonitor.swift in Sources */,
   1353 				B48DE7079BE2F31D2367C5F7 /* SessionPushPlanner.swift in Sources */,
   1354 				4F1A93404828EDBDBBF86716 /* SettingsView.swift in Sources */,
   1355 				BCB9A4D5E06EE5006186465D /* ShareController.swift in Sources */,
   1356 				D4EDC0D426688B295DA77C08 /* ShareLinkRoute.swift in Sources */,
   1357 				779D1955F350B507A47B1E5B /* ShareLinkShortener.swift in Sources */,
   1358 				AF4F1AE2A1F94E92C785C524 /* Square.swift in Sources */,
   1359 				DDC7994B951A3A7B836B36F6 /* SuccessPanel.swift in Sources */,
   1360 				82918A74836E5076CBFA1592 /* SyncEngine.swift in Sources */,
   1361 				F46733AB3C72749A4A992667 /* SyncState+Helpers.swift in Sources */,
   1362 				B0170C8927EDD2E43F849204 /* TimeLog.swift in Sources */,
   1363 				35D97436772257DAD3936ECB /* TipStore.swift in Sources */,
   1364 				3C54B672A9FCA98C0A304470 /* TipsArchive.swift in Sources */,
   1365 				7FFEACFC672925A0968ACC1C /* XD.swift in Sources */,
   1366 				7CD7CC4681C2085AAC39FA79 /* XDDecorationWriter.swift in Sources */,
   1367 				9CB8808193A4A106D721D767 /* XDFileType.swift in Sources */,
   1368 				14749A042380925B7CA902F2 /* XDMarkup.swift in Sources */,
   1369 			);
   1370 			runOnlyForDeploymentPostprocessing = 0;
   1371 		};
   1372 /* End PBXSourcesBuildPhase section */
   1373 
   1374 /* Begin PBXTargetDependency section */
   1375 		0638C125467274AA03088E07 /* PBXTargetDependency */ = {
   1376 			isa = PBXTargetDependency;
   1377 			target = 350366A68B75DC4BDA91F8E5 /* NotificationService */;
   1378 			targetProxy = 0751E0359C340223ADBA2B05 /* PBXContainerItemProxy */;
   1379 		};
   1380 		42035D5EEE61A5D459E1D46D /* PBXTargetDependency */ = {
   1381 			isa = PBXTargetDependency;
   1382 			target = 7708D1C8A0145D43BD15DEB7 /* Crossmate */;
   1383 			targetProxy = F0122CF3E216720C4437CE6A /* PBXContainerItemProxy */;
   1384 		};
   1385 /* End PBXTargetDependency section */
   1386 
   1387 /* Begin XCBuildConfiguration section */
   1388 		209C1E6D178C7EF962FC85A5 /* Release */ = {
   1389 			isa = XCBuildConfiguration;
   1390 			baseConfigurationReference = 0BDC16DA7F762F4C5F4BED14 /* Config.xcconfig */;
   1391 			buildSettings = {
   1392 				ALWAYS_SEARCH_USER_PATHS = NO;
   1393 				ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOL_EXTENSIONS = YES;
   1394 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
   1395 				CLANG_ANALYZER_NONNULL = YES;
   1396 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
   1397 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
   1398 				CLANG_CXX_LIBRARY = "libc++";
   1399 				CLANG_ENABLE_MODULES = YES;
   1400 				CLANG_ENABLE_OBJC_ARC = YES;
   1401 				CLANG_ENABLE_OBJC_WEAK = YES;
   1402 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
   1403 				CLANG_WARN_BOOL_CONVERSION = YES;
   1404 				CLANG_WARN_COMMA = YES;
   1405 				CLANG_WARN_CONSTANT_CONVERSION = YES;
   1406 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
   1407 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
   1408 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
   1409 				CLANG_WARN_EMPTY_BODY = YES;
   1410 				CLANG_WARN_ENUM_CONVERSION = YES;
   1411 				CLANG_WARN_INFINITE_RECURSION = YES;
   1412 				CLANG_WARN_INT_CONVERSION = YES;
   1413 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
   1414 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
   1415 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
   1416 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
   1417 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
   1418 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
   1419 				CLANG_WARN_STRICT_PROTOTYPES = YES;
   1420 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
   1421 				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
   1422 				CLANG_WARN_UNREACHABLE_CODE = YES;
   1423 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
   1424 				COPY_PHASE_STRIP = NO;
   1425 				DEAD_CODE_STRIPPING = YES;
   1426 				DEBUG_INFORMATION_FORMAT = "dwarf-with-dsym";
   1427 				DEVELOPMENT_TEAM = 7TD7PZBNXP;
   1428 				ENABLE_NS_ASSERTIONS = NO;
   1429 				ENABLE_STRICT_OBJC_MSGSEND = YES;
   1430 				ENABLE_USER_SCRIPT_SANDBOXING = YES;
   1431 				GCC_C_LANGUAGE_STANDARD = gnu11;
   1432 				GCC_NO_COMMON_BLOCKS = YES;
   1433 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
   1434 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
   1435 				GCC_WARN_UNDECLARED_SELECTOR = YES;
   1436 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
   1437 				GCC_WARN_UNUSED_FUNCTION = YES;
   1438 				GCC_WARN_UNUSED_VARIABLE = YES;
   1439 				IPHONEOS_DEPLOYMENT_TARGET = 17.5;
   1440 				MTL_ENABLE_DEBUG_INFO = NO;
   1441 				MTL_FAST_MATH = YES;
   1442 				PRODUCT_NAME = "$(TARGET_NAME)";
   1443 				SDKROOT = iphoneos;
   1444 				STRING_CATALOG_GENERATE_SYMBOLS = YES;
   1445 				SWIFT_COMPILATION_MODE = wholemodule;
   1446 				SWIFT_EMIT_LOC_STRINGS = YES;
   1447 				SWIFT_OPTIMIZATION_LEVEL = "-O";
   1448 				SWIFT_VERSION = 6;
   1449 			};
   1450 			name = Release;
   1451 		};
   1452 		42CA2E441989D32BE123F48A /* Debug */ = {
   1453 			isa = XCBuildConfiguration;
   1454 			buildSettings = {
   1455 				BUNDLE_LOADER = "$(TEST_HOST)";
   1456 				CODE_SIGN_STYLE = Automatic;
   1457 				GENERATE_INFOPLIST_FILE = YES;
   1458 				LD_RUNPATH_SEARCH_PATHS = (
   1459 					"$(inherited)",
   1460 					"@executable_path/Frameworks",
   1461 					"@loader_path/Frameworks",
   1462 				);
   1463 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate.unittests;
   1464 				SDKROOT = iphoneos;
   1465 				TARGETED_DEVICE_FAMILY = "1,2";
   1466 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Crossmate.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Crossmate";
   1467 			};
   1468 			name = Debug;
   1469 		};
   1470 		642190659D822637293D1645 /* Release */ = {
   1471 			isa = XCBuildConfiguration;
   1472 			buildSettings = {
   1473 				BUNDLE_LOADER = "$(TEST_HOST)";
   1474 				CODE_SIGN_STYLE = Automatic;
   1475 				GENERATE_INFOPLIST_FILE = YES;
   1476 				LD_RUNPATH_SEARCH_PATHS = (
   1477 					"$(inherited)",
   1478 					"@executable_path/Frameworks",
   1479 					"@loader_path/Frameworks",
   1480 				);
   1481 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate.unittests;
   1482 				SDKROOT = iphoneos;
   1483 				TARGETED_DEVICE_FAMILY = "1,2";
   1484 				TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Crossmate.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Crossmate";
   1485 			};
   1486 			name = Release;
   1487 		};
   1488 		68A4416DD8D2ADB28F35E46C /* Release */ = {
   1489 			isa = XCBuildConfiguration;
   1490 			buildSettings = {
   1491 				CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
   1492 				CODE_SIGN_STYLE = Automatic;
   1493 				INFOPLIST_FILE = NotificationService/Info.plist;
   1494 				LD_RUNPATH_SEARCH_PATHS = (
   1495 					"$(inherited)",
   1496 					"@executable_path/Frameworks",
   1497 					"@executable_path/../../Frameworks",
   1498 				);
   1499 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate.notificationservice;
   1500 				SDKROOT = iphoneos;
   1501 				TARGETED_DEVICE_FAMILY = "1,2";
   1502 			};
   1503 			name = Release;
   1504 		};
   1505 		8BC97916898B0BF1E6951C48 /* Release */ = {
   1506 			isa = XCBuildConfiguration;
   1507 			buildSettings = {
   1508 				APP_ATTEST_ENVIRONMENT = production;
   1509 				APS_ENVIRONMENT = production;
   1510 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
   1511 				CODE_SIGN_ENTITLEMENTS = Crossmate/Crossmate.entitlements;
   1512 				CODE_SIGN_IDENTITY = "iPhone Developer";
   1513 				CODE_SIGN_STYLE = Automatic;
   1514 				CROSSMATE_ENGAGEMENT_SOCKET_URL = "$(inherited)";
   1515 				CROSSMATE_PUSH_BASE_URL = "$(inherited)";
   1516 				CROSSMATE_SHARE_LINK_BASE_URL = "$(inherited)";
   1517 				CROSSMATE_SHARE_LINK_HOST = "$(inherited)";
   1518 				ICLOUD_ENVIRONMENT = "$(ICLOUD_ENVIRONMENT_OVERRIDE:default=$(ICLOUD_ENVIRONMENT_DEFAULT))";
   1519 				ICLOUD_ENVIRONMENT_DEFAULT = Production;
   1520 				INFOPLIST_FILE = Crossmate/Info.plist;
   1521 				LD_RUNPATH_SEARCH_PATHS = (
   1522 					"$(inherited)",
   1523 					"@executable_path/Frameworks",
   1524 				);
   1525 				OTHER_LDFLAGS = "$(inherited) -Wl,-no_deduplicate";
   1526 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate;
   1527 				SDKROOT = iphoneos;
   1528 				TARGETED_DEVICE_FAMILY = "1,2";
   1529 			};
   1530 			name = Release;
   1531 		};
   1532 		AF49D30A1B81631106E05429 /* Debug */ = {
   1533 			isa = XCBuildConfiguration;
   1534 			buildSettings = {
   1535 				APP_ATTEST_ENVIRONMENT = production;
   1536 				APS_ENVIRONMENT = development;
   1537 				ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
   1538 				CODE_SIGN_ENTITLEMENTS = Crossmate/Crossmate.entitlements;
   1539 				CODE_SIGN_IDENTITY = "iPhone Developer";
   1540 				CODE_SIGN_STYLE = Automatic;
   1541 				CROSSMATE_ENGAGEMENT_SOCKET_URL = "$(inherited)";
   1542 				CROSSMATE_PUSH_BASE_URL = "$(inherited)";
   1543 				CROSSMATE_SHARE_LINK_BASE_URL = "$(inherited)";
   1544 				CROSSMATE_SHARE_LINK_HOST = "$(inherited)";
   1545 				ICLOUD_ENVIRONMENT = "$(ICLOUD_ENVIRONMENT_OVERRIDE:default=$(ICLOUD_ENVIRONMENT_DEFAULT))";
   1546 				ICLOUD_ENVIRONMENT_DEFAULT = Development;
   1547 				INFOPLIST_FILE = Crossmate/Info.plist;
   1548 				LD_RUNPATH_SEARCH_PATHS = (
   1549 					"$(inherited)",
   1550 					"@executable_path/Frameworks",
   1551 				);
   1552 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate;
   1553 				SDKROOT = iphoneos;
   1554 				TARGETED_DEVICE_FAMILY = "1,2";
   1555 			};
   1556 			name = Debug;
   1557 		};
   1558 		C32934743A6313F80D8A4C76 /* Debug */ = {
   1559 			isa = XCBuildConfiguration;
   1560 			buildSettings = {
   1561 				CODE_SIGN_ENTITLEMENTS = NotificationService/NotificationService.entitlements;
   1562 				CODE_SIGN_STYLE = Automatic;
   1563 				INFOPLIST_FILE = NotificationService/Info.plist;
   1564 				LD_RUNPATH_SEARCH_PATHS = (
   1565 					"$(inherited)",
   1566 					"@executable_path/Frameworks",
   1567 					"@executable_path/../../Frameworks",
   1568 				);
   1569 				PRODUCT_BUNDLE_IDENTIFIER = net.inqk.crossmate.notificationservice;
   1570 				SDKROOT = iphoneos;
   1571 				TARGETED_DEVICE_FAMILY = "1,2";
   1572 			};
   1573 			name = Debug;
   1574 		};
   1575 		E7B092DD549FA4FFED8BC20E /* Debug */ = {
   1576 			isa = XCBuildConfiguration;
   1577 			baseConfigurationReference = 0BDC16DA7F762F4C5F4BED14 /* Config.xcconfig */;
   1578 			buildSettings = {
   1579 				ALWAYS_SEARCH_USER_PATHS = NO;
   1580 				ASSETCATALOG_COMPILER_GENERATE_ASSET_SYMBOL_EXTENSIONS = YES;
   1581 				ASSETCATALOG_COMPILER_GENERATE_SWIFT_ASSET_SYMBOL_EXTENSIONS = YES;
   1582 				CLANG_ANALYZER_NONNULL = YES;
   1583 				CLANG_ANALYZER_NUMBER_OBJECT_CONVERSION = YES_AGGRESSIVE;
   1584 				CLANG_CXX_LANGUAGE_STANDARD = "gnu++14";
   1585 				CLANG_CXX_LIBRARY = "libc++";
   1586 				CLANG_ENABLE_MODULES = YES;
   1587 				CLANG_ENABLE_OBJC_ARC = YES;
   1588 				CLANG_ENABLE_OBJC_WEAK = YES;
   1589 				CLANG_WARN_BLOCK_CAPTURE_AUTORELEASING = YES;
   1590 				CLANG_WARN_BOOL_CONVERSION = YES;
   1591 				CLANG_WARN_COMMA = YES;
   1592 				CLANG_WARN_CONSTANT_CONVERSION = YES;
   1593 				CLANG_WARN_DEPRECATED_OBJC_IMPLEMENTATIONS = YES;
   1594 				CLANG_WARN_DIRECT_OBJC_ISA_USAGE = YES_ERROR;
   1595 				CLANG_WARN_DOCUMENTATION_COMMENTS = YES;
   1596 				CLANG_WARN_EMPTY_BODY = YES;
   1597 				CLANG_WARN_ENUM_CONVERSION = YES;
   1598 				CLANG_WARN_INFINITE_RECURSION = YES;
   1599 				CLANG_WARN_INT_CONVERSION = YES;
   1600 				CLANG_WARN_NON_LITERAL_NULL_CONVERSION = YES;
   1601 				CLANG_WARN_OBJC_IMPLICIT_RETAIN_SELF = YES;
   1602 				CLANG_WARN_OBJC_LITERAL_CONVERSION = YES;
   1603 				CLANG_WARN_OBJC_ROOT_CLASS = YES_ERROR;
   1604 				CLANG_WARN_QUOTED_INCLUDE_IN_FRAMEWORK_HEADER = YES;
   1605 				CLANG_WARN_RANGE_LOOP_ANALYSIS = YES;
   1606 				CLANG_WARN_STRICT_PROTOTYPES = YES;
   1607 				CLANG_WARN_SUSPICIOUS_MOVE = YES;
   1608 				CLANG_WARN_UNGUARDED_AVAILABILITY = YES_AGGRESSIVE;
   1609 				CLANG_WARN_UNREACHABLE_CODE = YES;
   1610 				CLANG_WARN__DUPLICATE_METHOD_MATCH = YES;
   1611 				COPY_PHASE_STRIP = NO;
   1612 				DEAD_CODE_STRIPPING = YES;
   1613 				DEBUG_INFORMATION_FORMAT = dwarf;
   1614 				DEVELOPMENT_TEAM = 7TD7PZBNXP;
   1615 				ENABLE_STRICT_OBJC_MSGSEND = YES;
   1616 				ENABLE_TESTABILITY = YES;
   1617 				ENABLE_USER_SCRIPT_SANDBOXING = YES;
   1618 				GCC_C_LANGUAGE_STANDARD = gnu11;
   1619 				GCC_DYNAMIC_NO_PIC = NO;
   1620 				GCC_NO_COMMON_BLOCKS = YES;
   1621 				GCC_OPTIMIZATION_LEVEL = 0;
   1622 				GCC_PREPROCESSOR_DEFINITIONS = (
   1623 					"$(inherited)",
   1624 					"DEBUG=1",
   1625 				);
   1626 				GCC_WARN_64_TO_32_BIT_CONVERSION = YES;
   1627 				GCC_WARN_ABOUT_RETURN_TYPE = YES_ERROR;
   1628 				GCC_WARN_UNDECLARED_SELECTOR = YES;
   1629 				GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE;
   1630 				GCC_WARN_UNUSED_FUNCTION = YES;
   1631 				GCC_WARN_UNUSED_VARIABLE = YES;
   1632 				IPHONEOS_DEPLOYMENT_TARGET = 17.5;
   1633 				MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE;
   1634 				MTL_FAST_MATH = YES;
   1635 				ONLY_ACTIVE_ARCH = YES;
   1636 				PRODUCT_NAME = "$(TARGET_NAME)";
   1637 				SDKROOT = iphoneos;
   1638 				STRING_CATALOG_GENERATE_SYMBOLS = YES;
   1639 				SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
   1640 				SWIFT_EMIT_LOC_STRINGS = YES;
   1641 				SWIFT_OPTIMIZATION_LEVEL = "-Onone";
   1642 				SWIFT_VERSION = 6;
   1643 			};
   1644 			name = Debug;
   1645 		};
   1646 /* End XCBuildConfiguration section */
   1647 
   1648 /* Begin XCConfigurationList section */
   1649 		0C7AF110B3697D116B91817A /* Build configuration list for PBXNativeTarget "Crossmate Unit Tests" */ = {
   1650 			isa = XCConfigurationList;
   1651 			buildConfigurations = (
   1652 				42CA2E441989D32BE123F48A /* Debug */,
   1653 				642190659D822637293D1645 /* Release */,
   1654 			);
   1655 			defaultConfigurationIsVisible = 0;
   1656 			defaultConfigurationName = Debug;
   1657 		};
   1658 		97D15A585690B87E7C17FF8A /* Build configuration list for PBXNativeTarget "NotificationService" */ = {
   1659 			isa = XCConfigurationList;
   1660 			buildConfigurations = (
   1661 				C32934743A6313F80D8A4C76 /* Debug */,
   1662 				68A4416DD8D2ADB28F35E46C /* Release */,
   1663 			);
   1664 			defaultConfigurationIsVisible = 0;
   1665 			defaultConfigurationName = Debug;
   1666 		};
   1667 		9A436EF03A8593C66A18A832 /* Build configuration list for PBXProject "Crossmate" */ = {
   1668 			isa = XCConfigurationList;
   1669 			buildConfigurations = (
   1670 				E7B092DD549FA4FFED8BC20E /* Debug */,
   1671 				209C1E6D178C7EF962FC85A5 /* Release */,
   1672 			);
   1673 			defaultConfigurationIsVisible = 0;
   1674 			defaultConfigurationName = Debug;
   1675 		};
   1676 		AB7D49875A042FD78EDD157A /* Build configuration list for PBXNativeTarget "Crossmate" */ = {
   1677 			isa = XCConfigurationList;
   1678 			buildConfigurations = (
   1679 				AF49D30A1B81631106E05429 /* Debug */,
   1680 				8BC97916898B0BF1E6951C48 /* Release */,
   1681 			);
   1682 			defaultConfigurationIsVisible = 0;
   1683 			defaultConfigurationName = Debug;
   1684 		};
   1685 /* End XCConfigurationList section */
   1686 
   1687 /* Begin XCVersionGroup section */
   1688 		F93AC31640C40FCC039570A3 /* CrossmateModel.xcdatamodeld */ = {
   1689 			isa = XCVersionGroup;
   1690 			children = (
   1691 				927186458ED03FD0C5660765 /* CrossmateModel.xcdatamodel */,
   1692 			);
   1693 			currentVersion = 927186458ED03FD0C5660765 /* CrossmateModel.xcdatamodel */;
   1694 			path = CrossmateModel.xcdatamodeld;
   1695 			sourceTree = "<group>";
   1696 			versionGroupType = wrapper.xcdatamodel;
   1697 		};
   1698 /* End XCVersionGroup section */
   1699 	};
   1700 	rootObject = 9167165F088B7698D1319D3C /* Project object */;
   1701 }