From f0d3ab87a4cee5b47ad397eb39926eb636a5b44b Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Wed, 25 Feb 2026 12:23:39 +1100 Subject: [PATCH 01/29] Migrate UIKit navigation to pure SwiftUI NavigationStack Replace UIKit coordinator pattern (BaseCoordinator, UINavigationController, UITabBarController) with SwiftUI NavigationStack + NavigationPath per tab. ViewModels use closures instead of coordinator protocol refs. Delete 26 UIKit files, add 3 SwiftUI files. 131 tests passing, iOS 16+ minimum. Co-Authored-By: Claude Opus 4.6 --- Coordinator/Package.swift | 4 +- .../Sources/Coordinator/AppCoordinator.swift | 221 +++++++----------- .../Sources/Coordinator/AppRootView.swift | 41 ++++ .../Sources/Coordinator/BaseCoordinator.swift | 135 ----------- .../Coordinator/LoginCoordinator.swift | 27 --- .../Sources/Coordinator/MainTabView.swift | 175 ++++++++++++++ Core/Package.swift | 4 +- FunApp/FunApp.xcodeproj/project.pbxproj | 8 +- FunApp/FunApp/AppDelegate.swift | 11 - .../AppIcon.appiconset/AppIcon.png | Bin 219141 -> 99932 bytes FunApp/FunApp/FunApp.swift | 32 +++ FunApp/FunApp/Info.plist | 21 +- FunApp/FunApp/SceneDelegate.swift | 95 -------- Model/Package.swift | 4 +- Model/Sources/Model/FeaturedItem.swift | 2 +- Model/Sources/Model/ItemColor.swift | 2 +- Services/Package.swift | 4 +- UI/Package.swift | 4 +- UI/Sources/UI/Detail/DetailView.swift | 43 ++-- .../UI/Detail/DetailViewController.swift | 88 ------- .../Extensions/UIViewController+SwiftUI.swift | 27 --- UI/Sources/UI/Home/HomeView.swift | 68 +++--- UI/Sources/UI/Home/HomeViewController.swift | 45 ---- UI/Sources/UI/HomeTabBarController.swift | 144 ------------ UI/Sources/UI/Items/ItemsView.swift | 1 + UI/Sources/UI/Items/ItemsViewController.swift | 33 --- UI/Sources/UI/Login/LoginViewController.swift | 32 --- UI/Sources/UI/Profile/ProfileView.swift | 13 ++ .../UI/Profile/ProfileViewController.swift | 55 ----- UI/Sources/UI/Settings/SettingsView.swift | 5 + .../UI/Settings/SettingsViewController.swift | 33 --- ViewModel/Package.swift | 4 +- .../ViewModel/Detail/DetailViewModel.swift | 20 +- .../ViewModel/Home/HomeViewModel.swift | 38 +-- .../HomeTabBar/HomeTabBarViewModel.swift | 53 ----- .../ViewModel/Items/ItemsViewModel.swift | 27 +-- .../ViewModel/Login/LoginViewModel.swift | 8 +- .../ViewModel/Profile/ProfileViewModel.swift | 10 +- .../ViewModelTests/DetailViewModelTests.swift | 38 +-- .../HomeTabBarViewModelTests.swift | 114 --------- .../ViewModelTests/HomeViewModelTests.swift | 24 +- .../ViewModelTests/ItemsViewModelTests.swift | 13 +- .../ViewModelTests/LoginViewModelTests.swift | 24 +- .../ProfileViewModelTests.swift | 26 +-- 44 files changed, 504 insertions(+), 1272 deletions(-) create mode 100644 Coordinator/Sources/Coordinator/AppRootView.swift delete mode 100644 Coordinator/Sources/Coordinator/BaseCoordinator.swift delete mode 100644 Coordinator/Sources/Coordinator/LoginCoordinator.swift create mode 100644 Coordinator/Sources/Coordinator/MainTabView.swift delete mode 100644 FunApp/FunApp/AppDelegate.swift create mode 100644 FunApp/FunApp/FunApp.swift delete mode 100644 FunApp/FunApp/SceneDelegate.swift delete mode 100644 UI/Sources/UI/Detail/DetailViewController.swift delete mode 100644 UI/Sources/UI/Extensions/UIViewController+SwiftUI.swift delete mode 100644 UI/Sources/UI/Home/HomeViewController.swift delete mode 100644 UI/Sources/UI/HomeTabBarController.swift delete mode 100644 UI/Sources/UI/Items/ItemsViewController.swift delete mode 100644 UI/Sources/UI/Login/LoginViewController.swift delete mode 100644 UI/Sources/UI/Profile/ProfileViewController.swift delete mode 100644 UI/Sources/UI/Settings/SettingsViewController.swift delete mode 100644 ViewModel/Sources/ViewModel/HomeTabBar/HomeTabBarViewModel.swift delete mode 100644 ViewModel/Tests/ViewModelTests/HomeTabBarViewModelTests.swift diff --git a/Coordinator/Package.swift b/Coordinator/Package.swift index 547d305e..a01b355c 100644 --- a/Coordinator/Package.swift +++ b/Coordinator/Package.swift @@ -4,8 +4,8 @@ import PackageDescription let package = Package( name: "Coordinator", platforms: [ - .iOS(.v15), - .macCatalyst(.v15), + .iOS(.v16), + .macCatalyst(.v16), ], products: [ .library(name: "FunCoordinator", targets: ["FunCoordinator"]), diff --git a/Coordinator/Sources/Coordinator/AppCoordinator.swift b/Coordinator/Sources/Coordinator/AppCoordinator.swift index 0b6a5416..d458d4e6 100644 --- a/Coordinator/Sources/Coordinator/AppCoordinator.swift +++ b/Coordinator/Sources/Coordinator/AppCoordinator.swift @@ -2,18 +2,17 @@ // AppCoordinator.swift // Coordinator // -// Main coordinator for the application +// SwiftUI-based coordinator managing navigation state and app flow // -import UIKit +import Combine +import SwiftUI import FunCore import FunModel -import FunUI -import FunViewModel -/// Main app coordinator that manages the root navigation and app flow -public final class AppCoordinator: BaseCoordinator { +@MainActor +public final class AppCoordinator: ObservableObject { // MARK: - Services @@ -26,38 +25,41 @@ public final class AppCoordinator: BaseCoordinator { // MARK: - App Flow State - private var currentFlow: AppFlow = .login + @Published public var currentFlow: AppFlow = .login - // MARK: - Child Coordinators + // MARK: - Navigation State - private var loginCoordinator: LoginCoordinator? - private var homeCoordinator: HomeCoordinator? - private var itemsCoordinator: ItemsCoordinator? - private var settingsCoordinator: SettingsCoordinator? + @Published public var selectedTab: TabIndex = .home + @Published public var homePath = NavigationPath() + @Published public var itemsPath = NavigationPath() + @Published public var settingsPath = NavigationPath() + @Published public var isProfilePresented = false - // Store tab bar view model for tab switching - private var tabBarViewModel: HomeTabBarViewModel? + // MARK: - Deep Link - // Queue deep link if received during login flow private var pendingDeepLink: DeepLink? + // MARK: - Toast + + @Published public var activeToast: ToastEvent? + private var cancellables = Set() + + // MARK: - Dark Mode + + @Published public var appearanceMode: AppearanceMode = .system + private var darkModeCancellable: AnyCancellable? + // MARK: - Init - public init(navigationController: UINavigationController, sessionFactory: SessionFactory) { + public init(sessionFactory: SessionFactory) { self.sessionFactory = sessionFactory - super.init(navigationController: navigationController) } // MARK: - Start - override public func start() { + public func start() { activateSession(for: currentFlow) - switch currentFlow { - case .login: - showLoginFlow() - case .main: - showMainFlow() - } + observeDarkMode() } // MARK: - Session Lifecycle @@ -69,159 +71,98 @@ public final class AppCoordinator: BaseCoordinator { currentSession = session } - // MARK: - Flow Management - - private func showLoginFlow() { - // Clear any existing main flow coordinators - clearMainFlowCoordinators() - - let loginCoordinator = LoginCoordinator(navigationController: navigationController) - loginCoordinator.onLoginSuccess = { [weak self] in - self?.transitionToMainFlow() - } - self.loginCoordinator = loginCoordinator - loginCoordinator.start() - } - - private func showMainFlow() { - // Clear login coordinator - loginCoordinator = nil - - // Create navigation controllers for each tab - let homeNavController = UINavigationController() - let itemsNavController = UINavigationController() - let settingsNavController = UINavigationController() - - // Large navigation titles for root screens - homeNavController.navigationBar.prefersLargeTitles = true - itemsNavController.navigationBar.prefersLargeTitles = true - settingsNavController.navigationBar.prefersLargeTitles = true - - // Configure tab bar items with icons and titles - homeNavController.tabBarItem = UITabBarItem( - title: L10n.Tabs.home, - image: UIImage(systemName: "house"), - selectedImage: UIImage(systemName: "house.fill") - ) - homeNavController.tabBarItem.accessibilityIdentifier = AccessibilityID.Tabs.home - - itemsNavController.tabBarItem = UITabBarItem( - title: L10n.Tabs.items, - image: UIImage(systemName: "list.bullet"), - selectedImage: UIImage(systemName: "list.bullet") - ) - itemsNavController.tabBarItem.accessibilityIdentifier = AccessibilityID.Tabs.items - - settingsNavController.tabBarItem = UITabBarItem( - title: L10n.Tabs.settings, - image: UIImage(systemName: "gearshape"), - selectedImage: UIImage(systemName: "gearshape.fill") - ) - settingsNavController.tabBarItem.accessibilityIdentifier = AccessibilityID.Tabs.settings - - // Create view model for tab bar - let tabBarViewModel = HomeTabBarViewModel() - self.tabBarViewModel = tabBarViewModel - - // Create and store coordinators for each tab - let homeCoordinator = HomeCoordinator( - navigationController: homeNavController - ) - let itemsCoordinator = ItemsCoordinator( - navigationController: itemsNavController - ) - let settingsCoordinator = SettingsCoordinator( - navigationController: settingsNavController - ) - - // Set up logout callback through home coordinator (Profile modal) - homeCoordinator.onLogout = { [weak self] in - self?.transitionToLoginFlow() - } - - // Store coordinators to prevent deallocation - self.homeCoordinator = homeCoordinator - self.itemsCoordinator = itemsCoordinator - self.settingsCoordinator = settingsCoordinator - - // Start each coordinator's flow - homeCoordinator.start() - itemsCoordinator.start() - settingsCoordinator.start() - - // Create tab bar with view model and navigation controllers - let tabBarController = HomeTabBarController( - viewModel: tabBarViewModel, - tabNavigationControllers: [ - homeNavController, - itemsNavController, - settingsNavController - ] - ) - - // Set as root (tab bar doesn't push, it's the container) - navigationController.setViewControllers([tabBarController], animated: false) - } - // MARK: - Flow Transitions - private func transitionToMainFlow() { + public func transitionToMainFlow() { currentFlow = .main activateSession(for: .main) - showMainFlow() + observeToastEvents() + // Execute pending deep link after main flow is ready if let deepLink = pendingDeepLink { pendingDeepLink = nil - executeDeepLink(deepLink) + Task { @MainActor [weak self] in + try? await Task.sleep(nanoseconds: 100_000_000) + self?.executeDeepLink(deepLink) + } } } - private func transitionToLoginFlow() { + public func transitionToLoginFlow() { currentFlow = .login pendingDeepLink = nil activateSession(for: .login) - showLoginFlow() - } - // MARK: - Cleanup - - private func clearMainFlowCoordinators() { - homeCoordinator = nil - itemsCoordinator = nil - settingsCoordinator = nil - tabBarViewModel = nil + // Reset navigation state + homePath = NavigationPath() + itemsPath = NavigationPath() + settingsPath = NavigationPath() + selectedTab = .home + isProfilePresented = false + activeToast = nil } // MARK: - Deep Link Handling - /// Handle incoming deep link - /// - Parameter deepLink: The deep link to handle public func handleDeepLink(_ deepLink: DeepLink) { - // If on login screen, queue for after login if currentFlow == .login { pendingDeepLink = deepLink return } - executeDeepLink(deepLink) } private func executeDeepLink(_ deepLink: DeepLink) { switch deepLink { case .tab(let tabIndex): - tabBarViewModel?.switchToTab(tabIndex.rawValue) + selectedTab = tabIndex case .item(let id): - tabBarViewModel?.switchToTab(TabIndex.home.rawValue) + selectedTab = .home if let item = FeaturedItem.all.first(where: { $0.id == id }) { - homeCoordinator?.showDetail(for: item) + homePath.append(item) } else { logger.log("Deep link item not found: \(id)", level: .warning, category: .general) } case .profile: - tabBarViewModel?.switchToTab(TabIndex.home.rawValue) - homeCoordinator?.showProfile() + selectedTab = .home + isProfilePresented = true } } + + // MARK: - Toast + + private func observeToastEvents() { + @Service(.toast) var toastService: ToastServiceProtocol + toastService.toastPublisher + .sink { [weak self] event in + self?.activeToast = event + } + .store(in: &cancellables) + } + + public func dismissToast() { + activeToast = nil + } + + // MARK: - Dark Mode Observation + + private func observeDarkMode() { + ServiceLocator.shared.serviceDidRegisterPublisher + .filter { $0 == .featureToggles } + .sink { [weak self] _ in + self?.subscribeToDarkMode() + } + .store(in: &cancellables) + } + + private func subscribeToDarkMode() { + darkModeCancellable?.cancel() + @Service(.featureToggles) var featureToggleService: FeatureToggleServiceProtocol + darkModeCancellable = featureToggleService.appearanceModePublisher + .sink { [weak self] mode in + self?.appearanceMode = mode + } + } } diff --git a/Coordinator/Sources/Coordinator/AppRootView.swift b/Coordinator/Sources/Coordinator/AppRootView.swift new file mode 100644 index 00000000..397ecdc5 --- /dev/null +++ b/Coordinator/Sources/Coordinator/AppRootView.swift @@ -0,0 +1,41 @@ +// +// AppRootView.swift +// Coordinator +// +// Root SwiftUI view that switches between login and main tab flow +// + +import SwiftUI + +import FunCore +import FunModel +import FunUI +import FunViewModel + +public struct AppRootView: View { + @ObservedObject var coordinator: AppCoordinator + + public init(coordinator: AppCoordinator) { + self.coordinator = coordinator + } + + public var body: some View { + Group { + switch coordinator.currentFlow { + case .login: + LoginTabContent(coordinator: coordinator) + case .main: + MainTabView(coordinator: coordinator) + } + } + .preferredColorScheme(colorScheme) + } + + private var colorScheme: ColorScheme? { + switch coordinator.appearanceMode { + case .system: nil + case .light: .light + case .dark: .dark + } + } +} diff --git a/Coordinator/Sources/Coordinator/BaseCoordinator.swift b/Coordinator/Sources/Coordinator/BaseCoordinator.swift deleted file mode 100644 index 5c49ef1c..00000000 --- a/Coordinator/Sources/Coordinator/BaseCoordinator.swift +++ /dev/null @@ -1,135 +0,0 @@ -// -// BaseCoordinator.swift -// Coordinator -// -// Base coordinator class with safe navigation methods -// - -import UIKit - -// MARK: - Coordinator Protocol - -@MainActor -public protocol Coordinator: AnyObject { - var navigationController: UINavigationController { get } - func start() -} - -// MARK: - Base Coordinator - -@MainActor -open class BaseCoordinator: Coordinator { - - public let navigationController: UINavigationController - - private var isTransitioning: Bool { - navigationController.transitionCoordinator != nil - } - - /// Single pending action retried after the current transition completes. - /// Handles deep links arriving mid-transition without full queue complexity. - private var pendingAction: (@MainActor () -> Void)? - - public init(navigationController: UINavigationController) { - self.navigationController = navigationController - } - - open func start() { - // Override in subclasses - } - - // MARK: - Safe Navigation Methods - - public func safePush(_ viewController: UIViewController, animated: Bool = true) { - guard !isTransitioning else { - scheduleRetry { [weak self] in - self?.safePush(viewController, animated: animated) - } - return - } - - navigationController.pushViewController(viewController, animated: animated) - } - - public func safePop(animated: Bool = true, completion: (@MainActor () -> Void)? = nil) { - guard !isTransitioning else { - scheduleRetry { [weak self] in - self?.safePop(animated: animated, completion: completion) - } - return - } - navigationController.popViewController(animated: animated) - // UIKit's popViewController has no completion handler. - // Hook into the transition coordinator created by the pop to - // fire our completion after the animation finishes. - if animated, let transitionCoordinator = navigationController.transitionCoordinator { - transitionCoordinator.animate(alongsideTransition: nil) { _ in - completion?() - } - } else { - completion?() - } - } - - public func safePresent(_ viewController: UIViewController, animated: Bool = true, completion: (@MainActor () -> Void)? = nil) { - // Walk up to the topmost presented VC so we present from the right level - var presenter: UIViewController = navigationController - while let presented = presenter.presentedViewController { - presenter = presented - } - presenter.present(viewController, animated: animated, completion: completion) - } - - public func safeDismiss(animated: Bool = true, completion: (@MainActor () -> Void)? = nil) { - navigationController.dismiss(animated: animated, completion: completion) - } - - // MARK: - Share - - public func share(text: String) { - let activityViewController = UIActivityViewController( - activityItems: [text], - applicationActivities: nil - ) - - // iPad support - if let popoverController = activityViewController.popoverPresentationController { - popoverController.sourceView = navigationController.view - popoverController.sourceRect = CGRect( - x: navigationController.view.bounds.midX, - y: navigationController.view.bounds.midY, - width: 0, - height: 0 - ) - popoverController.permittedArrowDirections = [] - } - - safePresent(activityViewController) - } - - // MARK: - Transition Retry - - /// Schedules a single action to execute after the current transition completes. - /// If a new action arrives before the previous one executes, it replaces it - /// (latest navigation intent wins). - private func scheduleRetry(_ action: @escaping @MainActor () -> Void) { - pendingAction = action - - if let coordinator = navigationController.transitionCoordinator { - coordinator.animate( - alongsideTransition: nil, - completion: { [weak self] _ in - self?.executePendingAction() - } - ) - } else { - executePendingAction() - } - } - - private func executePendingAction() { - let action = pendingAction - pendingAction = nil - action?() - } -} diff --git a/Coordinator/Sources/Coordinator/LoginCoordinator.swift b/Coordinator/Sources/Coordinator/LoginCoordinator.swift deleted file mode 100644 index 4535c5e2..00000000 --- a/Coordinator/Sources/Coordinator/LoginCoordinator.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// LoginCoordinator.swift -// Coordinator -// -// Coordinator for Login flow -// - -import UIKit - -import FunUI -import FunViewModel - -public final class LoginCoordinator: BaseCoordinator { - - // MARK: - Properties - - /// Callback to notify parent coordinator of successful login - public var onLoginSuccess: (() -> Void)? - - override public func start() { - let viewModel = LoginViewModel() - viewModel.onLogin = { [weak self] in self?.onLoginSuccess?() } - - let viewController = LoginViewController(viewModel: viewModel) - navigationController.setViewControllers([viewController], animated: false) - } -} diff --git a/Coordinator/Sources/Coordinator/MainTabView.swift b/Coordinator/Sources/Coordinator/MainTabView.swift new file mode 100644 index 00000000..858590c0 --- /dev/null +++ b/Coordinator/Sources/Coordinator/MainTabView.swift @@ -0,0 +1,175 @@ +// +// MainTabView.swift +// Coordinator +// +// Main tab view with NavigationStack per tab, profile sheet, and toast overlay +// + +import SwiftUI + +import FunCore +import FunModel +import FunUI +import FunViewModel + +struct MainTabView: View { + @ObservedObject var coordinator: AppCoordinator + + var body: some View { + TabView(selection: $coordinator.selectedTab) { + homeTab + itemsTab + settingsTab + } + .sheet(isPresented: $coordinator.isProfilePresented) { + NavigationStack { + ProfileTabContent(coordinator: coordinator) + } + } + .overlay(alignment: .top) { + if let toast = coordinator.activeToast { + ToastView( + message: toast.message, + type: toast.type, + onDismiss: { coordinator.dismissToast() } + ) + } + } + } + + // MARK: - Tabs + + private var homeTab: some View { + NavigationStack(path: $coordinator.homePath) { + HomeTabContent(coordinator: coordinator) + .navigationDestination(for: FeaturedItem.self) { item in + DetailTabContent(item: item) + } + } + .tabItem { + Label(L10n.Tabs.home, systemImage: "house") + } + .tag(TabIndex.home) + .accessibilityIdentifier(AccessibilityID.Tabs.home) + } + + private var itemsTab: some View { + NavigationStack(path: $coordinator.itemsPath) { + ItemsTabContent(coordinator: coordinator) + .navigationDestination(for: FeaturedItem.self) { item in + DetailTabContent(item: item) + } + } + .tabItem { + Label(L10n.Tabs.items, systemImage: "list.bullet") + } + .tag(TabIndex.items) + .accessibilityIdentifier(AccessibilityID.Tabs.items) + } + + private var settingsTab: some View { + NavigationStack(path: $coordinator.settingsPath) { + SettingsTabContent() + } + .tabItem { + Label(L10n.Tabs.settings, systemImage: "gearshape") + } + .tag(TabIndex.settings) + .accessibilityIdentifier(AccessibilityID.Tabs.settings) + } +} + +// MARK: - Tab Content Views + +/// Wrapper that creates HomeViewModel with navigation closures wired to coordinator +struct HomeTabContent: View { + let coordinator: AppCoordinator + @StateObject private var viewModel = HomeViewModel() + + var body: some View { + HomeView(viewModel: viewModel) + .task { + viewModel.onShowDetail = { [weak coordinator] item in + coordinator?.homePath.append(item) + } + viewModel.onShowProfile = { [weak coordinator] in + coordinator?.isProfilePresented = true + } + } + } +} + +/// Wrapper that creates ItemsViewModel with navigation closures wired to coordinator +struct ItemsTabContent: View { + let coordinator: AppCoordinator + @StateObject private var viewModel = ItemsViewModel() + + var body: some View { + ItemsView(viewModel: viewModel) + .task { + viewModel.onShowDetail = { [weak coordinator] item in + coordinator?.itemsPath.append(item) + } + } + } +} + +/// Wrapper that creates SettingsViewModel +struct SettingsTabContent: View { + @StateObject private var viewModel = SettingsViewModel() + + var body: some View { + SettingsView(viewModel: viewModel) + } +} + +/// Wrapper that creates DetailViewModel for a pushed item +struct DetailTabContent: View { + @StateObject private var viewModel: DetailViewModel + + init(item: FeaturedItem) { + _viewModel = StateObject(wrappedValue: DetailViewModel(item: item)) + } + + var body: some View { + DetailView(viewModel: viewModel) + } +} + +/// Wrapper that creates ProfileViewModel with navigation closures +struct ProfileTabContent: View { + let coordinator: AppCoordinator + @StateObject private var viewModel = ProfileViewModel() + + var body: some View { + ProfileView(viewModel: viewModel) + .task { + viewModel.onDismiss = { [weak coordinator] in + coordinator?.isProfilePresented = false + } + viewModel.onLogout = { [weak coordinator] in + coordinator?.isProfilePresented = false + coordinator?.transitionToLoginFlow() + } + viewModel.onGoToItems = { [weak coordinator] in + coordinator?.isProfilePresented = false + coordinator?.selectedTab = .items + } + } + } +} + +/// Wrapper that creates LoginViewModel with login success closure +struct LoginTabContent: View { + let coordinator: AppCoordinator + @StateObject private var viewModel = LoginViewModel() + + var body: some View { + LoginView(viewModel: viewModel) + .task { + viewModel.onLoginSuccess = { [weak coordinator] in + coordinator?.transitionToMainFlow() + } + } + } +} diff --git a/Core/Package.swift b/Core/Package.swift index 1344aae9..e61a8491 100644 --- a/Core/Package.swift +++ b/Core/Package.swift @@ -5,8 +5,8 @@ let package = Package( name: "Core", defaultLocalization: "en", platforms: [ - .iOS(.v15), - .macCatalyst(.v15), + .iOS(.v16), + .macCatalyst(.v16), ], products: [ .library(name: "FunCore", targets: ["FunCore"]), diff --git a/FunApp/FunApp.xcodeproj/project.pbxproj b/FunApp/FunApp.xcodeproj/project.pbxproj index 6ec90b4b..e68fe133 100644 --- a/FunApp/FunApp.xcodeproj/project.pbxproj +++ b/FunApp/FunApp.xcodeproj/project.pbxproj @@ -229,7 +229,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 2.1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.charles.wang.FunApp; + PRODUCT_BUNDLE_IDENTIFIER = com.charles.wang.FunApp.swiftui; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_APPROACHABLE_CONCURRENCY = YES; @@ -260,7 +260,7 @@ "@executable_path/Frameworks", ); MARKETING_VERSION = 2.1.0; - PRODUCT_BUNDLE_IDENTIFIER = com.charles.wang.FunApp; + PRODUCT_BUNDLE_IDENTIFIER = com.charles.wang.FunApp.swiftui; PRODUCT_NAME = "$(TARGET_NAME)"; STRING_CATALOG_GENERATE_SYMBOLS = YES; SWIFT_APPROACHABLE_CONCURRENCY = YES; @@ -324,7 +324,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = INCLUDE_SOURCE; MTL_FAST_MATH = YES; @@ -381,7 +381,7 @@ GCC_WARN_UNINITIALIZED_AUTOS = YES_AGGRESSIVE; GCC_WARN_UNUSED_FUNCTION = YES; GCC_WARN_UNUSED_VARIABLE = YES; - IPHONEOS_DEPLOYMENT_TARGET = 15.0; + IPHONEOS_DEPLOYMENT_TARGET = 16.0; LOCALIZATION_PREFERS_STRING_CATALOGS = YES; MTL_ENABLE_DEBUG_INFO = NO; MTL_FAST_MATH = YES; diff --git a/FunApp/FunApp/AppDelegate.swift b/FunApp/FunApp/AppDelegate.swift deleted file mode 100644 index c3e36204..00000000 --- a/FunApp/FunApp/AppDelegate.swift +++ /dev/null @@ -1,11 +0,0 @@ -// -// AppDelegate.swift -// FunApp -// - -import UIKit - -@main -class AppDelegate: UIResponder, UIApplicationDelegate { - // Intentionally empty — all app lifecycle is handled by SceneDelegate -} diff --git a/FunApp/FunApp/Assets.xcassets/AppIcon.appiconset/AppIcon.png b/FunApp/FunApp/Assets.xcassets/AppIcon.appiconset/AppIcon.png index 17a6a831f900c6f402496e8fd41be4660ae485d7..2b570b9594935680d459af61ada2189a24cc3302 100644 GIT binary patch literal 99932 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%0AamIsRz@tS4kf2e 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ⅅiP+WrmzH@b{Aqih$HlCtxF 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

Aevui&__rmE4NvT z8k}3a43iBHYINiU+)q(7s@b_6tr(5f7P5Thay&cZ1p@Ok6XL(yo%e?nbP4r656Vd$ zHpFS`8KCDHMQ+S9D7qqxeG%1T>O5Q2f)J6i@)7m7VWz4z12~Xi7f3bdXy4X-8QSw==L{_BO#Efj`$QD=9{-%Y!XzZeUHw9B)m$o%J^z4r6LClVg)V7sRThU=1}ST0Z{z@>wfKNn~qENyk9-?q|N(Ui(6Kt^bKIY#lg)4 zJjmK_Oq>Ej{?In&sc&V0l1WKT_l;4(6uoq*erekwH&o|DqyBR?mFH!yNWm6?d`yDu zn68+=z}w$cm->zE)CshEDym4!ZL{;om^X!5bTxH%@oFA^PC)ZD*tf-{!kcRb*J-{Jw5GiVb=}oAxLu&8lnvT zJlkqVfw}Sgrg8;oVXTIKeTd7w1)HQl+gVyR!}%uT>b#qJ&x3KkVJ(yqd>AhpEHA=S1WBr; zlCV(=JzaeCZEs$^3{sZwTuGh(xB%fk#0Mno`0jj*pQ-A9^?%&7yAKdPgN!Ov(SubA z_f|%p!uIEubESjm$R*Nc3Tl|3$=!n9X{knj9+&-pEmH8gbG2nRGpn8=l-ZGf?sNJ8 z!qrCp1VqTONKX1a{mO?+^m?*x@j<4Az*(h@aANgMu}+2wpSnN=X7^)jc0S%jd~%T( zK!08+i{Is+qwKn_{6cruQyWyiRpwTKtj)YbDhEb)eP@ocWkgQd8CnZq{@*av#vqJ2 z%c*@xdV{)R%ZQ#1o?T*-oP_is}?Nm0Oz;BkH{Z7_>R}-+6=&S9Q zKmZK?vAe*B4p0``?Mkd9z~G;8)13MGo^kNLaEDA4aFZy4hr0g#5TMTNP=+2_e@)P# zoGSjpAd@YIY59rkSe7yzTDd<)qHNmgXKMKMfb$kBED+xy5Z4%TYfZ#q58fZfIX9x# zPQ4~iL?4_m+I!RX*55S_Fa<%Xq>fFzS(WOqswWe4_2eO1(@69^kiKKraZ1VJbs-{) zAO)jfu(uj&QB($7qYC>6Vg4c?9B`hu!--< zyAdT;a!Q=vAC3BtGxq|SWl&D;x`8q2Kc8(tSHNNoLOuh^;Wstp%)%~ILENx>5o$$( z_aS~@_m9*>!{pO{)(-E$`bt?7+4t?LIe&vZ=u2GdK8Lv`di2qGpFwofDy4KC&k#Nb zZ7}!os-wx62lR5l9suA7hDE1yeQ~s>Fi!39VDOui>p)Kne!i(6fWvvY(DO?h^~<{J z&Qg6a8Ag$mj!Jz_eIEumiX=dQJIlo5AyVNgq`49GwZ{T@Ws;IUR0z7x$pRp&;pTUEYh&Xp6N=h}#-L6A^+qgVra~CrWU*K?N@Fyt2qnl&`Gdt za%mO88}svWSb>iv!I=NsgC6g)Sv@q?+SCKSSK#^S8xINJ+dZrdQ0x$8C`~KYdZ$9`Lz-whe8tw(G8qmiiVLa1G8YRT84A^v%NyZ@L892=+44X5r90q-IX(GhH1nzOX z`iA4lVQ4GVaOzSz*p;-r{q+@xS)2u12w>vDtj2A@RL4jD(pD3)@4018XX`0gs;xH> zNShIBE!CS?q34_JIG^AoXhTz`5u40S(F8*di(GRA;$zc-Uc`(_QGCx^M2O#DoozRO z9lY@o@}iu^JoiZ+Dam`LWEIuaat3r_CH^lEQb>-YLSBI6{0n@Z9^5$8CHm93_ zW4=QcdMECb5CIjga*nL)(oc?DEh$JPpeMPi8SvyT#}jQ~b(TaKgbiQI|2!}szRMY$ zAxzZCBQ5xxp=7Go3}*F6qsWVwQUA8?WOem@yo2!jzFCE@IHh6u>3Ysiux9|BMBXXS z?Kg^Dg!c0q<@OXZvMT1vEMD|wIi+PWwcU52i z1^8Xwj-&+vlTf3p^ICB`)#%HS#Zy+2I{|Jeg9^w^0<>;$S#p5Jy|Cs_PoKyb*4K3J z#45`xDQc@&0oJN;H$TSUS{Q3xagKS z`+Jp^JghmYINC{#2L3P*-mXf#KLPArfv4uzUAU30RT@*{{w^Ta#_mkm_``Kz3*eK@ zY^V@AYM__LtFbno*X>2OvomA>BAtYJIsu%!oA?dSwanGgj`Sl!Rs;;L1=xZN>G3ZNiF%|R)G6*%$LG3WyKf3pIrHo;0mG4_X zo@avlmD8_srm{!`55D_}9avp;bljP`>3Ddf-*KoGI$U?0kLbq=T*d za-zY}zJG8z&(VUe#d!KnuLbba8wTn|ES=dfzIj6SdF!w<7VZZ+i-D;(0#3aP=LKu9 zzLvPg8Ir8Wa?J{X(O8)IF4EiykUc{>Q_V~(9RsE3Pfe)4#yfv*T}xDPM}`>uk;Q3A z(pzx%%7C^ir~~a@Ado*u#zXYuwWR!#9=Y0Sv}2z>t>YF5PKNg}Q_tIrMS5F+mjx10?l_-;{CNM7S#iWv9@4118MyNW ze_mq=R-TxqK}fJZFOy&6B{UfF-vvgr`m7SDz>z>25h*~b>i2?Ae{?Z^@&1Z2s=nN` z<2m9NLr!md5bZ;D)-0QTF^wS^qy>H|^8y{*DcY<0_OfYOJqO@@M|Mb$X(&O;CWQe{ z?=Rcs^R9&8!A4j7PoLt?CqM2%&?4&DA54fD3Ln`yN$VE@P}8r70$=P7CtajUj3xg~ znwY683237S-er4UlZ0q)!@KcE2Lk1it?Vno0kz?Tt#%F)?!Nd}Yh%h9t%9odkern$ zRz*F&4XJO->Jco#4ui}^&prU9Y@2#h!Ug)93p6#S{tK-dg&M^+GC}>m%v6pZwb`hU ze6@|E_q(F}{D)_76B}wLRrhrX>%%Qq>TPxREF0#R`_8j0_=FWZN3l-ObzrXXQaaEk zV&MvSId?*DBk+*}e`(0V>L4e?n8Wl9FT<8zhah{ZS2!h>)6%SHGY-(HEs=YODVths zJW4B20TG(&T#tX;H9|#!((F-+kr)NGR|{7VZB+m4zs)x;4&_6`D<6_|*`)gjP2@Sx zpE2jvJj8M*d{wNsK$B4cE}^_#v$>Ug@B;%DdnuW-7ejZ76>HaE0TWA@*c`s-K4Fj z2*q~bdk-gaxTL`7tQuTQ;bAb!nz*#S-kPN%DMxK+LfK5iB`L>YN5t?jeoupX`m0Hb ze;Sdu^mMqrZr;Qk(@9}{|Gs8&*=YaW3AQg=eI!)bOEQ}M3=j=+&5(Z7`G0Z#GeCsi z^9%m{NgN3On~nH6*(6~w21|5OyzK418>AZ67d}V?ycm#E+{MvLuc|!$LlVBLXh_cektq#( zBJU}IKpJ_nuc=?rHN9%=$q$DwNvVon0fVA zT8)@llEk;|%&$=dX$$nHRVwyk{~*FA4RvMtb>Z(p3uGC&Dt7-gw2}CVGdLJ?On{3eC5&i96RlecoQl#0$+n066t$z?!$yK}Xdif{}Vc}L1 zUfF7f)Dn@!d|3@n-gLX&N-OZSHgW=cgox2ycHCBI;Q`-wqb=fwS~#}2cC9rl@-=vz zOLoTs}TT6zAEoc1InW&Fr?}LLTsr58NmB+Rv?f)Tf|W z4RAu>R(iBRKK+zgV)h=?x49I|O{yU!$;oYVRu@ z)97UjkVzV|8Y`aHTV*Bb>ZAbfFWB4ZI%nb%=BXX7LptZ=cYYAkF7jkuOo2RwlicPN zBQpH&svTXuBcf^&T;^k>HhE8-+4a19r-f-ZD`g~v=b0oA@n>GiHTYayGW!UaYe^Zl|7c+xK>dtqLx+Q@9mCzWdXLX5b9iPhx;we@ zY6*m&1F;8FJ3AfuasjMEGT`@k*5uqNjpI*cXRJD}OTu;|Z29|rmVlALk|DBfpAXD^ z$5DW@WNRS(MqY1j%oa8-m5YW$&rAyg*iIJOZaxO4(5(Cqip`JIr(Jv&%$yzDS-n}) zM@KSuC=%Wax&m$-8Io+{|@ndn+E2%&3^vnB9SZOJPJAQ39ba)bR2nDLD8OH`$rofu6*JC#XC5gC_+yQ5=)j%fj`^)zWWf69d9Ux8An*jz05=rTx5s zj5^%x&kgmoS|0)ib9T#=UaT=chzc}_iA*P49IOprNCt44dIDzNzS99o=KV62_;vKSqbTmPltYHL0Y`V#Aaa3dmP3( zx*coIk7Sh}=FD>#0!uiwvnThS%!D3oXp<0X=6cGUkuo6D1DVH{?0=bOxb|7aHkKJ9C$6pu&-okWv`KHZaG8w(&N96wm_Q}4ZqIhNg%WdUtF~EBzU;ilq zKuz}dzQi-sSMt++Cv0uO0n(K<6aL?2dfgx&dO2WcbN^w>KMtSU%b*t?lA=+m8DZdH z*m7bWg|6;!tkr(^(_a#in|Rt0-tAZpYYMpw8&bH#+{Ut)ow zEvXxSPPpO~in_|XPDvRU-fHpl)Tj~+fjX9R9#Ai1xmBJ%U>yOWeXG@3^V9!p7IFPJ z>O^wCMosHwBh!7YKfbnp=#W5|@+~#qCxS~{V6(I_Bc-3bmWlW9u<@WFO+h<8+JWX6 zYv?-7fl1Jx^ER3$3@t%5e{V4=(ZzI0eGj?cYGI~%|MMOS9NtgX1?O^+=`HhyDzPh7(9}`I?QBu zqR{QsrO%xvd)=n7lB5j|8@n3Zg{k)BQ5hScR}G#Wrv&3rc?~Q>0b=jbiH-o0O_zAc zLHs{Qeb3J`HSc)lMjj#pWc@Z8GSo6QO~yOc&w7qq^g3C8nb26ZD;OIIhl(;bJvzv` z(r_ruN!>Jj{pKBnh?wRhexYYk2Ai~0f4c2z5&^Z;yKq&0Hi4j+h>!Z-#ddEYEWnET zp5RDNG7#e@JFX&*u785`K!;UIXC`(4YclWLb-|5%0J%t*QjH4ee!2I|-DDr*seMk{ zyF63CMaoc$<&PQH+&~*^D>V+7nOz@(kRJ?Vi9*_x=nXBgfSJZ0G zQl>;t$GMrvbGXt;20;RviYjD4rqAs7)hiz(>Q8^u7)R)rfQ5ErD?pzKT-))yx3sXb z(pmjo3@)N7u!bLZ! zXEhF2(m2^vR+{qiwkqoxMr-srUS^s6EuAckn@E`br`!{;pA={mSclq>9f0$|TyUOL zy)b!dH6d)MAWK-M4hI}7ukhQrqu?9@k%Q;J8LLw|3gQP3rT$1@Bbp?xz}=0g^b^#4 zj&|_J^^USk+@9A_Ab;>fGyz?G$iht(6Gx$)nLbP0HobHwn3phM_lxs;XZV{PEG%<8 zsk2vX*TBaJlP$XFFP%^f1pLY`^Usw<%yW7{C`Jit>QsB{^dPMe*iFOvSM^{Gy!9Dd zFker8ee&OrITOG3J9mD;0VvZjWm7j19E;uxF#q$yRibn&5=s}>NZ50scu^s-c$TFX z%^+9IY0`c_K{QwB$J{`5!P(R>{51ZoJLIVoP*{fBe_Dv4m&O^%P+5Rz%yL>Bo`OY{ z0p}%w1M+xZmgA=#leJz#T@RTG%E`voAqCFeb`5e45`X2V`Cb0eKI~87g(_(OIG^P!I&KOu7XeUDaF`M?;80HQhO{iA1 z_+J0$|ER#1iUZ`t6c0Cc?LVOiD#kMAu)Nt@CRh;k?2Qs6&I6{2%qZYIw-Jslpi`wb z`Q`eJ`kW5ZXG5NuT%T_pq350#--)9Y^$zX1744f)+3 zHHbs(GC!F$uyGy{Lecsk&A5f5V8^|4;P(^$?Fm-dbpI0s=FEN%dgK;7us#y(-2irq zaUe?>=#rY{PTX(*C64PZDBl99dm9k-`q7_@Xm1e@%u|lp(Pa2m_ucS&zm@aR%Am^r zp<%>u8eT2fRH#plNePv&NJYu-9x|Xh|7A{Wnz#F|Fry%3U-m7bu9#t@Mp_N3N~ZiD z;X~jJuxl87FuhA6fFwb2W;Q#WM#YpM~N>y}Qa&Df|Ck zzaBGa3vikbPJ2<4Uj&KVE&o5iJ3zy$ch0dfzx6$c7e{sBEn@;N$>vgKBG1(l^?%&2OGg~Wa*m^eUtY<0n-*CIBG*ha@%kuVoW!4> z@LQ<;Ec&gW5q$zNP{zDdaLan(_s>fBv?>txnDK(+bDIThaQikp7X#V_j9Sk(KE~B~ zI~$GU`K$rgFT4&8@23LDC{|pkmhL*}{k}|T7+@cb0ozP30|VWItPg?ytRRw@e5|!h z@tjpMFnsZq(JdS{jLUJ%Z>j2q0#c*{k!ukPzw(W2^X**O?*R-{LOP+y5JB1)o1;Vl zh#C1R=pUZTGl~)(9Pw4AvA1ceqK+`M3W$QQnZi+aNhWe4u6H-oWJmfU>z~qO&44)s z&^Eb#`Vk-zOw5@Q>;W5sc0hkZ^_!Bu&Zk#B04ZQAoaFA_Y-uN_gYe!*CU7feu1zSI zlNI?K22@_aOCz~YbrMilEJ*4C2PaMBBK{iNUlWFqh=LwJjJmBRV$#nWIx-71N)~S~ zW;i;5H>L~?EJ*}=*YfMTov3A0yB)h?!?I@p_kgUcYW1xb4GT@#=)eQ6>xCCf6GdBz6$`11bYG~Jtx!nz*YfwN1EzY3jD zg$GJ9FUA}E-O3b#V_A-iMNqyj-|W*gW?ypcFUhjogGZ%WtI6#WgazyQ} z7%gjL^mM_zeLX*ff3jhdu~OC7@_Q1%qH>q#;cVLVeYw6zQ2mM!R*#Uw5>-}Mrt;oq zU{dV&(PzrdtksAesMm*bCPxgZS@SXGlv ze0ewClxyffZHcpR;}@SFg=*JK0KL$m>aiN_`p&X=7RLp!1#ShdS@Pc1R)<&{h1lJY zx43TyyqzVJF?63a-`2B4-VVGuza|KOir7xs%kh6|06E9kYgBUWb#BhQ-s=2}EI{C`J%$NGm9uNiJD zsA~3CE*yK-vW#<88F`F9f{umEV{8pw$hG&glRvOH74~2zvTa9yGsEeGp`NzT z!M4qAv_Opj)GeN4wLxJ}6n6jc1Z$zES5E&6vm5P!9S=}7mP@{Yt(hPmHP9NuZaQYV zeJm>!_Uv;$VGKe|V{823xnb&8$=_L7wsmm5x>6BL%14r@YUUh8Z9|GH?_ZQl1K@3^dAtdhHtky|;j%@8-!EkurSrF`O zW-!khhQ6^_c7a|z=;bJU{-t0}UgDQM;M+nj&3F4p6Z?_ao!}$$EX*;%Z%W>KX}X#dG6jeXd|k9 zyAiO^qV0+LU4;3f6>iZD!X+4!1?TgRe8cAd$0-Y=U(9YY|Fj%b15*pDtDRM&2HKT6_J$84InSb|`V2^E5TNCaYtl&XBuQ#7V0o(I2PWHb2k` zO31);r<)yxFs#WaS^yX-0697<{!s>rrPv0%iR}#JyqWo02<3&Z+0UqB;p?ikmy;L0 zJJ#7Sz?!t>yzY+7_I6Z9cP@s+FS_q>0G#k8bL8jkU#%k-@w8)Fkt4*od$qi^=PDHU zFLC}g<|ZPLuh($g@J3@vWIu1j>>2NBDUs~}t^6wWUTjHp$6=+ckuOa@_Z#R@q!0k# z7^JB=egvjb4X)+b>!YWmhN zqiv3(WCp7XsK1sBz^kbt{2MlOc7!kO+*nC~B@Ve3!6h$Eik1P}+Mj)2f8u(5!Hg2l z*<#|<9z68!E%eVUGk5}b#2&Z~G@r5vyfhq^7rUN0-9jPZdydZ@VqV$|lryi|fHVAA zH+U~!o3L5DLh*QXJt@TeVG^wk`WO_6`EX^{fVA(3VPDc4_UDdQ2Zv_NPDY zTMwc(|L;v)UEuhxW4I~Bq$ewz@b(Kz7F*%VQk9^MIyR+o_1MJlEQxzkg7LENJIkf@ z#?IK!sgTWgGVY^*r50*#!V|Q(K&v}?@d0=qpE79%>7k`RH(!#-W#|6V$F-q$xs$R= zl%IvN!Ts&kgX1Uz&z`HH%{A~tM1Ye{Z>Vb1IX9F zp5eR#^k$1z{l|K3OjmyJt9M3p_wNU0zr>X=uZZ+Z-92GJ+74~OFFwAem`2i&gr=cN zO<{g9kYW4>inO)3@a-o?s67o8r2(Bhu zc)fN}`zANroc1-@*=l)8W0 zVruVtGN3^c>m0Cc@~lvCNKTzV`|!q%?RD7w$fw@pfkWr+{#PRmN2#Ya^SLS_G8WI- zO@oJ&va`AcyTd1t>pLfa&eI>0WH*ht9AIs6EkLz7U}Bf*eOJ%g(}8z~bKRZ|PhR3> zCxki+>-Ji+IL2rGD1MOJgF(YdfEs*;25%=WL**aU9JyKiPhz%OC?9^~YTy<3pH@I4 z^WIQ~rzg&BPXs>50_Yrzvh+dQ>!25$cBM3v2yb}j(pvYFi` zKaW`)y#d`usS}=%`UR#u!g6|sWXF?-z1B*bfj^mbG6cJb)7C9`H_|3%a}j*fYv$G+ z4|UqXS4`F^M99pyJys92MBKQ$3ve%#pcV^Zcn?vKAT=n9(}X?;bj*b81E~8g{HJtD zoPskrx1OA^jFa^CrTxb&F2w^l?;p-j;qZS!n!FiH_!0R-bZ|J=VUm+p(FI<+c?bFy zhXn4mWW}jBX&cn3>m#$)x6*D(0>;4DKb))2BC^hj0sOWvjN@4a>{3=!fB!cwc~vD| zN^xIhJxq?4zrvb3oSY(MCAf!cLZIB$yl5#%Bp+3sPWZ z{``zMkogZGD7Af1-isOIz(|!I7)Y%kHPS)QBtZOb9sUTY=e;L+rSBdLS|6;Bxs_HJ zvtXUWi9F*Gc)IyzPK5I$dYTk21P88@q${*njy-CzPw|`gr9*EuZkVFMG&+?p`v^AcN|aZhB}Ylg$h}|Ej{csV`r7cIz1ZE)Z8}Jc zNE%L%UvK{i2Sp-^VEz4_cYosmU|RqjqA>4{NgG8LJP_R+^(xZEVCB3IoZ3(#3Eb<2 z%#y~ndXSCk!3=e9&JX079fOahj9`WI`yVtI#d~jSUfPwr500-@MjG)ltVu*ITd}n=_1_)y!=2~7|GK8tZ%LZD_X=?mW1>d`)F%1$AaYwrj zfK?s$4!z54@AkpK&zOADNcuz<_?ULpfy#S?u$_+x_8F@xC30_z}-hb;UA8_ z^8_myC5-{$Gvxqp=BI|mN|)MGN0q|j{`s}BSI~EvraK-AqEpf)|hIDCg(=K%-)3+0PRSiYyWP>!|CEss&i&K)VzMzotNKwF>r1k%ZT z^$46J2hRJ{v7&JHxGwqixVWL^uamoKZ3{yR@Ve+<#8y^Z&^Gj7 zc^$T>U;OL*L|A4#R?Nay#bAX7$2CT8w*xb?3PU6=;thc1?$Bh$9)m`aBkH5ssXxvG zzqG~_%#Ps;VH}3RyKw_U%%Jkol^5~#`JgGxH9_V)3wtWBw->w>FHV<#BEvw6c1m2? z4(W1K-{Y!t;OOT)%DI1vN-A?_85Iih^ped%AP}=Z5&5wE3D_$O^=_;gokE-4GynATd;DBwLH}^{lk%Y6zy2gpDPJiAG3L!3f1^}@`9dDY+o*aFNK5EW0YD%- zIw2%fyVO@NwUcJWk%lV0h4%5(Vmpv@{bA_e1s&RdhtScn0iPJv{m3VfDKFvG$MF`i zpSz4(=P;@Qojdkd0m z{cYT=)ZSIU1_#Zy)9!7p?9>8L3OL$4N)f|1dHRSK{+@*je}-I>GT1*hLwQ9<0s@6# z#pv4u0gg459N}QMN9~2GfPd z(WF46L?tll@IQuJq?|o!Jlm09MRg6pEaQB2$093wywI|SOwlHgDxaqt&WVA26nGCn7PT8+CH-{h)TasHXn zF2;garrtAVLRn9U(T+ovfAP)ud;ZMNE^UGggZ9JwqeSTFF~=+v zIGw#T`%uC4V(!TK(S7b1(|Jl5@5BVW`v}pK&cx^bwm8qC0DMHY?x$cpp_Tl|da~ja zb&OhdKPd(Gv*6J0-B3VYui6v;n6gBA#eWZvmF}skLh>|crN8jB4g}ph0FDnyWy+== zIuXIdY&Szi%s6C#jP6qwM@!r%)7Cgk3PMB^p~fRC>dR6U_va0}vI=4a$pcqty6is%b=e|2`JW%7I~5ep#Up4Dq2an1}q)u6T6Ia29nj+|@PCE?b7zLGN#$Ot&8NlB zvW!~^kP$lBkOdL!o3kyLLu{w?+<3wk{2{(p&Qq|lvlh3ELJ=OWE5{aD|GGqs%zXO4 z5jT!(w+txj?FSf7x|Dc+cl7@hDEp@62gBsbRlvo&S{@0q7X!3~I0``Od9-FCQ$@Cx zEkkX;vg_}mn?Zk}do5N9hM8Gelt^mVu_Dei*mLaI1(gSda39k3=Z<*%qJofo!#7Ho z?KPbva-P=H+@f+&^g}pXGKsAe0$v+22)yCwvzb++E}L`;uOBr2tT`HS{rY9_T!V}Q zvWdI$V?uyatdkWtA}^JI%p2EyNXpKlo23GkTB_tIypNGAF~w@;Feu8m@E5m&IN!IBozBJ4WaV{^No?0 zHJgSzk~J%TdD%6TtDGAuP*Zx+rsvUld4gmuuqKNHd~nII#=^lDgsj9&QL)oSn#2>( zAA^WB8QxtGisgD#W16AW0l+tbh3H#PaK@f}UGpu$6}>820Gq;D{FOI{2sUn&n5OXH z!(fvD;*NcfBSxSkQYBA0!|7pGnsF1$Pb5kyHDmo_moOPV1K5~`;5tx$0y)TfXG*cY z%cjy9;BMSYd!;@zPOil>wzq`evbc5iLA(Duq#G%#RDWnb4<&aaQ+xj~Y&d>B=<*oH zNUkcRr+2F?P?v`89;Wm&g8dbk-+3j`Jirb7I)BVy{TAe!^WFaMkH>YlV;|q0ebw%G zQyR3BK(bsKr>i9nYT-VljtqS{SGXoI>N^Q-@I2EtHfwfrcp5Y4%zUf3W<+1xMT0g|*RQ>LvZK&Y zZZlXYb*Ba~X`EU+WaQi`p>&wTLp#JT9eY8`&|1YKR{6!m^{-+X$j@a@_{OukzX7ah z-eLE@rCtfcW_WsIDW(nSdD8Cphb*nRJ3<3E9E|Im-HI9LS=Nftrw<;S^R zyCgQ-TN}x@4OZJaobiD{X1JO1pH(5;F1zBA(Bt=D~Ua z!r~RWO1=^#naKfTTGHisSH-zd$0f>}1H>m((hV)5!7WbYE9&nL;Smpk5KjXJoa%v0 zo5nR&*d5tl81ypZVySRLz}99{R3Qfmjq{n|a^1p=-_EHETS{){GuJ{R@~XoXKDmXl z*-zI=YH)0ScQ0Y7{%mr0BiCkTJmhcviKN@CH8w5TJ_Im^^MJ{FE>_3C?h7!1bBV`X z3kQgkmk5Z67^%OqRX;CYpHx?u} z3p1t*HH2vWg;%|FS)T@fHXEgf)&$9l?A`dSy#lm^0vmUd6cEbKn;ZcK#kD;Jd(i3` zZnyr$`>WnhxhW6ld)?`{tBF!dcnde{6727R{*%Lrn6uJ`kmquNXtIe{SHcJSwW>p4 z`v>4^`@_^g`H=O9e*zmx(${22E3U$VR5raoy3Ly&jLN>9|BtCJ4`lj}{~to-s#HX* zlcKCh%CUF1ic$&5u}Y3Ya$9C|R8pdHEIHOKIaU;58Hu@93CXcJ=WLr9+wAzgR^QL} z`}?CmwC#PoUeDL_`FK8_7kXEr>#7HF+r{PY7!(LM2a;&XYD_cPVc*=pQ}*O8U>Lim2@=p2S6A;2;TQE81{;4P^yj|aTRaah`RuM8 zK=1{n1~alWGb|9$aJIU8R?Lyk&4oEH9teYfjtcGSD1#J(FsqzQy#H#D7@%>F+=vd| z=Drl98r%);jtk!g=>Ma_qxV}~vOkJs&-GdUW|H48Yz3$c^v~kmzXXcxI2oXJvVA@O zTx{0eaL?5Y(~Yp;rsVH+RGgywHGN#sq+r0La$x$J8%S5$?@p!S#r=zE72?og!v(3S z${QwFv3~dHT863h8!Va17qPCnOjQFeYm~P{ry0KdHh}^;&n?DGoh#wYO1w|^m8|a6 zg|Hb#T-@>g_tuQ;q%X}NS6Z4L7R#?yZh?<#l0*pMb`pO@?6>_-v{r*l-R1>et#vX` z7hVJDdISffU2!L62qW8keDrqooadO{x96ar9eC!N$$ov?sePu~dTmUAfgJe(?goUh zWi8AinvV-|GU*$onz1H-=OA-!uZz8m(DQiaaJCt%l1scco1a9LPA*6qqHLCo%^-H& zEz-k^d(lh(1U!_y9^@P-RP>4b*CCRs%CXKL`eN-w`8cQMet$V`Kqh*(*6%RaN3

qiGkHUAW{){guF@NuK_Dy$1Nd(cKGW@Zta&pEH@p;MFR4JNtOQKJQ{# zaH(svtW#`^J_gu#_AKj1YS7+&4gf^86h2o{;W}zS>H$e`=KLAjj(evUq|I?}@e+21 zHW$<9#|g;Qg!g~oPtLxITp1-{-V$V!Co)wSzB%&CTFKk_rE<%3U-D!U&daNR?L9`i zgnu?G|Ml7~hLF!dC08#LFN8D;D;?c+5(DR?LYe1rA?XKnYs1R zJ_?1i!mjjiqJy=2`0z*=@1nT8_^KZAgU;VvRWPwp>eW6@;9Xj=W!L!!sKk3jmj@*Z z{zoQ7)4rnzV?jGylZ|i#Igr#AnyqfKJYY4QdmOzhS&#!!w$&^UtX?le;6Sk@gceW! z+Q27OVb+cf%#KO|mOeKc+Hne+brvvQxumdI%LK7MeIh%<&V$sLSp6a6tWI7<qF_%3(-3X6avgVSm}e;$K@8e)rK>Y%XHp2Ieh=)ZEt zIyD^oU>Iw{=Wmz&%*TMnwcNY#_6^vOn@+k2Ln$4{nFj$LJ4%t3kMgSALp;>am`h#L z8{Ext^Vw+}Gc9J(XX6?H-~OFE;j{CUT22meSdDiL#4pjou2nxrHB+3nN03`pfiP~L zA!3M4O;-WL4;omZ)dP>AhHW+n{U&@i)!wvLJ|45(`pg2zE7E|28lc}_?fjnRt$^zO z1TnxF4ueC-^HLVBMeItrJD0`wW}hQLA4**Fin6~(LI%Uf!#6G)r?9Wo7nRTdMQL+b1e80 zNstb}8oyDs0(X#a2^cYHzsaUbfBvK2Gu<}4gA3lbIgD>_(r_2bttuHmt@i8)a0OjZ zJ*wgDP&khBn3TU3G+C#nK}%8P=QJ$@+E+(jymw&JEO39aI$JE9hrRXK<|V+44! zO9nu#-=d}9u)+@m_k6j(08mFvfRg+XuE9#^dt1&O!Wk?7X2wos+&)RmXUsc7N4nGb z?9FHQKJd-D6ZK4W4QTwi8Y&L_mO|WBWWfqLtAVA6$K%-O&kr;b&z474e@mSap5v@($%I2?4Z`Km@|p)36Fvf z<@4~&@W%JEqxS42!U3Ur_R6wt`Gz>e)908xwjuA^ydkg;{ez0Fxke1)BXWop4q>i} zfb7Rhob-1bzkjcYq*%wZKx}A-#-@(*o-K!&b&Gq@@D_! zHLK;#Ul&+4`{e<~=f|z`r5my}&Rql{fWM*UXBw@9-DLz(y~oM46}Wea^S6P4c+F!w zZMxaSFS%aaz6kn^`ySp zRkQl#QY&>&2L|+xeC)dbK()PVF_^l;a0z8JGsz@1;4TW(yBrdRv;YkZ3bhx^8+QxP z-66Jv9vsvEGS@U8Lp>k)r|mqOIkKpapPD9};)ksME4c<^t1^rFSovIPK_azE;a%bH zB+ye6#o+Cnc6#)eQ_P*yG?|&n8}kvkz%UZ0HPBm~g>RYQY+Ph}aCf{@k&=mkeaaI) zbE>CZlR0<(p!W-U88Lx+ai|4MC;~$p$Ar|PU$v6kS(4Lyh0v`^ppxl!JxBrpiG?7h zUh=vEOZ0$U@QGWg>+d%Vc-+#J(3{HP?XdNd%B&RA8Mj4b2#mf1`CC$xFr4gF7c^r2 ze}f6v@5+<*$tyhL>pEAV)UT>gvhD)+yg6VzLE}5S&Ce89fv$T$&JPuLZDhY87spS} zeJ;IA9Cv=i1U039ulP4x-vI@w^P}oOoqU+l8S$`zpg)Q<`m9v0^&bS0PSOn$y|F*z zx^2xzxSp_9ic3mjgcrSU6P0Cci&}Xvkm0HEgwDv zZm8MrCu(0{x~1Hr!tE{1*4jmUk^|4|0}q_##YX6LcsTHpu%&CvAd<8z)n%k04SnuJwk zLAbq@pBt!+sNbxZ+B!%5mevJIV+4*ai!Bpdz2T$Fjn%|3G5XO?C9=Pyt>4o}1(PC} z0sZ>t*Ka>nrd<0+X}9rzNtKSE!fr7=kqX<%ae`H-K?tnLodp>AXk? zxatR7j9=^_$59o4hgp+zRQzRn*)%F;?yCkB#zK%n@53so(|`jkAF}=fzX!VhO5^ux zPpsb)2VDe0%8YmB?VHWCpmi5*tHw1ws>toD`Mz%>*1g#YXCpiFg2*YQ>Fhbx+Vv z$oifx-=SBp2TQ0KI}Yslc(OEwvAvLZ57mvnz87Tps14|7H5JE8Cf$as8bt6TM*JQ3|>sQvg zrS{(XB93h7+F5b$vtM)t0JH#CeS$HYnw35bjd(vi21ia2);2hsFoRsCgw2s9ujzfX zZ@1>Pvpr_oObn|OuIEHb3J-|m2c7DZ7OcX=moc}!zEsYfG{&7bO2ygW82kE1r}82) zpebq*0gn8GvIlfcFz4EVeL1vO5zdm|tY`J+!U~~b5#h>XJmimVE*%k3M?vCKxE&y3 zBE|faOb=Fq;gq>&(54pXT@S+`!M4+bHFvOs4Td={aH;aX>P*A0Hsv05TCpq&o4Oey z50pFgZ#N5*Q&4;8IqqXwPLx>NX?0_MoS1=+ z1^FAGaV<|8bgoNIiPFq#CS1GqeArFrQF;0H091TL8PrT;WzI1_Z0I+5FM~iVHhM6< z-?g@8Iy_)(_y`#KEmC?&t)vZr6bz+b=Kc5Igbj>rDIlX9rSX2HI*Kc)V=XB&J1Zp| zU7Dn31)G%6`YZRjrDTU@Q;UMz7O*JVip3Y#?z^y6_RGx&FDsYe*L)wTK7cpU)YwSh zGcmRep%nOd-Nrp77ra)=ACfbv^Q-8@2j5SxUXf<=W7hP9`KEn8Tn{WhV4iIg zj>FHpUZwsHoyeQdbBlDEuAqtS7|nZguSzDe=22AaTtBtnL4K0LTM=E%(eF9jogQ?s z-;8;eK(hUIjh6QDQ158Ddhel*oE7Yt22zpO6YI}OkyY78cow<$n{p?EC{n?&HW8pgQs>AaLI~$olDlQ<_-{b~h zGH%)6(Bendy$Pz9JM(M(w`eW4?Hh=E2$y4N#bBK3}y`{oRp z@j}PKhd24tNLz76*WGsPZQy_E{uo}|zNI_aOKSB-KVeo<4Fs{?!ad97T!({}NUmGdO0!3(4%J zWS`QYdR8xRJ^UYWUQJ9YVi$?lE<9naWH_N>P-WQ5{gW4YQ#+%rA8z+5!Iw7pa;7p~ zR`Iga4$F~|qT%8WJ<`;&IKpjgX*UTy{e-cZ?aR1W`?zy_#XdvyRw|)StT$2+`D(V& zdw$C@amuFcKbqwq{mM+YTOsJ&IQ9Cgz8?$`>S7R3kQkmV(Ia)Att*juX1Ax!B=qa{ z7YsICD*M!>!jm7x~6%Toed*?!P1jNRKs&$@2=^QB$f-!obcOnh%{y_ z)oZ$Ln8=tsm3;(U~rWR7ZL!g|z3$VniA7q1^}7;b6S4GifJ_ z^NspP$uq%%_07(d1FsYXG!dNsbZ2{YAERp@N$`|!tU*`)>b#=?*;cKNn5?WuxRCw3 zNX?S3-YkL1rN=LW0NT+N z!ke@9n@N8j%=3~HAbRFF#ql*EpQ(a9F94(1UX>J=?@`eej0Z^u&Rtzlv%CCpWaR2A zzuk1qhYu-q<8o*7AVtiaBHDcGBdT~E>s~ve8wtwVY7Ua+1=P};@!WtX%$PHQ;^O%v z4t{g!Fu$ldAJ+fJvf7j>o$3lk=4$#>~7WdA}5O1)XnoA`TaN>dtovE5_MCumZS+H<9F;6* z<0K*HaYaN)EZ4gtOxTpu68w2%gZaQc?XJ27N8{LdEDQb<{#ETO71^Vvl}>h-IpyWA zpZH|v?WOMR5jI{{xPJEyi**GxIE6gu-L>s5SX4W%^iLKckD{D(QRG3chd{wvYlYp<7+J9TrPfQ#|)y$8kV!Z9v+*ks)ca6cxzCc(}<6H<(nux^6#Bt@i~zo(Vi>dwM)VbC?P*?CcG z(FGXP%u(#mr({h)yo3q;Wvp++`;tR#Yiuc@ii}o5u~1CUEhPB91AF)0lnc*T2dHIi z{b-Z+y(hhX@!RL+!E=5U<{DTm)fKdM;|jifL|e*VSghoF<@=z}A^^Fv0i}OSNHRQK zqodDi<@)AJ9+S2K(W=3HnM@Y;z7$6jlBCzm?3!E!YgAWGHHoWswz1$4GF4z|q9e2L z;LnBk7(ro&VGtymTBlI;4EtCJ|M^lJ#;6S!4^MqvXPL$c6LMR7m4i^UJrA)3i%s$1k*~y3Xt~Vocv-O#2SM0(F1Ne5v0>vkH!7?o4&P`NhzsdbLr3ONHwf43$&uOM0v| zJUCSx+U@XGy;OFw|70w~7#uPo#SM4a&G!thx~yG|t;BXwqeDgFEI(AU02j(D>|66- z)Z$b(yw?m7rx`J(F$g&vTgBphr=}fUgtCW%H=gTV^vC4|!6XU^Qpg*EK|D125Vml|pb#IHi^p&wc? z9Hn!K#c8(-0!xBV{qA+{eE-f^Q?t!4{U^x9&zN`df$d#8*?c?aFDiczuM2KUpoB#V z8l8aT*+>GN)!j#4>#a5Uv%dT8PP7wcvCxv6vW8QH?imNdY|2aS%^9-aHn&YXKGf%Y zC{BEy<&b^bSdxFWvIb!XjYFYmEYL2Uqfn3qc-IN2XgX@9d{MMpLkIeSiHZaCGN7NU z2(~R$MCn+rpe7pq0~s|J*L+%ZL9^tfwFZOei);+W7XP0QKLx016C=fNtS7OT6j?R?+(@?<-w%M|6%Ul)st$IiX~ z{gqHka$9XVtKE)kDg}48pN9`gKB~h`kUtrr$^!pKJnq0{*d~3qB4LTXQKbZ%(TvPV zrlM4GI7Dd2udG%cZdb=$Cr5?zkT5 zP7ud?-^NQ=;;!XDo)xZ_fyLEaFf=ydnVHFawTCHu(`vT8xI=o86D<#5(KQ#|t;$H+ za4>h(5MLoWLYWRTb4hGwM!-WJKSbl7$t9?60zXt_%dyp`DVQERS6S)1 z_?C>HSc>@3(z+V&@}TxO!iRN?ihSMtF$8HHj-yfIj0ps zMtD?La+NxIbKwzVWqTywKP`G1Zr=(YH%VI~``@C)@Dk=c`tg0`k6;hSG1qrn@xLFx zy!b1!rv=HlKvqO9L^)cAt5}i|Luk+iunc>qL{AWdx`TCm9$Y9qf1%3^Pe%mou3U@KtL4KQ6|Q`pUEA5u!E!HfT|OGUxW62vu)JF6>Qo zrrj&gPwG!5mjSzA!hsjOQ-~B1yGhR9JGsJofqEe1W?r@Yz zW|%0gG11TANn%}RV0Cgnp$jKnd^>$E#V?>KcnX}vM2EsX6LHBcrQ0-9w*@xoG=%8> zh-+*)2q*b=1HHxI5DqMxx=`)LDUZo{(FM#>cT!(Ht{P!YzWh4m0Lc(CUlb62_MPlgoCRTZxb^8AB6vBQ zetwS?mv~*}dBDj26a9a*qY3HQDTqEf?hWb(1TlnUY}oUT#vU1U%h?wICsK_hjdgPh zr1$>atvmg8grB%rq5R%1=U!Yq0An7=w?UF)7~|mGEF z-55MzJ(yzr$O&x1p_u&A3*6~ci|ucFI9;nyVFFLlnZf$f=VFVVYe}_ABhHNX{9#X6 zPP4;qc)2kz`g$x(PSZ&GU!cAw}Gz6!lJB0MB4e%LLp@O#AlOxT>i zb|CRqF$X{G8zJtQ30r9P4=)mT$8|iKv)~`LnkhChQJ`iQyhkIcDRgvXGG;Dtsjz$< z&va6M#S&w&_Baq94PUp<6jU0vQp|%@4>Dp&BJxypqR?@wA+|4wP+6q@~PdbPsV(vRR=>) zxbyjO+^%SFPT%e&@XoHTbjYWvVKqeIqYT_a2 zydEn3LeEPxnVVeiBOZAW!7k&?Yz`E7^#-F|P}@}-R9?ZQQhGWS3Br@CHr{t_yINLH z9%q*_%2862`~qd%LsPf28L7jv3~=bz2ce)bidN@9<7n$r7;61q-*+a>3gvM%dL>HW z-m*gdvQ3VDisb8}pF1!`2Q6W^g29WQGp;0}<@Xg&_3JJ^Dl%+Cp@iSf)5mRD6QpI5 zGA9K=#L2cB2yIzf9u_phU=$9`)^WVMN{_LABB%w~M`6%*(OHTxFb{K{RvkZSttxt> zXICorlHd2^Q*%Mg6^v!}L8gXOqsW691Z%ID{_=z?v#iy!o(FH|pZ)j`KUu`38sX&dh=| za8uFY{Hq ztV`t{=6OXG$*x~qTSGhuRTg}n)@*X=^6DnGFpxmgn9RYikUl(~AJT=1v{14SvNYnw zo(yV-*Kf;?5v%E)4m?6%!ec{3Sxmrdl$#{@GY}aYHk`(O8^LJtuMSwGCQ8!b*?oOQV)q3?{Y)kHzi zSN?qK>)Z9z;n97oaMWLxAL-d9V7OsB)kM3_6D-9mKDG3S5J0$k7Q8FcL$RH(C3EMA zr$@Wa=ls51W?@(#lG@+>ZbL9FwG98~}|TV;^FNcn(^k04%+rb{SG_Z$459MIf(PK5 z;}E0@)T-Vj^jOI3v&A0nm#cPrGm_HmWnQR*M%kJ2L7k4_@fWd9;%C!Ch{KU}wDr>Bu!)XSgh+CX4Yx0Mk;EWT-!8<|))4lG-MNGO%_Ba!C`LZb` zAY{N!*WM_N75h_Z`$)ZB_`b)eD?|erB9=ZaObn98{ z{l$sYW_fCT@gYFCH1MpwQx~7ITa+K+c`u`q9g?frkhlx<%N*f%q~^V)Rmpg}XatQ(v03S?!B-G z_+WTR1J##tzc9uwM`2j$$BzTj4R+%t=liMm|FJEP=w4oGQAc0sqJ|f|n(?HpNrmwD z8!tycR2gdyDbT+mK8VHC*%q(;8rIq~Qsd;iOTNEreCjS zLt84HV4sYYgIpXGE-AZ<*MR38f7B}w%VGBm9J+s?3t*bPSq!ShJyZ35Z+h1=+Apyp zu>Z5N=!c6H$rw=<9+j6cvuhc_R`%ADsS9RDEu-Pb$bOAK6Zyj^xf~tT_~m0p5o1ox zoo%%hI|<@6lf~-vc3xkTq#9ul5hQP_d2+yn90uyfRzx{>c4k-7)|raUb}=L~nF~#V zM@s9DDYDwXQ$zE<_VRjv)M#O5mSU3xo7bRNpC`O?WMPxk4=0IbzQJOjwMZx2s~Ey9 zY`Fm1Ww(9E?4PO_-+Iw2e){Mz- zW>B{D3JroG6IT0AM5+uRhI|fSI@q$)H{_!cHtWUmH249U4r}Sp)&cif+ej4x(5r+gLZ&eIv^MHISO2*%a6Wt`z zBgRX1*QIuv5-JtlBYndU}TqU zLY}A&&nIX_cgf8dB-%MThE{7hE{P_*##S^0m;bv}R_Q6^G1%j$n@ujXscwKjCZ|e( z+aAn<@9x*Gt5>gSvR}vv((%GRuO*AQ&z~oVAFx{9ezkZZpNyT!)8FI_zOa z_iNBHZFV0xfQ4U`c~>U!Cv1UfLH^1;wA zFxYL4V~6&i#a$^40i@34H=Hp!74!Rzm(DFcOQ&Tu-sHnGm$ohkR^r7Ues5S~{>6wt zEu8}?742qflYL9E%dd-z_dC^cXpb2gaUaxcC=Ci%SFtOr+h=*bBPuq-SI$+@q1A+` zQgk0gjY@vG*6hSawkz!bIwJ%IofhrEUNu9A%obELyRP-m;aK02Z_E+41csm9SuC>( ze(G`K+Up0`kzX3-5D7CzGPcQT*cw4&+mR)No~fbWHvNdm&hv||vD7<~&4;-=FxRf{ zmPhJ59$XPEZXJhKV#S~Q7^EhS@oJMHQqGx9lu^O)2%Uz^lV&_Im-CUVf*z0DnOv^R-N)@7@hvy2q9aXZQ5MyL67XP6Id^^+s^m14K^w} ziwxJ<$T6S>=PKY~${wZSevZD!rAEGQ-Q-n?QUa|!f;qG`8t*T|6VH|;Z_Y4qcOBg% zN>&#;ABbrk!TB_Z;}Bc#UBGtPyoK5Sn!ZV@C*8^k9=e%ehBsEbW>HE zRE?xCyHI3J^2&Y$b9ek?fHce8P?X%b2Yal~n!UYNqD&)t!^ep0;vRl+T!5<-m) zsHk|1=Rz8GG^T2}gqebwAWA88lC#?yLg*GN8o?JwJ(=c&}j(TLon2x*@|XfPXUMioq39L?Yc=d@7QUv2Z1E41+1~TIK>=uM>1TLECWIWK^Fk&OfE_@ z3-Cy@R9J?WnGLX1B5arcAac%us@SPkKFoXg>HLo$pm3tf$>HDAf!3ITGers{H*ANc z1Iu|mD{kCchIF)Z5qtbE1`J|%%_sutej-4rk+!NgPMu3He_(P_w&_pXb~yTxO_SNM zgS=fIr#ncO#p$ps=f^ReNp$Zb_{U+sfRVdQ9#U zlF>jN_7BNR>>*O==H`b9|3u?Wv`(On6#HMmLtFB1U`FeGM?&`?Ky6Q@IF3*Roc2+h zHNX;@7D+AxO=Vp+Sy`^3&>i+JXp`nuwrbdx{;CvX-kJ&Tg?$w`ee}qH8*&l$x8Rkh zl-2Jfdp3sSC3iFLmb<5LC~}K5h`uvtYl3rk_mvKL%Qr8ZeoOvRP2C4gJSI*;^nC6M zn5bz2!8K(E&3_@x;rt}8?-NU>l{Jv>)v_gi_J;L-FBOS(_+qn z_b`D4`p8rB%UT6966vUfOmk3ml}#>$V7UXUsyR$qDIxvhCp=?V9{AHs8=V^gLc4*H z?36q|Z*s7>z;|xRf4)H~#ZD_Dye{Be?r4RuEmC}ddf48*YdDG!6$K>mAJu$XS1sz; zz&9$r>lML(k&R!{Nv8snoh_HK^_|82s<`=@O#D&dL#gQp9Pl6Z!Q__AI_HNcugNaf zZkXcemo+=l_$A3TBWv&9*yx^Cu;m@vxvj1lL=u3bWg~iMCX$8ZL_E!=8v7H-W5#i) z5^Tapdh60y|7-D+pC>g3uhm9zinPD{FP-egP9exf>%(S!+ZM7mSs46oc+1gGXQjRW z7(tslG{z)883ExXX*A~!e1!e}0ur@(b!fzWs|9ocD{~&)3}8S#qY8`>Fjc$LZ6(4^eG5 zMwN6f(uxoIYDcX1QxZw46dpu+4}1gDSv--D3V8Ygx%C4 zkY6)$(tnR6R|7+t_nzk_mWKtRp+6OGZ1UIW8GP3GeP!&?5&uPjPb$Z zxcB@oSXO=~;&NC^vtnCO3^-A*N-rVTq+VLSkLdO1or^ioF8rgp#EnhbI=Xp-=_E=W zX{Er^oqZ7#L6AhNl^TnxsWxQ2(&O%`oa%NTLB=XrxpR0BRri<5{_z4p3IC0q?-SC4 zY(`3^L;15SV3rE+pcJ#KQ$nG0PYUyD0|#Q)+Dy{E3zR_yfj?If@)x;s)r4QTFRr=^ z96XTObXjSbbAt6VI{dsMiOuy--@hfZ;9aqDP$Lp}F%FV}C;;_Wi1f)jvlufVXt573 z6M_-D64X(}sw=+WTi1Q!6;g3EU7dFB*zQAr83Pk{(fc9)Erc)Ayy$Ket9C5ciZXr` zmrZkuH=Ca4+QasEJgvopj{u`_e*|*YqYf%{yGf5gil!rw`<4=cIu`b4TS02=dPtlwAeDV0Lgj~ zm(3s7xis$E)gzynEN;9In) z{d4g1))gOkCwV+i@5&|U*mO3)ZNJZSTzqG=&A)O=!CCLBD}#A1NGupe_q0u{i|-^G zMR16Q$ZiGf4$-GXlaqzfGzHerM|g(8W4nBH-j#7YZ*9a_?mh8F(WVcgqUOx$hk=)F zU-sH2_rt>D$yDrguS=kP;`#`SJ4G>!By--VfcX{atRNK5rgYxK$Gy1Ud2e_mA8)5C z6Xyww%4nhR+GsU_;whQy-F)T~#wvxZUsR!Wi*afPcoMN2J(mbyNYSa>{iuun3QN%v zteLzy{}aa=n(*!i*q~_u3d(wM{CB|BnoJ%JyEOW`W7tu2+|tVSD+(_xpO$5R-cH3W z1JFHuDuaKF>+ zDIG?VXR9$YD`B_Ww10SR^}2qTG2eUofv2BW&m#@8(A;BnHD}_MY=H6W@jiSF^&t60 zd@c;z6Khr~2Ytf!yvAGwR>xyH)$pNSe{F?X@YTfn_~3M_cAW2LJ(Y6ws{5fq;)W>k zlbPKVqW&6ab3h&QWuil;CJ#MdqAeEV#96+llpjQ`-jUh2l^L6Rn>4Apgxa`_RnnELK;L^s9=k`B zWHR8nBU_uWC|of>AyGe^cPsSrXh_!D9<@PX;E}2}eu^dW^^$?)%@}dG3zt$6PTilX zbeF6?JiX?T>C7?xcSjbS>m!Ho?~EccW`RhK4nxC(?f#zZ9(Ol6ELxybknnRo|0uHS zo98jbpEtzoGhM^Jr3NgBz;nI_1bd7+ZI7JgY_Rh+FoZ=sMnB;ktiBKM37s#+GZ@po zxS+$f8W?Bcu;=X}=FaSdDs+cQfHLM|+PJs=L&2awu*dbY@FeZG3d|>aw%?=uWl}tZ zkb$r8QJfEM^Ws3ELI1p{+ZHIUu7{Eb@!>k)Zu!N>IIGI|6f0PLSuw{co%iPn(WAIE z;0yEW%p9{UV9W2DcpA#{p9-g}f_@#>e`+8FtDcUgHEx~`(>U%@n00AQPR&>xJ|hyS zZzV}!>jC9Dj*1!36#Iqoy_V#76~8mMhjezKpGiXVG>p_d{GN!QsK?J((kyR6Vbx`P zum)0#Ee*Z~Crv8?I8cmz;ZCM75S#(4XMvsP!`s^@%(z>=2#vnTt7KFdH$v89GE!EV!%x%}zROQrX-`}=F5-)yj+l=F@e z=?8r|Q9tRAUOE(a%^iTX8l3d@S#0|&y=mBGCS~W}X}u^fL+uBr_1{Ow4_qEkyt40( zJo%i+N3(yEOz%AG0afV#sFV4a7zLboKwbnW7_~Evf;u#J}K@ad(lFOOb&_>tbs`b{~g7* zlg8hp7VJ8B0PSTymt4lfSZ84P#u^KJ9%p04XcT!B2?gzqxb~cOhX3H}nT)@V|14oD z_|Qtz@~3N8dwKcy)e}g5LE^U&7Tvl{3k3xt)nik355uSB04;OifARvht;g6&jYyn8O=bbulK|0(D{4CS9VwTdm-`Da?DOd#j~S_ z#T=(|X{R~D@YaQ-EBe_Lqs=Qe{NIABPsjfuiOvQ@^313%?FIXN4x)AdrsaUxJ~I6* zt1Gjb>I@<4&+>i@0WnpdAv`#F=#R;NGPF2}?8yef%9PFzBE(QDqXBc$SZ0Fsq0QT% z=+m=hz@W;2V|wRUPFV~bMebeDjo8b%!nx&9_}H#L4pj(da6Rmue0 zW5Pe1^FQH`CT?x`CeNKc_E6tqS+TCEWfHx9ka3c3MTr4*)4?*}_MX||; zsF`9*z?@QWez+xUf*-`In`BHT7CppMVDKWs+BdUJ)_iJ9NL`P3qmzrLC5=|y)%eho z+pJFvMcaTW2S7CQ2O!}O(|`au2qDU1SH&VQG_8nZ< z*lU-zqtPC3^=R2GTfhdCqV}4ng$flhRw7p&J*l2Cu@zmptiwt$^#>%KRAEpT4O#mL z-K?13k>?=R$^1!N<5HMKKHcJaN>s}5c7_buQZ(iNjD%=csDg{8cqW>J`lA57;Y-q3 z{T{Y==0%0OnHG{0X!J2z={|2ILSdpp7hLr`2p<~l5*OviLO<)nWOO|Xa3q$^tDy08SW4ZX7`gDD2u;a`6nT$r(U`7Ys=_$%J zIb7Aa25`=loq|!N(v?W}t#*@xpG}sovh1OgJn4)=LYEW@@{>iWOIe@>;dL$Jn(Uax z^*Q-aBLAN;ngj`*w8!H1U$5JoHV;)(?Vxh=*Ipa07?ZfVLK2sw1>)LzlK0JV1U!}< z!ka0I`&=eCGkt{<`Zv?-U*=>{q3AJ38pHYLMBO3S`$5mgSr1JtMw)hfty|+v1c%&y z7TzT`7pq~{2-4F2=88%kt~&%D=o>bjtKL)^pAH`B$Si?nY5lV%5v-rtOUcpP`S+d_ z;7iFVwE0C}I3z{lFjYY3hb8c%k>AQF~+hva$! zM17_Cg?2qWC9Ia9&T57P9^B=LB~2lSst1ypeIr z0!U{;Ni`#jz@D&MrL9(t|2PRkH8ij<09;d-(Y|k{4W9!uFcDX)t@~IE{A-ga2Nby5 zi5lFVjsK(4&)A>;co%+eWV&0wt03b;70>5#j#pdHS{^zZVl{s!o|LEyD`sD?dBPL0 z$;;e>_}q^plghur*1sK7PUj~#SI-ks&b`1ry)gqX{6T3d$j)8r|6;YF@@NZZotDs? zYXa`{kqsC7{eKj?6%6BSgkpSgD%yz5%x0~TN}}@-QDBRsG&`y4h>|d5_JtP%a{8Nh z7J|YZ2c*K13G2-a+7mx{$OKU6mZ7yMB8=s^%_ za}3iF+RftpBn}H1j>~?P6xk28&jVR15L#>T#wWd%LCo#6o#lx;xz~7K>|w%;IAIuV zrlyEDh-LYh+ERkc(~SL~b$QO(tF` z!;CQr76j)l#2UMkWS@QgtH|=GPt52zL`axkwZ@9v-mNZs0@TJzoC+t|6-b0AV2gXz zT;sy5B6)?#$C-pCYl2DLTeDXZRxl^*LuxV!>HZC>SG9W1t^H=qDSM170-y**6W3B$ zoR!rU=H_(k4#cEzNq^ao3vI$~N&JAxy;>gUf|76(_uj%#%5;V#3#G(0GfTN(4!@Rz zQXF_OiutkCWgTIvBZ>F@cJddVA5pYWIXo1~+A9Zb6+Nn0A5mGcwe( zmqxbj@8)Yiv=isNfspO~m-|1Pd+zCXmekA_p^UIi&G=1-sa|&t{%}cLS?g#9&~I<# zBs;}gZsB0)?CKO9Md$UdI;|C!RNdoM*H5hDamSsG8t~CqjNHTSdg^a-kzIlX&YWua zml=;$)}u-)kxrN(^(VXBU5+I_1(ftI(I@+fL83*eKRR%4^sL$Uyaw~-Nj!^P2vl=~ zvjWB)x^iMRr6f1poNwF*)b2{2+dPi#L(e}dZ znYs7X2v@StVkCJG26V$ndh;#T_{e5Z>C-G96_4#!j`!ee^4Q$wx+36z8Q|E~K&mi4t%{oN}$vp?p1`69A$O=5qwjQdpNg?8gzO zG}_r}v!R`4{i{_$wTBH;+*0Cp0!&emAUQlvvaM45=27X!*@ZGvJJ(|h z!QLJqHDVJWr}661O=?-}UI!GAi-hgj_m>!q;Komy@&>pisCK)PInCYv*!RJJC9J{SegpkU zvf^!>(3g}8fi5>0#SAXuQmuL^2=X>Sw`J2O6kIqvY7F)|=v{o_t z?sUKuhrz(w+Mikni;^g1dJ@aw1m9p9Bgp49C~wxRq`qZpMzDEo%og+ zIq`yKg?5Kja+4+^_U0QHr5_lpDY8Zk;7YC6zEvAxmwde@oRDvP8t$=r48pKmG$Pgs z&eo$US|ThKTAIsoe%S+s|G@FV5<_uVEh#0H7*kTGLagVxb-<>{@#31x#_iVZ$h~ki zG|I=`>+)~cJ-!jyzRv0(R=q7$BAc!rjX0yOH1I~@s8kT6Zia00(ww0B{J@ym^`%y5 zeqVGh!_|9Fwu%bl=M1@ifYB0&NfDr%nnnxMNN&swQYL8w2EpyKO*ypq-LEx@i|lUFKl~b` zHNs=yt|j#-6s16_EwUxO&e&7-FFK8IllyXF!OZA-wca7YrCT<(ZMF61_JIn^BjNr| zZ5V$ma8WBtjJbv6iF&wogDb&}TvKF=7%2KYaw#pDT$b2Ms6O@fL7JK(NOiSgl6yzq zrZ77c!MW7rCiZF1q?{gfWEOtb*|MxkGBXnglsn~8vPC4L!AD~=mH0gE{c}h7@|M!X)f zs#RYAIM{_~0L}24Aj!=?7;;Uh)Wbfs^}sOkINLoqrN?Qrn+p<=QIWb@ zcsh89S9rT35dtql1^V+^B32t5L&Dimc1h>#a0Gol5yy8eSKt*&3wA~2WUvSK-)0%g z#{wFcCsTDp)%e_!@ygGu9T^@)ryH7TebOw$F7`9->W--y?Y14R)C*f^3jff^4&!oz zyewCR{SoWwkD|d@CLmdjxT`$5UuNF1s2ps=6K8(#T_O^0b1mbRSg%E-?RrkND{EK5 zUWy#|F~L<{9GlH;G=$SaFp4la-hsuDWf6Pf`;*{^pPa1`)E&M+vwCe+c*IZCI#_Fc z)zUz5#!%I;DJNo*jISDYOB;_y=RnOIV^ptop+t_aIi(&&1I&UXjdG{5Ave}Lzd(ps zRa9`Gym#nvdSK!Dtxc<-Y66T=lc>(hzze1mtqw^cu)JcJ{kmUcWg~xUL_P(~x-;87 zZ*(X7ffQ~jRrp!Us=|uZU|LZq-?svAV=Jd)(B-e?U?@#=d0&R8z^4oN1fl-|bgjsF zwP<4hk%TpWcGTXDFVMDAl?acx|EE=`TrT)jK%!f8Q66*-YNrr<^Vh0#S9ozZ$HPF( z8w9b+nQ6(tTe#+b` z0I;1x{}f)4xJB|ZO_AC}>>O_a^rg&-grpGGX*@N}-KTSLqS?KpJP{7rhE>*5WQwn<-4t}t^^jtPZ(F8PLLP1ql|?&y!L?eSjkCjK5tDR?Ce&;3=9n^qP)Dz z>i+w{r*~j)FNi2;27K*d)1814CNBjp@|nGsR^Z{ruUQ5WZoa3t3Pzh-96gUjIK|IB zn8=Lnv$a|s4-uO`r3Z@WaJ-tFn_ClMWVm7GEZmN+-z=c{={V zHNOz#8)Hv`Pcc4;=+hKi3Y4tO5(Y&obFhoaWU-;shyj3WAU#oTE#$m$e9H^aBqN4E`h55&u%xJs>Sog`qK(*7FAzSo)mnk&mYBuGv+` z6n}EUdOsmc=waJ*5#hNmTczHZ>8cJ$86_Y%Ex@m|+g|3(8U{_a6iN&oLj2zNAkdBNj5@~X5Y|BQ@eY6LgOvCg zNXl*nJvje~BWCyITQ;vOqb&E&k04$c7kv$10l30D+(fIH6rwo7n2#}{wd6FO0`XYo zW>`Lc-Fs!UsZuQKlOD}j17VIFn}B7m{o#{6Q%oQo+F4lxwHViwCceW?$&`MzI3#Nf_fxzHi+_KSPW%lPEgcdvh3EvlCtaE?X!wU-i1ammI?q94C0LogZJ@Ey1r6YA8xCERng4*W zTXFrFKTJVMVb^o_n&SA5jKHs3|5SGS-bya@R!O3ljt9oJ?AqTV%zAiFQ>q+bMsl*Y z1M8S8{B8($Z+jJuO2n$V+#NP@QoBb<82MF67U2n$<^}l6ld`ra8KnmtElx8=4t=h1fU5V z4Uklv629Co{1w>31{FT1CS)_(o4wq1@xDkb>s3nkO0#By|6ZKQGHRw zWKaA(lGB|lMl$5<3HPQC0)n*z2j&0A98MyZfaOCj&m#1FzoUaBkH`ls?tQLyUq0Nz z1>ny^h7sk_Am`MFfa+#rkPI;ed#AP{meO?kj-nuWuGB)|nkR8?9wZXjSAct8aYe|~ zyZ{o8?KQaf7I43WPnWq`(ulg=s3E|%y+B@EmYa38;Bj+uw=;&OqLAF47gpgS6bU@6Zj+mwm+W^ zwpNPpGbXNi=^GxuhTgb49HPFN4otN^-#S$#CJa-LSvfs zCq`=7Rt^Af@bz$)ef{JbiMp#R}5)>Z^`wV)>}h!N#&ovn|lclm&uqzSe>o6{LU zrQTj=!07x@)KUa~OLG<3H+xlKVx(E>UVo_^53>jWCqo9{?#f(b;LignbK^BbOUtpS zD6GD3Q>KF0sT@jeu$N+olf72OkU-mF8@Mu5P^V?)OiNSqpgBd?RP<0(5ZvK{S#7Wi z+lB2v*=CJd^%aW};Qlulee3q4Kc^d927pm-%t$c(ib>%pE5oz_#0 zhojuw@1ujg@N9B(dwXH;_gyj*RZ zORoX#29B-<4P%iahx`HTad!kt6_nMqMiE*v8*?vI zTHN-&`mz#nXq2-J^?I1zX)IO1`HBV~4cKkXc z2&W;Gv+s_Ky@+rSAq(~1WOX&CDjODccfU) ztZ4M^S#{ppMO*L)_WO8ok?(c0M{uKr#_T}M;ioaX_SUFz8!+70;g3Ox+RcKh(Gg8` zIbOAtlL+hlH7F$M`J?*08{t)RQ}NU~=F*}4_i_Sh@SHyM(<)g!Hqmqayibj-i$an4 z_&!iUd5m@Bi6OGFtmozt0$_M@#e|LUt^D^v@QOo2?v8teHl}X<2u@E^A{#boKAF34fc4I~Km+ zR%F~8iZK)FT}weB0ERr=T~Zu-nLBl#eM1a(I`pC@o{ig{O)0$kUz5oG9&~ivjcIBI zC>l8ud~LT}z%d@Y9U(zmknW>&fcWlV5ArxOlt>OyKsRK@7qnuCcbcJ}mr&71Y`YnkKhnieOF~0eT~1D z)b}B;D=j@t(=F0cd&iUImzbL#R~gM+$P8x;i&1Q>3{)$;XiIdq4`f_6ee$5Ek!0hT z1hsU1+nEy(OsMGe0w}vr8hj6*yw=^}H|~D32pEh-h{5Kc0N7aTPuypCaDDS=lv_?| z4&%GCr0-(mC4$eQtv&GtKuu6%h1YSCydw*?tz@6oH4$i@6iJ8wDUvD(PC19iu#{>% z&!)IBS#?yXy%=gp#Ig8Uy7i>h0 zy?WfYz`8OhSIf)wT`?4nHMDkmGIsnds z>}EnQA7!3po$%}^^^0x^=%aqSAo0l{JR(wpqcCY5VO=;JRC+WT%oTIZvj-?Z8;b-f!)vk+s$pxhm=A}Ux9k~io0i9i^P(m5I zTogchsYzS3Z~tm-96=3>1tG*>k;ITINK9Z(h$@jx(OKdBz^M7^`G>Q$BAlnOkf|mu zYHHe){1B)E2qZOl|9!S8PPmvNm*IAu=~e1mSaO4c`Lrurr|muf2~cVhi%{Jrpbn_m zp9nnHi6#8|{mGuDdc-jaFBHufEviv(ScG1iLeN*+DL%yL`e)%6H$gjotr5||S9NA! z^SXIL`-zbh7ArEDjqu5K{N|+jt2VI+4^9Q@G<`*xOMILT(W@U?v{=CeK5M-4hBc3b|`vv7Pgs52EVQQM0j3vx8v1l1z+I)6RryFFRj1ZuKx z7k8U-*8j@Ao%75RY~C+f!ae)GBw2p$*tx{Gv#j^iTd{WD~Y6#LT| z+S<5cV4#pkNuTW3VBc~phbumMR#_cn)}xuqpiI?_d99mWvB6y{6J#)9;*Dn(+ab;#eXo# zY;c6_`f;u%LD|V)=^Hw>8RO=5M@q31T2Gdv{ zpW3MNIAfC-=)IgDwX^OV4`Rw-{Q1+@Cti1eM z(2nhUbYnj>q`CA_t71TZ$Ci2D??-V6&aZ`LFLoyD%X8RZm33-z(bO$_6Pr(gd}uoI zLD$$Ki=!v#9&@lJpcT^RGXJHMj%8a6fsgGsWcCYt7^ z5>{Z2TiyN%P6-}Qd9@)!Vf@62;3H4&4&*ECN3|*6`Gj$UPkrn8RXHMtZRa-5I%pyl z2#hMWuubSy3ZqZFhRVQyr<&s9=quHUNVt5Bw$PUec&Rz4(4#r(D=p}66L0(iZ_#Hj zQ6<8N6;a#ckWF1{;sV}Z_yFzsxZxM_*Omz0E8Cb0Wu{YK3A!d>v|e+U(kcL4J1Pr8pU944;_1M+;-x%AQpUGpuesrL_W4a-k{ z`;(X-gH8p{GV>i5+GyQsdT*uEs`Rh zFM6?5b$YpyLF{8!vQuw#kQ<#oy0I#k0ME`PNw~Ei#)zGEx+1LIqAm8Rhvca*9)99@ zdtUJK_n7hz@{Tq+Bt_z^DBI2e+4jc-VHET@VkJGfjT7}ol9S4PJ8v6-kESfxn8SA3 zRFo6)O9P)zaQ)JxMO~xz1lEbObTYMQ8q>s4Y+@VKAng&<3*M5J5MpiT?nQf@S9zR; zrF*-+*g3pwigojK7hD!6H}12R0G{J~9Ok=04dgXGGR?VpJ6ly1m@j;UhB8Bv|Gbno zXlAd*D&hBJJKY%c%q-$dgD>#pXZFm|s?kV+1g!uckP9uH-4LoE4RV*BN>>X!P&b~L zvX)>?7*=RJm^$-P3_7U(rgHmks^V?d=y(uP`8uPmO%4DrCT?7(+UtmxjK#=}2KB|Q zHSCu4oDX`d8vpnWn+ z5z+lK{lX#%#{b-)<N^G0{s6S`5!XKDG)OYy`y^J> zIj?t_Hw0TexWdN#jv~I*buc>Y##l0Fd5ErjU&Q>AIk7(=uHCV;i=Xg_!Y5)sfPv$J zQ}533bJW8@apw1h0|#Irg8bY3Ht6G2YIy0_W3VcnQ`EBlRMVb9*jQj8>{^q>6UjS1 zs$c%Y`nK%FPTpshY!XMf@jWy54w?QMGg(<}>Yv|83zKCucT>*n0Y?Hrk}ClWvXjlm zpFAGCn?KXOHv#(y-9J{%&dVE_;p`NdZ$5dvCh;}2;JMS5kz_l%b`f;(+XPShXJgiS z)UfZ#>@Dh`NeJDS1&h!D$U(B;=suC6#p`X%<{3nNiT5mYZr38b^w*2dOo$Be$MuI2 zs`-)C3{9LKaBbg(=WT_OLyxed^sAZ#5K!<0K@7R)_CmAZM%^lb&Z)xf*LN!!W}g^t z1WHE`Ui#6-JO#$5&F+b{GtuGpxLV{z#0M}N8U#4&S%C9~!BIEX zl!kcnx@Y-oyQudq11m_C^P$WGmdKc)vB{@73XH7{+F_P>gQ9J%nKMDP6eMYeFG=gi zTS`?(4lS+LBF`h{GREf9O_|FZ=aFxw?o1xBuBbRQWcY}Z1bL!vajTX8NN4I21A6t~ z2*srX9DkDF^;b@Q-AuYwAX9ZAh``(TC$KpBB&U|cmitvhIfAg#Ll65H{!YV82ie3q z9K1X(JcYcA97ohhPx)-N1a07ga4?mJz*GRK#zjF;YcDemYLLEyv&A;sXn}SOvNEFE z0KLPGTdurneJ#)3eB;mlsZx(@>GKnQNY%2%BleZH^<3uiUg! z#MNTB#_#IF3%63$c8)LqTdqsi1pp_cUD|}aH53zi=fp+C-Qh}mNuo3mRl;3@{|wl? z&P>=%C0mgwWHb!vZ79xTEmWORvJslCWi<%7m@x-eH)raWS)d-6;aRd=Naf&|P z+M|kZaNjZ#M3^F%(qV#};Zq2if7g&MeA zKhXIV?jH7?ExR7@*^JbvyA8H~XP3SISK&~H^GWU&^MhDu$56n7O2Dz!%?fp_344WK zVmhu~75IMDwrN{fRuURmR*W^$4ha0MhwVx_2wJ+QIy~a*tJ+XovVAs!ECFRW^Ni_j z++mEn&iq&Ma6?XOn7zOp8#{lIRQKM}Y~@YjCFb)V{$F#ph*bo5p;M3^0?IxbBY(q^O0I69r9)!@^3 zu^934DSXJUL>#wt>x)-|pq*;9h^Lu7#@6a>cpRJe<^|FH#P4@dTun*Y`xZLeCt(^5$p?>#q1v5teFtLit|K3TThORMx^^Qd>)QN&@kvI2rcD zeep!$hnWOhljJ1ZCTGHQdd}|^LP0WOEo&Cxh1rHH$zZ(_$~AUwjaY*S9CbH5gY&sd+fzoR4h`1~Ufz$oA|HH7x*~OnsrVrwq7yxwS);k?)G)v;NOpR(5)?DZ zeWrZN#+Z||@Ol^8yvCBvuSD@2J8 zp9ET^>jN9~=JsdqYt+1N(p%IoPx%TcJ;*r&52HnE0+!363=a<^^{$EkI7Pv46vr|@mv z7eejQy)2t`eGZ(1J00c@uO$ACp@{JP>-q6E?poR$4qyO7rEM8h?hTC&1)S_?*p~6J z7guD7^Q0l!W9egajehB$i76FT!$kyC{nK#Je>uqS71l^k=Hx9}q%uPJB5~YMfMEbw zs6mJb|KUOV)~`dmumx^+KzJ%utoH=h%6nyl;{N+$zdae}jHV`+0#8(Fs5h0~Vfnc+ zp3jPr{P<5Yy~4q@MXlj4xrp(|b+E6`48>z&2J*|y@x~uuduB?$F)yW$e_YG)BaIO7EZ24U`rguJ0*`MYC*G?1r z#vJEYOkRT?Z?E5(kQ{^A7~zp?n4IzHA9qI`5cw7W{i7yZ=vqWR*77>&;?WUST~NwS zmJAPbZpZD31mLrzg~~+1=!^lUeK8sN$i|Kpip!;M*f8qF+HRRLRrZo9u6x8IXN82pSv;pDj zy#wPIx9qhK{C**yOppf4=W5hVFDknN_}$mWNI}DHjT=2!?`oH@(Er3!Q#T^wMYS+) zqW?~Uc_IMsFj|W+?Sx;ONK;z8ruG{_;%R-hkXb*V4<+iiD;r@|PpujM!Mp591eH%D zsV<6OmABu?J#{M6bTy~Vr`Su15b19Ka!y5|jo&`Yq37Ey?OaKtGGcvpVvpwT(c1P8 z{mMvF`J7KbpgL(Wnmhz}X~v6qDFFcNi*YlArLo&XnxR_X2C|ksWrw!l2W#GsF2@2) zj$ zS|nR{t+dTOWnytF7c8XtPbO+T*5Ns;8%26PYLh-cU5=DD$1)D=LNEG*$C^SEmRm5> z4hb8%pi_tUs@f(_PhmFMkOTL)>RZn1t;S9sQ}zhM=bzW}t=o*V#D$ zU)lL`kid@w@?FTKteX=+3?(ncbJZVczg2h&f2FtJgUIwoJy5&4vr2jSR(Q7T{ zxh(Z4A~jegBM|HtuG)5%;oknIl;MJSQefGkFEE=HN9KV|*@Kq*9#cZr=QP;|VJrT1 zzqStR%HOAI~Ie3Rk>8XWk?|dMqjaZ&n!$`c8H6foW%3N=#{B4>Qsx1X@Y_GRtz6gKZ ztw>%cQv5C>LEPmi&=bS0aQ{L%U@|NPBk@D8C>OVr23TECG!NTID5X8@wb(judo8%J zswpaLChSTsG~5<}Tvg78f}(K_cVfeUD(|Hh$$mk;(ke}?_kHWY_ptrcd`Xu^I4~?7 zxcA?1!5gyY%`Sxn*Mcm#`Ly9?(B+JomgDrzq-AM29`_2Vx57T#5L=XkGP$sY>t&>>#%5un0rpywWDaBREx%LAnO%rJi`|NnE80jprLIJ7ISev%|r{nxL5nMaQ8Mf& z1Qiv*RnG>u>AW#5{l48gU{9xYl_%eYYdBAAJ&xz_*c@Lm&jKI~coI$_qD8g$t z1;{jUxRp;BGEnE=GLdT7Qg3*H`h?RD8D`a!uare8z5Et!#(N^s$t?A+sAz%OhLeJ=a`Oo zqQe$dFVVP=znz%tOnXU|t31Yo|3u#A4whCP;s@WoB7u$MmH`UL544TI{u~*6lw1z- zjfQzcT$Obs#^w4N`gFrw7+D7!`no(Dy)HcoHUNB48524i2WLRKAm8Ey!yXD7L}Nxk z(}z^Xg~*yn7ng;3}+bC^9a7|DZ{z(KMNMbcnxejW~PtUoH5dUc5 z4v%v^9Rg951a zbF`(f4+J;AG0fb58stv6Bb!&~PDMi}(BI>Kp@>zOlF&8uiEJX%-Hw~FZ?4edUWhjR z++Q+la{+>;@+68fW4&(?pd@cH@P!ZK&Swh)IC}MX41~4$JzPto8M)nf1_p}9p>w%|LL&(QNI6})AqCsPk)$Zlp?eJ z1(frQ+a3>6r^Hv^;~7IwQ`c8xx|swn`H zjOZQ0AVWYSMs0D~GOx1%YsI~z4jAh*b;25?E$K_hA3cWn{?KP+q1u_%Is-?<*^7mK z6A6=92KAH^?c+CJ2du=ZFe?3|0YRY?7uftZe|3FJG)08nst`T}qg7|(I1)e;gCs^Q z{;xP**^qe1$YW_sR(5rng#dH4vLp-7oYZySaU9_vp!GOIBOpzZ{q@`(ErKNoibYqY z*04f~zvg~0*YIHL3#Ear>j0~LX9c+rd|53z;?aLhNT(36qI2? zDEMC~h(o;dTLKW6@!?iqLvQNzqw|+jWTG-HZq6QBMVW+c{Y0$H0&ix;K{EVAb2_Gh zR9Nm>P!A217=uT2Ln*?L`sN`|8Zsk|e5I*MgclSA`iFU<>-r-wBij|x4byR*g0$A& ztbQ#q_*_z24*44FpU z(Y^S9>Eq`f0DX`Kr1Dd-mbSVpA2_~6>m-Jfu%A@j*$*lX(Rz2n)2)~I`z0^@1LE7& zg)Q2VHX^@fy`Aefv0N6<- z`1!g`;QWY9xEhKpLX!3t?}nb9mL?+jZxY!W&9#Ydp!?#Srf@F_%CE`6H!GA&?VV(z zhE|~P={lVR!JJnAR>Q4@@^Ld{Ht`?0NISZF37>yjLfGgvSOYtPNJD>?(v-{|rwov9 zFhh?@0`q={^RzWnJ2SpsTNqLUD)+1Hi5YL1uJuR4Y0_9VAgmjo=H*!DGEi$zjQr$& zbiv5GVe-usxivlO%PBFXho(8E&)!NBw|EQxxym9_hg0wsDnQM>i&FoTS?K{5Df{-} z$HE`Hh^v5CPWdexQeS2M!HuX4giM=@Uz!!nElC#*SHVtv+2+{433%#v!wBMf(4!9dg?K4a zZ3QaEz0bG^U_9;!&;MbyALcuI@b2w-b(DZ>k8hv3VLV%aXYl9a9eABCDJ0oTa%)8R zX=oQz$*=gGO9P1FimZjXpUN1-Ka>WaltrJs(5*9^oK~f*YZvC!`SuVjLpR`xvCFKyvVFW`URjtL{)GbOr5Ot0BWR|_?dw`WePzXtZamJAJdPvZXS$P_Pk zlL6ZhsMOOm@BcMKe`lRY_ahgeKX6BcoA?ti8zAQshjOzb@<$<=#S!x|VjeeCg*Aug z(U~fc1ur)*>;LNpAfmZ0fFQ6x=qT1`8}%$t;t@ydhs*C<+>B&+_1mddv7@r4u63Xa z13(mib>?+przATEE3+o5k@4%-EfB7?_sa~)6lLh?v^T%|~2`3?h5f9XQ4OQ}s zZQDA>@u>PRTmj=`O%!5ql`PsQc=s6y)T7l>*5rMz7o&vM{bd0lT4IH=j=1%6fOiTW z=rq6Y{l1^wVc6FA+T1&3r^EtsGnN zv4_H}Dp*{eLpo8=UGI1h`5$WtxJzXx;9+`3*dxO3d7T23$4vVgW4$3D6v5v*okd8}>e2PhPeXbQy@3x|Crt7ZNh;{Ai-8`)RYEXv+;+?GBH>zf+!;*Y z(pyG|`EwAh<1&@Q8Lcz$rK3;|IdF!Ypg;NM4B}tW#ZUG8j&o71AG-BpRd`}=i2cm8 ztgcT)bE=uhEpZbgRRKiG=QNAu8UsZl*vdc=qjcm-w`?w$IswR7l&~v5|457cq(W(M zCt4ND`z@hR85cLK@t`G3IRAW-Q{5FE@QVtr+V$GfpXk!LGxiV!J)KsU? zqoKbmsmw+9N}mgq`@?7c)lcN6cK(e)o0v6HvHN~tB*aD43?n{QBC{fbLYgQM6a9S) zAT;#=vrD<$*mU!iB82&i6h5~Fx>(wk6jHvXCVk~HnZu#jy?d4LM-5yw2C0b<4MmbZ z+>(i!M2QaY8tgUE@j*iCk60NC5mH{xGSl9V&~5yF8fEU zDtRz1e@GR1s|ahURM`99!L1uqECelC72pToao?_jQ78Dy18uIGOjkZ4ZL=o0}^Oa%57BGyH)@aoOk?U)hG z1W=GleCSjLHWuoR(Ab3WlPdfYq6CQNWmY&5RM&$w>>UjIc^@4~@j(bmNQcy1a?->; z=3a=LaG%GUW;|p|HIcsP*k?FyqnMhlLG0vT@y29*kpb+Fw^GEn*bg{3l@pBzS^+ki zVBp9Vc+|Lh}j{w_h~z;3ow}|C&Wq(EPH`@ zD>V2o^aN|*EXfq3-K z+Ln(>OCJ&|g{x@tD*j8a>o(y@2ZPMoj7^$`8el0ig#Xxz*g8GK2)GE_GP_g}f1|+s z@qmak+z4*z3+A3&D%v~GRoiKx!rQf2H8}Xfh5H*B$t4d8DetXkjK#07yq-RFb+Oet zauB#SeR;~2^py7(w*qiR6VJMAL6nZ~6O8;@TjYfJQ2Z*2U-Usv8eoOrh=O|CMLc{d z?-{`t$~iu%czl!E!e!9iA@;?;yjlq2gQ7^56PEQRaR_(Vba2-_*^7Z{#~gar0%GRK zU-pnSkWRVB&9DQ;0}n--51%pWyqeT1uYD$?aU`XV#psNmPEiuthN5nvf zPflUXa_}**0b5YBI54lzTY^)aPtu1LGK4gsloym}=DLY8fn#Fs2!Ttk=2CirWK;$> z365Aw{0$H5ns#aF%^1%H>p>rZ5OjNT=6g@LOzd#KFAP-Z>ShA;#u0wpSKb6ygL8JV zQ;mI-OTdhRGP@H4`m+P)>Yp2HTBJCR6>s|DSEK&Pg`BwyzpCQ&&0+)wa*NU#eG%Yt z09ButiW!&}wHCJS?GGpiA)-Y~dWO`;!<)q#Xkj;}=7CF2OwUyLE|xj?W{>mAm`ekj(}pNdmKBX?-7EtBAOKR_I}%;A;L<58ErZ~3jY{u9+k5nKI8Y4(f1mv zM)+ydSbssW=o({67ifm0$vpvMOf|Aoo1rz7bEI#wKxEZK8oP<>b}Vh7gZW#-8)PVb zmt>+4j4txeo{KoX0i2fb%5IyUT{&JF-MIPSUT>Y@Gv2n}Kp@+h=<}HqseshP^l$2W z*!NBqW=^APzr!oti-k}VEpkdU&RHWETRLGsghp&;f1Qt+Llz;d9<5#E%dot@1|U2? zDC3pLL!bBs^)o5V^LXU6Ie13v zadl$1shAiTMb)K2k*M3@ZV`TiT{AeecLv{Gn^JngpEH`4#$37u^blSLM4UNx5^i&- zsf2DcP}T+EeOs_aFQn!n>>@S|))pa2KgVMVhb`tgtq&71x^jN8Ap8;~_SZ@Gg*o;Z z^YKC%qnne#+jRH&!l9o_o;k~#<3i`{fHXYA)KP0TI{f4| zXiNZ38J~THq0WE*78{tV%-g+S%hl|;CN^GaHO}uV`=t-x2LVyq@w3OQBQ4cUxHBY9 z(vaZr#hbu_$0ibItvy1x#0?=DGWYJEo+>ff_SAwdCIlgwt3X8eE_BC0u<$|9(yq zr=TuD`_u`{b8W}1=WajbI&SbHi*7AgAx>$eYiOIqSC6m*a2QMnqWEQN z&S1i_jr3XXuJ}fA{9r@s+D_LjDbg|idZU`Dnv-`J-WeYK241!SOKZT#$mOxiV|nN) zfw1 zFV}My%8C;pX;b#%pNoI_UJJ}pJ%zsLK{=)=);%6%nlFL4${&>tx~x^Kg}=eF0wdD3 zd0I>a!#T(E3fx14t$dI0>x<8r9W@`W@HHuYKq;({MELSIqc+AqGX&Gs-!iJSEJMf> z(*~Sc(Dx?6i9aCaE2DAIsAR0pgYWT?_q(VG#vG_INY%R&5e%W)6=9a*^sb7Z=MQ4v zoGR~nr29{+y9R%#ofW7a7zv=6``nusLmZ{9UW=pFjM=WBcs0&vjkz!|VNg9hwW5 zl9<>8W;f(O>oT&U=$B|v^m1Pt1=@Oz(-~a|=C7os4>Es?>ufZL!@A4mL0>e(&n7Mb z(swwuPzS+=JzNo8M78A4<__-{=h)k2>9TUR7o^nA6FhF~;$B3<-=bgrA(?jM!ERfH zEQe$fbe@ji^i9K*?CosqSP^v|6vt9CCFhFNg^~O;C^#sG#9nn}KJl9MxgmUtPBquy zW%SalM=VVqo*O~ds^*EfA=67+Tyrg^PdqR@f9n*O_V`2d%}iO^2xW^{`WCMThY)WN z53C+k`ypBvTjI#^!R^mUb0*e9kqlS#yz>vsJ6A$eze?}R6GV6=RLf8DD>#vCaPji+ ziX`Le52j#b_&3vkiu1)+im&Qg+Q0U@zIXoFWhFoT_mfVBud4Diprm1>iGi~lCTZkp zM%X0f+0up3g9y~ZQCjn&g0qIu$q+nXraI+Ic$+H8&Ffl>IR6n7Km5?umBDY{FgMWz zwI=qkjZ1%<7*0-{k^L*JQRI@=ti&%>c$t|ODH^HJU&E0fPvg0b(lXD-dBVzBH-fBr z{=7LR z1$f0`sS1&mC4f!^e1njqh*5)AMAp8@GzGUG^O*@z2-__~-}IOm2mQj!w&;_d^0S>F z)q=C^F7dVh{qEbXE^S}2`OJ-$3l#OmSV9`w(O{2P?-p(Gq^}j4LC$>G`xAr}o+1Z` zcp8OVK&>12ZsL1PQ_#Q4(WrO{*{P;}HJb1oZ2=>|MBDLmn))?*{kN3XE{HIw5Qer6w{d(=(|&cl#0?; zC2)YgO^6yuD2!)-q>547zd#6XJp~aLX>_!&2zs_kW&zmfnCqMf**{6c(jQD8i0I_G zt){#`SEjYi%0P(yl(_;Vv)blk4d3(=!nBjps&;`&rb+#q=bXKYz!fr#C`>n|2trNK zuIUclLr)i+v;@1t@X5^`ha;_>qc*d?;ll|&G?7h_JwDMRdK8lwe^4gEP(-G40+_6be6Msq2gpk?0C(?fnOnAuKgGJ8@#tk(TbXJ$rE$tNIukqX(5@d8^iaL0;7ZAtQVeNE}8$^U%snXLvT;QdHiuq$QyVP zw&j`0R=*mj6R@T2rhuEK&uUk$dI&bEJi=Sz<^@-sTqAmt!AR7}wSWjoU4q;mpX=8T z3Cy?T%1hXWU}vqQRe=Rhz{hfGjBzC}PP(}TxK zMludwO4O(9m}}gqmFN7M!IyI$Q+&R5T_nQghC$U#hKUq*62kMId$>?@bNw45>+<@z zvnLd%Y3#EM3c1qQMB>Tz6=lJc8d%FBU5EdAumGOj^rPVReBQKI=xGdp1YcvE8DbT;DMEF8@XzAifyL{L+{YRl5jBN2u<{!$<=8vS#5alx1bt}?`HS3UDCKp24Y7&R-uPU;Rx>`#U z?5{P9niKq(1U-m)F;R|w7V{(WyqyQ9L~#b3wBy-?DvTN+9T2JJsD1`VRzFOb=o9E@ zTJkLTXX%tLge3BIe2cL?3{B{>>^(PHVm5mvYMTAsyV;t}>Y}`8_#O+E>7vS(dt*~% zujZcHgDs-pb`WsB%Q>{lZ&p zjy(E~k6#IBCn8v1Ohj)Lf+Xn)!vnVU2jlac&(zmY;IQ7!VEhy44oF@gbV#@MTFXJ; z7ch!dEIAL5TXzcUeZ7$n0E3F59NzxaL09Vpf8G}^;Gr0HrXPDREZ@}p59UDu$t9@vt|=2S%@Ab@V^xOHnWEI?@c8E*9=MyTHDD0 zQD5h6*xsKvy@5^v_ELX_g#@?3TkLEWSwfV?grLv#6^j(ke`KU{I;iMaP{u^vO627C zJ=O3M6S3B8a>t>-VWQg`-;kvn)gZueXIxJ=mVmWWs&@2%$N5cky|jbVi2#iRKy!z9 zSs4gpD;Y*L`o^DLU7=X3eOtma;9UQoeB)y;rv#Yh;L&aY74f>dsDp?Kev4hOH75)% zQXzBg*AyMuCKE5}Va-oJPjzRI9vO?<4XoR3(+G;2EcTymw8?6y-6oxhmd^gFi?_)8 zd2!Oiasucr@1(r%cFE{A<;94myWDMiq-d6wm~pT7PjOm2CezhNDhtTkQjs1WYD5yG zK_1Kq8sWmEcd<_Ne}RE}>Vbn1)=WC|30=~>y>BZ{maQ@JE1}vl>jxOGCM!$5MlJGU zORtD`Eu)JO_lCF0f}?5ln5%$1wWi#QawqpLyYgj~h-8G98&onH+ZLfbimWoyi=MF~ zd#uH4m|&OTSMyV9$r?5~6O$oy(N6*WLusu<7o1BdIe#FjsGcXkX&!}sU(%V4RBJTj8Vqa`(r>;?)_1ko|g@Z`?^pp+$blhb5XlX;J;Fre76k}4<&~e z_OS9An)ZO__%Hp7vb*n3%dq>Z`s6dkTN30k4godb#g(jadzgQDCHQ8G93kZSEG&io zAlQdyWA5aw5g?7|rRuodQ#__c-K$9I^}gBSrlhE-S2@UDFp>S|uSIyCe^dO*<`=ti zI&cO4Y;px)1ce~jcbzhurzI5+jNur4lGP$5Cd}{L@t7{v-@pDt#AisN#VUO41PrGj z26Co08s{ix_9h{6)TAJ2SJ^x8N`>gz7`UZY0)|&Wnv-mluUYWxDAOCaYf9GsvI!F{jUVzk1yqkvHfmV53`u_0b+BAil$ z*O&wKe+-3rjp9n;8!Rkydz)`2O}d@l(g>n$Ca49lH|~zh$a~!9BiO%*jj%Y!M$p=% zwc2uq;#%)2(FJg-w2SWNhtNNwb_zWs>S^PflZg3En5Mj6dmq;V(B$965YMX>ERpvB z%qJOWzneBVoeK4?Ll%l;iR8ZcW&YpB2*sW$RttlVFjql4`ezlpl#!s|g*tVpS&S_lNtjVt4W zU$8`&kw|lNGYjuQZ5AWTCe>ux<82P-HmegRc*#FWGR$9hi{7=|@7D)@<%MwjamrZs z5&&NP14u(l^uibui{wWprqZd(kP@$~La)wyCXX6O;rXjV${si4{AEcgXix&F(mTE& zwTVF1uYe_>9gTE^-zQ?8s}Ie{EctSVTBDRl z$cuGf1pZl43ga;Y^oBKQDQ+4;UnqiYIM&#f*PQX=t5P z3jzRsNf+hFY6Zu(?23ctbeP~WQn-dN_Z0=BA9{O4bG?k(;(Wj~vVH6{sxo7uv3c9F zu?*ncV|L1>URm2FbnPjsvXQb;y`RyfmI@fI%ku)`)H6sN<_J(DoJ6)_mi9R@kWP<6 z&Q%TRMXUK}P0%%Q@Q*Favt?(f_yDPo%%KxuGC%S4%}QiyFuux=_1qlK_4RiZetO)6cOGwJ*ULMH{FVMyB81H zlkT zo0@$YB;zlw{GSbie=|gMDZ4Aei5EPdSpPzod`1E{gh!lR%L`rrcRqIB+1xQ%IJ3}I3Fc0Lxkm~@;%)QI zHR#;3*4Fqh0~PILUkDskc)G3jN=B6rR+WDA(RhW4r^k%6PQ3EaMz`O_;+eRqaLoB%(_^e|Lir3Vkm# zQG-YGx*>6A=BXwbjjp3EvL8P851KU?N*_c>C&75cF75C}-V&?6Tg?Qc4unF`G6@hN zr@K!8g->%0MpwJ-NT>tQ@`CC;+ZBQwj=_wkUyQk@CZpXGphM=uwdaSpo@vuSc56l~ z)?fKai`FvH*NdtI6TH%soVf@6$vQTqfZ!(Mw2ubqjgke;vG^DuGq;unww6E3<={uj zYby3q`HVeYJ50Mj50W*%td35YYPb*QQ6eUX-NCc8=0s?g7qZHwk2p`-AvpV7>Y(|b zFh-ULaWraw`jo^xF0?7vGnq#&$#}_ zGf12FBjdqu5YIGS?De4ug-JIkpO<_>fk(ET!a`;k$D!!?Ty}|Zz#w3qq4-OE5P7f5 zO1R_ZA;x${EF6n|CJU=TI|%*(6qh6~wz;ZP<5+X1sHw*wVPrgk&sLa0Fu$494w4ab zVOuU~_c$vtM4kEVm?Nj=&(i!5uyxA1O` zOTscr&Huwn3~f)B|6EV|y7d0|hNp~n}x`v_w>{87S*% z{>JQ1*Qtr&(FW17P>%|;FJ}sNoO;sl%0|Ls4#@@AAqz||&+Qpn_c=A_)V`Tt@dw0; z?14#rVk{7DoOklD)Re*&9JkWm$1^PLL-jJWi_`&5{5lP)YC?;I5WYf81>?itq!RIM zOW102s+zAUeX_FPv8&;5jO0F$E|xSNpT9sB?1ZA*3|DE^fCsA=FYd>As(qssx;Uan z6O5;w)-N;6w+dG-HX^*af}9EqW;U-~3iNqrLRXvxE|U-_eYm8$!e^~@<9lwCFKr`8 z6~8cD_Y=$rbzjVom(-$#)p%Yi@;P&_AktO-!xn3*zdSHr`PEY@XU!5s!%65Hn)M|K zkwDjz5oyZKePEn%)coC-HE#8=H)fNSo(sv11QmviX3rCu7Z0q&t@+gc{$R3g0DtyE zX=MbaPah|j6u#XmrukgBO<6hT_S>IFB6APmrqmkYwI;`4J|HLrcAfDZ#-1&K z&%eT5*PGS5lfC^&hMWH($%?e{$>xLw9OxZGmCTQ?*pT=1`Avlc+;`u` zjhgHm%)Puz3nPcyE>;D|th6p9?A!1LOlbh`9{sCRM;#9hhuI6KqbniK9ma-e&;7K?gqEEq;)b-T_fsF=k~2O%jg|aFe^@3J^PMO zF7$e8Ey9DkcC{Nz$>UvWX?i}+VNXy|m&5$Ni_W8OH3*fQv#SUz0~=mSYOopb&x#Fp zTR3|!(4$7o*^S*M1If)-mxhUHyLOp=F2j^Z!i!rMB3qU5jnOk_U^7dFwfeE!X_A`C z1!o|ohaC_-a|HyECY6?^3!9ii;!hTAwz7=#jc_tf z++$q9yV9Wy@x##ln^&uqorfB6TJXnSL6e(ZqT%<@ix)rRM?F@DnAiXz1~BVLm^w%; zy*FFXdxky09DfLZUR3EzKNnstYPA#qWvaY{`B5C`Z}&6~)G9G&1Ngc1eiDG`nP{Y6 zurv%b1k3B#uW?8_dFn(c3u|l0cXqEvgsG;)g}*+RcB5C=gw&R+zi~Qu=Ut*jHHhNf zg!RTC42bfXNF$9*vi}P|u^)K;#PYD=+(5Gak5rZ@qHSf`1ZdDk+ScECpgiO? zykV26J&fJa?$nvRoHANl=nR98pA0to8!pE3PQ??_ua^dfxqRO(H`W|TK0isu7EUWO zp#j+v&UFL}4&#lvlFrTU{PWIbxo`|COtVjXDu2X;);{grY1=jwx*ulyAy96>yFhX4 zpTqm0@LaesDI%m`I|v5;=zlhTrK~?1Y`g!u=eCGB^6UKx%r{udRW*_YOq%=T3jWg}|1R2mODS(iPhmnOiu}oK`3p||*^-Cm{m70y!fD6`0k^gf+{HB| zM0CqhLRh*nS(t^DsI5cQ-L1G((DL?#94{HgH;+F0b1I-fsz!CH`AiY>gCa4M= z@DynPvv4r`mC_7MXT>Nat~4hixNGq~H*~?K5cP}XYe-sYwgr5Ybg=VgLOx}NSd~65 zgTMPI7C9avket;WbT>Hw*JJI`61@_jd;8P4^SZz(nI2tZ!w&mPTY0|&y_LGqk-W(N z;i1Z2lhu`aA{04tJZwgVEZDtp=n;HH>YL5WJ}ehJq#`Fql{|jw(BCxUp5`#rkF@0m zGjCr`>n}Imp|Pvu_3tF)B*sS@78$0(8~XUy*=$vEoNTmL?Fxjg&SwjKNbrGJn{KdNmi_prt0LEj8W;D8y31*Hi~_dOPV#zKkf>gH zcjTHtAFznxrl8hvhD6+vM%j9VZ1-)FtJ0QNc9lywd^NE^aTjj&_eU&E&yfFDlliQJ zHSc?!o%dO<#TCp{{Vx675zB??~v#?W7aIn<7amgKyFI^M9;j&AP}0 zHd4(%v0;nE|4alp+jNAv4MjDDCjmhNtmK`onA`bw^c~~a`Fk1L_fYiqLOHa6<1?q@ z&_0-Um~ESwd0z*!WI`1j>N%~jO6Eleec=e7?rzdAp0~Fv)XOkwbxfr)uD=bg>W@7B zOu1D*?&CvSzEG<(`l1hRH{tQ)2CBbIjfp*ZuMO#6&u%p^{p{Ky8T)|){2?7FuJ8B6 zG3UGqvM-$TOnk+{zmHI0eQcemSWk2;E0d6LR#=v&NknrNV4Nb8=jc^|&+n~}+3_9E zJBBJMmt-^EhR*x13$n)A!ww%N96C(6wr;@wGqz|BwcJzj<=Et~9|R_2^6?FW~DsEyS{V6-N^6F=l9IwPT<2Haiu;`xj91zu? z`#y^@eFlxaRFnGZRWT=7yro2IYe*i?6|29{6s`#_Je(Xp zca1}0EF|&m^B`+uSAAJ6)3a%DkwWFd)22z6Z8%28U1QH(In2c8E`;|<{44qM`cE zb3*Sa>HdS@tH-(Rwv4UExhIc7pP%OXWt$wrUFiL{xM}^LV$WJ_*e|c0kChzud>pmG zSp3;4IA5_={$cKR9Bti-%+iV@hl$OIIVU5OyZ^#L-CHvbX>`N`Ce;Mm_NdK&uH8B= s9{WoFFsO#kb;uj_iQ`@Wy&exC2^bza}Iea^mo&ilMi)Z<6`{KwB8=iuPr zzklzx5eLU%w)HT_QEv7RA#o*~gM-t~Sx@h=tDe3d%njyk>}g}?aNF6()6FL6@ih*P zOYtFb6$WjO1v=5s^8WD?kPsJFj?zm?I9{(_b>_C$QInR{q^A6@ah>`J=Z~nd!rrjL zj`w>AMQUoQAN`WJytI%z`(-f*6qS4a6$&2;-};GHm(uX?^w{Sr)M~P@?75PjCx3A_ z=5V7F-x4vSwCn-16pUx+?#w*Gnxk2)*p?3~O5d`RL_4j3_X^u-Spyfh1W|QWr@aim zpCLspcy|%PoEpufnq;1t^%V-B1&S6Wr&s6dr(X=7@II(oaVzfDND?$_KcVe8uK4Ti zA&Chvy)q2_+R9sP&L}(LEPS;){=95zJJz#Vk?W(G-aDhj0OV$X@H8a0I$ZX}XX&>; z-dBG-;i;-G>x!8i)>c$LY*}45cQ$NT|5Nd^urcEoKMu#tJRYbq?Q@yiThUhBzSKT- zAx`sfz5F>{-M?C*uP_*_so4bID{_#HJta2E^Kpf9P)I2YUXS9&`{G3=B{94 z53_Yp2z2-SE5)H5sL8gvJNVj21-iR=_-F>|oc~u0O}727H|V_7zoPiM>YO)w_*hC0 z=ItP*s-UQ#cwYCol$4aVx4omL(e1ncF3xu8oPX)->!}F>1q1{r1YA>qc{_oWG&D3o zipn5mWqEcCd7mH;Uz+0J7%IALy`p=U77g4kSz36`l`Y)n?%c5y+<)ufG3X;y(pUJe+-XmH$1H|K|PgQre)ueez%W=-&pwzkJyvK=-&d z=s!l2?(q(JoIMA}4UYS_Z$1s=TyH#9?%Qo5X;!=1xNk5$`Oiu9ySD@qxKF+|yITEx zT0U(2jlkT=d+n&W`i`S5FW7v4uLRa^UzP96W9MOk)jSD&GVYa{i+ z27_oxO~M>4K${}icq!J7Di)rS3D9w+cjDWaJPnVe);~4w0BNw=H2J%QiQU_BayO8&A_m%lt4TM2#&@jY;u0;vZKJ-0=c_V1{nX)t`06q^X)d4~k zQc%YdfdUG^M4c@zlWO{Fw?>o+d6f(6d~t6PYABQl{`6E9(O{{-bo2gBFIt5Ym%pST zW*46Csuci#EDml3<9NYR?vyz`OF6D9Q!O8nomyZs?itVh5QufJQ>}aoq1I$*Vn~+U zp^u$d&RK--4}K5Q)gwVZE%(tEp4D+QRzH7M`=~(HSm)gFE8kb<&y1y}&1-jang6Mm zH7*y3c75D<`{J{(SI>Y$_TgCJ`{;$T zBkPgZJU{alJ_S|r!03e{aRH?4SL6k{C;{7{|0o3uiK}GE_I$$UIFNrn^caLC_HF4o zjeKn|0Om#NJcVfg2uoqj$LhL0KLZ^)#>=#^yQ8q6*Pqo~tY282ti45PzM=j37$Ny{ z5q<#q}MCwZq4Oc!Pk{59>7uJw#FJm1ZBAhrKd_M5&FwZwXU zEO$Ze4))HyYRvEZr4Wh+Nlrd38)vYB*aJhiWFX5qw^dw z0RG~JIzHlEsT}sAw%Og8QecvoI@6QFdy>D*%s_o|exTYB4-{DWs9R;mDDNlU2QNg) zX*^h*XIhj&X-XTdVnB?V!y}io2j^m*p?zJ3KtC{pHKDiMeOS5tU-4XG2ff)6!S9`) zqiy^*h)z1@H!MEFFWu0kd_WN6%1#;zVae!I`0Pi?ywu_5h1!Lpqi6-F2BlGKXa$Jg zof8J%fDPox@~6w>v%BJ|`II<}r}*aNv+2 zarz))W&x|VwxvyPuO)8{r`p0E>dm%Aq(->s$63 znunPpPPzUbRp}Z+cnBB+AOJGLo=WObdHRX=Tl3Tuiq!30N%zrrCv2_gHBp4(3E7@r z=|!7PGaN_CbuI*^U|bUs7UoAg2f2q?b`sP+uoJr~y*Q{6N*hXXz$C_3NxsE=WQ4;9 z(-)&>0jp^}i^9wb##eattd}qIeat4H9Y0O#n&qt1Wo7EKR^!3&16ar$KeE@@>7Q86 zZ(mDhHuQU%cTosTqDRp0ZgO(sgse$ohkMbb5O%WooU`hZjHC7G_t#NgA( z-$N$h!7Ti?n-(l(PurdBTB+64eM1c5z9*w;$0`o>ke)62IE#9pG{wap_Yb*yv~CPx4D?%@#XMMxP6H`Jkod^VZ0Uis z(5vVltcHo5w1!5YZWG$Fe>WfJ5x+6)DaJ2nupztHaPfRitUlOHYilTZC2@a?!k7oO zCkD%^Zj`B^5Rc{zWTQnb@>p}?k`6Fzk;5TIqNJaBTs59(xhSg zu0>w-RjzW?(g%B3LfM2}<__WVv!J<7QPj<0#wys&$DxA26BkIE;!84uyjHq3VO8&k_dJnnU8qW z;M6m}QO!$X0sD(i_b+s;bV;s3Ak&i5)yrR}a(=4LP0=UUoslg$ePw-{fy%S=xkLF6 zW!?S1>oaPp)e{mB?n8R++SL;aZdJzXRS@fUq`qlAUDUfe%)eV+ISkKRAqG%*K zxT~50Qz%*$E*K$M4JCHNs8DgK0!#`LcN2*!3Qr}b%ut&nXDk&q| zj0G2kRnvl-kbE1DKBFJ>&xckiKndM)cBlXayiookG z9(s3Y#ZYGzB(fiRda{r(#aTMPC76G&)kvg@DUN&bLUu=%b3t8G^4D8Nr4r5ThZ)?Y z+mw3&$Q{%~pS29Nm<`DFL{z8Jd)Mtro4~+r1^O;082Og--Uy1zX?7PBj2V(a=@9*c zX#1DVDcR?Mg0$4H+GmEhwlM)zpL5$Zlz*`GcU2>OF)R{b7$-~sWeUs74)eNS1*U~Q zAkT|Gsr6tUye{ZedX`QYch>(vT_V?tq(_1QwkIS8sFO)Pk@DGKhPT8ZvWgelIw7(! zZWLSt8m*iz>h#gR_p|fuD@lK5xz`CKfG-}9)OEk`{_f}_#H5+zhXU4TynIR*f!v3! zLs<7S$ljaTDL$-*j03{rA25i(4AR&i_a3dZgJph(m?Q94%asn^uLO$0AO_3SCF>V4$CTsoc!u^PYT`Y4uW#_d@USt%JM&UibD)+@=52$_n z1oTWC`mz-4>?0=5*@WS%V%4+}32azXb1in-%i`?9pmdyORX~B5NGmOkgR4RNc_ZSTBWHPm#{PH<4dGh&&y#ZMLr%6MAor`H&~&T?+JA9Q1hm*x`O*HRfI2 zi#rOU9Tt*cG%*@XY=W>L{;63wF!!YrhFBdckc68dVnKy61!dNTLS;!?J7D2~4Ix1) zrT^BBl&8&hq_3|J7S=w4J(bhx z8Lay^1scGSA3K;aw4?eo+7ymayOfv?y#$z>QOwMMpUUc#PgaYF+8#2FO_ZXT3s3xT zZhp8g?Q#D3xRN&JT@dkojWs@i{!KCiytpvC8?KJ;+7E9c2GHloPIhjjC+BULRM+C+ zT|33Sd4GW{+I4r0P``;$oA(RD^etsX-i;HYXuN5}EIp50JHkU!x7Qh7(iHr*qcZub zB>UlZ^ZYE0FYlG7>jBO|JHG>R;RN$(+8W51H zulYTA3qD&{8MOOq;>Kn?3J1ULvA^4iwlj7yx_EB%;f2i$F_elqYS51sval*u-$LF= z71C;;I_w^kqN?aI)zp^*5WkpSJ@qQxbUS`lX)FVKj*Qc9$i$@*wR9CIr(*FhsV1bmO12-V_4M`gd(_Q3tAFvE^rIcH6%1zR0Zicw@W-_5EfYgEB~cY+Fa4-@ zX~WVWh^8EY>Pt}^y$j7p1~7|-il04T`}r|`gcb`uNUKo&Yu_0{G38oTzS578(t&Zf zqZCszbsm8z0v|2^T~E?3dtC~b!sxyRh0gud%}dJ+ss1wxO_6A zjui_?#b<)Y1_n!kbq6Vl+Z09{u|InaGX?i;;ck4U0!Zxy1 zu~ratRxzF1f$oB7DvzlxH$nu;8>prv z$3Kuh*bJq#wrOi9bZBprign-^+`}Ii`LVxwkfo*tre0p5Wv%S&IFlFo>$ad>sF$9K zMZEFYdjHR^hHd9_h{v~o`<L?Vvj+%yboL!Kxn*p z)-8KTMvY};J)@bOjTp0-IY_`&Ki{J-D!v|>#avY0uK&5o@;u2fHNj4#4CEKo$}dQ; zBI?fZbGAf|v~{Aci`(EIaPm3~PXP8Lg>>QWHgvi{AgQw|8jRt&c>Yir$U3zmCe5F* zp^Oj-Qtyn-Ualac-Qdfhj)6VY%k$69eM^1PHAT^o4s8;r1ikw^eVE2b2fwrLAjD4v;SRUvEEui?pv4BJUDQYulONFKY<#hNM zO2=~_!B^A@1%-2#e#S1Z6&?gqv53vdAr{Gb|ElnaT880(u47Y!9F&-XqOIAe@fjGG z`&ispnX}dTC;|NOPeuz5sfZqtrogP#U->}h(wBwN@AI$cwz?yPe1!1&+2F3Ct%%}R!W1J-$2iaDrmTSwNM1FkQ?)nd@bsQk?_a$oend&jr6K2Mi{ti=~&-q-%|?}g$vzQFErRaS-F!N|&+Pagw`5oJqU zd=@lw8PtFVa^&I)t%49iT$3#(nP{)iitxAuy)UU?hKCr#Uq&dYggE<$urT2%pDs^4 zETxgr?r;$dg(-o0t%(?SPfJtS0@sD2^uRZPHYu*9tWYv8q@h=usr#C)PRkxh!6Llz zFiF;CEo-!Z^)RDa*20$K`L>zAvQM3AX2Iz0HLygIkHeCj zg=a$sPfahdjvLcUa296m_%)FAy{O2 zsMb*_k?%IJ=S<#lHIT>_k6*<4&^j^QB#t}FDw-`TfwW^sovpbtYnX7MuOK zt^&H`pX5h%B4Qao?kwy{W7ftF36b@M6Ukd&g=BFuP~JdvUKbfJGCQhxV&js-Y&3MI z85fUvN-AYdkQZSVf1y%8gtEo+UkkBfHM{Z?%h?4NaS8I63QN-e%~4&Wu=(rV?j2F) zXw3-#--#EV>`RcJml);K|5Pox0vWMvNTq7R=TZe?^y6q49)CpqzVgcF?G%iJ@p@&X zHxmil%*J#AQ{Iknx?9QZ>Sdn_U1zqbO5mE3GZEh|iKT9 zPaUmhJaE)?W$R8EbdF4|c>&4!wHR6sgrnqaHLc-1yRwjW%{?BLy!tV;FOa$|v}Q&^d-OZa8edqK_Vq`Om3@D3!(0^;F{0P{;3J`a10 zwS3N6+xd9{xMs1tMe$$)GSQa7+Oi|jM-CtU;3BBB!>=&+v1U>umGkSviwzwr84>{Q zvq|e>2<4ekhHQ59$jzgTkDAWFy3gG=lmLn>&!c$|^r(;XG(UKadW1j`*b{(!+fYq! z0YrA>h+vVX{yXPh)9=mpE!q?H)C!{2SPKjgwem5(Oiwfp_mynN$F<)?X)?{QPH$Yx z)eOmj7s~#jk6rPtzGD%QXdWUppgdHs?BMnhF9_<9=(agqR7d>M1@3+Whcd;>+QYtw z&zD)lY-~%`%H)|A9X@=jcdU`tjJEiCr{iJ(_gqo*WVUX*Ql7+D{73$u2=UVh)uk>> zVEV6s0UWUha-p00(~WUquT59I3W1U3?kr}#^=Gzp$k4Fc58U0#$n+c}v112ONZHO= z#SWSKZNwIkCw_W@9Obs*2=4WjpWxN^I%Vit)~nU(L|InbiW_Z&)X!3(dL6eSKe!+S zwZHCg(P>NF9OTH5Ou6BL)3kFd^n)AyF=M{2q(2B1U?I_-%}zOl30OpIkH{kl-5yrM+NekHHL{7!LQ zcQz`d+#zNWeHz^O)dz0uveix}(@|7b`5T2bW3NW^>WPx2(cR$YKx&1b0GR^!Vh%`x z5j%*`g9F_I^zD4@m6jWSHeUtSV;8cfw$LG}T8#b`U;lke-Axei<}qH#kCh9j#%^rS zb$56kOB@xQdN4}Np&EPe(kBA_h+Bb!CFI&K=#XE4s%X7^5xH?j!2m@9kxGv+&ogbG zSUoq=o}pd{S-LGgbVi(?t%cv_{ey_Pde;i9p{v;Jhe>KE&TV2U*fZh@3d|?Mnka&e zoa5A`q6y2)%QXrbk_{j0lF?^gFU)Tq$V=PlF!IBYCoK}kZ= zooJ_HM45emU0wIr=dyn2?<39?v^Rabf~gw$yKR0I3e2!ixhIo+vg&vK0w)^Z>2shX ze~)f;&lS*ARQ7huRtP~0%*cQTJ$Gy-neC~2ueol~@=%&q+AC9w#9co+Cu-5#`kJk9 z=`_dk3-?}&Rtcc$Ei6}^-h+O(8L9!F`OH<*opRNsOz`(1ZDK<9)8H30!HVtl(;0Xv zhI*(IwUTHrDW_86sv8ZoMTH-5Vyix{Q>yf5FHe^ONsIKGN?`?YuB-1fy_uF^OjGD; z-)M2lxr0c2U0W_gh5*s!m8x|yu7g-Kgy`z94#3RjX++ZFEUf4@kh51*X)$=~$5y3N zv_)t|T9)N4qHqKbS2#eRvsC9ZN0D){l{Z1ju5X>`=)l+E!`})Cd*-b99Vix*k8z7kTLIpx1#8aO@)>EU)KW(Fk^;UtP;TL<4)(R+>5}`l+_0ti#2*3 zSSU{%S|HFzIWf3q!geqEMQf9*vX|BUzQ3!78QG(Y&g~l;|;vRy@#!Wu#gbG zIJJBY1i#khYh2NWk+bZb-xz4p(Y)$B;!)hR5z{Mt==3FIq=APJ) z0>d15JXJLx2^%Y0?4t7W#R=x??Ix0!DK<1LwN0$1a&Y6`(5z&F}jWV_5;_GXd$E@7{j zJ)Fny#ZYO)-NfM+V-Mueu4_EC)0E@pIB6iu0k8Dv=lr`pG=IaQi{anOs3Y1&p|%PO z8DIjei@8B_R`xVmiqT4=6I*DEX-r&ZYvby38>H=%XqV0Ve$SJ;@8$UvSXu=s3X5zE(Y1zWK zxXn#kMNv>M1tbR06~xb~d^|LkH`Wez5wsQ8-Bmn|6W5>Bij}EOC%m`od9{VRn^;_& z&&GCj*hSnD8OlyVU3zZF$gbqCTJ^l)p5Q#S^-l_daxiT^N{3bIHl^pE; z4J6FYb;O$Ovbe*I6~GyZAwdItSM;z-)bUkYp z?W8aN6%SGmm2Vh=$I-F5I|EK#7nIPYIqC?^78s$lY=?*R6}Pp)Ixr%J$q!3&ujqEZ z_@#>wi~UMdLMcTgyt{Pvr5RC)J26kI>6Bt-mX3j>UdW8BE}kE;BZi=bqxneIAl#m9$HRf3$HsW*In#ih{k z`SkNE3MWyeqc8vQOD$}!;09(KFH4{2eOT{|5*feFL;_lxig$UM+@T>RZ1vP z8fIAA0h}^V`3}urqmy6Fr!MWT^|UKl5wgbwG1tqWrZUJCO;!V26AEI~D|;D^Q3<>4 zN_}f%AEWH*`@v$d7yS9RU&bvJ0%kJ;Rf&C+v6^8&yR?1-1NP4gw%RPyX_`8 zInVlBmFvymV_n-1U|ZSR@h9i><#Mcer|@M7d#l-lC)_IuaUUM`$uqP2t2!LFoea`DfYdV5{MvsN5?j-W-sNcq~(gS$2$-Q+8{z)3b-J|3IhB#29 zE69tz(7LZ-#_QnoCXVyP24G~FbI~=uQJf5YM8fe?6T_*zewlLPh}}>=E3N!$B017H znXYg{CH<-p0T+zz8$$1gYz5EpDE}HfjoMS=C`Iq!bQyz{WMEmo6I9{WudM^nuC(QO z5zFBh_>re?F=DsndEA?&@0}{61PM?Fi0^8P2r%>axK-7JFCw~cI=!&9r4qoW9y@3# zy?eXj0WV(vp?dv10QGR&D@A0Q<npiO$F;}Q)C8~XgO*KB>F0|btYEg?E&x>5A%~hrYr`q{j2}7ZgJ!+p3-F!&eEkH zD^I0}Ko2GoSJ%l)y!0sa#hPi#nG0Fl zzkfgD755$K$dirMQ3x1`!K=+ex~`CfVHuMY(|O|WH-uOya_p#g<=u1hdI7ex{1yf* zB#+bkRB<-cd3OF(+emYVpnn+=$SqmfOm7QOUqanF7piGh#8PC>L>a`B{vBVW^mwg zNBkqu<2Np0iw>Wne)D3!m6(f5=|T(Td3puz2-lCOIdSi!r32?&bBJ1@cFdgxIa=6v zKhWvH)u5-xA2M!v4kLz9t5z*1LGR8>BE9V?<<_~i^#}~C2Wa~~7(KB*dBqd-KDhM; z)2s1rhr~cG)CZ#n`t(p1e7&eYOAFeAV$9{<5V{VEHZ@Xk8IHtog-O@D96N%6eFSGM zuj_~Zq^h;tDsEMfBPPxc3rocoj(p~ANjx8Jg~#V_1}^rH%D5j3xn39T017?QMsf}` zzA+w+4UZ@sP+%XBuAJDCxd%=5Hg4A9{ra5eWb#{&x6S-*rptz6Nj2B~8a`WxBeD9D z8mtAF9DVIK2g?`f+;(aVvVGEU0S(mcJihUTa{{cg{ytsYhBqeS#RpgL>C>$)a=8q( z(Y1e;1>9ambC0>D$@)D-bYOEf%V_uA9>{q2#oV}6Q9GF=@Qzs1V>uKNeOw-MDLN07U#d9f@> zdbi%|Zf`I0egSrI4YBZ9YpX2W_ps+r5~=S&QT z@4rLsznLEfplWuWoeC~p{zbg->Kaqv3HN2osq*Pb@gE*@;JJ;?lT(UBSTvLifSBr4 zC8i=*^S@@#Ft((0f3;EWPj*0U=tyBB7Y0-YF)lb{^_Ke)%n0wPcvbuv>$y<)CL(P) zRNbEb>f~nNZ^cybI*{bY0hga;9Aa+aNZZk@yv~)Q*2twR9Q%K$&0;b`6BY|RQXc6b z*f2r5akhE>W_jQJ9{X6nAKr;Y_?D?VWZ@vd6C;vnb~U{Sf1}|?B_qxYZgx1H=UgQH zGEhR<^wGJ9cd5Stk9R8qiJyb{Bf?lmZ#gvMC0<6n zv`ZMeRR{>OwYxKlKmxX2t6Pgc?(t7WOZ{^iA>ndd(OYR%PWJAkALIW0ke3U0%A{Tz zDU2ty=yPgG9*!?Im<3FaC|L-CDam^%W?=+5yuK-S_t=}Gy9 z&^NMtN+(?>``xeC|NcKSi{U=in4Ut@rNS~j(WV( zBY;n!B&jpf2LRq8DElbs#@xOypxs-+b6!~2<(TU}H75)(XS}%EhHo`}^@5eNt^E81 zjuDyKlM!;PZHS$ohk(OhqT9u&hbly2E14l=7=uF&T{6I*xEQ zKKq4r8fEcO^{LHe0-&}zANN!aP#Q{m@x1y-xxu6}GIE?j!-GeWmHJ!eNxK)%n$10vB? z3kPLTF;-&-_ClKQA1?MKM$Tec1H#TE2^C5}D+@it>}w!40f@846CS>puLEcX262z# z%M?*VU~0*oX>e9Kt?n}O4Mn4Mv+6q2<96jJv5!&N-A_vhedTo-A>(P(N5GO1+jzjt zuEg4tgEh`Z@#Tu*%|`MZEFpl2t1{~^SXn~je2KkhfhD5B>Y*rVV$sKKtI~KP8(5Te zN*FxA+*#HyYYyIY%wzJ*?|x062BVIZU3U`f|F9+<&-s1+4xT};ZlQggRY&yWmKo?O zL@{*x6K0mbjmXcfx>z=tD!doPc`W22fHOaF;#QLabE#H0kifbibaZ|e86Tkjv#)J; z4VIp%L+XWndRD-Cq4Wt;i>9GObKOq4W3&*Z*~~Th{heJO&NZGl>vdDYe=$!2t-JP{ z?Zgo4f{K=eh>Ih`ZxU8Rbc{6w+Y!)Ji-+8fjgJ^GHJ@QG%rTgMomc7;Np;p zeuzKScZ7X*|JCutbXs>CqvW3#vb0R`=gt7*SW|l}|B>9ZFQFeg*=(^du7fY1$U%MO z&kA-feJH(?b0-fzSpCvaB>hUgP^{2L(w(s{N;Yn#%g?Vrf7&B#75#r8bP>R@o&H3Y zeW|F%TuJoEU@-m?e_^WPdkvnC5l3ceyNg%<(4hxssfi~@3*4MY{p`N6AA-*ckY!&* zKCZMuP1`Iw10w3xV~PV^_vzq zQyo)U1<*&roSLbw1eqeaEDN4(HXB-5j=>(MhOeIcGLILZ&NI564A!w?S5>W3_%3^$ ztoVcOz(*TKFH#rmUv0QDmnLIjhzabBm+jiV4&nxYBY9*(8W4(&Y9OP{X3xdKxr$Vp zIxb4y`E4}z-ZvVxH)a&T7nq6XCZlh|i>~)fL8M=OE9p)6z*s{6WE6a=BB&nt+o>To z8uQco4j}Ha-MdjLQqVF53ebS=&(Ph@zLkKuFAj2n~ z9!g^KO#CdDm=uOO{Zq5K-=4}qAU%yPd4o~wII2=j-sK^4%vJ~JUIJ4B_V~#imXCe} z9VM$*;X>!+nl*i~_}uX*_Hoe?78I1SJ4Sd@)&BzaNp9={aRlE00(>WpQ9QhoM6u%Eq(VFy27gn z0JIP9^2tJ9BVo$rmGqA0l4zi#aSR%-@~aiA+?qZFnJK+%%+Ohfce3eSH9v1Bdt#-KzHX1Nmh*c z75>D|ku?kirK;adig)TUf2ZvF@*$*H0;qltX4pM!vyGX^Jxy*M1TkC2n%G=buXFTI zi)m}|O3MqZzF&-(}h#xrl@hra0tQ#dcK2>S64% z_GaNWT#;83A!`;rLqI>avQx-2263(~o^)wyh4QFF6=0zo7Hlq5@H3r#%=fWuwpx$m znR#qdxs{aZSrZq)^cudI0GD4+wUIEU;7uh3FE76E(-ujv)2Hx;-&Z=W=ZXR{l$e^y zwr=g<;M$&14PE7OSNbQZ#jR&)-!$P@h-!~gA|T=Mf8H}|Kd8k{Q0>edUv^^^vg}7J zLGX7K>^mcG3o7dE#ew!&0p{pjg@H2jUJ1Hyh(~pbB?2c$zIwNh6V4VfI6J1Hvd7wE zKV1+hC)U#ODduJ=YdkMq-s@_xLWttspYa-y{Drb7s92aJoK2)dcm_n0~9ZIQAWUiA9^Z3BVv^svE#0V z*ligj+^c~Wth{^laIn<9hu1xQe!}|Y<4K8eHUW-H1@<{6@>&ePor%xIPiLlXG}N3? zQXQa-gvErML96=w3UtWJccjqSq*y6I0?IA5%7<}*4f_0~wQTj8cynC_a#J!0;I&;e zBOO5sM`w=DWdE_&W%qOkU`FRtW`oJ0?W8*mRD$NqqnURzR;$h*zT4-QS#kf_v>9fY zD2&bCHvAS}>ajC;&bqG<#Ca52j5H4~F!o)J*4KNb-n7K|R2^~uOcM9iC)P>^X}6BV z__Ar_UIJVPgt%1`eYhcBvF*o7OsUbGx2=~jn%bL3#mnd;*QIiD`S9$+WwxE2xKV1A z;L6?KM=e{{rk}TCPM*x3nTE|*%U^%nMwGfK_e67HF_03j&fyhg|%X%^!i+ z1hc7m`>Z8t@V2bq^8SU&fWJ%5K@;KOx5V0qMTt)HTh~^@{2WKqvToYeiSw+9SB$>B z7Kg_Ue;rAv#?Y0zQXi>aOvYY#EPhxc3qJQ;50GCmZfF*Co9@-a@6FwdxXK1j^bTZ^ zDuPxMO ze-MKsUSx0C<@2<#6ZK<=`#O4isLT%R@EXM~&gOpZaOwx2^SZpiI}X zxgJ8)Cj}5j5{kAJIyc6m9N^eIVF}gOS&bTOOu{rP)ISst9dL9C$QS?uqWOg*cWu5* zt6Z~<34YlsA`Y#rPpETa{>qNU#4%%G5>|HCU~27;a=+(+FqigHP*4*!+3o+1Wbl?gwYz?#wsN=m?3S~UJeheQdE*-WR37fuvc`y z9!CfM5x(8;O4euN0-o$NC-RJ#R}hogD6<9q{`x=1bmF2ahJW0>mY~@lM87*bm|6pz zIy=dxqo447v$53fkq*QHI*$!1q!GTFp4Oy|>-AOiG*Dqkd+3EsKO> z`n+=)8)~GUY(@tYxFFi;U?yW|qFSq8*qdB-<-zIKygVUOhvZDTUlwSRPMefRAZSYZ z$pNQOb+fbDaT3a*M}Q#fy5r)*t7e#N&AUw!5Y7=oNj1%f`TLbc0kGJ0HU41W?*i4g z@BD#=_HFo7wo|h8#kUXPKo224so{yn(61scbsilH6H5OC7HB@)7y+lGqQ|Q)-FP9^ z*Iqw+(%SW*0V`(ulJ>hddzd}+3D~3p5=We-0~R6oJeCQkw!cZNI^AXkN2b(`t^uxK zJY&|Mv)f6BInOLo64>M+i0fS>ETCoiQ#zE1y74A@@?732kO zxA$wMeepS}5#*lE8YM1!B{BmfKts~F7l9FIKm1lSAoH-yVl@(Xv;p~Kvbp1YS}eXS zcs5SYY5p~z3(@#qS5MI%NHtZ@#O?0tY&&9m?AE);zCF;Lz(P>Pz1TC9HQqpEu4eJ-QK2nbOymec6e;ItD0Gk>3FO{y45pt714&JDIK+9x%0F^Q0Yl z^#jc;@_Y9efqqEmbDQ~~B+bw>*GED`u^DlL{V9JNw5&eDX7xaiD& z+{IJU#1?C1tlOL?u3%WFsCw(FQQ7$Y*XTw2rXO-(zChZd6Jl?BOl`L|Juef%@fy6Z z_B9`N0uiiaQQl{zZI{|)+o|ieKR@|PQM0L~`7=4PyQUpl(B#2nD+c~1V3CwTQ0{YJ zA^yjw(U0fC(??2X4K~{DY7Nye4R(K`#?s9fVSgxPlBhrt#&FWmvozBWHrrpy#)D_w zqmjUVRs}g_Sby=v5YA)X?rCswHi;rp)?j%Iu{^O|#`Rey$I873WW$Qo+4q6JxI)P5 zo*N;`;u9d3BZEg)`=D=w$0Wf1G|uL=%~u1mPe-}~y7z}45nZDf!=v9+(}d6Fal|k9 z?Nm5#;wj~?PehN<%@vPQ}Zo^!{CHz-~F*7u(%wlR&cvKsh%|HBhu;_ABwcR&zEO|)YoQCmU_@j_I`NmRcoBQivgJP37|%XT)_xA%9u_f5uuEb-CqB%3CwU8W4rP4@E&Lu5 zGFg#3QM!gBMsa>mPPGK0-^v^psX0wFdX(&`%cq|1WUyl&LeNLw#S5OnNT^7!>>C6>cYaKx1Y+jKb zp!KZmEU?dBv9AV&giWl(?u|es^+PwViKdDJqnt1F^}V!X8cyY~U(oiwCXZQG^qq3< z*)gch?T02-I7Z#Jx`0@h&TTsg&=%zgNZ+nKCV6~9N81m3UD3f{AsR26(l>lQEyW)R z$w-Kn3Am(zNEXC$YfL>wyv%l=Xu37CHy-n@V;o+|kFn6bDwcdLy_Oj?LyS6!{nRIm z8u{~?73o#?T+`w#)e;w z`jFVY_EJ{Jd6P?wLDHO@Ym?p&%M1;Y*l0iB7xE$pYOSvY4_weK9|D!-WSZsH0o-=5 zYcC@Ks6RaZv_-!v!RYJzVX=P&w&&sxnjfJXkp7f^PAvZ6@%vXqHe;v_Sa-W8Tzh{G zn5v3a)lyocX*j}l13d3G(Y6Cb0(;N*X)gYz$qL^KY6kV90g|XfH>|&vm4u|vF~C6U zc$%~!xmMSoDI5j(lTaX|zno%MZI>e-!&`>rkxiDqc#-s`p+u|)`u@p>SbVpKnbsvX z1%e*-d3qFZ_a#Q8C&sn1G?z7-%?3o8Z;kcx-RP;ml=;>_Bxh=50Y$=CkuLV6&H* ze~Gh$JbrCeqkPKV>)%2Zw;%2R9o0gak>P-N;91snmTusbX8gI2z{U|i>y_$yL`8no z9p|f(U}hmriIJnTXH}qCzFna|O#bn*VS@)@bj9g~75h01-!ckrEr3{VSp_((atDc9 zF>+>zHz$T`$vpoTWp5r1)gQkPD@78c6tYc{REq4o389jv&AyD1?AaL%Cxpr}p)4sA zvXo_#ErqdwUlO*L~l|{4?<@ zB~J|AP3N(73T8}@G9D?^X_fs0k_fsif&R7=u%jBk0&RL(=+Wswwu#i8Uw()3|24W! zQ=|5>S(K`6j7FyJEN|ZubY1*7_ebvpj=(?VzyBZnia+ZE?CL;%a@kKCm`_R@ER+e= z%vKcX#t@@p6;fb6cJ9z1@q5iVjt;dEj-sz+g?`k9+g3*uthN8FW|7LB@!TU@R4a$e zi2u~qt4*utE?lg$`9%q4il;?vA@6gB6E~>^lJfDm@g1Jj?KUU&Rwo+Mu(&_H*POM! zcWLM&?NB2E@rwrQ*kdg$A{vyFl~Ydp%=N&tU!2@XlGS~$1sKB)d#Q97iJ(EKJEFsf*y0K1DL2QVmJ)NB_d91hwhvIF$Xf z-w1ms-n%;qXT=gY(H(54P+nH1(ArP#LzJSAukBe;TEe~78T)f$8+ne8U#N*v3X&oc zL-DCXf0Y$daJ0GTR1kpk`e1E?L)$VxA~{GC={h@6U$sKEPr!)YaQl<8JsMX0`SdC^ z<STVwUy zO**smJSvFh0d#SQ<`SHCw|qT1V$RhB-%svp)M5o#zuiS=GrUeg_m6QxVnP|!eXGJD zNd)@*KBm+kr3HwK0+~YY%;9}tm>2$*#*px~d_8rp_3VQ!Rgmgd#}YcYtr3MV`VyH# zvicr%EQ5%C4Vxlb_+fup-DwcpYj`_jo^Q$Gn7J9h0@KR04^}HET}e#^S|2%>zaI+x zLPSzNLf9Y21L#A!qzBAYKqT>yDREp?Nn_?EE9XsDlCV4fD;S@v#KIYYll!d%_ZTxP zvF!p~9arp%Q@EFaiHFlPIZ)>V?f^aVSy4{Wl0KufrJ}(MS7Ktb3fh;r1!upJquSDB z2rr>)!S8UM>sofFizVbe6Z4+u1kKbavAIO}e?PyoRX64+`WHtGM&oooh4e^qyXTz5 zfjwFY`eJ<1ptSm@gy^$Q;kT`i-Pw9CcDH?&+Q>sh!5Wk}i1csxLHmjcC6xiuZVqj}&KM5r97xKvm%K+63i$r~ za9Py9uq?IQt?97wm540#^8)n*vv?w(%zh(cSH+Mh>{OcL6}w%0i!py)w9zD&Jg z)xO!VJvv}`lkG8wGuOG$M=g!r!SSQ3zweH|69aQ1zR~j3ZhsIX$2DxVlx2F&{^p)Y z@l61OBhtH})b=K-GU7Fck^{XjUR`#DH6n|5l_s~57brxA^*a?+7muKOu&0Q!xcB(f zQ~BVGSan*v5jst3uiq?rA1?bZ=5%xS9qjUf#_vC^&2S-VzjmkElvt`SE;#5)-H`mr zm#q9d>K^NKeCSF%k<)EPpQQo%Oofgr6q-Lj{Ug#BdWc`Ia%)n4F@x`7D)zWC>A)kOu1vcpw*AP+3pV&*j| z%j&UGWC{FrJhq)|scaJZc5&kM=;F(co#>xd3&`(TAm)%sz8-Vm?ESx&5d!DSF!bPg zl_2Eo%a)jvra=sn)@2;vp2dm`guMLmX>UVjlRKp`S$WWn! zF{1*v<+BBvue}QIYj1283jtZvmIYAWcAF7K%qOR?#33UszdLc;HU4y-WH~(KI3M{K z1?t}Hv1KB^K36o$LhVpHUN7`4HrdSZ)*b|YyDMIVo>e{sA;_bOh&Qelypc72 zu%gzgPU*L{lhjL0a3U62MV~Ygk?})bJ8|qA*+(aXgV(MqQhCe&IHTO_vlED&A2-tS zUenjq%Y#+vyo$VeBBC&c{A=QaLy%Zl=8=Cf@B$YMI6iEU>LvO4rPDcPcoFpMU&X8Q za>DUG+vqcM*HiEG%vL(ZI1HWfe)RiJ0(g74OD%skgXO+W+#!NzFO^yN1?sALLA4BV za%Z^^@q@pe_u#$^1i!s&QWJZ_l$)*HhCnJDA-BFHuO#`r#Y4|}6A7(?X6Ao-Z^l$( zyKW*st+Wj9dV5W_aUVu+VyIUY62_APnT%jT%;NK@)n9KevKBzIVNtLrLm>-RY`dfT zpQ^b}J{1P)+HfARMT-gci;%t6t-R-mS7A?jHoqsChH>~X`(Pn+0kza>_fWrX zKc!Kc@A1!_N{!?%^^_E-e}!zsLrpzJVZS~oeD0>cZ+t1mFll0k6Zo{Ugmmtr#qUD` z6^&typLuse*TEp~xA2E2)O8moJxH&rHUa*eB zm8LMqJcq&bMriIyy4Wb2H4`1t=@okHPcSPk(xlEO;UjQOoAsDxdg<`cBla=692x2v z#MILBiDK@MXto`Q=9YT0X9HDjO74NQ@JELU&gVnp(g@w+zJKo(p0#S;o4GJo>DDdk z=L9JW8as|sMKMV`}fcKWrn{767%}|*1a+j_&vRx+3)rNic z{hjXC_*qeg85`8RY$z!*=h+1&gCxlY&vzB{?9HN+&vISdPJaa<-taXe9#y*lA$Cy= zab9y?S!+8U;hM%C{tOazLkk#iY`D{$p*gA&J)gb*Mdv`;9>$cUe!)hC1SMlUt$_9ha z7T7PtpdLty0wCvbfy|9=SQ^No>d}cuLM*DCYLC@z)J#E5I@S)KwQ?|fb)g2dTaI1w zc5di6&-{pMV8|>Q$de{9AW%B}<0xzWy~q%bI7HjXpxWLk_`@TKVAZ0|&d9(52@<%` z;jLZMbP~^VXY(t<1dZZ53yV-F6K~OesA=KRcBK@bE#hln-S<3|a~8bC455B)4BaKdQL5&?AT#xMoE=cO; zPamAH83D}U{0o++wf_N)GX z{Sx4Wx5&Yv+I3sV(Yx>^ZyY7hw8?#Xu~%!Q$0ngSIO=vjX!G@5`54IfMETWRyuHLA z+xdlss*@t@rz&6BEiig%&dq4hi*m#`ZvkIW;2)gE0|-vq8oa)`m-I$?Ad zp*sFL6K`6`=k)J)-|Nx_1a8f7=F>GqnZwG@o`&}0c#2JvgfBH8^>Dwul31ncqLzob zo@>%PR&C|+2-NZ$96s&GdMIql)W25iq6Z9hW90S*gpqd3oX-mxl(>cz+A^qkN@KOgwUsx{65nGm_?~K3?xz14ym(W{9?>@^qU8E$ieNcZ>pC)k; zW>kF#!dTj`;mWUS+clhnJ~*~CMBR#wCGgJ%z7XmE$yC2%m8!ye4hrCFzC;Y(zqn{K z0v|*if0v-0nEt4J;T_k91uZ;Si4=xR9Riq#j9)KdO|4)ji&_r=LOwS3`@@A1)VTWd zkRi2h;a!dyx+$=*vNfX?+a;;L{r8vu z)@wb*srp%bdB~5-)y*ifXN2c}&HcI{AmV!ysJvNqhub+Dm#j_+%-%M3UzLE;Gy+&p z-iIb6vTaZSu0w>JIZZ^FLYgL`Vr2O3HXOinw|C&xsNFxxXfBf}Tg*aw-LrjYBzDpe zn&kb#<89EY9d9vX^DgUE^h|Gif`DBMO3D(M7Ha%e>nO$#{W(FmCYG$XX@2nrZqQ0e6l^xVyJinN(*GlKIy2M zb?XPg%z4gv9*cQ0dg8g4Fs&P(;5)ah9f4P;9nGI*BzuG3*wsW7;Z6XquRQoEJ<3K* zHIlgWq=98m1-1+%E=PDDpT#$j;=){}3=vs<4VMy7``EVw7Pbw0|Mqme^*&B1;D!Rl zaQpDy+`Pvel?IPbNs!%67JJ|e1tcVZ6R7>goAu@Q>rZm42yRzJJU)&5X{+<~3WnjO zNuAL8kDL^BlF{8!eap6QHN5^cUy?4D2sr6f^R--jZDV}NsY`Q&b=6VxZebkpUGWXm zvx{%2E%WF4MEyJQkLz8GdCuvcaan?Mygwb49($ll;=4jYQ8mpbW0^o!1-cGvxDE2q z-NkrUQ^}*TaSHs2f=Z8+=^3n8GBG zDpk2Kx5^wCzGe%S2HWx=Q*1Vy*bOs^us4Nnx=o+4f!hQTNG{hdTF{~wOT@mw*<6yQ zL0`lvKbADIfeAQEha82`gyV!Nm4u*^`oa^qO64K|Kk8wwp2aqXYrziggVclrcaLLOy&@VxJS27Tyj`k@&3pui^) z=~DNZdvBtvC;G`IO;Gs1A6D!6nB~IIzv6r3OXp4YQj#K3EH)WjZqb zYoo3P8d=8o;t==bV3iEcSQUT5G$7pDn;~^~;?Gi)<^Mz>9EsZ@)iL8jJqf%63~y@_weCWFP##J!`6iG3?Ek(}^F%{>{V5)(0rnZ4L}4AFd!uXj@m z_$j||m?$m?TJO24o1o8FvDvW8Y(5>ebjEWtma59>aL2WnI7I7ME4eu~5mX9FFepuV z)?41c?uyY}>Pt^%Nme@?8)+j)3V_SG`?YkD?6U3F{%2T{dEpsz59piO%C*-vCWOY|C`8T3YSZmR zfHq?ceV5x|$HVBpu}BS_=lMziInX?C_emXS+uaq=2%C2v@rv3!VKR+yFlHxt6SVys zwze8bCgG>>3dSQ3(6?9mL({CW+c@{SV@bpc;$XQE=UP1Rznz{}HtkD#Al)r;ZTj`k z==Pf1l2ep9Z*G#D`lg~|IGzx@G^|BbxD)qMHh9Ld2UK}b#PxuxYZ}hSd)`pBvs>GS zX}|24Pj(E^(I7JA;+%cJ;R0{h4a$4m(mW!`QAaNeCODWqMSQcGay5R>Ie!|xkWrnX ztZ=bfBdtd!i)eW#YSeWnKE977uYtt2@t@Nr=LW`MhoZVuJ zyQ)i|k)E$&7Z%oxAy{~y)%e&9p1Er|Wh>%=8w<#VP8ug))^gmKjWs7F_z2Q(Of#^w#QJrn zbN#cm_kG6h*i$IklCnB?l-?T^_Rj)Dfd`9nPW!!IUCM)b_6=&wG_I3jOP2UvT>OG) zj?xhOqi3J_(mQ)kf?#Bw*GG$oWUW6AW~!(RUa-pk{PD%!UwWsn7Y0`MO^-Mr!l1A^}IsX1wqW~CE@|DKNnS}Z3|hi zkkS4iiXgIGSM6VwZ~xzRhQK~}Id1p$6Er}(k|MaygCYl?*0jWQOn}LJpuG&FZq*jm zFi)p?7XHh2^Ul4$VnxbuSy|R*d(D`VMF!ag)Z%R19dj-b_nnc+_ zN%KmdFI%I{SzcF;CvnR?X;BKOWxO+fgN12p(Ul`E+hWAM!!vNMbrO*M7l|N#*lV+e zEpCU$gy&|5?7|bwKn3BA4^69#!_W8)VZ9m^!wB|ul_A6SxXf7ife*UJ_ojMl(Q;l4 zaBIMjrhd@c2PXONAu%8^x{U*P&l^SM>*$F8g6Ml$${=_1Mz z_|YBJY26zmS~Ug=$NCVx=p+ndIZPST19q>TVT+npC+0)899j(&1T(r*YI|=w098{czu99 z%KeNvWt$$+_|yUYy=q*C(Q=$>qK6GerKWy>E^jf6F znrTDB9IJvKO;02Z_Q%ZqlKu9ALu-FCzQ0oj*pI>^HxvUHNj2*+{^>s7w`4E8cbFW) zY!jZ0P>MwZn5xdn@8lzx&Js`CC`^~^iO%nvySI8SkP&t}zVn@Mza&VB_$lCF;}|uae9s}} zF7WLW`qL!R=(K0i;LkCO4bET07P^edemB9dg{mF#mmX>Cb3M^DWu!lpbuiSDytaq_ zN8W3Ru1tXG2Ip?*fuJC+yj?<}nlEc+n+e~KE8KuKxbvJYHLMoHc~*vxBabQgWf_0; zv-zXSDsK1gV}GMX3s~dwh_Dk7zCZY%tS^o}oOhQiVohtq7?$yHxldPFp?V@tjP#XJ zvIKeZ1W1`?WE72kw%aSr{JD;7F)u|p`LpKeT*n9czD6|b?#%_xN{UAilM*F4rt0p6 z&jtkTUas3m$JgdhedF%+ACR(N<->I}@T+l&r5%Xd0O8%TiAtWhh^uFtk-H4)S)eE~3cYr8 zW1J#vQhaj`0m^)WPeNU^Lm5ocY@NVvu_B`sANQlf)qTZqa+&wbjG@o>?V3B6s9Maj}*7+{tCgY78z1#xWg=Wu4p25dI4Q*{?+Z#{T$ zRN4=m&-62wa%s^~A(BJi+)t}%3aGy@9uiPUkSoew0LlL(m<{XPP9ilPB%>;);uPq!dWLP|q)e03M_w{@%6+ngc6N5vLD-K%u4zYVUvpRkw z+A<871X|??kH(AgQ^A~FD&im@AhL%QaNAIMADu53!KWj>AYjXbu$-W3Pm^#=jChey+@XPe2rnQFmPZ|;k^wOGm{X^O`pqAam6f+ zb!v{PI|DZqoh#PoRg}lWOXSD|HOcS}5ucJ}*|FBkCM2Fv{sqT$#$BEFgMlxCd;)e9 zs^pk^jcX0r?@RXw$b!%{QzrCqLxJA$HfG@{!<2gAO(N+YWQsk|yGj!_?zqt|f6?&O zS$@~pz^~9cSBbsNnd=xXJ^FWfeB20rW<0*SsP`LWWSMHaUzkpeVYXtPNNMX{OV%q% zSc0FtcU+S%%)A}*5RK3Cb&z$ho`OyJEIYXE$C1Ign|2@UiP+(?FS{(x3rW@10(leW zDPBZxgUZ%+ahy48z)I$9*+R^=$CUhykmakbheE3GRKDglQGdqoZDC3bGj9aVAVrve z)W!XzEib(uoEG|{cHv8wL{#X1#(=HaZCfBhO?SV9#)wVenZ0QyRd}FVw0FbCq6icz z@-wf8Bn(1gE;!=VNAtJJpMmq0N5YeqOvfFM5wt^3zy`sC6Bw+38%OaFh z&(Rq$nqYC~j(pudbo#LC*R1z(el&S*<9F+i625xGXiXbmAqTu*bk18YLJ3MYcKMl= zb1iBgx9f5d_!<&0&XAh8#};MhFtr^(=;c8j3Vu_2)tza=3Y`(NEL4@`yVae9=w>^U z@dC+8nsFo5jsib~XdsVtCFTbcLU}Vclpt z0aOnEU|skJdp%`|QfmQwPQh1upB&H48rfBy;2FQ-77$>$lcwVoaPe_6KMcY+{o~ z(bd27mml0hbb-d`s(=K1T+mVK@Q+1LpqhPlT1|LT^C2oD`{TEHuX1PBZ*f76j)Bm+ zpKA0O%WIASV0?8JBXZA->d&}Ca_I*WtB$9MSf-~LbQl<&G^7U%4^RY&zz#FIPjMeY zn+#<5DP?_}K8rr+AQ+>3;o^<&V(c~yjpPNbyQiyDdM8_ubyB~E-8QUd(e+Xuq;}el zte%`>XadnS{L*Tp=rugWNvO4P-5iUFY}uHN_@lhV3OCu3_<}d^@+DJ`mv0rvW+dw0IW?MRvsOc(CPLm=%H-laIMc{Nnb@F;j;qJ2xs5N{kmu%+-48W48Sg?O|4@ed z_&k#AVfJTN@<3DavFlPF*K}#?5Bl{e<50_@XR3VQ0O%)*Qlb_9opEI5R&==JzyEpj zivRC7_rJbY=&bCjxHjiHta@}xmkYdquD|cB8u0UBEaAk=j?(+Ugw~QwEx=6Av(t}A zFYozWw{XGQuy4ex3o#k zgTuP~h?|J=H4D!lLcFKX$O%dDIdOHo<{N!1#rdS|?B_>4;45ZrF3n>ejzLi(ZhF&o zcJGy|XYv_B*UYat#Dq~&;GHA;2O781+IWlIcgyMB?D1H%tlFbDIk_q`T%Yd=lz?m1 zd`XCs>Q-{k^Q6sAI!)zuViYlcO`TW-9{7N>pM!+e{3BQ=fb}BhG|s7I4HW}fxIL{U zq6I3t2L67UI%z!H`;LR$bW$|7H|WP8?qM#gmEp)L#JkV(515x2PEGP@-&oD5q2gjcFzVnGI)zp?+elPc5fkdgieUr-a z*BAGL8Equ)f9kXBG17ojxccSHoNa}<-#5}(2Tou@%`y@|wL10=545KD=L5#4yYAv2 zRpUcj&}wtZM2bn&n&M$u+e)NYL0LlP0cJXR(BFT3AgcGBkA1Voko3Eb$MDFQkYo*S0jY(Z;gY1f0xQIh8ZMD#N6GSqL za^zE0q+XAIFih)|=}JO-q<#jg>yDw>pHCea9garJ0}*@e>pN}i)sGmENkNzvjDm85 zzetAB);~5-pFm*O81SRF&b@y8;$z??AFgya@k8O2Md*Xw)KI_I@I;O2>)S7>c?aq3 z7f zb>uJMKV-41Ks?0u!*b1G?BWk{+qw1V9pN(-M?7*J@Yc0}gOAkVQem7AXEP~%u2Yf#!B(Y_P zQikqVZ}|zZH611mjEMs<-&*stfJnZAB%&=~1-+ zHedB!F8L9uxJxXvmxcq||qFN$~ ztb+~ueW1%N21^{wCnS-f64~$@xjz(ve164}Klz8R5FP4mrjVzu*t@wGwyn{ZbVxa= z_@@wX16^8$aEwGe@473JICj5s#33a7t4MTBsdj`0Te}MydkUg$psKp#?BUccnb&(K=%hk#wM)PPoVey?(iMP^G>$Vycgi_ zk77jh1ty8X15^#l?`?u=U70TbCD(lAhyZ7X1jKlr0cRzWBF__p`J)#;yV@6;RPR-EQ0 zu8NN4{Wi0&0WC=}WhdBtw>nD~ApA(`cO#u&$>#&V$Q`;RwlSPayR?&CP$ke$bXmXb+b4!B7y163ibGkxtl>h zn|&s=8I7C-JEn{eK#N#~Nk2wFfMR(1qUsN1RFiv`pT*Mu_^f(-5|RkXv*q{Hclv43 zE&NR0%iwsf@F|{xE2Lg`GF$sZ!?ukcNd0k3I8gDR(~0qTiW*Dx%t+h!GUZBH=UvW^s~H@lpmbwF+I&xle)wf9#;!6cX@%OVO|#VPYG>7r+D zqPy0+D~~r2oXaQN=tGS87iB-%?=M^7j(^m_%0h$wymie8arQjq zOCqAOCL4Ad*MMA$GhV<<2P~f#?fS^vYcfrp5T8uwwJBPhq(fhh@+E{H&gG(Pg3~h^ zufAwMhS=2T!#e1V0u>WCv;wkj9bTMc9hY}>9S#ry_=--FjE;#vHGAP@RJtM~YPl-D z$?(dBUh*~vx)%=e;T~?zrV3d4eS~mGhOO@qzq;?*vFN}xY|)SLqOuFhpPrV!eNQ#! zi4n*0d&2KC*KOQ~$*keodY~floKxqI=u)R?mLb9z{UwDzW5f1&G(%!zs3g# zcf|a^ddTKLRyA7^8DI^S235wr4g*L8OWIQfNV4Rzpz@l6^8b9c8cV$Y@9j+2zd#3u z?^=hpo?mn-dVAE5C6))h6#u32w?<9S8U(>vbbe?_XLoF#D3Wu3g2v(a(<)*jAT;P_ z#`4gigfrEV`ecmP$Vkhyx%|u;kKbTaI(x(IyvohX%sCOzLvcnSt{L$`=)}9>H&i@g z%SBLCl56XvoGCq-U(6v%y-qbFdF+B_f#ibMHhxU{sS_QVWCEw;Y({~BR^`>sELEY* zyymqRVna|h0FUQ`H1p{2526>a5WRq8hZZ{D+U3Qn%-eg1TIH>dImI4lwMrwJO~ave zkMVPg-_1Y)iUzAuELuC3?F7cHrc*1{K2?HafPf{2K3^|ojn4C7CUA5FLU~^p#9mJ# z1cZjF>0BuNB^)mxXgUP2z3-wyqne3Tkgc>l|897 z;x-1e7LOKA3hbO+cumqmNnGEje+#xr zBd-x*0(V7D+yulGk|yid(~DD@u|TsGKt%kN#mU=7|mhGJn7Js)Y+NERnm?6 zkJh{D82`A*wv2(eylEtn$Z^cG>mp8z0EK$>;5SIji_9|*mQwi6sU~SSg*UHKnM?i4 zz(a-v0{gy+;k-{MKvuY~DXNah9}QxT_588HaxmA?dK|Kf;-9RMQiZqWRx@HTAxghq7*5 z)&yR~>nzc04>9LIXZb0x5`pYMozvwm)?t)hy5B9l&F1JT5fS+`A;0Jmg ze(uAoE=KU6!-8o?*>RTYOA5C~o|aJ#G(NTo=Wpq6Pu@bf#;WezzWA$2V8!Ti_m}fC zj_?PMc{@E$VNhdeqM&R~viFk0sKRMKru_n4pJ2~azU2i5$3j>y>JmW)qG>DcRaGf$ zYQR8UV`3+j*fLuD(wAYrEqqo{E#kU%#0S<#n3B&i#-p-cCc0v?CIVc5WK@pLjjfeH zRgVB zOyqd>!Nd+XYp?PbYd^l)Ouq`FvoZBG8&##&Wzl`p{UOiRJ-YcD96Qy7Wd)+np3yfr z6GLi>I&@T9}&Z*U$jVz4h#hr4MW2e^A*~^ipF> zO3`oKQ5% z<{>4+jMTN1R8^J>sWUx8o(2TeeLJI{n#v?2AlM$MGqtzMZk3Fv?_wMIC7H{+$lWWW z1RNlUtvCmj%))aoc}tp{OVzlO@{5XsN0>!ES_G)&9Vc@sNOR@pH=hT5cLpU*6s?lFmIh3oU-(aAa3f~ zEJc@rUm~=G(LWrrT#4Wyk!eFPI+fA3iCVzXY}Mk=o8<*mRC=kmex3VV&b=9ss_rop z(~`DX{qY8Hi)A-ZriB5x{r)6ytGZBm8P3$=bGE7}$b74A#NjWZJPP5E==5s>XIoyd ztVUgnjb&LC)cLGuLHmGq-SG%Jm@FCDcCIrDXn#Jnz^MKCu=}~%{K}c^?J%7}e7r?c z#S>3)M|Ks-PLjD!fyLlKAq@`PH8_hI+&~USm;lq^-lC;y{ZOdxL;po)W2(bA&KXjzf?f7yI6gyRD;2bm7k2rNkWL?(vzmpb;g8>&+JH((9ZQ=_rZYk_roxgnaafPPW zSftwiOGE8M!Tuc2Zn8^@zmx~LC6<_f>+?JD%~Gh4xPo~LIg^M@N~h%K`z=`Xm0_qs zDUEXIP#`XLqMMxeX9oMUgPhv0;yv45NcHd^XerbSB)0zn;^F0ums|Yu0~Q(FdWsgp z3T+sK&0zCw7SBF)mj<`mTbSc~j-$o{ENv(P%Dw?`y=^vFS<8s@Iy&@Dyh|-o0hKJC zmZWZ$P^tM=ZnFz>BBj#!{)As54DG%4A&&V$w$`a8Z8|M5P34$QX2i2V8{Oq55TQQ;88h>gSoYCaE-qh;gRw$L9({iyNx=Dt@)8gl79SdnXf_m4fJKtKQ}rbWX5n*yDw zuP;1G+4PEI&~N~0XlW0}B;viN-h5kurRAQvXAtM9ef@8+T;1eJ^V=0HPRs);KjTsP zyNKXL7^!9nJGcJu51R>!v8Ga^a47aOO6q(}?$1lwDq1emffnNh)?XVW z9q0$WwMu_XG(iOy$@X_7*yC!JtMyw)k)*ja7rx6qd)gqesI(WZHBOwlVkCdf^5ZKQ z>Fx{ZUi08>mnZM5Ngtlf6?#)F$xv!2b~+2TIN*^x&Mv0?Ix3l3U^+Lk2E}pD6!zmN zaR>yC#;w%N?)`FCzTp6AV|xwvRV~g&Sq{86&wM>w?35a8#tNwN<^43zvWYPo>vw&N^?$fXoCeUHj8J%)1pGEIaSVq=#=ZH_)2 zCCrWM#d{OUQ+a)iA?U`W+WtLyxkpb z{+qlqHft+!1rD$+^d4esW1i3z7RFyu0xm!oLW3R**T77l(MEK>+U#;Fa{P3<fpj6nfw!8&B~@)xUeKQdo7hHfV8F2W9hh}a z;56BRQvITy!$5Z{>Khk-0DxF5<$aqz^OqJyQb1Unj3$V#t1E(N8ndvKY zcNvi`bnj38$d=7f~XG4$y==cRmA{%;kRc!Bj@WEh-HgfVa|GL9~ol=t6-*qy|% z>{xbFRXQIXWwqbK4XmkRgya!gQ-T>b2Y5Lj`^F2<_7ZXyGw?2xtyun)f9%0RI9 z=Z5g-c{BUAgppSdGp(AICduhKlDhkv3i%6tc38#7+2x*9c@TjU!uO1dH7FB}3OCZ(bG~I;HUCx7 ziY-kXdhhqUn_$B@opC7=@eebDy?^tU^Vg<^h)Z0Y2t^C^DA+&PRB$36(-sv|aFaPx zWfG4MqochE?D@4N5Q!^2+CK0c#b$2;sEBmPVU5ED$)>!aHJznH?cMP!PZR_yeyT_+ zegJRMU?Tif5j<`Gd&H5+GF2v*gT_xWpp){5y_v}EHSGNxxoSFLa<6^Z#>A(~L9qW< z=RGz$zNVv^DuxHRAZqYA%6{tI>wOKYO^a9V3FoWOYqhgqYl*VuW*@9pUiHib~D!?jB-Z0KN|Vr?HWU@-E()wEj~qW%yLV87e3htQv=dW zmkpKjZ&rAY(ps#a20IUzPNj3i(YSj-y95~q7X zZvc(hZR=j|y5q#+ge3it+aASE9iD}eI?;rZ8a1ZEqG^m}?)NInr(xp8u14Mz&TS=T4?z#o@c z9lDR*gpty!tyzthotT_AL33Wm?1~a=}tkE6#3;d!HFIR6;+dG0B>e(IIriOj9ky1%AVFT@d zA7J$vk+Qb=Pd26*Qr;byr#>05eZ0t6H4W3&@^70s2_&Rgg6d;{R>E#Z;yai8F<7VLvQTMi7XusEc7B@K>27#I2ZCpAmo9zq%oexdG%-Z&vIQv>Z8C~&i z=|#W&Of+ouARGmsdm2k!CJamCbchB2W%*pz);^3ZeBM(S$v2mN?)T9?xzrmk7vayR;}fWb=CF zm0)vWxQH=vJKSw2hkYb8IV8t^3rdYAyLcC8dXsvlzV%~ZrmRtt+N2(8>(iRkNIXj* zb;q4mFGDZg2;+oXbhN6{Dr!e*@Vxs8ef<^G%I3(3YGyyN_XHhZ5)`@QcPWLEi`XPw zMjXJ#j}$tsL3B$EYME=3x}fLjK0xBv4VyXgjtt8s4=#-?v?FTolM5B)$^e3H`| z)en!7vr{wBUgJfPxQ*VXf6aleANzM2fo5{5l?6wLESWN!|xJ|zx#?*mnZq_AEDy*ix}zVxVjoPgV6>> zv36*i<>~;~WW`|E>fb$2G=x+%yl!X28xP2#-33~SM|DE3s=YlK_J4T$@^Gm7I9?Je zF-b_4Y4=7Fk*w45mLe&XtW!zI7Q)!(BuOPkWG_=mvhQom*eA)7eT%UUCYdpYnQ`Wv zd*0_h_x^eRxX*L%f5$m9^PCyyoZt8R*}glV-Eu?y=D+TClJ7gef*Us2Ay*)a2emZH zPFNL}+BdC}BQ5)yXlPOT@XPZAQiJmO&;RTZ1_JPLlE-X*XQ6%dqp~YloU&IY$!?T2=9Nfm6&c9O%>N;3ybI(bLN z>yFuF(DT|TGgpz5O(R$^vbsx(vem4wjx}mce+x5YbmHCHg9M@C!{p;wVmqt?vBoHb zZZJe(RaC(D-7P?H|F0A=rK){4Zo{~-uCEryj_!7F+p4s)Jao^fZ$V1k8K7WTN~n*H ziAEoGLRz-62Vu@XiLc+D3%80fxVY%a#x%%2>AH~?*kFAk?|DJhR_no)O_j?7Db2|? zSuz~kd*{n(X)(Fo={V?4e{+buhK6dM6^LTsBFOWY&ij`X;ctwak4~3WV>!l?(29?1|qX6x+M*tVILV#BeG>Q)BrV{%98}?rovV5NhaS*6~ZM z71<+?tLM_VpEBcqO*`i{SRXc>iR4B+CcVSQ!2w)%I<~cAL)54vBn&UGAGU{?fdlO? zthZi|$%-pCUs7;AJdT8z_$8w)7ANRZ5Hg{AAdO?Y%{%{n@UEfB0y=9W&uLd<# z>0?qpyFo+&;^(%k)PHlxFF7028gp{c7EC*FmvDw1{~A+NdM88gnTFMP>uL7cI?w}K zVs^=$tDJGVfwg5^d!)db4v#SGcMe6d7a|nfKe+8qGL03*zsD>cks4xrYeh3>(^FlUGOb`m0}+D>r%*#iTUZCIx*Ao-`joUj zOT7Jd)e)N!UO6eqNQP$te%K-#!)yUB|^ioPHFMfH1<^n8xHR?no?T_kMKG=LH57+A1=_u_JJ-mUWmFRS=j}Ac*E$_3YUF&IYAwph;guH%?@?)T>0Yt>5CyCp$Iz? z0<8%)(7G}FCHlCTxz zK=KN4K0~4Q*05niviGUp;^%~QbOB*{an6~U`k}n{Io!#{C}yad%>CsM_Yl4Jh|Zuw zFN|N~Zv`5$gzym-?K6IrX6d;z0WyR-yq*KkHo%l?z*Z`&3Io3ZcQ;^}<^s9s?X_uG zS&iGebx8xjuL6GW)DmlW%4+SI!kW zp37}BWL`~cISV=bB-uv3lQ)0WEvCQszXl|bs_u?Da0Yh0<+SjRHF6TK<%|O7Od3m) zqI{1qXxvi)r?P6!51OV%`8s>Oz9pB0oNeji>t8CUxmPh%lmZ@Fi^hVT6mMv+Ay51X zkrcM+_eyei-hCCRI}+>GPAP)P^v@1|Nv9|DuYNqKpjHKnB8`mKPxRxP4p#$~)}|KX zI)KOv7utRdUGUUmT$HGqCyeJ|uTUIe!V4PtnXlQG(zWr0B3ali)VG3yak_8dDw>gB z?Hh-&H4p}No=%KTsp{$$AsnsvG?zJjq_G05s>EGwNpBZjxwiD{vG}pk_aH7ZUTMMxI+j|LeDsbRSvSa#xf=; z%G~7LTiguR-3XW%+@J+3&l`vo+k2F)g-v0P{ZP0$K71W-^aHJ&(%9TKCK=s}yd(jZ zfe&mS+yI{rp#)|v!^x_E!hUm+(2V0b2Rd^KG#>>8VfH40Z2z0U7J)stK{_gotJY z)M2%}TlbsyTU_0k1(}w1Md-e-hJ@<<*5T>~ZxS*=!6@BJ$=$+XK~VTuG)=Iz<{L-r zvOMp`*n>aFSvLRSm0Tr5?$fdguVxG(v;?s_ea>4FXsY6mUQ6)xTB`{7F5NZ;Nh+<^ zolzexc1icU3x7nR)~{$|N$?xyHqKR$@M^=SfQkC{>!PDUM&(b;SbhANq=|Voh8tmR zkPs7LSQ_vq)5hQrD9!OTQmg*UfNy~>uiIV=D8Mk(n~0zjOrcD^c|0v7pdd#Cp4%Nn zy}z}`QEM-2=2n$A>Vt$G=0xW!t=C+iJkgB0tw4p*;F@LiKDub#Iy+jusmGdX%=>l( z_^BPbIy!?+iMLEYz+mx^v3yBK#sFhbbmI0*#z-D8)7^FMuXI;y$uDlZ&)bHr_#o&> zx*g)JH)d7IP8O;%HdoQeNU(q#Wz=W>u@wd*)%EyHaSg(A7ki_w5zbv%oTiKO)O~%p zwesf;o{|*daw=;#JrwlArE=-=6D%MUG>5rla84bf&H$Sn4uk?gj@f$u*yW&Ii5_vP z{Hfd_ZO!A>;~&yVOa3uCJEV2?a*R}CKOx7w7;J7|5k$YHUkNpIFeSnEjP3llcDMYW z<)5xx?^fBHFShK?OK(0DSZ($F*89-YFn_%JDszETkl4zpefX3}by>C=>7@+HO*2WP z$eC&iM~_lvLSVAh6exymL%O7!!LN(Fr_TJwjkB0Ls4OdwoIM*H6=XFHW8Vd^g450eCT~|tuWs6 zLMI0W;x3SO0N@;8$nToPFe)n|$a7cZcs2@~H4!w*Ak_Zki?2-`+^N$l8TK~AVkV^( z1+Ff!8+Y&(LLP$_1C?D0WNlWkg{9c=YexCZ8JZL3hjr^_g^~?GjW%(7PcH4Xke?&k z_wgQHC-{YV{gZmP0jPKeBOfLq%)gn=iSJ(+~npa%Z|HH^Fp( z#ouVTt+cFFe=I4Ca@{$@ox1UJ1VIB5U(jv4D~GHzP4ZmE=&CPj2a%lvUwfBE)_FTV z6|y}-!nAYCgDdMvPrtgGj{UOh-AB1aZQt5KEy~_r+LvTF=7^1U`i8tWGt6!sdG$b^ zj?NY26J>G6X?g3_OYCs6Gf?DR46ptk(@kFT?Q*BKzTvDyo}^(I4y#{SE?_%rdbAnd za$K>h5!G^P8N;BhNrA#Z{cp@S_yQ(y$Q%=vK&zT9s$D~$z^_b#0GZ40ULg{Bf=~D& zPkxxloBmTfHgP1@upsOAqftlO&0Y`Nj)sWLB`pOS9wwJ>$Ly0Q!hB%qasxvun z9CgberP#2d$f}z@X8ow4QB^m(b{k25+HxBoC|jrB$u|STt>gc;qb(k_!9I0*gR=4z zP!{Bkh`kEoi5a+RJOD{svCHfipbdjEg92+1`lWF)m33&%FOdIT16TqdW=3C%DtR}xB)t^hZ9KSy*Z$9>1ys#ENGZ7cAbIZ;#d3o@!G=~MJ-K0PCLWcWR z0gkDdzsZ%KyBZYe#Z0!$%vgDdRvp2oz~~hqK112!?NQF%P$(Ecza;O;e%?~OH)PCf zv!mU~F1x~eEL=zAdq*ad0v6wY=TUZ_+=uz*`pLP<^3pK8zvZ^;y2w5M z2KXjp+ZkcURwC~v?9LR0oH-X%*uKHvxyeR=%meR#s!F)*YlLztqDXGIaQ7!u@={<{0bF_rV>mix8ZkMQQgpH6okseK|I%BZ@4fr@{! zGjR*Mha~C*|LA&0HY6i+bGN9ko}Jn-H2d2`6mgPNSOtWUd3Qe>;}nnmQb+l>`*@~^ zf9ska5LEX2>%tdxy!`C|@VM1i9d0QZk2E)p+$l{^cAKsFe9YSIM~X@1+5+|H#0X}$ z(%mT^EvP{UJg0X4i>Xd$DG7N-Z}esP;`pu%Z}yi<9(OfmaM*VeR&ZuP`fsx)S3AEm?G);2V;ciJK%q84DtN)pHb=wJ>bEAA>kd(yqp9H z+YYa{z2PK9+-Cbd!Nr)xNzb3^eH&{U9LLv3se($9(I zWfGI%bI9Tu_eJWH1v8oX700)N1ou%jJ_oDL*tqDq^nTh?%xOs9eD=?oHN{4!qwgys z%>7nlun2k9c(y&F;y5zl)M20chFg1ThFdzX1V`soF=W(lSr?YyTE^i+jaY_&eg28@ zVQ1?OEcKj4@78Wqy#GxICz310{Ks>J_}eY;! za%)W^Iv{%;?e*%X*YG152%nH6?nX7g*_7`>3iRt-)yVBcdN5$ONG&nIHK zn`(8H_O&?kGB>$wtURG-aE&|%JTcc1uAf`@WK0K6)XiDk>*D>Eg>C9AUS>x?347Vl z=MpOC!b2@X2#k=LH8OrJQFEMd1}o(Kc>FE-ZEQ1$RZ#c7_KgJj$L8Sb z_me`Pd+BBfU3Ku)I#|0OxZ)cyag!&d{Cysi|9d}0UJl}wIC@*< z70q&!gNBRz#_mwtpD>si;E@AY^RYRff>d%erH0b*2@;lqd_B5W4E>Fd-y4B((eNrQ z`&3MQRc^Ku7*f|6H=p`*QkA;wI+fFFhuPz$;=O?y1Vp;sI&vzz0ctX+8j*;naOuqC z4{5%$I#p99qjPh)+|%28UOAU~GH|~%qlfCX8}!xPw*R?%3{O>M+=RYkY<34>k-tJRl;Pyo|INY17N>juYtRdPk?Sd==e`Z?I znv&?OvVPI#5l0sbyVrN&+g;)Ww=LMNw?i~S+CaJc`oTb z94qN;k1WE4Nq%q2G8LI@ZZ=FbSpb^I?1Z-eQt zt5t{ab-K2#**;|&b|IDF9a9?adR3udAG8vsUVCO2`I%Xbk}W{h2d`ZE=cgL~F*iZy zQ_F>0iz-2vqTT_TI$vBMi}hbp94hKyPN6O4OZp7Yrm^`Kg|dQ&IP1&FoU6i~M%8Go zl>VOJ9f<+14;?awqgKD*I7TxV2C5NV@ys_FZ}As3)hbybWKiS=hXebd6uY+v<-*Ro zmT>{wI+Vdc2XAiNII~8DujAw@lEFg&#!w^6`X6Mio^{P*+~jbrHlJY?N4@fu8%!h} zhPG$Z3Vir%fNW$$8%uKE#IhdRRJq9iEH}wsHx)JU&Rn)`?6?PxUZR`#yWJ>&_u;lS z21&u+K(eq=SlyM3-RIKCIc(*+8}An#sOdhP_3P51BBn?8bhwcT22}B z=-$kr#esj{xrFW6b-SnbYGa13fzQ8*azf@_p*FbH9Z|x@xBt$pY@485tP88!L#pDF zw;HMU;U?=LRqC8mQxK#N2?4Q~KK#+jc-=skzds)kGKsWU^v{g;NwFEsn!ErVE%1o@ zPmtQb9pUFvwcoc1VfH`l35&((laSC`4&Y?~B~I-G!pX8gQpF62ZlQHb;@-*W&@gB# zQ7)F6>}}}#s?4+KJiHRI!YUny4J&(OIZCHCrn}d~*rkKfT^j@3Ll2c!Xe!^1GVYho zyX0N$4}vNU*pz4(;@tA4#vE8JZnf4&Bq#x)d1eY7YMTM?&Lk~!Zl#||vRhw1<8yqB zS+IUXffgnNCWi{_CthD#5ulci?beCpwZ$Dj%H572hvxjV1ulqoha<-Sd}>lQfd>2` z(k3v?n^i+iCVU6xxRUV@tiqXsu)lUbuZ99!LxO8J(B8#2P@u>;`DPdHSc=i}i174N z3}@iPb-ZW;g*F{1aP^{JfVI8kinmg8MLyEF#Z_qT0;Nx+*)C)s_&l_ezjpf-CTn7vj--lEIHXwgX z=O2!|#VPGaQqZi(A+ifCa4uN@&%dXVtE{;+Vc;@t{!hy z{#p1i=2W_~hhGX=Yi<`t;j5Eenz-ne6}i2=S_+JXL_VttN7lj?rN~M2zZ36#E|kDg zNvWO6UT2R!9ADjwMITy{M0(u+4}Z-54+vQBme^kbjVi-}REf zRI!XNTrqcQQchxksr-r|fcDoLQ3CW@Vzbiep81@d>DQu+you5xHTpd z1vkA3=d9ksu`_ST%e}rkh#&u*n?UZD|8vd^!%0Mi;x&JKO*~%bWi`p zS2ncB9SgU%90$B3T|90_+4DA^rfrf*IUf~G>_Hc;b-R^i#$iRDlSiKkPdu1b{)Zt3 zttDT|3VnJs#8S+$?*e7_q9Ww=5)q+7x`q8$1oQ9Gok``*75cm&5onc{ z%PBcyxr)$e4o5N@UD*Phw(MR=Rz$@N15!4WM_vkt!3 zv;KPlsEwD}IVY;R_4f{Sd_VgJvM%DG!yBu9#{JC< zJMxP$%_gZg(S!DI-T{$CLbMF*9k- zbqua)ugAjeCCPdQLDANnEHX^oXJR8Icsi0==qiEFUS*{eROE|3$pEpMK8G!Bz*|t1SJP9-Q@Qp7*bl zT+12W@DYElfvXuWy7dMGT|#%LQ$UH{1?zJ1?rR$V zi?O)Ha{^WY)jAPDi!XfobGyI9hV;VItUz<<@R`m8FGR0sAv ze~_*1F05p*6_6bwcqFd`U*Azv>0d{^F1qY|Sk=CEP59L%D~Zqx*BOHd+2&%>P?qs* z*T4b(u;l)}HHO=gFEz~?nU7-N>&$Z=++u$8?4}9y*i{+0{HD&YQTzm%JKhW*op33V zf(Mw4R8GPc9iYD4YhaO$-9^|SghssN>>4-3I$GN)?0~Qye_mw0)zH_*ydGDVO*kxbb~`e0FJz~kn4-bF)(Gh7yM1M2-;&vJSN zo7Ht{{zL{pEmr4q#%AEBxXu0Nk3Iu}K2X;xAVol{!Le8VES12>1~aHdtut6?W45U2 z5dT=wRqyw}Pmc}AAXX=M^ocWK$|IP1>v~o(dH1G8a86gI`*m`ADq1mgM26(tNetM} zdb_nvl$(9j0HNiNd2ccpcX)H^2SUZ_@QUAu4H1D{LY+AO>}CZd2#(I0pA5cNiCaS| zp|Y}Dtv&CsP(<*+^(?X{A7@Y(N)fzEsjMkGy=3&_aoN?Q&MgXqg9^?sf0<76?Gfmo zbbtO0*YsZBr!E^sj4i(Ib&}i`tPd^Sq9#t3 zfo`$iHw2M|;`|zTF3Tg+(aP>&&xsSUeM*GCEO&FS^Yw#g3@gFnNLgQY+j~^p$xQ3?>7w+d^D$61joOGBQl2JqGHxm^{hW9 z;c(-75)0OMlX{zR2jG)11I?k)y0;bsuqMpnn4hX}X`n}o>W3g=TlGk9nj62ulUcND z`nG1_AjwnAfN}U&BB2e4E8ItRzw_-mt zdEOCK3)Bwxu1~p}OaA@8gh}%%oKuk@W}XY#p+zcgB?JAZX6V14CiWZl+ByK9^|4XQ zf_!Hf;f`rTjU2QH;g1IJ{V|*?-Kd?uY-He~65@{`-H~kEmoagBz3XMeDOkIRib&t> zX)A07Rbc2BTRvEv0KoEyn$PLZPgt8HPp@7eo;K!-W~3T^fn8`tfBrbpCnMl^wBTj^ z?>pitS4QJ!oX37ma~bS?>lFAnZhmL#J;jplHuInU%#`{T7qyTK7P)**0TK2`PC7#o zn3MZ$1+^VDZ$=2Ig2r%RK}oE)I6f3jf@(8~>3;W&29qIibK-v=TV_lp+)(VC)St@nPqNoHDe|UcmxyPQ z!qpLvMPzgjL4&%neXa4dY4@-Nrd27R`zd8bpn)gj-m)b)x@G#&_6Da=2MSSeRG)@D#24)JW7k^b}dFdSZ0@QRiMAA@#)OvVdORd|LY z9wdS~@BLyZYY*VZRFBWtuKRR@?75%up>+0;RJtmaG>_q^hSo>nOZS$SV&L$No%R_R zOo(04#)(VGklkx<@2TV&rQaEfd-M2Y^aQbr9p$F&H@L){=_XE86SH;jXfUw46OdD; z3?uV(ZL?bFHKv#JnVtQH;U})v!L4^V*z3IkTLHC0g^E0%`)hd{gXWmre*HJ(hN6>< zzhHRUjKW^uEvSSpqgoWH#T{#C|3)+_mxH3}5|YA|75hM`UC5+|m9J<8C3_vywYR}X z-dsGyC~BWP_$wmz1|&Kk{TI=Wl_AZrk2gdLGbL~Bag5rpV6e)a>XsZF(^QKYzJL=H zCOs-nhp8(EdEsxn7jzK#Hy^)7Q2tyd^~rKvf^RmZi}^7>P7wz<$cy_ zHD0S^Dq(+#Q)1Tn967Df_nt04RXUCt(B2?SaJa090gdz*mnk0P#9adCScjNR{>Wn# zJ~hoBjcq~WZblk8L}UI^On{!R1`jwzjGa3Ffkb`bzMqK|pu=u&zn3RJh}V=>T8stv z`SqF)B<~|`oeorY)(t!%qsWB)L!O`6>Qp>oE0MLk)gm7D~2=tLR--Af&Nf!L-r{GHBUx(qiZV zHAcgiwSWNjE~|k@LN^NrK0+c8QIe3w5GJ=48RmXSMF4#sIOiu})2Jl6_|Ke1GY~18 z;usEWgS2GbI%3u*ZK3D5)P&7I8Skdc-BHX{Q-QwV@z5_;t|zd)-#x90gWuMiva`*; zYAb%kucE0z&fuuVy1cU9H-ncE+OT?zXpPGtd=K}^E-5l`&iyO#0pI(jY*IBKf$-+2 z4m7L1bacW8@=vZ{)qX(oaHpARmQHaNqAZI zw%FMK7Q50U!5ny^T^L?8y~Z@>0d{o^%Ntt{t}|pgbcXS{TkR#6Du7D}Z@w4z7&`nz z;o!RBiKMTz#@?^1D`qd8Z1#U`cTNy?OnIc>{Az?!di~2E#d(xOfBQMeoQi>HFrtj_ zZT)fhvcZ;LCoK$%v@86xY7$IOkDD>KSxoobmV9d!z(pa!S-hY+eni2$^)G+j{&?Ci zb5D(u@9pC>SsUdlbA<|2UfoCIb{(|tAR^V}jM;;=%{!cTE-&A!<9)HOwAF8kjPLf> z8gtxhj#=6&Zhr`N8>g7pC9OO$A3vOyYrypL9w^=I7W7#yM$zm~X)j9PuxEFLx8Jq1 zAH>y!P`0mky=|QApo_Y-`CGxyB|;g>l(uk|pBW~l3%~X3i1wSQvy^bpS7whUtWL%) zJ#jV2FUFdrI4Baq9O5B_S+j?f!Z8m~!50jA*LjI2zU@`jvrr7+U6S;pnk*xPm{{$a z$-Bk2YwR*4Vq5AXF8tK2`pp|Q$f}=(S8qhG7Sy3WXVDHl?I z)~&8`UwjVS(|ubEZI9k!a>0J1f{DjV&!+*;j?eH+do2F699kQjl6+wp%f&pGeOo(F z;l;6Deq}f#BqMvrg^_ZI@$&M41hA4P&qRZURroksK5$q{-lTBkKRD@IBA!YMx$)&6 zY0;#$>7%*+d-laxU9bAIyE;a>A(FXtic2~7<94~Ka2a9|iY*JIn(r<&xtexm_l9^*fW0ukjA=IE_6}`o(PaNG7D8VK=o!qLf#{I8|Z#eF#5~aUjdum zr{FT&fw+*J-j^Gc3)S7q$AjS!iMAX`&eceKoNp{9J$mCn*2o+X1F+M5gZvGIZggJ$ z**h@@@6RY@(JlFAJhDD1f#|>##rqf;?f`mZoZe{7U1%f{&ph@gK3*%rHQYzcKtBSPbiC*j6SJGi4=+Bse&5geZtjztKOP*&tv@{Rtw17VXTx$65Ogj=e72}T_H-LJ z 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
n)esfmc2EbBUJtgnDhaFx_3?D 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Μ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

Aevui&__rmE4NvT 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 s Date: Wed, 25 Feb 2026 23:06:47 +1100 Subject: [PATCH 06/29] Fix stale references, update featured items, large nav titles Co-Authored-By: Claude Opus 4.6 --- CLAUDE.md | 4 +- Model/Sources/Model/FeaturedItem.swift | 19 +-- .../Model/TechnologyDescriptions.swift | 120 +++++------------- .../Tests/ModelTests/FeaturedItemTests.swift | 4 +- UI/Sources/UI/Home/HomeView.swift | 2 +- UI/Sources/UI/Items/ItemsView.swift | 2 +- UI/Sources/UI/Settings/SettingsView.swift | 2 +- 7 files changed, 41 insertions(+), 112 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 9708ea06..da484a89 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -69,8 +69,8 @@ Consult these files for detailed guidance (not auto-loaded — read on demand): ## Code Style - Swift 6 strict concurrency, iOS 17+ -- SwiftUI + UIKit hybrid, MVVM-C with Combine -- ViewModels use closures for navigation (no coordinator protocols) +- Pure SwiftUI (NavigationStack), MVVM-C with Combine +- Navigation closures on ViewModels, wired by single AppCoordinator: ObservableObject - Navigation logic ONLY in Coordinators, never in Views - Protocol placement: Core = reusable abstractions, Model = domain-specific - ServiceLocator with @Service property wrapper (assertionFailure, not fatalError) diff --git a/Model/Sources/Model/FeaturedItem.swift b/Model/Sources/Model/FeaturedItem.swift index f6637606..b737e118 100644 --- a/Model/Sources/Model/FeaturedItem.swift +++ b/Model/Sources/Model/FeaturedItem.swift @@ -75,7 +75,7 @@ public extension FeaturedItem { static let swiftUI = FeaturedItem( id: TechnologyItem.swiftUI.rawValue, title: "SwiftUI", - subtitle: "Declarative UI", + subtitle: "Pure SwiftUI + NavigationStack", iconName: "swift", iconColor: .blue, category: "UI Framework" @@ -84,7 +84,7 @@ public extension FeaturedItem { static let coordinator = FeaturedItem( id: TechnologyItem.coordinator.rawValue, title: "Coordinator", - subtitle: "Navigation pattern", + subtitle: "Single ObservableObject", iconName: "arrow.triangle.branch", iconColor: .purple, category: "Navigation" @@ -185,19 +185,10 @@ public extension FeaturedItem { category: "A11y" ) - // Carousel Set 8: Deployment & Concurrency - static let concurrencyPatterns = FeaturedItem( - id: TechnologyItem.concurrencyPatterns.rawValue, - title: "Concurrency Patterns", - subtitle: "Callbacks vs Combine vs async/await", - iconName: "arrow.triangle.2.circlepath", - iconColor: .orange, - category: "Concurrency" - ) - + // Carousel Set 8: Deployment static let deploymentTarget = FeaturedItem( id: TechnologyItem.deploymentTarget.rawValue, - title: "iOS 15+", + title: "iOS 16+", subtitle: "Minimum deployment target", iconName: "iphone.gen3", iconColor: .yellow, @@ -212,7 +203,7 @@ public extension FeaturedItem { private static let carouselSet5: [FeaturedItem] = [.featureToggles, .osLog] private static let carouselSet6: [FeaturedItem] = [.swift6, .swiftTesting] private static let carouselSet7: [FeaturedItem] = [.snapshotTesting, .accessibility] - private static let carouselSet8: [FeaturedItem] = [.deploymentTarget, .concurrencyPatterns] + private static let carouselSet8: [FeaturedItem] = [.deploymentTarget] static let allCarouselSets: [[FeaturedItem]] = [ carouselSet1, carouselSet2, carouselSet3, carouselSet4, diff --git a/Model/Sources/Model/TechnologyDescriptions.swift b/Model/Sources/Model/TechnologyDescriptions.swift index 5eb481d6..2fec225a 100644 --- a/Model/Sources/Model/TechnologyDescriptions.swift +++ b/Model/Sources/Model/TechnologyDescriptions.swift @@ -23,7 +23,6 @@ public enum TechnologyItem: String, CaseIterable, Sendable { case snapshotTesting = "snapshot" case accessibility = "accessibility" case deploymentTarget = "deploymenttarget" - case concurrencyPatterns = "concurrencypatterns" } public enum TechnologyDescriptions { @@ -53,8 +52,7 @@ public enum TechnologyDescriptions { .swiftTesting: swiftTestingDescription, .snapshotTesting: snapshotDescription, .accessibility: accessibilityDescription, - .deploymentTarget: deploymentTargetDescription, - .concurrencyPatterns: concurrencyPatternsDescription + .deploymentTarget: deploymentTargetDescription ] // MARK: - Descriptions @@ -95,36 +93,36 @@ public enum TechnologyDescriptions { """ private static let swiftUIDescription = """ - SwiftUI provides the declarative UI layer: + SwiftUI provides the entire UI and navigation layer: - • All tab views built with SwiftUI (HomeView, ItemsView, etc.) - • Embedded in UIKit via UIHostingController + • All views built with SwiftUI (HomeView, ItemsView, etc.) + • NavigationStack + NavigationPath for programmatic navigation • @ObservedObject for ViewModel binding • Modern modifiers: .refreshable, .swipeActions, .searchable - UIKit + SwiftUI Interop: + Navigation: ```swift - func embedSwiftUIView(_ content: Content) { - let hosting = UIHostingController(rootView: content) - addChild(hosting) - view.addSubview(hosting.view) + NavigationStack(path: $coordinator.homePath) { + HomeView(viewModel: viewModel) + .navigationDestination(for: FeaturedItem.self) { item in + DetailView(viewModel: DetailViewModel(item: item)) + } } ``` """ private static let coordinatorDescription = """ - Coordinator pattern manages all navigation flow: - - • BaseCoordinator with safe navigation methods - • Prevents duplicate pushes and handles transitions - • 3 tab coordinators handle all screens in their stack directly - • ViewModels use closures (onPop, onShare, onDismiss) instead of coordinator protocols - - Structure: - AppCoordinator - ├── HomeCoordinator (detail + profile screens) - ├── ItemsCoordinator (detail screens) - └── SettingsCoordinator + A single AppCoordinator manages all navigation: + + • ObservableObject owning NavigationPath per tab + • Programmatic push via path.append() + • Modal presentation via @Published booleans + • ViewModels receive navigation closures, not coordinator refs + + Flow: + View → ViewModel.onShowDetail?(item) + → AppCoordinator.homePath.append(item) + → NavigationStack picks up via .navigationDestination """ private static let mvvmDescription = """ @@ -151,7 +149,7 @@ public enum TechnologyDescriptions { • Model - Data models, protocols • Services - Concrete implementations • ViewModel - Business logic - • UI - SwiftUI views, UIKit controllers + • UI - SwiftUI views • Coordinator - Navigation logic Dependency graph: @@ -170,7 +168,7 @@ public enum TechnologyDescriptions { private static let serviceLocatorDescription = """ Custom dependency injection using ServiceLocator pattern: - Registration (in SceneDelegate): + Registration (in Session.activate): ```swift ServiceLocator.shared.register( NetworkServiceImpl(), @@ -317,13 +315,13 @@ public enum TechnologyDescriptions { """ private static let deploymentTargetDescription = """ - This branch requires iOS 15.0 as the minimum deployment target. + This branch requires iOS 16.0 as the minimum deployment target. - iOS 15 provides: - • async/await and structured concurrency - • AsyncStream for event-driven sequences - • SwiftUI improvements (refreshable, swipeActions, searchable) - • UIKit-based navigation with UINavigationController + iOS 16 unlocks: + • NavigationStack + NavigationPath for programmatic navigation + • .navigationDestination(for:) type-safe routing + • SwiftUI TabView improvements + • ShareLink and other modern SwiftUI APIs Three branches demonstrate progressive iOS version requirements: • main: iOS 15+ (UIKit navigation + Combine) @@ -332,64 +330,4 @@ public enum TechnologyDescriptions { Choose the branch that matches your app's deployment target. """ - - private static let concurrencyPatternsDescription = """ - Three approaches to the same problem: fetch 3 pages of items concurrently \ - and combine results. - - 1. Callbacks (DispatchGroup + concurrent barrier queue): - ```swift - let queue = DispatchQueue(label: "concurrent", attributes: .concurrent) - let group = DispatchGroup() - var items: [Item] = [] - - for _ in 0..<3 { - group.enter() - dataSource.fetchItems { result in - queue.asyncAndWait(flags: .barrier) { - items.append(contentsOf: result) - group.leave() - } - } - } - group.notify(queue: .main) { completion(items) } - ``` - The concurrent queue runs all 3 fetches in parallel. asyncAndWait with \ - barrier ensures thread-safe array mutations. - - 2. Combine (Publishers.MergeMany): - ```swift - let publishers = (0..<3).map { [weak self] _ in - Future<[Item], Never> { promise in - self?.dataSource.fetchItems { items in - promise(.success(items)) - } - }.eraseToAnyPublisher() - } - return Publishers.MergeMany(publishers) - .flatMap { $0.publisher } - .collect() - .eraseToAnyPublisher() - ``` - Future wraps callback-based fetches. MergeMany runs them concurrently, \ - flatMap flattens each page, collect gathers all items. - - 3. async/await (TaskGroup): - ```swift - var items: [Item] = [] - await withTaskGroup { group in - for _ in 0..<3 { - group.addTask { - await self.dataSource.fetchItems() - } - } - for await result in group { - items.append(contentsOf: result) - } - } - return items - ``` - - All three produce identical results. async/await is the cleanest syntax. - """ } diff --git a/Model/Tests/ModelTests/FeaturedItemTests.swift b/Model/Tests/ModelTests/FeaturedItemTests.swift index c47e4ea2..dd94424d 100644 --- a/Model/Tests/ModelTests/FeaturedItemTests.swift +++ b/Model/Tests/ModelTests/FeaturedItemTests.swift @@ -89,9 +89,9 @@ struct FeaturedItemTests { #expect(FeaturedItem.allCarouselSets.count == 8) } - @Test("all contains 16 items") + @Test("all contains 15 items") func testAllItemsCount() { - #expect(FeaturedItem.all.count == 16) + #expect(FeaturedItem.all.count == 15) } @Test("all matches flattened carousel sets") diff --git a/UI/Sources/UI/Home/HomeView.swift b/UI/Sources/UI/Home/HomeView.swift index 3cd80da2..cc62ec6c 100644 --- a/UI/Sources/UI/Home/HomeView.swift +++ b/UI/Sources/UI/Home/HomeView.swift @@ -21,7 +21,7 @@ public struct HomeView: View { public var body: some View { content .navigationTitle(L10n.Tabs.home) - .navigationBarTitleDisplayMode(.inline) + .navigationBarTitleDisplayMode(.large) .toolbar { ToolbarItem(placement: .topBarTrailing) { Button(action: { viewModel.didTapProfile() }) { diff --git a/UI/Sources/UI/Items/ItemsView.swift b/UI/Sources/UI/Items/ItemsView.swift index b5137e8b..86be00bd 100644 --- a/UI/Sources/UI/Items/ItemsView.swift +++ b/UI/Sources/UI/Items/ItemsView.swift @@ -21,7 +21,7 @@ public struct ItemsView: View { public var body: some View { ItemsMainContent(viewModel: viewModel) .navigationTitle(L10n.Tabs.items) - .navigationBarTitleDisplayMode(.inline) + .navigationBarTitleDisplayMode(.large) } } diff --git a/UI/Sources/UI/Settings/SettingsView.swift b/UI/Sources/UI/Settings/SettingsView.swift index dc2290f7..e3bc4c93 100644 --- a/UI/Sources/UI/Settings/SettingsView.swift +++ b/UI/Sources/UI/Settings/SettingsView.swift @@ -21,7 +21,7 @@ public struct SettingsView: View { public var body: some View { settingsContent .navigationTitle(L10n.Tabs.settings) - .navigationBarTitleDisplayMode(.inline) + .navigationBarTitleDisplayMode(.large) } private var settingsContent: some View { From ae9a8afd5ffa457e578e9d3721766893afd2dc54 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Wed, 25 Feb 2026 23:54:13 +1100 Subject: [PATCH 07/29] Add concurrency patterns featured item Co-Authored-By: Claude Opus 4.6 --- Model/Sources/Model/FeaturedItem.swift | 13 ++++- .../Model/TechnologyDescriptions.swift | 58 ++++++++++++++++++- .../Tests/ModelTests/FeaturedItemTests.swift | 4 +- 3 files changed, 70 insertions(+), 5 deletions(-) diff --git a/Model/Sources/Model/FeaturedItem.swift b/Model/Sources/Model/FeaturedItem.swift index b737e118..a214ecc0 100644 --- a/Model/Sources/Model/FeaturedItem.swift +++ b/Model/Sources/Model/FeaturedItem.swift @@ -185,7 +185,16 @@ public extension FeaturedItem { category: "A11y" ) - // Carousel Set 8: Deployment + // Carousel Set 8: Deployment & Concurrency + static let concurrencyPatterns = FeaturedItem( + id: TechnologyItem.concurrencyPatterns.rawValue, + title: "Concurrency Patterns", + subtitle: "Callbacks vs Combine vs async/await", + iconName: "arrow.triangle.2.circlepath", + iconColor: .orange, + category: "Concurrency" + ) + static let deploymentTarget = FeaturedItem( id: TechnologyItem.deploymentTarget.rawValue, title: "iOS 16+", @@ -203,7 +212,7 @@ public extension FeaturedItem { private static let carouselSet5: [FeaturedItem] = [.featureToggles, .osLog] private static let carouselSet6: [FeaturedItem] = [.swift6, .swiftTesting] private static let carouselSet7: [FeaturedItem] = [.snapshotTesting, .accessibility] - private static let carouselSet8: [FeaturedItem] = [.deploymentTarget] + private static let carouselSet8: [FeaturedItem] = [.deploymentTarget, .concurrencyPatterns] static let allCarouselSets: [[FeaturedItem]] = [ carouselSet1, carouselSet2, carouselSet3, carouselSet4, diff --git a/Model/Sources/Model/TechnologyDescriptions.swift b/Model/Sources/Model/TechnologyDescriptions.swift index 2fec225a..13505a7e 100644 --- a/Model/Sources/Model/TechnologyDescriptions.swift +++ b/Model/Sources/Model/TechnologyDescriptions.swift @@ -23,6 +23,7 @@ public enum TechnologyItem: String, CaseIterable, Sendable { case snapshotTesting = "snapshot" case accessibility = "accessibility" case deploymentTarget = "deploymenttarget" + case concurrencyPatterns = "concurrencypatterns" } public enum TechnologyDescriptions { @@ -52,7 +53,8 @@ public enum TechnologyDescriptions { .swiftTesting: swiftTestingDescription, .snapshotTesting: snapshotDescription, .accessibility: accessibilityDescription, - .deploymentTarget: deploymentTargetDescription + .deploymentTarget: deploymentTargetDescription, + .concurrencyPatterns: concurrencyPatternsDescription ] // MARK: - Descriptions @@ -330,4 +332,58 @@ public enum TechnologyDescriptions { Choose the branch that matches your app's deployment target. """ + + private static let concurrencyPatternsDescription = """ + Three approaches to the same problem: fetch 3 pages of items concurrently \ + and combine results. + + 1. Callbacks (DispatchGroup + concurrent barrier queue): + ```swift + let group = DispatchGroup() + let queue = DispatchQueue(label: "fetch", attributes: .concurrent) + var allItems: [[Item]] = Array(repeating: [], count: 3) + + for page in 0..<3 { + group.enter() + queue.async { + let items = fetchPage(page) + queue.async(flags: .barrier) { + allItems[page] = items + group.leave() + } + } + } + group.notify(queue: .main) { completion(allItems.flatMap { $0 }) } + ``` + Note: A serial queue would execute fetches one at a time. The concurrent \ + queue runs all 3 in parallel, and the barrier flag ensures thread-safe writes. + + 2. Combine (Publishers.MergeMany): + ```swift + let publishers = (0..<3).map { page in + Future<[Item], Never> { promise in + promise(.success(fetchPage(page))) + } + } + Publishers.MergeMany(publishers) + .collect() + .map { $0.flatMap { $0 } } + .sink { items in self.allItems = items } + .store(in: &cancellables) + ``` + + 3. async/await (TaskGroup): + ```swift + let items = await withTaskGroup(of: (Int, [Item]).self) { group in + for page in 0..<3 { + group.addTask { (page, await fetchPage(page)) } + } + var results: [(Int, [Item])] = [] + for await result in group { results.append(result) } + return results.sorted { $0.0 < $1.0 }.flatMap { $0.1 } + } + ``` + + All three produce identical results. async/await is the cleanest syntax. + """ } diff --git a/Model/Tests/ModelTests/FeaturedItemTests.swift b/Model/Tests/ModelTests/FeaturedItemTests.swift index dd94424d..c47e4ea2 100644 --- a/Model/Tests/ModelTests/FeaturedItemTests.swift +++ b/Model/Tests/ModelTests/FeaturedItemTests.swift @@ -89,9 +89,9 @@ struct FeaturedItemTests { #expect(FeaturedItem.allCarouselSets.count == 8) } - @Test("all contains 15 items") + @Test("all contains 16 items") func testAllItemsCount() { - #expect(FeaturedItem.all.count == 15) + #expect(FeaturedItem.all.count == 16) } @Test("all matches flattened carousel sets") From 4a2ac8979411128459a2f52100f81ca16aefd0fc Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Thu, 26 Feb 2026 14:34:01 +1100 Subject: [PATCH 08/29] Remove navigation title from detail screen Co-Authored-By: Claude Opus 4.6 --- UI/Sources/UI/Detail/DetailView.swift | 2 -- 1 file changed, 2 deletions(-) diff --git a/UI/Sources/UI/Detail/DetailView.swift b/UI/Sources/UI/Detail/DetailView.swift index 8ed2dcf9..1b668ffd 100644 --- a/UI/Sources/UI/Detail/DetailView.swift +++ b/UI/Sources/UI/Detail/DetailView.swift @@ -19,8 +19,6 @@ public struct DetailView: View { public var body: some View { detailContent - .navigationTitle(viewModel.itemTitle) - .navigationBarTitleDisplayMode(.inline) .toolbar(.hidden, for: .tabBar) .toolbar { ToolbarItem(placement: .topBarTrailing) { From c26575e2bb52d4066ff524c1c231b65dfd2c30c5 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Thu, 26 Feb 2026 15:58:49 +1100 Subject: [PATCH 09/29] Remove stale UIKit coordinator files from rebase Co-Authored-By: Claude Opus 4.6 --- .../Sources/Coordinator/HomeCoordinator.swift | 64 ------------------- .../Coordinator/ItemsCoordinator.swift | 39 ----------- .../Coordinator/SettingsCoordinator.swift | 20 ------ 3 files changed, 123 deletions(-) delete mode 100644 Coordinator/Sources/Coordinator/HomeCoordinator.swift delete mode 100644 Coordinator/Sources/Coordinator/ItemsCoordinator.swift delete mode 100644 Coordinator/Sources/Coordinator/SettingsCoordinator.swift diff --git a/Coordinator/Sources/Coordinator/HomeCoordinator.swift b/Coordinator/Sources/Coordinator/HomeCoordinator.swift deleted file mode 100644 index 61276d91..00000000 --- a/Coordinator/Sources/Coordinator/HomeCoordinator.swift +++ /dev/null @@ -1,64 +0,0 @@ -// -// HomeCoordinator.swift -// Coordinator -// -// Coordinator for Home tab -// - -import UIKit - -import FunModel -import FunUI -import FunViewModel - -public final class HomeCoordinator: BaseCoordinator { - - // MARK: - Properties - - /// Callback to notify parent coordinator of logout - public var onLogout: (() -> Void)? - - private var isShowingDetail = false - - override public func start() { - let viewModel = HomeViewModel() - viewModel.onShowDetail = { [weak self] item in self?.showDetail(for: item) } - viewModel.onShowProfile = { [weak self] in self?.showProfile() } - - let viewController = HomeViewController(viewModel: viewModel) - navigationController.setViewControllers([viewController], animated: false) - } - - // MARK: - Navigation - - public func showDetail(for item: FeaturedItem) { - guard !isShowingDetail else { return } - isShowingDetail = true - - let viewModel = DetailViewModel(item: item) - viewModel.onPop = { [weak self] in self?.isShowingDetail = false } - viewModel.onShare = { [weak self] text in self?.share(text: text) } - - let viewController = DetailViewController(viewModel: viewModel) - safePush(viewController) - } - - public func showProfile() { - let profileNavController = UINavigationController() - - let viewModel = ProfileViewModel() - viewModel.onDismiss = { [weak self] in self?.safeDismiss() } - viewModel.onLogout = { [weak self] in self?.safeDismiss { self?.onLogout?() } } - viewModel.onGoToItems = { [weak self] in - self?.safeDismiss() - if let url = URL(string: "funapp://tab/items") { - UIApplication.shared.open(url) - } - } - - let viewController = ProfileViewController(viewModel: viewModel) - profileNavController.setViewControllers([viewController], animated: false) - - safePresent(profileNavController) - } -} diff --git a/Coordinator/Sources/Coordinator/ItemsCoordinator.swift b/Coordinator/Sources/Coordinator/ItemsCoordinator.swift deleted file mode 100644 index d105e8d0..00000000 --- a/Coordinator/Sources/Coordinator/ItemsCoordinator.swift +++ /dev/null @@ -1,39 +0,0 @@ -// -// ItemsCoordinator.swift -// Coordinator -// -// Coordinator for Items tab -// - -import UIKit - -import FunModel -import FunUI -import FunViewModel - -public final class ItemsCoordinator: BaseCoordinator { - - private var isShowingDetail = false - - override public func start() { - let viewModel = ItemsViewModel() - viewModel.onShowDetail = { [weak self] item in self?.showDetail(for: item) } - - let viewController = ItemsViewController(viewModel: viewModel) - navigationController.setViewControllers([viewController], animated: false) - } - - // MARK: - Navigation - - public func showDetail(for item: FeaturedItem) { - guard !isShowingDetail else { return } - isShowingDetail = true - - let viewModel = DetailViewModel(item: item) - viewModel.onPop = { [weak self] in self?.isShowingDetail = false } - viewModel.onShare = { [weak self] text in self?.share(text: text) } - - let viewController = DetailViewController(viewModel: viewModel) - safePush(viewController) - } -} diff --git a/Coordinator/Sources/Coordinator/SettingsCoordinator.swift b/Coordinator/Sources/Coordinator/SettingsCoordinator.swift deleted file mode 100644 index 2b46440a..00000000 --- a/Coordinator/Sources/Coordinator/SettingsCoordinator.swift +++ /dev/null @@ -1,20 +0,0 @@ -// -// SettingsCoordinator.swift -// Coordinator -// -// Coordinator for Settings tab -// - -import UIKit - -import FunUI -import FunViewModel - -public final class SettingsCoordinator: BaseCoordinator { - - override public func start() { - let viewModel = SettingsViewModel() - let viewController = SettingsViewController(viewModel: viewModel) - navigationController.setViewControllers([viewController], animated: false) - } -} From 4295a59fcbc168a2b21afe8a41852458d03d6f57 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Thu, 26 Feb 2026 18:05:22 +1100 Subject: [PATCH 10/29] Use polling instead of fixed sleep in search tests Co-Authored-By: Claude Opus 4.6 --- ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift b/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift index a6bfe97f..cc49aa75 100644 --- a/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift +++ b/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift @@ -305,7 +305,11 @@ struct ItemsViewModelTests { viewModel.searchText = "swift" viewModel.didSelectCategory(viewModel.selectedCategory) - try await Task.sleep(nanoseconds: 100_000_000) + // Poll until the search task completes + for _ in 0..<20 { + try await Task.sleep(nanoseconds: 100_000_000) + if viewModel.hasError { break } + } #expect(viewModel.hasError == true) #expect(viewModel.items.isEmpty) From 03eb22a843f4575eab69ebf62de100b85ac7070d Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Thu, 26 Feb 2026 22:04:26 +1100 Subject: [PATCH 11/29] Revert debounce scheduler to RunLoop.main and simplify search tests The DispatchQueue.main change was unnecessary and broke CI tests. RunLoop.main works correctly with Combine debounce in test contexts. Co-Authored-By: Claude Opus 4.6 --- ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift b/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift index cc49aa75..a6bfe97f 100644 --- a/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift +++ b/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift @@ -305,11 +305,7 @@ struct ItemsViewModelTests { viewModel.searchText = "swift" viewModel.didSelectCategory(viewModel.selectedCategory) - // Poll until the search task completes - for _ in 0..<20 { - try await Task.sleep(nanoseconds: 100_000_000) - if viewModel.hasError { break } - } + try await Task.sleep(nanoseconds: 100_000_000) #expect(viewModel.hasError == true) #expect(viewModel.items.isEmpty) From a0cc91dd24d49e40c91de9298754d009f56218d5 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Fri, 27 Feb 2026 16:27:13 +1100 Subject: [PATCH 12/29] Adapt config for navigation-stack branch Co-Authored-By: Claude Opus 4.6 --- .claude/agents/change-reviewer.md | 28 ++----- .claude/skills/cross-platform/SKILL.md | 2 +- .claude/skills/pull-request/SKILL.md | 1 + .claude/skills/review/SKILL.md | 6 +- CLAUDE.md | 22 +++-- ai-rules/general.md | 112 ++++++++++++++----------- ai-rules/swift-style.md | 73 ++++++---------- 7 files changed, 115 insertions(+), 129 deletions(-) diff --git a/.claude/agents/change-reviewer.md b/.claude/agents/change-reviewer.md index 82326688..9f3c8142 100644 --- a/.claude/agents/change-reviewer.md +++ b/.claude/agents/change-reviewer.md @@ -14,9 +14,10 @@ Review all recent code changes thoroughly and provide a structured, actionable a ## Project Context -- **Architecture**: MVVM-C with Combine (main branch), NavigationStack + Combine (navigation-stack branch), AsyncSequence + @Observable (observation branch) +- **Branch**: feature/navigation-stack — Pure SwiftUI, NavigationPath, single AppCoordinator (ObservableObject), Combine - **Packages**: `FunCore` → `FunModel` → `FunViewModel` / `FunServices` → `FunUI` → `FunCoordinator` - **Dependency direction**: Never import upward. ViewModel must NOT import UI or Coordinator. +- **UIKit**: Zero UIKit in this branch — flag any `import UIKit` as a critical issue - **DI**: ServiceLocator with `@Service` property wrapper, session-scoped (LoginSession / AuthenticatedSession) - **Testing**: Swift Testing framework, mocks in FunModelTestSupport - **Lint**: SwiftLint with custom rules (no_print, weak_coordinator_in_viewmodel, no_direct_userdefaults) @@ -33,26 +34,23 @@ Review all recent code changes thoroughly and provide a structured, actionable a - **Similar patterns elsewhere**: Search the codebase for code following the same pattern. If the same improvement applies elsewhere, flag each location. - **Consistency**: Do changes follow existing patterns? - **No orphaned references**: Stale imports, unused variables, dead code paths? -- **Edge cases**: Boundary conditions, nil/optional handling, error paths? ### Step 3: Architecture Check - Package dependency direction respected? -- No `import UIKit` in ViewModel or Model +- No `import UIKit` — pure SwiftUI branch - No coordinator references in ViewModels (except weak closures) - No `print()` — use LoggerService - No `UserDefaults.standard` outside Services -- Navigation logic only in Coordinators +- Navigation logic only in Coordinators (AppCoordinator) +- NavigationPath mutations only in coordinator, not in Views - Protocols in Core (reusable) or Model (domain), never in Services/ViewModel/UI/Coordinator -- Detect which branch you're on and enforce the right reactive pattern: - - `main`: Combine + UIKit coordinators - - `feature/navigation-stack`: Combine + NavigationPath + ObservableObject - - `feature/observation`: AsyncSequence + StreamBroadcaster + @Observable, zero Combine +- Reactive pattern: Combine (`@Published`, `@StateObject`, `@ObservedObject`, `.sink`) ### Step 4: Correctness Check - **Logic errors**: Algorithms, conditions, control flow - **Type safety**: Force unwraps, force casts, unsafe assumptions -- **Concurrency**: `@MainActor` isolation, `Sendable` conformance, thread safety (Swift 6 strict) -- **Memory management**: `[weak self]` in closures, no retain cycles. `self?.` preferred over `guard let self` for async ViewModel work. +- **Concurrency**: `@MainActor` isolation, `Sendable` conformance, Swift 6 strict +- **Memory management**: `[weak self]` and `[weak coordinator]` in closures - **API contracts**: Public interfaces used correctly ### Step 5: Quality Check @@ -91,15 +89,7 @@ Ship it | Minor fixes needed | Needs significant work 1. **Be calibrated**: This is a demo/portfolio app. Don't demand enterprise patterns. 2. **Be specific**: Reference exact files and lines. No vague feedback. 3. **Be actionable**: Every finding must include a concrete recommendation. -4. **Don't over-engineer**: If the codebase uses a pattern (e.g., `fatalError` for service resolution), don't flag it. +4. **Don't over-engineer**: If the codebase uses a pattern, don't flag it. 5. **Focus on the diff**: Review what changed, not pre-existing code. 6. **Verify before flagging**: Read actual code before claiming something is missing. 7. **Count honestly**: Fewer than 3 issues? That's fine. Don't inflate. - -## Self-Verification - -Before delivering your review: -- Re-read each finding: "Is this actually a problem, or am I being overly cautious?" -- "Did I miss any changed files?" -- "Are my recommendations correct and compatible with the codebase?" -- "Would I stand behind each finding in a review discussion?" diff --git a/.claude/skills/cross-platform/SKILL.md b/.claude/skills/cross-platform/SKILL.md index 1ce3cbb1..ba8c5856 100644 --- a/.claude/skills/cross-platform/SKILL.md +++ b/.claude/skills/cross-platform/SKILL.md @@ -10,7 +10,7 @@ args: "" Compare the implementation of a feature across Fun-iOS and Fun-Android to find unintentional divergences. ## Project Paths -- **iOS**: `~/Documents/Source/Fun-iOS/` +- **iOS**: `~/Documents/Source/Fun-iOS-NavigationStack/` - **Android**: `~/Documents/Source/Fun-Android/` ## Steps diff --git a/.claude/skills/pull-request/SKILL.md b/.claude/skills/pull-request/SKILL.md index b9e0098c..cffd7b97 100644 --- a/.claude/skills/pull-request/SKILL.md +++ b/.claude/skills/pull-request/SKILL.md @@ -19,6 +19,7 @@ Create a draft PR following the team's quality standards. - `git diff main...HEAD` to review all changes - Verify package dependency direction isn't violated - Check for any `print()`, `UserDefaults.standard`, or other anti-patterns + - Verify zero UIKit imports (this branch is pure SwiftUI) 3. **Accessibility checklist** (for UI changes) - Dynamic Type: Do text elements scale with user font size preference? diff --git a/.claude/skills/review/SKILL.md b/.claude/skills/review/SKILL.md index e082b260..826c8c4a 100644 --- a/.claude/skills/review/SKILL.md +++ b/.claude/skills/review/SKILL.md @@ -20,20 +20,20 @@ Review all recent code changes for completeness, correctness, and consistency wi 3. **Architecture check** - Verify package dependency direction: `Coordinator → UI → ViewModel → Model → Core`, `Services → Model → Core` - - No `import UIKit` in ViewModel or Model + - No `import UIKit` anywhere — this branch is pure SwiftUI - No coordinator references in ViewModels (except weak closures) - No `print()` — use LoggerService - No `UserDefaults.standard` outside Services - Navigation logic only in Coordinators - Protocols in Core (reusable) or Model (domain), never in Services/ViewModel/UI/Coordinator - - Branch-specific: Combine patterns (this branch uses Combine + UIKit coordinators) + - Branch-specific: Combine + NavigationPath + single AppCoordinator (ObservableObject) 4. **Similar pattern search** - Search the codebase for code that follows the same pattern as what changed - If the same improvement should be applied elsewhere, flag each location 5. **Correctness check** - - Logic errors, type safety, concurrency (Swift 6 strict), memory management (`[weak self]`) + - Logic errors, type safety, concurrency (Swift 6 strict), memory management (`[weak self]`, `[weak coordinator]`) - Verify `@MainActor` isolation, `Sendable` conformance where needed 6. **Cross-platform parity** diff --git a/CLAUDE.md b/CLAUDE.md index da484a89..e3fb3518 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -45,7 +45,7 @@ Coordinator → UI → ViewModel → Model → Core Never import upward. ViewModel must NOT import UI or Coordinator. Model must NOT import Services. ## Anti-Patterns (Red Flags) -- `import UIKit` in ViewModel or Model packages — UIKit belongs in UI and Coordinator only +- `import UIKit` anywhere — this branch is pure SwiftUI, zero UIKit - Coordinator references in ViewModels (except weak optional closures) — retain cycle risk - `print()` anywhere — use LoggerService - `UserDefaults.standard` outside Services — use FeatureToggleService @@ -53,12 +53,15 @@ Never import upward. ViewModel must NOT import UI or Coordinator. Model must NOT - Navigation logic in Views — navigation decisions belong in Coordinators only - Protocol definitions in Services — domain protocols go in Model, reusable abstractions in Core -## Architecture (this branch: main) -- **Entry point**: UIKit `AppDelegate` + `SceneDelegate` (scene-based lifecycle) -- **Navigation**: 6 UIKit coordinators — `AppCoordinator`, `BaseCoordinator`, `LoginCoordinator`, `HomeCoordinator`, `ItemsCoordinator`, `SettingsCoordinator` -- **Views**: SwiftUI views embedded in UIHostingController via UIViewControllers -- **Reactive**: Combine (`@Published`, `CurrentValueSubject`, `.sink`) -- **ViewModel → Coordinator**: Optional closures (`onShowDetail`, `onShowProfile`, etc.) +## Architecture (this branch: feature/navigation-stack) +- **Entry point**: SwiftUI `@main App` struct (`FunApp.swift`) — no AppDelegate or SceneDelegate +- **Navigation**: Single `AppCoordinator: ObservableObject` with per-tab `NavigationPath` +- **Views**: Pure SwiftUI views, no UIHostingController or UIViewControllers +- **Reactive**: Combine (`@Published`, `@StateObject`, `@ObservedObject`, `.sink`) +- **ViewModel → Coordinator**: Optional closures wired in tab content wrappers via `.task { viewModel.onShowDetail = { ... } }` +- **Tab bar**: SwiftUI `TabView(selection: $coordinator.selectedTab)` +- **Push nav**: `coordinator.homePath.append(item)` via NavigationPath +- **Modals**: `.sheet(isPresented: $coordinator.isProfilePresented)` - **DI**: ServiceLocator with `@Service` property wrapper, session-scoped (LoginSession / AuthenticatedSession) ## Rule Index @@ -70,10 +73,11 @@ Consult these files for detailed guidance (not auto-loaded — read on demand): ## Code Style - Swift 6 strict concurrency, iOS 17+ - Pure SwiftUI (NavigationStack), MVVM-C with Combine -- Navigation closures on ViewModels, wired by single AppCoordinator: ObservableObject +- Single AppCoordinator: ObservableObject with @Published NavigationPath per tab +- ViewModels use closures for navigation, wired in tab content wrappers - Navigation logic ONLY in Coordinators, never in Views - Protocol placement: Core = reusable abstractions, Model = domain-specific -- ServiceLocator with @Service property wrapper (assertionFailure, not fatalError) +- ServiceLocator with @Service property wrapper - Combine over NotificationCenter for reactive state ## Testing diff --git a/ai-rules/general.md b/ai-rules/general.md index 95af417b..fd0782db 100644 --- a/ai-rules/general.md +++ b/ai-rules/general.md @@ -1,13 +1,13 @@ -# Fun-iOS Architecture Reference +# Fun-iOS Architecture Reference (feature/navigation-stack) ## SPM Package Structure 6 local packages + 1 Xcode app target, unified by `Fun.xcworkspace`: ``` -FunApp/FunApp.xcodeproj → iOS app target (AppDelegate, SceneDelegate, AppSessionFactory) -Coordinator/ → FunCoordinator (navigation logic) -UI/ → FunUI (SwiftUI views + UIViewControllers) +FunApp/FunApp.xcodeproj → iOS app target (FunApp.swift @main, AppSessionFactory) +Coordinator/ → FunCoordinator (single AppCoordinator + views) +UI/ → FunUI (SwiftUI views) ViewModel/ → FunViewModel (business logic, @Published state) Model/ → FunModel + FunModelTestSupport (domain types, protocols, mocks) Services/ → FunServices (concrete service implementations) @@ -35,69 +35,78 @@ FunServices Services is a sibling to the UI stack — it depends on Model and Core but NOT on ViewModel, UI, or Coordinator. -## MVVM-C Architecture +## MVVM-C Architecture (NavigationStack Variant) -### Coordinators (UIKit, in FunCoordinator) -- `AppCoordinator` — Root coordinator. Manages login ↔ main flow transitions, deep links, session lifecycle. -- `BaseCoordinator` — Base class with `safePush()`, `safePop()`, `safePresent()`, `safeDismiss()`, `share(text:)`. Handles transition-during-animation queuing. -- `LoginCoordinator` — Login flow -- `HomeCoordinator` — Home tab (detail + profile push/modal) -- `ItemsCoordinator` — Items tab -- `SettingsCoordinator` — Settings tab +### Single AppCoordinator +Unlike the main branch (6 UIKit coordinators), this branch uses a **single `AppCoordinator: ObservableObject`** that manages all navigation state: -### Navigation Rules -- Navigation decisions ONLY happen in Coordinators -- ViewModels communicate navigation intent via optional closures: `onShowDetail`, `onShowProfile`, `onLoginSuccess`, `onLogout`, `onPop`, `onShare`, `onDismiss`, `onGoToItems` -- Coordinators wire these closures when creating ViewModels -- Views call ViewModel methods, which invoke closures — Views never know about Coordinators - -### View Embedding Pattern (this branch) -SwiftUI views are embedded in UIKit via UIViewControllers: ```swift -// In Coordinator: -let viewModel = HomeViewModel() -viewModel.onShowDetail = { [weak self] item in self?.showDetail(for: item) } -let viewController = HomeViewController(viewModel: viewModel) -safePush(viewController) - -// HomeViewController wraps HomeView(viewModel:) in UIHostingController +@MainActor +public final class AppCoordinator: ObservableObject { + @Published public var currentFlow: AppFlow = .login + @Published public var selectedTab: TabIndex = .home + @Published public var homePath = NavigationPath() + @Published public var itemsPath = NavigationPath() + @Published public var settingsPath = NavigationPath() + @Published public var isProfilePresented = false + @Published public var activeToast: ToastEvent? + @Published public var appearanceMode: AppearanceMode = .system +} ``` -## ServiceLocator & @Service - -### Registration -Services are registered in session `activate()` methods: -```swift -// LoginSession.activate() -locator.register(DefaultLoggerService(), for: .logger) -locator.register(NetworkServiceImpl(), for: .network) -locator.register(DefaultFeatureToggleService(), for: .featureToggles) - -// AuthenticatedSession.activate() — adds favorites, toast, ai +### Navigation Architecture +``` +FunApp (@main) + └─ AppRootView + ├─ LoginTabContent (when currentFlow == .login) + └─ MainTabView (when currentFlow == .main) + ├─ homeTab: NavigationStack(path: $coordinator.homePath) + │ └─ HomeTabContent → .navigationDestination(for: FeaturedItem.self) + ├─ itemsTab: NavigationStack(path: $coordinator.itemsPath) + │ └─ ItemsTabContent + └─ settingsTab: NavigationStack(path: $coordinator.settingsPath) + └─ SettingsTabContent + + .sheet(isPresented: $coordinator.isProfilePresented) + └─ ProfileTabContent ``` -### Resolution +### View Wiring Pattern (this branch) +Tab content wrappers create ViewModels and wire closures: ```swift -@Service(.logger) private var logger: LoggerService -@Service(.favorites) private var favoritesService: FavoritesServiceProtocol +struct HomeTabContent: View { + let coordinator: AppCoordinator + @StateObject private var viewModel = HomeViewModel() + + var body: some View { + HomeView(viewModel: viewModel) + .task { + viewModel.onShowDetail = { [weak coordinator] item in + coordinator?.homePath.append(item) + } + viewModel.onShowProfile = { [weak coordinator] in + coordinator?.isProfilePresented = true + } + } + } +} ``` -Resolution crashes with `fatalError` if service isn't registered. This is intentional — a missing service means a programming error. + +## ServiceLocator & @Service + +Same as main branch — `ServiceLocator.shared` with `@Service` property wrapper. ### Service Keys `ServiceKey` enum in Core: `.network`, `.logger`, `.favorites`, `.toast`, `.featureToggles`, `.ai` ## Session-Scoped DI -Two session types control which services are available: - | Session | Services Registered | When Active | |---|---|---| | `LoginSession` | logger, network, featureToggles | Login screen | | `AuthenticatedSession` | logger, network, favorites, toast, featureToggles, ai | Main app | -- `activate()` registers services on `ServiceLocator.shared` -- `teardown()` calls `favoritesService.resetFavorites()` (AuthenticatedSession) then `ServiceLocator.shared.reset()` - `AppSessionFactory` creates the right session for each `AppFlow` case +- App entry (`FunApp.swift`) creates coordinator with `@StateObject` and calls `.start()` in `.task` ## Protocol Placement @@ -118,13 +127,18 @@ URL scheme: `funapp://` Parsed by `DeepLink(url:)` in Model. Handled by `AppCoordinator.handleDeepLink(_:)`. If received during login, stored as `pendingDeepLink` and executed after `transitionToMainFlow()`. +App entry uses `.onOpenURL { url in coordinator.handleDeepLink(DeepLink(url: url)) }`. ## Testing - **Framework**: Swift Testing (`import Testing`, `@Test`, `#expect`, `@Suite`) - **Test command**: `xcodebuild test -workspace Fun.xcworkspace -scheme FunApp -skip-testing UITests -destination 'platform=iOS Simulator,name=iPhone 17 Pro' CODE_SIGNING_ALLOWED=NO` -- **Mock location**: `Model/Sources/ModelTestSupport/Mocks/` — MockLoggerService, MockNetworkService, MockFavoritesService, MockToastService, MockFeatureToggleService, MockAIService +- **Mock location**: `Model/Sources/ModelTestSupport/Mocks/` - **Test support import**: `import FunModelTestSupport` -- **Setup pattern**: Use `init()` on test structs, not a `setupServices()` function -- **Consolidation**: Merge thin init tests into a single test when testing the same concern - **Snapshots**: swift-snapshot-testing in UI package tests + +## Key Difference from Main Branch +- No UIKit, no UIViewControllers, no UIHostingController, no BaseCoordinator +- Single coordinator (not 6 separate ones) +- Navigation via NavigationPath (declarative) instead of safePush/safePop (imperative) +- App entry via SwiftUI @main, not SceneDelegate diff --git a/ai-rules/swift-style.md b/ai-rules/swift-style.md index 9712e6f4..a133bd56 100644 --- a/ai-rules/swift-style.md +++ b/ai-rules/swift-style.md @@ -1,22 +1,22 @@ -# Swift Style Guide — Fun-iOS (main branch) +# Swift Style Guide — Fun-iOS (feature/navigation-stack) ## Swift 6 Strict Concurrency ### Actor Isolation -- `@MainActor` on all ViewModels, Coordinators, ServiceLocator, Session implementations, and UI-related code -- `Sendable` conformance on value types crossing isolation boundaries (enums, structs) +- `@MainActor` on AppCoordinator, all ViewModels, ServiceLocator, Session implementations +- `Sendable` conformance on value types crossing isolation boundaries - `nonisolated` only when a method genuinely doesn't touch actor-isolated state ### Self-Capture in Async Closures - **Default to `self?.`** for ViewModel async work — if self is nil, the view is gone anyway - `guard let self` creates a strong local ref that keeps self alive across `await` suspension points -- For `AsyncSequence` loops, `guard let self` must go INSIDE the loop body, not before the `for await` -- Zero `[unowned self]` in this codebase — correct decision, never introduce it +- For `AsyncSequence` loops, `guard let self` must go INSIDE the loop body +- Zero `[unowned self]` in this codebase — never introduce it +- **`[weak coordinator]`** in tab content wrappers when wiring closures ### Sendable Types - All enums in Model are `Sendable` (`AppFlow`, `TabIndex`, `DeepLink`, `AppearanceMode`, etc.) - Protocols that cross isolation boundaries include `Sendable` conformance -- Use `@unchecked Sendable` only as a last resort with documented justification ## MVVM-C Patterns @@ -26,25 +26,26 @@ - Optional closures for navigation: `var onShowDetail: ((FeaturedItem) -> Void)?` - Services accessed via `@Service` property wrapper - Private `Set` for Combine subscriptions -- No direct UIKit imports. No coordinator references (except weak closures). +- No UIKit imports. No coordinator references. -### Views (SwiftUI) +### Views (Pure SwiftUI) - Observe ViewModel via `@ObservedObject` or `@StateObject` - Never make navigation decisions — call ViewModel methods which invoke closures -- Use `AccessibilityID` enum for accessibility identifiers +- No `import UIKit` anywhere in this branch -### Coordinators (UIKit) -- Subclass `BaseCoordinator` for safe navigation (`safePush`, `safePop`, etc.) -- Create ViewModels, wire closures, wrap in ViewControllers -- Strong child coordinator references (parent → child is intentionally strong) -- `[weak self]` in all closures that reference the coordinator +### AppCoordinator +- Single `ObservableObject` managing all navigation state +- `@Published` NavigationPath per tab + selectedTab + modal flags +- Created with `@StateObject` in the app entry point +- Tab content wrappers wire ViewModel closures using `[weak coordinator]` ## Combine Patterns (this branch) ### Publishers +- `@Published` in AppCoordinator for navigation state - `@Published` in ViewModels for UI-bound state - `CurrentValueSubject` / `PassthroughSubject` in services for events -- `serviceDidRegisterPublisher` on ServiceLocator to observe dynamic service registration +- `serviceDidRegisterPublisher` on ServiceLocator for dynamic registration ### Schedulers - `RunLoop.main` for `debounce`/`throttle` — cooperates with `Task.sleep` in async tests @@ -54,35 +55,19 @@ ### Subscriptions - Store in `private var cancellables = Set()` - Use `[weak self]` in `.sink` closures -- Cancel explicitly when needed (e.g., `darkModeCancellable?.cancel()`) - -## ServiceLocator & @Service - -```swift -// Registration (in Session.activate()) -ServiceLocator.shared.register(DefaultLoggerService(), for: .logger) - -// Resolution (in ViewModel/Coordinator) -@Service(.logger) private var logger: LoggerService -``` - -- Registration happens in `LoginSession.activate()` and `AuthenticatedSession.activate()` -- Resolution crashes if service isn't registered — this is intentional -- Never call `ServiceLocator.shared.resolve()` directly in Views ## Naming Conventions ### Types +- AppCoordinator (single, not per-tab) +- Tab content wrappers: `HomeTabContent`, `ItemsTabContent`, `SettingsTabContent`, `ProfileTabContent`, `LoginTabContent` - ViewModels: `HomeViewModel`, `ItemsViewModel`, `DetailViewModel` - Views: `HomeView`, `ItemsView`, `DetailView` -- ViewControllers: `HomeViewController`, `ItemsViewController` -- Coordinators: `HomeCoordinator`, `ItemsCoordinator` - Services: protocol `FavoritesServiceProtocol`, impl `DefaultFavoritesService` -- Sessions: `LoginSession`, `AuthenticatedSession` ### Navigation Closures - `onShowDetail`, `onShowProfile`, `onLoginSuccess`, `onLogout`, `onPop`, `onShare`, `onDismiss`, `onGoToItems` -- Always optional, always set by the Coordinator +- Always optional, wired in tab content wrapper `.task` blocks ### Service Protocols - Suffix with `Protocol` when the name would otherwise collide: `FavoritesServiceProtocol`, `FeatureToggleServiceProtocol`, `ToastServiceProtocol`, `AIServiceProtocol`, `NetworkServiceProtocol` @@ -90,7 +75,7 @@ ServiceLocator.shared.register(DefaultLoggerService(), for: .logger) ## SwiftLint Rules -Zero-tolerance — CI fails on any violation. Key rules: +Zero-tolerance — CI fails on any violation. ### Custom Rules - **`no_print`**: Use `LoggerService` instead of `print()` @@ -98,25 +83,17 @@ Zero-tolerance — CI fails on any violation. Key rules: - **`weak_delegate`**: Delegate properties must be `weak` - **`no_direct_userdefaults`**: Use `FeatureToggleService`, not `UserDefaults.standard` (exempt: Services/) -### Enforced Opt-In Rules -- `force_unwrapping` — no force unwraps -- `implicitly_unwrapped_optional` — no IUOs -- `fatal_error_message` — fatal errors must have a message -- `modifier_order` — consistent modifier ordering -- `yoda_condition` — no `42 == x` - -### Limits -- Line length: warning 120, error 200 (ignores URLs, function declarations, comments) +### Key Limits +- Line length: warning 120, error 200 - File length: warning 500, error 1000 - Function body: warning 60, error 100 - Cyclomatic complexity: warning 15, error 25 ## Error Handling -- `assertionFailure()` for programmer errors that shouldn't crash in production (e.g., missing service) -- `fatalError()` only in ServiceLocator.resolve() — a missing service IS a programming error -- Never silently swallow errors — log them via LoggerService at minimum -- Use `Result` or `throws` for recoverable errors +- `assertionFailure()` for programmer errors that shouldn't crash in production +- `fatalError()` only in ServiceLocator.resolve() +- Never silently swallow errors — log via LoggerService ## Protocol Placement Rules From c929154ead9a2bc0fc2259dd6d0fa12dcb9b70b8 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Fri, 27 Feb 2026 16:51:09 +1100 Subject: [PATCH 13/29] Move @Service properties to class level Co-Authored-By: Claude Opus 4.6 --- Coordinator/Sources/Coordinator/AppCoordinator.swift | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Coordinator/Sources/Coordinator/AppCoordinator.swift b/Coordinator/Sources/Coordinator/AppCoordinator.swift index d458d4e6..09e01164 100644 --- a/Coordinator/Sources/Coordinator/AppCoordinator.swift +++ b/Coordinator/Sources/Coordinator/AppCoordinator.swift @@ -17,6 +17,8 @@ public final class AppCoordinator: ObservableObject { // MARK: - Services @Service(.logger) private var logger: LoggerService + @Service(.featureToggles) private var featureToggleService: FeatureToggleServiceProtocol + @Service(.toast) private var toastService: ToastServiceProtocol // MARK: - Session Management @@ -134,7 +136,6 @@ public final class AppCoordinator: ObservableObject { // MARK: - Toast private func observeToastEvents() { - @Service(.toast) var toastService: ToastServiceProtocol toastService.toastPublisher .sink { [weak self] event in self?.activeToast = event @@ -159,7 +160,6 @@ public final class AppCoordinator: ObservableObject { private func subscribeToDarkMode() { darkModeCancellable?.cancel() - @Service(.featureToggles) var featureToggleService: FeatureToggleServiceProtocol darkModeCancellable = featureToggleService.appearanceModePublisher .sink { [weak self] mode in self?.appearanceMode = mode From 8203decabda26605de814ad1a211b9c591569a08 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Fri, 27 Feb 2026 22:43:18 +1100 Subject: [PATCH 14/29] Remove unnecessary Task.sleep from pending deep link execution Co-Authored-By: Claude Opus 4.6 --- Coordinator/Sources/Coordinator/AppCoordinator.swift | 6 +----- ViewModel/Tests/ViewModelTests/LoginViewModelTests.swift | 6 +++--- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/Coordinator/Sources/Coordinator/AppCoordinator.swift b/Coordinator/Sources/Coordinator/AppCoordinator.swift index 09e01164..a28667bf 100644 --- a/Coordinator/Sources/Coordinator/AppCoordinator.swift +++ b/Coordinator/Sources/Coordinator/AppCoordinator.swift @@ -80,13 +80,9 @@ public final class AppCoordinator: ObservableObject { activateSession(for: .main) observeToastEvents() - // Execute pending deep link after main flow is ready if let deepLink = pendingDeepLink { pendingDeepLink = nil - Task { @MainActor [weak self] in - try? await Task.sleep(nanoseconds: 100_000_000) - self?.executeDeepLink(deepLink) - } + executeDeepLink(deepLink) } } diff --git a/ViewModel/Tests/ViewModelTests/LoginViewModelTests.swift b/ViewModel/Tests/ViewModelTests/LoginViewModelTests.swift index 27bd0808..913ffd1d 100644 --- a/ViewModel/Tests/ViewModelTests/LoginViewModelTests.swift +++ b/ViewModel/Tests/ViewModelTests/LoginViewModelTests.swift @@ -93,13 +93,13 @@ struct LoginViewModelTests { #expect(viewModel.isLoggingIn == false) } - @Test("Login failure does not call onLogin and shows error toast") - func testLoginFailureDoesNotCallOnLogin() async { + @Test("Login failure does not call onLoginSuccess and shows error toast") + func testLoginFailureDoesNotCallOnLoginSuccess() async { ServiceLocator.shared.register(MockNetworkService(shouldThrowError: true), for: .network) let viewModel = LoginViewModel() var loginCalled = false - viewModel.onLogin = { loginCalled = true } + viewModel.onLoginSuccess = { loginCalled = true } viewModel.login() await Task.yield() From 99596a878efcafa606451bb1833fdb72597a93ec Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 12:41:06 +1100 Subject: [PATCH 15/29] Extract named navigation methods on AppCoordinator Co-Authored-By: Claude Sonnet 4.6 --- .../Sources/Coordinator/AppCoordinator.swift | 46 +++++++++++++++---- .../Sources/Coordinator/MainTabView.swift | 22 ++++++--- 2 files changed, 51 insertions(+), 17 deletions(-) diff --git a/Coordinator/Sources/Coordinator/AppCoordinator.swift b/Coordinator/Sources/Coordinator/AppCoordinator.swift index a28667bf..4a9e98e7 100644 --- a/Coordinator/Sources/Coordinator/AppCoordinator.swift +++ b/Coordinator/Sources/Coordinator/AppCoordinator.swift @@ -73,6 +73,34 @@ public final class AppCoordinator: ObservableObject { currentSession = session } + // MARK: - Navigation + + public func showDetail(_ item: FeaturedItem, in tab: TabIndex) { + switch tab { + case .home: homePath.append(item) + case .items: itemsPath.append(item) + default: break + } + } + + public func showProfile() { + isProfilePresented = true + } + + public func dismissProfile() { + isProfilePresented = false + } + + public func selectTab(_ tab: TabIndex) { + selectedTab = tab + } + + public func popToRoot() { + homePath = NavigationPath() + itemsPath = NavigationPath() + settingsPath = NavigationPath() + } + // MARK: - Flow Transitions public func transitionToMainFlow() { @@ -92,11 +120,9 @@ public final class AppCoordinator: ObservableObject { activateSession(for: .login) // Reset navigation state - homePath = NavigationPath() - itemsPath = NavigationPath() - settingsPath = NavigationPath() - selectedTab = .home - isProfilePresented = false + popToRoot() + selectTab(.home) + dismissProfile() activeToast = nil } @@ -113,19 +139,19 @@ public final class AppCoordinator: ObservableObject { private func executeDeepLink(_ deepLink: DeepLink) { switch deepLink { case .tab(let tabIndex): - selectedTab = tabIndex + selectTab(tabIndex) case .item(let id): - selectedTab = .home + selectTab(.home) if let item = FeaturedItem.all.first(where: { $0.id == id }) { - homePath.append(item) + showDetail(item, in: .home) } else { logger.log("Deep link item not found: \(id)", level: .warning, category: .general) } case .profile: - selectedTab = .home - isProfilePresented = true + selectTab(.home) + showProfile() } } diff --git a/Coordinator/Sources/Coordinator/MainTabView.swift b/Coordinator/Sources/Coordinator/MainTabView.swift index 858590c0..0339e8ef 100644 --- a/Coordinator/Sources/Coordinator/MainTabView.swift +++ b/Coordinator/Sources/Coordinator/MainTabView.swift @@ -45,6 +45,10 @@ struct MainTabView: View { .navigationDestination(for: FeaturedItem.self) { item in DetailTabContent(item: item) } + // To push additional types, register more destinations: + // .navigationDestination(for: UserProfile.self) { profile in + // ProfileDetailView(profile: profile) + // } } .tabItem { Label(L10n.Tabs.home, systemImage: "house") @@ -59,6 +63,10 @@ struct MainTabView: View { .navigationDestination(for: FeaturedItem.self) { item in DetailTabContent(item: item) } + // To push additional types, register more destinations: + // .navigationDestination(for: UserProfile.self) { profile in + // ProfileDetailView(profile: profile) + // } } .tabItem { Label(L10n.Tabs.items, systemImage: "list.bullet") @@ -90,10 +98,10 @@ struct HomeTabContent: View { HomeView(viewModel: viewModel) .task { viewModel.onShowDetail = { [weak coordinator] item in - coordinator?.homePath.append(item) + coordinator?.showDetail(item, in: .home) } viewModel.onShowProfile = { [weak coordinator] in - coordinator?.isProfilePresented = true + coordinator?.showProfile() } } } @@ -108,7 +116,7 @@ struct ItemsTabContent: View { ItemsView(viewModel: viewModel) .task { viewModel.onShowDetail = { [weak coordinator] item in - coordinator?.itemsPath.append(item) + coordinator?.showDetail(item, in: .items) } } } @@ -145,15 +153,15 @@ struct ProfileTabContent: View { ProfileView(viewModel: viewModel) .task { viewModel.onDismiss = { [weak coordinator] in - coordinator?.isProfilePresented = false + coordinator?.dismissProfile() } viewModel.onLogout = { [weak coordinator] in - coordinator?.isProfilePresented = false + coordinator?.dismissProfile() coordinator?.transitionToLoginFlow() } viewModel.onGoToItems = { [weak coordinator] in - coordinator?.isProfilePresented = false - coordinator?.selectedTab = .items + coordinator?.dismissProfile() + coordinator?.selectTab(.items) } } } From 24514546c9f504bf4ba60c75b9ea796d3a124b65 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 12:44:53 +1100 Subject: [PATCH 16/29] Update docs to reflect named navigation methods Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 2 +- ai-rules/general.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index e3fb3518..0f1c3cad 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -60,7 +60,7 @@ Never import upward. ViewModel must NOT import UI or Coordinator. Model must NOT - **Reactive**: Combine (`@Published`, `@StateObject`, `@ObservedObject`, `.sink`) - **ViewModel → Coordinator**: Optional closures wired in tab content wrappers via `.task { viewModel.onShowDetail = { ... } }` - **Tab bar**: SwiftUI `TabView(selection: $coordinator.selectedTab)` -- **Push nav**: `coordinator.homePath.append(item)` via NavigationPath +- **Push nav**: `coordinator.showDetail(item, in: .home)` — named methods on AppCoordinator - **Modals**: `.sheet(isPresented: $coordinator.isProfilePresented)` - **DI**: ServiceLocator with `@Service` property wrapper, session-scoped (LoginSession / AuthenticatedSession) diff --git a/ai-rules/general.md b/ai-rules/general.md index fd0782db..eea27b26 100644 --- a/ai-rules/general.md +++ b/ai-rules/general.md @@ -81,10 +81,10 @@ struct HomeTabContent: View { HomeView(viewModel: viewModel) .task { viewModel.onShowDetail = { [weak coordinator] item in - coordinator?.homePath.append(item) + coordinator?.showDetail(item, in: .home) } viewModel.onShowProfile = { [weak coordinator] in - coordinator?.isProfilePresented = true + coordinator?.showProfile() } } } From 3784f6582ef6004a01c11e8baaf5bd74b63094f1 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 12:48:50 +1100 Subject: [PATCH 17/29] Add anti-pattern rule for inline navigation property manipulation Co-Authored-By: Claude Sonnet 4.6 --- CLAUDE.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/CLAUDE.md b/CLAUDE.md index 0f1c3cad..55aec623 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -50,7 +50,7 @@ Never import upward. ViewModel must NOT import UI or Coordinator. Model must NOT - `print()` anywhere — use LoggerService - `UserDefaults.standard` outside Services — use FeatureToggleService - Adding `fatalError()` for missing services — ServiceLocator.resolve() already crashes with `fatalError` if a service isn't registered; don't add redundant guards -- Navigation logic in Views — navigation decisions belong in Coordinators only +- Navigation logic in Views — all navigation (push, pop, tab switch, modal present/dismiss) must go through named AppCoordinator methods (`showDetail`, `selectTab`, `showProfile`, etc.), never inline property manipulation like `coordinator.homePath.append(item)` or `coordinator.isProfilePresented = true` - Protocol definitions in Services — domain protocols go in Model, reusable abstractions in Core ## Architecture (this branch: feature/navigation-stack) From 694672181e90e7c8ccf8133e224a93977927cd5d Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 15:08:33 +1100 Subject: [PATCH 18/29] Split TechnologyDescriptions to fix type_body_length warning Co-Authored-By: Claude Opus 4.6 --- .../TechnologyDescriptions+Extended.swift | 113 ++++++++++++++++++ .../Model/TechnologyDescriptions.swift | 103 ---------------- 2 files changed, 113 insertions(+), 103 deletions(-) create mode 100644 Model/Sources/Model/TechnologyDescriptions+Extended.swift diff --git a/Model/Sources/Model/TechnologyDescriptions+Extended.swift b/Model/Sources/Model/TechnologyDescriptions+Extended.swift new file mode 100644 index 00000000..ee247c5b --- /dev/null +++ b/Model/Sources/Model/TechnologyDescriptions+Extended.swift @@ -0,0 +1,113 @@ +// +// TechnologyDescriptions+Extended.swift +// Model +// +// Additional technology descriptions split out for type_body_length compliance +// + +extension TechnologyDescriptions { + + static let snapshotDescription = """ + Visual regression testing with swift-snapshot-testing: + + ```swift + @Test func homeViewSnapshot() { + let view = HomeView(viewModel: mockViewModel) + assertSnapshot(of: view, as: .image) + } + ``` + + • Captures UI as images + • Detects unintended visual changes + • Multiple device configurations + • Light/dark mode variants + """ + + static let accessibilityDescription = """ + Full VoiceOver and accessibility support: + + • accessibilityIdentifier for UI testing + • accessibilityLabel for VoiceOver + • accessibilityHint for context + + Example: + ```swift + .accessibilityIdentifier("featured_card_\\(item.id)") + .accessibilityLabel("\\(item.title), \\(item.subtitle)") + .accessibilityHint("Double tap to view details") + ``` + + All interactive elements are accessible. + """ + + static let deploymentTargetDescription = """ + This branch requires iOS 16.0 as the minimum deployment target. + + iOS 16 unlocks: + • NavigationStack + NavigationPath for programmatic navigation + • .navigationDestination(for:) type-safe routing + • SwiftUI TabView improvements + • ShareLink and other modern SwiftUI APIs + + Three branches demonstrate progressive iOS version requirements: + • main: iOS 15+ (UIKit navigation + Combine) + • navigation-stack: iOS 16+ (SwiftUI NavigationStack + Combine) + • async-sequence: iOS 17+ (AsyncStream + @Observable, zero Combine) + + Choose the branch that matches your app's deployment target. + """ + + static let concurrencyPatternsDescription = """ + Three approaches to the same problem: fetch 3 pages of items concurrently \ + and combine results. + + 1. Callbacks (DispatchGroup + concurrent barrier queue): + ```swift + let group = DispatchGroup() + let queue = DispatchQueue(label: "fetch", attributes: .concurrent) + var allItems: [[Item]] = Array(repeating: [], count: 3) + + for page in 0..<3 { + group.enter() + queue.async { + let items = fetchPage(page) + queue.async(flags: .barrier) { + allItems[page] = items + group.leave() + } + } + } + group.notify(queue: .main) { completion(allItems.flatMap { $0 }) } + ``` + Note: A serial queue would execute fetches one at a time. The concurrent \ + queue runs all 3 in parallel, and the barrier flag ensures thread-safe writes. + + 2. Combine (Publishers.MergeMany): + ```swift + let publishers = (0..<3).map { page in + Future<[Item], Never> { promise in + promise(.success(fetchPage(page))) + } + } + Publishers.MergeMany(publishers) + .collect() + .map { $0.flatMap { $0 } } + .sink { items in self.allItems = items } + .store(in: &cancellables) + ``` + + 3. async/await (TaskGroup): + ```swift + let items = await withTaskGroup(of: (Int, [Item]).self) { group in + for page in 0..<3 { + group.addTask { (page, await fetchPage(page)) } + } + var results: [(Int, [Item])] = [] + for await result in group { results.append(result) } + return results.sorted { $0.0 < $1.0 }.flatMap { $0.1 } + } + ``` + + All three produce identical results. async/await is the cleanest syntax. + """ +} diff --git a/Model/Sources/Model/TechnologyDescriptions.swift b/Model/Sources/Model/TechnologyDescriptions.swift index 13505a7e..ad886811 100644 --- a/Model/Sources/Model/TechnologyDescriptions.swift +++ b/Model/Sources/Model/TechnologyDescriptions.swift @@ -283,107 +283,4 @@ public enum TechnologyDescriptions { Benefits over XCTest: cleaner syntax, better assertions, parallel execution. """ - private static let snapshotDescription = """ - Visual regression testing with swift-snapshot-testing: - - ```swift - @Test func homeViewSnapshot() { - let view = HomeView(viewModel: mockViewModel) - assertSnapshot(of: view, as: .image) - } - ``` - - • Captures UI as images - • Detects unintended visual changes - • Multiple device configurations - • Light/dark mode variants - """ - - private static let accessibilityDescription = """ - Full VoiceOver and accessibility support: - - • accessibilityIdentifier for UI testing - • accessibilityLabel for VoiceOver - • accessibilityHint for context - - Example: - ```swift - .accessibilityIdentifier("featured_card_\\(item.id)") - .accessibilityLabel("\\(item.title), \\(item.subtitle)") - .accessibilityHint("Double tap to view details") - ``` - - All interactive elements are accessible. - """ - - private static let deploymentTargetDescription = """ - This branch requires iOS 16.0 as the minimum deployment target. - - iOS 16 unlocks: - • NavigationStack + NavigationPath for programmatic navigation - • .navigationDestination(for:) type-safe routing - • SwiftUI TabView improvements - • ShareLink and other modern SwiftUI APIs - - Three branches demonstrate progressive iOS version requirements: - • main: iOS 15+ (UIKit navigation + Combine) - • navigation-stack: iOS 16+ (SwiftUI NavigationStack + Combine) - • observation: iOS 17+ (AsyncStream + @Observable, zero Combine) - - Choose the branch that matches your app's deployment target. - """ - - private static let concurrencyPatternsDescription = """ - Three approaches to the same problem: fetch 3 pages of items concurrently \ - and combine results. - - 1. Callbacks (DispatchGroup + concurrent barrier queue): - ```swift - let group = DispatchGroup() - let queue = DispatchQueue(label: "fetch", attributes: .concurrent) - var allItems: [[Item]] = Array(repeating: [], count: 3) - - for page in 0..<3 { - group.enter() - queue.async { - let items = fetchPage(page) - queue.async(flags: .barrier) { - allItems[page] = items - group.leave() - } - } - } - group.notify(queue: .main) { completion(allItems.flatMap { $0 }) } - ``` - Note: A serial queue would execute fetches one at a time. The concurrent \ - queue runs all 3 in parallel, and the barrier flag ensures thread-safe writes. - - 2. Combine (Publishers.MergeMany): - ```swift - let publishers = (0..<3).map { page in - Future<[Item], Never> { promise in - promise(.success(fetchPage(page))) - } - } - Publishers.MergeMany(publishers) - .collect() - .map { $0.flatMap { $0 } } - .sink { items in self.allItems = items } - .store(in: &cancellables) - ``` - - 3. async/await (TaskGroup): - ```swift - let items = await withTaskGroup(of: (Int, [Item]).self) { group in - for page in 0..<3 { - group.addTask { (page, await fetchPage(page)) } - } - var results: [(Int, [Item])] = [] - for await result in group { results.append(result) } - return results.sorted { $0.0 < $1.0 }.flatMap { $0.1 } - } - ``` - - All three produce identical results. async/await is the cleanest syntax. - """ } From fcbae0d9d38020e9072711358bc00ec78bbeb328 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 15:35:47 +1100 Subject: [PATCH 19/29] Register toast service in LoginSession and observe via serviceDidRegister Co-Authored-By: Claude Opus 4.6 --- Coordinator/Sources/Coordinator/AppCoordinator.swift | 11 ++++++++++- .../Sources/Services/CoreServices/LoginSession.swift | 1 + Services/Tests/ServicesTests/SessionTests.swift | 6 +++--- 3 files changed, 14 insertions(+), 4 deletions(-) diff --git a/Coordinator/Sources/Coordinator/AppCoordinator.swift b/Coordinator/Sources/Coordinator/AppCoordinator.swift index 4a9e98e7..686b0297 100644 --- a/Coordinator/Sources/Coordinator/AppCoordinator.swift +++ b/Coordinator/Sources/Coordinator/AppCoordinator.swift @@ -61,6 +61,7 @@ public final class AppCoordinator: ObservableObject { public func start() { activateSession(for: currentFlow) + observeToastEvents() observeDarkMode() } @@ -106,7 +107,6 @@ public final class AppCoordinator: ObservableObject { public func transitionToMainFlow() { currentFlow = .main activateSession(for: .main) - observeToastEvents() if let deepLink = pendingDeepLink { pendingDeepLink = nil @@ -158,6 +158,15 @@ public final class AppCoordinator: ObservableObject { // MARK: - Toast private func observeToastEvents() { + ServiceLocator.shared.serviceDidRegisterPublisher + .filter { $0 == .toast } + .sink { [weak self] _ in + self?.subscribeToToasts() + } + .store(in: &cancellables) + } + + private func subscribeToToasts() { toastService.toastPublisher .sink { [weak self] event in self?.activeToast = event diff --git a/Services/Sources/Services/CoreServices/LoginSession.swift b/Services/Sources/Services/CoreServices/LoginSession.swift index 572b1701..534bbd37 100644 --- a/Services/Sources/Services/CoreServices/LoginSession.swift +++ b/Services/Sources/Services/CoreServices/LoginSession.swift @@ -17,6 +17,7 @@ public final class LoginSession: Session { locator.register(DefaultLoggerService(), for: .logger) locator.register(NetworkServiceImpl(), for: .network) locator.register(DefaultFeatureToggleService(), for: .featureToggles) + locator.register(DefaultToastService(), for: .toast) } public func teardown() { diff --git a/Services/Tests/ServicesTests/SessionTests.swift b/Services/Tests/ServicesTests/SessionTests.swift index 0ecd84f3..c0cb3a38 100644 --- a/Services/Tests/ServicesTests/SessionTests.swift +++ b/Services/Tests/ServicesTests/SessionTests.swift @@ -39,7 +39,7 @@ struct SessionTests { #expect(ServiceLocator.shared.isRegistered(for: .network)) #expect(ServiceLocator.shared.isRegistered(for: .featureToggles)) #expect(!ServiceLocator.shared.isRegistered(for: .favorites)) - #expect(!ServiceLocator.shared.isRegistered(for: .toast)) + #expect(ServiceLocator.shared.isRegistered(for: .toast)) session.teardown() } @@ -152,7 +152,7 @@ struct SessionTests { #expect(ServiceLocator.shared.isRegistered(for: .network)) #expect(ServiceLocator.shared.isRegistered(for: .featureToggles)) #expect(!ServiceLocator.shared.isRegistered(for: .favorites)) - #expect(!ServiceLocator.shared.isRegistered(for: .toast)) + #expect(ServiceLocator.shared.isRegistered(for: .toast)) login.teardown() } @@ -181,7 +181,7 @@ struct SessionTests { #expect(ServiceLocator.shared.isRegistered(for: .network)) #expect(ServiceLocator.shared.isRegistered(for: .featureToggles)) #expect(!ServiceLocator.shared.isRegistered(for: .favorites)) - #expect(!ServiceLocator.shared.isRegistered(for: .toast)) + #expect(ServiceLocator.shared.isRegistered(for: .toast)) login2.teardown() } From 22cefcc9f27c97b6cadc035d6baeadae7df3ec0a Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 18:47:43 +1100 Subject: [PATCH 20/29] Move routing table to AppCoordinator.destinationView(for:) Co-Authored-By: Claude Opus 4.6 --- Coordinator/Sources/Coordinator/AppCoordinator.swift | 7 +++++++ Coordinator/Sources/Coordinator/MainTabView.swift | 12 ++---------- 2 files changed, 9 insertions(+), 10 deletions(-) diff --git a/Coordinator/Sources/Coordinator/AppCoordinator.swift b/Coordinator/Sources/Coordinator/AppCoordinator.swift index 686b0297..40371c63 100644 --- a/Coordinator/Sources/Coordinator/AppCoordinator.swift +++ b/Coordinator/Sources/Coordinator/AppCoordinator.swift @@ -102,6 +102,13 @@ public final class AppCoordinator: ObservableObject { settingsPath = NavigationPath() } + // MARK: - Routing + +// @ViewBuilder + func destinationView(for item: FeaturedItem) -> some View { + DetailTabContent(item: item) + } + // MARK: - Flow Transitions public func transitionToMainFlow() { diff --git a/Coordinator/Sources/Coordinator/MainTabView.swift b/Coordinator/Sources/Coordinator/MainTabView.swift index 0339e8ef..e3d2d4ef 100644 --- a/Coordinator/Sources/Coordinator/MainTabView.swift +++ b/Coordinator/Sources/Coordinator/MainTabView.swift @@ -43,12 +43,8 @@ struct MainTabView: View { NavigationStack(path: $coordinator.homePath) { HomeTabContent(coordinator: coordinator) .navigationDestination(for: FeaturedItem.self) { item in - DetailTabContent(item: item) + coordinator.destinationView(for: item) } - // To push additional types, register more destinations: - // .navigationDestination(for: UserProfile.self) { profile in - // ProfileDetailView(profile: profile) - // } } .tabItem { Label(L10n.Tabs.home, systemImage: "house") @@ -61,12 +57,8 @@ struct MainTabView: View { NavigationStack(path: $coordinator.itemsPath) { ItemsTabContent(coordinator: coordinator) .navigationDestination(for: FeaturedItem.self) { item in - DetailTabContent(item: item) + coordinator.destinationView(for: item) } - // To push additional types, register more destinations: - // .navigationDestination(for: UserProfile.self) { profile in - // ProfileDetailView(profile: profile) - // } } .tabItem { Label(L10n.Tabs.items, systemImage: "list.bullet") From 68c942ca1a3822c90acf29031d9b86223a8110df Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 18:59:16 +1100 Subject: [PATCH 21/29] Add @ViewBuilder to destinationView for future routing Co-Authored-By: Claude Opus 4.6 --- Coordinator/Sources/Coordinator/AppCoordinator.swift | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/Coordinator/Sources/Coordinator/AppCoordinator.swift b/Coordinator/Sources/Coordinator/AppCoordinator.swift index 40371c63..985bd3ba 100644 --- a/Coordinator/Sources/Coordinator/AppCoordinator.swift +++ b/Coordinator/Sources/Coordinator/AppCoordinator.swift @@ -104,7 +104,9 @@ public final class AppCoordinator: ObservableObject { // MARK: - Routing -// @ViewBuilder + // @ViewBuilder not required for a single expression today, but keeps + // this method ready for switch/if-else routing as destination types grow. + @ViewBuilder func destinationView(for item: FeaturedItem) -> some View { DetailTabContent(item: item) } From 7b9fe539860fcc2b8fdb1a1d0c5c5940c4b3efea Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 19:05:57 +1100 Subject: [PATCH 22/29] Document why AppRootView and MainTabView live in Coordinator Co-Authored-By: Claude Opus 4.6 --- CLAUDE.md | 1 + Coordinator/Sources/Coordinator/AppRootView.swift | 4 +++- Coordinator/Sources/Coordinator/MainTabView.swift | 4 +++- 3 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 55aec623..973af1d3 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -63,6 +63,7 @@ Never import upward. ViewModel must NOT import UI or Coordinator. Model must NOT - **Push nav**: `coordinator.showDetail(item, in: .home)` — named methods on AppCoordinator - **Modals**: `.sheet(isPresented: $coordinator.isProfilePresented)` - **DI**: ServiceLocator with `@Service` property wrapper, session-scoped (LoginSession / AuthenticatedSession) +- **Coordinator-owned views**: `AppRootView`, `MainTabView`, and tab content wrappers live in `Coordinator` (not `FunUI`) because they depend on `AppCoordinator`. Moving them to `FunUI` would create a circular dependency (`Coordinator → UI → Coordinator`). Pure reusable views (`HomeView`, `DetailView`, etc.) stay in `FunUI`. ## Rule Index Consult these files for detailed guidance (not auto-loaded — read on demand): diff --git a/Coordinator/Sources/Coordinator/AppRootView.swift b/Coordinator/Sources/Coordinator/AppRootView.swift index 397ecdc5..a15b2113 100644 --- a/Coordinator/Sources/Coordinator/AppRootView.swift +++ b/Coordinator/Sources/Coordinator/AppRootView.swift @@ -2,7 +2,9 @@ // AppRootView.swift // Coordinator // -// Root SwiftUI view that switches between login and main tab flow +// Root SwiftUI view that switches between login and main tab flow. +// Lives in Coordinator (not FunUI) because it depends on AppCoordinator. +// Moving to FunUI would create a circular dependency: Coordinator → UI → Coordinator. // import SwiftUI diff --git a/Coordinator/Sources/Coordinator/MainTabView.swift b/Coordinator/Sources/Coordinator/MainTabView.swift index e3d2d4ef..5cf51166 100644 --- a/Coordinator/Sources/Coordinator/MainTabView.swift +++ b/Coordinator/Sources/Coordinator/MainTabView.swift @@ -2,7 +2,9 @@ // MainTabView.swift // Coordinator // -// Main tab view with NavigationStack per tab, profile sheet, and toast overlay +// Main tab view with NavigationStack per tab, profile sheet, and toast overlay. +// Lives in Coordinator (not FunUI) because it depends on AppCoordinator. +// Moving to FunUI would create a circular dependency: Coordinator → UI → Coordinator. // import SwiftUI From 614dbf03b158052e95c59a4f7ee3099e2d64a18b Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 19:09:57 +1100 Subject: [PATCH 23/29] Add comment about chaining navigationDestination for more types Co-Authored-By: Claude Opus 4.6 --- Coordinator/Sources/Coordinator/MainTabView.swift | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Coordinator/Sources/Coordinator/MainTabView.swift b/Coordinator/Sources/Coordinator/MainTabView.swift index 5cf51166..8bfde47d 100644 --- a/Coordinator/Sources/Coordinator/MainTabView.swift +++ b/Coordinator/Sources/Coordinator/MainTabView.swift @@ -47,6 +47,7 @@ struct MainTabView: View { .navigationDestination(for: FeaturedItem.self) { item in coordinator.destinationView(for: item) } + // Chain more .navigationDestination(for:) to handle additional pushable types. } .tabItem { Label(L10n.Tabs.home, systemImage: "house") @@ -61,6 +62,7 @@ struct MainTabView: View { .navigationDestination(for: FeaturedItem.self) { item in coordinator.destinationView(for: item) } + // Chain more .navigationDestination(for:) to handle additional pushable types. } .tabItem { Label(L10n.Tabs.items, systemImage: "list.bullet") From 3c0736fba8942a5688eab996bf9e996e10276502 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 19:15:25 +1100 Subject: [PATCH 24/29] Document ownership wrapper pattern and add anti-pattern rule Co-Authored-By: Claude Opus 4.6 --- CLAUDE.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CLAUDE.md b/CLAUDE.md index 973af1d3..ef58e585 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -52,6 +52,7 @@ Never import upward. ViewModel must NOT import UI or Coordinator. Model must NOT - Adding `fatalError()` for missing services — ServiceLocator.resolve() already crashes with `fatalError` if a service isn't registered; don't add redundant guards - Navigation logic in Views — all navigation (push, pop, tab switch, modal present/dismiss) must go through named AppCoordinator methods (`showDetail`, `selectTab`, `showProfile`, etc.), never inline property manipulation like `coordinator.homePath.append(item)` or `coordinator.isProfilePresented = true` - Protocol definitions in Services — domain protocols go in Model, reusable abstractions in Core +- Wrong ownership annotations — tab content wrappers must use `@StateObject` to own ViewModels (not `@ObservedObject`). `@ObservedObject` on a ViewModel means it gets recreated on every re-render. Conversely, the coordinator must be `let` or `@ObservedObject` (not `@StateObject`) since the wrapper doesn't own it. ## Architecture (this branch: feature/navigation-stack) - **Entry point**: SwiftUI `@main App` struct (`FunApp.swift`) — no AppDelegate or SceneDelegate @@ -64,6 +65,7 @@ Never import upward. ViewModel must NOT import UI or Coordinator. Model must NOT - **Modals**: `.sheet(isPresented: $coordinator.isProfilePresented)` - **DI**: ServiceLocator with `@Service` property wrapper, session-scoped (LoginSession / AuthenticatedSession) - **Coordinator-owned views**: `AppRootView`, `MainTabView`, and tab content wrappers live in `Coordinator` (not `FunUI`) because they depend on `AppCoordinator`. Moving them to `FunUI` would create a circular dependency (`Coordinator → UI → Coordinator`). Pure reusable views (`HomeView`, `DetailView`, etc.) stay in `FunUI`. +- **Ownership wrappers**: Tab content wrappers (`HomeTabContent`, `ItemsTabContent`, etc.) use `@StateObject` to **own** their ViewModel and `@ObservedObject` (or `let`) for the coordinator passed from the parent. `@StateObject` ensures the ViewModel survives re-renders; `@ObservedObject` means the wrapper doesn't own the coordinator. Pure views in `FunUI` take `@ObservedObject var viewModel` since the wrapper owns it. ## Rule Index Consult these files for detailed guidance (not auto-loaded — read on demand): From 37d770e3ed13e2ad58652f4bdf4210691e9d17da Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sat, 28 Feb 2026 20:21:57 +1100 Subject: [PATCH 25/29] Add routing table example comment to destinationView Co-Authored-By: Claude Opus 4.6 --- Coordinator/Sources/Coordinator/AppCoordinator.swift | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/Coordinator/Sources/Coordinator/AppCoordinator.swift b/Coordinator/Sources/Coordinator/AppCoordinator.swift index 985bd3ba..7a280dab 100644 --- a/Coordinator/Sources/Coordinator/AppCoordinator.swift +++ b/Coordinator/Sources/Coordinator/AppCoordinator.swift @@ -104,8 +104,15 @@ public final class AppCoordinator: ObservableObject { // MARK: - Routing - // @ViewBuilder not required for a single expression today, but keeps - // this method ready for switch/if-else routing as destination types grow. + // Centralised routing table — called from both homeTab and itemsTab + // .navigationDestination closures, so destination logic lives in one place. + // As destination types grow, expand with a switch: + // + // switch item.category { + // case .article: ArticleDetailView(item: item) + // case .video: VideoPlayerView(item: item) + // default: DetailTabContent(item: item) + // } @ViewBuilder func destinationView(for item: FeaturedItem) -> some View { DetailTabContent(item: item) From 4f9fe4649e103c775a225d853dbebb92033f6bd4 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sun, 1 Mar 2026 21:10:03 +1100 Subject: [PATCH 26/29] Replace Task.sleep(nanoseconds:) with Duration API Both feature branches target iOS 16+ where Task.sleep(for:) is available. .milliseconds/.seconds is clearer than raw nanosecond counts. Co-Authored-By: Claude Opus 4.6 --- Model/Sources/Model/TechnologyDescriptions.swift | 2 +- .../Services/CoreServices/NetworkServiceImpl.swift | 14 +++++--------- UI/Sources/UI/Components/ToastView.swift | 4 ++-- .../Tests/ViewModelTests/ItemsViewModelTests.swift | 6 +++--- 4 files changed, 11 insertions(+), 15 deletions(-) diff --git a/Model/Sources/Model/TechnologyDescriptions.swift b/Model/Sources/Model/TechnologyDescriptions.swift index ad886811..1ac7523f 100644 --- a/Model/Sources/Model/TechnologyDescriptions.swift +++ b/Model/Sources/Model/TechnologyDescriptions.swift @@ -70,7 +70,7 @@ public enum TechnologyDescriptions { Example from HomeViewModel: ```swift public func loadFeaturedItems() async { - try? await Task.sleep(nanoseconds: delay) + try? await Task.sleep(for: .milliseconds(delay)) featuredItems = FeaturedItem.allCarouselSets } ``` diff --git a/Services/Sources/Services/CoreServices/NetworkServiceImpl.swift b/Services/Sources/Services/CoreServices/NetworkServiceImpl.swift index 57e42202..f6ea146a 100644 --- a/Services/Sources/Services/CoreServices/NetworkServiceImpl.swift +++ b/Services/Sources/Services/CoreServices/NetworkServiceImpl.swift @@ -17,27 +17,24 @@ public actor NetworkServiceImpl: NetworkServiceProtocol { } public func login() async throws { - try await Task.sleep(nanoseconds: 500_000_000) + try await Task.sleep(for: .milliseconds(500)) } public func fetchFeaturedItems() async throws -> [[FeaturedItem]] { try await throwIfSimulatingErrors() - let delay = UInt64.random(in: 1_000_000_000...2_000_000_000) - try await Task.sleep(nanoseconds: delay) + try await Task.sleep(for: .milliseconds(.random(in: 1000...2000))) return FeaturedItem.allCarouselSets.shuffled().map { $0.shuffled() } } public func fetchAllItems() async throws -> [FeaturedItem] { try await throwIfSimulatingErrors() - let delay = UInt64.random(in: 500_000_000...1_000_000_000) - try await Task.sleep(nanoseconds: delay) + try await Task.sleep(for: .milliseconds(.random(in: 500...1000))) return FeaturedItem.all } public func searchItems(query: String, category: String) async throws -> [FeaturedItem] { try await throwIfSimulatingErrors() - let delay = UInt64.random(in: 300_000_000...800_000_000) - try await Task.sleep(nanoseconds: delay) + try await Task.sleep(for: .milliseconds(.random(in: 300...800))) var results = FeaturedItem.all @@ -58,8 +55,7 @@ public actor NetworkServiceImpl: NetworkServiceProtocol { private func throwIfSimulatingErrors() async throws { guard await shouldSimulateErrors() else { return } - let delay = UInt64.random(in: 1_000_000_000...2_000_000_000) - try await Task.sleep(nanoseconds: delay) + try await Task.sleep(for: .milliseconds(.random(in: 1000...2000))) throw AppError.networkError } } diff --git a/UI/Sources/UI/Components/ToastView.swift b/UI/Sources/UI/Components/ToastView.swift index d22e1488..17b8e8ba 100644 --- a/UI/Sources/UI/Components/ToastView.swift +++ b/UI/Sources/UI/Components/ToastView.swift @@ -68,7 +68,7 @@ public struct ToastView: View { } // Auto-dismiss after 3 seconds - try? await Task.sleep(nanoseconds: 3_000_000_000) + try? await Task.sleep(for: .seconds(3)) dismiss() } } @@ -88,7 +88,7 @@ public struct ToastView: View { isVisible = false } Task { - try? await Task.sleep(nanoseconds: 250_000_000) + try? await Task.sleep(for: .milliseconds(250)) onDismiss() } } diff --git a/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift b/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift index a6bfe97f..7b771b64 100644 --- a/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift +++ b/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift @@ -286,7 +286,7 @@ struct ItemsViewModelTests { viewModel.didSelectCategory(viewModel.selectedCategory) // Wait for the search task to complete - try await Task.sleep(nanoseconds: 100_000_000) + try await Task.sleep(for: .milliseconds(100)) #expect(mockNetwork.searchItemsCallCount == 1) #expect(mockNetwork.lastSearchQuery == "swift") @@ -305,7 +305,7 @@ struct ItemsViewModelTests { viewModel.searchText = "swift" viewModel.didSelectCategory(viewModel.selectedCategory) - try await Task.sleep(nanoseconds: 100_000_000) + try await Task.sleep(for: .milliseconds(100)) #expect(viewModel.hasError == true) #expect(viewModel.items.isEmpty) @@ -331,7 +331,7 @@ struct ItemsViewModelTests { // Perform a search viewModel.searchText = "swift" viewModel.didSelectCategory(viewModel.selectedCategory) - try await Task.sleep(nanoseconds: 100_000_000) + try await Task.sleep(for: .milliseconds(100)) #expect(viewModel.items.count == 1) // Clear search From 107122bc6af1b1d14ae3467224772188ecbd1f96 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Sun, 1 Mar 2026 22:12:49 +1100 Subject: [PATCH 27/29] Fix stale docs: remove onPop/onShare, add toast to LoginSession, @testable import Co-Authored-By: Claude Opus 4.6 --- ai-rules/general.md | 4 ++-- ai-rules/swift-style.md | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/ai-rules/general.md b/ai-rules/general.md index eea27b26..80d92c2a 100644 --- a/ai-rules/general.md +++ b/ai-rules/general.md @@ -102,7 +102,7 @@ Same as main branch — `ServiceLocator.shared` with `@Service` property wrapper | Session | Services Registered | When Active | |---|---|---| -| `LoginSession` | logger, network, featureToggles | Login screen | +| `LoginSession` | logger, network, featureToggles, toast | Login screen | | `AuthenticatedSession` | logger, network, favorites, toast, featureToggles, ai | Main app | - `AppSessionFactory` creates the right session for each `AppFlow` case @@ -134,7 +134,7 @@ App entry uses `.onOpenURL { url in coordinator.handleDeepLink(DeepLink(url: url - **Framework**: Swift Testing (`import Testing`, `@Test`, `#expect`, `@Suite`) - **Test command**: `xcodebuild test -workspace Fun.xcworkspace -scheme FunApp -skip-testing UITests -destination 'platform=iOS Simulator,name=iPhone 17 Pro' CODE_SIGNING_ALLOWED=NO` - **Mock location**: `Model/Sources/ModelTestSupport/Mocks/` -- **Test support import**: `import FunModelTestSupport` +- **Test support import**: `@testable import FunModelTestSupport` - **Snapshots**: swift-snapshot-testing in UI package tests ## Key Difference from Main Branch diff --git a/ai-rules/swift-style.md b/ai-rules/swift-style.md index a133bd56..d584fa15 100644 --- a/ai-rules/swift-style.md +++ b/ai-rules/swift-style.md @@ -66,7 +66,7 @@ - Services: protocol `FavoritesServiceProtocol`, impl `DefaultFavoritesService` ### Navigation Closures -- `onShowDetail`, `onShowProfile`, `onLoginSuccess`, `onLogout`, `onPop`, `onShare`, `onDismiss`, `onGoToItems` +- `onShowDetail`, `onShowProfile`, `onLoginSuccess`, `onLogout`, `onDismiss`, `onGoToItems` - Always optional, wired in tab content wrapper `.task` blocks ### Service Protocols From 27d0b255daeccef4a131c773a7148405e4fe5002 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Mon, 2 Mar 2026 11:06:49 +1100 Subject: [PATCH 28/29] =?UTF-8?q?Fix=20UI=20module=20description=20?= =?UTF-8?q?=E2=80=94=20remove=20UIKit=20reference?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit This branch is pure SwiftUI, no UIKit controllers. Co-Authored-By: Claude Opus 4.6 --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index cef54c28..0156c073 100644 --- a/README.md +++ b/README.md @@ -82,7 +82,7 @@ The three branches are **visually identical**, but architectural differences pro Fun-iOS/ ├── FunApp/ # iOS app target (Xcode project) ├── Coordinator/ # Navigation coordinators -├── UI/ # SwiftUI views & UIKit controllers +├── UI/ # SwiftUI views ├── ViewModel/ # Business logic (MVVM) ├── Model/ # Data models & protocols ├── Services/ # Concrete service implementations From 2bd34b720c921be3cac4d5be7a99f1395010df12 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Mon, 2 Mar 2026 11:12:25 +1100 Subject: [PATCH 29/29] Fix stale async-sequence reference in TechnologyDescriptions Co-Authored-By: Claude Opus 4.6 --- Model/Sources/Model/TechnologyDescriptions+Extended.swift | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Model/Sources/Model/TechnologyDescriptions+Extended.swift b/Model/Sources/Model/TechnologyDescriptions+Extended.swift index ee247c5b..5675c990 100644 --- a/Model/Sources/Model/TechnologyDescriptions+Extended.swift +++ b/Model/Sources/Model/TechnologyDescriptions+Extended.swift @@ -52,7 +52,7 @@ extension TechnologyDescriptions { Three branches demonstrate progressive iOS version requirements: • main: iOS 15+ (UIKit navigation + Combine) • navigation-stack: iOS 16+ (SwiftUI NavigationStack + Combine) - • async-sequence: iOS 17+ (AsyncStream + @Observable, zero Combine) + • observation: iOS 17+ (AsyncStream + @Observable, zero Combine) Choose the branch that matches your app's deployment target. """

#G#iW?N_In0 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%0Ae64X(N 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 M#PUYD(bL!e2ZI5@oB#j- diff --git a/FunApp/FunApp/FunApp.swift b/FunApp/FunApp/FunApp.swift new file mode 100644 index 00000000..7c6c110b --- /dev/null +++ b/FunApp/FunApp/FunApp.swift @@ -0,0 +1,32 @@ +// +// FunApp.swift +// FunApp +// +// SwiftUI App entry point +// + +import SwiftUI + +import FunCoordinator +import FunModel + +@main +struct FunApp: App { + @StateObject private var coordinator = AppCoordinator( + sessionFactory: AppSessionFactory() + ) + + var body: some Scene { + WindowGroup { + AppRootView(coordinator: coordinator) + .onOpenURL { url in + if let deepLink = DeepLink(url: url) { + coordinator.handleDeepLink(deepLink) + } + } + .task { + coordinator.start() + } + } + } +} diff --git a/FunApp/FunApp/Info.plist b/FunApp/FunApp/Info.plist index 7744c929..f825c8cf 100644 --- a/FunApp/FunApp/Info.plist +++ b/FunApp/FunApp/Info.plist @@ -3,7 +3,7 @@ CFBundleDisplayName - Fun App + Fun SwiftUI CFBundleURLTypes @@ -12,25 +12,8 @@ funapp CFBundleURLName - com.charles.wang.FunApp + com.charles.wang.FunApp.swiftui - UIApplicationSceneManifest - - UIApplicationSupportsMultipleScenes - - UISceneConfigurations - - UIWindowSceneSessionRoleApplication - - - UISceneConfigurationName - Default Configuration - UISceneDelegateClassName - $(PRODUCT_MODULE_NAME).SceneDelegate - - - - diff --git a/FunApp/FunApp/SceneDelegate.swift b/FunApp/FunApp/SceneDelegate.swift deleted file mode 100644 index ec19752a..00000000 --- a/FunApp/FunApp/SceneDelegate.swift +++ /dev/null @@ -1,95 +0,0 @@ -// -// SceneDelegate.swift -// FunApp -// -// Created by Charles Wang on 30/01/2026. -// - -import Combine -import UIKit - -import FunCoordinator -import FunCore -import FunModel - -@MainActor -class SceneDelegate: UIResponder, UIWindowSceneDelegate { - - var window: UIWindow? - var appCoordinator: AppCoordinator? - private var cancellables = Set() - private var darkModeCancellable: AnyCancellable? - - @Service(.featureToggles) private var featureToggleService: FeatureToggleServiceProtocol - - func scene( - _ scene: UIScene, - willConnectTo session: UISceneSession, - options connectionOptions: UIScene.ConnectionOptions - ) { - guard let windowScene = (scene as? UIWindowScene) else { return } - - // MARK: - Setup Window - - let window = UIWindow(windowScene: windowScene) - - // Create root navigation controller - let navigationController = UINavigationController() - navigationController.setNavigationBarHidden(true, animated: false) - - window.rootViewController = navigationController - self.window = window - - // Observe before coordinator.start() so serviceDidRegisterPublisher triggers initial subscription - observeDarkMode() - - // Create and start app coordinator with session factory - let coordinator = AppCoordinator( - navigationController: navigationController, - sessionFactory: AppSessionFactory() - ) - coordinator.start() - self.appCoordinator = coordinator - - window.makeKeyAndVisible() - - // Handle deep link from cold start - if let url = connectionOptions.urlContexts.first?.url, - let deepLink = DeepLink(url: url) { - coordinator.handleDeepLink(deepLink) - } - } - - // MARK: - Dark Mode Observation - - private func observeDarkMode() { - ServiceLocator.shared.serviceDidRegisterPublisher - .filter { $0 == .featureToggles } - .sink { [weak self] _ in - self?.subscribeToDarkMode() - } - .store(in: &cancellables) - } - - private func subscribeToDarkMode() { - // Cancel previous subscription to avoid duplicates on repeated registrations - darkModeCancellable?.cancel() - darkModeCancellable = featureToggleService.appearanceModePublisher - .sink { [weak self] mode in - let style: UIUserInterfaceStyle = switch mode { - case .system: .unspecified - case .light: .light - case .dark: .dark - } - self?.window?.overrideUserInterfaceStyle = style - } - } - - // MARK: - Deep Link Handling - - func scene(_ scene: UIScene, openURLContexts URLContexts: Set) { - guard let url = URLContexts.first?.url, - let deepLink = DeepLink(url: url) else { return } - appCoordinator?.handleDeepLink(deepLink) - } -} diff --git a/Model/Package.swift b/Model/Package.swift index 50bc73f4..2ed4baec 100644 --- a/Model/Package.swift +++ b/Model/Package.swift @@ -4,8 +4,8 @@ import PackageDescription let package = Package( name: "Model", platforms: [ - .iOS(.v15), - .macCatalyst(.v15), + .iOS(.v16), + .macCatalyst(.v16), ], products: [ .library(name: "FunModel", targets: ["FunModel"]), diff --git a/Model/Sources/Model/FeaturedItem.swift b/Model/Sources/Model/FeaturedItem.swift index 6d0fb811..f6637606 100644 --- a/Model/Sources/Model/FeaturedItem.swift +++ b/Model/Sources/Model/FeaturedItem.swift @@ -7,7 +7,7 @@ import Foundation -public struct FeaturedItem: Identifiable, Equatable, Sendable { +public struct FeaturedItem: Identifiable, Hashable, Sendable { public let id: String public let title: String public let subtitle: String diff --git a/Model/Sources/Model/ItemColor.swift b/Model/Sources/Model/ItemColor.swift index 80da2d68..1c7d5cd4 100644 --- a/Model/Sources/Model/ItemColor.swift +++ b/Model/Sources/Model/ItemColor.swift @@ -7,7 +7,7 @@ import Foundation -public enum ItemColor: String, Sendable, Equatable { +public enum ItemColor: String, Sendable, Hashable { case green case orange case blue diff --git a/Services/Package.swift b/Services/Package.swift index 25f95015..034e1c00 100644 --- a/Services/Package.swift +++ b/Services/Package.swift @@ -4,8 +4,8 @@ import PackageDescription let package = Package( name: "Services", platforms: [ - .iOS(.v15), - .macCatalyst(.v15), + .iOS(.v16), + .macCatalyst(.v16), ], products: [ .library(name: "FunServices", targets: ["FunServices"]), diff --git a/UI/Package.swift b/UI/Package.swift index 732ac57f..ac291be4 100644 --- a/UI/Package.swift +++ b/UI/Package.swift @@ -4,8 +4,8 @@ import PackageDescription let package = Package( name: "UI", platforms: [ - .iOS(.v15), - .macCatalyst(.v15), + .iOS(.v16), + .macCatalyst(.v16), ], products: [ .library(name: "FunUI", targets: ["FunUI"]), diff --git a/UI/Sources/UI/Detail/DetailView.swift b/UI/Sources/UI/Detail/DetailView.swift index 710ec4a0..9ee484e4 100644 --- a/UI/Sources/UI/Detail/DetailView.swift +++ b/UI/Sources/UI/Detail/DetailView.swift @@ -18,23 +18,36 @@ public struct DetailView: View { } public var body: some View { + detailContent + .navigationTitle(viewModel.itemTitle) + .toolbar(.hidden, for: .tabBar) + .toolbar { + ToolbarItem(placement: .topBarTrailing) { + ShareLink(item: viewModel.shareText) + .accessibilityIdentifier(AccessibilityID.Detail.shareButton) + } + ToolbarItem(placement: .topBarTrailing) { + Button(action: { viewModel.didTapToggleFavorite() }) { + Image(systemName: viewModel.isFavorited ? "star.fill" : "star") + .foregroundColor(viewModel.isFavorited ? .yellow : .blue) + } + .accessibilityIdentifier(AccessibilityID.Detail.favoriteButton) + } + } + } + + private var detailContent: some View { ScrollView { VStack(alignment: .leading, spacing: 20) { - // Header - VStack(alignment: .leading, spacing: 8) { - Text(viewModel.itemTitle) - .font(.largeTitle) - .fontWeight(.bold) - - HStack { - Text(viewModel.category) - .font(.subheadline) - .padding(.horizontal, 12) - .padding(.vertical, 6) - .background(Color.blue.opacity(0.1)) - .foregroundColor(.blue) - .cornerRadius(8) - } + // Category badge + HStack { + Text(viewModel.category) + .font(.subheadline) + .padding(.horizontal, 12) + .padding(.vertical, 6) + .background(Color.blue.opacity(0.1)) + .foregroundColor(.blue) + .cornerRadius(8) } Divider() diff --git a/UI/Sources/UI/Detail/DetailViewController.swift b/UI/Sources/UI/Detail/DetailViewController.swift deleted file mode 100644 index 3382059b..00000000 --- a/UI/Sources/UI/Detail/DetailViewController.swift +++ /dev/null @@ -1,88 +0,0 @@ -// -// DetailViewController.swift -// UI -// -// View controller for Detail screen -// - -import Combine -import SwiftUI -import UIKit - -import FunViewModel - -public final class DetailViewController: UIViewController { - - private let viewModel: DetailViewModel - private var cancellables = Set() - private var favoriteButton: UIBarButtonItem? - - public init(viewModel: DetailViewModel) { - self.viewModel = viewModel - super.init(nibName: nil, bundle: nil) - hidesBottomBarWhenPushed = true - } - - @available(*, unavailable) - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - // Detect interactive pop gesture (swipe back) or back button tap. - // When parent becomes nil, this VC was removed from the navigation stack. - override public func didMove(toParent parent: UIViewController?) { - super.didMove(toParent: parent) - if parent == nil { - viewModel.handleBackNavigation() - } - } - - override public func viewDidLoad() { - super.viewDidLoad() - setupNavigationBar() - observeFavoriteState() - embedSwiftUIView(DetailView(viewModel: viewModel)) - } - - private func setupNavigationBar() { - let shareButton = UIBarButtonItem( - image: UIImage(systemName: "square.and.arrow.up"), - style: .plain, - target: self, - action: #selector(shareTapped) - ) - shareButton.accessibilityIdentifier = AccessibilityID.Detail.shareButton - - favoriteButton = UIBarButtonItem( - image: UIImage(systemName: viewModel.isFavorited ? "star.fill" : "star"), - style: .plain, - target: self, - action: #selector(favoriteTapped) - ) - favoriteButton?.tintColor = viewModel.isFavorited ? .systemYellow : .systemBlue - favoriteButton?.accessibilityIdentifier = AccessibilityID.Detail.favoriteButton - - navigationItem.rightBarButtonItems = [shareButton, favoriteButton].compactMap { $0 } - } - - private func observeFavoriteState() { - viewModel.$isFavorited - .sink { [weak self] isFavorited in - self?.updateFavoriteButton(isFavorited: isFavorited) - } - .store(in: &cancellables) - } - - private func updateFavoriteButton(isFavorited: Bool) { - favoriteButton?.image = UIImage(systemName: isFavorited ? "star.fill" : "star") - favoriteButton?.tintColor = isFavorited ? .systemYellow : .systemBlue - } - - @objc private func shareTapped() { - viewModel.didTapShare() - } - - @objc private func favoriteTapped() { - viewModel.didTapToggleFavorite() - } -} diff --git a/UI/Sources/UI/Extensions/UIViewController+SwiftUI.swift b/UI/Sources/UI/Extensions/UIViewController+SwiftUI.swift deleted file mode 100644 index 38a48188..00000000 --- a/UI/Sources/UI/Extensions/UIViewController+SwiftUI.swift +++ /dev/null @@ -1,27 +0,0 @@ -// -// UIViewController+SwiftUI.swift -// UI -// -// Extension to embed SwiftUI views in UIViewControllers -// - -import SwiftUI -import UIKit - -public extension UIViewController { - /// Embeds a SwiftUI view as a child view controller, filling the entire view - /// - Parameter content: The SwiftUI view to embed - func embedSwiftUIView(_ content: Content) { - let hostingController = UIHostingController(rootView: content) - addChild(hostingController) - view.addSubview(hostingController.view) - hostingController.view.translatesAutoresizingMaskIntoConstraints = false - NSLayoutConstraint.activate([ - hostingController.view.topAnchor.constraint(equalTo: view.topAnchor), - hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - hostingController.view.bottomAnchor.constraint(equalTo: view.bottomAnchor) - ]) - hostingController.didMove(toParent: self) - } -} diff --git a/UI/Sources/UI/Home/HomeView.swift b/UI/Sources/UI/Home/HomeView.swift index 4118cef9..49d4a1ce 100644 --- a/UI/Sources/UI/Home/HomeView.swift +++ b/UI/Sources/UI/Home/HomeView.swift @@ -19,36 +19,48 @@ public struct HomeView: View { } public var body: some View { - Group { - if viewModel.isLoading { - VStack(spacing: 16) { - ProgressView() - .progressViewStyle(.circular) - .scaleEffect(1.5) - Text(L10n.Common.loading) - .foregroundColor(.secondary) - } - .frame(maxWidth: .infinity, maxHeight: .infinity) - } else if viewModel.hasError { - ErrorStateView(onRetry: viewModel.retry) - } else if viewModel.isCarouselEnabled && !viewModel.featuredItems.isEmpty { - ScrollView { - CarouselView( - featuredItems: viewModel.featuredItems, - currentIndex: $viewModel.currentCarouselIndex, - isFavorited: viewModel.isFavorited, - onItemTap: viewModel.didTapFeaturedItem, - onFavoriteTap: { viewModel.toggleFavorite(for: $0) } - ) - .padding(.vertical) - } - .refreshable { - await viewModel.refresh() + content + .navigationTitle(L10n.Tabs.home) + .toolbar { + ToolbarItem(placement: .topBarTrailing) { + Button(action: { viewModel.didTapProfile() }) { + Image(systemName: "person.circle") + } + .accessibilityIdentifier(AccessibilityID.Home.profileButton) + .accessibilityLabel(L10n.Profile.title) } - } else { - // Empty state when carousel is disabled - CarouselDisabledView() } + } + + @ViewBuilder + private var content: some View { + if viewModel.isLoading { + VStack(spacing: 16) { + ProgressView() + .progressViewStyle(.circular) + .scaleEffect(1.5) + Text(L10n.Common.loading) + .foregroundColor(.secondary) + } + .frame(maxWidth: .infinity, maxHeight: .infinity) + } else if viewModel.hasError { + ErrorStateView(onRetry: viewModel.retry) + } else if viewModel.isCarouselEnabled && !viewModel.featuredItems.isEmpty { + ScrollView { + CarouselView( + featuredItems: viewModel.featuredItems, + currentIndex: $viewModel.currentCarouselIndex, + isFavorited: viewModel.isFavorited, + onItemTap: viewModel.didTapFeaturedItem, + onFavoriteTap: { viewModel.toggleFavorite(for: $0) } + ) + .padding(.vertical) + } + .refreshable { + await viewModel.refresh() + } + } else { + CarouselDisabledView() } } } diff --git a/UI/Sources/UI/Home/HomeViewController.swift b/UI/Sources/UI/Home/HomeViewController.swift deleted file mode 100644 index 5bccedea..00000000 --- a/UI/Sources/UI/Home/HomeViewController.swift +++ /dev/null @@ -1,45 +0,0 @@ -// -// HomeViewController.swift -// UI -// -// View controller for Home screen -// - -import SwiftUI -import UIKit - -import FunCore -import FunViewModel - -public final class HomeViewController: UIViewController { - - private let viewModel: HomeViewModel - - public init(viewModel: HomeViewModel) { - self.viewModel = viewModel - super.init(nibName: nil, bundle: nil) - } - - @available(*, unavailable) - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override public func viewDidLoad() { - super.viewDidLoad() - title = L10n.Tabs.home - navigationItem.rightBarButtonItem = UIBarButtonItem( - image: UIImage(systemName: "person.circle"), - style: .plain, - target: self, - action: #selector(profileTapped) - ) - navigationItem.rightBarButtonItem?.accessibilityIdentifier = AccessibilityID.Home.profileButton - navigationItem.rightBarButtonItem?.accessibilityLabel = L10n.Profile.title - embedSwiftUIView(HomeView(viewModel: viewModel)) - } - - @objc private func profileTapped() { - viewModel.didTapProfile() - } -} diff --git a/UI/Sources/UI/HomeTabBarController.swift b/UI/Sources/UI/HomeTabBarController.swift deleted file mode 100644 index d3ddeeb0..00000000 --- a/UI/Sources/UI/HomeTabBarController.swift +++ /dev/null @@ -1,144 +0,0 @@ -// -// HomeTabBarController.swift -// UI -// -// Tab bar controller that displays the main tabs of the app -// Coordinators are injected from outside to avoid circular dependencies -// - -import Combine -import SwiftUI -import UIKit - -import FunCore -import FunModel -import FunViewModel - -public class HomeTabBarController: UITabBarController { - - // MARK: - ViewModel - - private let viewModel: HomeTabBarViewModel - - // MARK: - Services - - @Service(.toast) private var toastService: ToastServiceProtocol - - // MARK: - Combine - - private var cancellables = Set() - - // MARK: - Toast UI - - private var toastHostingController: UIHostingController? - private var activeToastId = UUID() - - // MARK: - Tasks - - private var tabObservationTask: Task? - - // MARK: - Initialization - - public init(viewModel: HomeTabBarViewModel, tabNavigationControllers: [UINavigationController]) { - self.viewModel = viewModel - super.init(nibName: nil, bundle: nil) - delegate = self - viewControllers = tabNavigationControllers - } - - @available(*, unavailable) - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - deinit { - tabObservationTask?.cancel() - } - - // MARK: - Lifecycle - - override public func viewDidLoad() { - super.viewDidLoad() - - // Sync initial tab selection - viewModel.selectedTabIndex = selectedIndex - - // Observe view model for programmatic tab changes using AsyncSequence. - // Combine alternative: viewModel.$selectedTabIndex.sink { ... }.store(in: &cancellables) - // AsyncSequence is used here to demonstrate both observation patterns in the codebase. - // Note: guard let self must be inside the loop body, not outside, - // to avoid a retain cycle across suspension points. - tabObservationTask = Task { @MainActor [weak self] in - guard let viewModel = self?.viewModel else { return } - for await index in viewModel.$selectedTabIndex.values { - guard let self else { break } - guard self.selectedIndex != index else { continue } - self.selectedIndex = index - } - } - - observeToastEvents() - } - - // MARK: - Toast Observation - - private func observeToastEvents() { - toastService.toastPublisher - .sink { [weak self] event in - self?.showToast(message: event.message, type: event.type) - } - .store(in: &cancellables) - } - - private func showToast(message: String, type: ToastType) { - // Remove existing toast if any - dismissToast() - - let toastId = UUID() - activeToastId = toastId - - let toastView = ToastView(message: message, type: type) { [weak self] in - // Only dismiss if this toast is still the active one - guard self?.activeToastId == toastId else { return } - self?.dismissToast() - } - - let hostingController = UIHostingController(rootView: toastView) - hostingController.view.backgroundColor = .clear - hostingController.view.translatesAutoresizingMaskIntoConstraints = false - - // Proper child view controller management - addChild(hostingController) - view.addSubview(hostingController.view) - hostingController.didMove(toParent: self) - - NSLayoutConstraint.activate([ - hostingController.view.topAnchor.constraint(equalTo: view.safeAreaLayoutGuide.topAnchor), - hostingController.view.leadingAnchor.constraint(equalTo: view.leadingAnchor), - hostingController.view.trailingAnchor.constraint(equalTo: view.trailingAnchor), - hostingController.view.heightAnchor.constraint(equalToConstant: 100) - ]) - - toastHostingController = hostingController - } - - private func dismissToast() { - guard let hostingController = toastHostingController else { return } - hostingController.willMove(toParent: nil) - hostingController.view.removeFromSuperview() - hostingController.removeFromParent() - toastHostingController = nil - } - -} - -// MARK: - UITabBarControllerDelegate - -extension HomeTabBarController: UITabBarControllerDelegate { - public func tabBarController( - _ tabBarController: UITabBarController, - didSelect viewController: UIViewController - ) { - viewModel.tabDidChange(to: selectedIndex) - } -} diff --git a/UI/Sources/UI/Items/ItemsView.swift b/UI/Sources/UI/Items/ItemsView.swift index 0a8a1d29..15a7d57d 100644 --- a/UI/Sources/UI/Items/ItemsView.swift +++ b/UI/Sources/UI/Items/ItemsView.swift @@ -20,6 +20,7 @@ public struct ItemsView: View { public var body: some View { ItemsMainContent(viewModel: viewModel) + .navigationTitle(L10n.Tabs.items) } } diff --git a/UI/Sources/UI/Items/ItemsViewController.swift b/UI/Sources/UI/Items/ItemsViewController.swift deleted file mode 100644 index 65448417..00000000 --- a/UI/Sources/UI/Items/ItemsViewController.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// ItemsViewController.swift -// UI -// -// View controller for Items screen -// - -import SwiftUI -import UIKit - -import FunCore -import FunViewModel - -public final class ItemsViewController: UIViewController { - - private let viewModel: ItemsViewModel - - public init(viewModel: ItemsViewModel) { - self.viewModel = viewModel - super.init(nibName: nil, bundle: nil) - } - - @available(*, unavailable) - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override public func viewDidLoad() { - super.viewDidLoad() - title = L10n.Tabs.items - embedSwiftUIView(ItemsView(viewModel: viewModel)) - } -} diff --git a/UI/Sources/UI/Login/LoginViewController.swift b/UI/Sources/UI/Login/LoginViewController.swift deleted file mode 100644 index 2d1ccec6..00000000 --- a/UI/Sources/UI/Login/LoginViewController.swift +++ /dev/null @@ -1,32 +0,0 @@ -// -// LoginViewController.swift -// UI -// -// View controller for Login screen -// - -import SwiftUI -import UIKit - -import FunCore -import FunViewModel - -public final class LoginViewController: UIViewController { - - private let viewModel: LoginViewModel - - public init(viewModel: LoginViewModel) { - self.viewModel = viewModel - super.init(nibName: nil, bundle: nil) - } - - @available(*, unavailable) - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override public func viewDidLoad() { - super.viewDidLoad() - embedSwiftUIView(LoginView(viewModel: viewModel)) - } -} diff --git a/UI/Sources/UI/Profile/ProfileView.swift b/UI/Sources/UI/Profile/ProfileView.swift index 7cc96d0e..0e126bab 100644 --- a/UI/Sources/UI/Profile/ProfileView.swift +++ b/UI/Sources/UI/Profile/ProfileView.swift @@ -22,6 +22,19 @@ public struct ProfileView: View { } public var body: some View { + profileContent + .navigationTitle(L10n.Profile.title) + .toolbar { + ToolbarItem(placement: .topBarTrailing) { + Button(action: { viewModel.didTapDismiss() }) { + Text("Done") + } + .accessibilityIdentifier(AccessibilityID.Profile.dismissButton) + } + } + } + + private var profileContent: some View { ScrollView { VStack(spacing: 24) { Circle() diff --git a/UI/Sources/UI/Profile/ProfileViewController.swift b/UI/Sources/UI/Profile/ProfileViewController.swift deleted file mode 100644 index 7882c7ea..00000000 --- a/UI/Sources/UI/Profile/ProfileViewController.swift +++ /dev/null @@ -1,55 +0,0 @@ -// -// ProfileViewController.swift -// UI -// -// View controller for Profile screen (modal) -// - -import SwiftUI -import UIKit - -import FunCore -import FunViewModel - -public final class ProfileViewController: UIViewController { - - private let viewModel: ProfileViewModel - - public init(viewModel: ProfileViewModel) { - self.viewModel = viewModel - super.init(nibName: nil, bundle: nil) - } - - @available(*, unavailable) - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override public func viewDidLoad() { - super.viewDidLoad() - title = L10n.Profile.title - navigationItem.rightBarButtonItem = UIBarButtonItem( - barButtonSystemItem: .done, - target: self, - action: #selector(dismissTapped) - ) - navigationItem.rightBarButtonItem?.accessibilityIdentifier = AccessibilityID.Profile.dismissButton - embedSwiftUIView(ProfileView(viewModel: viewModel)) - - // Detect interactive dismiss (swipe-down gesture on the modal sheet) - navigationController?.presentationController?.delegate = self - } - - @objc private func dismissTapped() { - viewModel.didTapDismiss() - } -} - -// MARK: - UIAdaptivePresentationControllerDelegate - -extension ProfileViewController: UIAdaptivePresentationControllerDelegate { - - public func presentationControllerDidDismiss(_ presentationController: UIPresentationController) { - viewModel.didTapDismiss() - } -} diff --git a/UI/Sources/UI/Settings/SettingsView.swift b/UI/Sources/UI/Settings/SettingsView.swift index 58d19f48..1d0c18cc 100644 --- a/UI/Sources/UI/Settings/SettingsView.swift +++ b/UI/Sources/UI/Settings/SettingsView.swift @@ -19,6 +19,11 @@ public struct SettingsView: View { } public var body: some View { + settingsContent + .navigationTitle(L10n.Tabs.settings) + } + + private var settingsContent: some View { Form { Section(header: Text(L10n.Settings.appearance)) { Picker(L10n.Settings.appearance, selection: $viewModel.appearanceMode) { diff --git a/UI/Sources/UI/Settings/SettingsViewController.swift b/UI/Sources/UI/Settings/SettingsViewController.swift deleted file mode 100644 index 3d1bd5d0..00000000 --- a/UI/Sources/UI/Settings/SettingsViewController.swift +++ /dev/null @@ -1,33 +0,0 @@ -// -// SettingsViewController.swift -// UI -// -// View controller for Settings screen -// - -import SwiftUI -import UIKit - -import FunCore -import FunViewModel - -public final class SettingsViewController: UIViewController { - - private let viewModel: SettingsViewModel - - public init(viewModel: SettingsViewModel) { - self.viewModel = viewModel - super.init(nibName: nil, bundle: nil) - } - - @available(*, unavailable) - required init?(coder: NSCoder) { - fatalError("init(coder:) has not been implemented") - } - - override public func viewDidLoad() { - super.viewDidLoad() - title = L10n.Tabs.settings - embedSwiftUIView(SettingsView(viewModel: viewModel)) - } -} diff --git a/ViewModel/Package.swift b/ViewModel/Package.swift index b4b4f2d4..bae15600 100644 --- a/ViewModel/Package.swift +++ b/ViewModel/Package.swift @@ -4,8 +4,8 @@ import PackageDescription let package = Package( name: "ViewModel", platforms: [ - .iOS(.v15), - .macCatalyst(.v15), + .iOS(.v16), + .macCatalyst(.v16), ], products: [ .library(name: "FunViewModel", targets: ["FunViewModel"]), diff --git a/ViewModel/Sources/ViewModel/Detail/DetailViewModel.swift b/ViewModel/Sources/ViewModel/Detail/DetailViewModel.swift index f26e4afd..b417032a 100644 --- a/ViewModel/Sources/ViewModel/Detail/DetailViewModel.swift +++ b/ViewModel/Sources/ViewModel/Detail/DetailViewModel.swift @@ -14,11 +14,6 @@ import FunModel @MainActor public class DetailViewModel: ObservableObject { - // MARK: - Navigation Closures - - public var onPop: (() -> Void)? - public var onShare: ((String) -> Void)? - // MARK: - Services @Service(.logger) private var logger: LoggerService @@ -40,6 +35,11 @@ public class DetailViewModel: ObservableObject { featureToggleService.aiSummary && aiService.isAvailable } + /// Text to share via share sheet + public var shareText: String { + L10n.Detail.shareText(itemTitle) + } + // MARK: - Private Properties private var cancellables = Set() @@ -69,16 +69,6 @@ public class DetailViewModel: ObservableObject { // MARK: - Actions - /// Called when the view controller is removed from the navigation stack by the system (back button) - public func handleBackNavigation() { - onPop?() - } - - public func didTapShare() { - let shareText = L10n.Detail.shareText(itemTitle) - onShare?(shareText) - } - public func didTapToggleFavorite() { favoritesService.toggleFavorite(itemId) logger.log("Favorite toggled for \(itemTitle)") diff --git a/ViewModel/Sources/ViewModel/Home/HomeViewModel.swift b/ViewModel/Sources/ViewModel/Home/HomeViewModel.swift index 1c22cc49..2d2ddaa9 100644 --- a/ViewModel/Sources/ViewModel/Home/HomeViewModel.swift +++ b/ViewModel/Sources/ViewModel/Home/HomeViewModel.swift @@ -11,36 +11,6 @@ import Foundation import FunCore import FunModel -// MARK: - Swift Concurrency Alternative -// -// iOS 17+: Replace ObservableObject + @Published with @Observable macro. -// @Observable tracks per-property (not per-object), so SwiftUI only re-renders -// views that read the specific property that changed. -// -// @MainActor -// @Observable public class HomeViewModel { -// var featuredItems: [[FeaturedItem]] = [] // no @Published needed -// var isLoading: Bool = false -// -// @ObservationIgnored @Service(.network) private var networkService: NetworkServiceProtocol -// @ObservationIgnored private var loadTask: Task? -// // @ObservationIgnored excludes non-UI state from observation tracking -// } -// -// View side: @ObservedObject → @Bindable (two-way) or plain var (read-only) -// @StateObject → @State -// -// Subscription side: .sink { }.store(in: &cancellables) → Task { for await ... } -// let stream = favoritesService.favoritesChanges -// favoritesObservation = Task { [weak self] in -// for await newFavorites in stream { -// guard let self else { break } -// self.favoriteIds = newFavorites -// } -// } -// -// See feature/observation for the full implementation. - @MainActor public class HomeViewModel: ObservableObject { @@ -75,7 +45,13 @@ public class HomeViewModel: ObservableObject { // MARK: - Initialization - public init() { + public init( + onShowDetail: ((FeaturedItem) -> Void)? = nil, + onShowProfile: (() -> Void)? = nil + ) { + self.onShowDetail = onShowDetail + self.onShowProfile = onShowProfile + observeFeatureToggleChanges() observeFavoritesChanges() diff --git a/ViewModel/Sources/ViewModel/HomeTabBar/HomeTabBarViewModel.swift b/ViewModel/Sources/ViewModel/HomeTabBar/HomeTabBarViewModel.swift deleted file mode 100644 index 416cb599..00000000 --- a/ViewModel/Sources/ViewModel/HomeTabBar/HomeTabBarViewModel.swift +++ /dev/null @@ -1,53 +0,0 @@ -// -// HomeTabBarViewModel.swift -// ViewModel -// -// ViewModel for tab bar tab switching -// - -import Combine -import Foundation - -import FunCore -import FunModel - -@MainActor -public class HomeTabBarViewModel: ObservableObject { - - // MARK: - Services - - @Service(.logger) private var logger: LoggerService - - // MARK: - Published State - - /// Currently selected tab index - @Published public var selectedTabIndex: Int = 0 - - // MARK: - Initialization - - public init() { - logger.log("HomeTabBarViewModel initialized") - } - - // MARK: - Tab Management - - /// Called when tab selection changes - public func tabDidChange(to index: Int) { - guard (0.. Void)? = nil) { + self.onShowDetail = onShowDetail observeFavoritesChanges() setupSearchBinding() @@ -97,30 +98,6 @@ public class ItemsViewModel: ObservableObject { } } .store(in: &cancellables) - - // MARK: - Swift Concurrency Alternative (iOS 15+) - // - // With @Observable (iOS 17+), use didSet + Task.sleep for debounce: - // - // public var searchText: String = "" { - // didSet { handleSearchTextChanged() } - // } - // - // private func handleSearchTextChanged() { - // debounceTask?.cancel() - // debounceTask = Task { [weak self] in - // try? await Task.sleep(for: .milliseconds(600)) - // guard !Task.isCancelled, let self else { return } - // self.processSearchText() - // } - // } - // - // Key differences from Combine .debounce(): - // - No .dropFirst() needed — didSet doesn't fire during init - // - No .removeDuplicates() needed — didSet only fires on actual assignment - // - Task.cancel() handles debounce reset automatically - // - // See feature/observation for the full implementation. } private func observeFavoritesChanges() { diff --git a/ViewModel/Sources/ViewModel/Login/LoginViewModel.swift b/ViewModel/Sources/ViewModel/Login/LoginViewModel.swift index 4fa5957a..257cc898 100644 --- a/ViewModel/Sources/ViewModel/Login/LoginViewModel.swift +++ b/ViewModel/Sources/ViewModel/Login/LoginViewModel.swift @@ -16,7 +16,7 @@ public class LoginViewModel: ObservableObject { // MARK: - Navigation Closures - public var onLogin: (() -> Void)? + public var onLoginSuccess: (() -> Void)? // MARK: - Services @@ -34,7 +34,9 @@ public class LoginViewModel: ObservableObject { // MARK: - Initialization - public init() {} + public init(onLoginSuccess: (() -> Void)? = nil) { + self.onLoginSuccess = onLoginSuccess + } deinit { loginTask?.cancel() @@ -54,7 +56,7 @@ public class LoginViewModel: ObservableObject { defer { self.isLoggingIn = false } do { try await self.networkService.login() - self.onLogin?() + self.onLoginSuccess?() } catch { self.logger.log("Login failed: \(error)", level: .error, category: .general) self.toastService.showToast(message: L10n.Error.networkError, type: .error) diff --git a/ViewModel/Sources/ViewModel/Profile/ProfileViewModel.swift b/ViewModel/Sources/ViewModel/Profile/ProfileViewModel.swift index e1cb5b3a..6e89b4c4 100644 --- a/ViewModel/Sources/ViewModel/Profile/ProfileViewModel.swift +++ b/ViewModel/Sources/ViewModel/Profile/ProfileViewModel.swift @@ -34,7 +34,15 @@ public class ProfileViewModel: ObservableObject { // MARK: - Initialization - public init(profile: UserProfile = .demo) { + public init( + onDismiss: (() -> Void)? = nil, + onLogout: (() -> Void)? = nil, + onGoToItems: (() -> Void)? = nil, + profile: UserProfile = .demo + ) { + self.onDismiss = onDismiss + self.onLogout = onLogout + self.onGoToItems = onGoToItems self.userName = profile.name self.userEmail = profile.email self.userBio = profile.bio diff --git a/ViewModel/Tests/ViewModelTests/DetailViewModelTests.swift b/ViewModel/Tests/ViewModelTests/DetailViewModelTests.swift index a3eddc6c..4c62d86e 100644 --- a/ViewModel/Tests/ViewModelTests/DetailViewModelTests.swift +++ b/ViewModel/Tests/ViewModelTests/DetailViewModelTests.swift @@ -123,44 +123,14 @@ struct DetailViewModelTests { #expect(viewModel.isFavorited == true) } - // MARK: - Share Tests + // MARK: - Share Text Tests - @Test("didTapShare calls onShare with item title") - func testDidTapShareCallsOnShare() async { + @Test("shareText contains item title") + func testShareTextContainsItemTitle() async { setupServices() let viewModel = DetailViewModel(item: testItem) - var shareCalled = false - var shareText: String? - viewModel.onShare = { text in shareCalled = true; shareText = text } - - viewModel.didTapShare() - - #expect(shareCalled == true) - #expect(shareText?.contains(testItem.title) == true) - } - - // MARK: - Back Navigation Tests - - @Test("handleBackNavigation calls onPop") - func testHandleBackNavigationCallsOnPop() async { - setupServices() - let viewModel = DetailViewModel(item: testItem) - - var popCalled = false - viewModel.onPop = { popCalled = true } - - viewModel.handleBackNavigation() - - #expect(popCalled == true) - } - - @Test("handleBackNavigation with nil closure does not crash") - func testHandleBackNavigationWithNilClosure() async { - setupServices() - let viewModel = DetailViewModel(item: testItem) - - viewModel.handleBackNavigation() // Should not crash + #expect(viewModel.shareText.contains(testItem.title)) } // MARK: - Different Items Tests diff --git a/ViewModel/Tests/ViewModelTests/HomeTabBarViewModelTests.swift b/ViewModel/Tests/ViewModelTests/HomeTabBarViewModelTests.swift deleted file mode 100644 index ee14cdef..00000000 --- a/ViewModel/Tests/ViewModelTests/HomeTabBarViewModelTests.swift +++ /dev/null @@ -1,114 +0,0 @@ -// -// HomeTabBarViewModelTests.swift -// ViewModel -// -// Unit tests for HomeTabBarViewModel -// - -import Testing -import Foundation -@testable import FunViewModel -@testable import FunModel -@testable import FunCore -import FunModelTestSupport - -extension ViewModelTestSuite { - -@Suite("HomeTabBarViewModel Tests") -@MainActor -struct HomeTabBarViewModelTests { - - // MARK: - Setup - - init() { - ServiceLocator.shared.reset() - ServiceLocator.shared.register(MockLoggerService(), for: .logger) - ServiceLocator.shared.register(MockNetworkService(), for: .network) - ServiceLocator.shared.register(MockFavoritesService(), for: .favorites) - ServiceLocator.shared.register(MockFeatureToggleService(), for: .featureToggles) - ServiceLocator.shared.register(MockToastService(), for: .toast) - } - - // MARK: - Initialization Tests - - @Test("Initial selectedTabIndex is 0") - func testInitialTabIndex() async { - let viewModel = HomeTabBarViewModel() - - #expect(viewModel.selectedTabIndex == 0) - } - - // MARK: - Tab Change Tests - - @Test("tabDidChange updates selectedTabIndex") - func testTabDidChangeUpdatesIndex() async { - let viewModel = HomeTabBarViewModel() - - viewModel.tabDidChange(to: 1) - #expect(viewModel.selectedTabIndex == 1) - - viewModel.tabDidChange(to: 2) - #expect(viewModel.selectedTabIndex == 2) - - viewModel.tabDidChange(to: 0) - #expect(viewModel.selectedTabIndex == 0) - } - - @Test("switchToTab updates selectedTabIndex") - func testSwitchToTabUpdatesIndex() async { - let viewModel = HomeTabBarViewModel() - - viewModel.switchToTab(1) - #expect(viewModel.selectedTabIndex == 1) - - viewModel.switchToTab(2) - #expect(viewModel.selectedTabIndex == 2) - } - - @Test("switchToTab and tabDidChange produce same result") - func testSwitchAndDidChangeEquivalent() async { - let vm1 = HomeTabBarViewModel() - let vm2 = HomeTabBarViewModel() - - vm1.switchToTab(2) - vm2.tabDidChange(to: 2) - - #expect(vm1.selectedTabIndex == vm2.selectedTabIndex) - } - - // MARK: - Bounds Checking Tests - - @Test("switchToTab ignores negative index") - func testSwitchToTabIgnoresNegativeIndex() async { - let viewModel = HomeTabBarViewModel() - - viewModel.switchToTab(1) - #expect(viewModel.selectedTabIndex == 1) - - viewModel.switchToTab(-1) - #expect(viewModel.selectedTabIndex == 1) // Unchanged - } - - @Test("switchToTab ignores out-of-bounds index") - func testSwitchToTabIgnoresOutOfBoundsIndex() async { - let viewModel = HomeTabBarViewModel() - - viewModel.switchToTab(1) - #expect(viewModel.selectedTabIndex == 1) - - viewModel.switchToTab(99) - #expect(viewModel.selectedTabIndex == 1) // Unchanged - } - - @Test("switchToTab accepts all valid tab indices") - func testSwitchToTabAcceptsAllValidIndices() async { - let viewModel = HomeTabBarViewModel() - - for tabIndex in TabIndex.allCases { - viewModel.switchToTab(tabIndex.rawValue) - #expect(viewModel.selectedTabIndex == tabIndex.rawValue) - } - } - -} -} diff --git a/ViewModel/Tests/ViewModelTests/HomeViewModelTests.swift b/ViewModel/Tests/ViewModelTests/HomeViewModelTests.swift index 022be03f..ef6d7c93 100644 --- a/ViewModel/Tests/ViewModelTests/HomeViewModelTests.swift +++ b/ViewModel/Tests/ViewModelTests/HomeViewModelTests.swift @@ -10,7 +10,7 @@ import Foundation @testable import FunViewModel @testable import FunModel @testable import FunCore -import FunModelTestSupport +@testable import FunModelTestSupport // MARK: - Test Scenarios @@ -121,14 +121,13 @@ struct HomeViewModelTests { // MARK: - Coordinator Tests - @Test("didTapFeaturedItem calls onShowDetail") - func testDidTapFeaturedItemCallsOnShowDetail() async throws { + @Test("didTapFeaturedItem calls onShowDetail closure") + func testDidTapFeaturedItemCallsClosure() async throws { setupServices() - let viewModel = HomeViewModel() - - var showDetailCalled = false var showDetailItem: FeaturedItem? - viewModel.onShowDetail = { item in showDetailCalled = true; showDetailItem = item } + let viewModel = HomeViewModel( + onShowDetail: { item in showDetailItem = item } + ) await viewModel.loadFeaturedItems() @@ -137,17 +136,16 @@ struct HomeViewModelTests { viewModel.didTapFeaturedItem(item) - #expect(showDetailCalled == true) #expect(showDetailItem?.id == item.id) } - @Test("didTapProfile calls onShowProfile") - func testDidTapProfileCallsOnShowProfile() async { + @Test("didTapProfile calls onShowProfile closure") + func testDidTapProfileCallsClosure() async { setupServices() - let viewModel = HomeViewModel() - var showProfileCalled = false - viewModel.onShowProfile = { showProfileCalled = true } + let viewModel = HomeViewModel( + onShowProfile: { showProfileCalled = true } + ) viewModel.didTapProfile() diff --git a/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift b/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift index 11c529a1..a6bfe97f 100644 --- a/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift +++ b/ViewModel/Tests/ViewModelTests/ItemsViewModelTests.swift @@ -211,22 +211,19 @@ struct ItemsViewModelTests { // MARK: - Coordinator Tests - @Test("didSelectItem calls onShowDetail") - func testDidSelectItemCallsOnShowDetail() async throws { + @Test("didSelectItem calls onShowDetail closure") + func testDidSelectItemCallsClosure() async throws { setupServices() - let viewModel = ItemsViewModel() - - var showDetailCalled = false var showDetailItem: FeaturedItem? - viewModel.onShowDetail = { item in showDetailCalled = true; showDetailItem = item } - + let viewModel = ItemsViewModel( + onShowDetail: { item in showDetailItem = item } + ) await viewModel.loadItems() let item = try #require(viewModel.items.first) viewModel.didSelectItem(item) - #expect(showDetailCalled == true) #expect(showDetailItem?.id == item.id) } diff --git a/ViewModel/Tests/ViewModelTests/LoginViewModelTests.swift b/ViewModel/Tests/ViewModelTests/LoginViewModelTests.swift index 5c9f9c5d..27bd0808 100644 --- a/ViewModel/Tests/ViewModelTests/LoginViewModelTests.swift +++ b/ViewModel/Tests/ViewModelTests/LoginViewModelTests.swift @@ -49,28 +49,24 @@ struct LoginViewModelTests { #expect(viewModel.isLoggingIn == true) } - @Test("Login calls onLogin after network request") - func testLoginCallsOnLogin() async { - let viewModel = LoginViewModel() - - var loginCalled = false - viewModel.onLogin = { loginCalled = true } + @Test("Login calls onLoginSuccess after network request") + func testLoginCallsOnLoginSuccess() async { + var loginSuccessCalled = false + let viewModel = LoginViewModel(onLoginSuccess: { loginSuccessCalled = true }) viewModel.login() // Mock network service returns instantly, so yield to let the Task complete await Task.yield() - #expect(loginCalled == true) + #expect(loginSuccessCalled == true) #expect(viewModel.isLoggingIn == false) } @Test("Login prevents multiple simultaneous logins") func testLoginPreventsMultipleLogins() async { - let viewModel = LoginViewModel() - - var loginCallCount = 0 - viewModel.onLogin = { loginCallCount += 1 } + var loginSuccessCount = 0 + let viewModel = LoginViewModel(onLoginSuccess: { loginSuccessCount += 1 }) viewModel.login() #expect(viewModel.isLoggingIn == true) @@ -82,11 +78,11 @@ struct LoginViewModelTests { // Yield to let the Task complete await Task.yield() - #expect(loginCallCount == 1) + #expect(loginSuccessCount == 1) } - @Test("Login with nil coordinator completes without crash") - func testLoginWithNilCoordinatorDoesNotCrash() async { + @Test("Login with no onLoginSuccess closure completes without crash") + func testLoginWithNoClosureDoesNotCrash() async { let viewModel = LoginViewModel() viewModel.login() diff --git a/ViewModel/Tests/ViewModelTests/ProfileViewModelTests.swift b/ViewModel/Tests/ViewModelTests/ProfileViewModelTests.swift index cdac4462..ace0d6df 100644 --- a/ViewModel/Tests/ViewModelTests/ProfileViewModelTests.swift +++ b/ViewModel/Tests/ViewModelTests/ProfileViewModelTests.swift @@ -10,7 +10,7 @@ import Foundation @testable import FunViewModel @testable import FunModel @testable import FunCore -import FunModelTestSupport +@testable import FunModelTestSupport extension ViewModelTestSuite { @@ -55,12 +55,10 @@ struct ProfileViewModelTests { // MARK: - Dismiss Tests - @Test("Dismiss calls onDismiss") - func testDismissCallsOnDismiss() async { - let viewModel = ProfileViewModel() - + @Test("Dismiss calls onDismiss closure") + func testDismissCallsClosure() async { var dismissCalled = false - viewModel.onDismiss = { dismissCalled = true } + let viewModel = ProfileViewModel(onDismiss: { dismissCalled = true }) viewModel.didTapDismiss() @@ -69,12 +67,10 @@ struct ProfileViewModelTests { // MARK: - Logout Tests - @Test("Logout calls onLogout") - func testLogoutCallsOnLogout() async { - let viewModel = ProfileViewModel() - + @Test("Logout calls onLogout closure") + func testLogoutCallsClosure() async { var logoutCalled = false - viewModel.onLogout = { logoutCalled = true } + let viewModel = ProfileViewModel(onLogout: { logoutCalled = true }) viewModel.logout() @@ -83,12 +79,10 @@ struct ProfileViewModelTests { // MARK: - Go to Items Tests - @Test("didTapGoToItems calls onGoToItems") - func testDidTapGoToItemsCallsOnGoToItems() async { - let viewModel = ProfileViewModel() - + @Test("didTapGoToItems calls onGoToItems closure") + func testDidTapGoToItemsCallsClosure() async { var goToItemsCalled = false - viewModel.onGoToItems = { goToItemsCalled = true } + let viewModel = ProfileViewModel(onGoToItems: { goToItemsCalled = true }) viewModel.didTapGoToItems() From 51f13e442f4c3416a58e4192509fa533482af9d1 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Wed, 25 Feb 2026 13:24:44 +1100 Subject: [PATCH 02/29] Fix navigation bar title display to match UIKit version Co-Authored-By: Claude Opus 4.6 --- UI/Sources/UI/Detail/DetailView.swift | 6 +++++- UI/Sources/UI/Home/HomeView.swift | 1 + UI/Sources/UI/Items/ItemsView.swift | 1 + UI/Sources/UI/Profile/ProfileView.swift | 7 +++---- UI/Sources/UI/Settings/SettingsView.swift | 1 + 5 files changed, 11 insertions(+), 5 deletions(-) diff --git a/UI/Sources/UI/Detail/DetailView.swift b/UI/Sources/UI/Detail/DetailView.swift index 9ee484e4..fd91f1d7 100644 --- a/UI/Sources/UI/Detail/DetailView.swift +++ b/UI/Sources/UI/Detail/DetailView.swift @@ -19,7 +19,6 @@ public struct DetailView: View { public var body: some View { detailContent - .navigationTitle(viewModel.itemTitle) .toolbar(.hidden, for: .tabBar) .toolbar { ToolbarItem(placement: .topBarTrailing) { @@ -39,6 +38,11 @@ public struct DetailView: View { private var detailContent: some View { ScrollView { VStack(alignment: .leading, spacing: 20) { + // Title + Text(viewModel.itemTitle) + .font(.largeTitle) + .fontWeight(.bold) + // Category badge HStack { Text(viewModel.category) diff --git a/UI/Sources/UI/Home/HomeView.swift b/UI/Sources/UI/Home/HomeView.swift index 49d4a1ce..cc62ec6c 100644 --- a/UI/Sources/UI/Home/HomeView.swift +++ b/UI/Sources/UI/Home/HomeView.swift @@ -21,6 +21,7 @@ public struct HomeView: View { public var body: some View { content .navigationTitle(L10n.Tabs.home) + .navigationBarTitleDisplayMode(.large) .toolbar { ToolbarItem(placement: .topBarTrailing) { Button(action: { viewModel.didTapProfile() }) { diff --git a/UI/Sources/UI/Items/ItemsView.swift b/UI/Sources/UI/Items/ItemsView.swift index 15a7d57d..86be00bd 100644 --- a/UI/Sources/UI/Items/ItemsView.swift +++ b/UI/Sources/UI/Items/ItemsView.swift @@ -21,6 +21,7 @@ public struct ItemsView: View { public var body: some View { ItemsMainContent(viewModel: viewModel) .navigationTitle(L10n.Tabs.items) + .navigationBarTitleDisplayMode(.large) } } diff --git a/UI/Sources/UI/Profile/ProfileView.swift b/UI/Sources/UI/Profile/ProfileView.swift index 0e126bab..33e21f95 100644 --- a/UI/Sources/UI/Profile/ProfileView.swift +++ b/UI/Sources/UI/Profile/ProfileView.swift @@ -24,12 +24,11 @@ public struct ProfileView: View { public var body: some View { profileContent .navigationTitle(L10n.Profile.title) + .navigationBarTitleDisplayMode(.large) .toolbar { ToolbarItem(placement: .topBarTrailing) { - Button(action: { viewModel.didTapDismiss() }) { - Text("Done") - } - .accessibilityIdentifier(AccessibilityID.Profile.dismissButton) + Button("Done") { viewModel.didTapDismiss() } + .accessibilityIdentifier(AccessibilityID.Profile.dismissButton) } } } diff --git a/UI/Sources/UI/Settings/SettingsView.swift b/UI/Sources/UI/Settings/SettingsView.swift index 1d0c18cc..e3bc4c93 100644 --- a/UI/Sources/UI/Settings/SettingsView.swift +++ b/UI/Sources/UI/Settings/SettingsView.swift @@ -21,6 +21,7 @@ public struct SettingsView: View { public var body: some View { settingsContent .navigationTitle(L10n.Tabs.settings) + .navigationBarTitleDisplayMode(.large) } private var settingsContent: some View { From d65d177eee3800c7248d479a0091cf66fc8af3b9 Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Wed, 25 Feb 2026 13:33:38 +1100 Subject: [PATCH 03/29] Match UIKit nav bar styles: inline titles, fix detail toolbar order Co-Authored-By: Claude Opus 4.6 --- UI/Sources/UI/Detail/DetailView.swift | 10 ++++++---- UI/Sources/UI/Home/HomeView.swift | 2 +- UI/Sources/UI/Items/ItemsView.swift | 2 +- UI/Sources/UI/Profile/ProfileView.swift | 2 +- UI/Sources/UI/Settings/SettingsView.swift | 2 +- 5 files changed, 10 insertions(+), 8 deletions(-) diff --git a/UI/Sources/UI/Detail/DetailView.swift b/UI/Sources/UI/Detail/DetailView.swift index fd91f1d7..8ed2dcf9 100644 --- a/UI/Sources/UI/Detail/DetailView.swift +++ b/UI/Sources/UI/Detail/DetailView.swift @@ -19,12 +19,10 @@ public struct DetailView: View { public var body: some View { detailContent + .navigationTitle(viewModel.itemTitle) + .navigationBarTitleDisplayMode(.inline) .toolbar(.hidden, for: .tabBar) .toolbar { - ToolbarItem(placement: .topBarTrailing) { - ShareLink(item: viewModel.shareText) - .accessibilityIdentifier(AccessibilityID.Detail.shareButton) - } ToolbarItem(placement: .topBarTrailing) { Button(action: { viewModel.didTapToggleFavorite() }) { Image(systemName: viewModel.isFavorited ? "star.fill" : "star") @@ -32,6 +30,10 @@ public struct DetailView: View { } .accessibilityIdentifier(AccessibilityID.Detail.favoriteButton) } + ToolbarItem(placement: .topBarTrailing) { + ShareLink(item: viewModel.shareText) + .accessibilityIdentifier(AccessibilityID.Detail.shareButton) + } } } diff --git a/UI/Sources/UI/Home/HomeView.swift b/UI/Sources/UI/Home/HomeView.swift index cc62ec6c..3cd80da2 100644 --- a/UI/Sources/UI/Home/HomeView.swift +++ b/UI/Sources/UI/Home/HomeView.swift @@ -21,7 +21,7 @@ public struct HomeView: View { public var body: some View { content .navigationTitle(L10n.Tabs.home) - .navigationBarTitleDisplayMode(.large) + .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .topBarTrailing) { Button(action: { viewModel.didTapProfile() }) { diff --git a/UI/Sources/UI/Items/ItemsView.swift b/UI/Sources/UI/Items/ItemsView.swift index 86be00bd..b5137e8b 100644 --- a/UI/Sources/UI/Items/ItemsView.swift +++ b/UI/Sources/UI/Items/ItemsView.swift @@ -21,7 +21,7 @@ public struct ItemsView: View { public var body: some View { ItemsMainContent(viewModel: viewModel) .navigationTitle(L10n.Tabs.items) - .navigationBarTitleDisplayMode(.large) + .navigationBarTitleDisplayMode(.inline) } } diff --git a/UI/Sources/UI/Profile/ProfileView.swift b/UI/Sources/UI/Profile/ProfileView.swift index 33e21f95..882c7150 100644 --- a/UI/Sources/UI/Profile/ProfileView.swift +++ b/UI/Sources/UI/Profile/ProfileView.swift @@ -24,7 +24,7 @@ public struct ProfileView: View { public var body: some View { profileContent .navigationTitle(L10n.Profile.title) - .navigationBarTitleDisplayMode(.large) + .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .topBarTrailing) { Button("Done") { viewModel.didTapDismiss() } diff --git a/UI/Sources/UI/Settings/SettingsView.swift b/UI/Sources/UI/Settings/SettingsView.swift index e3bc4c93..dc2290f7 100644 --- a/UI/Sources/UI/Settings/SettingsView.swift +++ b/UI/Sources/UI/Settings/SettingsView.swift @@ -21,7 +21,7 @@ public struct SettingsView: View { public var body: some View { settingsContent .navigationTitle(L10n.Tabs.settings) - .navigationBarTitleDisplayMode(.large) + .navigationBarTitleDisplayMode(.inline) } private var settingsContent: some View { From fcf78c9a710743b34fb989b2290eca9dd6238e8f Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Wed, 25 Feb 2026 14:05:15 +1100 Subject: [PATCH 04/29] Match Profile dismiss button style to UIKit version Co-Authored-By: Claude Opus 4.6 --- UI/Sources/UI/Profile/ProfileView.swift | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/UI/Sources/UI/Profile/ProfileView.swift b/UI/Sources/UI/Profile/ProfileView.swift index 882c7150..cfac569e 100644 --- a/UI/Sources/UI/Profile/ProfileView.swift +++ b/UI/Sources/UI/Profile/ProfileView.swift @@ -27,8 +27,12 @@ public struct ProfileView: View { .navigationBarTitleDisplayMode(.inline) .toolbar { ToolbarItem(placement: .topBarTrailing) { - Button("Done") { viewModel.didTapDismiss() } - .accessibilityIdentifier(AccessibilityID.Profile.dismissButton) + Button(action: { viewModel.didTapDismiss() }) { + Image(systemName: "checkmark.circle.fill") + .font(.title2) + } + .accessibilityLabel("Done") + .accessibilityIdentifier(AccessibilityID.Profile.dismissButton) } } } From 2bd29e657b41f06c00069739bc00539dedfbbbce Mon Sep 17 00:00:00 2001 From: Charles Wang Date: Wed, 25 Feb 2026 14:07:49 +1100 Subject: [PATCH 05/29] Teal app icon for SwiftUI branch, fix cancellation handling Co-Authored-By: Claude Opus 4.6 --- .../AppIcon.appiconset/AppIcon.png | Bin 99932 -> 98025 bytes .../ViewModel/Home/HomeViewModel.swift | 5 ++--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/FunApp/FunApp/Assets.xcassets/AppIcon.appiconset/AppIcon.png b/FunApp/FunApp/Assets.xcassets/AppIcon.appiconset/AppIcon.png index 2b570b9594935680d459af61ada2189a24cc3302..af46778117ee54b9d63855ac19313bc8bdbd9152 100644 GIT binary patch literal 98025 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ˉf{<%v8L~nQ*yr=(E&;>Sa~M+96-Ox*x3? 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%0AcKp- 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¢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%0AamIsRz@tS4kf2e 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ⅅiP+WrmzH@b{Aqih$HlCtxF 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