diff --git a/docs/APP_YOUTUBE_LIVE.md b/docs/APP_YOUTUBE_LIVE.md index a89c092..0c4dcc4 100644 --- a/docs/APP_YOUTUBE_LIVE.md +++ b/docs/APP_YOUTUBE_LIVE.md @@ -38,10 +38,10 @@ Solo se la società vuole il **proprio** canale invece di Match Live TV: Nella home app (**Partite**): -- **Partita programmata** — scegli dal calendario una gara già inserita (sito o app) - **Nuova partita** — programma data/ora oppure **Avvia subito** senza orario +- Oppure tocca una gara già in calendario (sito o app) -Poi tocca la card o conferma dal foglio: si apre il wizard (Partita → Trasmissione → …). +Poi conferma dal foglio o tocca la card: si apre il wizard (Partita → Trasmissione → …). ## 4. Avvia diretta diff --git a/native/android/app/src/main/kotlin/com/matchlivetv/match_live_tv/ui/matches/MatchesScreen.kt b/native/android/app/src/main/kotlin/com/matchlivetv/match_live_tv/ui/matches/MatchesScreen.kt index 4565d59..ad845ef 100644 --- a/native/android/app/src/main/kotlin/com/matchlivetv/match_live_tv/ui/matches/MatchesScreen.kt +++ b/native/android/app/src/main/kotlin/com/matchlivetv/match_live_tv/ui/matches/MatchesScreen.kt @@ -57,7 +57,6 @@ import com.matchlivetv.match_live_tv.ui.components.LanguagePickerDialog import com.matchlivetv.match_live_tv.ui.components.MatchLiveWordmark import com.matchlivetv.match_live_tv.ui.components.MatchPrimaryButton import com.matchlivetv.match_live_tv.ui.components.MatchScreenScaffold -import com.matchlivetv.match_live_tv.ui.components.MatchSecondaryButton import com.matchlivetv.match_live_tv.ui.theme.MatchColors import kotlinx.coroutines.launch @@ -237,18 +236,11 @@ fun MatchesScreen( style = MaterialTheme.typography.bodyMedium, ) Spacer(Modifier.height(16.dp)) - Row(horizontalArrangement = Arrangement.spacedBy(12.dp)) { - MatchSecondaryButton( - label = stringResource(R.string.matches_schedule).uppercase(), - onClick = { showScheduleSheet = true }, - modifier = Modifier.weight(1f), - ) - MatchPrimaryButton( - label = stringResource(R.string.matches_new).uppercase(), - onClick = { showNewMatchSheet = true }, - modifier = Modifier.weight(1f), - ) - } + MatchPrimaryButton( + label = stringResource(R.string.matches_new).uppercase(), + onClick = { showNewMatchSheet = true }, + modifier = Modifier.fillMaxWidth(), + ) Spacer(Modifier.height(8.dp)) activeTeam?.let { team -> TeamPickerBar( diff --git a/native/android/app/src/main/res/values-de/strings.xml b/native/android/app/src/main/res/values-de/strings.xml index 34dba73..250597d 100644 --- a/native/android/app/src/main/res/values-de/strings.xml +++ b/native/android/app/src/main/res/values-de/strings.xml @@ -21,13 +21,12 @@ Anmeldung fehlgeschlagen Spiele Hallo, %1$s - Nimm einen laufenden Livestream wieder auf oder starte ein geplantes Spiel. - Geplantes Spiel + Nimm einen laufenden Livestream wieder auf oder starte ein neues Spiel. Neues Spiel Keine Spiele im Kalender Geplante Spiele Bereit zum Start - Plane ein Spiel oder starte ein neues mit «Neues Spiel». + Tippe auf «Neues Spiel», um im Voraus zu planen oder sofort zu starten. Aktives Team: %1$s. Du hast mehrere Teams: prüfe die oben ausgewählte. Keine weiteren Spiele im Kalender. diff --git a/native/android/app/src/main/res/values-en/strings.xml b/native/android/app/src/main/res/values-en/strings.xml index 7612762..4e2faa4 100644 --- a/native/android/app/src/main/res/values-en/strings.xml +++ b/native/android/app/src/main/res/values-en/strings.xml @@ -21,13 +21,12 @@ Login failed Matches Hi, %1$s - Resume a live stream or start a scheduled match. - Scheduled match + Resume a live stream or start a new match. New match No matches on the calendar Scheduled matches Ready to start - Schedule a match or start a new one with «New match». + Tap «New match» to schedule ahead or start right away. Active team: %1$s. You have multiple teams: check the one selected above. No other matches on the calendar. diff --git a/native/android/app/src/main/res/values-es/strings.xml b/native/android/app/src/main/res/values-es/strings.xml index 70f3564..5371de8 100644 --- a/native/android/app/src/main/res/values-es/strings.xml +++ b/native/android/app/src/main/res/values-es/strings.xml @@ -21,13 +21,12 @@ Error de acceso Partidos Hola, %1$s - Reanuda un directo en curso o inicia un partido programado. - Partido programado + Reanuda un directo en curso o inicia un nuevo partido. Nuevo partido Ningún partido en el calendario Partidos programados Listos para empezar - Programa un partido o inicia uno nuevo con «Nuevo partido». + Toca «Nuevo partido» para programar con antelación o empezar ya. Equipo activo: %1$s. Tienes varios equipos: comprueba el seleccionado arriba. Ningún otro partido en el calendario. diff --git a/native/android/app/src/main/res/values-fr/strings.xml b/native/android/app/src/main/res/values-fr/strings.xml index 6a4a6fd..fad9546 100644 --- a/native/android/app/src/main/res/values-fr/strings.xml +++ b/native/android/app/src/main/res/values-fr/strings.xml @@ -21,13 +21,12 @@ Échec de la connexion Matchs Bonjour, %1$s - Reprenez un direct en cours ou démarrez un match programmé. - Match programmé + Reprenez un direct en cours ou démarrez un nouveau match. Nouveau match Aucun match au calendrier Matchs programmés Prêts à démarrer - Programmez un match ou démarrez-en un avec « Nouveau match ». + Touchez « Nouveau match » pour planifier à l\'avance ou démarrer tout de suite. Équipe active : %1$s. Vous avez plusieurs équipes : vérifiez celle sélectionnée ci-dessus. Aucun autre match au calendrier. diff --git a/native/android/app/src/main/res/values/strings.xml b/native/android/app/src/main/res/values/strings.xml index 15842f1..d726872 100644 --- a/native/android/app/src/main/res/values/strings.xml +++ b/native/android/app/src/main/res/values/strings.xml @@ -21,13 +21,12 @@ Login fallito Partite Ciao, %1$s - Riprendi una diretta in corso o avvia una partita programmata. - Partita programmata + Riprendi una diretta in corso o avvia una nuova partita. Nuova partita Nessuna partita in calendario Partite programmate Pronte da avviare - Programma una partita o avviane una nuova con «Nuova partita». + Tocca «Nuova partita» per programmare in anticipo o avviare subito. Squadra attiva: %1$s. Hai più squadre: verifica quella selezionata sopra. Nessuna altra partita in calendario. diff --git a/native/ios/MatchLiveTv.xcodeproj/project.pbxproj b/native/ios/MatchLiveTv.xcodeproj/project.pbxproj index e8b3f66..33aa63a 100644 --- a/native/ios/MatchLiveTv.xcodeproj/project.pbxproj +++ b/native/ios/MatchLiveTv.xcodeproj/project.pbxproj @@ -4,191 +4,191 @@ classes = {}; objectVersion = 60; objects = { - 25930AAB8F8A4E43A9FBE5EE /* MatchLiveTvApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveTvApp.swift; path = MatchLiveTv/App/MatchLiveTvApp.swift; sourceTree = ""; }; - 7B67B2CEBA2D4765892F5D35 /* ApiInstant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstant.swift; path = MatchLiveTv/Core/ApiInstant.swift; sourceTree = ""; }; - DE94E33A56BB4272B4125448 /* AppConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppConfig.swift; path = MatchLiveTv/Core/AppConfig.swift; sourceTree = ""; }; - FFCEF74E04524E6E829E98A7 /* AppLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppLanguage.swift; path = MatchLiveTv/Core/AppLanguage.swift; sourceTree = ""; }; - 4E743B662F034CE780350C20 /* ColorHex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ColorHex.swift; path = MatchLiveTv/Core/ColorHex.swift; sourceTree = ""; }; - C5B70A5291FD45159FE4C19B /* DeviceTelemetry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DeviceTelemetry.swift; path = MatchLiveTv/Core/DeviceTelemetry.swift; sourceTree = ""; }; - C3A078B723E14413890CAFAB /* MediaUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediaUrl.swift; path = MatchLiveTv/Core/MediaUrl.swift; sourceTree = ""; }; - 7068311D5BB3421BAFF79C58 /* ThermalState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalState.swift; path = MatchLiveTv/Core/Thermal/ThermalState.swift; sourceTree = ""; }; - 5DB45642BEBB4F6F9003A8AC /* ThermalStateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalStateManager.swift; path = MatchLiveTv/Core/Thermal/ThermalStateManager.swift; sourceTree = ""; }; - 4780AA60D2F543B396474E9D /* TokenStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TokenStore.swift; path = MatchLiveTv/Core/TokenStore.swift; sourceTree = ""; }; - 92302BD18B5F46F79A9363C0 /* UserFacingError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UserFacingError.swift; path = MatchLiveTv/Core/UserFacingError.swift; sourceTree = ""; }; - AF13DB6CEA76489580B2A2C3 /* ApiDtos.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiDtos.swift; path = MatchLiveTv/Data/API/ApiDtos.swift; sourceTree = ""; }; - A5E463597BE34D2AB7263AC4 /* MatchLiveAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveAPI.swift; path = MatchLiveTv/Data/API/MatchLiveAPI.swift; sourceTree = ""; }; - 275CAE44E4CD48B580CF07A8 /* AppContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppContainer.swift; path = MatchLiveTv/Data/AppContainer.swift; sourceTree = ""; }; - D2A5061AAEB049DFB1B1C7F7 /* ActionCableClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ActionCableClient.swift; path = MatchLiveTv/Data/Cable/ActionCableClient.swift; sourceTree = ""; }; - 836E47CBA9E64A6988F7B73B /* SessionCableService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionCableService.swift; path = MatchLiveTv/Data/Cable/SessionCableService.swift; sourceTree = ""; }; - F9840E5C5FF141288900A98F /* AuthRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AuthRepository.swift; path = MatchLiveTv/Data/Repository/AuthRepository.swift; sourceTree = ""; }; - BCE66B016A2445B8A131CCC1 /* MatchRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchRepository.swift; path = MatchLiveTv/Data/Repository/MatchRepository.swift; sourceTree = ""; }; - DCA182391E944AE5A2597AC3 /* MatchSessionLauncher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSessionLauncher.swift; path = MatchLiveTv/Data/Repository/MatchSessionLauncher.swift; sourceTree = ""; }; - 4445135A67D44E73901769BB /* ScoreRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreRepository.swift; path = MatchLiveTv/Data/Repository/ScoreRepository.swift; sourceTree = ""; }; - 5A7A837C2DC94B3293762A7F /* SessionRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionRepository.swift; path = MatchLiveTv/Data/Repository/SessionRepository.swift; sourceTree = ""; }; - DDD70F309E2B4520859A2C2C /* ScoreController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreController.swift; path = MatchLiveTv/Data/Scoring/ScoreController.swift; sourceTree = ""; }; - 7C33D42852814E1DBB3A08E1 /* WizardSessionHolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardSessionHolder.swift; path = MatchLiveTv/Data/WizardSessionHolder.swift; sourceTree = ""; }; - F8EC5F4C8C614E0DB4B12C70 /* MatchHubFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchHubFilter.swift; path = MatchLiveTv/Domain/MatchHubFilter.swift; sourceTree = ""; }; - 4613F07CA9354AAA92BC5DBB /* MatchScoringRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRules.swift; path = MatchLiveTv/Domain/MatchScoringRules.swift; sourceTree = ""; }; - 93698CDE6B6A4E9C9AE95963 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Models.swift; path = MatchLiveTv/Domain/Models.swift; sourceTree = ""; }; - D5227DDCD86440DB80A47C8C /* ScoreState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreState.swift; path = MatchLiveTv/Domain/ScoreState.swift; sourceTree = ""; }; - BEEF93149EDE4FDFA08B3688 /* BroadcastModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastModels.swift; path = MatchLiveTv/Streaming/BroadcastModels.swift; sourceTree = ""; }; - D081E0B54929401CBD18B09B /* BroadcastOrientationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicy.swift; path = MatchLiveTv/Streaming/BroadcastOrientationPolicy.swift; sourceTree = ""; }; - 942B3BBFFF4940C4BB3C8BC9 /* BroadcastVideoOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastVideoOrientation.swift; path = MatchLiveTv/Streaming/BroadcastVideoOrientation.swift; sourceTree = ""; }; - 51F581CC803B4A05AB15ABFA /* LiveBroadcastCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinator.swift; path = MatchLiveTv/Streaming/LiveBroadcastCoordinator.swift; sourceTree = ""; }; - 079AC7A791404EEC85BFA269 /* LiveBroadcastEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastEngine.swift; path = MatchLiveTv/Streaming/LiveBroadcastEngine.swift; sourceTree = ""; }; - 30119FBFE90B49E7911D9737 /* CompactScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = CompactScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/CompactScoreboardElement.swift; sourceTree = ""; }; - 33CB77EE9F4B495B8C307CA5 /* OverlayCanvasRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayCanvasRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayCanvasRenderer.swift; sourceTree = ""; }; - EFFC303AD7734A02ACD4325B /* OverlayLogoCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayLogoCache.swift; path = MatchLiveTv/Streaming/Overlay/OverlayLogoCache.swift; sourceTree = ""; }; - F08A6AE984BE4B67B4D276E9 /* OverlayMappings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayMappings.swift; path = MatchLiveTv/Streaming/Overlay/OverlayMappings.swift; sourceTree = ""; }; - D810F5CF78494774A6D64E88 /* OverlayRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayRenderer.swift; sourceTree = ""; }; - CD9D26A5CFAC47D3B3A00A54 /* OverlayState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayState.swift; path = MatchLiveTv/Streaming/Overlay/OverlayState.swift; sourceTree = ""; }; - F84797151F98436F92A43801 /* ScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/ScoreboardElement.swift; sourceTree = ""; }; - 6C6C729574BA484FBB714BE6 /* SponsorElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SponsorElement.swift; path = MatchLiveTv/Streaming/Overlay/SponsorElement.swift; sourceTree = ""; }; - 8C6CCCA5DA7747C98FE8ACB1 /* WatermarkElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WatermarkElement.swift; path = MatchLiveTv/Streaming/Overlay/WatermarkElement.swift; sourceTree = ""; }; - BA5FFA3368E34F0AAE4851D9 /* LivePreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LivePreviewView.swift; path = MatchLiveTv/Streaming/Preview/LivePreviewView.swift; sourceTree = ""; }; - A41A4566F556459F993D61B9 /* StreamVideoPreset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StreamVideoPreset.swift; path = MatchLiveTv/Streaming/StreamVideoPreset.swift; sourceTree = ""; }; - 7D5C91D62B6343D0972A72AF /* AccountScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AccountScreen.swift; path = MatchLiveTv/UI/Account/AccountScreen.swift; sourceTree = ""; }; - 18E52B37E419404CB99B28DE /* BroadcastControlsOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastControlsOverlay.swift; path = MatchLiveTv/UI/Broadcast/BroadcastControlsOverlay.swift; sourceTree = ""; }; - 2988D9C0BC3F434FBCC49005 /* BroadcastScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastScreen.swift; path = MatchLiveTv/UI/Broadcast/BroadcastScreen.swift; sourceTree = ""; }; - 6C447F04ECB943BC9AD0CC95 /* LiveScoreActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreActions.swift; path = MatchLiveTv/UI/Broadcast/LiveScoreActions.swift; sourceTree = ""; }; - 663B320566A34BC7A697DFE0 /* MatchLiveWordmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveWordmark.swift; path = MatchLiveTv/UI/Components/MatchLiveWordmark.swift; sourceTree = ""; }; - 66297B25A76040998427B00A /* MatchPrimaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchPrimaryButton.swift; path = MatchLiveTv/UI/Components/MatchPrimaryButton.swift; sourceTree = ""; }; - 0509277A18804D73AC889EBF /* MatchScreenScaffold.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScreenScaffold.swift; path = MatchLiveTv/UI/Components/MatchScreenScaffold.swift; sourceTree = ""; }; - 862C65E351B04B7E9A26D895 /* MatchSecondaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSecondaryButton.swift; path = MatchLiveTv/UI/Components/MatchSecondaryButton.swift; sourceTree = ""; }; - 8DC0D1A989A54BB8B0A6FF0D /* MatchStatusBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchStatusBadge.swift; path = MatchLiveTv/UI/Components/MatchStatusBadge.swift; sourceTree = ""; }; - 0013266D6FB3498EBA78F131 /* ForgotPasswordScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ForgotPasswordScreen.swift; path = MatchLiveTv/UI/Login/ForgotPasswordScreen.swift; sourceTree = ""; }; - 01D7C441CF43473787AB1720 /* LoginScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LoginScreen.swift; path = MatchLiveTv/UI/Login/LoginScreen.swift; sourceTree = ""; }; - 3AA170A67A524F7B9563F81A /* MatchesScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchesScreen.swift; path = MatchLiveTv/UI/Matches/MatchesScreen.swift; sourceTree = ""; }; - 2D57A402BE894D8FA625269F /* AppNavHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppNavHost.swift; path = MatchLiveTv/UI/Navigation/AppNavHost.swift; sourceTree = ""; }; - 1469CB388C764A01895C0E56 /* ModalRoutes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ModalRoutes.swift; path = MatchLiveTv/UI/Navigation/ModalRoutes.swift; sourceTree = ""; }; - DA2ACAEFFF3E44BD95FA28F3 /* Routes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Routes.swift; path = MatchLiveTv/UI/Navigation/Routes.swift; sourceTree = ""; }; - 341078754C184DC5A4CCB56D /* BroadcastPermissions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastPermissions.swift; path = MatchLiveTv/UI/Permissions/BroadcastPermissions.swift; sourceTree = ""; }; - 05E248B7A47B4B549FD5F6B0 /* SplashScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SplashScreen.swift; path = MatchLiveTv/UI/Splash/SplashScreen.swift; sourceTree = ""; }; - A8F12B26A63C439DB7E37629 /* KeepScreenOn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = KeepScreenOn.swift; path = MatchLiveTv/UI/System/KeepScreenOn.swift; sourceTree = ""; }; - 01F16E96445F4E4F8744155E /* ScreenOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScreenOrientation.swift; path = MatchLiveTv/UI/System/ScreenOrientation.swift; sourceTree = ""; }; - 82B05DFC0D2F4B33BCEC2DF9 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ShareSheet.swift; path = MatchLiveTv/UI/System/ShareSheet.swift; sourceTree = ""; }; - 8AC1A90E227C4027B14CA899 /* MatchColors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchColors.swift; path = MatchLiveTv/UI/Theme/MatchColors.swift; sourceTree = ""; }; - 143E3FD4FE3944BB89986819 /* StepMatchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepMatchScreen.swift; path = MatchLiveTv/UI/Wizard/StepMatchScreen.swift; sourceTree = ""; }; - E4085602D215442FABF7D56B /* StepNetworkTestScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepNetworkTestScreen.swift; path = MatchLiveTv/UI/Wizard/StepNetworkTestScreen.swift; sourceTree = ""; }; - 9910E7A0009E4A5A994D1784 /* StepTransmissionScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepTransmissionScreen.swift; path = MatchLiveTv/UI/Wizard/StepTransmissionScreen.swift; sourceTree = ""; }; - D796A667DA364E06AD80F8F8 /* TeamBrandingEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamBrandingEditor.swift; path = MatchLiveTv/UI/Wizard/TeamBrandingEditor.swift; sourceTree = ""; }; - 178F643E4BE04E86A40992E0 /* TeamColorPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamColorPicker.swift; path = MatchLiveTv/UI/Wizard/TeamColorPicker.swift; sourceTree = ""; }; - BD032228BAEE44238BCBACAB /* WizardComponents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardComponents.swift; path = MatchLiveTv/UI/Wizard/WizardComponents.swift; sourceTree = ""; }; - 074933275EC440FCAEAA71B3 /* WizardShellScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardShellScreen.swift; path = MatchLiveTv/UI/Wizard/WizardShellScreen.swift; sourceTree = ""; }; - C56969F21CC744729FBE7ED9 /* ApiInstantTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstantTests.swift; path = MatchLiveTvTests/ApiInstantTests.swift; sourceTree = ""; }; - 458846739B99444AA8933F36 /* BroadcastOrientationPolicyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicyTests.swift; path = MatchLiveTvTests/BroadcastOrientationPolicyTests.swift; sourceTree = ""; }; - 7DCEB3554AA14496B1D42AB3 /* LiveBroadcastCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinatorTests.swift; path = MatchLiveTvTests/LiveBroadcastCoordinatorTests.swift; sourceTree = ""; }; - C775B052F37144CB9DFD8739 /* LiveScoreDialogHostTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreDialogHostTests.swift; path = MatchLiveTvTests/LiveScoreDialogHostTests.swift; sourceTree = ""; }; - 34DA4AF7CB6341D086039463 /* MatchScoringRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRulesTests.swift; path = MatchLiveTvTests/MatchScoringRulesTests.swift; sourceTree = ""; }; - 5ACD231AB9D14C9F820B31E1 /* ScoreActionDecodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreActionDecodeTests.swift; path = MatchLiveTvTests/ScoreActionDecodeTests.swift; sourceTree = ""; }; - 6F114B436A2743ECB16C9A41 /* ScoreControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreControllerTests.swift; path = MatchLiveTvTests/ScoreControllerTests.swift; sourceTree = ""; }; - 5ABDD09123574C94AE35CF4C /* ThermalAdaptationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalAdaptationTests.swift; path = MatchLiveTvTests/ThermalAdaptationTests.swift; sourceTree = ""; }; - A54257E581AD43BDBD468313 /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = MatchLiveTv/Resources/Assets.xcassets; sourceTree = ""; }; - E25FA8689C814A8A820B8CF2 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = MatchLiveTv/Resources/Info.plist; sourceTree = ""; }; - 9FF4CCB1FBBA4C1B91A344C8 /* it.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/it.lproj; sourceTree = ""; }; - 3DD2152FD3474235B91FE542 /* en.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/en.lproj; sourceTree = ""; }; - 1FB08DA4A2B140008EBA2F86 /* fr.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/fr.lproj; sourceTree = ""; }; - B40D03FC806E4F13A866ACB4 /* de.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/de.lproj; sourceTree = ""; }; - 3176CFCA2D624B67BCD3D85D /* es.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/es.lproj; sourceTree = ""; }; - 90A99EA318D646F9BC464205 /* MatchLiveTv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MatchLiveTv.app; sourceTree = BUILT_PRODUCTS_DIR; }; - CD9E5C058EC34B4983CC457C /* MatchLiveTvTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MatchLiveTvTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; - 9ED2582C45E943B99BDE1280 /* HaishinKit */ = {isa = XCSwiftPackageProductDependency; package = D5732E009B7E4D378A1F71DB; productName = HaishinKit; }; - 39E98F78A87F42EEB820737D /* RTMPHaishinKit */ = {isa = XCSwiftPackageProductDependency; package = D5732E009B7E4D378A1F71DB; productName = RTMPHaishinKit; }; - ACDEEF4A785241FF87295B4B /* MatchLiveTvApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 25930AAB8F8A4E43A9FBE5EE /* MatchLiveTvApp.swift */; }; - 9765D71AFD884B20920396F4 /* ApiInstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7B67B2CEBA2D4765892F5D35 /* ApiInstant.swift */; }; - 9177576D5E59450781F7F300 /* AppConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = DE94E33A56BB4272B4125448 /* AppConfig.swift */; }; - 7CE6D945C55D4C0A8CB28FDC /* AppLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = FFCEF74E04524E6E829E98A7 /* AppLanguage.swift */; }; - C123E8D4F09748CA9422F68D /* ColorHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4E743B662F034CE780350C20 /* ColorHex.swift */; }; - F430E29862EE48DBA6C5479A /* DeviceTelemetry.swift in Sources */ = {isa = PBXBuildFile; fileRef = C5B70A5291FD45159FE4C19B /* DeviceTelemetry.swift */; }; - 5A2235553DE54319B8E2AD1C /* MediaUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = C3A078B723E14413890CAFAB /* MediaUrl.swift */; }; - C3DFB4D42B8344E2A5048A02 /* ThermalState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7068311D5BB3421BAFF79C58 /* ThermalState.swift */; }; - D3E0FDF059ED40D8B3438FC1 /* ThermalStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5DB45642BEBB4F6F9003A8AC /* ThermalStateManager.swift */; }; - 417111487CD2457090E18647 /* TokenStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4780AA60D2F543B396474E9D /* TokenStore.swift */; }; - 54C9F052B9AD4314AA06EC47 /* UserFacingError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 92302BD18B5F46F79A9363C0 /* UserFacingError.swift */; }; - 90DD8717E849465C894797C7 /* ApiDtos.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF13DB6CEA76489580B2A2C3 /* ApiDtos.swift */; }; - 973A35E12FA443479B3AC6AD /* MatchLiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = A5E463597BE34D2AB7263AC4 /* MatchLiveAPI.swift */; }; - 3F7BEB03B5174D01B094ADC6 /* AppContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 275CAE44E4CD48B580CF07A8 /* AppContainer.swift */; }; - 4C86E02CAF9E40CAAA6FA44F /* ActionCableClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2A5061AAEB049DFB1B1C7F7 /* ActionCableClient.swift */; }; - 95D3AADB1FB7416EA92939B7 /* SessionCableService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 836E47CBA9E64A6988F7B73B /* SessionCableService.swift */; }; - EA7523924BFE4737AB0268E5 /* AuthRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = F9840E5C5FF141288900A98F /* AuthRepository.swift */; }; - D8F35B67C6E74052BFE3608C /* MatchRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = BCE66B016A2445B8A131CCC1 /* MatchRepository.swift */; }; - 1E28B9D42D1F4CE2A1177B10 /* MatchSessionLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = DCA182391E944AE5A2597AC3 /* MatchSessionLauncher.swift */; }; - 8769CB1C058248D5B09D67CF /* ScoreRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4445135A67D44E73901769BB /* ScoreRepository.swift */; }; - 8767A7BF3B9149688C6A87DC /* SessionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5A7A837C2DC94B3293762A7F /* SessionRepository.swift */; }; - 14CF66D5D0434401B65F19B6 /* ScoreController.swift in Sources */ = {isa = PBXBuildFile; fileRef = DDD70F309E2B4520859A2C2C /* ScoreController.swift */; }; - A3A73D4B094C4F2585ED4D5C /* WizardSessionHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7C33D42852814E1DBB3A08E1 /* WizardSessionHolder.swift */; }; - 9C9F0CF9600341C896D9AFAD /* MatchHubFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = F8EC5F4C8C614E0DB4B12C70 /* MatchHubFilter.swift */; }; - 877A03C3533D4A3CAF58E545 /* MatchScoringRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4613F07CA9354AAA92BC5DBB /* MatchScoringRules.swift */; }; - 4A762F216E62456283EFCB95 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 93698CDE6B6A4E9C9AE95963 /* Models.swift */; }; - DD2EF3BEFCC34239B7097D6C /* ScoreState.swift in Sources */ = {isa = PBXBuildFile; fileRef = D5227DDCD86440DB80A47C8C /* ScoreState.swift */; }; - 6C82050CCABC42C4BCDEDB56 /* BroadcastModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = BEEF93149EDE4FDFA08B3688 /* BroadcastModels.swift */; }; - 030ED957A3C14B258457A5F6 /* BroadcastOrientationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = D081E0B54929401CBD18B09B /* BroadcastOrientationPolicy.swift */; }; - F44EEE26569D4FCF9EAB1781 /* BroadcastVideoOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 942B3BBFFF4940C4BB3C8BC9 /* BroadcastVideoOrientation.swift */; }; - E853839BE7014FDB979BC8E2 /* LiveBroadcastCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = 51F581CC803B4A05AB15ABFA /* LiveBroadcastCoordinator.swift */; }; - B27F0A51FF544BF7BBF2E132 /* LiveBroadcastEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = 079AC7A791404EEC85BFA269 /* LiveBroadcastEngine.swift */; }; - E45C4A889E3F4174AE4FCA25 /* CompactScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 30119FBFE90B49E7911D9737 /* CompactScoreboardElement.swift */; }; - DF8C998C016042258F40D3FE /* OverlayCanvasRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 33CB77EE9F4B495B8C307CA5 /* OverlayCanvasRenderer.swift */; }; - 0127E05661D24F1DAA768A39 /* OverlayLogoCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = EFFC303AD7734A02ACD4325B /* OverlayLogoCache.swift */; }; - 7089DB15FC694FB3A7083D96 /* OverlayMappings.swift in Sources */ = {isa = PBXBuildFile; fileRef = F08A6AE984BE4B67B4D276E9 /* OverlayMappings.swift */; }; - 0B72360FBC4749FD94E6BAAB /* OverlayRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = D810F5CF78494774A6D64E88 /* OverlayRenderer.swift */; }; - 0823F27AA8B944A3B62B3333 /* OverlayState.swift in Sources */ = {isa = PBXBuildFile; fileRef = CD9D26A5CFAC47D3B3A00A54 /* OverlayState.swift */; }; - 730BF729664343E18A784EA7 /* ScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = F84797151F98436F92A43801 /* ScoreboardElement.swift */; }; - 0A800720080043F99B2D432B /* SponsorElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C6C729574BA484FBB714BE6 /* SponsorElement.swift */; }; - F643CA5B06064E839BD4AE52 /* WatermarkElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C6CCCA5DA7747C98FE8ACB1 /* WatermarkElement.swift */; }; - 2F793DD9D2DD47A28517AD47 /* LivePreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = BA5FFA3368E34F0AAE4851D9 /* LivePreviewView.swift */; }; - 1706660774B2480B8849D596 /* StreamVideoPreset.swift in Sources */ = {isa = PBXBuildFile; fileRef = A41A4566F556459F993D61B9 /* StreamVideoPreset.swift */; }; - 518293D2E3B148869F40831D /* AccountScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7D5C91D62B6343D0972A72AF /* AccountScreen.swift */; }; - 44401578BE2D4143AAA73092 /* BroadcastControlsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18E52B37E419404CB99B28DE /* BroadcastControlsOverlay.swift */; }; - 5DDABE391DE44D738B027CDF /* BroadcastScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2988D9C0BC3F434FBCC49005 /* BroadcastScreen.swift */; }; - 25266B72797C4D6C9C678E9C /* LiveScoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6C447F04ECB943BC9AD0CC95 /* LiveScoreActions.swift */; }; - 4D044E89FA42456DB0D681C3 /* MatchLiveWordmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 663B320566A34BC7A697DFE0 /* MatchLiveWordmark.swift */; }; - 34F29FBD99A3444D952FA8DB /* MatchPrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 66297B25A76040998427B00A /* MatchPrimaryButton.swift */; }; - B8C6C70CA6ED4BB1AC97B4B6 /* MatchScreenScaffold.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0509277A18804D73AC889EBF /* MatchScreenScaffold.swift */; }; - F5C61F3B323F47F1B19D8FD9 /* MatchSecondaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 862C65E351B04B7E9A26D895 /* MatchSecondaryButton.swift */; }; - 4E34FC80685D43B7BD581D91 /* MatchStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8DC0D1A989A54BB8B0A6FF0D /* MatchStatusBadge.swift */; }; - 3FB9A0B71AD14DF2B2166DEE /* ForgotPasswordScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 0013266D6FB3498EBA78F131 /* ForgotPasswordScreen.swift */; }; - ECA5F96A38CF4E868A11E973 /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01D7C441CF43473787AB1720 /* LoginScreen.swift */; }; - 4B627CF96CD44918A67F3FB3 /* MatchesScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3AA170A67A524F7B9563F81A /* MatchesScreen.swift */; }; - 29D481B5AC824559B9E7C3DD /* AppNavHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2D57A402BE894D8FA625269F /* AppNavHost.swift */; }; - 3B45AABC76A94873B815B78C /* ModalRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1469CB388C764A01895C0E56 /* ModalRoutes.swift */; }; - 7E4443CD7DDD4A6982CE59BE /* Routes.swift in Sources */ = {isa = PBXBuildFile; fileRef = DA2ACAEFFF3E44BD95FA28F3 /* Routes.swift */; }; - CAFFE6603F904FF3AE52B024 /* BroadcastPermissions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 341078754C184DC5A4CCB56D /* BroadcastPermissions.swift */; }; - F9EC9F338E354428B4DDD123 /* SplashScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 05E248B7A47B4B549FD5F6B0 /* SplashScreen.swift */; }; - 3A28378EEA014E0E919FC85A /* KeepScreenOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8F12B26A63C439DB7E37629 /* KeepScreenOn.swift */; }; - 0EFFD0F8D14744409490A888 /* ScreenOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = 01F16E96445F4E4F8744155E /* ScreenOrientation.swift */; }; - 3033B001A2B04F9EA5C0AFEA /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 82B05DFC0D2F4B33BCEC2DF9 /* ShareSheet.swift */; }; - FA9FC8585CB34F6FB051ADAE /* MatchColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8AC1A90E227C4027B14CA899 /* MatchColors.swift */; }; - DE419560D0934C0E80396624 /* StepMatchScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 143E3FD4FE3944BB89986819 /* StepMatchScreen.swift */; }; - 968C0C21153646D49BF42000 /* StepNetworkTestScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E4085602D215442FABF7D56B /* StepNetworkTestScreen.swift */; }; - AF8AFF8D78F94A47B0F53815 /* StepTransmissionScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9910E7A0009E4A5A994D1784 /* StepTransmissionScreen.swift */; }; - 3E2B348427E844A5929927A3 /* TeamBrandingEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = D796A667DA364E06AD80F8F8 /* TeamBrandingEditor.swift */; }; - 0DF31674F9C74BE9AB0D0006 /* TeamColorPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 178F643E4BE04E86A40992E0 /* TeamColorPicker.swift */; }; - B3E8BC40BD7140A2B4CBB550 /* WizardComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = BD032228BAEE44238BCBACAB /* WizardComponents.swift */; }; - 78349D6E899240F5A277235C /* WizardShellScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 074933275EC440FCAEAA71B3 /* WizardShellScreen.swift */; }; - CDE0D7B5AB7D492AB95786B7 /* ApiInstantTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C56969F21CC744729FBE7ED9 /* ApiInstantTests.swift */; }; - 3BD17C77BE2541C187E923CA /* BroadcastOrientationPolicyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 458846739B99444AA8933F36 /* BroadcastOrientationPolicyTests.swift */; }; - 752487F9A18F451C92BF95E8 /* LiveBroadcastCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7DCEB3554AA14496B1D42AB3 /* LiveBroadcastCoordinatorTests.swift */; }; - 57C059515D66492EA5A5B936 /* LiveScoreDialogHostTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = C775B052F37144CB9DFD8739 /* LiveScoreDialogHostTests.swift */; }; - 86D617A624DA4C43BE20E834 /* MatchScoringRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34DA4AF7CB6341D086039463 /* MatchScoringRulesTests.swift */; }; - 1882BB3E58F44F8CAEB5516A /* ScoreActionDecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ACD231AB9D14C9F820B31E1 /* ScoreActionDecodeTests.swift */; }; - 27268016D43546FEADD5EA90 /* ScoreControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F114B436A2743ECB16C9A41 /* ScoreControllerTests.swift */; }; - BEF6C46E10F94F76A5DCED53 /* ThermalAdaptationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5ABDD09123574C94AE35CF4C /* ThermalAdaptationTests.swift */; }; - EE7051AE56B944269FE9FEB5 /* Assets in Resources */ = {isa = PBXBuildFile; fileRef = A54257E581AD43BDBD468313; }; - C24FC4D76FBE4403AD081F31 /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 9FF4CCB1FBBA4C1B91A344C8; }; - CADFFEFDDE204D8983D5726E /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 3DD2152FD3474235B91FE542; }; - 9CD61D14D20B4D79B760FF3A /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 1FB08DA4A2B140008EBA2F86; }; - 635046DE1EF64F57BCF4D7BA /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = B40D03FC806E4F13A866ACB4; }; - CCCBF87CA3E749368500DDBE /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 3176CFCA2D624B67BCD3D85D; }; - 65634C6C829A41E1950996E5 = {isa = PBXGroup; children = (44DF7DFD6DB3478A978A9AE3, 9A0B188E5E8E4125B732D8B5, CFAA62945B53429C8791D791); sourceTree = ""; }; - 44DF7DFD6DB3478A978A9AE3 = {isa = PBXGroup; children = (25930AAB8F8A4E43A9FBE5EE, 7B67B2CEBA2D4765892F5D35, DE94E33A56BB4272B4125448, FFCEF74E04524E6E829E98A7, 4E743B662F034CE780350C20, C5B70A5291FD45159FE4C19B, C3A078B723E14413890CAFAB, 7068311D5BB3421BAFF79C58, 5DB45642BEBB4F6F9003A8AC, 4780AA60D2F543B396474E9D, 92302BD18B5F46F79A9363C0, AF13DB6CEA76489580B2A2C3, A5E463597BE34D2AB7263AC4, 275CAE44E4CD48B580CF07A8, D2A5061AAEB049DFB1B1C7F7, 836E47CBA9E64A6988F7B73B, F9840E5C5FF141288900A98F, BCE66B016A2445B8A131CCC1, DCA182391E944AE5A2597AC3, 4445135A67D44E73901769BB, 5A7A837C2DC94B3293762A7F, DDD70F309E2B4520859A2C2C, 7C33D42852814E1DBB3A08E1, F8EC5F4C8C614E0DB4B12C70, 4613F07CA9354AAA92BC5DBB, 93698CDE6B6A4E9C9AE95963, D5227DDCD86440DB80A47C8C, BEEF93149EDE4FDFA08B3688, D081E0B54929401CBD18B09B, 942B3BBFFF4940C4BB3C8BC9, 51F581CC803B4A05AB15ABFA, 079AC7A791404EEC85BFA269, 30119FBFE90B49E7911D9737, 33CB77EE9F4B495B8C307CA5, EFFC303AD7734A02ACD4325B, F08A6AE984BE4B67B4D276E9, D810F5CF78494774A6D64E88, CD9D26A5CFAC47D3B3A00A54, F84797151F98436F92A43801, 6C6C729574BA484FBB714BE6, 8C6CCCA5DA7747C98FE8ACB1, BA5FFA3368E34F0AAE4851D9, A41A4566F556459F993D61B9, 7D5C91D62B6343D0972A72AF, 18E52B37E419404CB99B28DE, 2988D9C0BC3F434FBCC49005, 6C447F04ECB943BC9AD0CC95, 663B320566A34BC7A697DFE0, 66297B25A76040998427B00A, 0509277A18804D73AC889EBF, 862C65E351B04B7E9A26D895, 8DC0D1A989A54BB8B0A6FF0D, 0013266D6FB3498EBA78F131, 01D7C441CF43473787AB1720, 3AA170A67A524F7B9563F81A, 2D57A402BE894D8FA625269F, 1469CB388C764A01895C0E56, DA2ACAEFFF3E44BD95FA28F3, 341078754C184DC5A4CCB56D, 05E248B7A47B4B549FD5F6B0, A8F12B26A63C439DB7E37629, 01F16E96445F4E4F8744155E, 82B05DFC0D2F4B33BCEC2DF9, 8AC1A90E227C4027B14CA899, 143E3FD4FE3944BB89986819, E4085602D215442FABF7D56B, 9910E7A0009E4A5A994D1784, D796A667DA364E06AD80F8F8, 178F643E4BE04E86A40992E0, BD032228BAEE44238BCBACAB, 074933275EC440FCAEAA71B3, A54257E581AD43BDBD468313, E25FA8689C814A8A820B8CF2, 9FF4CCB1FBBA4C1B91A344C8, 3DD2152FD3474235B91FE542, 1FB08DA4A2B140008EBA2F86, B40D03FC806E4F13A866ACB4, 3176CFCA2D624B67BCD3D85D); name = MatchLiveTv; sourceTree = ""; }; - 9A0B188E5E8E4125B732D8B5 = {isa = PBXGroup; children = (C56969F21CC744729FBE7ED9, 458846739B99444AA8933F36, 7DCEB3554AA14496B1D42AB3, C775B052F37144CB9DFD8739, 34DA4AF7CB6341D086039463, 5ACD231AB9D14C9F820B31E1, 6F114B436A2743ECB16C9A41, 5ABDD09123574C94AE35CF4C); name = MatchLiveTvTests; sourceTree = ""; }; - CFAA62945B53429C8791D791 = {isa = PBXGroup; children = (90A99EA318D646F9BC464205, CD9E5C058EC34B4983CC457C); name = Products; sourceTree = ""; }; - C690D9F363C04AB29B993DE3 = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (ACDEEF4A785241FF87295B4B, 9765D71AFD884B20920396F4, 9177576D5E59450781F7F300, 7CE6D945C55D4C0A8CB28FDC, C123E8D4F09748CA9422F68D, F430E29862EE48DBA6C5479A, 5A2235553DE54319B8E2AD1C, C3DFB4D42B8344E2A5048A02, D3E0FDF059ED40D8B3438FC1, 417111487CD2457090E18647, 54C9F052B9AD4314AA06EC47, 90DD8717E849465C894797C7, 973A35E12FA443479B3AC6AD, 3F7BEB03B5174D01B094ADC6, 4C86E02CAF9E40CAAA6FA44F, 95D3AADB1FB7416EA92939B7, EA7523924BFE4737AB0268E5, D8F35B67C6E74052BFE3608C, 1E28B9D42D1F4CE2A1177B10, 8769CB1C058248D5B09D67CF, 8767A7BF3B9149688C6A87DC, 14CF66D5D0434401B65F19B6, A3A73D4B094C4F2585ED4D5C, 9C9F0CF9600341C896D9AFAD, 877A03C3533D4A3CAF58E545, 4A762F216E62456283EFCB95, DD2EF3BEFCC34239B7097D6C, 6C82050CCABC42C4BCDEDB56, 030ED957A3C14B258457A5F6, F44EEE26569D4FCF9EAB1781, E853839BE7014FDB979BC8E2, B27F0A51FF544BF7BBF2E132, E45C4A889E3F4174AE4FCA25, DF8C998C016042258F40D3FE, 0127E05661D24F1DAA768A39, 7089DB15FC694FB3A7083D96, 0B72360FBC4749FD94E6BAAB, 0823F27AA8B944A3B62B3333, 730BF729664343E18A784EA7, 0A800720080043F99B2D432B, F643CA5B06064E839BD4AE52, 2F793DD9D2DD47A28517AD47, 1706660774B2480B8849D596, 518293D2E3B148869F40831D, 44401578BE2D4143AAA73092, 5DDABE391DE44D738B027CDF, 25266B72797C4D6C9C678E9C, 4D044E89FA42456DB0D681C3, 34F29FBD99A3444D952FA8DB, B8C6C70CA6ED4BB1AC97B4B6, F5C61F3B323F47F1B19D8FD9, 4E34FC80685D43B7BD581D91, 3FB9A0B71AD14DF2B2166DEE, ECA5F96A38CF4E868A11E973, 4B627CF96CD44918A67F3FB3, 29D481B5AC824559B9E7C3DD, 3B45AABC76A94873B815B78C, 7E4443CD7DDD4A6982CE59BE, CAFFE6603F904FF3AE52B024, F9EC9F338E354428B4DDD123, 3A28378EEA014E0E919FC85A, 0EFFD0F8D14744409490A888, 3033B001A2B04F9EA5C0AFEA, FA9FC8585CB34F6FB051ADAE, DE419560D0934C0E80396624, 968C0C21153646D49BF42000, AF8AFF8D78F94A47B0F53815, 3E2B348427E844A5929927A3, 0DF31674F9C74BE9AB0D0006, B3E8BC40BD7140A2B4CBB550, 78349D6E899240F5A277235C); runOnlyForDeploymentPostprocessing = 0; }; - 7DDAE95F35C042E0AA8D648F = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (CDE0D7B5AB7D492AB95786B7, 3BD17C77BE2541C187E923CA, 752487F9A18F451C92BF95E8, 57C059515D66492EA5A5B936, 86D617A624DA4C43BE20E834, 1882BB3E58F44F8CAEB5516A, 27268016D43546FEADD5EA90, BEF6C46E10F94F76A5DCED53); runOnlyForDeploymentPostprocessing = 0; }; - 4D8ACE6346594EA5BBB78946 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (EE7051AE56B944269FE9FEB5, C24FC4D76FBE4403AD081F31, CADFFEFDDE204D8983D5726E, 9CD61D14D20B4D79B760FF3A, 635046DE1EF64F57BCF4D7BA, CCCBF87CA3E749368500DDBE); runOnlyForDeploymentPostprocessing = 0; }; - 3C4F572853FD429FB2D21C70 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; }; - 485CFBE0F9E54222B64C8B83 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; }; - 20099FD8FB20437EBAC22528 = {isa = XCBuildConfiguration; buildSettings = { + 5F5FC005B683447B82372E36 /* MatchLiveTvApp.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveTvApp.swift; path = MatchLiveTv/App/MatchLiveTvApp.swift; sourceTree = ""; }; + C7D22FF2CF3D4230A7BAA60C /* ApiInstant.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstant.swift; path = MatchLiveTv/Core/ApiInstant.swift; sourceTree = ""; }; + 9F180A1FA5DD4DB3BA7E3B41 /* AppConfig.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppConfig.swift; path = MatchLiveTv/Core/AppConfig.swift; sourceTree = ""; }; + 123A61DD4A6442728811488E /* AppLanguage.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppLanguage.swift; path = MatchLiveTv/Core/AppLanguage.swift; sourceTree = ""; }; + CDDF270D449A43F18399966D /* ColorHex.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ColorHex.swift; path = MatchLiveTv/Core/ColorHex.swift; sourceTree = ""; }; + 902831E3D87C46359F0D0A21 /* DeviceTelemetry.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = DeviceTelemetry.swift; path = MatchLiveTv/Core/DeviceTelemetry.swift; sourceTree = ""; }; + ADBBD9C8DF9F4A47ACEFE7B1 /* MediaUrl.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MediaUrl.swift; path = MatchLiveTv/Core/MediaUrl.swift; sourceTree = ""; }; + AAC2A198868F4B4E9010F862 /* ThermalState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalState.swift; path = MatchLiveTv/Core/Thermal/ThermalState.swift; sourceTree = ""; }; + C9D84DE8EFA34B4CBDFF43F1 /* ThermalStateManager.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalStateManager.swift; path = MatchLiveTv/Core/Thermal/ThermalStateManager.swift; sourceTree = ""; }; + 31251A1297F24C70A14D8702 /* TokenStore.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TokenStore.swift; path = MatchLiveTv/Core/TokenStore.swift; sourceTree = ""; }; + 1BEBDFA6B21041729156ADFA /* UserFacingError.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = UserFacingError.swift; path = MatchLiveTv/Core/UserFacingError.swift; sourceTree = ""; }; + 17E7568BD3D94B34A361F470 /* ApiDtos.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiDtos.swift; path = MatchLiveTv/Data/API/ApiDtos.swift; sourceTree = ""; }; + 99D52E8096064A359AAE3D47 /* MatchLiveAPI.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveAPI.swift; path = MatchLiveTv/Data/API/MatchLiveAPI.swift; sourceTree = ""; }; + 7FC98372F1BD474BB0365488 /* AppContainer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppContainer.swift; path = MatchLiveTv/Data/AppContainer.swift; sourceTree = ""; }; + 98526C26B2584F55AADF0FFF /* ActionCableClient.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ActionCableClient.swift; path = MatchLiveTv/Data/Cable/ActionCableClient.swift; sourceTree = ""; }; + 50C70C614F3C45B9B824E465 /* SessionCableService.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionCableService.swift; path = MatchLiveTv/Data/Cable/SessionCableService.swift; sourceTree = ""; }; + EE0A49E8D59947448DAA7851 /* AuthRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AuthRepository.swift; path = MatchLiveTv/Data/Repository/AuthRepository.swift; sourceTree = ""; }; + 537FC2C063D341DF97A391B9 /* MatchRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchRepository.swift; path = MatchLiveTv/Data/Repository/MatchRepository.swift; sourceTree = ""; }; + 813463F3E17D453EAA801739 /* MatchSessionLauncher.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSessionLauncher.swift; path = MatchLiveTv/Data/Repository/MatchSessionLauncher.swift; sourceTree = ""; }; + CCC8ECFD24A14054BDD984C3 /* ScoreRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreRepository.swift; path = MatchLiveTv/Data/Repository/ScoreRepository.swift; sourceTree = ""; }; + 87C01CC031C34343B3EBFF08 /* SessionRepository.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SessionRepository.swift; path = MatchLiveTv/Data/Repository/SessionRepository.swift; sourceTree = ""; }; + B0B243B2A21344558626DF7F /* ScoreController.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreController.swift; path = MatchLiveTv/Data/Scoring/ScoreController.swift; sourceTree = ""; }; + 81CA0BDC6EE44C4290D7E483 /* WizardSessionHolder.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardSessionHolder.swift; path = MatchLiveTv/Data/WizardSessionHolder.swift; sourceTree = ""; }; + 951A7265EF5C41A9A12DD86A /* MatchHubFilter.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchHubFilter.swift; path = MatchLiveTv/Domain/MatchHubFilter.swift; sourceTree = ""; }; + 18445F0E4070424F86D55556 /* MatchScoringRules.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRules.swift; path = MatchLiveTv/Domain/MatchScoringRules.swift; sourceTree = ""; }; + 61FCDE0B00FB485CB9B09110 /* Models.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Models.swift; path = MatchLiveTv/Domain/Models.swift; sourceTree = ""; }; + EA08E23008964D02AB59377E /* ScoreState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreState.swift; path = MatchLiveTv/Domain/ScoreState.swift; sourceTree = ""; }; + C9975D8D02CF4FA0A47696DD /* BroadcastModels.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastModels.swift; path = MatchLiveTv/Streaming/BroadcastModels.swift; sourceTree = ""; }; + B2432C46DFBA4322887D8C59 /* BroadcastOrientationPolicy.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicy.swift; path = MatchLiveTv/Streaming/BroadcastOrientationPolicy.swift; sourceTree = ""; }; + A43B670D8BE94F66B38885C8 /* BroadcastVideoOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastVideoOrientation.swift; path = MatchLiveTv/Streaming/BroadcastVideoOrientation.swift; sourceTree = ""; }; + F438E7E164F44C7B856C4808 /* LiveBroadcastCoordinator.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinator.swift; path = MatchLiveTv/Streaming/LiveBroadcastCoordinator.swift; sourceTree = ""; }; + C6D684B88BEB440F8D331D3D /* LiveBroadcastEngine.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastEngine.swift; path = MatchLiveTv/Streaming/LiveBroadcastEngine.swift; sourceTree = ""; }; + 78104BD8D9044B659F33B02F /* CompactScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = CompactScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/CompactScoreboardElement.swift; sourceTree = ""; }; + A8048B96407947C7BA4222E8 /* OverlayCanvasRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayCanvasRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayCanvasRenderer.swift; sourceTree = ""; }; + B5BF3429BFBA4DB3BDBD721D /* OverlayLogoCache.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayLogoCache.swift; path = MatchLiveTv/Streaming/Overlay/OverlayLogoCache.swift; sourceTree = ""; }; + 509414F2274844F4B9A956C3 /* OverlayMappings.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayMappings.swift; path = MatchLiveTv/Streaming/Overlay/OverlayMappings.swift; sourceTree = ""; }; + 59E96B1417004CD3BC247C0F /* OverlayRenderer.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayRenderer.swift; path = MatchLiveTv/Streaming/Overlay/OverlayRenderer.swift; sourceTree = ""; }; + 2DDC7305F3B549D0B7646B14 /* OverlayState.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = OverlayState.swift; path = MatchLiveTv/Streaming/Overlay/OverlayState.swift; sourceTree = ""; }; + 9D645FD397CD40DDA859F160 /* ScoreboardElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreboardElement.swift; path = MatchLiveTv/Streaming/Overlay/ScoreboardElement.swift; sourceTree = ""; }; + 18B95E0D21B0407FA6723720 /* SponsorElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SponsorElement.swift; path = MatchLiveTv/Streaming/Overlay/SponsorElement.swift; sourceTree = ""; }; + 31750F1B9E294337BDBD5B56 /* WatermarkElement.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WatermarkElement.swift; path = MatchLiveTv/Streaming/Overlay/WatermarkElement.swift; sourceTree = ""; }; + 46CE696CAB994E2C8E399776 /* LivePreviewView.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LivePreviewView.swift; path = MatchLiveTv/Streaming/Preview/LivePreviewView.swift; sourceTree = ""; }; + 8C2A2F7BAC2B4AC69E8BEAF7 /* StreamVideoPreset.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StreamVideoPreset.swift; path = MatchLiveTv/Streaming/StreamVideoPreset.swift; sourceTree = ""; }; + 4419E10415414556B7C58458 /* AccountScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AccountScreen.swift; path = MatchLiveTv/UI/Account/AccountScreen.swift; sourceTree = ""; }; + E860A0E35362427DA84F8972 /* BroadcastControlsOverlay.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastControlsOverlay.swift; path = MatchLiveTv/UI/Broadcast/BroadcastControlsOverlay.swift; sourceTree = ""; }; + 71816F0D99E44551839474CE /* BroadcastScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastScreen.swift; path = MatchLiveTv/UI/Broadcast/BroadcastScreen.swift; sourceTree = ""; }; + 4637B286559F4BC294018AC5 /* LiveScoreActions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreActions.swift; path = MatchLiveTv/UI/Broadcast/LiveScoreActions.swift; sourceTree = ""; }; + 2FF23D4B51AE4DA5B99D4021 /* MatchLiveWordmark.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchLiveWordmark.swift; path = MatchLiveTv/UI/Components/MatchLiveWordmark.swift; sourceTree = ""; }; + 6F04C9EAB5984F938EC60BF4 /* MatchPrimaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchPrimaryButton.swift; path = MatchLiveTv/UI/Components/MatchPrimaryButton.swift; sourceTree = ""; }; + 39F3C00B63534E6AA6D8A90A /* MatchScreenScaffold.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScreenScaffold.swift; path = MatchLiveTv/UI/Components/MatchScreenScaffold.swift; sourceTree = ""; }; + C7403EB9DBD8459A93D9E2D8 /* MatchSecondaryButton.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchSecondaryButton.swift; path = MatchLiveTv/UI/Components/MatchSecondaryButton.swift; sourceTree = ""; }; + 34BB2251A67E401A9F1E789E /* MatchStatusBadge.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchStatusBadge.swift; path = MatchLiveTv/UI/Components/MatchStatusBadge.swift; sourceTree = ""; }; + AF8C38306C6F420DBC42DA2A /* ForgotPasswordScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ForgotPasswordScreen.swift; path = MatchLiveTv/UI/Login/ForgotPasswordScreen.swift; sourceTree = ""; }; + E124B3B49FC34520805CCC97 /* LoginScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LoginScreen.swift; path = MatchLiveTv/UI/Login/LoginScreen.swift; sourceTree = ""; }; + 56A95962EF2A4B8F821343D9 /* MatchesScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchesScreen.swift; path = MatchLiveTv/UI/Matches/MatchesScreen.swift; sourceTree = ""; }; + 866A83237E6943E89A165B9D /* AppNavHost.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = AppNavHost.swift; path = MatchLiveTv/UI/Navigation/AppNavHost.swift; sourceTree = ""; }; + 464CF87BEA644025B2D14644 /* ModalRoutes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ModalRoutes.swift; path = MatchLiveTv/UI/Navigation/ModalRoutes.swift; sourceTree = ""; }; + B214C9B30C794F00A31B0D83 /* Routes.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = Routes.swift; path = MatchLiveTv/UI/Navigation/Routes.swift; sourceTree = ""; }; + 3BFB2F18615747B1A1C9E9B2 /* BroadcastPermissions.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastPermissions.swift; path = MatchLiveTv/UI/Permissions/BroadcastPermissions.swift; sourceTree = ""; }; + D7C29F5731A142C3A12B6DCA /* SplashScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = SplashScreen.swift; path = MatchLiveTv/UI/Splash/SplashScreen.swift; sourceTree = ""; }; + 004F86D8E8BE47E589B923FA /* KeepScreenOn.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = KeepScreenOn.swift; path = MatchLiveTv/UI/System/KeepScreenOn.swift; sourceTree = ""; }; + FF10FF45004F41AD82397DC9 /* ScreenOrientation.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScreenOrientation.swift; path = MatchLiveTv/UI/System/ScreenOrientation.swift; sourceTree = ""; }; + 2B5C00419D09442FA8ED60F3 /* ShareSheet.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ShareSheet.swift; path = MatchLiveTv/UI/System/ShareSheet.swift; sourceTree = ""; }; + D2996990D08341ABA52BE287 /* MatchColors.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchColors.swift; path = MatchLiveTv/UI/Theme/MatchColors.swift; sourceTree = ""; }; + EAB037B1369B454D84F6850D /* StepMatchScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepMatchScreen.swift; path = MatchLiveTv/UI/Wizard/StepMatchScreen.swift; sourceTree = ""; }; + 1079231B9A4E446AA9AD6C0A /* StepNetworkTestScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepNetworkTestScreen.swift; path = MatchLiveTv/UI/Wizard/StepNetworkTestScreen.swift; sourceTree = ""; }; + 7EC0179FE6BC4323B1F9E1D3 /* StepTransmissionScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = StepTransmissionScreen.swift; path = MatchLiveTv/UI/Wizard/StepTransmissionScreen.swift; sourceTree = ""; }; + 6FBBE0F1399840FFA0E7EF2E /* TeamBrandingEditor.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamBrandingEditor.swift; path = MatchLiveTv/UI/Wizard/TeamBrandingEditor.swift; sourceTree = ""; }; + 7001BB5D65B34280B306ECCF /* TeamColorPicker.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = TeamColorPicker.swift; path = MatchLiveTv/UI/Wizard/TeamColorPicker.swift; sourceTree = ""; }; + 5B75DC6D0B2248B2A6C9AA66 /* WizardComponents.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardComponents.swift; path = MatchLiveTv/UI/Wizard/WizardComponents.swift; sourceTree = ""; }; + 3170F3149C614EC38B417905 /* WizardShellScreen.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = WizardShellScreen.swift; path = MatchLiveTv/UI/Wizard/WizardShellScreen.swift; sourceTree = ""; }; + 75FEB862C3A34BF8AC24052E /* ApiInstantTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ApiInstantTests.swift; path = MatchLiveTvTests/ApiInstantTests.swift; sourceTree = ""; }; + E5CA1FE59BA14F76BA94C995 /* BroadcastOrientationPolicyTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = BroadcastOrientationPolicyTests.swift; path = MatchLiveTvTests/BroadcastOrientationPolicyTests.swift; sourceTree = ""; }; + 1830F9A925334BA4B65D490E /* LiveBroadcastCoordinatorTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveBroadcastCoordinatorTests.swift; path = MatchLiveTvTests/LiveBroadcastCoordinatorTests.swift; sourceTree = ""; }; + F4F8BF2514BB4F5185827B95 /* LiveScoreDialogHostTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = LiveScoreDialogHostTests.swift; path = MatchLiveTvTests/LiveScoreDialogHostTests.swift; sourceTree = ""; }; + 8964CE287E2C4C2DB701497B /* MatchScoringRulesTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = MatchScoringRulesTests.swift; path = MatchLiveTvTests/MatchScoringRulesTests.swift; sourceTree = ""; }; + 10AD0F18190542818572CAEF /* ScoreActionDecodeTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreActionDecodeTests.swift; path = MatchLiveTvTests/ScoreActionDecodeTests.swift; sourceTree = ""; }; + 6DF142EBF33B45739BA8E42C /* ScoreControllerTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ScoreControllerTests.swift; path = MatchLiveTvTests/ScoreControllerTests.swift; sourceTree = ""; }; + 377A2D2B2DA440AFB0CE2298 /* ThermalAdaptationTests.swift */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.swift; name = ThermalAdaptationTests.swift; path = MatchLiveTvTests/ThermalAdaptationTests.swift; sourceTree = ""; }; + 2146FBAC1D7F4FF7B47D360F /* Assets.xcassets */ = {isa = PBXFileReference; lastKnownFileType = folder.assetcatalog; path = MatchLiveTv/Resources/Assets.xcassets; sourceTree = ""; }; + 8588711837244B19B84BA0B3 /* Info.plist */ = {isa = PBXFileReference; lastKnownFileType = text.plist.xml; path = MatchLiveTv/Resources/Info.plist; sourceTree = ""; }; + 857C036B5B5C43368506DD8B /* it.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/it.lproj; sourceTree = ""; }; + 3A6F9AAB5A1249BBB4FC02E6 /* en.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/en.lproj; sourceTree = ""; }; + 30B07E7585A7408EA47C8633 /* fr.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/fr.lproj; sourceTree = ""; }; + EEFE07D4B6FD44199A5B9C25 /* de.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/de.lproj; sourceTree = ""; }; + 2ACAF5B8A617427C8CBF56AD /* es.lproj */ = {isa = PBXFileReference; lastKnownFileType = folder; path = MatchLiveTv/Resources/es.lproj; sourceTree = ""; }; + CE0F9D7D5EE749E8AAE6AB43 /* MatchLiveTv.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = MatchLiveTv.app; sourceTree = BUILT_PRODUCTS_DIR; }; + 3FC0CC8155BE469ABB420DC5 /* MatchLiveTvTests.xctest */ = {isa = PBXFileReference; explicitFileType = wrapper.cfbundle; includeInIndex = 0; path = MatchLiveTvTests.xctest; sourceTree = BUILT_PRODUCTS_DIR; }; + 74B2BB60EC504F4E9CAFDDC8 /* HaishinKit */ = {isa = XCSwiftPackageProductDependency; package = 294A8F0AC0E54F1EB302705C; productName = HaishinKit; }; + 8D1C04B6B7DF4271AC84A016 /* RTMPHaishinKit */ = {isa = XCSwiftPackageProductDependency; package = 294A8F0AC0E54F1EB302705C; productName = RTMPHaishinKit; }; + 65D33C32CF91408B91AFF5D4 /* MatchLiveTvApp.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5F5FC005B683447B82372E36 /* MatchLiveTvApp.swift */; }; + F4C4427723C34532AFA1F798 /* ApiInstant.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7D22FF2CF3D4230A7BAA60C /* ApiInstant.swift */; }; + E75C942B73594F1484927866 /* AppConfig.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9F180A1FA5DD4DB3BA7E3B41 /* AppConfig.swift */; }; + 38BACC0DAAA147EB8955A60C /* AppLanguage.swift in Sources */ = {isa = PBXBuildFile; fileRef = 123A61DD4A6442728811488E /* AppLanguage.swift */; }; + 99B3D05A3D704DA1A513689F /* ColorHex.swift in Sources */ = {isa = PBXBuildFile; fileRef = CDDF270D449A43F18399966D /* ColorHex.swift */; }; + 65EB1857F331469BAC9A18D7 /* DeviceTelemetry.swift in Sources */ = {isa = PBXBuildFile; fileRef = 902831E3D87C46359F0D0A21 /* DeviceTelemetry.swift */; }; + 2F393B5FCD244E65B13C97A3 /* MediaUrl.swift in Sources */ = {isa = PBXBuildFile; fileRef = ADBBD9C8DF9F4A47ACEFE7B1 /* MediaUrl.swift */; }; + 5620C77D9A5B47F3BA0741E4 /* ThermalState.swift in Sources */ = {isa = PBXBuildFile; fileRef = AAC2A198868F4B4E9010F862 /* ThermalState.swift */; }; + D75CBE430CF947B1B8B0225B /* ThermalStateManager.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9D84DE8EFA34B4CBDFF43F1 /* ThermalStateManager.swift */; }; + A74ACBA3E07740E59502306F /* TokenStore.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31251A1297F24C70A14D8702 /* TokenStore.swift */; }; + AA18CC40AAB249ECB8C88B85 /* UserFacingError.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1BEBDFA6B21041729156ADFA /* UserFacingError.swift */; }; + 162DC182A26243599EEA862A /* ApiDtos.swift in Sources */ = {isa = PBXBuildFile; fileRef = 17E7568BD3D94B34A361F470 /* ApiDtos.swift */; }; + 2A0825BF1DCC4DC2B1FBC236 /* MatchLiveAPI.swift in Sources */ = {isa = PBXBuildFile; fileRef = 99D52E8096064A359AAE3D47 /* MatchLiveAPI.swift */; }; + 70D5E80900C14B0897F02BF8 /* AppContainer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7FC98372F1BD474BB0365488 /* AppContainer.swift */; }; + 9391C9EA0B834DC8956483DF /* ActionCableClient.swift in Sources */ = {isa = PBXBuildFile; fileRef = 98526C26B2584F55AADF0FFF /* ActionCableClient.swift */; }; + 359A4FD093C84543AD4DA3B1 /* SessionCableService.swift in Sources */ = {isa = PBXBuildFile; fileRef = 50C70C614F3C45B9B824E465 /* SessionCableService.swift */; }; + 59B045E87F2946B8BC8EA65A /* AuthRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = EE0A49E8D59947448DAA7851 /* AuthRepository.swift */; }; + AECC36D80A0C411AB47D581A /* MatchRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 537FC2C063D341DF97A391B9 /* MatchRepository.swift */; }; + 39335ED5DE5847E5904222AB /* MatchSessionLauncher.swift in Sources */ = {isa = PBXBuildFile; fileRef = 813463F3E17D453EAA801739 /* MatchSessionLauncher.swift */; }; + 470957DE79A84D9889F0663C /* ScoreRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = CCC8ECFD24A14054BDD984C3 /* ScoreRepository.swift */; }; + 66815B27A71244F791DE3C2F /* SessionRepository.swift in Sources */ = {isa = PBXBuildFile; fileRef = 87C01CC031C34343B3EBFF08 /* SessionRepository.swift */; }; + 244F331A033D4A32A0DC46CB /* ScoreController.swift in Sources */ = {isa = PBXBuildFile; fileRef = B0B243B2A21344558626DF7F /* ScoreController.swift */; }; + 6EB9973427144A28B857B49E /* WizardSessionHolder.swift in Sources */ = {isa = PBXBuildFile; fileRef = 81CA0BDC6EE44C4290D7E483 /* WizardSessionHolder.swift */; }; + 454725D14B224276B06BCC67 /* MatchHubFilter.swift in Sources */ = {isa = PBXBuildFile; fileRef = 951A7265EF5C41A9A12DD86A /* MatchHubFilter.swift */; }; + C19C5E8152C44669AE5D8874 /* MatchScoringRules.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18445F0E4070424F86D55556 /* MatchScoringRules.swift */; }; + 20A6FAB1CB7F47C085B75A22 /* Models.swift in Sources */ = {isa = PBXBuildFile; fileRef = 61FCDE0B00FB485CB9B09110 /* Models.swift */; }; + 8723E1F8443A46B3AF49E8A3 /* ScoreState.swift in Sources */ = {isa = PBXBuildFile; fileRef = EA08E23008964D02AB59377E /* ScoreState.swift */; }; + 6A26C9639E5342ACA259DB67 /* BroadcastModels.swift in Sources */ = {isa = PBXBuildFile; fileRef = C9975D8D02CF4FA0A47696DD /* BroadcastModels.swift */; }; + FF08A44E3B5C4C709095F08C /* BroadcastOrientationPolicy.swift in Sources */ = {isa = PBXBuildFile; fileRef = B2432C46DFBA4322887D8C59 /* BroadcastOrientationPolicy.swift */; }; + C3873D7719AA419AA0134B65 /* BroadcastVideoOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = A43B670D8BE94F66B38885C8 /* BroadcastVideoOrientation.swift */; }; + 56896861A77F4036B3763B59 /* LiveBroadcastCoordinator.swift in Sources */ = {isa = PBXBuildFile; fileRef = F438E7E164F44C7B856C4808 /* LiveBroadcastCoordinator.swift */; }; + E16207FC581A4182B171119C /* LiveBroadcastEngine.swift in Sources */ = {isa = PBXBuildFile; fileRef = C6D684B88BEB440F8D331D3D /* LiveBroadcastEngine.swift */; }; + 1ABCBB3241B54AE3B8DC175F /* CompactScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 78104BD8D9044B659F33B02F /* CompactScoreboardElement.swift */; }; + 69707A2BF3574451AFE893F5 /* OverlayCanvasRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = A8048B96407947C7BA4222E8 /* OverlayCanvasRenderer.swift */; }; + 972B0F53517C4AC2A062FD68 /* OverlayLogoCache.swift in Sources */ = {isa = PBXBuildFile; fileRef = B5BF3429BFBA4DB3BDBD721D /* OverlayLogoCache.swift */; }; + 9455267569924A4485199B85 /* OverlayMappings.swift in Sources */ = {isa = PBXBuildFile; fileRef = 509414F2274844F4B9A956C3 /* OverlayMappings.swift */; }; + FCBDDBB72AD142A39944DA39 /* OverlayRenderer.swift in Sources */ = {isa = PBXBuildFile; fileRef = 59E96B1417004CD3BC247C0F /* OverlayRenderer.swift */; }; + ABC5853FEC554FA4AFBDCD2E /* OverlayState.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2DDC7305F3B549D0B7646B14 /* OverlayState.swift */; }; + 53A64EA59067426FA7BCEF2E /* ScoreboardElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 9D645FD397CD40DDA859F160 /* ScoreboardElement.swift */; }; + C4A9BD596C4A4ACD88F7557F /* SponsorElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 18B95E0D21B0407FA6723720 /* SponsorElement.swift */; }; + 6AD0B3220B154EA2936C634A /* WatermarkElement.swift in Sources */ = {isa = PBXBuildFile; fileRef = 31750F1B9E294337BDBD5B56 /* WatermarkElement.swift */; }; + 713E0129656649FC8630FDC6 /* LivePreviewView.swift in Sources */ = {isa = PBXBuildFile; fileRef = 46CE696CAB994E2C8E399776 /* LivePreviewView.swift */; }; + 451211FDF3214D2098798DB6 /* StreamVideoPreset.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8C2A2F7BAC2B4AC69E8BEAF7 /* StreamVideoPreset.swift */; }; + E5E21D088782469D8EB23543 /* AccountScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4419E10415414556B7C58458 /* AccountScreen.swift */; }; + 5B51805239FA4D4D90919D86 /* BroadcastControlsOverlay.swift in Sources */ = {isa = PBXBuildFile; fileRef = E860A0E35362427DA84F8972 /* BroadcastControlsOverlay.swift */; }; + EE568EA02C404102B4DFD651 /* BroadcastScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 71816F0D99E44551839474CE /* BroadcastScreen.swift */; }; + 64EBCA992CD147BB8518DE60 /* LiveScoreActions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 4637B286559F4BC294018AC5 /* LiveScoreActions.swift */; }; + FE883346930E41C790474211 /* MatchLiveWordmark.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2FF23D4B51AE4DA5B99D4021 /* MatchLiveWordmark.swift */; }; + 57EC4C4193D4412892219315 /* MatchPrimaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6F04C9EAB5984F938EC60BF4 /* MatchPrimaryButton.swift */; }; + C6A88BEC28824928A0F7ED08 /* MatchScreenScaffold.swift in Sources */ = {isa = PBXBuildFile; fileRef = 39F3C00B63534E6AA6D8A90A /* MatchScreenScaffold.swift */; }; + D74C538E4B754047B328E6F9 /* MatchSecondaryButton.swift in Sources */ = {isa = PBXBuildFile; fileRef = C7403EB9DBD8459A93D9E2D8 /* MatchSecondaryButton.swift */; }; + 0CB8933AC2B34D4099BBA881 /* MatchStatusBadge.swift in Sources */ = {isa = PBXBuildFile; fileRef = 34BB2251A67E401A9F1E789E /* MatchStatusBadge.swift */; }; + CA87B95E856947AC9304E423 /* ForgotPasswordScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = AF8C38306C6F420DBC42DA2A /* ForgotPasswordScreen.swift */; }; + 2C7E484A83584887A412E71E /* LoginScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = E124B3B49FC34520805CCC97 /* LoginScreen.swift */; }; + E0352EDB139740DBB11DBD51 /* MatchesScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 56A95962EF2A4B8F821343D9 /* MatchesScreen.swift */; }; + A2BB5F7A9BEA4F45AC9523C5 /* AppNavHost.swift in Sources */ = {isa = PBXBuildFile; fileRef = 866A83237E6943E89A165B9D /* AppNavHost.swift */; }; + 30CF022083914A188A9E30A0 /* ModalRoutes.swift in Sources */ = {isa = PBXBuildFile; fileRef = 464CF87BEA644025B2D14644 /* ModalRoutes.swift */; }; + BF6BFF14A642487CA8DE29C6 /* Routes.swift in Sources */ = {isa = PBXBuildFile; fileRef = B214C9B30C794F00A31B0D83 /* Routes.swift */; }; + 06FE9996B295456D8B8C7E96 /* BroadcastPermissions.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3BFB2F18615747B1A1C9E9B2 /* BroadcastPermissions.swift */; }; + 142FA0805F1E40C69CAD3433 /* SplashScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = D7C29F5731A142C3A12B6DCA /* SplashScreen.swift */; }; + B92A8F0A41CC4ECE8BFCE0D9 /* KeepScreenOn.swift in Sources */ = {isa = PBXBuildFile; fileRef = 004F86D8E8BE47E589B923FA /* KeepScreenOn.swift */; }; + 1C4B54C40F4E4D1090A6BDA5 /* ScreenOrientation.swift in Sources */ = {isa = PBXBuildFile; fileRef = FF10FF45004F41AD82397DC9 /* ScreenOrientation.swift */; }; + 1A82C6F343F54284AFA8FECE /* ShareSheet.swift in Sources */ = {isa = PBXBuildFile; fileRef = 2B5C00419D09442FA8ED60F3 /* ShareSheet.swift */; }; + 7575030B9AEB4DEBAD986A23 /* MatchColors.swift in Sources */ = {isa = PBXBuildFile; fileRef = D2996990D08341ABA52BE287 /* MatchColors.swift */; }; + 777B73E69F8A4DC6A8E7C1DF /* StepMatchScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = EAB037B1369B454D84F6850D /* StepMatchScreen.swift */; }; + F67C0C88237F41DE8EDF6CB8 /* StepNetworkTestScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1079231B9A4E446AA9AD6C0A /* StepNetworkTestScreen.swift */; }; + 2B8E5D9945364094B74165DE /* StepTransmissionScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7EC0179FE6BC4323B1F9E1D3 /* StepTransmissionScreen.swift */; }; + 45776A6A76D04EF5A0C0D187 /* TeamBrandingEditor.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6FBBE0F1399840FFA0E7EF2E /* TeamBrandingEditor.swift */; }; + 39F7D49D44244F51907E803D /* TeamColorPicker.swift in Sources */ = {isa = PBXBuildFile; fileRef = 7001BB5D65B34280B306ECCF /* TeamColorPicker.swift */; }; + E417F20C78464CA78B28E3DE /* WizardComponents.swift in Sources */ = {isa = PBXBuildFile; fileRef = 5B75DC6D0B2248B2A6C9AA66 /* WizardComponents.swift */; }; + D1CF09F02F8844C4A22922F4 /* WizardShellScreen.swift in Sources */ = {isa = PBXBuildFile; fileRef = 3170F3149C614EC38B417905 /* WizardShellScreen.swift */; }; + ACC54AA19C5747CFA118C70B /* ApiInstantTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 75FEB862C3A34BF8AC24052E /* ApiInstantTests.swift */; }; + 592DF4BAC5624417A7123422 /* BroadcastOrientationPolicyTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = E5CA1FE59BA14F76BA94C995 /* BroadcastOrientationPolicyTests.swift */; }; + C9174111ED4A42E887578BF0 /* LiveBroadcastCoordinatorTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 1830F9A925334BA4B65D490E /* LiveBroadcastCoordinatorTests.swift */; }; + 095654DAAF6C4EA4B73BAB61 /* LiveScoreDialogHostTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = F4F8BF2514BB4F5185827B95 /* LiveScoreDialogHostTests.swift */; }; + AA18DECE8D08461B9197EB71 /* MatchScoringRulesTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 8964CE287E2C4C2DB701497B /* MatchScoringRulesTests.swift */; }; + 5D91C53D2E8A4952937F816B /* ScoreActionDecodeTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 10AD0F18190542818572CAEF /* ScoreActionDecodeTests.swift */; }; + FB66DD0422E14C54AC5B3EDB /* ScoreControllerTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 6DF142EBF33B45739BA8E42C /* ScoreControllerTests.swift */; }; + AB6FF1A930EB459091B77922 /* ThermalAdaptationTests.swift in Sources */ = {isa = PBXBuildFile; fileRef = 377A2D2B2DA440AFB0CE2298 /* ThermalAdaptationTests.swift */; }; + 30D3EC3BE61744868019114F /* Assets in Resources */ = {isa = PBXBuildFile; fileRef = 2146FBAC1D7F4FF7B47D360F; }; + AA3A68B2C1784294ADB89605 /* it.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 857C036B5B5C43368506DD8B; }; + 6D6C2C09593B4EADBF082FB5 /* en.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 3A6F9AAB5A1249BBB4FC02E6; }; + 4F520F571EC647CB9A7B5465 /* fr.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 30B07E7585A7408EA47C8633; }; + 8C8FEABCD83C422BA5A5DEA3 /* de.lproj in Resources */ = {isa = PBXBuildFile; fileRef = EEFE07D4B6FD44199A5B9C25; }; + 4AE99343B3A442D6AEBF7032 /* es.lproj in Resources */ = {isa = PBXBuildFile; fileRef = 2ACAF5B8A617427C8CBF56AD; }; + 7E992B84100649D8BE8507F7 = {isa = PBXGroup; children = (DDEF729FE3334F8998C4A31C, 6987D3982FAD44A6869B9FD6, 0ADC6126267C410F9B60B426); sourceTree = ""; }; + DDEF729FE3334F8998C4A31C = {isa = PBXGroup; children = (5F5FC005B683447B82372E36, C7D22FF2CF3D4230A7BAA60C, 9F180A1FA5DD4DB3BA7E3B41, 123A61DD4A6442728811488E, CDDF270D449A43F18399966D, 902831E3D87C46359F0D0A21, ADBBD9C8DF9F4A47ACEFE7B1, AAC2A198868F4B4E9010F862, C9D84DE8EFA34B4CBDFF43F1, 31251A1297F24C70A14D8702, 1BEBDFA6B21041729156ADFA, 17E7568BD3D94B34A361F470, 99D52E8096064A359AAE3D47, 7FC98372F1BD474BB0365488, 98526C26B2584F55AADF0FFF, 50C70C614F3C45B9B824E465, EE0A49E8D59947448DAA7851, 537FC2C063D341DF97A391B9, 813463F3E17D453EAA801739, CCC8ECFD24A14054BDD984C3, 87C01CC031C34343B3EBFF08, B0B243B2A21344558626DF7F, 81CA0BDC6EE44C4290D7E483, 951A7265EF5C41A9A12DD86A, 18445F0E4070424F86D55556, 61FCDE0B00FB485CB9B09110, EA08E23008964D02AB59377E, C9975D8D02CF4FA0A47696DD, B2432C46DFBA4322887D8C59, A43B670D8BE94F66B38885C8, F438E7E164F44C7B856C4808, C6D684B88BEB440F8D331D3D, 78104BD8D9044B659F33B02F, A8048B96407947C7BA4222E8, B5BF3429BFBA4DB3BDBD721D, 509414F2274844F4B9A956C3, 59E96B1417004CD3BC247C0F, 2DDC7305F3B549D0B7646B14, 9D645FD397CD40DDA859F160, 18B95E0D21B0407FA6723720, 31750F1B9E294337BDBD5B56, 46CE696CAB994E2C8E399776, 8C2A2F7BAC2B4AC69E8BEAF7, 4419E10415414556B7C58458, E860A0E35362427DA84F8972, 71816F0D99E44551839474CE, 4637B286559F4BC294018AC5, 2FF23D4B51AE4DA5B99D4021, 6F04C9EAB5984F938EC60BF4, 39F3C00B63534E6AA6D8A90A, C7403EB9DBD8459A93D9E2D8, 34BB2251A67E401A9F1E789E, AF8C38306C6F420DBC42DA2A, E124B3B49FC34520805CCC97, 56A95962EF2A4B8F821343D9, 866A83237E6943E89A165B9D, 464CF87BEA644025B2D14644, B214C9B30C794F00A31B0D83, 3BFB2F18615747B1A1C9E9B2, D7C29F5731A142C3A12B6DCA, 004F86D8E8BE47E589B923FA, FF10FF45004F41AD82397DC9, 2B5C00419D09442FA8ED60F3, D2996990D08341ABA52BE287, EAB037B1369B454D84F6850D, 1079231B9A4E446AA9AD6C0A, 7EC0179FE6BC4323B1F9E1D3, 6FBBE0F1399840FFA0E7EF2E, 7001BB5D65B34280B306ECCF, 5B75DC6D0B2248B2A6C9AA66, 3170F3149C614EC38B417905, 2146FBAC1D7F4FF7B47D360F, 8588711837244B19B84BA0B3, 857C036B5B5C43368506DD8B, 3A6F9AAB5A1249BBB4FC02E6, 30B07E7585A7408EA47C8633, EEFE07D4B6FD44199A5B9C25, 2ACAF5B8A617427C8CBF56AD); name = MatchLiveTv; sourceTree = ""; }; + 6987D3982FAD44A6869B9FD6 = {isa = PBXGroup; children = (75FEB862C3A34BF8AC24052E, E5CA1FE59BA14F76BA94C995, 1830F9A925334BA4B65D490E, F4F8BF2514BB4F5185827B95, 8964CE287E2C4C2DB701497B, 10AD0F18190542818572CAEF, 6DF142EBF33B45739BA8E42C, 377A2D2B2DA440AFB0CE2298); name = MatchLiveTvTests; sourceTree = ""; }; + 0ADC6126267C410F9B60B426 = {isa = PBXGroup; children = (CE0F9D7D5EE749E8AAE6AB43, 3FC0CC8155BE469ABB420DC5); name = Products; sourceTree = ""; }; + 3E146F1019B842318E38BF4D = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (65D33C32CF91408B91AFF5D4, F4C4427723C34532AFA1F798, E75C942B73594F1484927866, 38BACC0DAAA147EB8955A60C, 99B3D05A3D704DA1A513689F, 65EB1857F331469BAC9A18D7, 2F393B5FCD244E65B13C97A3, 5620C77D9A5B47F3BA0741E4, D75CBE430CF947B1B8B0225B, A74ACBA3E07740E59502306F, AA18CC40AAB249ECB8C88B85, 162DC182A26243599EEA862A, 2A0825BF1DCC4DC2B1FBC236, 70D5E80900C14B0897F02BF8, 9391C9EA0B834DC8956483DF, 359A4FD093C84543AD4DA3B1, 59B045E87F2946B8BC8EA65A, AECC36D80A0C411AB47D581A, 39335ED5DE5847E5904222AB, 470957DE79A84D9889F0663C, 66815B27A71244F791DE3C2F, 244F331A033D4A32A0DC46CB, 6EB9973427144A28B857B49E, 454725D14B224276B06BCC67, C19C5E8152C44669AE5D8874, 20A6FAB1CB7F47C085B75A22, 8723E1F8443A46B3AF49E8A3, 6A26C9639E5342ACA259DB67, FF08A44E3B5C4C709095F08C, C3873D7719AA419AA0134B65, 56896861A77F4036B3763B59, E16207FC581A4182B171119C, 1ABCBB3241B54AE3B8DC175F, 69707A2BF3574451AFE893F5, 972B0F53517C4AC2A062FD68, 9455267569924A4485199B85, FCBDDBB72AD142A39944DA39, ABC5853FEC554FA4AFBDCD2E, 53A64EA59067426FA7BCEF2E, C4A9BD596C4A4ACD88F7557F, 6AD0B3220B154EA2936C634A, 713E0129656649FC8630FDC6, 451211FDF3214D2098798DB6, E5E21D088782469D8EB23543, 5B51805239FA4D4D90919D86, EE568EA02C404102B4DFD651, 64EBCA992CD147BB8518DE60, FE883346930E41C790474211, 57EC4C4193D4412892219315, C6A88BEC28824928A0F7ED08, D74C538E4B754047B328E6F9, 0CB8933AC2B34D4099BBA881, CA87B95E856947AC9304E423, 2C7E484A83584887A412E71E, E0352EDB139740DBB11DBD51, A2BB5F7A9BEA4F45AC9523C5, 30CF022083914A188A9E30A0, BF6BFF14A642487CA8DE29C6, 06FE9996B295456D8B8C7E96, 142FA0805F1E40C69CAD3433, B92A8F0A41CC4ECE8BFCE0D9, 1C4B54C40F4E4D1090A6BDA5, 1A82C6F343F54284AFA8FECE, 7575030B9AEB4DEBAD986A23, 777B73E69F8A4DC6A8E7C1DF, F67C0C88237F41DE8EDF6CB8, 2B8E5D9945364094B74165DE, 45776A6A76D04EF5A0C0D187, 39F7D49D44244F51907E803D, E417F20C78464CA78B28E3DE, D1CF09F02F8844C4A22922F4); runOnlyForDeploymentPostprocessing = 0; }; + FA890E18B4EB44C58C124F5C = {isa = PBXSourcesBuildPhase; buildActionMask = 2147483647; files = (ACC54AA19C5747CFA118C70B, 592DF4BAC5624417A7123422, C9174111ED4A42E887578BF0, 095654DAAF6C4EA4B73BAB61, AA18DECE8D08461B9197EB71, 5D91C53D2E8A4952937F816B, FB66DD0422E14C54AC5B3EDB, AB6FF1A930EB459091B77922); runOnlyForDeploymentPostprocessing = 0; }; + B75DDD49798641E58FBE57D0 = {isa = PBXResourcesBuildPhase; buildActionMask = 2147483647; files = (30D3EC3BE61744868019114F, AA3A68B2C1784294ADB89605, 6D6C2C09593B4EADBF082FB5, 4F520F571EC647CB9A7B5465, 8C8FEABCD83C422BA5A5DEA3, 4AE99343B3A442D6AEBF7032); runOnlyForDeploymentPostprocessing = 0; }; + 414C9A6F8BE0437593A403A9 = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; }; + C16D70862B15401AA91E067A = {isa = PBXFrameworksBuildPhase; buildActionMask = 2147483647; files = (); runOnlyForDeploymentPostprocessing = 0; }; + ABC7AFD6F8DE449D90C8AD6A = {isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 31; @@ -211,7 +211,7 @@ ENABLE_TESTABILITY = YES; }; name = Debug; }; - F3F165985FD44A39B3B6FF0E = {isa = XCBuildConfiguration; buildSettings = { + 71636134BDC0490291EAAE3E = {isa = XCBuildConfiguration; buildSettings = { ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 31; @@ -232,7 +232,7 @@ SWIFT_VERSION = 5.0; TARGETED_DEVICE_FAMILY = "1,2"; }; name = Release; }; - 5E3A29EC3DB24266B9EF0171 = {isa = XCBuildConfiguration; buildSettings = { + EFB6F8A078FC44639CBDACBD = {isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 31; @@ -246,7 +246,7 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MatchLiveTv.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MatchLiveTv"; }; name = Debug; }; - 555198A5DDDE436CBACD7E18 = {isa = XCBuildConfiguration; buildSettings = { + 6482CB0453A5481CBE8BA182 = {isa = XCBuildConfiguration; buildSettings = { BUNDLE_LOADER = "$(TEST_HOST)"; CODE_SIGN_STYLE = Automatic; CURRENT_PROJECT_VERSION = 31; @@ -260,17 +260,17 @@ SWIFT_VERSION = 5.0; TEST_HOST = "$(BUILT_PRODUCTS_DIR)/MatchLiveTv.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/MatchLiveTv"; }; name = Release; }; - 0E70B7C10FDA423984E36CC9 = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Debug; }; - 2C81A80AEAE244A0B39AFBD2 = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Release; }; - 9C291CC401A54841BFB51C25 = {isa = XCConfigurationList; buildConfigurations = (20099FD8FB20437EBAC22528, F3F165985FD44A39B3B6FF0E); defaultConfigurationName = Release; }; - 0BF72791BF6644C993570519 = {isa = XCConfigurationList; buildConfigurations = (5E3A29EC3DB24266B9EF0171, 555198A5DDDE436CBACD7E18); defaultConfigurationName = Release; }; - DCFBCCE62D04415BBE81F2BB = {isa = XCConfigurationList; buildConfigurations = (0E70B7C10FDA423984E36CC9, 2C81A80AEAE244A0B39AFBD2); defaultConfigurationName = Release; }; - C171F3406A93463A92597094 = {isa = PBXNativeTarget; buildConfigurationList = 9C291CC401A54841BFB51C25; buildPhases = (C690D9F363C04AB29B993DE3, 3C4F572853FD429FB2D21C70, 4D8ACE6346594EA5BBB78946); buildRules = (); dependencies = (); name = MatchLiveTv; packageProductDependencies = (9ED2582C45E943B99BDE1280, 39E98F78A87F42EEB820737D); productName = MatchLiveTv; productReference = 90A99EA318D646F9BC464205; productType = "com.apple.product-type.application"; }; - 4F82BD5D410347C99B86E1C0 = {isa = PBXContainerItemProxy; containerPortal = 09A1B05AF84D4EF6862C4ACB /* Project object */; proxyType = 1; remoteGlobalIDString = C171F3406A93463A92597094; remoteInfo = MatchLiveTv; }; - 6B774D48E1FA451CB663EC25 = {isa = PBXTargetDependency; target = C171F3406A93463A92597094 /* MatchLiveTv */; targetProxy = 4F82BD5D410347C99B86E1C0 /* PBXContainerItemProxy */; }; - 59CEC7DD963A47E989D35E93 = {isa = PBXNativeTarget; buildConfigurationList = 0BF72791BF6644C993570519; buildPhases = (7DDAE95F35C042E0AA8D648F, 485CFBE0F9E54222B64C8B83); buildRules = (); dependencies = (6B774D48E1FA451CB663EC25); name = MatchLiveTvTests; productName = MatchLiveTvTests; productReference = CD9E5C058EC34B4983CC457C; productType = "com.apple.product-type.bundle.unit-test"; }; - D5732E009B7E4D378A1F71DB = {isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/shogo4405/HaishinKit.swift"; requirement = {kind = upToNextMajorVersion; minimumVersion = 2.0.0;}; }; - 09A1B05AF84D4EF6862C4ACB = {isa = PBXProject; attributes = {BuildIndependentTargetsInParallel = 0; LastSwiftUpdateCheck = 1600;}; buildConfigurationList = DCFBCCE62D04415BBE81F2BB; compatibilityVersion = "Xcode 15.0"; developmentRegion = it; mainGroup = 65634C6C829A41E1950996E5; packageReferences = (D5732E009B7E4D378A1F71DB); productRefGroup = CFAA62945B53429C8791D791; targets = (C171F3406A93463A92597094, 59CEC7DD963A47E989D35E93); }; + 19E8D060E51148A4B9C398B0 = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Debug; }; + 61160469A90147FA9D4C7CA9 = {isa = XCBuildConfiguration; buildSettings = {IPHONEOS_DEPLOYMENT_TARGET = 16.0; SWIFT_VERSION = 5.0; }; name = Release; }; + 117DCD84E04B4B03A2BFFFEA = {isa = XCConfigurationList; buildConfigurations = (ABC7AFD6F8DE449D90C8AD6A, 71636134BDC0490291EAAE3E); defaultConfigurationName = Release; }; + FE6CC95B39C044E1AC614098 = {isa = XCConfigurationList; buildConfigurations = (EFB6F8A078FC44639CBDACBD, 6482CB0453A5481CBE8BA182); defaultConfigurationName = Release; }; + EDC625652E214655BDA2B2AC = {isa = XCConfigurationList; buildConfigurations = (19E8D060E51148A4B9C398B0, 61160469A90147FA9D4C7CA9); defaultConfigurationName = Release; }; + F54F6C97361C4E8A96AEDD11 = {isa = PBXNativeTarget; buildConfigurationList = 117DCD84E04B4B03A2BFFFEA; buildPhases = (3E146F1019B842318E38BF4D, 414C9A6F8BE0437593A403A9, B75DDD49798641E58FBE57D0); buildRules = (); dependencies = (); name = MatchLiveTv; packageProductDependencies = (74B2BB60EC504F4E9CAFDDC8, 8D1C04B6B7DF4271AC84A016); productName = MatchLiveTv; productReference = CE0F9D7D5EE749E8AAE6AB43; productType = "com.apple.product-type.application"; }; + 58E3C5EC752E497FBFD32D78 = {isa = PBXContainerItemProxy; containerPortal = AE0076753A1840A19E9F565F /* Project object */; proxyType = 1; remoteGlobalIDString = F54F6C97361C4E8A96AEDD11; remoteInfo = MatchLiveTv; }; + E2FB115E6BB84F2EA8EA369B = {isa = PBXTargetDependency; target = F54F6C97361C4E8A96AEDD11 /* MatchLiveTv */; targetProxy = 58E3C5EC752E497FBFD32D78 /* PBXContainerItemProxy */; }; + 20C695DBFB4042879308B0F5 = {isa = PBXNativeTarget; buildConfigurationList = FE6CC95B39C044E1AC614098; buildPhases = (FA890E18B4EB44C58C124F5C, C16D70862B15401AA91E067A); buildRules = (); dependencies = (E2FB115E6BB84F2EA8EA369B); name = MatchLiveTvTests; productName = MatchLiveTvTests; productReference = 3FC0CC8155BE469ABB420DC5; productType = "com.apple.product-type.bundle.unit-test"; }; + 294A8F0AC0E54F1EB302705C = {isa = XCRemoteSwiftPackageReference; repositoryURL = "https://github.com/shogo4405/HaishinKit.swift"; requirement = {kind = upToNextMajorVersion; minimumVersion = 2.0.0;}; }; + AE0076753A1840A19E9F565F = {isa = PBXProject; attributes = {BuildIndependentTargetsInParallel = 0; LastSwiftUpdateCheck = 1600;}; buildConfigurationList = EDC625652E214655BDA2B2AC; compatibilityVersion = "Xcode 15.0"; developmentRegion = it; mainGroup = 7E992B84100649D8BE8507F7; packageReferences = (294A8F0AC0E54F1EB302705C); productRefGroup = 0ADC6126267C410F9B60B426; targets = (F54F6C97361C4E8A96AEDD11, 20C695DBFB4042879308B0F5); }; }; - rootObject = 09A1B05AF84D4EF6862C4ACB /* Project object */; + rootObject = AE0076753A1840A19E9F565F /* Project object */; } diff --git a/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme b/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme index 20671bd..e485ce6 100644 --- a/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme +++ b/native/ios/MatchLiveTv.xcodeproj/xcshareddata/xcschemes/MatchLiveTv.xcscheme @@ -3,28 +3,28 @@ - + - + - + - + - + diff --git a/native/ios/MatchLiveTv/Core/AppLanguage.swift b/native/ios/MatchLiveTv/Core/AppLanguage.swift index 3aa90c7..ad8317d 100644 --- a/native/ios/MatchLiveTv/Core/AppLanguage.swift +++ b/native/ios/MatchLiveTv/Core/AppLanguage.swift @@ -194,7 +194,7 @@ enum L10n { "match.status.start": "AVVIA", "matches.active.team": "Squadra attiva: %1$@.", "matches.change": "Cambia", - "matches.empty.hint": "Programma una partita o avviane una nuova con «Nuova partita».", + "matches.empty.hint": "Tocca «Nuova partita» per programmare in anticipo o avviare subito.", "matches.empty.title": "Nessuna partita in calendario", "matches.hello": "Ciao, %1$@", "matches.load.error": "Errore caricamento", @@ -212,9 +212,8 @@ enum L10n { "matches.no.team.title": "Nessuna squadra assegnata", "matches.ready.title": "Pronte da avviare", "matches.retry": "Riprova", - "matches.schedule": "Partita programmata", "matches.scheduled.title": "Partite programmate", - "matches.subtitle": "Riprendi una diretta in corso o avvia una partita programmata.", + "matches.subtitle": "Riprendi una diretta in corso o avvia una nuova partita.", "matches.tap.change.team": "Tocca per cambiare squadra", "matches.team.for.live": "Squadra per la diretta", "matches.title": "Partite", @@ -485,7 +484,7 @@ enum L10n { "match.status.start": "START", "matches.active.team": "Active team: %1$@.", "matches.change": "Change", - "matches.empty.hint": "Schedule a match or start a new one with «New match».", + "matches.empty.hint": "Tap «New match» to schedule ahead or start right away.", "matches.empty.title": "No matches on the calendar", "matches.hello": "Hi, %1$@", "matches.load.error": "Loading error", @@ -503,9 +502,8 @@ enum L10n { "matches.no.team.title": "No team assigned", "matches.ready.title": "Ready to start", "matches.retry": "Retry", - "matches.schedule": "Scheduled match", "matches.scheduled.title": "Scheduled matches", - "matches.subtitle": "Resume a live stream or start a scheduled match.", + "matches.subtitle": "Resume a live stream or start a new match.", "matches.tap.change.team": "Tap to change team", "matches.team.for.live": "Team for the live stream", "matches.title": "Matches", @@ -776,7 +774,7 @@ enum L10n { "match.status.start": "DÉMARRER", "matches.active.team": "Équipe active : %1$@.", "matches.change": "Changer", - "matches.empty.hint": "Programmez un match ou démarrez-en un avec « Nouveau match ».", + "matches.empty.hint": "Touchez « Nouveau match » pour planifier à l'avance ou démarrer tout de suite.", "matches.empty.title": "Aucun match au calendrier", "matches.hello": "Bonjour, %1$@", "matches.load.error": "Erreur de chargement", @@ -794,9 +792,8 @@ enum L10n { "matches.no.team.title": "Aucune équipe assignée", "matches.ready.title": "Prêts à démarrer", "matches.retry": "Réessayer", - "matches.schedule": "Match programmé", "matches.scheduled.title": "Matchs programmés", - "matches.subtitle": "Reprenez un direct en cours ou démarrez un match programmé.", + "matches.subtitle": "Reprenez un direct en cours ou démarrez un nouveau match.", "matches.tap.change.team": "Appuyez pour changer d'équipe", "matches.team.for.live": "Équipe pour le direct", "matches.title": "Matchs", @@ -1067,7 +1064,7 @@ enum L10n { "match.status.start": "STARTEN", "matches.active.team": "Aktives Team: %1$@.", "matches.change": "Wechseln", - "matches.empty.hint": "Plane ein Spiel oder starte ein neues mit «Neues Spiel».", + "matches.empty.hint": "Tippe auf «Neues Spiel», um im Voraus zu planen oder sofort zu starten.", "matches.empty.title": "Keine Spiele im Kalender", "matches.hello": "Hallo, %1$@", "matches.load.error": "Ladefehler", @@ -1085,9 +1082,8 @@ enum L10n { "matches.no.team.title": "Kein Team zugewiesen", "matches.ready.title": "Bereit zum Start", "matches.retry": "Erneut versuchen", - "matches.schedule": "Geplantes Spiel", "matches.scheduled.title": "Geplante Spiele", - "matches.subtitle": "Nimm einen laufenden Livestream wieder auf oder starte ein geplantes Spiel.", + "matches.subtitle": "Nimm einen laufenden Livestream wieder auf oder starte ein neues Spiel.", "matches.tap.change.team": "Tippen zum Teamwechsel", "matches.team.for.live": "Team für den Livestream", "matches.title": "Spiele", @@ -1358,7 +1354,7 @@ enum L10n { "match.status.start": "INICIAR", "matches.active.team": "Equipo activo: %1$@.", "matches.change": "Cambiar", - "matches.empty.hint": "Programa un partido o inicia uno nuevo con «Nuevo partido».", + "matches.empty.hint": "Toca «Nuevo partido» para programar con antelación o empezar ya.", "matches.empty.title": "Ningún partido en el calendario", "matches.hello": "Hola, %1$@", "matches.load.error": "Error de carga", @@ -1376,9 +1372,8 @@ enum L10n { "matches.no.team.title": "Ningún equipo asignado", "matches.ready.title": "Listos para empezar", "matches.retry": "Reintentar", - "matches.schedule": "Partido programado", "matches.scheduled.title": "Partidos programados", - "matches.subtitle": "Reanuda un directo en curso o inicia un partido programado.", + "matches.subtitle": "Reanuda un directo en curso o inicia un nuevo partido.", "matches.tap.change.team": "Toca para cambiar de equipo", "matches.team.for.live": "Equipo para el directo", "matches.title": "Partidos", diff --git a/native/ios/MatchLiveTv/UI/Components/MatchPrimaryButton.swift b/native/ios/MatchLiveTv/UI/Components/MatchPrimaryButton.swift index 3a2b8f8..b044309 100644 --- a/native/ios/MatchLiveTv/UI/Components/MatchPrimaryButton.swift +++ b/native/ios/MatchLiveTv/UI/Components/MatchPrimaryButton.swift @@ -17,6 +17,7 @@ struct MatchPrimaryButton: View { .font(MatchTypography.labelLarge) .lineLimit(1) .minimumScaleFactor(0.7) + .padding(.horizontal, 14) } } .frame(maxWidth: .infinity) diff --git a/native/ios/MatchLiveTv/UI/Components/MatchScreenScaffold.swift b/native/ios/MatchLiveTv/UI/Components/MatchScreenScaffold.swift index 2b93d54..c4b19e8 100644 --- a/native/ios/MatchLiveTv/UI/Components/MatchScreenScaffold.swift +++ b/native/ios/MatchLiveTv/UI/Components/MatchScreenScaffold.swift @@ -21,5 +21,8 @@ struct MatchScreenScaffold: View { .frame(maxWidth: .infinity, maxHeight: .infinity, alignment: .top) .background(MatchColors.background) .foregroundStyle(.white) + // Chrome custom: nasconde la navigation bar di sistema (evita chevron indietro spurî). + .toolbar(.hidden, for: .navigationBar) + .navigationBarBackButtonHidden(true) } } diff --git a/native/ios/MatchLiveTv/UI/Components/MatchSecondaryButton.swift b/native/ios/MatchLiveTv/UI/Components/MatchSecondaryButton.swift index 3158eb6..74791fd 100644 --- a/native/ios/MatchLiveTv/UI/Components/MatchSecondaryButton.swift +++ b/native/ios/MatchLiveTv/UI/Components/MatchSecondaryButton.swift @@ -11,6 +11,7 @@ struct MatchSecondaryButton: View { .font(MatchTypography.labelLarge) .lineLimit(1) .minimumScaleFactor(0.7) + .padding(.horizontal, 14) .frame(maxWidth: .infinity) .frame(height: 52) } diff --git a/native/ios/MatchLiveTv/UI/Matches/MatchesScreen.swift b/native/ios/MatchLiveTv/UI/Matches/MatchesScreen.swift index ae9916e..3fb4e90 100644 --- a/native/ios/MatchLiveTv/UI/Matches/MatchesScreen.swift +++ b/native/ios/MatchLiveTv/UI/Matches/MatchesScreen.swift @@ -77,10 +77,7 @@ struct MatchesScreen: View { Text(L10n.t("matches.subtitle")) .font(MatchTypography.bodyMedium) .foregroundStyle(MatchColors.textSecondary) - HStack(spacing: 12) { - MatchSecondaryButton(label: L10n.t("matches.schedule").uppercased(), action: { showSchedule = true }) - MatchPrimaryButton(label: L10n.t("matches.new").uppercased(), action: { showNewMatch = true }) - } + MatchPrimaryButton(label: L10n.t("matches.new").uppercased(), action: { showNewMatch = true }) if let activeTeam { TeamPickerBar( team: activeTeam, diff --git a/native/ios/MatchLiveTv/UI/Navigation/AppNavHost.swift b/native/ios/MatchLiveTv/UI/Navigation/AppNavHost.swift index 05c8bdf..b6381d7 100644 --- a/native/ios/MatchLiveTv/UI/Navigation/AppNavHost.swift +++ b/native/ios/MatchLiveTv/UI/Navigation/AppNavHost.swift @@ -1,7 +1,15 @@ import SwiftUI struct AppNavHost: View { + private enum RootScreen { + case splash + case login + case matches + } + @StateObject private var container = AppContainer() + @State private var root: RootScreen = .splash + /// Solo destinazioni sopra la root (account, recupero password). @State private var path: [Routes] = [] @State private var wizardRoute: WizardRoute? @State private var broadcastRoute: BroadcastRoute? @@ -17,49 +25,27 @@ struct AppNavHost: View { var body: some View { NavigationStack(path: $path) { - SplashScreen( - container: container, - onAuthenticated: { path = [.matches] }, - onUnauthenticated: { path = [.login] } - ) - .navigationDestination(for: Routes.self) { route in - switch route { - case .splash: - EmptyView() - case .login: - LoginScreen( - container: container, - onLoggedIn: { path = [.matches] }, - onForgotPassword: { path.append(.forgotPassword) } - ) - case .forgotPassword: - ForgotPasswordScreen( - container: container, - onBack: { path.removeLast() } - ) - case .matches: - MatchesScreen( - container: container, - refreshToken: matchesRefreshToken, - onOpenSetup: { matchId in - wizardRoute = WizardRoute(matchId: matchId, step: 1) - }, - onOpenBroadcast: { sessionId in - broadcastRoute = BroadcastRoute(sessionId: sessionId) - }, - onOpenAccount: { path.append(.account) } - ) - .lockPortraitOrientation() - case .account: - AccountScreen( - container: container, - onBack: { path.removeLast() }, - onLoggedOut: { path = [.login] } - ) - case .setup, .broadcast: - EmptyView() + rootContent + .navigationDestination(for: Routes.self) { route in + switch route { + case .forgotPassword: + ForgotPasswordScreen( + container: container, + onBack: { path.removeLast() } + ) + case .account: + AccountScreen( + container: container, + onBack: { path.removeLast() }, + onLoggedOut: { + path = [] + root = .login + } + ) + case .splash, .login, .matches, .setup, .broadcast: + EmptyView() + } } - } } .environment(\.locale, appLocale) .onReceive(NotificationCenter.default.publisher(for: .appLanguageDidChange)) { _ in @@ -98,7 +84,8 @@ struct AppNavHost: View { AppOrientation.lockPortrait() container.wizardSession.reset() broadcastRoute = nil - path = [.matches] + path = [] + root = .matches } .keepScreenOn() } @@ -109,4 +96,44 @@ struct AppNavHost: View { } .environmentObject(container) } + + @ViewBuilder + private var rootContent: some View { + switch root { + case .splash: + SplashScreen( + container: container, + onAuthenticated: { + path = [] + root = .matches + }, + onUnauthenticated: { + path = [] + root = .login + } + ) + case .login: + LoginScreen( + container: container, + onLoggedIn: { + path = [] + root = .matches + }, + onForgotPassword: { path.append(.forgotPassword) } + ) + case .matches: + MatchesScreen( + container: container, + refreshToken: matchesRefreshToken, + onOpenSetup: { matchId in + wizardRoute = WizardRoute(matchId: matchId, step: 1) + }, + onOpenBroadcast: { sessionId in + broadcastRoute = BroadcastRoute(sessionId: sessionId) + }, + onOpenAccount: { path.append(.account) } + ) + .lockPortraitOrientation() + } + } }